From 00e00b26622b009bdfe7e9c87936664a48ca36d1 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Wed, 18 Aug 2021 10:26:14 -0700 Subject: [PATCH 001/102] Log ice candidate protocol appropriately (#1230) * Log ice candidate protocol appropriately * Add develop to travis CI * Address comments --- .travis.yml | 1 + src/source/Ice/IceAgent.c | 41 ++++++++++++++++++++------------------- src/source/Ice/IceAgent.h | 1 + 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/.travis.yml b/.travis.yml index dc4a7e41dc..95d952919d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ sudo: true branches: only: - master + - develop cache: - directories: diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index 89edca8daf..0408388e03 100644 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -327,6 +327,7 @@ STATUS iceAgentAddRemoteCandidate(PIceAgent pIceAgent, PCHAR pIceCandidateString PDoubleListNode pCurNode = NULL; SDP_ICE_CANDIDATE_PARSER_STATE state; ICE_CANDIDATE_TYPE iceCandidateType = ICE_CANDIDATE_TYPE_HOST; + CHAR remoteProtocol[MAX_PROTOCOL_LENGTH] = {'\0'}; CHK(pIceAgent != NULL && pIceCandidateString != NULL, STATUS_NULL_ARG); CHK(!IS_EMPTY_STRING(pIceCandidateString), STATUS_INVALID_ARG); @@ -354,6 +355,9 @@ STATUS iceAgentAddRemoteCandidate(PIceAgent pIceAgent, PCHAR pIceCandidateString STRTOUI32(curr, next, 10, &priority); break; case SDP_ICE_CANDIDATE_PARSER_STATE_PROTOCOL: + if(tokenLen < MAX_PROTOCOL_LENGTH) { + STRNCPY(remoteProtocol, curr, tokenLen); + } CHK(STRNCMPI("tcp", curr, tokenLen) != 0, STATUS_ICE_CANDIDATE_STRING_IS_TCP); break; case SDP_ICE_CANDIDATE_PARSER_STATE_IP: @@ -411,11 +415,12 @@ STATUS iceAgentAddRemoteCandidate(PIceAgent pIceAgent, PCHAR pIceCandidateString pIceCandidate->state = ICE_CANDIDATE_STATE_VALID; pIceCandidate->priority = priority; pIceCandidate->iceCandidateType = iceCandidateType; + STRNCPY(pIceCandidate->remoteProtocol, remoteProtocol, SIZEOF(remoteProtocol)); + CHK_STATUS(doubleListInsertItemHead(pIceAgent->remoteCandidates, (UINT64) pIceCandidate)); freeIceCandidateIfFail = FALSE; CHK_STATUS(createIceCandidatePairs(pIceAgent, pIceCandidate, TRUE)); - iceAgentLogNewCandidate(pIceCandidate); /* pass remote candidate to each turnConnection */ @@ -430,7 +435,6 @@ STATUS iceAgentAddRemoteCandidate(PIceAgent pIceAgent, PCHAR pIceCandidateString } CleanUp: - if (locked) { MUTEX_UNLOCK(pIceAgent->lock); } @@ -2631,27 +2635,24 @@ VOID iceAgentLogNewCandidate(PIceCandidate pIceCandidate) { CHAR ipAddr[KVS_IP_ADDRESS_STRING_BUFFER_LEN]; PCHAR protocol = "UNKNOWN"; - if (pIceCandidate != NULL) { getIpAddrStr(&pIceCandidate->ipAddress, ipAddr, ARRAY_SIZE(ipAddr)); - if (pIceCandidate->iceCandidateType == ICE_CANDIDATE_TYPE_RELAYED) { - if (pIceCandidate->pTurnConnection == NULL) { - protocol = "NA"; - } else { - switch (pIceCandidate->pTurnConnection->protocol) { - case KVS_SOCKET_PROTOCOL_TCP: - protocol = "TCP"; - break; - case KVS_SOCKET_PROTOCOL_UDP: - protocol = "UDP"; - break; - case KVS_SOCKET_PROTOCOL_NONE: - protocol = "NONE"; - break; - default: - break; - } + if (!pIceCandidate->isRemote && pIceCandidate->pSocketConnection != NULL) { + switch (pIceCandidate->pSocketConnection->protocol) { + case KVS_SOCKET_PROTOCOL_TCP: + protocol = "tcp"; + break; + case KVS_SOCKET_PROTOCOL_UDP: + protocol = "udp"; + break; + case KVS_SOCKET_PROTOCOL_NONE: + protocol = "none"; + break; + default: + break; } + } else { + protocol = pIceCandidate->remoteProtocol; } DLOGD("New %s ice candidate discovered. Id: %s. Ip: %s:%u. Type: %s. Protocol: %s.", pIceCandidate->isRemote ? "remote" : "local", diff --git a/src/source/Ice/IceAgent.h b/src/source/Ice/IceAgent.h index 39a4e12dca..986f1daace 100644 --- a/src/source/Ice/IceAgent.h +++ b/src/source/Ice/IceAgent.h @@ -160,6 +160,7 @@ typedef struct { * has been reported through IceNewLocalCandidateFunc */ BOOL reported; CHAR id[ICE_CANDIDATE_ID_LEN + 1]; + CHAR remoteProtocol[MAX_PROTOCOL_LENGTH]; } IceCandidate, *PIceCandidate; typedef struct { From 49b1cac61b4cb0a1e55840459852097f85ca9332 Mon Sep 17 00:00:00 2001 From: jdelapla Date: Wed, 1 Sep 2021 13:36:09 -0700 Subject: [PATCH 002/102] Realign branches during transition (#1257) * create data channel sample (#1203) * create data channel sample * moved variables to Samples.h, encapsulated with ENABLE_DATA_CHANNEL directive * removed unused variables, moved variable declarations to the top of a block * create data channel sample * moved variables to Samples.h, encapsulated with ENABLE_DATA_CHANNEL directive * Cancel the thread once mediaThreadStarted flag is set to false (#1227) * Initial stale PR template (#1226) * Update stale issue template * Testing every minute * Fix stale issue PR template (#1234) No code changed. Just a template change. So merging * Add bug and question label * Switch stale PR action to daily cadence * [FIX] When protocol in DCEP header of data channel open command is not empty, there is a check preventing the data channel to be opened. Now protocol length is correctly handled to avoid check failing. (#1228) Co-authored-by: Niyati Maheshwari Co-authored-by: Divya Sampath Kumar Co-authored-by: ela34 <8700736+ela34@users.noreply.github.com> --- .github/workflows/close-stale-issues.yml | 32 ++++++++++++++++ samples/Common.c | 12 ++++++ samples/Samples.h | 3 ++ samples/kvsWebRTCClientViewer.c | 49 +++++++++++++++++++++++- src/source/Sctp/Sctp.c | 9 +++-- 5 files changed, 100 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/close-stale-issues.yml diff --git a/.github/workflows/close-stale-issues.yml b/.github/workflows/close-stale-issues.yml new file mode 100644 index 0000000000..a1745b1b92 --- /dev/null +++ b/.github/workflows/close-stale-issues.yml @@ -0,0 +1,32 @@ +name: Close Stale Issues + +# Controls when the action will be run +on: + schedule: + - cron: "0 0 * * *" + +jobs: + cleanup: + runs-on: ubuntu-latest + name: Close stale issues + steps: + - uses: actions/stale@v4.0.0 + with: + stale-issue-message: It looks like this issue has not been active for a long time. If the issue is not resolved, please add an update to the ticket, else it will be automatically resolved in a few days. + close-issue-message: The issue has been stale for a while and hence it has been auto-closed. If the issue persists, feel free to open a new issue with details. + + # labels to be added + stale-issue-label: closing-soon + any-of-labels: question,bug + + # SLAs + days-before-issue-stale: 7 + days-before-issue-close: 3 + + + repo-token: ${{ secrets.GITHUB_TOKEN }} + loglevel: DEBUG + # Set dry-run to true to not perform label or close actions. + dry-run: false + + diff --git a/samples/Common.c b/samples/Common.c index 0d78ec9957..64007774ce 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -21,6 +21,12 @@ VOID onDataChannelMessage(UINT64 customData, PRtcDataChannel pDataChannel, BOOL } else { DLOGI("DataChannel String Message: %.*s\n", pMessageLen, pMessage); } + // Send a response to the message sent by the viewer + STATUS retStatus = STATUS_SUCCESS; + retStatus = dataChannelSend(pDataChannel, FALSE, (PBYTE) MASTER_DATA_CHANNEL_MESSAGE, STRLEN(MASTER_DATA_CHANNEL_MESSAGE)); + if(retStatus != STATUS_SUCCESS) { + DLOGI("[KVS Master] dataChannelSend(): operation returned status code: 0x%08x \n", retStatus); + } } VOID onDataChannel(UINT64 customData, PRtcDataChannel pRtcDataChannel) @@ -1019,6 +1025,12 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); locked = TRUE; } + // Cancel the media thread + if(!(pSampleConfiguration->mediaThreadStarted)) { + DLOGD("Canceling media thread"); + THREAD_CANCEL(pSampleConfiguration->mediaSenderTid); + } + for (i = 0; i < pSampleConfiguration->streamingSessionCount; ++i) { retStatus = gatherIceServerStats(pSampleConfiguration->sampleStreamingSessionList[i]); if (STATUS_FAILED(retStatus)) { diff --git a/samples/Samples.h b/samples/Samples.h index 34a8baec85..6b721a8d6f 100644 --- a/samples/Samples.h +++ b/samples/Samples.h @@ -46,6 +46,9 @@ extern "C" { #define IOT_CORE_ROLE_ALIAS ((PCHAR) "AWS_IOT_CORE_ROLE_ALIAS") #define IOT_CORE_THING_NAME ((PCHAR) "AWS_IOT_CORE_THING_NAME") +#define MASTER_DATA_CHANNEL_MESSAGE "This message is from the KVS Master" +#define VIEWER_DATA_CHANNEL_MESSAGE "This message is from the KVS Viewer" + /* Uncomment the following line in order to enable IoT credentials checks in the provided samples */ //#define IOT_CORE_ENABLE_CREDENTIALS 1 diff --git a/samples/kvsWebRTCClientViewer.c b/samples/kvsWebRTCClientViewer.c index 92d5affaf5..e425ed8594 100644 --- a/samples/kvsWebRTCClientViewer.c +++ b/samples/kvsWebRTCClientViewer.c @@ -2,6 +2,31 @@ extern PSampleConfiguration gSampleConfiguration; +// onMessage callback for a message received by the viewer on a data channel +VOID dataChannelOnMessageCallback(UINT64 customData, PRtcDataChannel pDataChannel, BOOL isBinary, PBYTE pMessage, UINT32 pMessageLen) +{ + UNUSED_PARAM(customData); + UNUSED_PARAM(pDataChannel); + if (isBinary) { + DLOGI("DataChannel Binary Message"); + } else { + DLOGI("DataChannel String Message: %.*s\n", pMessageLen, pMessage); + } +} + +// onOpen callback for the onOpen event of a viewer created data channel +VOID dataChannelOnOpenCallback(UINT64 customData, PRtcDataChannel pDataChannel) { + STATUS retStatus = STATUS_SUCCESS; + DLOGI("New DataChannel has been opened %s \n", pDataChannel->name); + dataChannelOnMessage(pDataChannel, customData, dataChannelOnMessageCallback); + ATOMIC_INCREMENT((PSIZE_T) customData); + // Sending first message to the master over the data channel + retStatus = dataChannelSend(pDataChannel, FALSE, (PBYTE) VIEWER_DATA_CHANNEL_MESSAGE, STRLEN(VIEWER_DATA_CHANNEL_MESSAGE)); + if(retStatus != STATUS_SUCCESS){ + DLOGI("[KVS Viewer] dataChannelSend(): operation returned status code: 0x%08x \n", retStatus); + } +} + INT32 main(INT32 argc, CHAR* argv[]) { STATUS retStatus = STATUS_SUCCESS; @@ -81,13 +106,11 @@ INT32 main(INT32 argc, CHAR* argv[]) // Initialize streaming session MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); locked = TRUE; - retStatus = createSampleStreamingSession(pSampleConfiguration, NULL, FALSE, &pSampleStreamingSession); if (retStatus != STATUS_SUCCESS) { printf("[KVS Viewer] createSampleStreamingSession(): operation returned status code: 0x%08x \n", retStatus); goto CleanUp; } - printf("[KVS Viewer] Creating streaming session...completed\n"); pSampleConfiguration->sampleStreamingSessionList[pSampleConfiguration->streamingSessionCount++] = pSampleStreamingSession; @@ -165,6 +188,28 @@ INT32 main(INT32 argc, CHAR* argv[]) goto CleanUp; } +#ifdef ENABLE_DATA_CHANNEL + PRtcDataChannel pDataChannel = NULL; + PRtcPeerConnection pPeerConnection = pSampleStreamingSession->pPeerConnection; + SIZE_T datachannelLocalOpenCount = 0; + + // Creating a new datachannel on the peer connection of the existing sample streaming session + retStatus = createDataChannel(pPeerConnection, pChannelName, NULL, &pDataChannel); + if(retStatus != STATUS_SUCCESS) { + printf("[KVS Viewer] createDataChannel(): operation returned status code: 0x%08x \n", retStatus); + goto CleanUp; + } + printf("[KVS Viewer] Creating data channel...completed\n"); + + // Setting a callback for when the data channel is open + retStatus = dataChannelOnOpen(pDataChannel, (UINT64) &datachannelLocalOpenCount, dataChannelOnOpenCallback); + if(retStatus != STATUS_SUCCESS) { + printf("[KVS Viewer] dataChannelOnOpen(): operation returned status code: 0x%08x \n", retStatus); + goto CleanUp; + } + printf("[KVS Viewer] Data Channel open now...\n"); +#endif + // Block until interrupted while (!ATOMIC_LOAD_BOOL(&pSampleConfiguration->interrupted) && !ATOMIC_LOAD_BOOL(&pSampleStreamingSession->terminateFlag)) { THREAD_SLEEP(HUNDREDS_OF_NANOS_IN_A_SECOND); diff --git a/src/source/Sctp/Sctp.c b/src/source/Sctp/Sctp.c index e1916dd0cf..a0d0742d7e 100644 --- a/src/source/Sctp/Sctp.c +++ b/src/source/Sctp/Sctp.c @@ -305,14 +305,17 @@ STATUS handleDcepPacket(PSctpSession pSctpSession, UINT32 streamId, PBYTE data, ENTERS(); STATUS retStatus = STATUS_SUCCESS; UINT16 labelLength = 0; + UINT16 protocolLength = 0; // Assert that is DCEP of type DataChannelOpen CHK(length > SCTP_DCEP_HEADER_LENGTH && data[0] == DCEP_DATA_CHANNEL_OPEN, STATUS_SUCCESS); - MEMCPY(&labelLength, data + 8, SIZEOF(UINT16)); - putInt16((PINT16) &labelLength, labelLength); + MEMCPY(&labelLength, data + 8, SIZEOF(UINT16)); + MEMCPY(&protocolLength, data + 10, SIZEOF(UINT16)); + putInt16((PINT16) &labelLength, labelLength); + putInt16((PINT16) &protocolLength, protocolLength); - CHK((labelLength + SCTP_DCEP_HEADER_LENGTH) >= length, STATUS_SCTP_INVALID_DCEP_PACKET); + CHK((labelLength + protocolLength + SCTP_DCEP_HEADER_LENGTH) >= length, STATUS_SCTP_INVALID_DCEP_PACKET); pSctpSession->sctpSessionCallbacks.dataChannelOpenFunc(pSctpSession->sctpSessionCallbacks.customData, streamId, data + SCTP_DCEP_HEADER_LENGTH, labelLength); From e89798df04530a44248a99c33cc8f266793742c8 Mon Sep 17 00:00:00 2001 From: northteam Date: Fri, 3 Sep 2021 14:36:01 +0800 Subject: [PATCH 003/102] set protocol value following the spec (#1259) Co-authored-by: liyufang --- src/source/Ice/IceAgent.c | 10 +++++----- src/source/Ice/IceUtils.h | 4 ++++ src/source/Rtcp/RtpRollingBuffer.c | 2 +- tst/MetricsApiTest.cpp | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index 0408388e03..51e2fcd840 100644 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -99,10 +99,10 @@ STATUS createIceAgent(PCHAR username, PCHAR password, PIceAgentCallbacks pIceAge pIceAgent->rtcIceServerDiagnostics[i].port = (INT32) getInt16(pIceAgent->iceServers[i].ipAddress.port); switch (pIceAgent->iceServers[pIceAgent->iceServersCount].transport) { case KVS_SOCKET_PROTOCOL_UDP: - STRCPY(pIceAgent->rtcIceServerDiagnostics[i].protocol, ICE_URL_TRANSPORT_UDP); + STRCPY(pIceAgent->rtcIceServerDiagnostics[i].protocol, ICE_TRANSPORT_TYPE_UDP); break; case KVS_SOCKET_PROTOCOL_TCP: - STRCPY(pIceAgent->rtcIceServerDiagnostics[i].protocol, ICE_URL_TRANSPORT_TCP); + STRCPY(pIceAgent->rtcIceServerDiagnostics[i].protocol, ICE_TRANSPORT_TYPE_TCP); break; default: MEMSET(pIceAgent->rtcIceServerDiagnostics[i].protocol, 0, SIZEOF(pIceAgent->rtcIceServerDiagnostics[i].protocol)); @@ -1909,11 +1909,11 @@ STATUS updateCandidateStats(PIceAgent pIceAgent, BOOL isRemote) if (pIceCandidate->iceCandidateType == ICE_CANDIDATE_TYPE_RELAYED && pIceCandidate->pTurnConnection != NULL) { switch (pIceCandidate->pTurnConnection->protocol) { case KVS_SOCKET_PROTOCOL_UDP: - STRNCPY(pRtcIceCandidateDiagnostics->relayProtocol, ICE_URL_TRANSPORT_UDP, + STRNCPY(pRtcIceCandidateDiagnostics->relayProtocol, ICE_TRANSPORT_TYPE_UDP, ARRAY_SIZE(pRtcIceCandidateDiagnostics->relayProtocol)); break; case KVS_SOCKET_PROTOCOL_TCP: - STRNCPY(pRtcIceCandidateDiagnostics->relayProtocol, ICE_URL_TRANSPORT_TCP, + STRNCPY(pRtcIceCandidateDiagnostics->relayProtocol, ICE_TRANSPORT_TYPE_TCP, ARRAY_SIZE(pIceAgent->rtcSelectedLocalIceCandidateDiagnostics.relayProtocol)); break; default: @@ -1927,7 +1927,7 @@ STATUS updateCandidateStats(PIceAgent pIceAgent, BOOL isRemote) STRNCPY(pRtcIceCandidateDiagnostics->candidateType, iceAgentGetCandidateTypeStr(pIceCandidate->iceCandidateType), ARRAY_SIZE(pRtcIceCandidateDiagnostics->candidateType)); - STRNCPY(pRtcIceCandidateDiagnostics->protocol, ICE_URL_TRANSPORT_UDP, ARRAY_SIZE(pRtcIceCandidateDiagnostics->protocol)); + STRNCPY(pRtcIceCandidateDiagnostics->protocol, ICE_TRANSPORT_TYPE_UDP, ARRAY_SIZE(pRtcIceCandidateDiagnostics->protocol)); if (pIceCandidate->iceCandidateType == ICE_CANDIDATE_TYPE_RELAYED) { STRNCPY(pRtcIceCandidateDiagnostics->protocol, pIceAgent->rtcIceServerDiagnostics[pIceCandidate->iceServerIndex].protocol, ARRAY_SIZE(pRtcIceCandidateDiagnostics->protocol)); diff --git a/src/source/Ice/IceUtils.h b/src/source/Ice/IceUtils.h index 47b75a6b50..4b680bdfcc 100644 --- a/src/source/Ice/IceUtils.h +++ b/src/source/Ice/IceUtils.h @@ -21,6 +21,10 @@ extern "C" { #define ICE_URL_TRANSPORT_UDP "transport=udp" #define ICE_URL_TRANSPORT_TCP "transport=tcp" +#define ICE_TRANSPORT_TYPE_UDP "udp" +#define ICE_TRANSPORT_TYPE_TCP "tcp" +#define ICE_TRANSPORT_TYPE_TLS "tls" + /** * Ring buffer storing transactionIds */ diff --git a/src/source/Rtcp/RtpRollingBuffer.c b/src/source/Rtcp/RtpRollingBuffer.c index 0f0ae8799b..123f670a2c 100644 --- a/src/source/Rtcp/RtpRollingBuffer.c +++ b/src/source/Rtcp/RtpRollingBuffer.c @@ -119,7 +119,7 @@ STATUS rtpRollingBufferGetValidSeqIndexList(PRtpRollingBuffer pRollingBuffer, PU pCurSeqIndexListPtr++; // Return if filled up given valid sequence number array CHK(++returnPacketCount < *pValidIndexListLen, retStatus); - *pCurSeqIndexListPtr = (UINT32) NULL; + *pCurSeqIndexListPtr = (UINT64) NULL; } } diff --git a/tst/MetricsApiTest.cpp b/tst/MetricsApiTest.cpp index 926e9dcb8c..0e014421e3 100644 --- a/tst/MetricsApiTest.cpp +++ b/tst/MetricsApiTest.cpp @@ -72,7 +72,7 @@ TEST_F(MetricsApiTest, webRtcIceServerGetMetrics) EXPECT_EQ(STATUS_SUCCESS, rtcPeerConnectionGetMetrics(pRtcPeerConnection, NULL, &rtcIceMetrics)); EXPECT_EQ(443, rtcIceMetrics.rtcStatsObject.iceServerStats.port); EXPECT_PRED_FORMAT2(testing::IsSubstring, configuration.iceServers[1].urls, rtcIceMetrics.rtcStatsObject.iceServerStats.url); - EXPECT_PRED_FORMAT2(testing::IsSubstring, "transport=tcp", rtcIceMetrics.rtcStatsObject.iceServerStats.protocol); + EXPECT_PRED_FORMAT2(testing::IsSubstring, "tcp", rtcIceMetrics.rtcStatsObject.iceServerStats.protocol); EXPECT_EQ(STATUS_SUCCESS, closePeerConnection(pRtcPeerConnection)); EXPECT_EQ(STATUS_SUCCESS, freePeerConnection(&pRtcPeerConnection)); From 14788f147d1cabab3cd01c74d510e4ec2bfb574a Mon Sep 17 00:00:00 2001 From: northteam Date: Fri, 3 Sep 2021 14:37:41 +0800 Subject: [PATCH 004/102] filter out invalid candidate in sdp (#1260) Co-authored-by: liyufang --- src/source/Ice/IceAgent.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index 51e2fcd840..e8a33cda3a 100644 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -693,6 +693,7 @@ STATUS iceAgentPopulateSdpMediaDescriptionCandidates(PIceAgent pIceAgent, PSdpMe PDoubleListNode pCurNode = NULL; BOOL locked = FALSE; UINT32 attrIndex; + PIceCandidate pCandidate = NULL; CHK(pIceAgent != NULL && pSdpMediaDescription != NULL && pIndex != NULL, STATUS_NULL_ARG); @@ -705,10 +706,12 @@ STATUS iceAgentPopulateSdpMediaDescriptionCandidates(PIceAgent pIceAgent, PSdpMe while (pCurNode != NULL) { CHK_STATUS(doubleListGetNodeData(pCurNode, &data)); pCurNode = pCurNode->pNext; - - STRCPY(pSdpMediaDescription->sdpAttributes[attrIndex].attributeName, "candidate"); - CHK_STATUS(iceCandidateSerialize((PIceCandidate) data, pSdpMediaDescription->sdpAttributes[attrIndex].attributeValue, &attrBufferLen)); - attrIndex++; + pCandidate = (PIceCandidate) data; + if (pCandidate->state == ICE_CANDIDATE_STATE_VALID) { + STRCPY(pSdpMediaDescription->sdpAttributes[attrIndex].attributeName, "candidate"); + CHK_STATUS(iceCandidateSerialize((PIceCandidate) data, pSdpMediaDescription->sdpAttributes[attrIndex].attributeValue, &attrBufferLen)); + attrIndex++; + } } *pIndex = attrIndex; From 343dd35cf5c769540963d5526b6f88226c9f587a Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Wed, 8 Sep 2021 13:03:50 -0700 Subject: [PATCH 005/102] Added targets for cmake clean (#1253) * added targets for cmake clean * added new line, updated readme * added missing new line * updated readme to include folder details * updated readme to include folder details --- CMakeLists.txt | 6 ++++++ README.md | 2 ++ 2 files changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 52b6fcecb9..c3e3b587f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -342,3 +342,9 @@ endif() if(BUILD_BENCHMARK) add_subdirectory(bench) endif() + +get_directory_property(clean_files ADDITIONAL_CLEAN_FILES) +list(APPEND clean_files "${OPEN_SRC_INSTALL_PREFIX}") +list(APPEND clean_files "${CMAKE_CURRENT_SOURCE_DIR}/build") +set_directory_properties(PROPERTIES ADDITIONAL_CLEAN_FILES "${clean_files}") + diff --git a/README.md b/README.md index de73b31d6f..5d5a0d021a 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,8 @@ You can pass the following options to `cmake ..`. * `-DUNDEFINED_BEHAVIOR_SANITIZER` -- Build with UndefinedBehaviorSanitizer * `-DLINK_PROFILER` -- Link with gperftools (available profiler options are listed [here](https://github.com/gperftools/gperftools)) +To clean up the `open-source` and `build` folders from previous build, use `cmake --build . --target clean` from the `build` folder + For windows builds, you will have to include additional flags for libwebsockets CMake. Add the following flags to your cmake command, or edit the CMake file in ./CMake/Dependencies/libwebsockets-CMakeLists.txt with the following: ``` From c9367c9a38629501d02507c9b7a564bf597da1b9 Mon Sep 17 00:00:00 2001 From: "Alex.D.Scofield" Date: Sat, 11 Sep 2021 04:35:02 +0800 Subject: [PATCH 006/102] viewer sample: wrap datachannel callback with `ENABLE_DATA_CHANNEL` (#1261) * create data channel sample (#1203) * create data channel sample * moved variables to Samples.h, encapsulated with ENABLE_DATA_CHANNEL directive * removed unused variables, moved variable declarations to the top of a block * create data channel sample * moved variables to Samples.h, encapsulated with ENABLE_DATA_CHANNEL directive * Cancel the thread once mediaThreadStarted flag is set to false (#1227) * Initial stale PR template (#1226) * Update stale issue template * Testing every minute * Fix stale issue PR template (#1234) No code changed. Just a template change. So merging * Add bug and question label * Switch stale PR action to daily cadence * [FIX] When protocol in DCEP header of data channel open command is not empty, there is a check preventing the data channel to be opened. Now protocol length is correctly handled to avoid check failing. (#1228) * viewer sample: wrap datachannel callback with `ENABLE_DATA_CHANNEL` Signed-off-by: zhiqinli@amazon.com Co-authored-by: Niyati Maheshwari Co-authored-by: Divya Sampath Kumar Co-authored-by: ela34 <8700736+ela34@users.noreply.github.com> --- samples/kvsWebRTCClientViewer.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/samples/kvsWebRTCClientViewer.c b/samples/kvsWebRTCClientViewer.c index e425ed8594..7dfe3499a3 100644 --- a/samples/kvsWebRTCClientViewer.c +++ b/samples/kvsWebRTCClientViewer.c @@ -2,6 +2,7 @@ extern PSampleConfiguration gSampleConfiguration; +#ifdef ENABLE_DATA_CHANNEL // onMessage callback for a message received by the viewer on a data channel VOID dataChannelOnMessageCallback(UINT64 customData, PRtcDataChannel pDataChannel, BOOL isBinary, PBYTE pMessage, UINT32 pMessageLen) { @@ -26,6 +27,7 @@ VOID dataChannelOnOpenCallback(UINT64 customData, PRtcDataChannel pDataChannel) DLOGI("[KVS Viewer] dataChannelSend(): operation returned status code: 0x%08x \n", retStatus); } } +#endif INT32 main(INT32 argc, CHAR* argv[]) { From 1ac4193d3be7dc51e9049b815939a010662304c6 Mon Sep 17 00:00:00 2001 From: "Alex.D.Scofield" Date: Tue, 14 Sep 2021 03:52:10 +0800 Subject: [PATCH 007/102] libwebsockets: add patch to fix pipe fd leak issue (#1264) Signed-off-by: Alex.Li --- .../Dependencies/libwebsockets-CMakeLists.txt | 2 +- .../libwebsockets-leak-pipe-fix.patch | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 CMake/Dependencies/libwebsockets-leak-pipe-fix.patch diff --git a/CMake/Dependencies/libwebsockets-CMakeLists.txt b/CMake/Dependencies/libwebsockets-CMakeLists.txt index b18f7b6293..77e5d36985 100644 --- a/CMake/Dependencies/libwebsockets-CMakeLists.txt +++ b/CMake/Dependencies/libwebsockets-CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8) project(libwebsocket-download NONE) -SET(PATCH_COMMAND git apply --ignore-whitespace ${CMAKE_CURRENT_LIST_DIR}/libwebsockets-old-gcc-fix-cast-cmakelists.patch) +SET(PATCH_COMMAND git apply --ignore-whitespace ${CMAKE_CURRENT_LIST_DIR}/libwebsockets-old-gcc-fix-cast-cmakelists.patch ${CMAKE_CURRENT_LIST_DIR}/libwebsockets-leak-pipe-fix.patch) include(ExternalProject) diff --git a/CMake/Dependencies/libwebsockets-leak-pipe-fix.patch b/CMake/Dependencies/libwebsockets-leak-pipe-fix.patch new file mode 100644 index 0000000000..c5a22f1f56 --- /dev/null +++ b/CMake/Dependencies/libwebsockets-leak-pipe-fix.patch @@ -0,0 +1,36 @@ +Author: Andy Green +Date: Wed Sep 08 12:25:47 2021 +0200 + +cancel pipe: make sure we closed it on destroy with no EVENTFD case + + +diff --git a/lib/core/context.c b/lib/core/context.c +index 6194801..4f3bb45 100644 +--- a/lib/core/context.c ++++ b/lib/core/context.c +@@ -1625,11 +1625,25 @@ lws_pt_destroy(struct lws_context_per_thread *pt) + vpt->foreign_pfd_list = NULL; + + lws_pt_lock(pt, __func__); ++ + if (pt->pipe_wsi) { + lws_destroy_event_pipe(pt->pipe_wsi); + pt->pipe_wsi = NULL; + } + ++ if (pt->dummy_pipe_fds[0] ++#if !defined(WIN32) ++ && (int)pt->dummy_pipe_fds[0] != -1 ++#endif ++ ) { ++ struct lws wsi; ++ ++ memset(&wsi, 0, sizeof(wsi)); ++ wsi.a.context = pt->context; ++ wsi.tsi = (char)pt->tid; ++ lws_plat_pipe_close(&wsi); ++ } ++ + #if defined(LWS_WITH_SECURE_STREAMS) + lws_dll2_foreach_safe(&pt->ss_owner, NULL, lws_ss_destroy_dll); + From 1fc4831a51c18596e74cab4d9fefea736ec5d210 Mon Sep 17 00:00:00 2001 From: jdelapla Date: Tue, 21 Sep 2021 10:43:52 -0700 Subject: [PATCH 008/102] Fix scripts/pare_status.py for non-status #defines (#1268) (#1274) Co-authored-by: Kevin Allen --- scripts/parse_status.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/parse_status.py b/scripts/parse_status.py index bcab2e9c73..28a32e2d13 100755 --- a/scripts/parse_status.py +++ b/scripts/parse_status.py @@ -20,7 +20,7 @@ print(example_sums) # {'STATUS_CHILD': "0x5", 'STATUS_PARENT': "0x4"} ''' -pattern = re.compile("#define *([A-Z_]*) *(([A-Z_]*) *\+ *)?0x([0-9]*)") +pattern = re.compile("#define *(STATUS\_[A-Z_]*) *(([A-Z_]*) *\+ *)?0x([0-9]*)") def operands_by_name(paragraph): matches = filter(None, [pattern.match(line) for line in paragraph.splitlines()]) From 093902432fb24f42ade2857c23eca950e0b41a2f Mon Sep 17 00:00:00 2001 From: Hassan Sahibzada Date: Wed, 22 Sep 2021 13:27:39 -0400 Subject: [PATCH 009/102] fix a few bugs --- samples/Common.c | 5 ----- samples/kvsWebRTCClientMaster.c | 14 ++++++++++++++ src/source/Ice/ConnectionListener.c | 5 ++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index 64007774ce..55f948a2e5 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -1025,11 +1025,6 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); locked = TRUE; } - // Cancel the media thread - if(!(pSampleConfiguration->mediaThreadStarted)) { - DLOGD("Canceling media thread"); - THREAD_CANCEL(pSampleConfiguration->mediaSenderTid); - } for (i = 0; i < pSampleConfiguration->streamingSessionCount; ++i) { retStatus = gatherIceServerStats(pSampleConfiguration->sampleStreamingSessionList[i]); diff --git a/samples/kvsWebRTCClientMaster.c b/samples/kvsWebRTCClientMaster.c index dcaaa7c653..bd80b5cc7e 100644 --- a/samples/kvsWebRTCClientMaster.c +++ b/samples/kvsWebRTCClientMaster.c @@ -122,6 +122,20 @@ INT32 main(INT32 argc, CHAR* argv[]) // Kick of the termination sequence ATOMIC_STORE_BOOL(&pSampleConfiguration->appTerminateFlag, TRUE); + if (IS_VALID_MUTEX_VALUE(pSampleConfiguration->sampleConfigurationObjLock)) { + MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); + } + + // Cancel the media thread + if (pSampleConfiguration->mediaThreadStarted) { + DLOGD("Canceling media thread"); + THREAD_CANCEL(pSampleConfiguration->mediaSenderTid); + } + + if (IS_VALID_MUTEX_VALUE(pSampleConfiguration->sampleConfigurationObjLock)) { + MUTEX_UNLOCK(pSampleConfiguration->sampleConfigurationObjLock); + } + if (pSampleConfiguration->mediaSenderTid != INVALID_TID_VALUE) { THREAD_JOIN(pSampleConfiguration->mediaSenderTid, NULL); } diff --git a/src/source/Ice/ConnectionListener.c b/src/source/Ice/ConnectionListener.c index 92adbc5fd9..39ebaab8aa 100644 --- a/src/source/Ice/ConnectionListener.c +++ b/src/source/Ice/ConnectionListener.c @@ -374,7 +374,10 @@ PVOID connectionListenerReceiveDataRoutine(PVOID arg) CleanUp: - if (pConnectionListener != NULL) { + // The check for valid mutex is necessary because when we're in freeConnectionListener + // we may free the mutex in another thread so by the time we get here accessing the lock + // will result in accessing a resource after it has been freed + if (pConnectionListener != NULL && IS_VALID_MUTEX_VALUE(pConnectionListener->lock)) { // As TID is 64 bit we can't atomically update it and need to do it under the lock MUTEX_LOCK(pConnectionListener->lock); pConnectionListener->receiveDataRoutine = INVALID_TID_VALUE; From c08704cfc6342570124e88aee866aa3f74134dbc Mon Sep 17 00:00:00 2001 From: Hassan Sahibzada Date: Wed, 22 Sep 2021 13:40:51 -0400 Subject: [PATCH 010/102] Revert "fix a few bugs" This reverts commit 093902432fb24f42ade2857c23eca950e0b41a2f. --- samples/Common.c | 5 +++++ samples/kvsWebRTCClientMaster.c | 14 -------------- src/source/Ice/ConnectionListener.c | 5 +---- 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index 55f948a2e5..64007774ce 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -1025,6 +1025,11 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); locked = TRUE; } + // Cancel the media thread + if(!(pSampleConfiguration->mediaThreadStarted)) { + DLOGD("Canceling media thread"); + THREAD_CANCEL(pSampleConfiguration->mediaSenderTid); + } for (i = 0; i < pSampleConfiguration->streamingSessionCount; ++i) { retStatus = gatherIceServerStats(pSampleConfiguration->sampleStreamingSessionList[i]); diff --git a/samples/kvsWebRTCClientMaster.c b/samples/kvsWebRTCClientMaster.c index bd80b5cc7e..dcaaa7c653 100644 --- a/samples/kvsWebRTCClientMaster.c +++ b/samples/kvsWebRTCClientMaster.c @@ -122,20 +122,6 @@ INT32 main(INT32 argc, CHAR* argv[]) // Kick of the termination sequence ATOMIC_STORE_BOOL(&pSampleConfiguration->appTerminateFlag, TRUE); - if (IS_VALID_MUTEX_VALUE(pSampleConfiguration->sampleConfigurationObjLock)) { - MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); - } - - // Cancel the media thread - if (pSampleConfiguration->mediaThreadStarted) { - DLOGD("Canceling media thread"); - THREAD_CANCEL(pSampleConfiguration->mediaSenderTid); - } - - if (IS_VALID_MUTEX_VALUE(pSampleConfiguration->sampleConfigurationObjLock)) { - MUTEX_UNLOCK(pSampleConfiguration->sampleConfigurationObjLock); - } - if (pSampleConfiguration->mediaSenderTid != INVALID_TID_VALUE) { THREAD_JOIN(pSampleConfiguration->mediaSenderTid, NULL); } diff --git a/src/source/Ice/ConnectionListener.c b/src/source/Ice/ConnectionListener.c index 39ebaab8aa..92adbc5fd9 100644 --- a/src/source/Ice/ConnectionListener.c +++ b/src/source/Ice/ConnectionListener.c @@ -374,10 +374,7 @@ PVOID connectionListenerReceiveDataRoutine(PVOID arg) CleanUp: - // The check for valid mutex is necessary because when we're in freeConnectionListener - // we may free the mutex in another thread so by the time we get here accessing the lock - // will result in accessing a resource after it has been freed - if (pConnectionListener != NULL && IS_VALID_MUTEX_VALUE(pConnectionListener->lock)) { + if (pConnectionListener != NULL) { // As TID is 64 bit we can't atomically update it and need to do it under the lock MUTEX_LOCK(pConnectionListener->lock); pConnectionListener->receiveDataRoutine = INVALID_TID_VALUE; From c6d6caa62c74f069183e434eabcfe02eee2bcf77 Mon Sep 17 00:00:00 2001 From: Hassan Sahibzada Date: Thu, 23 Sep 2021 13:38:52 -0400 Subject: [PATCH 011/102] fix some bugs (#1277) --- samples/Common.c | 5 ----- samples/kvsWebRTCClientMaster.c | 14 ++++++++++++++ src/source/Ice/ConnectionListener.c | 5 ++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index 64007774ce..55f948a2e5 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -1025,11 +1025,6 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); locked = TRUE; } - // Cancel the media thread - if(!(pSampleConfiguration->mediaThreadStarted)) { - DLOGD("Canceling media thread"); - THREAD_CANCEL(pSampleConfiguration->mediaSenderTid); - } for (i = 0; i < pSampleConfiguration->streamingSessionCount; ++i) { retStatus = gatherIceServerStats(pSampleConfiguration->sampleStreamingSessionList[i]); diff --git a/samples/kvsWebRTCClientMaster.c b/samples/kvsWebRTCClientMaster.c index dcaaa7c653..bd80b5cc7e 100644 --- a/samples/kvsWebRTCClientMaster.c +++ b/samples/kvsWebRTCClientMaster.c @@ -122,6 +122,20 @@ INT32 main(INT32 argc, CHAR* argv[]) // Kick of the termination sequence ATOMIC_STORE_BOOL(&pSampleConfiguration->appTerminateFlag, TRUE); + if (IS_VALID_MUTEX_VALUE(pSampleConfiguration->sampleConfigurationObjLock)) { + MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); + } + + // Cancel the media thread + if (pSampleConfiguration->mediaThreadStarted) { + DLOGD("Canceling media thread"); + THREAD_CANCEL(pSampleConfiguration->mediaSenderTid); + } + + if (IS_VALID_MUTEX_VALUE(pSampleConfiguration->sampleConfigurationObjLock)) { + MUTEX_UNLOCK(pSampleConfiguration->sampleConfigurationObjLock); + } + if (pSampleConfiguration->mediaSenderTid != INVALID_TID_VALUE) { THREAD_JOIN(pSampleConfiguration->mediaSenderTid, NULL); } diff --git a/src/source/Ice/ConnectionListener.c b/src/source/Ice/ConnectionListener.c index 92adbc5fd9..39ebaab8aa 100644 --- a/src/source/Ice/ConnectionListener.c +++ b/src/source/Ice/ConnectionListener.c @@ -374,7 +374,10 @@ PVOID connectionListenerReceiveDataRoutine(PVOID arg) CleanUp: - if (pConnectionListener != NULL) { + // The check for valid mutex is necessary because when we're in freeConnectionListener + // we may free the mutex in another thread so by the time we get here accessing the lock + // will result in accessing a resource after it has been freed + if (pConnectionListener != NULL && IS_VALID_MUTEX_VALUE(pConnectionListener->lock)) { // As TID is 64 bit we can't atomically update it and need to do it under the lock MUTEX_LOCK(pConnectionListener->lock); pConnectionListener->receiveDataRoutine = INVALID_TID_VALUE; From 907dcb149af650d811fb87d270f60fcf2c5269bd Mon Sep 17 00:00:00 2001 From: Hassan Sahibzada Date: Fri, 24 Sep 2021 17:57:40 -0400 Subject: [PATCH 012/102] Fix bugs (#1279) --- samples/Common.c | 49 +++++++++++----------- src/source/PeerConnection/PeerConnection.c | 4 +- 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index 55f948a2e5..2731e35b0c 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -551,7 +551,7 @@ STATUS freeSampleStreamingSession(PSampleStreamingSession* ppSampleStreamingSess // the running thread but it's OK as it's re-entrant MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); if (pSampleConfiguration->iceCandidatePairStatsTimerId != MAX_UINT32 && pSampleConfiguration->streamingSessionCount == 0 && - pSampleConfiguration->iceCandidatePairStatsTimerId != MAX_UINT32) { + pSampleConfiguration->iceCandidatePairStatsTimerId != MAX_UINT32 && IS_VALID_TIMER_QUEUE_HANDLE(pSampleConfiguration->timerQueueHandle)) { CHK_LOG_ERR(timerQueueCancelTimer(pSampleConfiguration->timerQueueHandle, pSampleConfiguration->iceCandidatePairStatsTimerId, (UINT64) pSampleConfiguration)); pSampleConfiguration->iceCandidatePairStatsTimerId = MAX_UINT32; @@ -1004,6 +1004,28 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) CHK(pSampleConfiguration != NULL, retStatus); + if (IS_VALID_TIMER_QUEUE_HANDLE(pSampleConfiguration->timerQueueHandle)) { + if (pSampleConfiguration->iceCandidatePairStatsTimerId != MAX_UINT32) { + retStatus = timerQueueCancelTimer(pSampleConfiguration->timerQueueHandle, pSampleConfiguration->iceCandidatePairStatsTimerId, + (UINT64) pSampleConfiguration); + if (STATUS_FAILED(retStatus)) { + DLOGE("Failed to cancel stats timer with: 0x%08x", retStatus); + } + pSampleConfiguration->iceCandidatePairStatsTimerId = MAX_UINT32; + } + + if (pSampleConfiguration->pregenerateCertTimerId != MAX_UINT32) { + retStatus = timerQueueCancelTimer(pSampleConfiguration->timerQueueHandle, pSampleConfiguration->pregenerateCertTimerId, + (UINT64) pSampleConfiguration); + if (STATUS_FAILED(retStatus)) { + DLOGE("Failed to cancel certificate pre-generation timer with: 0x%08x", retStatus); + } + pSampleConfiguration->pregenerateCertTimerId = MAX_UINT32; + } + + timerQueueFree(&pSampleConfiguration->timerQueueHandle); + } + if (pSampleConfiguration->pPendingSignalingMessageForRemoteClient != NULL) { // Iterate and free all the pending queues stackQueueGetIterator(pSampleConfiguration->pPendingSignalingMessageForRemoteClient, &iterator); @@ -1069,28 +1091,6 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) freeStaticCredentialProvider(&pSampleConfiguration->pCredentialProvider); #endif - if (IS_VALID_TIMER_QUEUE_HANDLE(pSampleConfiguration->timerQueueHandle)) { - if (pSampleConfiguration->iceCandidatePairStatsTimerId != MAX_UINT32) { - retStatus = timerQueueCancelTimer(pSampleConfiguration->timerQueueHandle, pSampleConfiguration->iceCandidatePairStatsTimerId, - (UINT64) pSampleConfiguration); - if (STATUS_FAILED(retStatus)) { - DLOGE("Failed to cancel stats timer with: 0x%08x", retStatus); - } - pSampleConfiguration->iceCandidatePairStatsTimerId = MAX_UINT32; - } - - if (pSampleConfiguration->pregenerateCertTimerId != MAX_UINT32) { - retStatus = timerQueueCancelTimer(pSampleConfiguration->timerQueueHandle, pSampleConfiguration->pregenerateCertTimerId, - (UINT64) pSampleConfiguration); - if (STATUS_FAILED(retStatus)) { - DLOGE("Failed to cancel certificate pre-generation timer with: 0x%08x", retStatus); - } - pSampleConfiguration->pregenerateCertTimerId = MAX_UINT32; - } - - timerQueueFree(&pSampleConfiguration->timerQueueHandle); - } - if (pSampleConfiguration->pregeneratedCertificates != NULL) { stackQueueGetIterator(pSampleConfiguration->pregeneratedCertificates, &iterator); while (IS_VALID_ITERATOR(iterator)) { @@ -1104,8 +1104,7 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) pSampleConfiguration->pregeneratedCertificates = NULL; } - MEMFREE(*ppSampleConfiguration); - *ppSampleConfiguration = NULL; + SAFE_MEMFREE(*ppSampleConfiguration); CleanUp: diff --git a/src/source/PeerConnection/PeerConnection.c b/src/source/PeerConnection/PeerConnection.c index ff5cc524a1..76a07cf9cc 100644 --- a/src/source/PeerConnection/PeerConnection.c +++ b/src/source/PeerConnection/PeerConnection.c @@ -818,9 +818,7 @@ STATUS freePeerConnection(PRtcPeerConnection* ppPeerConnection) SAFE_MEMFREE(pKvsPeerConnection->pTwccManager); } - SAFE_MEMFREE(pKvsPeerConnection); - - *ppPeerConnection = NULL; + SAFE_MEMFREE(*ppPeerConnection); CleanUp: From 41eb8aebf6fae7ec8f931647f57849fa7bb0548e Mon Sep 17 00:00:00 2001 From: Hassan Sahibzada Date: Fri, 1 Oct 2021 19:33:11 -0400 Subject: [PATCH 013/102] fix edge case try to unlock a mutex which is not locked in teh acse the sample config was NULL (#1286) --- samples/Common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/Common.c b/samples/Common.c index 2731e35b0c..089d6eba03 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -1228,7 +1228,7 @@ STATUS signalingMessageReceived(UINT64 customData, PReceivedSignalingMessage pRe { STATUS retStatus = STATUS_SUCCESS; PSampleConfiguration pSampleConfiguration = (PSampleConfiguration) customData; - BOOL peerConnectionFound = FALSE, locked = TRUE, startStats = FALSE; + BOOL peerConnectionFound = FALSE, locked = FALSE, startStats = FALSE; UINT32 clientIdHash; UINT64 hashValue = 0; PPendingMessageQueue pPendingMessageQueue = NULL; From 2fc5badbd11277582520f8f78b79883c7d408522 Mon Sep 17 00:00:00 2001 From: "Alex.D.Scofield" Date: Fri, 22 Oct 2021 18:08:49 +0000 Subject: [PATCH 014/102] cmake: allow user to specify OPEN_SRC_INSTALL_PREFIX (#1293) Signed-off-by: Alex.Li --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c3e3b587f8..694e4be3c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,7 +30,11 @@ option(THREAD_SANITIZER "Build with ThreadSanitizer." OFF) option(UNDEFINED_BEHAVIOR_SANITIZER "Build with UndefinedBehaviorSanitizer." OFF) option(LINK_PROFILER "Link gperftools profiler" OFF) -set(OPEN_SRC_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/open-source" CACHE PATH "Libraries will be downloaded and built in this directory.") +if(NOT OPEN_SRC_INSTALL_PREFIX OR OPEN_SRC_INSTALL_PREFIX STREQUAL "") + set(OPEN_SRC_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/open-source" CACHE PATH "Libraries will be downloaded and built in this directory.") +else() + set(OPEN_SRC_INSTALL_PREFIX ${OPEN_SRC_INSTALL_PREFIX} CACHE PATH "Libraries will be downloaded and built in this directory.") +endif() if(NOT WIN32) CHECK_INCLUDE_FILES(ifaddrs.h KVSWEBRTC_HAVE_IFADDRS_H) From c940f66e9163e92f8b7dcd5b5b277c6d32f1e013 Mon Sep 17 00:00:00 2001 From: Chris Hiszpanski Date: Mon, 25 Oct 2021 08:30:17 -0700 Subject: [PATCH 015/102] Fix inconsistent log priority (#1309) Patch reduces priority of a few info level log messages to verbose level to be consistent with other functions in file and rest of code base. --- src/source/Signaling/Client.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/source/Signaling/Client.c b/src/source/Signaling/Client.c index 9a77514a1a..98966bc294 100644 --- a/src/source/Signaling/Client.c +++ b/src/source/Signaling/Client.c @@ -9,7 +9,7 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo PSignalingClient pSignalingClient = NULL; SignalingClientInfoInternal signalingClientInfoInternal; - DLOGI("Creating Signaling Client Sync"); + DLOGV("Creating Signaling Client Sync"); CHK(pSignalingHandle != NULL && pClientInfo != NULL, STATUS_NULL_ARG); // Convert the client info to the internal structure with empty values @@ -36,7 +36,7 @@ STATUS freeSignalingClient(PSIGNALING_CLIENT_HANDLE pSignalingHandle) STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient; - DLOGI("Freeing Signaling Client"); + DLOGV("Freeing Signaling Client"); CHK(pSignalingHandle != NULL, STATUS_NULL_ARG); // Get the client handle @@ -59,7 +59,7 @@ STATUS signalingClientSendMessageSync(SIGNALING_CLIENT_HANDLE signalingClientHan STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingClientHandle); - DLOGI("Signaling Client Sending Message Sync"); + DLOGV("Signaling Client Sending Message Sync"); CHK_STATUS(signalingSendMessageSync(pSignalingClient, pSignalingMessage)); @@ -76,7 +76,7 @@ STATUS signalingClientConnectSync(SIGNALING_CLIENT_HANDLE signalingClientHandle) STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingClientHandle); - DLOGI("Signaling Client Connect Sync"); + DLOGV("Signaling Client Connect Sync"); CHK_STATUS(signalingConnectSync(pSignalingClient)); @@ -93,7 +93,7 @@ STATUS signalingClientDisconnectSync(SIGNALING_CLIENT_HANDLE signalingClientHand STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingClientHandle); - DLOGI("Signaling Client Disconnect Sync"); + DLOGV("Signaling Client Disconnect Sync"); CHK_STATUS(signalingDisconnectSync(pSignalingClient)); @@ -110,7 +110,7 @@ STATUS signalingClientDeleteSync(SIGNALING_CLIENT_HANDLE signalingClientHandle) STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingClientHandle); - DLOGI("Signaling Client Delete Sync"); + DLOGV("Signaling Client Delete Sync"); CHK_STATUS(signalingDeleteSync(pSignalingClient)); @@ -127,7 +127,7 @@ STATUS signalingClientGetIceConfigInfoCount(SIGNALING_CLIENT_HANDLE signalingCli STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingClientHandle); - DLOGI("Signaling Client Get ICE Config Info Count"); + DLOGV("Signaling Client Get ICE Config Info Count"); CHK_STATUS(signalingGetIceConfigInfoCout(pSignalingClient, pIceConfigCount)); @@ -144,7 +144,7 @@ STATUS signalingClientGetIceConfigInfo(SIGNALING_CLIENT_HANDLE signalingClientHa STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingClientHandle); - DLOGI("Signaling Client Get ICE Config Info"); + DLOGV("Signaling Client Get ICE Config Info"); CHK_STATUS(signalingGetIceConfigInfo(pSignalingClient, index, ppIceConfigInfo)); From e243e20c61782cb0feb5ea24268a5e4b88cb3e2c Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Wed, 27 Oct 2021 11:07:16 -0700 Subject: [PATCH 016/102] Modify protocol loggin design in develop (#1311) --- src/source/Ice/IceAgent.c | 46 +++++++++++++++++++-------------------- src/source/Ice/IceAgent.h | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index e8a33cda3a..5014c9e887 100644 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -327,7 +327,7 @@ STATUS iceAgentAddRemoteCandidate(PIceAgent pIceAgent, PCHAR pIceCandidateString PDoubleListNode pCurNode = NULL; SDP_ICE_CANDIDATE_PARSER_STATE state; ICE_CANDIDATE_TYPE iceCandidateType = ICE_CANDIDATE_TYPE_HOST; - CHAR remoteProtocol[MAX_PROTOCOL_LENGTH] = {'\0'}; + KVS_SOCKET_PROTOCOL remoteProtocol = KVS_SOCKET_PROTOCOL_NONE; CHK(pIceAgent != NULL && pIceCandidateString != NULL, STATUS_NULL_ARG); CHK(!IS_EMPTY_STRING(pIceCandidateString), STATUS_INVALID_ARG); @@ -355,10 +355,12 @@ STATUS iceAgentAddRemoteCandidate(PIceAgent pIceAgent, PCHAR pIceCandidateString STRTOUI32(curr, next, 10, &priority); break; case SDP_ICE_CANDIDATE_PARSER_STATE_PROTOCOL: - if(tokenLen < MAX_PROTOCOL_LENGTH) { - STRNCPY(remoteProtocol, curr, tokenLen); + if (STRNCMPI(ICE_TRANSPORT_TYPE_TCP, curr, tokenLen) == 0) { + remoteProtocol = KVS_SOCKET_PROTOCOL_TCP; + } else if (STRNCMPI(ICE_TRANSPORT_TYPE_UDP, curr, tokenLen) == 0) { + remoteProtocol = KVS_SOCKET_PROTOCOL_UDP; } - CHK(STRNCMPI("tcp", curr, tokenLen) != 0, STATUS_ICE_CANDIDATE_STRING_IS_TCP); + CHK(STRNCMPI(ICE_TRANSPORT_TYPE_TCP, curr, tokenLen) != 0, STATUS_ICE_CANDIDATE_STRING_IS_TCP); break; case SDP_ICE_CANDIDATE_PARSER_STATE_IP: len = MIN(next - curr, KVS_IP_ADDRESS_STRING_BUFFER_LEN - 1); @@ -415,7 +417,7 @@ STATUS iceAgentAddRemoteCandidate(PIceAgent pIceAgent, PCHAR pIceCandidateString pIceCandidate->state = ICE_CANDIDATE_STATE_VALID; pIceCandidate->priority = priority; pIceCandidate->iceCandidateType = iceCandidateType; - STRNCPY(pIceCandidate->remoteProtocol, remoteProtocol, SIZEOF(remoteProtocol)); + pIceCandidate->remoteProtocol = remoteProtocol; CHK_STATUS(doubleListInsertItemHead(pIceAgent->remoteCandidates, (UINT64) pIceCandidate)); freeIceCandidateIfFail = FALSE; @@ -678,6 +680,7 @@ STATUS iceAgentSendPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen) pIceAgent->pDataSendingIceCandidatePair->rtcIceCandidatePairDiagnostics.bytesSent += bytesSent; pIceAgent->pDataSendingIceCandidatePair->rtcIceCandidatePairDiagnostics.packetsSent += packetsSent; } + if (locked) { MUTEX_UNLOCK(pIceAgent->lock); } @@ -850,7 +853,6 @@ STATUS iceAgentRestart(PIceAgent pIceAgent, PCHAR localIceUfrag, PCHAR localIceP ATOMIC_STORE_BOOL(&pIceAgent->processStun, FALSE); pIceAgent->iceAgentStatus = STATUS_SUCCESS; pIceAgent->lastDataReceivedTime = INVALID_TIMESTAMP_VALUE; - pIceAgent->relayCandidateCount = 0; CHK_STATUS(doubleListGetHeadNode(pIceAgent->localCandidates, &pCurNode)); @@ -2638,29 +2640,27 @@ VOID iceAgentLogNewCandidate(PIceCandidate pIceCandidate) { CHAR ipAddr[KVS_IP_ADDRESS_STRING_BUFFER_LEN]; PCHAR protocol = "UNKNOWN"; + KVS_SOCKET_PROTOCOL candidateProtocol = KVS_SOCKET_PROTOCOL_NONE; if (pIceCandidate != NULL) { getIpAddrStr(&pIceCandidate->ipAddress, ipAddr, ARRAY_SIZE(ipAddr)); if (!pIceCandidate->isRemote && pIceCandidate->pSocketConnection != NULL) { - switch (pIceCandidate->pSocketConnection->protocol) { - case KVS_SOCKET_PROTOCOL_TCP: - protocol = "tcp"; - break; - case KVS_SOCKET_PROTOCOL_UDP: - protocol = "udp"; - break; - case KVS_SOCKET_PROTOCOL_NONE: - protocol = "none"; - break; - default: - break; - } + candidateProtocol = pIceCandidate->pSocketConnection->protocol; } else { - protocol = pIceCandidate->remoteProtocol; + candidateProtocol = pIceCandidate->remoteProtocol; + } + switch (candidateProtocol) { + case KVS_SOCKET_PROTOCOL_TCP: + protocol = ICE_TRANSPORT_TYPE_TCP; + break; + case KVS_SOCKET_PROTOCOL_UDP: + protocol = ICE_TRANSPORT_TYPE_UDP; + break; + default: + break; } - DLOGD("New %s ice candidate discovered. Id: %s. Ip: %s:%u. Type: %s. Protocol: %s.", pIceCandidate->isRemote ? "remote" : "local", - pIceCandidate->id, ipAddr, (UINT16) getInt16(pIceCandidate->ipAddress.port), - iceAgentGetCandidateTypeStr(pIceCandidate->iceCandidateType), protocol); + pIceCandidate->id, ipAddr, (UINT16) getInt16(pIceCandidate->ipAddress.port), iceAgentGetCandidateTypeStr(pIceCandidate->iceCandidateType), + protocol); } } diff --git a/src/source/Ice/IceAgent.h b/src/source/Ice/IceAgent.h index 986f1daace..0b02b87848 100644 --- a/src/source/Ice/IceAgent.h +++ b/src/source/Ice/IceAgent.h @@ -160,7 +160,7 @@ typedef struct { * has been reported through IceNewLocalCandidateFunc */ BOOL reported; CHAR id[ICE_CANDIDATE_ID_LEN + 1]; - CHAR remoteProtocol[MAX_PROTOCOL_LENGTH]; + KVS_SOCKET_PROTOCOL remoteProtocol; } IceCandidate, *PIceCandidate; typedef struct { From 01efd8b363a8ed1c899d2a30cf68e91785d09376 Mon Sep 17 00:00:00 2001 From: "Alex.D.Scofield" Date: Tue, 2 Nov 2021 20:35:59 +0800 Subject: [PATCH 017/102] typo: typo fix (#1317) Signed-off-by: Alex.Li --- samples/Common.c | 6 +++--- src/source/Ice/IceAgent.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index 089d6eba03..e5fa72952b 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -493,7 +493,7 @@ STATUS createSampleStreamingSession(PSampleConfiguration pSampleConfiguration, P CHK_STATUS(transceiverOnBandwidthEstimation(pSampleStreamingSession->pVideoRtcRtpTransceiver, (UINT64) pSampleStreamingSession, sampleBandwidthEstimationHandler)); - // Add a SendRecv Transceiver of type video + // Add a SendRecv Transceiver of type audio audioTrack.kind = MEDIA_STREAM_TRACK_KIND_AUDIO; audioTrack.codec = RTC_CODEC_OPUS; audioRtpTransceiverInit.direction = RTC_RTP_TRANSCEIVER_DIRECTION_SENDRECV; @@ -596,10 +596,10 @@ VOID sampleFrameHandler(UINT64 customData, PFrame pFrame) } } -VOID sampleBandwidthEstimationHandler(UINT64 customData, DOUBLE maxiumBitrate) +VOID sampleBandwidthEstimationHandler(UINT64 customData, DOUBLE maximumBitrate) { UNUSED_PARAM(customData); - DLOGV("received bitrate suggestion: %f", maxiumBitrate); + DLOGV("received bitrate suggestion: %f", maximumBitrate); } VOID sampleSenderBandwidthEstimationHandler(UINT64 customData, UINT32 txBytes, UINT32 rxBytes, UINT32 txPacketsCnt, UINT32 rxPacketsCnt, diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index 5014c9e887..18f0a1a80c 100644 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -1034,7 +1034,7 @@ STATUS createIceCandidatePairs(PIceAgent pIceAgent, PIceCandidate pIceCandidate, CHK(pIceAgent != NULL && pIceCandidate != NULL, STATUS_NULL_ARG); CHK_WARN(pIceCandidate->state == ICE_CANDIDATE_STATE_VALID, retStatus, "New ice candidate need to be valid to form pairs"); - // if pIceCandidate is a remote candidate, then form pairs with every single valid local candidate. Otherwize, + // if pIceCandidate is a remote candidate, then form pairs with every single valid local candidate. Otherwise, // form pairs with every single valid remote candidate pDoubleList = isRemoteCandidate ? pIceAgent->localCandidates : pIceAgent->remoteCandidates; From 14b710b4023c55c35a474109e8293ccc93e9ae46 Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Thu, 18 Nov 2021 11:35:37 -0800 Subject: [PATCH 018/102] Signaling state machine rework (#1323) * replaced recursive calls to stepSignalingStateMachine with loops * removed recursive calls to stepSignalingStateMachine * replaced stepSignalingstatemachine with signalingStateMachineIterator * removed stepUntil, continueOnReady; removed status from iterator signature; set signalingclient version; added a lock in refreshIceConfiguration * changed the declaration for i from int to UINT32 * added signaling version; removed unnecessary comment * removed redeclaration; changed value in an existing macro --- .../kinesis/video/webrtcclient/Include.h | 7 +- src/source/Signaling/LwsApiCalls.c | 10 +- src/source/Signaling/Signaling.c | 41 +++---- src/source/Signaling/Signaling.h | 12 +- src/source/Signaling/StateMachine.c | 112 +++++------------- src/source/Signaling/StateMachine.h | 2 +- 6 files changed, 60 insertions(+), 124 deletions(-) diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index a63e17b82d..c14d2551d1 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -495,7 +495,7 @@ extern "C" { /** * Version of signaling client */ -#define SIGNALING_CLIENT_CURRENT_VERSION 0 +#define SIGNALING_CLIENT_CURRENT_VERSION 1 /** * Version of SignalingChannelDescription structure @@ -573,6 +573,11 @@ extern "C" { */ #define SIGNALING_CONNECT_STATE_TIMEOUT (15 * HUNDREDS_OF_NANOS_IN_A_SECOND) +/** + * Default disconnect sync API timeout + */ +#define SIGNALING_DISCONNECT_STATE_TIMEOUT (15 * HUNDREDS_OF_NANOS_IN_A_SECOND) + /** * Default refresh ICE server config API timeout */ diff --git a/src/source/Signaling/LwsApiCalls.c b/src/source/Signaling/LwsApiCalls.c index 8398508161..0e5d1c382a 100644 --- a/src/source/Signaling/LwsApiCalls.c +++ b/src/source/Signaling/LwsApiCalls.c @@ -1376,14 +1376,12 @@ PVOID reconnectHandler(PVOID args) // thread but there is a slight chance of a race condition. CHK(!ATOMIC_LOAD_BOOL(&pSignalingClient->shutdown), retStatus); - // Set the time out before execution - pSignalingClient->stepUntil = GETTIME() + SIGNALING_CONNECT_STATE_TIMEOUT; - // Update the diagnostics info ATOMIC_INCREMENT(&pSignalingClient->diagnostics.numberOfReconnects); // Attempt to reconnect by driving the state machine to connected state - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, GETTIME() + SIGNALING_CONNECT_STATE_TIMEOUT, + SIGNALING_STATE_CONNECTED)); CleanUp: @@ -1804,7 +1802,7 @@ STATUS receiveLwsMessage(PSignalingClient pSignalingClient, PCHAR pMessage, UINT SAFE_MEMFREE(pSignalingMessageWrapper); // Iterate the state machinery - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, GETTIME() + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_CONNECTED)); CHK(FALSE, retStatus); break; @@ -1817,7 +1815,7 @@ STATUS receiveLwsMessage(PSignalingClient pSignalingClient, PCHAR pMessage, UINT SAFE_MEMFREE(pSignalingMessageWrapper); // Iterate the state machinery - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, GETTIME() + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_CONNECTED)); CHK(FALSE, retStatus); break; diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index f906df16d0..1352bc4f49 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -37,6 +37,8 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf CHK_STATUS(validateSignalingCallbacks(pSignalingClient, pCallbacks)); CHK_STATUS(validateSignalingClientInfo(pSignalingClient, pClientInfo)); + pSignalingClient->version = SIGNALING_CLIENT_CURRENT_VERSION; + // Set invalid call times pSignalingClient->describeTime = INVALID_TIMESTAMP_VALUE; pSignalingClient->createTime = INVALID_TIMESTAMP_VALUE; @@ -151,9 +153,6 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf // At this point we have constructed the main object and we can assign to the returned pointer *ppSignalingClient = pSignalingClient; - // Set the time out before execution - pSignalingClient->stepUntil = pSignalingClient->diagnostics.createTime + SIGNALING_CREATE_TIMEOUT; - // Notify of the state change initially as the state machinery is already in the NEW state if (pSignalingClient->signalingClientCallbacks.stateChangeFn != NULL) { CHK_STATUS(getStateMachineCurrentState(pSignalingClient->pStateMachine, &pStateMachineState)); @@ -165,7 +164,8 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf ATOMIC_STORE_BOOL(&pSignalingClient->refreshIceConfig, FALSE); // Prime the state machine - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, STATUS_SUCCESS)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, pSignalingClient->diagnostics.createTime + SIGNALING_CREATE_TIMEOUT, + SIGNALING_STATE_READY)); CleanUp: @@ -379,16 +379,11 @@ STATUS signalingConnectSync(PSignalingClient pSignalingClient) // Check if we are already connected CHK(!ATOMIC_LOAD_BOOL(&pSignalingClient->connected), retStatus); - // Self-prime through the ready state - pSignalingClient->continueOnReady = TRUE; - // Store the signaling state in case we error/timeout so we can re-set it on exit CHK_STATUS(getStateMachineCurrentState(pSignalingClient->pStateMachine, &pState)); - // Set the time out before execution - pSignalingClient->stepUntil = GETTIME() + SIGNALING_CONNECT_STATE_TIMEOUT; - - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, GETTIME() + SIGNALING_CONNECT_STATE_TIMEOUT, + SIGNALING_STATE_CONNECTED)); CleanUp: @@ -411,9 +406,6 @@ STATUS signalingDisconnectSync(PSignalingClient pSignalingClient) CHK(pSignalingClient != NULL, STATUS_NULL_ARG); - // Do not self-prime through the ready state - pSignalingClient->continueOnReady = FALSE; - // Check if we are already not connected CHK(ATOMIC_LOAD_BOOL(&pSignalingClient->connected), retStatus); @@ -421,7 +413,7 @@ STATUS signalingDisconnectSync(PSignalingClient pSignalingClient) ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_RESULT_OK); - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, GETTIME() + SIGNALING_DISCONNECT_STATE_TIMEOUT, SIGNALING_STATE_READY)); CleanUp: @@ -449,10 +441,7 @@ STATUS signalingDeleteSync(PSignalingClient pSignalingClient) // Set the state directly setStateMachineCurrentState(pSignalingClient->pStateMachine, SIGNALING_STATE_DELETE); - // Set the time out before execution - pSignalingClient->stepUntil = GETTIME() + SIGNALING_DELETE_TIMEOUT; - - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, GETTIME() + SIGNALING_DELETE_TIMEOUT, SIGNALING_STATE_DELETED)); CleanUp: @@ -567,6 +556,7 @@ STATUS refreshIceConfiguration(PSignalingClient pSignalingClient) CHAR iceRefreshErrMsg[SIGNALING_MAX_ERROR_MESSAGE_LEN + 1]; UINT32 iceRefreshErrLen; UINT64 curTime; + BOOL locked = FALSE; CHK(pSignalingClient != NULL, STATUS_NULL_ARG); @@ -580,6 +570,8 @@ STATUS refreshIceConfiguration(PSignalingClient pSignalingClient) CHK_STATUS(acceptStateMachineState(pSignalingClient->pStateMachine, SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DISCONNECTED)); + MUTEX_LOCK(pSignalingClient->stateLock); + locked = TRUE; // Get and store the current state to re-set to if we fail CHK_STATUS(getStateMachineCurrentState(pSignalingClient->pStateMachine, &pStateMachineState)); @@ -589,14 +581,16 @@ STATUS refreshIceConfiguration(PSignalingClient pSignalingClient) // Iterate the state machinery in steady states only - ready or connected if (pStateMachineState->state == SIGNALING_STATE_READY || pStateMachineState->state == SIGNALING_STATE_CONNECTED) { - // Set the time out before execution - pSignalingClient->stepUntil = curTime + SIGNALING_REFRESH_ICE_CONFIG_STATE_TIMEOUT; - - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, curTime + SIGNALING_REFRESH_ICE_CONFIG_STATE_TIMEOUT, + pStateMachineState->state)); } CleanUp: + if (locked) { + MUTEX_UNLOCK(pSignalingClient->stateLock); + } + CHK_LOG_ERR(retStatus); // Notify the client in case of an error @@ -632,6 +626,7 @@ STATUS signalingStoreOngoingMessage(PSignalingClient pSignalingClient, PSignalin CHK(pSignalingClient != NULL && pSignalingMessage != NULL, STATUS_NULL_ARG); MUTEX_LOCK(pSignalingClient->messageQueueLock); locked = TRUE; + CHK_STATUS(signalingGetOngoingMessage(pSignalingClient, pSignalingMessage->correlationId, pSignalingMessage->peerClientId, &pExistingMessage)); CHK(pExistingMessage == NULL, STATUS_SIGNALING_DUPLICATE_MESSAGE_BEING_SENT); CHK_STATUS(stackQueueEnqueue(pSignalingClient->pMessageQueue, (UINT64) pSignalingMessage)); diff --git a/src/source/Signaling/Signaling.h b/src/source/Signaling/Signaling.h index 61a038b404..b404d36687 100644 --- a/src/source/Signaling/Signaling.h +++ b/src/source/Signaling/Signaling.h @@ -139,6 +139,9 @@ typedef struct { * Internal representation of the Signaling client. */ typedef struct { + // Current version of the structure + UINT32 version; + // Current service call result volatile SIZE_T result; @@ -170,9 +173,6 @@ typedef struct { // Indicates that there is another thread attempting to grab the service lock volatile ATOMIC_BOOL serviceLockContention; - // Current version of the structure - UINT32 version; - // Stored Client info SignalingClientInfoInternal clientInfo; @@ -209,9 +209,6 @@ typedef struct { // Service call context ServiceCallContext serviceCallContext; - // Indicates whether to self-prime on Ready or not - BOOL continueOnReady; - // Interlocking the state transitions MUTEX stateLock; @@ -233,9 +230,6 @@ typedef struct { // Conditional variable for receiving response to the sent message CVAR receiveCvar; - // Execute the state machine until this time - UINT64 stepUntil; - // Indicates when the ICE configuration has been retrieved UINT64 iceConfigTime; diff --git a/src/source/Signaling/StateMachine.c b/src/source/Signaling/StateMachine.c index 0868e9be4a..29f14e9864 100644 --- a/src/source/Signaling/StateMachine.c +++ b/src/source/Signaling/StateMachine.c @@ -48,50 +48,48 @@ StateMachineState SIGNALING_STATE_MACHINE_STATES[] = { UINT32 SIGNALING_STATE_MACHINE_STATE_COUNT = ARRAY_SIZE(SIGNALING_STATE_MACHINE_STATES); -STATUS stepSignalingStateMachine(PSignalingClient pSignalingClient, STATUS status) +STATUS signalingStateMachineIterator(PSignalingClient pSignalingClient, UINT64 expiration, UINT64 finalState) { ENTERS(); - STATUS retStatus = STATUS_SUCCESS; + UINT64 currentTime; UINT32 i; + STATUS retStatus = STATUS_SUCCESS; + PStateMachineState pState = NULL; BOOL locked = FALSE; - UINT64 currentTime; - - CHK(pSignalingClient != NULL, STATUS_NULL_ARG); - - // Check for a shutdown - CHK(!ATOMIC_LOAD_BOOL(&pSignalingClient->shutdown), retStatus); MUTEX_LOCK(pSignalingClient->stateLock); locked = TRUE; - // Check if an error and the retry is OK - if (!pSignalingClient->pChannelInfo->retry && STATUS_FAILED(status)) { - CHK(FALSE, status); - } + while(TRUE) { + CHK(pSignalingClient != NULL, STATUS_NULL_ARG); - currentTime = GETTIME(); + CHK(!ATOMIC_LOAD_BOOL(&pSignalingClient->shutdown), retStatus); - CHK(pSignalingClient->stepUntil == 0 || currentTime <= pSignalingClient->stepUntil, STATUS_OPERATION_TIMED_OUT); + if (STATUS_FAILED(retStatus)) { + CHK(pSignalingClient->pChannelInfo->retry, retStatus); + for (i = 0; i < SIGNALING_STATE_MACHINE_STATE_COUNT; i++) { + CHK(retStatus != SIGNALING_STATE_MACHINE_STATES[i].status, SIGNALING_STATE_MACHINE_STATES[i].status); + } + } - // Check if the status is any of the retry/failed statuses - if (STATUS_FAILED(status)) { - for (i = 0; i < SIGNALING_STATE_MACHINE_STATE_COUNT; i++) { - CHK(status != SIGNALING_STATE_MACHINE_STATES[i].status, SIGNALING_STATE_MACHINE_STATES[i].status); + currentTime = GETTIME(); + CHK(expiration == 0 || currentTime <= expiration, STATUS_OPERATION_TIMED_OUT); + + // Fix-up the expired credentials transition + // NOTE: Api Gateway might not return an error that can be interpreted as unauthorized to + // make the correct transition to auth integration state. + if (retStatus == STATUS_SERVICE_CALL_NOT_AUTHORIZED_ERROR || + (SERVICE_CALL_UNKNOWN == (SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) && + pSignalingClient->pAwsCredentials->expiration < currentTime)) { + // Set the call status as auth error + ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_NOT_AUTHORIZED); } - } - // Fix-up the expired credentials transition - // NOTE: Api Gateway might not return an error that can be interpreted as unauthorized to - // make the correct transition to auth integration state. - if (status == STATUS_SERVICE_CALL_NOT_AUTHORIZED_ERROR || - (SERVICE_CALL_UNKNOWN == (SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) && - pSignalingClient->pAwsCredentials->expiration < currentTime)) { - // Set the call status as auth error - ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_NOT_AUTHORIZED); - } + retStatus = stepStateMachine(pSignalingClient->pStateMachine); - // Step the state machine - CHK_STATUS(stepStateMachine(pSignalingClient->pStateMachine)); + CHK_STATUS(getStateMachineCurrentState(pSignalingClient->pStateMachine, &pState)); + CHK(!(pState->state == finalState), STATUS_SUCCESS); + } CleanUp: @@ -287,12 +285,6 @@ STATUS executeGetTokenSignalingState(UINT64 customData, UINT64 time) ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) serviceCallResult); - // Self-prime the next state - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); - - // Reset the ret status - retStatus = STATUS_SUCCESS; - CleanUp: LEAVES(); @@ -361,11 +353,6 @@ STATUS executeDescribeSignalingState(UINT64 customData, UINT64 time) // Call the aggregate function retStatus = describeChannel(pSignalingClient, time); - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); - - // Reset the ret status - retStatus = STATUS_SUCCESS; - CleanUp: LEAVES(); @@ -424,11 +411,6 @@ STATUS executeCreateSignalingState(UINT64 customData, UINT64 time) // Call the aggregate function retStatus = createChannel(pSignalingClient, time); - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); - - // Reset the ret status - retStatus = STATUS_SUCCESS; - CleanUp: LEAVES(); @@ -487,11 +469,6 @@ STATUS executeGetEndpointSignalingState(UINT64 customData, UINT64 time) // Call the aggregate function retStatus = getChannelEndpoint(pSignalingClient, time); - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); - - // Reset the ret status - retStatus = STATUS_SUCCESS; - CleanUp: LEAVES(); @@ -550,11 +527,6 @@ STATUS executeGetIceConfigSignalingState(UINT64 customData, UINT64 time) // Call the aggregate function retStatus = getIceConfig(pSignalingClient, time); - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); - - // Reset the ret status - retStatus = STATUS_SUCCESS; - CleanUp: LEAVES(); @@ -619,16 +591,6 @@ STATUS executeReadySignalingState(UINT64 customData, UINT64 time) SIGNALING_CLIENT_STATE_READY)); } - if (pSignalingClient->continueOnReady) { - // Self-prime the connect - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); - } else { - // Reset the timeout for the state machine - pSignalingClient->stepUntil = 0; - } - - // Reset the ret status - retStatus = STATUS_SUCCESS; CleanUp: LEAVES(); @@ -719,11 +681,6 @@ STATUS executeConnectSignalingState(UINT64 customData, UINT64 time) retStatus = connectSignalingChannel(pSignalingClient, time); - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); - - // Reset the ret status - retStatus = STATUS_SUCCESS; - CleanUp: LEAVES(); @@ -805,11 +762,6 @@ STATUS executeConnectedSignalingState(UINT64 customData, UINT64 time) SIGNALING_CLIENT_STATE_CONNECTED)); } - // Reset the timeout for the state machine - MUTEX_LOCK(pSignalingClient->stateLock); - pSignalingClient->stepUntil = 0; - MUTEX_UNLOCK(pSignalingClient->stateLock); - CleanUp: LEAVES(); @@ -870,9 +822,6 @@ STATUS executeDisconnectedSignalingState(UINT64 customData, UINT64 time) SIGNALING_CLIENT_STATE_DISCONNECTED)); } - // Self-prime the next state - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); - CleanUp: LEAVES(); @@ -940,11 +889,6 @@ STATUS executeDeleteSignalingState(UINT64 customData, UINT64 time) // Call the aggregate function retStatus = deleteChannel(pSignalingClient, time); - CHK_STATUS(stepSignalingStateMachine(pSignalingClient, retStatus)); - - // Reset the ret status - retStatus = STATUS_SUCCESS; - CleanUp: LEAVES(); diff --git a/src/source/Signaling/StateMachine.h b/src/source/Signaling/StateMachine.h index ef48eb31cd..fea8300e66 100644 --- a/src/source/Signaling/StateMachine.h +++ b/src/source/Signaling/StateMachine.h @@ -31,7 +31,7 @@ extern "C" { #define INFINITE_RETRY_COUNT_SENTINEL 0 // Whether to step the state machine -STATUS stepSignalingStateMachine(PSignalingClient, STATUS); +STATUS signalingStateMachineIterator(PSignalingClient, UINT64, UINT64); STATUS acceptSignalingStateMachineState(PSignalingClient, UINT64); SIGNALING_CLIENT_STATE getSignalingStateFromStateMachineState(UINT64); From 46e9249f0ac96e1c159919206e0b6e709464eef1 Mon Sep 17 00:00:00 2001 From: Hassan Sahibzada Date: Fri, 19 Nov 2021 13:06:59 -0500 Subject: [PATCH 019/102] Fix issue with API call failures being treated as success (#1328) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * return proper error, do not reset call result value * for non retriable failures, set the terminal exit status for state in… (#1320) * for non retriable failures, set the terminal exit status for state in state machine * address comments * adjust tests set retry max to 1 * Update LwsApiCalls.c trigger travis ci --- .../kinesis/video/webrtcclient/Include.h | 4 +- src/source/Signaling/LwsApiCalls.c | 60 +++++++++++++++++-- src/source/Signaling/Signaling.c | 21 ------- tst/SignalingApiFunctionalityTest.cpp | 28 ++++----- 4 files changed, 71 insertions(+), 42 deletions(-) diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index c14d2551d1..88f4f80498 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -299,6 +299,8 @@ extern "C" { #define STATUS_SIGNALING_DELETE_CALL_FAILED STATUS_SIGNALING_BASE + 0x00000031 #define STATUS_SIGNALING_INVALID_METRICS_VERSION STATUS_SIGNALING_BASE + 0x00000032 #define STATUS_SIGNALING_INVALID_CLIENT_INFO_CACHE_FILE_PATH_LEN STATUS_SIGNALING_BASE + 0x00000033 +#define STATUS_SIGNALING_LWS_CALL_FAILED STATUS_SIGNALING_BASE + 0x00000034 + /*!@} */ @@ -640,7 +642,7 @@ extern "C" { /** * Signaling states default retry count. This will evaluate to the last call being made 20 seconds in which will hit a timeout first. */ -#define SIGNALING_STATES_DEFAULT_RETRY_COUNT 10 +#define SIGNALING_STATES_DEFAULT_RETRY_COUNT 1 /** * Signaling caching policy default TTL period diff --git a/src/source/Signaling/LwsApiCalls.c b/src/source/Signaling/LwsApiCalls.c index 0e5d1c382a..e29b459592 100644 --- a/src/source/Signaling/LwsApiCalls.c +++ b/src/source/Signaling/LwsApiCalls.c @@ -111,9 +111,16 @@ INT32 lwsHttpCallbackRoutine(struct lws* wsi, enum lws_callback_reasons reason, lwsl_hexdump_debug(pDataIn, dataSize); if (dataSize != 0) { - CHK(NULL != (pLwsCallInfo->callInfo.responseData = (PCHAR) MEMALLOC(dataSize)), STATUS_NOT_ENOUGH_MEMORY); + CHK(NULL != (pLwsCallInfo->callInfo.responseData = (PCHAR) MEMALLOC(dataSize+1)), STATUS_NOT_ENOUGH_MEMORY); MEMCPY(pLwsCallInfo->callInfo.responseData, pDataIn, dataSize); + pLwsCallInfo->callInfo.responseData[dataSize] = '\0'; pLwsCallInfo->callInfo.responseDataLen = (UINT32) dataSize; + + if (pLwsCallInfo->callInfo.callResult != SERVICE_CALL_RESULT_OK) { + DLOGW("Received client http read response: %s", pLwsCallInfo->callInfo.responseData); + } else { + DLOGV("Received client http read response: %s", pLwsCallInfo->callInfo.responseData); + } } break; @@ -632,6 +639,10 @@ STATUS lwsCompleteSync(PLwsCallInfo pCallInfo) return retStatus; } +BOOL isCallResultFailureRetryable(PCallInfo pCallInfo) { + return (STRNSTR(pCallInfo->responseData, "Signature expired", pCallInfo->responseDataLen) == NULL); +} + ////////////////////////////////////////////////////////////////////////// // API calls ////////////////////////////////////////////////////////////////////////// @@ -678,8 +689,12 @@ STATUS describeChannelLws(PSignalingClient pSignalingClient, UINT64 time) pResponseStr = pLwsCallInfo->callInfo.responseData; resultLen = pLwsCallInfo->callInfo.responseDataLen; + CHK_ERR(isCallResultFailureRetryable(&pLwsCallInfo->callInfo), STATUS_SIGNALING_DESCRIBE_CALL_FAILED, + "DescribeChannel API call failed with: %s and will not be retried.", pResponseStr); + // Early return if we have a non-success result - CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, retStatus); + CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, + STATUS_SIGNALING_LWS_CALL_FAILED); // Parse the response jsmn_init(&parser); @@ -753,6 +768,10 @@ STATUS describeChannelLws(PSignalingClient pSignalingClient, UINT64 time) CleanUp: + if (STATUS_FAILED(retStatus)) { + DLOGE("Call Failed with Status: 0x%08x", retStatus); + } + freeLwsCallInfo(&pLwsCallInfo); LEAVES(); @@ -823,8 +842,12 @@ STATUS createChannelLws(PSignalingClient pSignalingClient, UINT64 time) pResponseStr = pLwsCallInfo->callInfo.responseData; resultLen = pLwsCallInfo->callInfo.responseDataLen; + CHK_ERR(isCallResultFailureRetryable(&pLwsCallInfo->callInfo), STATUS_SIGNALING_CREATE_CALL_FAILED, + "CreateChannel API call failed with: %s and will not be retried.", pResponseStr); + // Early return if we have a non-success result - CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, retStatus); + CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, + STATUS_SIGNALING_LWS_CALL_FAILED); // Parse out the ARN jsmn_init(&parser); @@ -848,6 +871,10 @@ STATUS createChannelLws(PSignalingClient pSignalingClient, UINT64 time) CleanUp: + if (STATUS_FAILED(retStatus)) { + DLOGE("Call Failed with Status: 0x%08x", retStatus); + } + freeLwsCallInfo(&pLwsCallInfo); LEAVES(); @@ -897,8 +924,12 @@ STATUS getChannelEndpointLws(PSignalingClient pSignalingClient, UINT64 time) pResponseStr = pLwsCallInfo->callInfo.responseData; resultLen = pLwsCallInfo->callInfo.responseDataLen; + CHK_ERR(isCallResultFailureRetryable(&pLwsCallInfo->callInfo), STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED, + "GetChannelEndpoint API call failed with: %s and will not be retried.", pResponseStr); + // Early return if we have a non-success result - CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, retStatus); + CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, + STATUS_SIGNALING_LWS_CALL_FAILED); // Parse and extract the endpoints jsmn_init(&parser); @@ -973,6 +1004,10 @@ STATUS getChannelEndpointLws(PSignalingClient pSignalingClient, UINT64 time) CleanUp: + if (STATUS_FAILED(retStatus)) { + DLOGE("Call Failed with Status: 0x%08x", retStatus); + } + freeLwsCallInfo(&pLwsCallInfo); LEAVES(); @@ -1028,8 +1063,12 @@ STATUS getIceConfigLws(PSignalingClient pSignalingClient, UINT64 time) pResponseStr = pLwsCallInfo->callInfo.responseData; resultLen = pLwsCallInfo->callInfo.responseDataLen; + CHK_ERR(isCallResultFailureRetryable(&pLwsCallInfo->callInfo), STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED, + "GetIceConfig API call failed with: %s and will not be retried.", pResponseStr); + // Early return if we have a non-success result - CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, retStatus); + CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, + STATUS_SIGNALING_LWS_CALL_FAILED); // Parse the response jsmn_init(&parser); @@ -1094,6 +1133,10 @@ STATUS getIceConfigLws(PSignalingClient pSignalingClient, UINT64 time) CleanUp: + if (STATUS_FAILED(retStatus)) { + DLOGE("Call Failed with Status: 0x%08x", retStatus); + } + freeLwsCallInfo(&pLwsCallInfo); LEAVES(); @@ -1145,13 +1188,18 @@ STATUS deleteChannelLws(PSignalingClient pSignalingClient, UINT64 time) // Early return if we have a non-success result and it's not a resource not found result = ATOMIC_LOAD(&pSignalingClient->result); - CHK((SERVICE_CALL_RESULT) result == SERVICE_CALL_RESULT_OK || (SERVICE_CALL_RESULT) result == SERVICE_CALL_RESOURCE_NOT_FOUND, retStatus); + CHK((SERVICE_CALL_RESULT) result == SERVICE_CALL_RESULT_OK || (SERVICE_CALL_RESULT) result == SERVICE_CALL_RESOURCE_NOT_FOUND, + STATUS_SIGNALING_LWS_CALL_FAILED); // Mark the channel as deleted ATOMIC_STORE_BOOL(&pSignalingClient->deleted, TRUE); CleanUp: + if (STATUS_FAILED(retStatus)) { + DLOGE("Call Failed with Status: 0x%08x", retStatus); + } + freeLwsCallInfo(&pLwsCallInfo); LEAVES(); diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index 1352bc4f49..8cf2786b0e 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -837,7 +837,6 @@ STATUS describeChannel(PSignalingClient pSignalingClient, UINT64 time) if (STATUS_SUCCEEDED(retStatus)) { retStatus = describeChannelLws(pSignalingClient, time); - // Store the last call time on success if (STATUS_SUCCEEDED(retStatus)) { pSignalingClient->describeTime = time; @@ -858,10 +857,6 @@ STATUS describeChannel(PSignalingClient pSignalingClient, UINT64 time) CleanUp: - if (STATUS_FAILED(retStatus) && pSignalingClient != NULL) { - ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_UNKNOWN); - } - LEAVES(); return retStatus; } @@ -904,10 +899,6 @@ STATUS createChannel(PSignalingClient pSignalingClient, UINT64 time) CleanUp: - if (STATUS_FAILED(retStatus) && pSignalingClient != NULL) { - ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_UNKNOWN); - } - LEAVES(); return retStatus; } @@ -987,10 +978,6 @@ STATUS getChannelEndpoint(PSignalingClient pSignalingClient, UINT64 time) CleanUp: - if (STATUS_FAILED(retStatus) && pSignalingClient != NULL) { - ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_UNKNOWN); - } - LEAVES(); return retStatus; } @@ -1032,10 +1019,6 @@ STATUS getIceConfig(PSignalingClient pSignalingClient, UINT64 time) CleanUp: - if (STATUS_FAILED(retStatus) && pSignalingClient != NULL) { - ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_UNKNOWN); - } - LEAVES(); return retStatus; } @@ -1078,10 +1061,6 @@ STATUS deleteChannel(PSignalingClient pSignalingClient, UINT64 time) CleanUp: - if (STATUS_FAILED(retStatus) && pSignalingClient != NULL) { - ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_UNKNOWN); - } - LEAVES(); return retStatus; } diff --git a/tst/SignalingApiFunctionalityTest.cpp b/tst/SignalingApiFunctionalityTest.cpp index fba2c19c05..fe5d4b3fa1 100644 --- a/tst/SignalingApiFunctionalityTest.cpp +++ b/tst/SignalingApiFunctionalityTest.cpp @@ -1449,7 +1449,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedAuthExpi // Check the states - we should have failed on get credentials EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); - EXPECT_EQ(23, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); + EXPECT_EQ(5, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); @@ -1466,7 +1466,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedAuthExpi EXPECT_NE((UINT64) NULL, (UINT64) pIceConfigInfo); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); - EXPECT_EQ(23, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); + EXPECT_EQ(5, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); @@ -1572,7 +1572,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedAuthExpirat // Check the states - we should have failed on get credentials EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); - EXPECT_EQ(23, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); + EXPECT_EQ(5, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); @@ -1589,7 +1589,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedAuthExpirat EXPECT_NE((UINT64) NULL, (UINT64) pIceConfigInfo); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); - EXPECT_EQ(23, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); + EXPECT_EQ(5, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); @@ -1641,7 +1641,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaul // Make it fail after the first call and recover after two failures on the 3rd call getIceConfigResult = STATUS_INVALID_OPERATION; getIceConfigFail = 1; - getIceConfigRecover = 3; + getIceConfigRecover = 1; MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -1688,7 +1688,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaul EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); - EXPECT_EQ(4, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_READY]); EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTING]); EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); @@ -1701,7 +1701,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaul EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); - EXPECT_EQ(4, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_READY]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTING]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); @@ -1755,7 +1755,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithFaultIn // Make it fail after the first call and recover after two failures on the 3rd call getIceConfigResult = STATUS_INVALID_OPERATION; getIceConfigFail = 1; - getIceConfigRecover = 3; + getIceConfigRecover = 1; MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -1817,7 +1817,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithFaultIn EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); - EXPECT_EQ(4, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_READY]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTING]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); @@ -2894,7 +2894,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedAuthExpiration) // Check the states - we should have failed on get credentials EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); - EXPECT_EQ(12, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); + EXPECT_EQ(3, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); @@ -2914,7 +2914,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedAuthExpiration) // Check the states - we should have got the credentials now and directly moved to delete EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); - EXPECT_EQ(13, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); + EXPECT_EQ(4, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); @@ -3059,7 +3059,7 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DISCONNECTED]); // Validate the hook count - EXPECT_EQ(2, describeCount); + EXPECT_EQ(3, describeCount); EXPECT_EQ(2, getEndpointCount); // Connect to the signaling client and make it fail @@ -3081,7 +3081,7 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DISCONNECTED]); // Validate the hook count - EXPECT_EQ(2, describeCount); + EXPECT_EQ(3, describeCount); EXPECT_EQ(2, getEndpointCount); // Wait for the cache TTL to expire and retry @@ -3103,7 +3103,7 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DISCONNECTED]); // Validate the hook count is incremented due to cache miss - EXPECT_EQ(3, describeCount); + EXPECT_EQ(4, describeCount); EXPECT_EQ(3, getEndpointCount); EXPECT_EQ(STATUS_SUCCESS, signalingClientDisconnectSync(signalingHandle)); From 06bffcecd7f60571e29e51eb15fa8e4549638213 Mon Sep 17 00:00:00 2001 From: Anurag Katey Date: Mon, 22 Nov 2021 10:54:44 -0800 Subject: [PATCH 020/102] Incorporating PIC state machine level retry changes into webrtc signaling state machine (#1326) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Incorporating PIC state machine level retry changes into webrtc signaling state machine * Signaling state machine rework (#1323) * replaced recursive calls to stepSignalingStateMachine with loops * removed recursive calls to stepSignalingStateMachine * replaced stepSignalingstatemachine with signalingStateMachineIterator * removed stepUntil, continueOnReady; removed status from iterator signature; set signalingclient version; added a lock in refreshIceConfiguration * changed the declaration for i from int to UINT32 * added signaling version; removed unnecessary comment * removed redeclaration; changed value in an existing macro * Fix issue with API call failures being treated as success (#1328) * return proper error, do not reset call result value * for non retriable failures, set the terminal exit status for state in… (#1320) * for non retriable failures, set the terminal exit status for state in state machine * address comments * adjust tests set retry max to 1 * Update LwsApiCalls.c trigger travis ci * Add retry strategy to client info to avoiud changing create signaling channel API signature * Incorporating PIC state machine level retry changes into webrtc signaling state machine * Add retry strategy to client info to avoiud changing create signaling channel API signature * Adding more debug logs in the code * fix merge conflicts * PR feedback Co-authored-by: Niyati Maheshwari Co-authored-by: Hassan Sahibzada --- .../libkvsCommonLws-CMakeLists.txt | 2 +- samples/Common.c | 30 +++ samples/Samples.h | 1 + .../kinesis/video/webrtcclient/Include.h | 25 ++- src/source/Signaling/Client.c | 47 ++++- src/source/Signaling/Signaling.c | 54 +++++- src/source/Signaling/Signaling.h | 15 ++ src/source/Signaling/StateMachine.c | 182 ++++++++++++++---- src/source/Signaling/StateMachine.h | 28 +-- tst/SignalingApiFunctionalityTest.cpp | 17 ++ tst/WebRTCClientTestFixture.h | 35 +++- 11 files changed, 372 insertions(+), 64 deletions(-) diff --git a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt index 0e1f5a1196..1f67ea517d 100644 --- a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt +++ b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt @@ -6,7 +6,7 @@ include(ExternalProject) ExternalProject_Add(libkvsCommonLws-download GIT_REPOSITORY https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git - GIT_TAG 99c1a8cd8cec88f99c9c4ce3944b53ae341d1491 + GIT_TAG 9a995a5793b4024f19912be9a319993b1e16005c PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} diff --git a/samples/Common.c b/samples/Common.c index e5fa72952b..ae636027da 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -697,6 +697,29 @@ STATUS lookForSslCert(PSampleConfiguration* ppSampleConfiguration) return retStatus; } +STATUS setupDefaultSignalingClientRetryStrategy(PSignalingClientInfo pSignalingClientInfo) +{ + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + PRetryStrategy pRetryStrategy = NULL; + + CHK(pSignalingClientInfo != NULL, STATUS_NULL_ARG); + + pSignalingClientInfo->signalingClientRetryStrategy.retryStrategyType = KVS_RETRY_STRATEGY_EXPONENTIAL_BACKOFF_WAIT; + pSignalingClientInfo->signalingClientRetryStrategy.createRetryStrategyFn = exponentialBackoffRetryStrategyCreate; + pSignalingClientInfo->signalingClientRetryStrategy.freeRetryStrategyFn = exponentialBackoffRetryStrategyFree; + pSignalingClientInfo->signalingClientRetryStrategy.executeRetryStrategyFn = getExponentialBackoffRetryStrategyWaitTime; + + CHK_STATUS(pSignalingClientInfo->signalingClientRetryStrategy.createRetryStrategyFn(NULL /* use default config */, &pRetryStrategy)); + pSignalingClientInfo->signalingClientRetryStrategy.pRetryStrategy = pRetryStrategy; + + pSignalingClientInfo->signalingClientCreationMaxRetryCount = MAX_CREATE_SIGNALING_CLIENT_RETRIES; + +CleanUp: + LEAVES(); + return retStatus; +} + STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE roleType, BOOL trickleIce, BOOL useTurn, PSampleConfiguration* ppSampleConfiguration) { @@ -782,6 +805,8 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE pSampleConfiguration->clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; pSampleConfiguration->clientInfo.loggingLevel = logLevel; pSampleConfiguration->clientInfo.cacheFilePath = NULL; // Use the default path + CHK_STATUS(setupDefaultSignalingClientRetryStrategy(&pSampleConfiguration->clientInfo)); + pSampleConfiguration->iceCandidatePairStatsTimerId = MAX_UINT32; pSampleConfiguration->pregenerateCertTimerId = MAX_UINT32; @@ -1063,6 +1088,11 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) SAFE_MEMFREE(pSampleConfiguration->pVideoFrameBuffer); SAFE_MEMFREE(pSampleConfiguration->pAudioFrameBuffer); + if (pSampleConfiguration->clientInfo.signalingClientRetryStrategy.freeRetryStrategyFn != NULL) { + CHK_STATUS(pSampleConfiguration->clientInfo.signalingClientRetryStrategy.freeRetryStrategyFn( + &(pSampleConfiguration->clientInfo.signalingClientRetryStrategy.pRetryStrategy))); + } + if (IS_VALID_CVAR_VALUE(pSampleConfiguration->cvar) && IS_VALID_MUTEX_VALUE(pSampleConfiguration->sampleConfigurationObjLock)) { CVAR_BROADCAST(pSampleConfiguration->cvar); MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); diff --git a/samples/Samples.h b/samples/Samples.h index 6b721a8d6f..8e50d295dc 100644 --- a/samples/Samples.h +++ b/samples/Samples.h @@ -39,6 +39,7 @@ extern "C" { #define SAMPLE_HASH_TABLE_BUCKET_COUNT 50 #define SAMPLE_HASH_TABLE_BUCKET_LENGTH 2 +#define MAX_CREATE_SIGNALING_CLIENT_RETRIES 3 #define IOT_CORE_CREDENTIAL_ENDPOINT ((PCHAR) "AWS_IOT_CORE_CREDENTIAL_ENDPOINT") #define IOT_CORE_CERT ((PCHAR) "AWS_IOT_CORE_CERT") diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 88f4f80498..2be2eed2ea 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -660,6 +660,9 @@ extern "C" { typedef UINT64 SIGNALING_CLIENT_HANDLE; typedef SIGNALING_CLIENT_HANDLE* PSIGNALING_CLIENT_HANDLE; +typedef KvsRetryStrategy SignalingClientRetryStrategy; +typedef PKvsRetryStrategy PSignalingClientRetryStrategy; + /** * @brief This is a sentinel indicating an invalid handle value */ @@ -1177,16 +1180,18 @@ typedef struct { * @brief Populate Signaling client with client ID and application log level */ typedef struct { - UINT32 version; //!< Version of the structure - CHAR clientId[MAX_SIGNALING_CLIENT_ID_LEN + 1]; //!< Client id to use. Defines if the client is a producer/consumer - UINT32 loggingLevel; //!< Verbosity level for the logging. One of LOG_LEVEL_XXX - //!< values or the default verbosity will be assumed. Currently, - //!< default value is LOG_LEVEL_WARNING - PCHAR cacheFilePath; //!< File cache path override. The default - //!< path is "./.SignalingCache_vN" which might not work for - //!< devices which have read only partition where the code is - //!< located. For default value or when file caching is not - //!< being used this value can be NULL or point to an EMPTY_STRING. + UINT32 version; //!< Version of the structure + CHAR clientId[MAX_SIGNALING_CLIENT_ID_LEN + 1]; //!< Client id to use. Defines if the client is a producer/consumer + UINT32 loggingLevel; //!< Verbosity level for the logging. One of LOG_LEVEL_XXX + //!< values or the default verbosity will be assumed. Currently, + //!< default value is LOG_LEVEL_WARNING + PCHAR cacheFilePath; //!< File cache path override. The default + //!< path is "./.SignalingCache_vN" which might not work for + //!< devices which have read only partition where the code is + //!< located. For default value or when file caching is not + //!< being used this value can be NULL or point to an EMPTY_STRING. + SignalingClientRetryStrategy signalingClientRetryStrategy; //!< Retry strategy used while creating signaling client + UINT32 signalingClientCreationMaxRetryCount; //!< Maximum attempts which createSignalingClientSync API will make on failures to create signaling client } SignalingClientInfo, *PSignalingClientInfo; /** diff --git a/src/source/Signaling/Client.c b/src/source/Signaling/Client.c index 98966bc294..870d846eb3 100644 --- a/src/source/Signaling/Client.c +++ b/src/source/Signaling/Client.c @@ -1,13 +1,37 @@ #define LOG_CLASS "SignalingClient" #include "../Include_i.h" +STATUS validateSignalingClientRetryStrategy(PSignalingClientInfo pClientInfo) { + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + PSignalingClientRetryStrategy pSignalingClientRetryStrategy; + + CHK(pClientInfo != NULL, STATUS_NULL_ARG); + + pSignalingClientRetryStrategy = &(pClientInfo->signalingClientRetryStrategy); + + CHK(pSignalingClientRetryStrategy->retryStrategyType > KVS_RETRY_STRATEGY_DISABLED && + pSignalingClientRetryStrategy->pRetryStrategy != NULL && + pSignalingClientRetryStrategy->executeRetryStrategyFn != NULL, STATUS_NULL_ARG); + + CHK(pClientInfo->signalingClientCreationMaxRetryCount > 0, STATUS_NOT_IMPLEMENTED); + +CleanUp: + + LEAVES(); + return retStatus; +} + STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo pChannelInfo, PSignalingClientCallbacks pCallbacks, PAwsCredentialProvider pCredentialProvider, PSIGNALING_CLIENT_HANDLE pSignalingHandle) { ENTERS(); STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = NULL; + PSignalingClientRetryStrategy pSignalingClientRetryStrategy = NULL; SignalingClientInfoInternal signalingClientInfoInternal; + UINT32 signalingClientCreationMaxRetryCount; + UINT64 signalingClientCreationWaitTime; DLOGV("Creating Signaling Client Sync"); CHK(pSignalingHandle != NULL && pClientInfo != NULL, STATUS_NULL_ARG); @@ -16,7 +40,28 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo MEMSET(&signalingClientInfoInternal, 0x00, SIZEOF(signalingClientInfoInternal)); signalingClientInfoInternal.signalingClientInfo = *pClientInfo; - CHK_STATUS(createSignalingSync(&signalingClientInfoInternal, pChannelInfo, pCallbacks, pCredentialProvider, &pSignalingClient)); + CHK_STATUS(validateSignalingClientRetryStrategy(pClientInfo)); + + signalingClientCreationMaxRetryCount = pClientInfo->signalingClientCreationMaxRetryCount; + pSignalingClientRetryStrategy = &(pClientInfo->signalingClientRetryStrategy); + + while (signalingClientCreationMaxRetryCount > 0) { + // Wait before cresting signaling client to ensure the first call from a large + // client fleet will be spread across the wait time window. + CHK_STATUS(pSignalingClientRetryStrategy->executeRetryStrategyFn(pSignalingClientRetryStrategy->pRetryStrategy, &signalingClientCreationWaitTime)); + DLOGV("Attempting to back off for [%lf] milliseconds before creating signaling client. Signaling client creation retry count [%d]", + signalingClientCreationWaitTime/1000.0, signalingClientCreationMaxRetryCount); + THREAD_SLEEP(signalingClientCreationWaitTime); + + retStatus = createSignalingSync(&signalingClientInfoInternal, pChannelInfo, pCallbacks, pCredentialProvider, &pSignalingClient); + if (retStatus == STATUS_SUCCESS) { + break; + } + signalingClientCreationMaxRetryCount--; + } + + DLOGV("Create signaling client returned [%" PRId64 "].", retStatus); + CHK_STATUS(retStatus); *pSignalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index 8cf2786b0e..21f1d7d804 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -37,9 +37,8 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf CHK_STATUS(validateSignalingCallbacks(pSignalingClient, pCallbacks)); CHK_STATUS(validateSignalingClientInfo(pSignalingClient, pClientInfo)); - pSignalingClient->version = SIGNALING_CLIENT_CURRENT_VERSION; - // Set invalid call times + pSignalingClient->version = SIGNALING_CLIENT_CURRENT_VERSION; pSignalingClient->describeTime = INVALID_TIMESTAMP_VALUE; pSignalingClient->createTime = INVALID_TIMESTAMP_VALUE; pSignalingClient->getEndpointTime = INVALID_TIMESTAMP_VALUE; @@ -74,6 +73,9 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf // Store the credential provider pSignalingClient->pCredentialProvider = pCredentialProvider; + // Configure retry strategy for retries on error within signaling state machine + CHK_STATUS(configureRetryStrategyForSignalingStateMachine(pSignalingClient)); + // Create the state machine CHK_STATUS(createStateMachine(SIGNALING_STATE_MACHINE_STATES, SIGNALING_STATE_MACHINE_STATE_COUNT, CUSTOM_DATA_FROM_SIGNALING_CLIENT(pSignalingClient), signalingGetCurrentTime, @@ -205,6 +207,8 @@ STATUS freeSignaling(PSignalingClient* ppSignalingClient) MUTEX_UNLOCK(pSignalingClient->lwsServiceLock); } + freeClientRetryStrategy(pSignalingClient); + freeStateMachine(pSignalingClient->pStateMachine); freeChannelInfo(&pSignalingClient->pChannelInfo); @@ -516,6 +520,52 @@ STATUS validateSignalingClientInfo(PSignalingClient pSignalingClient, PSignaling return retStatus; } +STATUS configureRetryStrategyForSignalingStateMachine(PSignalingClient pSignalingClient) { + ENTERS(); + PRetryStrategy pRetryStrategy = NULL; + STATUS retStatus = STATUS_SUCCESS; + KVS_RETRY_STRATEGY_TYPE defaultKvsRetryStrategyType = KVS_RETRY_STRATEGY_EXPONENTIAL_BACKOFF_WAIT; + + CHK(pSignalingClient != NULL, STATUS_NULL_ARG); + pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.retryStrategyType = KVS_RETRY_STRATEGY_EXPONENTIAL_BACKOFF_WAIT; + pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.createRetryStrategyFn = exponentialBackoffRetryStrategyCreate; + pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.freeRetryStrategyFn = exponentialBackoffRetryStrategyFree; + pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.executeRetryStrategyFn = getExponentialBackoffRetryStrategyWaitTime; + + CHK_STATUS(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.createRetryStrategyFn( + NULL, &pRetryStrategy)); + + if (pRetryStrategy == NULL) { + DLOGD("Unable to create exponential backoff retry strategy. This should not happen."); + } + + CHK(pRetryStrategy != NULL, STATUS_INTERNAL_ERROR); + pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.pRetryStrategy = pRetryStrategy; + + CleanUp: + + LEAVES(); + return retStatus; +} + +STATUS freeClientRetryStrategy(PSignalingClient pSignalingClient) { + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + + CHK(pSignalingClient != NULL && + pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.freeRetryStrategyFn != NULL, STATUS_SUCCESS); + + CHK_STATUS(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.freeRetryStrategyFn( + &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.pRetryStrategy))); + + pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.pRetryStrategy = NULL; + + CleanUp: + + LEAVES(); + return retStatus; +} + STATUS validateIceConfiguration(PSignalingClient pSignalingClient) { ENTERS(); diff --git a/src/source/Signaling/Signaling.h b/src/source/Signaling/Signaling.h index b404d36687..c3957f81ff 100644 --- a/src/source/Signaling/Signaling.h +++ b/src/source/Signaling/Signaling.h @@ -107,6 +107,9 @@ typedef struct { SignalingApiCallHookFunc connectPostHookFn; SignalingApiCallHookFunc deletePreHookFn; SignalingApiCallHookFunc deletePostHookFn; + + // Retry strategy for signaling state machine + KvsRetryStrategy signalingStateMachineRetryStrategy; } SignalingClientInfoInternal, *PSignalingClientInfoInternal; /** @@ -281,6 +284,14 @@ typedef struct { UINT64 connectTime; } SignalingClient, *PSignalingClient; +static const ExponentialBackoffRetryStrategyConfig DEFAULT_SIGNALING_STATE_MACHINE_EXPONENTIAL_RETRY_CONFIG = { + KVS_INFINITE_EXPONENTIAL_RETRIES, /* max retry count */ + 10000, /* max retry wait time milliseconds */ + 300, /* retry factor (base retry wait time milliseconds) */ + 25000, /* minimum time in milliseconds to reset retry state */ + 300 /* jitter factor milliseconds (jitter will be unused for FULL_JITTER variant of exponential backoff algorithm) */ +}; + // Public handle to and from object converters #define TO_SIGNALING_CLIENT_HANDLE(p) ((SIGNALING_CLIENT_HANDLE) (p)) #define FROM_SIGNALING_CLIENT_HANDLE(h) (IS_VALID_SIGNALING_CLIENT_HANDLE(h) ? (PSignalingClient) (h) : NULL) @@ -299,6 +310,10 @@ STATUS validateSignalingCallbacks(PSignalingClient, PSignalingClientCallbacks); STATUS validateSignalingClientInfo(PSignalingClient, PSignalingClientInfoInternal); STATUS validateIceConfiguration(PSignalingClient); +STATUS configureRetryStrategyForSignalingStateMachine(PSignalingClient); +STATUS setupDefaultKvsRetryStrategy(PSignalingClient); +STATUS freeClientRetryStrategy(PSignalingClient); + STATUS signalingStoreOngoingMessage(PSignalingClient, PSignalingMessage); STATUS signalingRemoveOngoingMessage(PSignalingClient, PCHAR); STATUS signalingGetOngoingMessage(PSignalingClient, PCHAR, PCHAR, PSignalingMessage*); diff --git a/src/source/Signaling/StateMachine.c b/src/source/Signaling/StateMachine.c index 29f14e9864..ad2d8cb95d 100644 --- a/src/source/Signaling/StateMachine.c +++ b/src/source/Signaling/StateMachine.c @@ -7,47 +7,157 @@ /** * Static definitions of the states */ +// /Users/akatey/kvs_git_workspace/amazon-kinesis-video-streams-webrtc-sdk-c/open-source/include/com/amazonaws/kinesis/video/state/Include.h StateMachineState SIGNALING_STATE_MACHINE_STATES[] = { - {SIGNALING_STATE_NEW, SIGNALING_STATE_NONE | SIGNALING_STATE_NEW, fromNewSignalingState, executeNewSignalingState, INFINITE_RETRY_COUNT_SENTINEL, - STATUS_SIGNALING_INVALID_READY_STATE}, - {SIGNALING_STATE_GET_TOKEN, - SIGNALING_STATE_NEW | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | - SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_GET_TOKEN, - fromGetTokenSignalingState, executeGetTokenSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_GET_TOKEN_CALL_FAILED}, - {SIGNALING_STATE_DESCRIBE, - SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_CONNECT | - SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_DESCRIBE, - fromDescribeSignalingState, executeDescribeSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_DESCRIBE_CALL_FAILED}, - {SIGNALING_STATE_CREATE, SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE, fromCreateSignalingState, executeCreateSignalingState, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_CREATE_CALL_FAILED}, - {SIGNALING_STATE_GET_ENDPOINT, - SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | - SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT, - fromGetEndpointSignalingState, executeGetEndpointSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED}, - {SIGNALING_STATE_GET_ICE_CONFIG, - SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_READY | - SIGNALING_STATE_GET_ICE_CONFIG, - fromGetIceConfigSignalingState, executeGetIceConfigSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED}, - {SIGNALING_STATE_READY, SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_READY, fromReadySignalingState, - executeReadySignalingState, INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_READY_CALLBACK_FAILED}, - {SIGNALING_STATE_CONNECT, SIGNALING_STATE_READY | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_CONNECT, - fromConnectSignalingState, executeConnectSignalingState, INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_CONNECT_CALL_FAILED}, - {SIGNALING_STATE_CONNECTED, SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, fromConnectedSignalingState, executeConnectedSignalingState, - INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_CONNECTED_CALLBACK_FAILED}, - {SIGNALING_STATE_DISCONNECTED, SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, fromDisconnectedSignalingState, - executeDisconnectedSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_DISCONNECTED_CALLBACK_FAILED}, - {SIGNALING_STATE_DELETE, - SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | - SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_DELETE, - fromDeleteSignalingState, executeDeleteSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_DELETE_CALL_FAILED}, - {SIGNALING_STATE_DELETED, SIGNALING_STATE_DELETE | SIGNALING_STATE_DELETED, fromDeletedSignalingState, executeDeletedSignalingState, - INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_DELETE_CALL_FAILED}, + { + SIGNALING_STATE_NEW, SIGNALING_STATE_NONE | SIGNALING_STATE_NEW, + fromNewSignalingState, + executeNewSignalingState, + defaultSignalingStateTransitionHook, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_SIGNALING_INVALID_READY_STATE + }, + { + SIGNALING_STATE_GET_TOKEN, + SIGNALING_STATE_NEW | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | + SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_GET_TOKEN, + fromGetTokenSignalingState, + executeGetTokenSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_GET_TOKEN_CALL_FAILED + }, + { + SIGNALING_STATE_DESCRIBE, + SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_CONNECT | + SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_DESCRIBE, + fromDescribeSignalingState, + executeDescribeSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_DESCRIBE_CALL_FAILED + }, + { + SIGNALING_STATE_CREATE, + SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE, + fromCreateSignalingState, + executeCreateSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_CREATE_CALL_FAILED + }, + { + SIGNALING_STATE_GET_ENDPOINT, + SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | + SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT, + fromGetEndpointSignalingState, + executeGetEndpointSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED + }, + { + SIGNALING_STATE_GET_ICE_CONFIG, + SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_READY | + SIGNALING_STATE_GET_ICE_CONFIG, + fromGetIceConfigSignalingState, + executeGetIceConfigSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED + }, + { + SIGNALING_STATE_READY, + SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_READY, + fromReadySignalingState, + executeReadySignalingState, + defaultSignalingStateTransitionHook, + INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_READY_CALLBACK_FAILED + }, + { + SIGNALING_STATE_CONNECT, + SIGNALING_STATE_READY | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_CONNECT, + fromConnectSignalingState, + executeConnectSignalingState, + defaultSignalingStateTransitionHook, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_SIGNALING_CONNECT_CALL_FAILED + }, + { + SIGNALING_STATE_CONNECTED, + SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, + fromConnectedSignalingState, + executeConnectedSignalingState, + defaultSignalingStateTransitionHook, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_SIGNALING_CONNECTED_CALLBACK_FAILED + }, + { + SIGNALING_STATE_DISCONNECTED, + SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, + fromDisconnectedSignalingState, + executeDisconnectedSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_DISCONNECTED_CALLBACK_FAILED + }, + { + SIGNALING_STATE_DELETE, + SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | + SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_DELETE, + fromDeleteSignalingState, + executeDeleteSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_DELETE_CALL_FAILED + }, + { + SIGNALING_STATE_DELETED, + SIGNALING_STATE_DELETE | SIGNALING_STATE_DELETED, + fromDeletedSignalingState, + executeDeletedSignalingState, + defaultSignalingStateTransitionHook, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_SIGNALING_DELETE_CALL_FAILED + }, }; UINT32 SIGNALING_STATE_MACHINE_STATE_COUNT = ARRAY_SIZE(SIGNALING_STATE_MACHINE_STATES); +STATUS defaultSignalingStateTransitionHook( + UINT64 customData /* customData should be PSignalingClient */, + PUINT64 stateTransitionWaitTime) { + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + PSignalingClient pSignalingClient = NULL; + PKvsRetryStrategy pKvsRetryStrategy = NULL; + UINT64 retryWaitTime = 0; + + pSignalingClient = SIGNALING_CLIENT_FROM_CUSTOM_DATA(customData); + CHK(pSignalingClient != NULL && stateTransitionWaitTime != NULL, STATUS_NULL_ARG); + + pKvsRetryStrategy = &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy); + + // result > SERVICE_CALL_RESULT_OK covers case for - + // result != SERVICE_CALL_RESULT_NOT_SET and != SERVICE_CALL_RESULT_OK + // If we support any other 2xx service call results, the condition + // should change to (pSignalingClient->result > 299 && ...) + CHK(pSignalingClient->result > SERVICE_CALL_RESULT_OK && + pKvsRetryStrategy != NULL && + pKvsRetryStrategy->pRetryStrategy != NULL && + pKvsRetryStrategy->executeRetryStrategyFn != NULL, STATUS_SUCCESS); + + DLOGD("Signaling Client base result is [%u]. Executing KVS retry handler of retry strategy type [%u]", + pSignalingClient->result, pKvsRetryStrategy->retryStrategyType); + pKvsRetryStrategy->executeRetryStrategyFn(pKvsRetryStrategy->pRetryStrategy, &retryWaitTime); + *stateTransitionWaitTime = retryWaitTime; + + CleanUp: + + LEAVES(); + return retStatus; +} + STATUS signalingStateMachineIterator(PSignalingClient pSignalingClient, UINT64 expiration, UINT64 finalState) { ENTERS(); diff --git a/src/source/Signaling/StateMachine.h b/src/source/Signaling/StateMachine.h index fea8300e66..e0b68eeaa6 100644 --- a/src/source/Signaling/StateMachine.h +++ b/src/source/Signaling/StateMachine.h @@ -13,19 +13,19 @@ extern "C" { /** * Signaling states definitions */ -#define SIGNALING_STATE_NONE ((UINT64) 0) -#define SIGNALING_STATE_NEW ((UINT64) (1 << 0)) -#define SIGNALING_STATE_GET_TOKEN ((UINT64) (1 << 1)) -#define SIGNALING_STATE_DESCRIBE ((UINT64) (1 << 2)) -#define SIGNALING_STATE_CREATE ((UINT64) (1 << 3)) -#define SIGNALING_STATE_GET_ENDPOINT ((UINT64) (1 << 4)) -#define SIGNALING_STATE_GET_ICE_CONFIG ((UINT64) (1 << 5)) -#define SIGNALING_STATE_READY ((UINT64) (1 << 6)) -#define SIGNALING_STATE_CONNECT ((UINT64) (1 << 7)) -#define SIGNALING_STATE_CONNECTED ((UINT64) (1 << 8)) -#define SIGNALING_STATE_DISCONNECTED ((UINT64) (1 << 9)) -#define SIGNALING_STATE_DELETE ((UINT64) (1 << 10)) -#define SIGNALING_STATE_DELETED ((UINT64) (1 << 11)) +#define SIGNALING_STATE_NONE ((UINT64) 0x00) +#define SIGNALING_STATE_NEW ((UINT64) 0x01) +#define SIGNALING_STATE_GET_TOKEN ((UINT64) 0x02) +#define SIGNALING_STATE_DESCRIBE ((UINT64) 0x03) +#define SIGNALING_STATE_CREATE ((UINT64) 0x04) +#define SIGNALING_STATE_GET_ENDPOINT ((UINT64) 0x05) +#define SIGNALING_STATE_GET_ICE_CONFIG ((UINT64) 0x06) +#define SIGNALING_STATE_READY ((UINT64) 0x07) +#define SIGNALING_STATE_CONNECT ((UINT64) 0x11) +#define SIGNALING_STATE_CONNECTED ((UINT64) 0x12) +#define SIGNALING_STATE_DISCONNECTED ((UINT64) 0x13) +#define SIGNALING_STATE_DELETE ((UINT64) 0x14) +#define SIGNALING_STATE_DELETED ((UINT64) 0x15) // Indicates infinite retries #define INFINITE_RETRY_COUNT_SENTINEL 0 @@ -64,6 +64,8 @@ STATUS executeDeleteSignalingState(UINT64, UINT64); STATUS fromDeletedSignalingState(UINT64, PUINT64); STATUS executeDeletedSignalingState(UINT64, UINT64); +STATUS defaultSignalingStateTransitionHook(UINT64, PUINT64); + #ifdef __cplusplus } #endif diff --git a/tst/SignalingApiFunctionalityTest.cpp b/tst/SignalingApiFunctionalityTest.cpp index fe5d4b3fa1..26f00d149e 100644 --- a/tst/SignalingApiFunctionalityTest.cpp +++ b/tst/SignalingApiFunctionalityTest.cpp @@ -213,6 +213,7 @@ TEST_F(SignalingApiFunctionalityTest, basicCreateConnectFree) clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -237,6 +238,7 @@ TEST_F(SignalingApiFunctionalityTest, basicCreateConnectFree) deleteChannelLws(FROM_SIGNALING_CLIENT_HANDLE(signalingHandle), 0); + EXPECT_EQ(STATUS_SUCCESS, freeTestSignalingClientRetryStrategy(clientInfo)); EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); } @@ -270,6 +272,7 @@ TEST_F(SignalingApiFunctionalityTest, mockMaster) clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -405,6 +408,7 @@ TEST_F(SignalingApiFunctionalityTest, mockViewer) clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; STRCPY(clientInfo.clientId, TEST_SIGNALING_VIEWER_CLIENT_ID); + EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -504,6 +508,7 @@ TEST_F(SignalingApiFunctionalityTest, invalidChannelInfoInput) STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; + EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -709,6 +714,7 @@ TEST_F(SignalingApiFunctionalityTest, invalidChannelInfoInput) clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; STRCPY(clientInfo.clientId, TEST_SIGNALING_VIEWER_CLIENT_ID); + EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2320,6 +2326,7 @@ TEST_F(SignalingApiFunctionalityTest, goAwayEmulation) clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2403,6 +2410,7 @@ TEST_F(SignalingApiFunctionalityTest, unknownMessageTypeEmulation) clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2991,6 +2999,8 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) SignalingClientInfoInternal clientInfoInternal; PSignalingClient pSignalingClient; SIGNALING_CLIENT_HANDLE signalingHandle; + PKvsRetryStrategy pKvsRetryStrategy; + PExponentialBackoffRetryStrategyState pExponentialBackoffRetryStrategyState; signalingClientCallbacks.version = SIGNALING_CLIENT_CALLBACKS_CURRENT_VERSION; signalingClientCallbacks.customData = (UINT64) this; @@ -3042,6 +3052,10 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) pActiveClient = pSignalingClient; + pKvsRetryStrategy = (PKvsRetryStrategy)&(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy); + CHECK(pKvsRetryStrategy != NULL); + EXPECT_EQ(KVS_RETRY_STRATEGY_EXPONENTIAL_BACKOFF_WAIT, pKvsRetryStrategy->retryStrategyType); + // Check the states first EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); @@ -3106,6 +3120,9 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) EXPECT_EQ(4, describeCount); EXPECT_EQ(3, getEndpointCount); + pExponentialBackoffRetryStrategyState = TO_EXPONENTIAL_BACKOFF_STATE(pKvsRetryStrategy->pRetryStrategy); + EXPECT_EQ(79, pExponentialBackoffRetryStrategyState->currentRetryCount); + EXPECT_EQ(STATUS_SUCCESS, signalingClientDisconnectSync(signalingHandle)); deleteChannelLws(FROM_SIGNALING_CLIENT_HANDLE(signalingHandle), 0); diff --git a/tst/WebRTCClientTestFixture.h b/tst/WebRTCClientTestFixture.h index b92bb11208..4109db2089 100644 --- a/tst/WebRTCClientTestFixture.h +++ b/tst/WebRTCClientTestFixture.h @@ -85,8 +85,10 @@ class WebRtcClientTestBase : public ::testing::Test { mClientInfo.loggingLevel = LOG_LEVEL_VERBOSE; mClientInfo.cacheFilePath = NULL; // Use the default path STRCPY(mClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupTestSignalingClientRetryStrategy(mClientInfo); MEMSET(&mChannelInfo, 0x00, SIZEOF(mChannelInfo)); + setupTestSignalingClientRetryStrategy(mClientInfo); mChannelInfo.version = CHANNEL_INFO_CURRENT_VERSION; mChannelInfo.pChannelName = mChannelName; mChannelInfo.pKmsKeyId = NULL; @@ -105,6 +107,37 @@ class WebRtcClientTestBase : public ::testing::Test { } } + STATUS setupTestSignalingClientRetryStrategy(SignalingClientInfo& mClientInfo) { + STATUS retStatus; + + mClientInfo.signalingClientCreationMaxRetryCount = 1; + mClientInfo.signalingClientRetryStrategy.retryStrategyType = KVS_RETRY_STRATEGY_EXPONENTIAL_BACKOFF_WAIT; + mClientInfo.signalingClientRetryStrategy.createRetryStrategyFn = exponentialBackoffRetryStrategyCreate; + mClientInfo.signalingClientRetryStrategy.freeRetryStrategyFn = exponentialBackoffRetryStrategyFree; + mClientInfo.signalingClientRetryStrategy.executeRetryStrategyFn = getExponentialBackoffRetryStrategyWaitTime; + + PRetryStrategy pRetryStrategy = NULL; + retStatus = mClientInfo.signalingClientRetryStrategy.createRetryStrategyFn(NULL, &pRetryStrategy); + if (retStatus != STATUS_SUCCESS) { + return retStatus; + } + + mClientInfo.signalingClientRetryStrategy.pRetryStrategy = pRetryStrategy; + PExponentialBackoffRetryStrategyState pExponentialBackoffRetryStrategyState = TO_EXPONENTIAL_BACKOFF_STATE(pRetryStrategy); + // Change retry wait time factor time from default to 20ms + pExponentialBackoffRetryStrategyState->exponentialBackoffRetryStrategyConfig.retryFactorTime = HUNDREDS_OF_NANOS_IN_A_MILLISECOND * 20; + // Change max retry wait time from default to 100ms + pExponentialBackoffRetryStrategyState->exponentialBackoffRetryStrategyConfig.maxRetryWaitTime = HUNDREDS_OF_NANOS_IN_A_MILLISECOND * 100; + // Change default jitter from default to 2 + pExponentialBackoffRetryStrategyState->exponentialBackoffRetryStrategyConfig.jitterFactor = 2; + + return STATUS_SUCCESS; + } + + STATUS freeTestSignalingClientRetryStrategy(SignalingClientInfo& mClientInfo) { + return mClientInfo.signalingClientRetryStrategy.freeRetryStrategyFn(&(mClientInfo.signalingClientRetryStrategy.pRetryStrategy)); + } + STATUS initializeSignalingClient(PAwsCredentialProvider pCredentialProvider = NULL) { STATUS retStatus; @@ -130,7 +163,7 @@ class WebRtcClientTestBase : public ::testing::Test { if (mAccessKeyIdSet) { deleteChannelLws(FROM_SIGNALING_CLIENT_HANDLE(mSignalingClientHandle), 0); } - + EXPECT_EQ(STATUS_SUCCESS, freeTestSignalingClientRetryStrategy(mClientInfo)); EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&mSignalingClientHandle)); return STATUS_SUCCESS; From 99583a9a1eb5ce28c85b8e72d8b649b1524fb846 Mon Sep 17 00:00:00 2001 From: Hassan Sahibzada Date: Thu, 2 Dec 2021 14:08:21 -0500 Subject: [PATCH 021/102] Revert " Incorporating PIC state machine level retry changes into webrtc signaling state machine (#1326)" (#1339) This reverts commit 06bffcecd7f60571e29e51eb15fa8e4549638213. --- .../libkvsCommonLws-CMakeLists.txt | 2 +- samples/Common.c | 30 --- samples/Samples.h | 1 - .../kinesis/video/webrtcclient/Include.h | 25 +-- src/source/Signaling/Client.c | 47 +---- src/source/Signaling/Signaling.c | 54 +----- src/source/Signaling/Signaling.h | 15 -- src/source/Signaling/StateMachine.c | 182 ++++-------------- src/source/Signaling/StateMachine.h | 28 ++- tst/SignalingApiFunctionalityTest.cpp | 17 -- tst/WebRTCClientTestFixture.h | 35 +--- 11 files changed, 64 insertions(+), 372 deletions(-) diff --git a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt index 1f67ea517d..0e1f5a1196 100644 --- a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt +++ b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt @@ -6,7 +6,7 @@ include(ExternalProject) ExternalProject_Add(libkvsCommonLws-download GIT_REPOSITORY https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git - GIT_TAG 9a995a5793b4024f19912be9a319993b1e16005c + GIT_TAG 99c1a8cd8cec88f99c9c4ce3944b53ae341d1491 PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} diff --git a/samples/Common.c b/samples/Common.c index ae636027da..e5fa72952b 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -697,29 +697,6 @@ STATUS lookForSslCert(PSampleConfiguration* ppSampleConfiguration) return retStatus; } -STATUS setupDefaultSignalingClientRetryStrategy(PSignalingClientInfo pSignalingClientInfo) -{ - ENTERS(); - STATUS retStatus = STATUS_SUCCESS; - PRetryStrategy pRetryStrategy = NULL; - - CHK(pSignalingClientInfo != NULL, STATUS_NULL_ARG); - - pSignalingClientInfo->signalingClientRetryStrategy.retryStrategyType = KVS_RETRY_STRATEGY_EXPONENTIAL_BACKOFF_WAIT; - pSignalingClientInfo->signalingClientRetryStrategy.createRetryStrategyFn = exponentialBackoffRetryStrategyCreate; - pSignalingClientInfo->signalingClientRetryStrategy.freeRetryStrategyFn = exponentialBackoffRetryStrategyFree; - pSignalingClientInfo->signalingClientRetryStrategy.executeRetryStrategyFn = getExponentialBackoffRetryStrategyWaitTime; - - CHK_STATUS(pSignalingClientInfo->signalingClientRetryStrategy.createRetryStrategyFn(NULL /* use default config */, &pRetryStrategy)); - pSignalingClientInfo->signalingClientRetryStrategy.pRetryStrategy = pRetryStrategy; - - pSignalingClientInfo->signalingClientCreationMaxRetryCount = MAX_CREATE_SIGNALING_CLIENT_RETRIES; - -CleanUp: - LEAVES(); - return retStatus; -} - STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE roleType, BOOL trickleIce, BOOL useTurn, PSampleConfiguration* ppSampleConfiguration) { @@ -805,8 +782,6 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE pSampleConfiguration->clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; pSampleConfiguration->clientInfo.loggingLevel = logLevel; pSampleConfiguration->clientInfo.cacheFilePath = NULL; // Use the default path - CHK_STATUS(setupDefaultSignalingClientRetryStrategy(&pSampleConfiguration->clientInfo)); - pSampleConfiguration->iceCandidatePairStatsTimerId = MAX_UINT32; pSampleConfiguration->pregenerateCertTimerId = MAX_UINT32; @@ -1088,11 +1063,6 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) SAFE_MEMFREE(pSampleConfiguration->pVideoFrameBuffer); SAFE_MEMFREE(pSampleConfiguration->pAudioFrameBuffer); - if (pSampleConfiguration->clientInfo.signalingClientRetryStrategy.freeRetryStrategyFn != NULL) { - CHK_STATUS(pSampleConfiguration->clientInfo.signalingClientRetryStrategy.freeRetryStrategyFn( - &(pSampleConfiguration->clientInfo.signalingClientRetryStrategy.pRetryStrategy))); - } - if (IS_VALID_CVAR_VALUE(pSampleConfiguration->cvar) && IS_VALID_MUTEX_VALUE(pSampleConfiguration->sampleConfigurationObjLock)) { CVAR_BROADCAST(pSampleConfiguration->cvar); MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); diff --git a/samples/Samples.h b/samples/Samples.h index 8e50d295dc..6b721a8d6f 100644 --- a/samples/Samples.h +++ b/samples/Samples.h @@ -39,7 +39,6 @@ extern "C" { #define SAMPLE_HASH_TABLE_BUCKET_COUNT 50 #define SAMPLE_HASH_TABLE_BUCKET_LENGTH 2 -#define MAX_CREATE_SIGNALING_CLIENT_RETRIES 3 #define IOT_CORE_CREDENTIAL_ENDPOINT ((PCHAR) "AWS_IOT_CORE_CREDENTIAL_ENDPOINT") #define IOT_CORE_CERT ((PCHAR) "AWS_IOT_CORE_CERT") diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 2be2eed2ea..88f4f80498 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -660,9 +660,6 @@ extern "C" { typedef UINT64 SIGNALING_CLIENT_HANDLE; typedef SIGNALING_CLIENT_HANDLE* PSIGNALING_CLIENT_HANDLE; -typedef KvsRetryStrategy SignalingClientRetryStrategy; -typedef PKvsRetryStrategy PSignalingClientRetryStrategy; - /** * @brief This is a sentinel indicating an invalid handle value */ @@ -1180,18 +1177,16 @@ typedef struct { * @brief Populate Signaling client with client ID and application log level */ typedef struct { - UINT32 version; //!< Version of the structure - CHAR clientId[MAX_SIGNALING_CLIENT_ID_LEN + 1]; //!< Client id to use. Defines if the client is a producer/consumer - UINT32 loggingLevel; //!< Verbosity level for the logging. One of LOG_LEVEL_XXX - //!< values or the default verbosity will be assumed. Currently, - //!< default value is LOG_LEVEL_WARNING - PCHAR cacheFilePath; //!< File cache path override. The default - //!< path is "./.SignalingCache_vN" which might not work for - //!< devices which have read only partition where the code is - //!< located. For default value or when file caching is not - //!< being used this value can be NULL or point to an EMPTY_STRING. - SignalingClientRetryStrategy signalingClientRetryStrategy; //!< Retry strategy used while creating signaling client - UINT32 signalingClientCreationMaxRetryCount; //!< Maximum attempts which createSignalingClientSync API will make on failures to create signaling client + UINT32 version; //!< Version of the structure + CHAR clientId[MAX_SIGNALING_CLIENT_ID_LEN + 1]; //!< Client id to use. Defines if the client is a producer/consumer + UINT32 loggingLevel; //!< Verbosity level for the logging. One of LOG_LEVEL_XXX + //!< values or the default verbosity will be assumed. Currently, + //!< default value is LOG_LEVEL_WARNING + PCHAR cacheFilePath; //!< File cache path override. The default + //!< path is "./.SignalingCache_vN" which might not work for + //!< devices which have read only partition where the code is + //!< located. For default value or when file caching is not + //!< being used this value can be NULL or point to an EMPTY_STRING. } SignalingClientInfo, *PSignalingClientInfo; /** diff --git a/src/source/Signaling/Client.c b/src/source/Signaling/Client.c index 870d846eb3..98966bc294 100644 --- a/src/source/Signaling/Client.c +++ b/src/source/Signaling/Client.c @@ -1,37 +1,13 @@ #define LOG_CLASS "SignalingClient" #include "../Include_i.h" -STATUS validateSignalingClientRetryStrategy(PSignalingClientInfo pClientInfo) { - ENTERS(); - STATUS retStatus = STATUS_SUCCESS; - PSignalingClientRetryStrategy pSignalingClientRetryStrategy; - - CHK(pClientInfo != NULL, STATUS_NULL_ARG); - - pSignalingClientRetryStrategy = &(pClientInfo->signalingClientRetryStrategy); - - CHK(pSignalingClientRetryStrategy->retryStrategyType > KVS_RETRY_STRATEGY_DISABLED && - pSignalingClientRetryStrategy->pRetryStrategy != NULL && - pSignalingClientRetryStrategy->executeRetryStrategyFn != NULL, STATUS_NULL_ARG); - - CHK(pClientInfo->signalingClientCreationMaxRetryCount > 0, STATUS_NOT_IMPLEMENTED); - -CleanUp: - - LEAVES(); - return retStatus; -} - STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo pChannelInfo, PSignalingClientCallbacks pCallbacks, PAwsCredentialProvider pCredentialProvider, PSIGNALING_CLIENT_HANDLE pSignalingHandle) { ENTERS(); STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = NULL; - PSignalingClientRetryStrategy pSignalingClientRetryStrategy = NULL; SignalingClientInfoInternal signalingClientInfoInternal; - UINT32 signalingClientCreationMaxRetryCount; - UINT64 signalingClientCreationWaitTime; DLOGV("Creating Signaling Client Sync"); CHK(pSignalingHandle != NULL && pClientInfo != NULL, STATUS_NULL_ARG); @@ -40,28 +16,7 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo MEMSET(&signalingClientInfoInternal, 0x00, SIZEOF(signalingClientInfoInternal)); signalingClientInfoInternal.signalingClientInfo = *pClientInfo; - CHK_STATUS(validateSignalingClientRetryStrategy(pClientInfo)); - - signalingClientCreationMaxRetryCount = pClientInfo->signalingClientCreationMaxRetryCount; - pSignalingClientRetryStrategy = &(pClientInfo->signalingClientRetryStrategy); - - while (signalingClientCreationMaxRetryCount > 0) { - // Wait before cresting signaling client to ensure the first call from a large - // client fleet will be spread across the wait time window. - CHK_STATUS(pSignalingClientRetryStrategy->executeRetryStrategyFn(pSignalingClientRetryStrategy->pRetryStrategy, &signalingClientCreationWaitTime)); - DLOGV("Attempting to back off for [%lf] milliseconds before creating signaling client. Signaling client creation retry count [%d]", - signalingClientCreationWaitTime/1000.0, signalingClientCreationMaxRetryCount); - THREAD_SLEEP(signalingClientCreationWaitTime); - - retStatus = createSignalingSync(&signalingClientInfoInternal, pChannelInfo, pCallbacks, pCredentialProvider, &pSignalingClient); - if (retStatus == STATUS_SUCCESS) { - break; - } - signalingClientCreationMaxRetryCount--; - } - - DLOGV("Create signaling client returned [%" PRId64 "].", retStatus); - CHK_STATUS(retStatus); + CHK_STATUS(createSignalingSync(&signalingClientInfoInternal, pChannelInfo, pCallbacks, pCredentialProvider, &pSignalingClient)); *pSignalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index 21f1d7d804..8cf2786b0e 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -37,8 +37,9 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf CHK_STATUS(validateSignalingCallbacks(pSignalingClient, pCallbacks)); CHK_STATUS(validateSignalingClientInfo(pSignalingClient, pClientInfo)); - // Set invalid call times pSignalingClient->version = SIGNALING_CLIENT_CURRENT_VERSION; + + // Set invalid call times pSignalingClient->describeTime = INVALID_TIMESTAMP_VALUE; pSignalingClient->createTime = INVALID_TIMESTAMP_VALUE; pSignalingClient->getEndpointTime = INVALID_TIMESTAMP_VALUE; @@ -73,9 +74,6 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf // Store the credential provider pSignalingClient->pCredentialProvider = pCredentialProvider; - // Configure retry strategy for retries on error within signaling state machine - CHK_STATUS(configureRetryStrategyForSignalingStateMachine(pSignalingClient)); - // Create the state machine CHK_STATUS(createStateMachine(SIGNALING_STATE_MACHINE_STATES, SIGNALING_STATE_MACHINE_STATE_COUNT, CUSTOM_DATA_FROM_SIGNALING_CLIENT(pSignalingClient), signalingGetCurrentTime, @@ -207,8 +205,6 @@ STATUS freeSignaling(PSignalingClient* ppSignalingClient) MUTEX_UNLOCK(pSignalingClient->lwsServiceLock); } - freeClientRetryStrategy(pSignalingClient); - freeStateMachine(pSignalingClient->pStateMachine); freeChannelInfo(&pSignalingClient->pChannelInfo); @@ -520,52 +516,6 @@ STATUS validateSignalingClientInfo(PSignalingClient pSignalingClient, PSignaling return retStatus; } -STATUS configureRetryStrategyForSignalingStateMachine(PSignalingClient pSignalingClient) { - ENTERS(); - PRetryStrategy pRetryStrategy = NULL; - STATUS retStatus = STATUS_SUCCESS; - KVS_RETRY_STRATEGY_TYPE defaultKvsRetryStrategyType = KVS_RETRY_STRATEGY_EXPONENTIAL_BACKOFF_WAIT; - - CHK(pSignalingClient != NULL, STATUS_NULL_ARG); - pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.retryStrategyType = KVS_RETRY_STRATEGY_EXPONENTIAL_BACKOFF_WAIT; - pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.createRetryStrategyFn = exponentialBackoffRetryStrategyCreate; - pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.freeRetryStrategyFn = exponentialBackoffRetryStrategyFree; - pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.executeRetryStrategyFn = getExponentialBackoffRetryStrategyWaitTime; - - CHK_STATUS(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.createRetryStrategyFn( - NULL, &pRetryStrategy)); - - if (pRetryStrategy == NULL) { - DLOGD("Unable to create exponential backoff retry strategy. This should not happen."); - } - - CHK(pRetryStrategy != NULL, STATUS_INTERNAL_ERROR); - pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.pRetryStrategy = pRetryStrategy; - - CleanUp: - - LEAVES(); - return retStatus; -} - -STATUS freeClientRetryStrategy(PSignalingClient pSignalingClient) { - ENTERS(); - STATUS retStatus = STATUS_SUCCESS; - - CHK(pSignalingClient != NULL && - pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.freeRetryStrategyFn != NULL, STATUS_SUCCESS); - - CHK_STATUS(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.freeRetryStrategyFn( - &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.pRetryStrategy))); - - pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.pRetryStrategy = NULL; - - CleanUp: - - LEAVES(); - return retStatus; -} - STATUS validateIceConfiguration(PSignalingClient pSignalingClient) { ENTERS(); diff --git a/src/source/Signaling/Signaling.h b/src/source/Signaling/Signaling.h index c3957f81ff..b404d36687 100644 --- a/src/source/Signaling/Signaling.h +++ b/src/source/Signaling/Signaling.h @@ -107,9 +107,6 @@ typedef struct { SignalingApiCallHookFunc connectPostHookFn; SignalingApiCallHookFunc deletePreHookFn; SignalingApiCallHookFunc deletePostHookFn; - - // Retry strategy for signaling state machine - KvsRetryStrategy signalingStateMachineRetryStrategy; } SignalingClientInfoInternal, *PSignalingClientInfoInternal; /** @@ -284,14 +281,6 @@ typedef struct { UINT64 connectTime; } SignalingClient, *PSignalingClient; -static const ExponentialBackoffRetryStrategyConfig DEFAULT_SIGNALING_STATE_MACHINE_EXPONENTIAL_RETRY_CONFIG = { - KVS_INFINITE_EXPONENTIAL_RETRIES, /* max retry count */ - 10000, /* max retry wait time milliseconds */ - 300, /* retry factor (base retry wait time milliseconds) */ - 25000, /* minimum time in milliseconds to reset retry state */ - 300 /* jitter factor milliseconds (jitter will be unused for FULL_JITTER variant of exponential backoff algorithm) */ -}; - // Public handle to and from object converters #define TO_SIGNALING_CLIENT_HANDLE(p) ((SIGNALING_CLIENT_HANDLE) (p)) #define FROM_SIGNALING_CLIENT_HANDLE(h) (IS_VALID_SIGNALING_CLIENT_HANDLE(h) ? (PSignalingClient) (h) : NULL) @@ -310,10 +299,6 @@ STATUS validateSignalingCallbacks(PSignalingClient, PSignalingClientCallbacks); STATUS validateSignalingClientInfo(PSignalingClient, PSignalingClientInfoInternal); STATUS validateIceConfiguration(PSignalingClient); -STATUS configureRetryStrategyForSignalingStateMachine(PSignalingClient); -STATUS setupDefaultKvsRetryStrategy(PSignalingClient); -STATUS freeClientRetryStrategy(PSignalingClient); - STATUS signalingStoreOngoingMessage(PSignalingClient, PSignalingMessage); STATUS signalingRemoveOngoingMessage(PSignalingClient, PCHAR); STATUS signalingGetOngoingMessage(PSignalingClient, PCHAR, PCHAR, PSignalingMessage*); diff --git a/src/source/Signaling/StateMachine.c b/src/source/Signaling/StateMachine.c index ad2d8cb95d..29f14e9864 100644 --- a/src/source/Signaling/StateMachine.c +++ b/src/source/Signaling/StateMachine.c @@ -7,157 +7,47 @@ /** * Static definitions of the states */ -// /Users/akatey/kvs_git_workspace/amazon-kinesis-video-streams-webrtc-sdk-c/open-source/include/com/amazonaws/kinesis/video/state/Include.h StateMachineState SIGNALING_STATE_MACHINE_STATES[] = { - { - SIGNALING_STATE_NEW, SIGNALING_STATE_NONE | SIGNALING_STATE_NEW, - fromNewSignalingState, - executeNewSignalingState, - defaultSignalingStateTransitionHook, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_SIGNALING_INVALID_READY_STATE - }, - { - SIGNALING_STATE_GET_TOKEN, - SIGNALING_STATE_NEW | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | - SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_GET_TOKEN, - fromGetTokenSignalingState, - executeGetTokenSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_GET_TOKEN_CALL_FAILED - }, - { - SIGNALING_STATE_DESCRIBE, - SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_CONNECT | - SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_DESCRIBE, - fromDescribeSignalingState, - executeDescribeSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_DESCRIBE_CALL_FAILED - }, - { - SIGNALING_STATE_CREATE, - SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE, - fromCreateSignalingState, - executeCreateSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_CREATE_CALL_FAILED - }, - { - SIGNALING_STATE_GET_ENDPOINT, - SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | - SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT, - fromGetEndpointSignalingState, - executeGetEndpointSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED - }, - { - SIGNALING_STATE_GET_ICE_CONFIG, - SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_READY | - SIGNALING_STATE_GET_ICE_CONFIG, - fromGetIceConfigSignalingState, - executeGetIceConfigSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED - }, - { - SIGNALING_STATE_READY, - SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_READY, - fromReadySignalingState, - executeReadySignalingState, - defaultSignalingStateTransitionHook, - INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_READY_CALLBACK_FAILED - }, - { - SIGNALING_STATE_CONNECT, - SIGNALING_STATE_READY | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_CONNECT, - fromConnectSignalingState, - executeConnectSignalingState, - defaultSignalingStateTransitionHook, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_SIGNALING_CONNECT_CALL_FAILED - }, - { - SIGNALING_STATE_CONNECTED, - SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, - fromConnectedSignalingState, - executeConnectedSignalingState, - defaultSignalingStateTransitionHook, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_SIGNALING_CONNECTED_CALLBACK_FAILED - }, - { - SIGNALING_STATE_DISCONNECTED, - SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, - fromDisconnectedSignalingState, - executeDisconnectedSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_DISCONNECTED_CALLBACK_FAILED - }, - { - SIGNALING_STATE_DELETE, - SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | - SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_DELETE, - fromDeleteSignalingState, - executeDeleteSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_DELETE_CALL_FAILED - }, - { - SIGNALING_STATE_DELETED, - SIGNALING_STATE_DELETE | SIGNALING_STATE_DELETED, - fromDeletedSignalingState, - executeDeletedSignalingState, - defaultSignalingStateTransitionHook, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_SIGNALING_DELETE_CALL_FAILED - }, + {SIGNALING_STATE_NEW, SIGNALING_STATE_NONE | SIGNALING_STATE_NEW, fromNewSignalingState, executeNewSignalingState, INFINITE_RETRY_COUNT_SENTINEL, + STATUS_SIGNALING_INVALID_READY_STATE}, + {SIGNALING_STATE_GET_TOKEN, + SIGNALING_STATE_NEW | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | + SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_GET_TOKEN, + fromGetTokenSignalingState, executeGetTokenSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_GET_TOKEN_CALL_FAILED}, + {SIGNALING_STATE_DESCRIBE, + SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_CONNECT | + SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_DESCRIBE, + fromDescribeSignalingState, executeDescribeSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_DESCRIBE_CALL_FAILED}, + {SIGNALING_STATE_CREATE, SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE, fromCreateSignalingState, executeCreateSignalingState, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_CREATE_CALL_FAILED}, + {SIGNALING_STATE_GET_ENDPOINT, + SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | + SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT, + fromGetEndpointSignalingState, executeGetEndpointSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED}, + {SIGNALING_STATE_GET_ICE_CONFIG, + SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_READY | + SIGNALING_STATE_GET_ICE_CONFIG, + fromGetIceConfigSignalingState, executeGetIceConfigSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED}, + {SIGNALING_STATE_READY, SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_READY, fromReadySignalingState, + executeReadySignalingState, INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_READY_CALLBACK_FAILED}, + {SIGNALING_STATE_CONNECT, SIGNALING_STATE_READY | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_CONNECT, + fromConnectSignalingState, executeConnectSignalingState, INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_CONNECT_CALL_FAILED}, + {SIGNALING_STATE_CONNECTED, SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, fromConnectedSignalingState, executeConnectedSignalingState, + INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_CONNECTED_CALLBACK_FAILED}, + {SIGNALING_STATE_DISCONNECTED, SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, fromDisconnectedSignalingState, + executeDisconnectedSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_DISCONNECTED_CALLBACK_FAILED}, + {SIGNALING_STATE_DELETE, + SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | + SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_DELETE, + fromDeleteSignalingState, executeDeleteSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_DELETE_CALL_FAILED}, + {SIGNALING_STATE_DELETED, SIGNALING_STATE_DELETE | SIGNALING_STATE_DELETED, fromDeletedSignalingState, executeDeletedSignalingState, + INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_DELETE_CALL_FAILED}, }; UINT32 SIGNALING_STATE_MACHINE_STATE_COUNT = ARRAY_SIZE(SIGNALING_STATE_MACHINE_STATES); -STATUS defaultSignalingStateTransitionHook( - UINT64 customData /* customData should be PSignalingClient */, - PUINT64 stateTransitionWaitTime) { - ENTERS(); - STATUS retStatus = STATUS_SUCCESS; - PSignalingClient pSignalingClient = NULL; - PKvsRetryStrategy pKvsRetryStrategy = NULL; - UINT64 retryWaitTime = 0; - - pSignalingClient = SIGNALING_CLIENT_FROM_CUSTOM_DATA(customData); - CHK(pSignalingClient != NULL && stateTransitionWaitTime != NULL, STATUS_NULL_ARG); - - pKvsRetryStrategy = &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy); - - // result > SERVICE_CALL_RESULT_OK covers case for - - // result != SERVICE_CALL_RESULT_NOT_SET and != SERVICE_CALL_RESULT_OK - // If we support any other 2xx service call results, the condition - // should change to (pSignalingClient->result > 299 && ...) - CHK(pSignalingClient->result > SERVICE_CALL_RESULT_OK && - pKvsRetryStrategy != NULL && - pKvsRetryStrategy->pRetryStrategy != NULL && - pKvsRetryStrategy->executeRetryStrategyFn != NULL, STATUS_SUCCESS); - - DLOGD("Signaling Client base result is [%u]. Executing KVS retry handler of retry strategy type [%u]", - pSignalingClient->result, pKvsRetryStrategy->retryStrategyType); - pKvsRetryStrategy->executeRetryStrategyFn(pKvsRetryStrategy->pRetryStrategy, &retryWaitTime); - *stateTransitionWaitTime = retryWaitTime; - - CleanUp: - - LEAVES(); - return retStatus; -} - STATUS signalingStateMachineIterator(PSignalingClient pSignalingClient, UINT64 expiration, UINT64 finalState) { ENTERS(); diff --git a/src/source/Signaling/StateMachine.h b/src/source/Signaling/StateMachine.h index e0b68eeaa6..fea8300e66 100644 --- a/src/source/Signaling/StateMachine.h +++ b/src/source/Signaling/StateMachine.h @@ -13,19 +13,19 @@ extern "C" { /** * Signaling states definitions */ -#define SIGNALING_STATE_NONE ((UINT64) 0x00) -#define SIGNALING_STATE_NEW ((UINT64) 0x01) -#define SIGNALING_STATE_GET_TOKEN ((UINT64) 0x02) -#define SIGNALING_STATE_DESCRIBE ((UINT64) 0x03) -#define SIGNALING_STATE_CREATE ((UINT64) 0x04) -#define SIGNALING_STATE_GET_ENDPOINT ((UINT64) 0x05) -#define SIGNALING_STATE_GET_ICE_CONFIG ((UINT64) 0x06) -#define SIGNALING_STATE_READY ((UINT64) 0x07) -#define SIGNALING_STATE_CONNECT ((UINT64) 0x11) -#define SIGNALING_STATE_CONNECTED ((UINT64) 0x12) -#define SIGNALING_STATE_DISCONNECTED ((UINT64) 0x13) -#define SIGNALING_STATE_DELETE ((UINT64) 0x14) -#define SIGNALING_STATE_DELETED ((UINT64) 0x15) +#define SIGNALING_STATE_NONE ((UINT64) 0) +#define SIGNALING_STATE_NEW ((UINT64) (1 << 0)) +#define SIGNALING_STATE_GET_TOKEN ((UINT64) (1 << 1)) +#define SIGNALING_STATE_DESCRIBE ((UINT64) (1 << 2)) +#define SIGNALING_STATE_CREATE ((UINT64) (1 << 3)) +#define SIGNALING_STATE_GET_ENDPOINT ((UINT64) (1 << 4)) +#define SIGNALING_STATE_GET_ICE_CONFIG ((UINT64) (1 << 5)) +#define SIGNALING_STATE_READY ((UINT64) (1 << 6)) +#define SIGNALING_STATE_CONNECT ((UINT64) (1 << 7)) +#define SIGNALING_STATE_CONNECTED ((UINT64) (1 << 8)) +#define SIGNALING_STATE_DISCONNECTED ((UINT64) (1 << 9)) +#define SIGNALING_STATE_DELETE ((UINT64) (1 << 10)) +#define SIGNALING_STATE_DELETED ((UINT64) (1 << 11)) // Indicates infinite retries #define INFINITE_RETRY_COUNT_SENTINEL 0 @@ -64,8 +64,6 @@ STATUS executeDeleteSignalingState(UINT64, UINT64); STATUS fromDeletedSignalingState(UINT64, PUINT64); STATUS executeDeletedSignalingState(UINT64, UINT64); -STATUS defaultSignalingStateTransitionHook(UINT64, PUINT64); - #ifdef __cplusplus } #endif diff --git a/tst/SignalingApiFunctionalityTest.cpp b/tst/SignalingApiFunctionalityTest.cpp index 26f00d149e..fe5d4b3fa1 100644 --- a/tst/SignalingApiFunctionalityTest.cpp +++ b/tst/SignalingApiFunctionalityTest.cpp @@ -213,7 +213,6 @@ TEST_F(SignalingApiFunctionalityTest, basicCreateConnectFree) clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); - EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -238,7 +237,6 @@ TEST_F(SignalingApiFunctionalityTest, basicCreateConnectFree) deleteChannelLws(FROM_SIGNALING_CLIENT_HANDLE(signalingHandle), 0); - EXPECT_EQ(STATUS_SUCCESS, freeTestSignalingClientRetryStrategy(clientInfo)); EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); } @@ -272,7 +270,6 @@ TEST_F(SignalingApiFunctionalityTest, mockMaster) clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); - EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -408,7 +405,6 @@ TEST_F(SignalingApiFunctionalityTest, mockViewer) clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; STRCPY(clientInfo.clientId, TEST_SIGNALING_VIEWER_CLIENT_ID); - EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -508,7 +504,6 @@ TEST_F(SignalingApiFunctionalityTest, invalidChannelInfoInput) STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; - EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -714,7 +709,6 @@ TEST_F(SignalingApiFunctionalityTest, invalidChannelInfoInput) clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; STRCPY(clientInfo.clientId, TEST_SIGNALING_VIEWER_CLIENT_ID); - EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2326,7 +2320,6 @@ TEST_F(SignalingApiFunctionalityTest, goAwayEmulation) clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); - EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2410,7 +2403,6 @@ TEST_F(SignalingApiFunctionalityTest, unknownMessageTypeEmulation) clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); - EXPECT_EQ(STATUS_SUCCESS, setupTestSignalingClientRetryStrategy(clientInfo)); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2999,8 +2991,6 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) SignalingClientInfoInternal clientInfoInternal; PSignalingClient pSignalingClient; SIGNALING_CLIENT_HANDLE signalingHandle; - PKvsRetryStrategy pKvsRetryStrategy; - PExponentialBackoffRetryStrategyState pExponentialBackoffRetryStrategyState; signalingClientCallbacks.version = SIGNALING_CLIENT_CALLBACKS_CURRENT_VERSION; signalingClientCallbacks.customData = (UINT64) this; @@ -3052,10 +3042,6 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) pActiveClient = pSignalingClient; - pKvsRetryStrategy = (PKvsRetryStrategy)&(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy); - CHECK(pKvsRetryStrategy != NULL); - EXPECT_EQ(KVS_RETRY_STRATEGY_EXPONENTIAL_BACKOFF_WAIT, pKvsRetryStrategy->retryStrategyType); - // Check the states first EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); @@ -3120,9 +3106,6 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) EXPECT_EQ(4, describeCount); EXPECT_EQ(3, getEndpointCount); - pExponentialBackoffRetryStrategyState = TO_EXPONENTIAL_BACKOFF_STATE(pKvsRetryStrategy->pRetryStrategy); - EXPECT_EQ(79, pExponentialBackoffRetryStrategyState->currentRetryCount); - EXPECT_EQ(STATUS_SUCCESS, signalingClientDisconnectSync(signalingHandle)); deleteChannelLws(FROM_SIGNALING_CLIENT_HANDLE(signalingHandle), 0); diff --git a/tst/WebRTCClientTestFixture.h b/tst/WebRTCClientTestFixture.h index 4109db2089..b92bb11208 100644 --- a/tst/WebRTCClientTestFixture.h +++ b/tst/WebRTCClientTestFixture.h @@ -85,10 +85,8 @@ class WebRtcClientTestBase : public ::testing::Test { mClientInfo.loggingLevel = LOG_LEVEL_VERBOSE; mClientInfo.cacheFilePath = NULL; // Use the default path STRCPY(mClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); - setupTestSignalingClientRetryStrategy(mClientInfo); MEMSET(&mChannelInfo, 0x00, SIZEOF(mChannelInfo)); - setupTestSignalingClientRetryStrategy(mClientInfo); mChannelInfo.version = CHANNEL_INFO_CURRENT_VERSION; mChannelInfo.pChannelName = mChannelName; mChannelInfo.pKmsKeyId = NULL; @@ -107,37 +105,6 @@ class WebRtcClientTestBase : public ::testing::Test { } } - STATUS setupTestSignalingClientRetryStrategy(SignalingClientInfo& mClientInfo) { - STATUS retStatus; - - mClientInfo.signalingClientCreationMaxRetryCount = 1; - mClientInfo.signalingClientRetryStrategy.retryStrategyType = KVS_RETRY_STRATEGY_EXPONENTIAL_BACKOFF_WAIT; - mClientInfo.signalingClientRetryStrategy.createRetryStrategyFn = exponentialBackoffRetryStrategyCreate; - mClientInfo.signalingClientRetryStrategy.freeRetryStrategyFn = exponentialBackoffRetryStrategyFree; - mClientInfo.signalingClientRetryStrategy.executeRetryStrategyFn = getExponentialBackoffRetryStrategyWaitTime; - - PRetryStrategy pRetryStrategy = NULL; - retStatus = mClientInfo.signalingClientRetryStrategy.createRetryStrategyFn(NULL, &pRetryStrategy); - if (retStatus != STATUS_SUCCESS) { - return retStatus; - } - - mClientInfo.signalingClientRetryStrategy.pRetryStrategy = pRetryStrategy; - PExponentialBackoffRetryStrategyState pExponentialBackoffRetryStrategyState = TO_EXPONENTIAL_BACKOFF_STATE(pRetryStrategy); - // Change retry wait time factor time from default to 20ms - pExponentialBackoffRetryStrategyState->exponentialBackoffRetryStrategyConfig.retryFactorTime = HUNDREDS_OF_NANOS_IN_A_MILLISECOND * 20; - // Change max retry wait time from default to 100ms - pExponentialBackoffRetryStrategyState->exponentialBackoffRetryStrategyConfig.maxRetryWaitTime = HUNDREDS_OF_NANOS_IN_A_MILLISECOND * 100; - // Change default jitter from default to 2 - pExponentialBackoffRetryStrategyState->exponentialBackoffRetryStrategyConfig.jitterFactor = 2; - - return STATUS_SUCCESS; - } - - STATUS freeTestSignalingClientRetryStrategy(SignalingClientInfo& mClientInfo) { - return mClientInfo.signalingClientRetryStrategy.freeRetryStrategyFn(&(mClientInfo.signalingClientRetryStrategy.pRetryStrategy)); - } - STATUS initializeSignalingClient(PAwsCredentialProvider pCredentialProvider = NULL) { STATUS retStatus; @@ -163,7 +130,7 @@ class WebRtcClientTestBase : public ::testing::Test { if (mAccessKeyIdSet) { deleteChannelLws(FROM_SIGNALING_CLIENT_HANDLE(mSignalingClientHandle), 0); } - EXPECT_EQ(STATUS_SUCCESS, freeTestSignalingClientRetryStrategy(mClientInfo)); + EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&mSignalingClientHandle)); return STATUS_SUCCESS; From 877d116309ac73365bb92ec3d99f8105b0aae3a7 Mon Sep 17 00:00:00 2001 From: Anurag Katey Date: Mon, 6 Dec 2021 13:32:03 -0800 Subject: [PATCH 022/102] Incorporating PIC state machine level retry changes into webrtc signaling state machine (#1341) * Incorporating PIC state machine level retry changes into webrtc signaling state machine * Add a n optional check for free retry strategy * Remove unused goto label * add missing sleep in get token state machine execute API * update log line * Update Producer hash * Adding a high level retry strategy while creating signaling client --- .../libkvsCommonLws-CMakeLists.txt | 2 +- samples/Common.c | 1 + samples/Samples.h | 2 + .../kinesis/video/webrtcclient/Include.h | 22 ++- src/source/Ice/IceAgentStateMachine.c | 81 ++++++-- src/source/Signaling/Client.c | 88 ++++++++- src/source/Signaling/Signaling.c | 69 +++++++ src/source/Signaling/Signaling.h | 34 ++++ src/source/Signaling/StateMachine.c | 184 ++++++++++++++---- src/source/Signaling/StateMachine.h | 2 + tst/SignalingApiFunctionalityTest.cpp | 98 ++++++++++ tst/WebRTCClientTestFixture.h | 35 ++++ 12 files changed, 552 insertions(+), 66 deletions(-) diff --git a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt index 0e1f5a1196..774f0fc29a 100644 --- a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt +++ b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt @@ -6,7 +6,7 @@ include(ExternalProject) ExternalProject_Add(libkvsCommonLws-download GIT_REPOSITORY https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git - GIT_TAG 99c1a8cd8cec88f99c9c4ce3944b53ae341d1491 + GIT_TAG 0d2ee038235ee9bd9c33d7788a7dc49ffd53a8d7 PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} diff --git a/samples/Common.c b/samples/Common.c index e5fa72952b..0b77024e4f 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -782,6 +782,7 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE pSampleConfiguration->clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; pSampleConfiguration->clientInfo.loggingLevel = logLevel; pSampleConfiguration->clientInfo.cacheFilePath = NULL; // Use the default path + pSampleConfiguration->clientInfo.signalingClientCreationMaxRetryAttempts = DEFAULT_CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS; pSampleConfiguration->iceCandidatePairStatsTimerId = MAX_UINT32; pSampleConfiguration->pregenerateCertTimerId = MAX_UINT32; diff --git a/samples/Samples.h b/samples/Samples.h index 6b721a8d6f..ab783d83ee 100644 --- a/samples/Samples.h +++ b/samples/Samples.h @@ -49,6 +49,8 @@ extern "C" { #define MASTER_DATA_CHANNEL_MESSAGE "This message is from the KVS Master" #define VIEWER_DATA_CHANNEL_MESSAGE "This message is from the KVS Viewer" +#define DEFAULT_CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS 3 + /* Uncomment the following line in order to enable IoT credentials checks in the provided samples */ //#define IOT_CORE_ENABLE_CREDENTIALS 1 diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 88f4f80498..f1b4476fba 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -1177,16 +1177,18 @@ typedef struct { * @brief Populate Signaling client with client ID and application log level */ typedef struct { - UINT32 version; //!< Version of the structure - CHAR clientId[MAX_SIGNALING_CLIENT_ID_LEN + 1]; //!< Client id to use. Defines if the client is a producer/consumer - UINT32 loggingLevel; //!< Verbosity level for the logging. One of LOG_LEVEL_XXX - //!< values or the default verbosity will be assumed. Currently, - //!< default value is LOG_LEVEL_WARNING - PCHAR cacheFilePath; //!< File cache path override. The default - //!< path is "./.SignalingCache_vN" which might not work for - //!< devices which have read only partition where the code is - //!< located. For default value or when file caching is not - //!< being used this value can be NULL or point to an EMPTY_STRING. + UINT32 version; //!< Version of the structure + CHAR clientId[MAX_SIGNALING_CLIENT_ID_LEN + 1]; //!< Client id to use. Defines if the client is a producer/consumer + UINT32 loggingLevel; //!< Verbosity level for the logging. One of LOG_LEVEL_XXX + //!< values or the default verbosity will be assumed. Currently, + //!< default value is LOG_LEVEL_WARNING + PCHAR cacheFilePath; //!< File cache path override. The default + //!< path is "./.SignalingCache_vN" which might not work for + //!< devices which have read only partition where the code is + //!< located. For default value or when file caching is not + //!< being used this value can be NULL or point to an EMPTY_STRING. + KvsRetryStrategyCallbacks signalingRetryStrategyCallbacks; //!< Retry strategy callbacks used while creating signaling client + UINT32 signalingClientCreationMaxRetryAttempts; //!< Max attempts to create signaling client before returning error to the caller } SignalingClientInfo, *PSignalingClientInfo; /** diff --git a/src/source/Ice/IceAgentStateMachine.c b/src/source/Ice/IceAgentStateMachine.c index e66e98716b..3f35e6716a 100644 --- a/src/source/Ice/IceAgentStateMachine.c +++ b/src/source/Ice/IceAgentStateMachine.c @@ -8,23 +8,70 @@ * Static definitions of the states */ StateMachineState ICE_AGENT_STATE_MACHINE_STATES[] = { - {ICE_AGENT_STATE_NEW, ICE_AGENT_STATE_NONE | ICE_AGENT_STATE_NEW, fromNewIceAgentState, executeNewIceAgentState, INFINITE_RETRY_COUNT_SENTINEL, - STATUS_ICE_INVALID_STATE}, - {ICE_AGENT_STATE_CHECK_CONNECTION, ICE_AGENT_STATE_NEW | ICE_AGENT_STATE_CHECK_CONNECTION, fromCheckConnectionIceAgentState, - executeCheckConnectionIceAgentState, INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, - {ICE_AGENT_STATE_CONNECTED, ICE_AGENT_STATE_CHECK_CONNECTION | ICE_AGENT_STATE_CONNECTED, fromConnectedIceAgentState, - executeConnectedIceAgentState, INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, - {ICE_AGENT_STATE_NOMINATING, ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING, fromNominatingIceAgentState, executeNominatingIceAgentState, - INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, - {ICE_AGENT_STATE_READY, ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING | ICE_AGENT_STATE_READY | ICE_AGENT_STATE_DISCONNECTED, - fromReadyIceAgentState, executeReadyIceAgentState, INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, - {ICE_AGENT_STATE_DISCONNECTED, - ICE_AGENT_STATE_CHECK_CONNECTION | ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING | ICE_AGENT_STATE_READY | ICE_AGENT_STATE_DISCONNECTED, - fromDisconnectedIceAgentState, executeDisconnectedIceAgentState, INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, - {ICE_AGENT_STATE_FAILED, - ICE_AGENT_STATE_CHECK_CONNECTION | ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING | ICE_AGENT_STATE_READY | - ICE_AGENT_STATE_DISCONNECTED | ICE_AGENT_STATE_FAILED, - fromFailedIceAgentState, executeFailedIceAgentState, INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, + { + ICE_AGENT_STATE_NEW, + ICE_AGENT_STATE_NONE | ICE_AGENT_STATE_NEW, + fromNewIceAgentState, + executeNewIceAgentState, + NULL, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_ICE_INVALID_STATE + }, + { + ICE_AGENT_STATE_CHECK_CONNECTION, + ICE_AGENT_STATE_NEW | ICE_AGENT_STATE_CHECK_CONNECTION, + fromCheckConnectionIceAgentState, + executeCheckConnectionIceAgentState, + NULL, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_ICE_INVALID_STATE + }, + { + ICE_AGENT_STATE_CONNECTED, + ICE_AGENT_STATE_CHECK_CONNECTION | ICE_AGENT_STATE_CONNECTED, + fromConnectedIceAgentState, + executeConnectedIceAgentState, + NULL, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_ICE_INVALID_STATE + }, + { + ICE_AGENT_STATE_NOMINATING, + ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING, + fromNominatingIceAgentState, + executeNominatingIceAgentState, + NULL, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_ICE_INVALID_STATE + }, + { + ICE_AGENT_STATE_READY, + ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING | ICE_AGENT_STATE_READY | ICE_AGENT_STATE_DISCONNECTED, + fromReadyIceAgentState, + executeReadyIceAgentState, + NULL, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_ICE_INVALID_STATE + }, + { + ICE_AGENT_STATE_DISCONNECTED, + ICE_AGENT_STATE_CHECK_CONNECTION | ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING | ICE_AGENT_STATE_READY | ICE_AGENT_STATE_DISCONNECTED, + fromDisconnectedIceAgentState, + executeDisconnectedIceAgentState, + NULL, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_ICE_INVALID_STATE + }, + { + ICE_AGENT_STATE_FAILED, + ICE_AGENT_STATE_CHECK_CONNECTION | ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING | ICE_AGENT_STATE_READY | + ICE_AGENT_STATE_DISCONNECTED | ICE_AGENT_STATE_FAILED, + fromFailedIceAgentState, + executeFailedIceAgentState, + NULL, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_ICE_INVALID_STATE + }, }; UINT32 ICE_AGENT_STATE_MACHINE_STATE_COUNT = ARRAY_SIZE(ICE_AGENT_STATE_MACHINE_STATES); diff --git a/src/source/Signaling/Client.c b/src/source/Signaling/Client.c index 98966bc294..6a9a783176 100644 --- a/src/source/Signaling/Client.c +++ b/src/source/Signaling/Client.c @@ -1,6 +1,58 @@ #define LOG_CLASS "SignalingClient" #include "../Include_i.h" +STATUS createRetryStrategyForCreatingSignalingClient(PSignalingClientInfo pClientInfo, PKvsRetryStrategy pKvsRetryStrategy) +{ + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + + CHK(pKvsRetryStrategy != NULL, STATUS_NULL_ARG); + + if (pClientInfo->signalingRetryStrategyCallbacks.createRetryStrategyFn == NULL || + pClientInfo->signalingRetryStrategyCallbacks.freeRetryStrategyFn == NULL || + pClientInfo->signalingRetryStrategyCallbacks.executeRetryStrategyFn == NULL) { + + DLOGV("Using exponential backoff retry strategy for creating signaling client"); + pClientInfo->signalingRetryStrategyCallbacks.createRetryStrategyFn = exponentialBackoffRetryStrategyCreate; + pClientInfo->signalingRetryStrategyCallbacks.freeRetryStrategyFn = exponentialBackoffRetryStrategyFree; + pClientInfo->signalingRetryStrategyCallbacks.executeRetryStrategyFn = getExponentialBackoffRetryStrategyWaitTime; + } + + // Create retry strategy will use default config 'DEFAULT_EXPONENTIAL_BACKOFF_CONFIGURATION' defined in - + // https://github.com/awslabs/amazon-kinesis-video-streams-pic/blob/develop/src/utils/include/com/amazonaws/kinesis/video/utils/Include.h + CHK_STATUS(pClientInfo->signalingRetryStrategyCallbacks.createRetryStrategyFn(pKvsRetryStrategy)); + + CHK(pKvsRetryStrategy->retryStrategyType == KVS_RETRY_STRATEGY_EXPONENTIAL_BACKOFF_WAIT, STATUS_INTERNAL_ERROR); + CHK(pKvsRetryStrategy->pRetryStrategy != NULL, STATUS_INTERNAL_ERROR); + +CleanUp: + + if (STATUS_FAILED(retStatus)) { + DLOGE("Some internal error occurred while setting up retry strategy for creating signaling client [0x%08x]", retStatus); + pClientInfo->signalingRetryStrategyCallbacks.freeRetryStrategyFn(pKvsRetryStrategy); + } + + LEAVES(); + return retStatus; +} + +STATUS freeRetryStrategyForCreatingSignalingClient(PSignalingClientInfo pClientInfo, PKvsRetryStrategy pKvsRetryStrategy) +{ + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + + CHK(pClientInfo != NULL && pKvsRetryStrategy != NULL, STATUS_NULL_ARG); + + if (pKvsRetryStrategy->pRetryStrategy != NULL) { + pClientInfo->signalingRetryStrategyCallbacks.freeRetryStrategyFn(pKvsRetryStrategy); + } + +CleanUp: + + LEAVES(); + return retStatus; +} + STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo pChannelInfo, PSignalingClientCallbacks pCallbacks, PAwsCredentialProvider pCredentialProvider, PSIGNALING_CLIENT_HANDLE pSignalingHandle) { @@ -8,6 +60,9 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = NULL; SignalingClientInfoInternal signalingClientInfoInternal; + KvsRetryStrategy createSignalingClientRetryStrategy = {NULL, NULL, KVS_RETRY_STRATEGY_DISABLED}; + UINT32 signalingClientCreationMaxRetryCount; + UINT64 signalingClientCreationWaitTime; DLOGV("Creating Signaling Client Sync"); CHK(pSignalingHandle != NULL && pClientInfo != NULL, STATUS_NULL_ARG); @@ -16,16 +71,45 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo MEMSET(&signalingClientInfoInternal, 0x00, SIZEOF(signalingClientInfoInternal)); signalingClientInfoInternal.signalingClientInfo = *pClientInfo; - CHK_STATUS(createSignalingSync(&signalingClientInfoInternal, pChannelInfo, pCallbacks, pCredentialProvider, &pSignalingClient)); + CHK_STATUS(createRetryStrategyForCreatingSignalingClient(pClientInfo, &createSignalingClientRetryStrategy)); - *pSignalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); + signalingClientCreationMaxRetryCount = pClientInfo->signalingClientCreationMaxRetryAttempts; + while (TRUE) { + retStatus = createSignalingSync(&signalingClientInfoInternal, pChannelInfo, pCallbacks, pCredentialProvider, &pSignalingClient); + // NOTE: This will retry on all status codes except SUCCESS. + // This includes status codes for bad arguments, internal non-recoverable errors etc. + // Retrying on non-recoverable errors is useless, but it is quite complex to segregate recoverable + // and non-recoverable errors at this layer. So to simplify, we would retry on all non-success status codes. + // It is the application's responsibility to fix any validation/null-arg/bad configuration type errors. + CHK(retStatus != STATUS_SUCCESS, retStatus); + + DLOGE("Create Signaling Sync API returned [0x%08x] %d\n", retStatus, signalingClientCreationMaxRetryCount); + if (signalingClientCreationMaxRetryCount <= 0) { + break; + } + + // Wait before attempting to create signaling client + CHK_STATUS(pClientInfo->signalingRetryStrategyCallbacks.executeRetryStrategyFn( + &createSignalingClientRetryStrategy, &signalingClientCreationWaitTime)); + + DLOGE("Attempting to back off for [%lf] milliseconds before creating signaling client again. " + "Signaling client creation retry count [%d]", + retStatus, signalingClientCreationWaitTime/1000.0, signalingClientCreationMaxRetryCount); + THREAD_SLEEP(signalingClientCreationWaitTime); + signalingClientCreationMaxRetryCount--; + } CleanUp: if (STATUS_FAILED(retStatus)) { + DLOGE("Create signaling client API failed with return code [0x%08x]", retStatus); freeSignaling(&pSignalingClient); + } else { + *pSignalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); } + freeRetryStrategyForCreatingSignalingClient(pClientInfo, &createSignalingClientRetryStrategy); + LEAVES(); return retStatus; } diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index 8cf2786b0e..ed4cc0b6d0 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -74,6 +74,8 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf // Store the credential provider pSignalingClient->pCredentialProvider = pCredentialProvider; + CHK_STATUS(configureRetryStrategyForSignalingStateMachine(pSignalingClient)); + // Create the state machine CHK_STATUS(createStateMachine(SIGNALING_STATE_MACHINE_STATES, SIGNALING_STATE_MACHINE_STATE_COUNT, CUSTOM_DATA_FROM_SIGNALING_CLIENT(pSignalingClient), signalingGetCurrentTime, @@ -207,6 +209,8 @@ STATUS freeSignaling(PSignalingClient* ppSignalingClient) freeStateMachine(pSignalingClient->pStateMachine); + freeClientRetryStrategy(pSignalingClient); + freeChannelInfo(&pSignalingClient->pChannelInfo); stackQueueFree(pSignalingClient->pMessageQueue); @@ -268,6 +272,71 @@ STATUS freeSignaling(PSignalingClient* ppSignalingClient) return retStatus; } +STATUS setupDefaultRetryStrategyForSignalingStateMachine(PSignalingClient pSignalingClient) { + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + PKvsRetryStrategyCallbacks pKvsRetryStrategyCallbacks = &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategyCallbacks); + + // Use default as exponential backoff wait + pKvsRetryStrategyCallbacks->createRetryStrategyFn = exponentialBackoffRetryStrategyCreate; + pKvsRetryStrategyCallbacks->freeRetryStrategyFn = exponentialBackoffRetryStrategyFree; + pKvsRetryStrategyCallbacks->executeRetryStrategyFn = getExponentialBackoffRetryStrategyWaitTime; + pKvsRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn = getExponentialBackoffRetryCount; + + // Use a default exponential backoff config for state machine level retries + pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.pRetryStrategyConfig = + (PRetryStrategyConfig)&DEFAULT_SIGNALING_STATE_MACHINE_EXPONENTIAL_BACKOFF_RETRY_CONFIGURATION; + + LEAVES(); + return retStatus; +} + +STATUS configureRetryStrategyForSignalingStateMachine(PSignalingClient pSignalingClient) { + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + PKvsRetryStrategyCallbacks pKvsRetryStrategyCallbacks = NULL; + + CHK(pSignalingClient != NULL, STATUS_NULL_ARG); + pKvsRetryStrategyCallbacks = &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategyCallbacks); + + // If the callbacks for retry strategy are already set, then use that otherwise + // build the client with a default retry strategy. + if (pKvsRetryStrategyCallbacks->createRetryStrategyFn == NULL || + pKvsRetryStrategyCallbacks->freeRetryStrategyFn == NULL || + pKvsRetryStrategyCallbacks->executeRetryStrategyFn == NULL || + pKvsRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn == NULL) { + + CHK_STATUS(setupDefaultRetryStrategyForSignalingStateMachine(pSignalingClient)); + } + + CHK_STATUS(pKvsRetryStrategyCallbacks->createRetryStrategyFn( + &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy))); + +CleanUp: + + LEAVES(); + return retStatus; +} + +STATUS freeClientRetryStrategy(PSignalingClient pSignalingClient) { + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + PKvsRetryStrategyCallbacks pKvsRetryStrategyCallbacks = NULL; + + CHK(pSignalingClient != NULL, STATUS_NULL_ARG); + + pKvsRetryStrategyCallbacks = &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategyCallbacks); + CHK(pKvsRetryStrategyCallbacks->freeRetryStrategyFn != NULL, STATUS_SUCCESS); + + CHK_STATUS(pKvsRetryStrategyCallbacks->freeRetryStrategyFn( + &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy))); + +CleanUp: + + LEAVES(); + return retStatus; +} + STATUS terminateOngoingOperations(PSignalingClient pSignalingClient) { ENTERS(); diff --git a/src/source/Signaling/Signaling.h b/src/source/Signaling/Signaling.h index b404d36687..3ffb3070c3 100644 --- a/src/source/Signaling/Signaling.h +++ b/src/source/Signaling/Signaling.h @@ -68,6 +68,32 @@ extern "C" { ATOMIC_INCREMENT(&(pClient)->diagnostics.numberOfErrors); \ } +static const ExponentialBackoffRetryStrategyConfig DEFAULT_SIGNALING_STATE_MACHINE_EXPONENTIAL_BACKOFF_RETRY_CONFIGURATION = { + /* Exponential wait times with this config will look like following - + ************************************ + * Retry Count * Wait time * + * ********************************** + * 1 * 100ms + jitter * + * 2 * 200ms + jitter * + * 3 * 400ms + jitter * + * 4 * 800ms + jitter * + * 5 * 1600ms + jitter * + * 6 * 3200ms + jitter * + * 7 * 6400ms + jitter * + * 8 * 10000ms + jitter * + * 9 * 10000ms + jitter * + * 10 * 10000ms + jitter * + ************************************ + jitter = random number between [0, wait time) + */ + KVS_INFINITE_EXPONENTIAL_RETRIES, /* max retry count */ + 10000, /* max retry wait time in milliseconds */ + 100, /* factor determining exponential curve in milliseconds */ + DEFAULT_KVS_MIN_TIME_TO_RESET_RETRY_STATE_MILLISECONDS, /* minimum time in milliseconds to reset retry state */ + FULL_JITTER, /* use full jitter variant */ + 0 /* jitter value unused for full jitter variant */ +}; + // Forward declaration typedef struct __LwsCallInfo* PLwsCallInfo; @@ -107,6 +133,10 @@ typedef struct { SignalingApiCallHookFunc connectPostHookFn; SignalingApiCallHookFunc deletePreHookFn; SignalingApiCallHookFunc deletePostHookFn; + + // Retry strategy used for signaling state machine + KvsRetryStrategy signalingStateMachineRetryStrategy; + KvsRetryStrategyCallbacks signalingStateMachineRetryStrategyCallbacks; } SignalingClientInfoInternal, *PSignalingClientInfoInternal; /** @@ -321,6 +351,10 @@ STATUS connectSignalingChannel(PSignalingClient, UINT64); STATUS deleteChannel(PSignalingClient, UINT64); STATUS signalingGetMetrics(PSignalingClient, PSignalingClientMetrics); +STATUS configureRetryStrategyForSignalingStateMachine(PSignalingClient); +STATUS setupDefaultRetryStrategyForSignalingStateMachine(PSignalingClient); +STATUS freeClientRetryStrategy(PSignalingClient); + #ifdef __cplusplus } #endif diff --git a/src/source/Signaling/StateMachine.c b/src/source/Signaling/StateMachine.c index 29f14e9864..dd28929448 100644 --- a/src/source/Signaling/StateMachine.c +++ b/src/source/Signaling/StateMachine.c @@ -8,46 +8,156 @@ * Static definitions of the states */ StateMachineState SIGNALING_STATE_MACHINE_STATES[] = { - {SIGNALING_STATE_NEW, SIGNALING_STATE_NONE | SIGNALING_STATE_NEW, fromNewSignalingState, executeNewSignalingState, INFINITE_RETRY_COUNT_SENTINEL, - STATUS_SIGNALING_INVALID_READY_STATE}, - {SIGNALING_STATE_GET_TOKEN, - SIGNALING_STATE_NEW | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | - SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_GET_TOKEN, - fromGetTokenSignalingState, executeGetTokenSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_GET_TOKEN_CALL_FAILED}, - {SIGNALING_STATE_DESCRIBE, - SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_CONNECT | - SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_DESCRIBE, - fromDescribeSignalingState, executeDescribeSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_DESCRIBE_CALL_FAILED}, - {SIGNALING_STATE_CREATE, SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE, fromCreateSignalingState, executeCreateSignalingState, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_CREATE_CALL_FAILED}, - {SIGNALING_STATE_GET_ENDPOINT, - SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | - SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT, - fromGetEndpointSignalingState, executeGetEndpointSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED}, - {SIGNALING_STATE_GET_ICE_CONFIG, - SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_READY | - SIGNALING_STATE_GET_ICE_CONFIG, - fromGetIceConfigSignalingState, executeGetIceConfigSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED}, - {SIGNALING_STATE_READY, SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_READY, fromReadySignalingState, - executeReadySignalingState, INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_READY_CALLBACK_FAILED}, - {SIGNALING_STATE_CONNECT, SIGNALING_STATE_READY | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_CONNECT, - fromConnectSignalingState, executeConnectSignalingState, INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_CONNECT_CALL_FAILED}, - {SIGNALING_STATE_CONNECTED, SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, fromConnectedSignalingState, executeConnectedSignalingState, - INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_CONNECTED_CALLBACK_FAILED}, - {SIGNALING_STATE_DISCONNECTED, SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, fromDisconnectedSignalingState, - executeDisconnectedSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_DISCONNECTED_CALLBACK_FAILED}, - {SIGNALING_STATE_DELETE, - SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | - SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_DELETE, - fromDeleteSignalingState, executeDeleteSignalingState, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_DELETE_CALL_FAILED}, - {SIGNALING_STATE_DELETED, SIGNALING_STATE_DELETE | SIGNALING_STATE_DELETED, fromDeletedSignalingState, executeDeletedSignalingState, - INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_DELETE_CALL_FAILED}, + { + SIGNALING_STATE_NEW, SIGNALING_STATE_NONE | SIGNALING_STATE_NEW, + fromNewSignalingState, + executeNewSignalingState, + defaultSignalingStateTransitionHook, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_SIGNALING_INVALID_READY_STATE + }, + { + SIGNALING_STATE_GET_TOKEN, + SIGNALING_STATE_NEW | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | + SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_GET_TOKEN, + fromGetTokenSignalingState, + executeGetTokenSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_GET_TOKEN_CALL_FAILED + }, + { + SIGNALING_STATE_DESCRIBE, + SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_CONNECT | + SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_DESCRIBE, + fromDescribeSignalingState, + executeDescribeSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_DESCRIBE_CALL_FAILED + }, + { + SIGNALING_STATE_CREATE, + SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE, + fromCreateSignalingState, + executeCreateSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_CREATE_CALL_FAILED + }, + { + SIGNALING_STATE_GET_ENDPOINT, + SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | + SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT, + fromGetEndpointSignalingState, + executeGetEndpointSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED + }, + { + SIGNALING_STATE_GET_ICE_CONFIG, + SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_READY | + SIGNALING_STATE_GET_ICE_CONFIG, + fromGetIceConfigSignalingState, + executeGetIceConfigSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED + }, + { + SIGNALING_STATE_READY, + SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_READY, + fromReadySignalingState, + executeReadySignalingState, + defaultSignalingStateTransitionHook, + INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_READY_CALLBACK_FAILED + }, + { + SIGNALING_STATE_CONNECT, + SIGNALING_STATE_READY | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_CONNECT, + fromConnectSignalingState, + executeConnectSignalingState, + defaultSignalingStateTransitionHook, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_SIGNALING_CONNECT_CALL_FAILED + }, + { + SIGNALING_STATE_CONNECTED, + SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, + fromConnectedSignalingState, + executeConnectedSignalingState, + defaultSignalingStateTransitionHook, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_SIGNALING_CONNECTED_CALLBACK_FAILED + }, + { + SIGNALING_STATE_DISCONNECTED, + SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, + fromDisconnectedSignalingState, + executeDisconnectedSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_DISCONNECTED_CALLBACK_FAILED + }, + { + SIGNALING_STATE_DELETE, + SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | + SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_DELETE, + fromDeleteSignalingState, + executeDeleteSignalingState, + defaultSignalingStateTransitionHook, + SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_DELETE_CALL_FAILED + }, + { + SIGNALING_STATE_DELETED, + SIGNALING_STATE_DELETE | SIGNALING_STATE_DELETED, + fromDeletedSignalingState, + executeDeletedSignalingState, + defaultSignalingStateTransitionHook, + INFINITE_RETRY_COUNT_SENTINEL, + STATUS_SIGNALING_DELETE_CALL_FAILED + }, }; UINT32 SIGNALING_STATE_MACHINE_STATE_COUNT = ARRAY_SIZE(SIGNALING_STATE_MACHINE_STATES); +STATUS defaultSignalingStateTransitionHook( + UINT64 customData /* customData should be PSignalingClient */, + PUINT64 stateTransitionWaitTime) { + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + PSignalingClient pSignalingClient = NULL; + PKvsRetryStrategy pSignalingStateMachineRetryStrategy = NULL; + PKvsRetryStrategyCallbacks pSignalingStateMachineRetryStrategyCallbacks = NULL; + UINT64 retryWaitTime = 0; + + pSignalingClient = SIGNALING_CLIENT_FROM_CUSTOM_DATA(customData); + CHK(pSignalingClient != NULL && stateTransitionWaitTime != NULL, STATUS_NULL_ARG); + + pSignalingStateMachineRetryStrategy = &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy); + pSignalingStateMachineRetryStrategyCallbacks = &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategyCallbacks); + + // result > SERVICE_CALL_RESULT_OK covers case for - + // result != SERVICE_CALL_RESULT_NOT_SET and != SERVICE_CALL_RESULT_OK + // If we support any other 2xx service call results, the condition + // should change to (pSignalingClient->result > 299 && ...) + CHK(pSignalingClient->result > SERVICE_CALL_RESULT_OK && + pSignalingStateMachineRetryStrategyCallbacks->executeRetryStrategyFn != NULL, STATUS_SUCCESS); + + DLOGV("Signaling Client base result is [%u]. Executing KVS retry handler of retry strategy type [%u]", + pSignalingClient->result, pSignalingStateMachineRetryStrategy->retryStrategyType); + pSignalingStateMachineRetryStrategyCallbacks->executeRetryStrategyFn(pSignalingStateMachineRetryStrategy, &retryWaitTime); + + *stateTransitionWaitTime = retryWaitTime; + +CleanUp: + + LEAVES(); + return retStatus; +} + STATUS signalingStateMachineIterator(PSignalingClient pSignalingClient, UINT64 expiration, UINT64 finalState) { ENTERS(); @@ -273,6 +383,8 @@ STATUS executeGetTokenSignalingState(UINT64 customData, UINT64 time) SIGNALING_CLIENT_STATE_GET_CREDENTIALS)); } + THREAD_SLEEP_UNTIL(time); + // Use the credential provider to get the token retStatus = pSignalingClient->pCredentialProvider->getCredentialsFn(pSignalingClient->pCredentialProvider, &pSignalingClient->pAwsCredentials); diff --git a/src/source/Signaling/StateMachine.h b/src/source/Signaling/StateMachine.h index fea8300e66..545596cd89 100644 --- a/src/source/Signaling/StateMachine.h +++ b/src/source/Signaling/StateMachine.h @@ -64,6 +64,8 @@ STATUS executeDeleteSignalingState(UINT64, UINT64); STATUS fromDeletedSignalingState(UINT64, PUINT64); STATUS executeDeletedSignalingState(UINT64, UINT64); +STATUS defaultSignalingStateTransitionHook(UINT64, PUINT64); + #ifdef __cplusplus } #endif diff --git a/tst/SignalingApiFunctionalityTest.cpp b/tst/SignalingApiFunctionalityTest.cpp index fe5d4b3fa1..8b9495d12a 100644 --- a/tst/SignalingApiFunctionalityTest.cpp +++ b/tst/SignalingApiFunctionalityTest.cpp @@ -189,6 +189,22 @@ STATUS getEndpointPreHook(UINT64 hookCustomData) return retStatus; }; +VOID setupSignalingStateMachineRetryStrategyCallbacks(PSignalingClientInfoInternal pSignalingClientInfoInternal) +{ + pSignalingClientInfoInternal->signalingStateMachineRetryStrategyCallbacks.createRetryStrategyFn = SignalingApiFunctionalityTest::createRetryStrategyFn; + pSignalingClientInfoInternal->signalingStateMachineRetryStrategyCallbacks.getCurrentRetryAttemptNumberFn = SignalingApiFunctionalityTest::getCurrentRetryAttemptNumberFn; + pSignalingClientInfoInternal->signalingStateMachineRetryStrategyCallbacks.freeRetryStrategyFn = SignalingApiFunctionalityTest::freeRetryStrategyFn; + pSignalingClientInfoInternal->signalingStateMachineRetryStrategyCallbacks.executeRetryStrategyFn = SignalingApiFunctionalityTest::executeRetryStrategyFn; +} + +VOID setupSignalingStateMachineRetryStrategyCallbacks(PSignalingClientInfo pSignalingClientInfo) +{ + pSignalingClientInfo->signalingRetryStrategyCallbacks.createRetryStrategyFn = SignalingApiFunctionalityTest::createRetryStrategyFn; + pSignalingClientInfo->signalingRetryStrategyCallbacks.getCurrentRetryAttemptNumberFn = SignalingApiFunctionalityTest::getCurrentRetryAttemptNumberFn; + pSignalingClientInfo->signalingRetryStrategyCallbacks.freeRetryStrategyFn = SignalingApiFunctionalityTest::freeRetryStrategyFn; + pSignalingClientInfo->signalingRetryStrategyCallbacks.executeRetryStrategyFn = SignalingApiFunctionalityTest::executeRetryStrategyFn; +} + //////////////////////////////////////////////////////////////////// // Functionality Tests //////////////////////////////////////////////////////////////////// @@ -212,7 +228,9 @@ TEST_F(SignalingApiFunctionalityTest, basicCreateConnectFree) clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; + clientInfo.signalingClientCreationMaxRetryAttempts = 0; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfo); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -240,6 +258,35 @@ TEST_F(SignalingApiFunctionalityTest, basicCreateConnectFree) EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); } +TEST_F(SignalingApiFunctionalityTest, basicCreateCreateWithRetries) +{ + if (!mAccessKeyIdSet) { + return; + } + + SignalingClientInfo clientInfo; + SignalingClientCallbacks signalingClientCallbacks; + SIGNALING_CLIENT_HANDLE signalingHandle = INVALID_SIGNALING_CLIENT_HANDLE_VALUE; + + signalingClientCallbacks.version = SIGNALING_CLIENT_CALLBACKS_CURRENT_VERSION; + signalingClientCallbacks.customData = (UINT64) this; + signalingClientCallbacks.messageReceivedFn = NULL; + signalingClientCallbacks.errorReportFn = signalingClientError; + signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + + clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; + clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; + clientInfo.cacheFilePath = NULL; + clientInfo.signalingClientCreationMaxRetryAttempts = 3; + STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfo); + + // We would retry 'signalingClientCreationMaxRetryAttempts' times and fail all three times + EXPECT_EQ(STATUS_NULL_ARG, + createSignalingClientSync(&clientInfo, NULL, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, + &signalingHandle)); +} + TEST_F(SignalingApiFunctionalityTest, mockMaster) { ChannelInfo channelInfo; @@ -269,7 +316,9 @@ TEST_F(SignalingApiFunctionalityTest, mockMaster) clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; + clientInfo.signalingClientCreationMaxRetryAttempts = 0; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfo); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -404,7 +453,9 @@ TEST_F(SignalingApiFunctionalityTest, mockViewer) clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; + clientInfo.signalingClientCreationMaxRetryAttempts = 0; STRCPY(clientInfo.clientId, TEST_SIGNALING_VIEWER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfo); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -504,6 +555,8 @@ TEST_F(SignalingApiFunctionalityTest, invalidChannelInfoInput) STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; + clientInfo.signalingClientCreationMaxRetryAttempts = 0; + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfo); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -708,7 +761,9 @@ TEST_F(SignalingApiFunctionalityTest, invalidChannelInfoInput) clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; + clientInfo.signalingClientCreationMaxRetryAttempts = 0; STRCPY(clientInfo.clientId, TEST_SIGNALING_VIEWER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfo); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -778,7 +833,9 @@ TEST_F(SignalingApiFunctionalityTest, iceReconnectEmulation) clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; + clientInfo.signalingClientCreationMaxRetryAttempts = 0; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfo); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -865,6 +922,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedVariatio clientInfoInternal.signalingClientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); // Set the ICE hook clientInfoInternal.hookCustomData = (UINT64) this; @@ -1128,6 +1186,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedVariations) clientInfoInternal.signalingClientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); // Set the ICE hook clientInfoInternal.hookCustomData = (UINT64) this; @@ -1392,6 +1451,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedAuthExpi clientInfoInternal.signalingClientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -1512,6 +1572,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedAuthExpirat clientInfoInternal.signalingClientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -1637,6 +1698,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaul STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); clientInfoInternal.hookCustomData = (UINT64) this; clientInfoInternal.getIceConfigPreHookFn = getIceConfigPreHook; + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); // Make it fail after the first call and recover after two failures on the 3rd call getIceConfigResult = STATUS_INVALID_OPERATION; @@ -1751,6 +1813,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithFaultIn STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); clientInfoInternal.hookCustomData = (UINT64) this; clientInfoInternal.getIceConfigPreHookFn = getIceConfigPreHook; + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); // Make it fail after the first call and recover after two failures on the 3rd call getIceConfigResult = STATUS_INVALID_OPERATION; @@ -1867,6 +1930,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaul STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); clientInfoInternal.hookCustomData = (UINT64) this; clientInfoInternal.getIceConfigPreHookFn = getIceConfigPreHook; + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); // Make it fail after the first call and recover after two failures on the 3rd call getIceConfigResult = STATUS_INVALID_OPERATION; @@ -1979,6 +2043,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithFaultIn STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); clientInfoInternal.hookCustomData = (UINT64) this; clientInfoInternal.getIceConfigPreHookFn = getIceConfigPreHook; + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); // Make it fail after the first call and recover after two failures on the 3rd call getIceConfigResult = STATUS_INVALID_OPERATION; @@ -2092,6 +2157,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithBadA clientInfoInternal.signalingClientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2206,6 +2272,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithBadAuth clientInfoInternal.signalingClientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2320,6 +2387,7 @@ TEST_F(SignalingApiFunctionalityTest, goAwayEmulation) clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfo); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2402,7 +2470,9 @@ TEST_F(SignalingApiFunctionalityTest, unknownMessageTypeEmulation) clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; clientInfo.cacheFilePath = NULL; + clientInfo.signalingClientCreationMaxRetryAttempts = 0; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfo); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2478,6 +2548,9 @@ TEST_F(SignalingApiFunctionalityTest, connectTimeoutEmulation) SignalingClientInfoInternal clientInfoInternal; PSignalingClient pSignalingClient; SIGNALING_CLIENT_HANDLE signalingHandle; + PKvsRetryStrategy pKvsRetryStrategy = NULL; + PKvsRetryStrategyCallbacks pKvsRetryStrategyCallbacks = NULL; + UINT32 retryCount = 0, previousRetryCount = 0; signalingClientCallbacks.version = SIGNALING_CLIENT_CALLBACKS_CURRENT_VERSION; signalingClientCallbacks.customData = (UINT64) this; @@ -2491,6 +2564,8 @@ TEST_F(SignalingApiFunctionalityTest, connectTimeoutEmulation) clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); clientInfoInternal.connectTimeout = 100 * HUNDREDS_OF_NANOS_IN_A_MILLISECOND; + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); + pKvsRetryStrategyCallbacks = &(clientInfoInternal.signalingStateMachineRetryStrategyCallbacks); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2526,6 +2601,13 @@ TEST_F(SignalingApiFunctionalityTest, connectTimeoutEmulation) EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DISCONNECTED]); + pKvsRetryStrategy = &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy); + + retryCount = 0; + pKvsRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn(pKvsRetryStrategy, &retryCount); + // retry count is 1 because we moved from describe to create state since describe failed + EXPECT_EQ(1, retryCount); + // Connect to the signaling client - should time out EXPECT_EQ(STATUS_OPERATION_TIMED_OUT, signalingClientConnectSync(signalingHandle)); @@ -2541,12 +2623,22 @@ TEST_F(SignalingApiFunctionalityTest, connectTimeoutEmulation) EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DISCONNECTED]); + retryCount = 0; + pKvsRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn(pKvsRetryStrategy, &retryCount); + EXPECT_LE(2, retryCount); + // Connect to the signaling client - should connect OK pSignalingClient->clientInfo.connectTimeout = 0; EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); + previousRetryCount = retryCount; + retryCount = 0; + pKvsRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn(pKvsRetryStrategy, &retryCount); + // retry count should not increase since there were no timeouts + EXPECT_EQ(previousRetryCount, retryCount); + // Check that we are connected and can send a message SignalingMessage signalingMessage; signalingMessage.version = SIGNALING_MESSAGE_CURRENT_VERSION; @@ -2589,6 +2681,7 @@ TEST_F(SignalingApiFunctionalityTest, channelInfoArnSkipDescribe) clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); clientInfoInternal.connectTimeout = 0; + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2719,6 +2812,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedWithArn) clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); clientInfoInternal.connectTimeout = 0; + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -2848,6 +2942,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedAuthExpiration) clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); clientInfoInternal.connectTimeout = 0; + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -3007,6 +3102,7 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) clientInfoInternal.connectPreHookFn = connectPreHook; clientInfoInternal.describePreHookFn = describePreHook; clientInfoInternal.getEndpointPreHookFn = getEndpointPreHook; + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); // Make describe and getendpoint fail once so we can check the no-caching behavior // in case when there is a failure. @@ -3144,6 +3240,7 @@ TEST_F(SignalingApiFunctionalityTest, fileCachingTest) clientInfoInternal.connectPreHookFn = connectPreHook; clientInfoInternal.describePreHookFn = describePreHook; clientInfoInternal.getEndpointPreHookFn = getEndpointPreHook; + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; @@ -3264,6 +3361,7 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer) clientInfoInternal.signalingClientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; diff --git a/tst/WebRTCClientTestFixture.h b/tst/WebRTCClientTestFixture.h index b92bb11208..690263aad4 100644 --- a/tst/WebRTCClientTestFixture.h +++ b/tst/WebRTCClientTestFixture.h @@ -86,6 +86,12 @@ class WebRtcClientTestBase : public ::testing::Test { mClientInfo.cacheFilePath = NULL; // Use the default path STRCPY(mClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + mClientInfo.signalingRetryStrategyCallbacks.createRetryStrategyFn = createRetryStrategyFn; + mClientInfo.signalingRetryStrategyCallbacks.getCurrentRetryAttemptNumberFn = getCurrentRetryAttemptNumberFn; + mClientInfo.signalingRetryStrategyCallbacks.freeRetryStrategyFn = freeRetryStrategyFn; + mClientInfo.signalingRetryStrategyCallbacks.executeRetryStrategyFn = executeRetryStrategyFn; + mClientInfo.signalingClientCreationMaxRetryAttempts = 0; + MEMSET(&mChannelInfo, 0x00, SIZEOF(mChannelInfo)); mChannelInfo.version = CHANNEL_INFO_CURRENT_VERSION; mChannelInfo.pChannelName = mChannelName; @@ -201,6 +207,35 @@ class WebRtcClientTestBase : public ::testing::Test { return retStatus; } + static STATUS createRetryStrategyFn(PKvsRetryStrategy pKvsRetryStrategy) { + STATUS retStatus = STATUS_SUCCESS; + PExponentialBackoffRetryStrategyState pExponentialBackoffRetryStrategyState = NULL; + + CHK_STATUS(exponentialBackoffRetryStrategyCreate(pKvsRetryStrategy)); + CHK(pKvsRetryStrategy->retryStrategyType == KVS_RETRY_STRATEGY_EXPONENTIAL_BACKOFF_WAIT, STATUS_INTERNAL_ERROR); + + pExponentialBackoffRetryStrategyState = TO_EXPONENTIAL_BACKOFF_STATE(pKvsRetryStrategy->pRetryStrategy); + + // Overwrite retry config to avoid slow long running tests + pExponentialBackoffRetryStrategyState->exponentialBackoffRetryStrategyConfig.retryFactorTime = HUNDREDS_OF_NANOS_IN_A_MILLISECOND * 5; + pExponentialBackoffRetryStrategyState->exponentialBackoffRetryStrategyConfig.maxRetryWaitTime = HUNDREDS_OF_NANOS_IN_A_MILLISECOND * 75; + + CleanUp: + return retStatus; + } + + static STATUS getCurrentRetryAttemptNumberFn(PKvsRetryStrategy pKvsRetryStrategy, PUINT32 pRetryCount) { + return getExponentialBackoffRetryCount(pKvsRetryStrategy, pRetryCount); + } + + static STATUS freeRetryStrategyFn(PKvsRetryStrategy pKvsRetryStrategy) { + return exponentialBackoffRetryStrategyFree(pKvsRetryStrategy); + } + + static STATUS executeRetryStrategyFn(PKvsRetryStrategy pKvsRetryStrategy, PUINT64 retryWaitTime) { + return getExponentialBackoffRetryStrategyWaitTime(pKvsRetryStrategy, retryWaitTime); + } + STATUS readFrameData(PBYTE pFrame, PUINT32 pSize, UINT32 index, PCHAR frameFilePath) { STATUS retStatus = STATUS_SUCCESS; From cc8fc05f7ec3ad703daf3ebde6065617a1060774 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Mon, 6 Dec 2021 16:40:52 -0800 Subject: [PATCH 023/102] Add Retry count retrieval in hook (#1335) * Add Retry count retrieval in hook * Fix compile issue on travis * Pull in latest changes in retry structures * Rebasing off develop with successful travis run for retry --- samples/Common.c | 1 + samples/kvsWebRTCClientMaster.c | 6 +++--- .../amazonaws/kinesis/video/webrtcclient/Include.h | 1 + .../com/amazonaws/kinesis/video/webrtcclient/Stats.h | 3 ++- src/source/Signaling/Client.c | 5 +++-- src/source/Signaling/Signaling.c | 5 ++++- src/source/Signaling/Signaling.h | 1 + src/source/Signaling/StateMachine.c | 11 ++++++++++- tst/SignalingApiFunctionalityTest.cpp | 2 +- 9 files changed, 26 insertions(+), 9 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index 0b77024e4f..2ffe17da7b 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -839,6 +839,7 @@ STATUS logSignalingClientStats(PSignalingClientMetrics pSignalingClientMetrics) // This gives the EMA of the getIceConfig() call. DLOGD("Data Plane API call latency: %" PRIu64 " ms", (pSignalingClientMetrics->signalingClientStats.dpApiCallLatency / HUNDREDS_OF_NANOS_IN_A_MILLISECOND)); + DLOGD("API call retry count: %d", pSignalingClientMetrics->signalingClientStats.apiCallRetryCount); CleanUp: LEAVES(); return retStatus; diff --git a/samples/kvsWebRTCClientMaster.c b/samples/kvsWebRTCClientMaster.c index bd80b5cc7e..8cd277d377 100644 --- a/samples/kvsWebRTCClientMaster.c +++ b/samples/kvsWebRTCClientMaster.c @@ -11,7 +11,7 @@ INT32 main(INT32 argc, CHAR* argv[]) PSampleConfiguration pSampleConfiguration = NULL; SignalingClientMetrics signalingClientMetrics; PCHAR pChannelName; - signalingClientMetrics.version = 0; + signalingClientMetrics.version = SIGNALING_CLIENT_METRICS_CURRENT_VERSION; SET_INSTRUMENTED_ALLOCATORS(); @@ -114,7 +114,7 @@ INT32 main(INT32 argc, CHAR* argv[]) CleanUp: if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] Terminated with status code 0x%08x", retStatus); + printf("[KVS Master] Terminated with status code 0x%08x\n", retStatus); } printf("[KVS Master] Cleaning up....\n"); @@ -147,7 +147,7 @@ INT32 main(INT32 argc, CHAR* argv[]) if (retStatus == STATUS_SUCCESS) { logSignalingClientStats(&signalingClientMetrics); } else { - printf("[KVS Master] signalingClientGetMetrics() operation returned status code: 0x%08x", retStatus); + printf("[KVS Master] signalingClientGetMetrics() operation returned status code: 0x%08x\n", retStatus); } retStatus = freeSignalingClient(&pSampleConfiguration->signalingClientHandle); if (retStatus != STATUS_SUCCESS) { diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index f1b4476fba..34d6309201 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -1189,6 +1189,7 @@ typedef struct { //!< being used this value can be NULL or point to an EMPTY_STRING. KvsRetryStrategyCallbacks signalingRetryStrategyCallbacks; //!< Retry strategy callbacks used while creating signaling client UINT32 signalingClientCreationMaxRetryAttempts; //!< Max attempts to create signaling client before returning error to the caller + UINT32 stateMachineRetryCountReadOnly; //!< Retry count of state machine. Note that this **MUST NOT** be modified by the user. It is a read only field } SignalingClientInfo, *PSignalingClientInfo; /** diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h index 615e47e921..a8294fd699 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h @@ -172,7 +172,7 @@ typedef enum { typedef struct { UINT64 durationInSeconds; //!< Time (seconds) spent in each state RTC_QUALITY_LIMITATION_REASON qualityLimitationReason; //!< Quality limitation reason -} QualityLimitationDurationsRecord, PQualityLimitationDurationsRecord; +} QualityLimitationDurationsRecord, *PQualityLimitationDurationsRecord; /** * @brief Record of total number of packets sent per DSCP. Used by RTCOutboundRtpStreamStats @@ -577,6 +577,7 @@ typedef struct { //!< * When refreshing ICE server configuration fails after pre-configured retries //!< In all of these cases the error callback (if specified) will be called. UINT32 numberOfReconnects; //!< Number of reconnects in the session + UINT32 apiCallRetryCount; //!< Number of retries due to API call failures in the state machine } SignalingClientStats, PSignalingClientStats; /** diff --git a/src/source/Signaling/Client.c b/src/source/Signaling/Client.c index 6a9a783176..218aae2ae5 100644 --- a/src/source/Signaling/Client.c +++ b/src/source/Signaling/Client.c @@ -88,11 +88,13 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo break; } + pClientInfo->stateMachineRetryCountReadOnly = signalingClientInfoInternal.signalingClientInfo.stateMachineRetryCountReadOnly; + // Wait before attempting to create signaling client CHK_STATUS(pClientInfo->signalingRetryStrategyCallbacks.executeRetryStrategyFn( &createSignalingClientRetryStrategy, &signalingClientCreationWaitTime)); - DLOGE("Attempting to back off for [%lf] milliseconds before creating signaling client again. " + DLOGV("Attempting to back off for [%lf] milliseconds before creating signaling client again. " "Signaling client creation retry count [%d]", retStatus, signalingClientCreationWaitTime/1000.0, signalingClientCreationMaxRetryCount); THREAD_SLEEP(signalingClientCreationWaitTime); @@ -345,7 +347,6 @@ STATUS signalingClientGetMetrics(SIGNALING_CLIENT_HANDLE signalingClientHandle, CHK_STATUS(signalingGetMetrics(pSignalingClient, pSignalingClientMetrics)); CleanUp: - SIGNALING_UPDATE_ERROR_COUNT(pSignalingClient, retStatus); LEAVES(); return retStatus; diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index ed4cc0b6d0..523f06b2fd 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -170,7 +170,9 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf SIGNALING_STATE_READY)); CleanUp: - + if(pClientInfo != NULL && pSignalingClient != NULL) { + pClientInfo->signalingClientInfo.stateMachineRetryCountReadOnly = pSignalingClient->diagnostics.stateMachineRetryCount; + } CHK_LOG_ERR(retStatus); if (STATUS_FAILED(retStatus)) { @@ -1210,6 +1212,7 @@ STATUS signalingGetMetrics(PSignalingClient pSignalingClient, PSignalingClientMe pSignalingClientMetrics->signalingClientStats.connectionDuration = ATOMIC_LOAD_BOOL(&pSignalingClient->connected) ? curTime - pSignalingClient->diagnostics.connectTime : 0; + pSignalingClientMetrics->signalingClientStats.apiCallRetryCount = pSignalingClient->diagnostics.stateMachineRetryCount; MUTEX_UNLOCK(pSignalingClient->diagnosticsLock); diff --git a/src/source/Signaling/Signaling.h b/src/source/Signaling/Signaling.h index 3ffb3070c3..cea0790539 100644 --- a/src/source/Signaling/Signaling.h +++ b/src/source/Signaling/Signaling.h @@ -163,6 +163,7 @@ typedef struct { UINT64 connectTime; UINT64 cpApiLatency; UINT64 dpApiLatency; + UINT32 stateMachineRetryCount; } SignalingDiagnostics, PSignalingDiagnostics; /** diff --git a/src/source/Signaling/StateMachine.c b/src/source/Signaling/StateMachine.c index dd28929448..bfe43a100f 100644 --- a/src/source/Signaling/StateMachine.c +++ b/src/source/Signaling/StateMachine.c @@ -128,6 +128,7 @@ STATUS defaultSignalingStateTransitionHook( PUINT64 stateTransitionWaitTime) { ENTERS(); STATUS retStatus = STATUS_SUCCESS; + STATUS countStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = NULL; PKvsRetryStrategy pSignalingStateMachineRetryStrategy = NULL; PKvsRetryStrategyCallbacks pSignalingStateMachineRetryStrategyCallbacks = NULL; @@ -149,9 +150,17 @@ STATUS defaultSignalingStateTransitionHook( DLOGV("Signaling Client base result is [%u]. Executing KVS retry handler of retry strategy type [%u]", pSignalingClient->result, pSignalingStateMachineRetryStrategy->retryStrategyType); pSignalingStateMachineRetryStrategyCallbacks->executeRetryStrategyFn(pSignalingStateMachineRetryStrategy, &retryWaitTime); - *stateTransitionWaitTime = retryWaitTime; + if(pSignalingStateMachineRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn != NULL) { + if((countStatus = pSignalingStateMachineRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn(pSignalingStateMachineRetryStrategy, &pSignalingClient->diagnostics.stateMachineRetryCount)) != STATUS_SUCCESS) { + DLOGW("Failed to get retry count. Error code: %08x", countStatus); + } + else { + DLOGD("Retry count: %llu", pSignalingClient->diagnostics.stateMachineRetryCount); + } + } + CleanUp: LEAVES(); diff --git a/tst/SignalingApiFunctionalityTest.cpp b/tst/SignalingApiFunctionalityTest.cpp index 8b9495d12a..e48c16801b 100644 --- a/tst/SignalingApiFunctionalityTest.cpp +++ b/tst/SignalingApiFunctionalityTest.cpp @@ -258,7 +258,7 @@ TEST_F(SignalingApiFunctionalityTest, basicCreateConnectFree) EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); } -TEST_F(SignalingApiFunctionalityTest, basicCreateCreateWithRetries) +TEST_F(SignalingApiFunctionalityTest, basicCreateWithRetries) { if (!mAccessKeyIdSet) { return; From 1446ee6f8068edac5d912e2d1ddccb642bfc3786 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Tue, 7 Dec 2021 12:42:05 -0800 Subject: [PATCH 024/102] Log git hash (#1345) * Log git hash * Update CMakeLists.txt white space change to trigger travis Co-authored-by: Hassan Sahibzada --- CMakeLists.txt | 9 +++++++++ src/source/PeerConnection/PeerConnection.c | 1 + 2 files changed, 10 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 694e4be3c7..f3dc73f9e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,15 @@ option(THREAD_SANITIZER "Build with ThreadSanitizer." OFF) option(UNDEFINED_BEHAVIOR_SANITIZER "Build with UndefinedBehaviorSanitizer." OFF) option(LINK_PROFILER "Link gperftools profiler" OFF) +execute_process( + COMMAND git rev-parse HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_COMMIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE) + +add_definitions(-DSDK_VERSION=\"${GIT_COMMIT_HASH}\") +add_definitions(-DDETECTED_GIT_HASH) + if(NOT OPEN_SRC_INSTALL_PREFIX OR OPEN_SRC_INSTALL_PREFIX STREQUAL "") set(OPEN_SRC_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/open-source" CACHE PATH "Libraries will be downloaded and built in this directory.") else() diff --git a/src/source/PeerConnection/PeerConnection.c b/src/source/PeerConnection/PeerConnection.c index 76a07cf9cc..67cc5da7ed 100644 --- a/src/source/PeerConnection/PeerConnection.c +++ b/src/source/PeerConnection/PeerConnection.c @@ -1364,6 +1364,7 @@ STATUS initKvsWebRtc(VOID) initializeEndianness(); KVS_CRYPTO_INIT(); + LOG_GIT_HASH(); #ifdef ENABLE_DATA_CHANNEL CHK_STATUS(initSctpSession()); From a16672f5141d3e8c90145c79c309b8fbe73b498c Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Tue, 7 Dec 2021 20:51:56 -0800 Subject: [PATCH 025/102] Fix retry count to indicate count only after a retry has occured (#1348) Fix retry count to indicate count only after a retry has occurred --- src/source/Signaling/StateMachine.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/source/Signaling/StateMachine.c b/src/source/Signaling/StateMachine.c index bfe43a100f..ab3a06db2b 100644 --- a/src/source/Signaling/StateMachine.c +++ b/src/source/Signaling/StateMachine.c @@ -147,11 +147,7 @@ STATUS defaultSignalingStateTransitionHook( CHK(pSignalingClient->result > SERVICE_CALL_RESULT_OK && pSignalingStateMachineRetryStrategyCallbacks->executeRetryStrategyFn != NULL, STATUS_SUCCESS); - DLOGV("Signaling Client base result is [%u]. Executing KVS retry handler of retry strategy type [%u]", - pSignalingClient->result, pSignalingStateMachineRetryStrategy->retryStrategyType); - pSignalingStateMachineRetryStrategyCallbacks->executeRetryStrategyFn(pSignalingStateMachineRetryStrategy, &retryWaitTime); - *stateTransitionWaitTime = retryWaitTime; - + // A retry is considered only after executeRetry is executed. This will avoid publishing count + 1 if(pSignalingStateMachineRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn != NULL) { if((countStatus = pSignalingStateMachineRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn(pSignalingStateMachineRetryStrategy, &pSignalingClient->diagnostics.stateMachineRetryCount)) != STATUS_SUCCESS) { DLOGW("Failed to get retry count. Error code: %08x", countStatus); @@ -160,6 +156,10 @@ STATUS defaultSignalingStateTransitionHook( DLOGD("Retry count: %llu", pSignalingClient->diagnostics.stateMachineRetryCount); } } + DLOGV("Signaling Client base result is [%u]. Executing KVS retry handler of retry strategy type [%u]", + pSignalingClient->result, pSignalingStateMachineRetryStrategy->retryStrategyType); + pSignalingStateMachineRetryStrategyCallbacks->executeRetryStrategyFn(pSignalingStateMachineRetryStrategy, &retryWaitTime); + *stateTransitionWaitTime = retryWaitTime; CleanUp: From 96ff611267222b94de84ee57ffdba2036f536d80 Mon Sep 17 00:00:00 2001 From: Hassan Sahibzada Date: Wed, 8 Dec 2021 12:54:48 -0500 Subject: [PATCH 026/102] add support for automatic clock skew detection and correction (#1344) * add support for automatic clock skew detection and correction * auto fix clock skew and add tests * enable test to check clock recovery * remove stuff left over from debugging, reset logging default to WARN * remove unused variable * get rid of verbose logging in unit tests causes static build to fail due to excessive log output * simplify code get rid of extra call to length because the lws_hdr_copy returns the same value --- .../libkvsCommonLws-CMakeLists.txt | 2 +- .../Dependencies/libwebsockets-CMakeLists.txt | 2 +- ...bsockets-old-gcc-fix-cast-cmakelists.patch | 16 - .../kinesis/video/webrtcclient/Include.h | 3 +- src/source/Signaling/LwsApiCalls.c | 153 ++++- src/source/Signaling/LwsApiCalls.h | 10 +- src/source/Signaling/Signaling.c | 24 +- src/source/Signaling/Signaling.h | 19 +- src/source/Signaling/StateMachine.c | 5 +- tst/SignalingApiFunctionalityTest.cpp | 619 ++++++++++++++++++ tst/WebRTCClientTestFixture.h | 1 + 11 files changed, 799 insertions(+), 55 deletions(-) diff --git a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt index 774f0fc29a..dcc76ecf86 100644 --- a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt +++ b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt @@ -6,7 +6,7 @@ include(ExternalProject) ExternalProject_Add(libkvsCommonLws-download GIT_REPOSITORY https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git - GIT_TAG 0d2ee038235ee9bd9c33d7788a7dc49ffd53a8d7 + GIT_TAG 9e5f6d3ff115e85f694d2b1f434b6ad70ac1034e PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} diff --git a/CMake/Dependencies/libwebsockets-CMakeLists.txt b/CMake/Dependencies/libwebsockets-CMakeLists.txt index 77e5d36985..5700a3e4a2 100644 --- a/CMake/Dependencies/libwebsockets-CMakeLists.txt +++ b/CMake/Dependencies/libwebsockets-CMakeLists.txt @@ -25,7 +25,7 @@ endif() ExternalProject_Add(project_libwebsockets GIT_REPOSITORY https://github.com/warmcat/libwebsockets.git - GIT_TAG v4.2.1 + GIT_TAG v4.2.2 PATCH_COMMAND ${PATCH_COMMAND} PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CMAKE_ARGS diff --git a/CMake/Dependencies/libwebsockets-old-gcc-fix-cast-cmakelists.patch b/CMake/Dependencies/libwebsockets-old-gcc-fix-cast-cmakelists.patch index f256c78cd7..61e25e8a35 100644 --- a/CMake/Dependencies/libwebsockets-old-gcc-fix-cast-cmakelists.patch +++ b/CMake/Dependencies/libwebsockets-old-gcc-fix-cast-cmakelists.patch @@ -1,19 +1,3 @@ -diff --git a/lib/misc/base64-decode.c b/lib/misc/base64-decode.c -index f8e8e49a..9d18b33f 100644 ---- a/lib/misc/base64-decode.c -+++ b/lib/misc/base64-decode.c -@@ -72,9 +72,9 @@ _lws_b64_encode_string(const char *encode, const char *in, int in_len, - *out++ = encode[triple[0] >> 2]; - *out++ = encode[(((triple[0] & 0x03) << 4) & 0x30) | - (((triple[1] & 0xf0) >> 4) & 0x0f)]; -- *out++ = (len > 1 ? encode[(((triple[1] & 0x0f) << 2) & 0x3c) | -+ *out++ = (char)(len > 1 ? encode[(((triple[1] & 0x0f) << 2) & 0x3c) | - (((triple[2] & 0xc0) >> 6) & 3)] : '='); -- *out++ = (len > 2 ? encode[triple[2] & 0x3f] : '='); -+ *out++ = (char)(len > 2 ? encode[triple[2] & 0x3f] : '='); - - done += 4; - } diff --git a/lib/roles/h2/hpack.c b/lib/roles/h2/hpack.c index 68629e6f..6ef628b8 100644 --- a/lib/roles/h2/hpack.c diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 34d6309201..47c29a8ced 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -1331,8 +1331,9 @@ typedef struct { UINT32 version; //!< Current version of the structure UINT64 customData; //!< Custom data passed by the caller SignalingClientMessageReceivedFunc messageReceivedFn; //!< Callback registration for received SDP - SignalingClientErrorReportFunc errorReportFn; //!< Error reporting function. This is an optional member + SignalingClientErrorReportFunc errorReportFn; //!< Error reporting function. This is an optional member SignalingClientStateChangedFunc stateChangeFn; //!< Signaling client state change callback + GetCurrentTimeFunc getCurrentTimeFn; //!< callback to override system time, used for testing clock skew } SignalingClientCallbacks, *PSignalingClientCallbacks; /** diff --git a/src/source/Signaling/LwsApiCalls.c b/src/source/Signaling/LwsApiCalls.c index e29b459592..1c02bcc172 100644 --- a/src/source/Signaling/LwsApiCalls.c +++ b/src/source/Signaling/LwsApiCalls.c @@ -18,17 +18,23 @@ INT32 lwsHttpCallbackRoutine(struct lws* wsi, enum lws_callback_reasons reason, PVOID customData; INT32 status, retValue = 0, size; PCHAR pCurPtr, pBuffer; + CHAR dateHdrBuffer[MAX_DATE_HEADER_BUFFER_LENGTH+1]; PBYTE pEndPtr; PBYTE* ppStartPtr; PLwsCallInfo pLwsCallInfo; PRequestInfo pRequestInfo = NULL; PSingleListNode pCurNode; - UINT64 item; + UINT64 item, serverTime; UINT32 headerCount; UINT32 logLevel; PRequestHeader pRequestHeader; PSignalingClient pSignalingClient = NULL; BOOL locked = FALSE; + time_t td; + SIZE_T len; + UINT64 nowTime, clockSkew = 0; + PStateMachineState pStateMachineState; + BOOL skewMapContains = FALSE; DLOGV("HTTPS callback with reason %d", reason); @@ -64,6 +70,8 @@ INT32 lwsHttpCallbackRoutine(struct lws* wsi, enum lws_callback_reasons reason, } pSignalingClient = pLwsCallInfo->pSignalingClient; + nowTime = SIGNALING_GET_CURRENT_TIME(pSignalingClient); + pRequestInfo = pLwsCallInfo->callInfo.pRequestInfo; pBuffer = pLwsCallInfo->buffer + LWS_PRE; @@ -93,10 +101,47 @@ INT32 lwsHttpCallbackRoutine(struct lws* wsi, enum lws_callback_reasons reason, case LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP: status = lws_http_client_http_response(wsi); - DLOGD("Connected with server response: %d", status); + getStateMachineCurrentState(pSignalingClient->pStateMachine, &pStateMachineState); + DLOGD("Connected with server response: %d", status); pLwsCallInfo->callInfo.callResult = getServiceCallResultFromHttpStatus((UINT32) status); + len = (SIZE_T)lws_hdr_copy(wsi, &dateHdrBuffer[0], MAX_DATE_HEADER_BUFFER_LENGTH, WSI_TOKEN_HTTP_DATE); + + time(&td); + + if (len) { + // on failure to parse lws_http_date_unix returns non zero value + if (0 == lws_http_date_parse_unix(&dateHdrBuffer[0], len, &td)) { + DLOGV("Date Header Returned By Server: %s", dateHdrBuffer); + + serverTime = ((UINT64) td) * HUNDREDS_OF_NANOS_IN_A_SECOND; + + if (serverTime > nowTime + MIN_CLOCK_SKEW_TIME_TO_CORRECT) { + // Server time is ahead + clockSkew = (serverTime - nowTime); + DLOGD("Detected Clock Skew! Server time is AHEAD of Device time: Server time: %" PRIu64 ", now time: %" PRIu64, serverTime, + nowTime); + } else if (nowTime > serverTime + MIN_CLOCK_SKEW_TIME_TO_CORRECT) { + clockSkew = (nowTime - serverTime); + clockSkew |= ((UINT64)(1ULL << 63)); + DLOGD("Detected Clock Skew! Device time is AHEAD of Server time: Server time: %" PRIu64 ", now time: %" PRIu64, serverTime, + nowTime); + // PIC hashTable implementation only stores UINT64 so I will flip the sign of the msb + // This limits the range of the max clock skew we can represent to just under 2925 years. + } + + hashTableContains(pSignalingClient->diagnostics.pEndpointToClockSkewHashMap, pStateMachineState->state, &skewMapContains); + if (clockSkew > 0) { + hashTablePut(pSignalingClient->diagnostics.pEndpointToClockSkewHashMap, pStateMachineState->state, clockSkew); + } else if (clockSkew == 0 && skewMapContains) { + // This means the item is in the map so at one point there was a clock skew offset but it has been corrected + // So we should no longer be correcting for a clock skew, remove this item from the map + hashTableRemove(pSignalingClient->diagnostics.pEndpointToClockSkewHashMap, pStateMachineState->state); + } + } + } + // Store the Request ID header if ((size = lws_hdr_custom_copy(wsi, pBuffer, LWS_SCRATCH_BUFFER_SIZE, SIGNALING_REQUEST_ID_HEADER_NAME, (SIZEOF(SIGNALING_REQUEST_ID_HEADER_NAME) - 1) * SIZEOF(CHAR))) > 0) { @@ -118,6 +163,16 @@ INT32 lwsHttpCallbackRoutine(struct lws* wsi, enum lws_callback_reasons reason, if (pLwsCallInfo->callInfo.callResult != SERVICE_CALL_RESULT_OK) { DLOGW("Received client http read response: %s", pLwsCallInfo->callInfo.responseData); + if (pLwsCallInfo->callInfo.callResult == SERVICE_CALL_FORBIDDEN) { + if (isCallResultSignatureExpired(&pLwsCallInfo->callInfo)) { + // Set more specific result, this is so in the state machine + // We don't call GetToken again rather RETRY the existing API (now with clock skew correction) + pLwsCallInfo->callInfo.callResult = SERVICE_CALL_SIGNATURE_EXPIRED; + } else if (isCallResultSignatureNotYetCurrent(&pLwsCallInfo->callInfo)) { + // server time is ahead + pLwsCallInfo->callInfo.callResult = SERVICE_CALL_SIGNATURE_NOT_YET_CURRENT; + } + } } else { DLOGV("Received client http read response: %s", pLwsCallInfo->callInfo.responseData); } @@ -321,7 +376,7 @@ INT32 lwsWssCallbackRoutine(struct lws* wsi, enum lws_callback_reasons reason, P // Store the time when we connect for diagnostics MUTEX_LOCK(pSignalingClient->diagnosticsLock); - pSignalingClient->diagnostics.connectTime = GETTIME(); + pSignalingClient->diagnostics.connectTime = SIGNALING_GET_CURRENT_TIME(pSignalingClient); MUTEX_UNLOCK(pSignalingClient->diagnosticsLock); // Notify the listener thread @@ -639,8 +694,44 @@ STATUS lwsCompleteSync(PLwsCallInfo pCallInfo) return retStatus; } -BOOL isCallResultFailureRetryable(PCallInfo pCallInfo) { - return (STRNSTR(pCallInfo->responseData, "Signature expired", pCallInfo->responseDataLen) == NULL); +BOOL isCallResultSignatureExpired(PCallInfo pCallInfo) { + return (STRNSTR(pCallInfo->responseData, "Signature expired", pCallInfo->responseDataLen) != NULL); +} + +BOOL isCallResultSignatureNotYetCurrent(PCallInfo pCallInfo) { + return (STRNSTR(pCallInfo->responseData, "Signature not yet current", pCallInfo->responseDataLen) != NULL); +} + +STATUS checkAndCorrectForClockSkew(PSignalingClient pSignalingClient, PRequestInfo pRequestInfo) { + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + + PStateMachineState pStateMachineState; + PHashTable pClockSkewMap; + UINT64 clockSkewOffset; + CHK_STATUS(getStateMachineCurrentState(pSignalingClient->pStateMachine, &pStateMachineState)); + + pClockSkewMap = pSignalingClient->diagnostics.pEndpointToClockSkewHashMap; + + CHK_STATUS(hashTableGet(pClockSkewMap, pStateMachineState->state, &clockSkewOffset)); + + // if we made it here that means there is clock skew + if (clockSkewOffset & ((UINT64)(1ULL << 63))) { + clockSkewOffset ^= ((UINT64)(1ULL << 63)); + DLOGV("Detected device time is AHEAD of server time!"); + pRequestInfo->currentTime -= clockSkewOffset; + } else { + DLOGV("Detected server time is AHEAD of device time!"); + pRequestInfo->currentTime += clockSkewOffset; + } + + DLOGW("Clockskew corrected!"); + +CleanUp: + + + LEAVES(); + return retStatus; } ////////////////////////////////////////////////////////////////////////// @@ -672,13 +763,19 @@ STATUS describeChannelLws(PSignalingClient pSignalingClient, UINT64 time) // Prepare the json params for the call SNPRINTF(paramsJson, ARRAY_SIZE(paramsJson), DESCRIBE_CHANNEL_PARAM_JSON_TEMPLATE, pSignalingClient->pChannelInfo->pChannelName); - // Create the request info with the body CHK_STATUS(createRequestInfo(url, paramsJson, pSignalingClient->pChannelInfo->pRegion, pSignalingClient->pChannelInfo->pCertPath, NULL, NULL, SSL_CERTIFICATE_TYPE_NOT_SPECIFIED, pSignalingClient->pChannelInfo->pUserAgent, SIGNALING_SERVICE_API_CALL_CONNECTION_TIMEOUT, SIGNALING_SERVICE_API_CALL_COMPLETION_TIMEOUT, DEFAULT_LOW_SPEED_LIMIT, DEFAULT_LOW_SPEED_TIME_LIMIT, pSignalingClient->pAwsCredentials, &pRequestInfo)); + // createRequestInfo does not have access to the getCurrentTime callback, this hook is used for tests. + if (pSignalingClient->signalingClientCallbacks.getCurrentTimeFn != NULL) { + pRequestInfo->currentTime = pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); + } + + checkAndCorrectForClockSkew(pSignalingClient, pRequestInfo); + CHK_STATUS(createLwsCallInfo(pSignalingClient, pRequestInfo, PROTOCOL_INDEX_HTTPS, &pLwsCallInfo)); // Make a blocking call @@ -689,9 +786,6 @@ STATUS describeChannelLws(PSignalingClient pSignalingClient, UINT64 time) pResponseStr = pLwsCallInfo->callInfo.responseData; resultLen = pLwsCallInfo->callInfo.responseDataLen; - CHK_ERR(isCallResultFailureRetryable(&pLwsCallInfo->callInfo), STATUS_SIGNALING_DESCRIBE_CALL_FAILED, - "DescribeChannel API call failed with: %s and will not be retried.", pResponseStr); - // Early return if we have a non-success result CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, STATUS_SIGNALING_LWS_CALL_FAILED); @@ -832,6 +926,12 @@ STATUS createChannelLws(PSignalingClient pSignalingClient, UINT64 time) SIGNALING_SERVICE_API_CALL_CONNECTION_TIMEOUT, SIGNALING_SERVICE_API_CALL_COMPLETION_TIMEOUT, DEFAULT_LOW_SPEED_LIMIT, DEFAULT_LOW_SPEED_TIME_LIMIT, pSignalingClient->pAwsCredentials, &pRequestInfo)); + if (pSignalingClient->signalingClientCallbacks.getCurrentTimeFn != NULL) { + pRequestInfo->currentTime = pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); + } + + checkAndCorrectForClockSkew(pSignalingClient, pRequestInfo); + CHK_STATUS(createLwsCallInfo(pSignalingClient, pRequestInfo, PROTOCOL_INDEX_HTTPS, &pLwsCallInfo)); // Make a blocking call @@ -842,9 +942,6 @@ STATUS createChannelLws(PSignalingClient pSignalingClient, UINT64 time) pResponseStr = pLwsCallInfo->callInfo.responseData; resultLen = pLwsCallInfo->callInfo.responseDataLen; - CHK_ERR(isCallResultFailureRetryable(&pLwsCallInfo->callInfo), STATUS_SIGNALING_CREATE_CALL_FAILED, - "CreateChannel API call failed with: %s and will not be retried.", pResponseStr); - // Early return if we have a non-success result CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, STATUS_SIGNALING_LWS_CALL_FAILED); @@ -914,6 +1011,12 @@ STATUS getChannelEndpointLws(PSignalingClient pSignalingClient, UINT64 time) SIGNALING_SERVICE_API_CALL_CONNECTION_TIMEOUT, SIGNALING_SERVICE_API_CALL_COMPLETION_TIMEOUT, DEFAULT_LOW_SPEED_LIMIT, DEFAULT_LOW_SPEED_TIME_LIMIT, pSignalingClient->pAwsCredentials, &pRequestInfo)); + if (pSignalingClient->signalingClientCallbacks.getCurrentTimeFn != NULL) { + pRequestInfo->currentTime = pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); + } + + checkAndCorrectForClockSkew(pSignalingClient, pRequestInfo); + CHK_STATUS(createLwsCallInfo(pSignalingClient, pRequestInfo, PROTOCOL_INDEX_HTTPS, &pLwsCallInfo)); // Make a blocking call @@ -924,9 +1027,6 @@ STATUS getChannelEndpointLws(PSignalingClient pSignalingClient, UINT64 time) pResponseStr = pLwsCallInfo->callInfo.responseData; resultLen = pLwsCallInfo->callInfo.responseDataLen; - CHK_ERR(isCallResultFailureRetryable(&pLwsCallInfo->callInfo), STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED, - "GetChannelEndpoint API call failed with: %s and will not be retried.", pResponseStr); - // Early return if we have a non-success result CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, STATUS_SIGNALING_LWS_CALL_FAILED); @@ -1053,6 +1153,12 @@ STATUS getIceConfigLws(PSignalingClient pSignalingClient, UINT64 time) SIGNALING_SERVICE_API_CALL_CONNECTION_TIMEOUT, SIGNALING_SERVICE_API_CALL_COMPLETION_TIMEOUT, DEFAULT_LOW_SPEED_LIMIT, DEFAULT_LOW_SPEED_TIME_LIMIT, pSignalingClient->pAwsCredentials, &pRequestInfo)); + if (pSignalingClient->signalingClientCallbacks.getCurrentTimeFn != NULL) { + pRequestInfo->currentTime = pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); + } + + checkAndCorrectForClockSkew(pSignalingClient, pRequestInfo); + CHK_STATUS(createLwsCallInfo(pSignalingClient, pRequestInfo, PROTOCOL_INDEX_HTTPS, &pLwsCallInfo)); // Make a blocking call @@ -1063,9 +1169,6 @@ STATUS getIceConfigLws(PSignalingClient pSignalingClient, UINT64 time) pResponseStr = pLwsCallInfo->callInfo.responseData; resultLen = pLwsCallInfo->callInfo.responseDataLen; - CHK_ERR(isCallResultFailureRetryable(&pLwsCallInfo->callInfo), STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED, - "GetIceConfig API call failed with: %s and will not be retried.", pResponseStr); - // Early return if we have a non-success result CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, STATUS_SIGNALING_LWS_CALL_FAILED); @@ -1178,6 +1281,12 @@ STATUS deleteChannelLws(PSignalingClient pSignalingClient, UINT64 time) SIGNALING_SERVICE_API_CALL_CONNECTION_TIMEOUT, SIGNALING_SERVICE_API_CALL_COMPLETION_TIMEOUT, DEFAULT_LOW_SPEED_LIMIT, DEFAULT_LOW_SPEED_TIME_LIMIT, pSignalingClient->pAwsCredentials, &pRequestInfo)); + if (pSignalingClient->signalingClientCallbacks.getCurrentTimeFn != NULL) { + pRequestInfo->currentTime = pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); + } + + checkAndCorrectForClockSkew(pSignalingClient, pRequestInfo); + CHK_STATUS(createLwsCallInfo(pSignalingClient, pRequestInfo, PROTOCOL_INDEX_HTTPS, &pLwsCallInfo)); // Make a blocking call @@ -1428,7 +1537,7 @@ PVOID reconnectHandler(PVOID args) ATOMIC_INCREMENT(&pSignalingClient->diagnostics.numberOfReconnects); // Attempt to reconnect by driving the state machine to connected state - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, GETTIME() + SIGNALING_CONNECT_STATE_TIMEOUT, + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_CONNECTED)); CleanUp: @@ -1515,7 +1624,7 @@ STATUS sendLwsMessage(PSignalingClient pSignalingClient, SIGNALING_MESSAGE_TYPE // In case of an Offer, package the ICE candidates only if we have a set of non-expired ICE configs if (messageType == SIGNALING_MESSAGE_TYPE_OFFER && pSignalingClient->iceConfigCount != 0 && - (curTime = GETTIME()) <= pSignalingClient->iceConfigExpiration && STATUS_SUCCEEDED(validateIceConfiguration(pSignalingClient))) { + (curTime = SIGNALING_GET_CURRENT_TIME(pSignalingClient)) <= pSignalingClient->iceConfigExpiration && STATUS_SUCCEEDED(validateIceConfiguration(pSignalingClient))) { // Start the ice infos by copying the preamble, then the main body and then the ending STRCPY(encodedIceConfig, SIGNALING_ICE_SERVER_LIST_TEMPLATE_START); iceConfigLen = ARRAY_SIZE(SIGNALING_ICE_SERVER_LIST_TEMPLATE_START) - 1; // remove the null terminator @@ -1850,7 +1959,7 @@ STATUS receiveLwsMessage(PSignalingClient pSignalingClient, PCHAR pMessage, UINT SAFE_MEMFREE(pSignalingMessageWrapper); // Iterate the state machinery - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, GETTIME() + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_CONNECTED)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_CONNECTED)); CHK(FALSE, retStatus); break; @@ -1863,7 +1972,7 @@ STATUS receiveLwsMessage(PSignalingClient pSignalingClient, PCHAR pMessage, UINT SAFE_MEMFREE(pSignalingMessageWrapper); // Iterate the state machinery - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, GETTIME() + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_CONNECTED)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_CONNECTED)); CHK(FALSE, retStatus); break; diff --git a/src/source/Signaling/LwsApiCalls.h b/src/source/Signaling/LwsApiCalls.h index ce222e48ac..8d80748d0d 100644 --- a/src/source/Signaling/LwsApiCalls.h +++ b/src/source/Signaling/LwsApiCalls.h @@ -127,6 +127,11 @@ extern "C" { "\t\t\t\"Username\": \"%s\"\n" \ "\t\t}," +// max length for http date header, must follow RFC 7231, should be less than 32 characters +#define MAX_DATE_HEADER_BUFFER_LENGTH 64 + +#define MIN_CLOCK_SKEW_TIME_TO_CORRECT (5 * HUNDREDS_OF_NANOS_IN_A_MINUTE) + // Defining max bloat size per item in the JSON template #define ICE_SERVER_INFO_TEMPLATE_BLOAT_SIZE 128 @@ -163,7 +168,7 @@ extern "C" { // Check for the stale credentials #define CHECK_SIGNALING_CREDENTIALS_EXPIRATION(p) \ do { \ - if (GETTIME() >= (p)->pAwsCredentials->expiration) { \ + if (SIGNALING_GET_CURRENT_TIME((p)) >= (p)->pAwsCredentials->expiration) { \ ATOMIC_STORE(&(p)->result, (SIZE_T) SERVICE_CALL_NOT_AUTHORIZED); \ CHK(FALSE, retStatus); \ } \ @@ -233,6 +238,9 @@ PVOID reconnectHandler(PVOID); INT32 lwsHttpCallbackRoutine(struct lws*, enum lws_callback_reasons, PVOID, PVOID, size_t); INT32 lwsWssCallbackRoutine(struct lws*, enum lws_callback_reasons, PVOID, PVOID, size_t); +BOOL isCallResultSignatureExpired(PCallInfo); +BOOL isCallResultSignatureNotYetCurrent(PCallInfo); + STATUS describeChannelLws(PSignalingClient, UINT64); STATUS createChannelLws(PSignalingClient, UINT64); STATUS getChannelEndpointLws(PSignalingClient, UINT64); diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index 523f06b2fd..8714e956b0 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -28,7 +28,7 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf // Allocate enough storage CHK(NULL != (pSignalingClient = (PSignalingClient) MEMCALLOC(1, SIZEOF(SignalingClient))), STATUS_NOT_ENOUGH_MEMORY); - // Initialize the listener and restarter thread trackers + // Initialize the listener and restart thread trackers CHK_STATUS(initializeThreadTracker(&pSignalingClient->listenerTracker)); CHK_STATUS(initializeThreadTracker(&pSignalingClient->reconnecterTracker)); @@ -150,7 +150,9 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf CHK(pSignalingClient->pLwsContext != NULL, STATUS_SIGNALING_LWS_CREATE_CONTEXT_FAILED); // Initializing the diagnostics mostly is taken care of by zero-mem in MEMCALLOC - pSignalingClient->diagnostics.createTime = GETTIME(); + pSignalingClient->diagnostics.createTime = SIGNALING_GET_CURRENT_TIME(pSignalingClient); + CHK_STATUS(hashTableCreateWithParams(SIGNALING_CLOCKSKEW_HASH_TABLE_BUCKET_COUNT,SIGNALING_CLOCKSKEW_HASH_TABLE_BUCKET_LENGTH, + &pSignalingClient->diagnostics.pEndpointToClockSkewHashMap)); // At this point we have constructed the main object and we can assign to the returned pointer *ppSignalingClient = pSignalingClient; @@ -217,6 +219,8 @@ STATUS freeSignaling(PSignalingClient* ppSignalingClient) stackQueueFree(pSignalingClient->pMessageQueue); + hashTableFree(pSignalingClient->diagnostics.pEndpointToClockSkewHashMap); + if (IS_VALID_MUTEX_VALUE(pSignalingClient->connectedLock)) { MUTEX_FREE(pSignalingClient->connectedLock); } @@ -453,7 +457,7 @@ STATUS signalingConnectSync(PSignalingClient pSignalingClient) // Store the signaling state in case we error/timeout so we can re-set it on exit CHK_STATUS(getStateMachineCurrentState(pSignalingClient->pStateMachine, &pState)); - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, GETTIME() + SIGNALING_CONNECT_STATE_TIMEOUT, + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_CONNECTED)); CleanUp: @@ -484,7 +488,7 @@ STATUS signalingDisconnectSync(PSignalingClient pSignalingClient) ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_RESULT_OK); - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, GETTIME() + SIGNALING_DISCONNECT_STATE_TIMEOUT, SIGNALING_STATE_READY)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_DISCONNECT_STATE_TIMEOUT, SIGNALING_STATE_READY)); CleanUp: @@ -512,7 +516,7 @@ STATUS signalingDeleteSync(PSignalingClient pSignalingClient) // Set the state directly setStateMachineCurrentState(pSignalingClient->pStateMachine, SIGNALING_STATE_DELETE); - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, GETTIME() + SIGNALING_DELETE_TIMEOUT, SIGNALING_STATE_DELETED)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_DELETE_TIMEOUT, SIGNALING_STATE_DELETED)); CleanUp: @@ -608,7 +612,7 @@ STATUS validateIceConfiguration(PSignalingClient pSignalingClient) CHK(minTtl > ICE_CONFIGURATION_REFRESH_GRACE_PERIOD, STATUS_SIGNALING_ICE_TTL_LESS_THAN_GRACE_PERIOD); - pSignalingClient->iceConfigTime = GETTIME(); + pSignalingClient->iceConfigTime = SIGNALING_GET_CURRENT_TIME(pSignalingClient); pSignalingClient->iceConfigExpiration = pSignalingClient->iceConfigTime + (minTtl - ICE_CONFIGURATION_REFRESH_GRACE_PERIOD); CleanUp: @@ -634,7 +638,7 @@ STATUS refreshIceConfiguration(PSignalingClient pSignalingClient) DLOGD("Refreshing the ICE Server Configuration"); // Check whether we have a valid not-yet-expired ICE configuration and if so early exit - curTime = GETTIME(); + curTime = SIGNALING_GET_CURRENT_TIME(pSignalingClient); CHK(pSignalingClient->iceConfigCount == 0 || curTime > pSignalingClient->iceConfigExpiration, retStatus); // ICE config can be retrieved in specific states only @@ -877,7 +881,6 @@ STATUS describeChannel(PSignalingClient pSignalingClient, UINT64 time) CHK(pSignalingClient != NULL, STATUS_NULL_ARG); THREAD_SLEEP_UNTIL(time); - // Check for the stale credentials CHECK_SIGNALING_CREDENTIALS_EXPIRATION(pSignalingClient); @@ -907,6 +910,7 @@ STATUS describeChannel(PSignalingClient pSignalingClient, UINT64 time) } if (STATUS_SUCCEEDED(retStatus)) { + retStatus = describeChannelLws(pSignalingClient, time); // Store the last call time on success if (STATUS_SUCCEEDED(retStatus)) { @@ -1191,7 +1195,9 @@ STATUS signalingGetMetrics(PSignalingClient pSignalingClient, PSignalingClientMe { ENTERS(); STATUS retStatus = STATUS_SUCCESS; - UINT64 curTime = GETTIME(); + UINT64 curTime; + + curTime = SIGNALING_GET_CURRENT_TIME(pSignalingClient); CHK(pSignalingClient != NULL && pSignalingClientMetrics != NULL, STATUS_NULL_ARG); CHK(pSignalingClientMetrics->version <= SIGNALING_CLIENT_METRICS_CURRENT_VERSION, STATUS_SIGNALING_INVALID_METRICS_VERSION); diff --git a/src/source/Signaling/Signaling.h b/src/source/Signaling/Signaling.h index cea0790539..1e5e036b89 100644 --- a/src/source/Signaling/Signaling.h +++ b/src/source/Signaling/Signaling.h @@ -53,13 +53,21 @@ extern "C" { // Max libWebSockets protocol count. IMPORTANT: Ensure it's 1 + PROTOCOL_INDEX_WSS #define LWS_PROTOCOL_COUNT 2 +/** + * Default signaling clockskew (endpoint --> clockskew) hash table bucket count/length + */ +#define SIGNALING_CLOCKSKEW_HASH_TABLE_BUCKET_LENGTH 2 +#define SIGNALING_CLOCKSKEW_HASH_TABLE_BUCKET_COUNT MIN_HASH_BUCKET_COUNT // 16 + // API call latency calculation #define SIGNALING_API_LATENCY_CALCULATION(pClient, time, isCpApi) \ MUTEX_LOCK((pClient)->diagnosticsLock); \ if (isCpApi) { \ - (pClient)->diagnostics.cpApiLatency = EMA_ACCUMULATOR_GET_NEXT((pClient)->diagnostics.cpApiLatency, GETTIME() - (time)); \ + (pClient)->diagnostics.cpApiLatency = EMA_ACCUMULATOR_GET_NEXT((pClient)->diagnostics.cpApiLatency, \ + SIGNALING_GET_CURRENT_TIME((pClient)) - (time)); \ } else { \ - (pClient)->diagnostics.dpApiLatency = EMA_ACCUMULATOR_GET_NEXT((pClient)->diagnostics.dpApiLatency, GETTIME() - (time)); \ + (pClient)->diagnostics.dpApiLatency = EMA_ACCUMULATOR_GET_NEXT((pClient)->diagnostics.dpApiLatency, \ + SIGNALING_GET_CURRENT_TIME((pClient)) - (time)); \ } \ MUTEX_UNLOCK((pClient)->diagnosticsLock); @@ -68,6 +76,12 @@ extern "C" { ATOMIC_INCREMENT(&(pClient)->diagnostics.numberOfErrors); \ } +#define IS_CURRENT_TIME_CALLBACK_SET(pClient) ((pClient) != NULL && ((pClient)->signalingClientCallbacks.getCurrentTimeFn != NULL)) + +#define SIGNALING_GET_CURRENT_TIME(pClient) (IS_CURRENT_TIME_CALLBACK_SET((pClient)) ? \ + ((pClient)->signalingClientCallbacks.getCurrentTimeFn((pClient)->signalingClientCallbacks.customData)) : \ + GETTIME()) + static const ExponentialBackoffRetryStrategyConfig DEFAULT_SIGNALING_STATE_MACHINE_EXPONENTIAL_BACKOFF_RETRY_CONFIGURATION = { /* Exponential wait times with this config will look like following - ************************************ @@ -163,6 +177,7 @@ typedef struct { UINT64 connectTime; UINT64 cpApiLatency; UINT64 dpApiLatency; + PHashTable pEndpointToClockSkewHashMap; UINT32 stateMachineRetryCount; } SignalingDiagnostics, PSignalingDiagnostics; diff --git a/src/source/Signaling/StateMachine.c b/src/source/Signaling/StateMachine.c index ab3a06db2b..8b21cc599c 100644 --- a/src/source/Signaling/StateMachine.c +++ b/src/source/Signaling/StateMachine.c @@ -191,7 +191,8 @@ STATUS signalingStateMachineIterator(PSignalingClient pSignalingClient, UINT64 e } } - currentTime = GETTIME(); + currentTime = SIGNALING_GET_CURRENT_TIME(pSignalingClient); + CHK(expiration == 0 || currentTime <= expiration, STATUS_OPERATION_TIMED_OUT); // Fix-up the expired credentials transition @@ -398,7 +399,7 @@ STATUS executeGetTokenSignalingState(UINT64 customData, UINT64 time) retStatus = pSignalingClient->pCredentialProvider->getCredentialsFn(pSignalingClient->pCredentialProvider, &pSignalingClient->pAwsCredentials); // Check the expiration - if (NULL == pSignalingClient->pAwsCredentials || GETTIME() >= pSignalingClient->pAwsCredentials->expiration) { + if (NULL == pSignalingClient->pAwsCredentials || SIGNALING_GET_CURRENT_TIME(pSignalingClient) >= pSignalingClient->pAwsCredentials->expiration) { serviceCallResult = SERVICE_CALL_NOT_AUTHORIZED; } else { serviceCallResult = SERVICE_CALL_RESULT_OK; diff --git a/tst/SignalingApiFunctionalityTest.cpp b/tst/SignalingApiFunctionalityTest.cpp index e48c16801b..93a41def18 100644 --- a/tst/SignalingApiFunctionalityTest.cpp +++ b/tst/SignalingApiFunctionalityTest.cpp @@ -144,6 +144,16 @@ STATUS getIceConfigPreHook(UINT64 hookCustomData) return retStatus; } +UINT64 getCurrentTimeFastClock(UINT64 customData) { + UNUSED_PARAM(customData); + return GETTIME() + (30 * HUNDREDS_OF_NANOS_IN_A_MINUTE); +} + +UINT64 getCurrentTimeSlowClock(UINT64 customData) { + UNUSED_PARAM(customData); + return GETTIME() - (30 * HUNDREDS_OF_NANOS_IN_A_MINUTE); +} + STATUS connectPreHook(UINT64 hookCustomData) { STATUS retStatus = STATUS_SUCCESS; @@ -224,6 +234,7 @@ TEST_F(SignalingApiFunctionalityTest, basicCreateConnectFree) signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; @@ -312,6 +323,7 @@ TEST_F(SignalingApiFunctionalityTest, mockMaster) signalingClientCallbacks.messageReceivedFn = masterMessageReceived; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; @@ -449,6 +461,8 @@ TEST_F(SignalingApiFunctionalityTest, mockViewer) signalingClientCallbacks.messageReceivedFn = viewerMessageReceived; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; + clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; @@ -550,6 +564,8 @@ TEST_F(SignalingApiFunctionalityTest, invalidChannelInfoInput) signalingClientCallbacks.customData = (UINT64) this; signalingClientCallbacks.messageReceivedFn = (SignalingClientMessageReceivedFunc) 1; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; + clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; STRCPY(clientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); @@ -758,6 +774,7 @@ TEST_F(SignalingApiFunctionalityTest, invalidChannelInfoInput) signalingClientCallbacks.messageReceivedFn = viewerMessageReceived; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; @@ -829,6 +846,7 @@ TEST_F(SignalingApiFunctionalityTest, iceReconnectEmulation) signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; @@ -916,6 +934,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedVariatio signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -1180,6 +1199,8 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedVariations) signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; + MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -1445,6 +1466,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedAuthExpi signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -1566,6 +1588,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedAuthExpirat signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -1690,6 +1713,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaul signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -1805,6 +1829,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithFaultIn signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -1922,6 +1947,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaul signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -2035,6 +2061,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithFaultIn signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -2151,6 +2178,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithBadA signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -2266,6 +2294,8 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithBadAuth signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; + MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -2382,6 +2412,7 @@ TEST_F(SignalingApiFunctionalityTest, goAwayEmulation) signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; @@ -2466,6 +2497,7 @@ TEST_F(SignalingApiFunctionalityTest, unknownMessageTypeEmulation) signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfo.loggingLevel = LOG_LEVEL_VERBOSE; @@ -2557,6 +2589,7 @@ TEST_F(SignalingApiFunctionalityTest, connectTimeoutEmulation) signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -2674,6 +2707,7 @@ TEST_F(SignalingApiFunctionalityTest, channelInfoArnSkipDescribe) signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -2805,6 +2839,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedWithArn) signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -2935,6 +2970,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedAuthExpiration) signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -3092,6 +3128,7 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -3230,6 +3267,7 @@ TEST_F(SignalingApiFunctionalityTest, fileCachingTest) signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -3355,6 +3393,7 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer) signalingClientCallbacks.messageReceivedFn = NULL; signalingClientCallbacks.errorReportFn = signalingClientError; signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = NULL; MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); @@ -3520,6 +3559,586 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer) EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); } +TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_SlowClockSkew) +{ + if (!mAccessKeyIdSet) { + return; + } + + ChannelInfo channelInfo; + SignalingClientCallbacks signalingClientCallbacks; + SignalingClientInfoInternal clientInfoInternal; + PSignalingClient pSignalingClient; + SIGNALING_CLIENT_HANDLE signalingHandle; + UINT32 i, iceCount; + PIceConfigInfo pIceConfigInfo; + + signalingClientCallbacks.version = SIGNALING_CLIENT_CALLBACKS_CURRENT_VERSION; + signalingClientCallbacks.customData = (UINT64) this; + signalingClientCallbacks.messageReceivedFn = NULL; + signalingClientCallbacks.errorReportFn = signalingClientError; + signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = getCurrentTimeSlowClock; + + MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); + + clientInfoInternal.signalingClientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; + clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; + STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + + MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); + channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; + channelInfo.pChannelName = mChannelName; + channelInfo.pKmsKeyId = NULL; + channelInfo.tagCount = 0; + channelInfo.pTags = NULL; + channelInfo.channelType = SIGNALING_CHANNEL_TYPE_SINGLE_MASTER; + channelInfo.channelRoleType = SIGNALING_CHANNEL_ROLE_TYPE_MASTER; + channelInfo.cachingPolicy = SIGNALING_API_CALL_CACHE_TYPE_NONE; + channelInfo.retry = TRUE; + channelInfo.reconnect = TRUE; + channelInfo.pCertPath = mCaCertPath; + channelInfo.messageTtl = TEST_SIGNALING_MESSAGE_TTL; + + EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); + signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); + EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + + // Connect to the channel + EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); + + pActiveClient = pSignalingClient; + + // Connect to the signaling client + EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); + + // Should have an exiting ICE configuration + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); + // Describe is 3 because the first one requests in expired signature, second + // one results in 404 (not found because it doesn't exist) + // Then we call create which also fails once due to expired signature then succeeds + // the second time, then we call describe a 3rd time which succeeds + // At this point we have both fixed the clock skew offset in the code + // as well as created the channel we are calling describe on. + EXPECT_EQ(3, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_READY]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTING]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); + EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DISCONNECTED]); + + // Ensure the ICE is not refreshed as we already have a current non-expired set + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); + EXPECT_NE(0, iceCount); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + + // Trigger the ICE refresh immediately on any of the ICE accessor calls + pSignalingClient->iceConfigCount = 0; + + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); + EXPECT_NE(0, iceCount); + EXPECT_EQ(3, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + + // Set to invalid again and trigger an update via offer message + pSignalingClient->iceConfigCount = 0; + + // Inject a reconnect ice server message + CHAR message[] = "{\n" + " \"messageType\": \"SDP_OFFER\",\n" + " \"senderClientId\": \"ProducerMaster\",\n" + " \"messagePayload\": \"eyJ0eXBlIjogIm9mZmVyIiwgInNkcCI6ICJ2PTBcclxubz0tIDIwNTE4OTcyNDggMiBJTiBJUDQgMTI3LjAuMC4xXHJcbnM9LVxyXG50PTAgMFxyXG5hPWdyb3VwOkJVTkRMRSAwIDEgMlxyXG5hPW1zaWQtc2VtYW50aWM6IFdNUyBteUt2c1ZpZGVvU3RyZWFtXHJcbm09YXVkaW8gOSBVRFAvVExTL1JUUC9TQVZQRiAxMTFcclxuYz1JTiBJUDQgMTI3LjAuMC4xXHJcbmE9Y2FuZGlkYXRlOjUgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTo0IDEgdWRwIDE2Nzc3MjE1IDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCAwIHR5cCByZWxheSByYWRkciA6Oi8wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MyAxIHVkcCAxNjk0NDk4ODE1IDE5Mi4xNjguMC4yMyA1MTIwNSB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjIgMSB1ZHAgMTY3NzcyMTg1NSAxMC45NS4yMDQuNjEgNTI2NDYgdHlwIHNyZmx4IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZToxIDEgdWRwIDIxMTM5Mjk0NzEgMTAuOTUuMjA0LjYxIDUzNDI4IHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTowIDEgdWRwIDIxMzA3MDY0MzEgMTkyLjE2OC4wLjIzIDUwMTIzIHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPW1zaWQ6bXlLdnNWaWRlb1N0cmVhbSBteUF1ZGlvVHJhY2tcclxuYT1zc3JjOjE4OTEzODY4OTYgY25hbWU6QlA0bEVqdTBHK0VBQk0yS1xyXG5hPXNzcmM6MTg5MTM4Njg5NiBtc2lkOm15S3ZzVmlkZW9TdHJlYW0gbXlBdWRpb1RyYWNrXHJcbmE9c3NyYzoxODkxMzg2ODk2IG1zbGFiZWw6bXlLdnNWaWRlb1N0cmVhbVxyXG5hPXNzcmM6MTg5MTM4Njg5NiBsYWJlbDpteUF1ZGlvVHJhY2tcclxuYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuYT1pY2UtdWZyYWc6VVhwM1xyXG5hPWljZS1wd2Q6NGZZbTlEa1FQazl1YmRRQ2RyaFBhVFpnXHJcbmE9aWNlLW9wdGlvbnM6dHJpY2tsZVxyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjBcclxuYT1zZW5kcmVjdlxyXG5hPXJ0Y3AtbXV4XHJcbmE9cnRjcC1yc2l6ZVxyXG5hPXJ0cG1hcDoxMTEgb3B1cy80ODAwMC8yXHJcbmE9Zm10cDoxMTEgbWlucHRpbWU9MTA7dXNlaW5iYW5kZmVjPTFcclxuYT1ydGNwLWZiOjExMSBuYWNrXHJcbm09dmlkZW8gOSBVRFAvVExTL1JUUC9TQVZQRiAxMjVcclxuYz1JTiBJUDQgMTI3LjAuMC4xXHJcbmE9Y2FuZGlkYXRlOjUgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTo0IDEgdWRwIDE2Nzc3MjE1IDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCAwIHR5cCByZWxheSByYWRkciA6Oi8wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MyAxIHVkcCAxNjk0NDk4ODE1IDE5Mi4xNjguMC4yMyA1MTIwNSB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjIgMSB1ZHAgMTY3NzcyMTg1NSAxMC45NS4yMDQuNjEgNTI2NDYgdHlwIHNyZmx4IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZToxIDEgdWRwIDIxMTM5Mjk0NzEgMTAuOTUuMjA0LjYxIDUzNDI4IHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTowIDEgdWRwIDIxMzA3MDY0MzEgMTkyLjE2OC4wLjIzIDUwMTIzIHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPW1zaWQ6bXlLdnNWaWRlb1N0cmVhbSBteVZpZGVvVHJhY2tcclxuYT1zc3JjOjIxNDEwMjk1OTIgY25hbWU6QlA0bEVqdTBHK0VBQk0yS1xyXG5hPXNzcmM6MjE0MTAyOTU5MiBtc2lkOm15S3ZzVmlkZW9TdHJlYW0gbXlWaWRlb1RyYWNrXHJcbmE9c3NyYzoyMTQxMDI5NTkyIG1zbGFiZWw6bXlLdnNWaWRlb1N0cmVhbVxyXG5hPXNzcmM6MjE0MTAyOTU5MiBsYWJlbDpteVZpZGVvVHJhY2tcclxuYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuYT1pY2UtdWZyYWc6VVhwM1xyXG5hPWljZS1wd2Q6NGZZbTlEa1FQazl1YmRRQ2RyaFBhVFpnXHJcbmE9aWNlLW9wdGlvbnM6dHJpY2tsZVxyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjFcclxuYT1zZW5kcmVjdlxyXG5hPXJ0Y3AtbXV4XHJcbmE9cnRjcC1yc2l6ZVxyXG5hPXJ0cG1hcDoxMjUgSDI2NC85MDAwMFxyXG5hPWZtdHA6MTI1IGxldmVsLWFzeW1tZXRyeS1hbGxvd2VkPTE7cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWZcclxuYT1ydGNwLWZiOjEyNSBuYWNrXHJcbm09YXBwbGljYXRpb24gOSBVRFAvRFRMUy9TQ1RQIHdlYnJ0Yy1kYXRhY2hhbm5lbFxyXG5jPUlOIElQNCAxMjcuMC4wLjFcclxuYT1jYW5kaWRhdGU6NSAxIHVkcCAxNjc3NzIxNSAwMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAgMCB0eXAgcmVsYXkgcmFkZHIgOjovMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjQgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTozIDEgdWRwIDE2OTQ0OTg4MTUgMTkyLjE2OC4wLjIzIDUxMjA1IHR5cCBzcmZseCByYWRkciAwLjAuMC4wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MiAxIHVkcCAxNjc3NzIxODU1IDEwLjk1LjIwNC42MSA1MjY0NiB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjEgMSB1ZHAgMjExMzkyOTQ3MSAxMC45NS4yMDQuNjEgNTM0MjggdHlwIGhvc3QgcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjAgMSB1ZHAgMjEzMDcwNjQzMSAxOTIuMTY4LjAuMjMgNTAxMjMgdHlwIGhvc3QgcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9cnRjcDo5IElOIElQNCAwLjAuMC4wXHJcbmE9aWNlLXVmcmFnOlVYcDNcclxuYT1pY2UtcHdkOjRmWW05RGtRUGs5dWJkUUNkcmhQYVRaZ1xyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjJcclxuYT1zY3RwLXBvcnQ6NTAwMFxyXG4ifQ==\",\n" + " \"IceServerList\": [{\n" + " \"Password\": \"ZEXx/a0G7reNO4SrDoK0zYoXZCamD+k/mIn6PEiuDTk=\",\n" + " \"Ttl\": 298,\n" + " \"Uris\": [\"turn:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp\"],\n" + " \"Username\": \"1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==\"\n" + " },\n" + " {\n" + " \"Password\": \"k5PFpnyKu+oLa3Y3QUIhi+NA3BONdSUevw7NAAy/Nms=\",\n" + " \"Ttl\": 298,\n" + " \"Uris\": [\"turn:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp\"],\n" + " \"Username\": \"1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==\"\n" + " }\n" + " ],\n" + " \"statusResponse\": {\n" + " \"correlationId\": \"CorrelationID\",\n" + " \"errorType\": \"Unknown message\",\n" + " \"statusCode\": \"200\",\n" + " \"description\": \"Test attempt to send an unknown message\"\n" + " }\n" + "}"; + + EXPECT_EQ(STATUS_SUCCESS, receiveLwsMessage(pSignalingClient, message, ARRAY_SIZE(message))); + + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); + + // ICE should not have been called again as we updated it via a message + EXPECT_EQ(3, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + + // Validate the retrieved info + EXPECT_EQ(2, iceCount); + + for (i = 0; i < iceCount; i++) { + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, i, &pIceConfigInfo)); + EXPECT_NE(0, pIceConfigInfo->uriCount); + EXPECT_EQ(298 * HUNDREDS_OF_NANOS_IN_A_SECOND, pIceConfigInfo->ttl); + EXPECT_EQ(SIGNALING_ICE_CONFIG_INFO_CURRENT_VERSION, pIceConfigInfo->version); + EXPECT_EQ(0, STRCMP("1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==", pIceConfigInfo->userName)); + } + + // + // Set to invalid again to trigger an update. + // The message will not update as the type is not an offer + // + pSignalingClient->iceConfigCount = 0; + + // Inject a reconnect ice server message + CHAR message2[] = "{\n" + " \"messageType\": \"SDP_ANSWER\",\n" + " \"senderClientId\": \"ProducerMaster\",\n" + " \"messagePayload\": \"eyJ0eXBlIjogIm9mZmVyIiwgInNkcCI6ICJ2PTBcclxubz0tIDIwNTE4OTcyNDggMiBJTiBJUDQgMTI3LjAuMC4xXHJcbnM9LVxyXG50PTAgMFxyXG5hPWdyb3VwOkJVTkRMRSAwIDEgMlxyXG5hPW1zaWQtc2VtYW50aWM6IFdNUyBteUt2c1ZpZGVvU3RyZWFtXHJcbm09YXVkaW8gOSBVRFAvVExTL1JUUC9TQVZQRiAxMTFcclxuYz1JTiBJUDQgMTI3LjAuMC4xXHJcbmE9Y2FuZGlkYXRlOjUgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTo0IDEgdWRwIDE2Nzc3MjE1IDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCAwIHR5cCByZWxheSByYWRkciA6Oi8wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MyAxIHVkcCAxNjk0NDk4ODE1IDE5Mi4xNjguMC4yMyA1MTIwNSB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjIgMSB1ZHAgMTY3NzcyMTg1NSAxMC45NS4yMDQuNjEgNTI2NDYgdHlwIHNyZmx4IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZToxIDEgdWRwIDIxMTM5Mjk0NzEgMTAuOTUuMjA0LjYxIDUzNDI4IHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTowIDEgdWRwIDIxMzA3MDY0MzEgMTkyLjE2OC4wLjIzIDUwMTIzIHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPW1zaWQ6bXlLdnNWaWRlb1N0cmVhbSBteUF1ZGlvVHJhY2tcclxuYT1zc3JjOjE4OTEzODY4OTYgY25hbWU6QlA0bEVqdTBHK0VBQk0yS1xyXG5hPXNzcmM6MTg5MTM4Njg5NiBtc2lkOm15S3ZzVmlkZW9TdHJlYW0gbXlBdWRpb1RyYWNrXHJcbmE9c3NyYzoxODkxMzg2ODk2IG1zbGFiZWw6bXlLdnNWaWRlb1N0cmVhbVxyXG5hPXNzcmM6MTg5MTM4Njg5NiBsYWJlbDpteUF1ZGlvVHJhY2tcclxuYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuYT1pY2UtdWZyYWc6VVhwM1xyXG5hPWljZS1wd2Q6NGZZbTlEa1FQazl1YmRRQ2RyaFBhVFpnXHJcbmE9aWNlLW9wdGlvbnM6dHJpY2tsZVxyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjBcclxuYT1zZW5kcmVjdlxyXG5hPXJ0Y3AtbXV4XHJcbmE9cnRjcC1yc2l6ZVxyXG5hPXJ0cG1hcDoxMTEgb3B1cy80ODAwMC8yXHJcbmE9Zm10cDoxMTEgbWlucHRpbWU9MTA7dXNlaW5iYW5kZmVjPTFcclxuYT1ydGNwLWZiOjExMSBuYWNrXHJcbm09dmlkZW8gOSBVRFAvVExTL1JUUC9TQVZQRiAxMjVcclxuYz1JTiBJUDQgMTI3LjAuMC4xXHJcbmE9Y2FuZGlkYXRlOjUgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTo0IDEgdWRwIDE2Nzc3MjE1IDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCAwIHR5cCByZWxheSByYWRkciA6Oi8wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MyAxIHVkcCAxNjk0NDk4ODE1IDE5Mi4xNjguMC4yMyA1MTIwNSB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjIgMSB1ZHAgMTY3NzcyMTg1NSAxMC45NS4yMDQuNjEgNTI2NDYgdHlwIHNyZmx4IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZToxIDEgdWRwIDIxMTM5Mjk0NzEgMTAuOTUuMjA0LjYxIDUzNDI4IHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTowIDEgdWRwIDIxMzA3MDY0MzEgMTkyLjE2OC4wLjIzIDUwMTIzIHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPW1zaWQ6bXlLdnNWaWRlb1N0cmVhbSBteVZpZGVvVHJhY2tcclxuYT1zc3JjOjIxNDEwMjk1OTIgY25hbWU6QlA0bEVqdTBHK0VBQk0yS1xyXG5hPXNzcmM6MjE0MTAyOTU5MiBtc2lkOm15S3ZzVmlkZW9TdHJlYW0gbXlWaWRlb1RyYWNrXHJcbmE9c3NyYzoyMTQxMDI5NTkyIG1zbGFiZWw6bXlLdnNWaWRlb1N0cmVhbVxyXG5hPXNzcmM6MjE0MTAyOTU5MiBsYWJlbDpteVZpZGVvVHJhY2tcclxuYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuYT1pY2UtdWZyYWc6VVhwM1xyXG5hPWljZS1wd2Q6NGZZbTlEa1FQazl1YmRRQ2RyaFBhVFpnXHJcbmE9aWNlLW9wdGlvbnM6dHJpY2tsZVxyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjFcclxuYT1zZW5kcmVjdlxyXG5hPXJ0Y3AtbXV4XHJcbmE9cnRjcC1yc2l6ZVxyXG5hPXJ0cG1hcDoxMjUgSDI2NC85MDAwMFxyXG5hPWZtdHA6MTI1IGxldmVsLWFzeW1tZXRyeS1hbGxvd2VkPTE7cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWZcclxuYT1ydGNwLWZiOjEyNSBuYWNrXHJcbm09YXBwbGljYXRpb24gOSBVRFAvRFRMUy9TQ1RQIHdlYnJ0Yy1kYXRhY2hhbm5lbFxyXG5jPUlOIElQNCAxMjcuMC4wLjFcclxuYT1jYW5kaWRhdGU6NSAxIHVkcCAxNjc3NzIxNSAwMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAgMCB0eXAgcmVsYXkgcmFkZHIgOjovMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjQgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTozIDEgdWRwIDE2OTQ0OTg4MTUgMTkyLjE2OC4wLjIzIDUxMjA1IHR5cCBzcmZseCByYWRkciAwLjAuMC4wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MiAxIHVkcCAxNjc3NzIxODU1IDEwLjk1LjIwNC42MSA1MjY0NiB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjEgMSB1ZHAgMjExMzkyOTQ3MSAxMC45NS4yMDQuNjEgNTM0MjggdHlwIGhvc3QgcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjAgMSB1ZHAgMjEzMDcwNjQzMSAxOTIuMTY4LjAuMjMgNTAxMjMgdHlwIGhvc3QgcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9cnRjcDo5IElOIElQNCAwLjAuMC4wXHJcbmE9aWNlLXVmcmFnOlVYcDNcclxuYT1pY2UtcHdkOjRmWW05RGtRUGs5dWJkUUNkcmhQYVRaZ1xyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjJcclxuYT1zY3RwLXBvcnQ6NTAwMFxyXG4ifQ==\",\n" + " \"IceServerList\": [{\n" + " \"Password\": \"ZEXx/a0G7reNO4SrDoK0zYoXZCamD+k/mIn6PEiuDTk=\",\n" + " \"Ttl\": 298,\n" + " \"Uris\": [\"turn:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp\"],\n" + " \"Username\": \"1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==\"\n" + " },\n" + " {\n" + " \"Password\": \"k5PFpnyKu+oLa3Y3QUIhi+NA3BONdSUevw7NAAy/Nms=\",\n" + " \"Ttl\": 298,\n" + " \"Uris\": [\"turn:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp\"],\n" + " \"Username\": \"1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==\"\n" + " }\n" + " ],\n" + " \"statusResponse\": {\n" + " \"correlationId\": \"CorrelationID\",\n" + " \"errorType\": \"Unknown message\",\n" + " \"statusCode\": \"200\",\n" + " \"description\": \"Test attempt to send an unknown message\"\n" + " }\n" + "}"; + + EXPECT_EQ(STATUS_SUCCESS, receiveLwsMessage(pSignalingClient, message2, ARRAY_SIZE(message2))); + + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); + + // ICE should have been called again as we couldn't have updated via the message + EXPECT_EQ(4, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + + // Check that we are connected and can send a message + SignalingMessage signalingMessage; + signalingMessage.version = SIGNALING_MESSAGE_CURRENT_VERSION; + signalingMessage.messageType = SIGNALING_MESSAGE_TYPE_OFFER; + STRCPY(signalingMessage.peerClientId, TEST_SIGNALING_MASTER_CLIENT_ID); + MEMSET(signalingMessage.payload, 'A', 100); + signalingMessage.payload[100] = '\0'; + signalingMessage.payloadLen = 0; + signalingMessage.correlationId[0] = '\0'; + + EXPECT_EQ(STATUS_SUCCESS, signalingClientSendMessageSync(signalingHandle, &signalingMessage)); + + deleteChannelLws(FROM_SIGNALING_CLIENT_HANDLE(signalingHandle), 0); + + EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); +} + + +TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_FastClockSkew) +{ + if (!mAccessKeyIdSet) { + return; + } + + ChannelInfo channelInfo; + SignalingClientCallbacks signalingClientCallbacks; + SignalingClientInfoInternal clientInfoInternal; + PSignalingClient pSignalingClient; + SIGNALING_CLIENT_HANDLE signalingHandle; + UINT32 i, iceCount; + PIceConfigInfo pIceConfigInfo; + + signalingClientCallbacks.version = SIGNALING_CLIENT_CALLBACKS_CURRENT_VERSION; + signalingClientCallbacks.customData = (UINT64) this; + signalingClientCallbacks.messageReceivedFn = NULL; + signalingClientCallbacks.errorReportFn = signalingClientError; + signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = getCurrentTimeFastClock; + + MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); + + clientInfoInternal.signalingClientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; + clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; + STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + + MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); + channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; + channelInfo.pChannelName = mChannelName; + channelInfo.pKmsKeyId = NULL; + channelInfo.tagCount = 0; + channelInfo.pTags = NULL; + channelInfo.channelType = SIGNALING_CHANNEL_TYPE_SINGLE_MASTER; + channelInfo.channelRoleType = SIGNALING_CHANNEL_ROLE_TYPE_MASTER; + channelInfo.cachingPolicy = SIGNALING_API_CALL_CACHE_TYPE_NONE; + channelInfo.retry = TRUE; + channelInfo.reconnect = TRUE; + channelInfo.pCertPath = mCaCertPath; + channelInfo.messageTtl = TEST_SIGNALING_MESSAGE_TTL; + + EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); + signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); + EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + + // Connect to the channel + EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); + + pActiveClient = pSignalingClient; + + // Connect to the signaling client + EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); + + // Should have an exiting ICE configuration + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); + // Describe is 3 because the first one requests in expired signature, second + // one results in 404 (not found because it doesn't exist) + // Then we call create which also fails once due to expired signature then succeeds + // the second time, then we call describe a 3rd time which succeeds + // At this point we have both fixed the clock skew offset in the code + // as well as created the channel we are calling describe on. + EXPECT_EQ(3, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_READY]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTING]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); + EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DISCONNECTED]); + + // Ensure the ICE is not refreshed as we already have a current non-expired set + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); + EXPECT_NE(0, iceCount); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + + // Trigger the ICE refresh immediately on any of the ICE accessor calls + pSignalingClient->iceConfigCount = 0; + + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); + EXPECT_NE(0, iceCount); + EXPECT_EQ(3, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + + // Set to invalid again and trigger an update via offer message + pSignalingClient->iceConfigCount = 0; + + // Inject a reconnect ice server message + CHAR message[] = "{\n" + " \"messageType\": \"SDP_OFFER\",\n" + " \"senderClientId\": \"ProducerMaster\",\n" + " \"messagePayload\": \"eyJ0eXBlIjogIm9mZmVyIiwgInNkcCI6ICJ2PTBcclxubz0tIDIwNTE4OTcyNDggMiBJTiBJUDQgMTI3LjAuMC4xXHJcbnM9LVxyXG50PTAgMFxyXG5hPWdyb3VwOkJVTkRMRSAwIDEgMlxyXG5hPW1zaWQtc2VtYW50aWM6IFdNUyBteUt2c1ZpZGVvU3RyZWFtXHJcbm09YXVkaW8gOSBVRFAvVExTL1JUUC9TQVZQRiAxMTFcclxuYz1JTiBJUDQgMTI3LjAuMC4xXHJcbmE9Y2FuZGlkYXRlOjUgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTo0IDEgdWRwIDE2Nzc3MjE1IDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCAwIHR5cCByZWxheSByYWRkciA6Oi8wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MyAxIHVkcCAxNjk0NDk4ODE1IDE5Mi4xNjguMC4yMyA1MTIwNSB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjIgMSB1ZHAgMTY3NzcyMTg1NSAxMC45NS4yMDQuNjEgNTI2NDYgdHlwIHNyZmx4IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZToxIDEgdWRwIDIxMTM5Mjk0NzEgMTAuOTUuMjA0LjYxIDUzNDI4IHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTowIDEgdWRwIDIxMzA3MDY0MzEgMTkyLjE2OC4wLjIzIDUwMTIzIHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPW1zaWQ6bXlLdnNWaWRlb1N0cmVhbSBteUF1ZGlvVHJhY2tcclxuYT1zc3JjOjE4OTEzODY4OTYgY25hbWU6QlA0bEVqdTBHK0VBQk0yS1xyXG5hPXNzcmM6MTg5MTM4Njg5NiBtc2lkOm15S3ZzVmlkZW9TdHJlYW0gbXlBdWRpb1RyYWNrXHJcbmE9c3NyYzoxODkxMzg2ODk2IG1zbGFiZWw6bXlLdnNWaWRlb1N0cmVhbVxyXG5hPXNzcmM6MTg5MTM4Njg5NiBsYWJlbDpteUF1ZGlvVHJhY2tcclxuYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuYT1pY2UtdWZyYWc6VVhwM1xyXG5hPWljZS1wd2Q6NGZZbTlEa1FQazl1YmRRQ2RyaFBhVFpnXHJcbmE9aWNlLW9wdGlvbnM6dHJpY2tsZVxyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjBcclxuYT1zZW5kcmVjdlxyXG5hPXJ0Y3AtbXV4XHJcbmE9cnRjcC1yc2l6ZVxyXG5hPXJ0cG1hcDoxMTEgb3B1cy80ODAwMC8yXHJcbmE9Zm10cDoxMTEgbWlucHRpbWU9MTA7dXNlaW5iYW5kZmVjPTFcclxuYT1ydGNwLWZiOjExMSBuYWNrXHJcbm09dmlkZW8gOSBVRFAvVExTL1JUUC9TQVZQRiAxMjVcclxuYz1JTiBJUDQgMTI3LjAuMC4xXHJcbmE9Y2FuZGlkYXRlOjUgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTo0IDEgdWRwIDE2Nzc3MjE1IDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCAwIHR5cCByZWxheSByYWRkciA6Oi8wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MyAxIHVkcCAxNjk0NDk4ODE1IDE5Mi4xNjguMC4yMyA1MTIwNSB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjIgMSB1ZHAgMTY3NzcyMTg1NSAxMC45NS4yMDQuNjEgNTI2NDYgdHlwIHNyZmx4IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZToxIDEgdWRwIDIxMTM5Mjk0NzEgMTAuOTUuMjA0LjYxIDUzNDI4IHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTowIDEgdWRwIDIxMzA3MDY0MzEgMTkyLjE2OC4wLjIzIDUwMTIzIHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPW1zaWQ6bXlLdnNWaWRlb1N0cmVhbSBteVZpZGVvVHJhY2tcclxuYT1zc3JjOjIxNDEwMjk1OTIgY25hbWU6QlA0bEVqdTBHK0VBQk0yS1xyXG5hPXNzcmM6MjE0MTAyOTU5MiBtc2lkOm15S3ZzVmlkZW9TdHJlYW0gbXlWaWRlb1RyYWNrXHJcbmE9c3NyYzoyMTQxMDI5NTkyIG1zbGFiZWw6bXlLdnNWaWRlb1N0cmVhbVxyXG5hPXNzcmM6MjE0MTAyOTU5MiBsYWJlbDpteVZpZGVvVHJhY2tcclxuYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuYT1pY2UtdWZyYWc6VVhwM1xyXG5hPWljZS1wd2Q6NGZZbTlEa1FQazl1YmRRQ2RyaFBhVFpnXHJcbmE9aWNlLW9wdGlvbnM6dHJpY2tsZVxyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjFcclxuYT1zZW5kcmVjdlxyXG5hPXJ0Y3AtbXV4XHJcbmE9cnRjcC1yc2l6ZVxyXG5hPXJ0cG1hcDoxMjUgSDI2NC85MDAwMFxyXG5hPWZtdHA6MTI1IGxldmVsLWFzeW1tZXRyeS1hbGxvd2VkPTE7cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWZcclxuYT1ydGNwLWZiOjEyNSBuYWNrXHJcbm09YXBwbGljYXRpb24gOSBVRFAvRFRMUy9TQ1RQIHdlYnJ0Yy1kYXRhY2hhbm5lbFxyXG5jPUlOIElQNCAxMjcuMC4wLjFcclxuYT1jYW5kaWRhdGU6NSAxIHVkcCAxNjc3NzIxNSAwMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAgMCB0eXAgcmVsYXkgcmFkZHIgOjovMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjQgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTozIDEgdWRwIDE2OTQ0OTg4MTUgMTkyLjE2OC4wLjIzIDUxMjA1IHR5cCBzcmZseCByYWRkciAwLjAuMC4wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MiAxIHVkcCAxNjc3NzIxODU1IDEwLjk1LjIwNC42MSA1MjY0NiB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjEgMSB1ZHAgMjExMzkyOTQ3MSAxMC45NS4yMDQuNjEgNTM0MjggdHlwIGhvc3QgcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjAgMSB1ZHAgMjEzMDcwNjQzMSAxOTIuMTY4LjAuMjMgNTAxMjMgdHlwIGhvc3QgcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9cnRjcDo5IElOIElQNCAwLjAuMC4wXHJcbmE9aWNlLXVmcmFnOlVYcDNcclxuYT1pY2UtcHdkOjRmWW05RGtRUGs5dWJkUUNkcmhQYVRaZ1xyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjJcclxuYT1zY3RwLXBvcnQ6NTAwMFxyXG4ifQ==\",\n" + " \"IceServerList\": [{\n" + " \"Password\": \"ZEXx/a0G7reNO4SrDoK0zYoXZCamD+k/mIn6PEiuDTk=\",\n" + " \"Ttl\": 298,\n" + " \"Uris\": [\"turn:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp\"],\n" + " \"Username\": \"1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==\"\n" + " },\n" + " {\n" + " \"Password\": \"k5PFpnyKu+oLa3Y3QUIhi+NA3BONdSUevw7NAAy/Nms=\",\n" + " \"Ttl\": 298,\n" + " \"Uris\": [\"turn:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp\"],\n" + " \"Username\": \"1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==\"\n" + " }\n" + " ],\n" + " \"statusResponse\": {\n" + " \"correlationId\": \"CorrelationID\",\n" + " \"errorType\": \"Unknown message\",\n" + " \"statusCode\": \"200\",\n" + " \"description\": \"Test attempt to send an unknown message\"\n" + " }\n" + "}"; + + EXPECT_EQ(STATUS_SUCCESS, receiveLwsMessage(pSignalingClient, message, ARRAY_SIZE(message))); + + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); + + // ICE should not have been called again as we updated it via a message + EXPECT_EQ(3, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + + // Validate the retrieved info + EXPECT_EQ(2, iceCount); + + for (i = 0; i < iceCount; i++) { + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, i, &pIceConfigInfo)); + EXPECT_NE(0, pIceConfigInfo->uriCount); + EXPECT_EQ(298 * HUNDREDS_OF_NANOS_IN_A_SECOND, pIceConfigInfo->ttl); + EXPECT_EQ(SIGNALING_ICE_CONFIG_INFO_CURRENT_VERSION, pIceConfigInfo->version); + EXPECT_EQ(0, STRCMP("1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==", pIceConfigInfo->userName)); + } + + // + // Set to invalid again to trigger an update. + // The message will not update as the type is not an offer + // + pSignalingClient->iceConfigCount = 0; + + // Inject a reconnect ice server message + CHAR message2[] = "{\n" + " \"messageType\": \"SDP_ANSWER\",\n" + " \"senderClientId\": \"ProducerMaster\",\n" + " \"messagePayload\": \"eyJ0eXBlIjogIm9mZmVyIiwgInNkcCI6ICJ2PTBcclxubz0tIDIwNTE4OTcyNDggMiBJTiBJUDQgMTI3LjAuMC4xXHJcbnM9LVxyXG50PTAgMFxyXG5hPWdyb3VwOkJVTkRMRSAwIDEgMlxyXG5hPW1zaWQtc2VtYW50aWM6IFdNUyBteUt2c1ZpZGVvU3RyZWFtXHJcbm09YXVkaW8gOSBVRFAvVExTL1JUUC9TQVZQRiAxMTFcclxuYz1JTiBJUDQgMTI3LjAuMC4xXHJcbmE9Y2FuZGlkYXRlOjUgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTo0IDEgdWRwIDE2Nzc3MjE1IDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCAwIHR5cCByZWxheSByYWRkciA6Oi8wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MyAxIHVkcCAxNjk0NDk4ODE1IDE5Mi4xNjguMC4yMyA1MTIwNSB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjIgMSB1ZHAgMTY3NzcyMTg1NSAxMC45NS4yMDQuNjEgNTI2NDYgdHlwIHNyZmx4IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZToxIDEgdWRwIDIxMTM5Mjk0NzEgMTAuOTUuMjA0LjYxIDUzNDI4IHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTowIDEgdWRwIDIxMzA3MDY0MzEgMTkyLjE2OC4wLjIzIDUwMTIzIHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPW1zaWQ6bXlLdnNWaWRlb1N0cmVhbSBteUF1ZGlvVHJhY2tcclxuYT1zc3JjOjE4OTEzODY4OTYgY25hbWU6QlA0bEVqdTBHK0VBQk0yS1xyXG5hPXNzcmM6MTg5MTM4Njg5NiBtc2lkOm15S3ZzVmlkZW9TdHJlYW0gbXlBdWRpb1RyYWNrXHJcbmE9c3NyYzoxODkxMzg2ODk2IG1zbGFiZWw6bXlLdnNWaWRlb1N0cmVhbVxyXG5hPXNzcmM6MTg5MTM4Njg5NiBsYWJlbDpteUF1ZGlvVHJhY2tcclxuYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuYT1pY2UtdWZyYWc6VVhwM1xyXG5hPWljZS1wd2Q6NGZZbTlEa1FQazl1YmRRQ2RyaFBhVFpnXHJcbmE9aWNlLW9wdGlvbnM6dHJpY2tsZVxyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjBcclxuYT1zZW5kcmVjdlxyXG5hPXJ0Y3AtbXV4XHJcbmE9cnRjcC1yc2l6ZVxyXG5hPXJ0cG1hcDoxMTEgb3B1cy80ODAwMC8yXHJcbmE9Zm10cDoxMTEgbWlucHRpbWU9MTA7dXNlaW5iYW5kZmVjPTFcclxuYT1ydGNwLWZiOjExMSBuYWNrXHJcbm09dmlkZW8gOSBVRFAvVExTL1JUUC9TQVZQRiAxMjVcclxuYz1JTiBJUDQgMTI3LjAuMC4xXHJcbmE9Y2FuZGlkYXRlOjUgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTo0IDEgdWRwIDE2Nzc3MjE1IDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCAwIHR5cCByZWxheSByYWRkciA6Oi8wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MyAxIHVkcCAxNjk0NDk4ODE1IDE5Mi4xNjguMC4yMyA1MTIwNSB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjIgMSB1ZHAgMTY3NzcyMTg1NSAxMC45NS4yMDQuNjEgNTI2NDYgdHlwIHNyZmx4IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZToxIDEgdWRwIDIxMTM5Mjk0NzEgMTAuOTUuMjA0LjYxIDUzNDI4IHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTowIDEgdWRwIDIxMzA3MDY0MzEgMTkyLjE2OC4wLjIzIDUwMTIzIHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPW1zaWQ6bXlLdnNWaWRlb1N0cmVhbSBteVZpZGVvVHJhY2tcclxuYT1zc3JjOjIxNDEwMjk1OTIgY25hbWU6QlA0bEVqdTBHK0VBQk0yS1xyXG5hPXNzcmM6MjE0MTAyOTU5MiBtc2lkOm15S3ZzVmlkZW9TdHJlYW0gbXlWaWRlb1RyYWNrXHJcbmE9c3NyYzoyMTQxMDI5NTkyIG1zbGFiZWw6bXlLdnNWaWRlb1N0cmVhbVxyXG5hPXNzcmM6MjE0MTAyOTU5MiBsYWJlbDpteVZpZGVvVHJhY2tcclxuYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuYT1pY2UtdWZyYWc6VVhwM1xyXG5hPWljZS1wd2Q6NGZZbTlEa1FQazl1YmRRQ2RyaFBhVFpnXHJcbmE9aWNlLW9wdGlvbnM6dHJpY2tsZVxyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjFcclxuYT1zZW5kcmVjdlxyXG5hPXJ0Y3AtbXV4XHJcbmE9cnRjcC1yc2l6ZVxyXG5hPXJ0cG1hcDoxMjUgSDI2NC85MDAwMFxyXG5hPWZtdHA6MTI1IGxldmVsLWFzeW1tZXRyeS1hbGxvd2VkPTE7cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWZcclxuYT1ydGNwLWZiOjEyNSBuYWNrXHJcbm09YXBwbGljYXRpb24gOSBVRFAvRFRMUy9TQ1RQIHdlYnJ0Yy1kYXRhY2hhbm5lbFxyXG5jPUlOIElQNCAxMjcuMC4wLjFcclxuYT1jYW5kaWRhdGU6NSAxIHVkcCAxNjc3NzIxNSAwMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAgMCB0eXAgcmVsYXkgcmFkZHIgOjovMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjQgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTozIDEgdWRwIDE2OTQ0OTg4MTUgMTkyLjE2OC4wLjIzIDUxMjA1IHR5cCBzcmZseCByYWRkciAwLjAuMC4wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MiAxIHVkcCAxNjc3NzIxODU1IDEwLjk1LjIwNC42MSA1MjY0NiB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjEgMSB1ZHAgMjExMzkyOTQ3MSAxMC45NS4yMDQuNjEgNTM0MjggdHlwIGhvc3QgcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjAgMSB1ZHAgMjEzMDcwNjQzMSAxOTIuMTY4LjAuMjMgNTAxMjMgdHlwIGhvc3QgcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9cnRjcDo5IElOIElQNCAwLjAuMC4wXHJcbmE9aWNlLXVmcmFnOlVYcDNcclxuYT1pY2UtcHdkOjRmWW05RGtRUGs5dWJkUUNkcmhQYVRaZ1xyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjJcclxuYT1zY3RwLXBvcnQ6NTAwMFxyXG4ifQ==\",\n" + " \"IceServerList\": [{\n" + " \"Password\": \"ZEXx/a0G7reNO4SrDoK0zYoXZCamD+k/mIn6PEiuDTk=\",\n" + " \"Ttl\": 298,\n" + " \"Uris\": [\"turn:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp\"],\n" + " \"Username\": \"1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==\"\n" + " },\n" + " {\n" + " \"Password\": \"k5PFpnyKu+oLa3Y3QUIhi+NA3BONdSUevw7NAAy/Nms=\",\n" + " \"Ttl\": 298,\n" + " \"Uris\": [\"turn:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp\"],\n" + " \"Username\": \"1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==\"\n" + " }\n" + " ],\n" + " \"statusResponse\": {\n" + " \"correlationId\": \"CorrelationID\",\n" + " \"errorType\": \"Unknown message\",\n" + " \"statusCode\": \"200\",\n" + " \"description\": \"Test attempt to send an unknown message\"\n" + " }\n" + "}"; + + EXPECT_EQ(STATUS_SUCCESS, receiveLwsMessage(pSignalingClient, message2, ARRAY_SIZE(message2))); + + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); + + // ICE should have been called again as we couldn't have updated via the message + EXPECT_EQ(4, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + + // Check that we are connected and can send a message + SignalingMessage signalingMessage; + signalingMessage.version = SIGNALING_MESSAGE_CURRENT_VERSION; + signalingMessage.messageType = SIGNALING_MESSAGE_TYPE_OFFER; + STRCPY(signalingMessage.peerClientId, TEST_SIGNALING_MASTER_CLIENT_ID); + MEMSET(signalingMessage.payload, 'A', 100); + signalingMessage.payload[100] = '\0'; + signalingMessage.payloadLen = 0; + signalingMessage.correlationId[0] = '\0'; + + EXPECT_EQ(STATUS_SUCCESS, signalingClientSendMessageSync(signalingHandle, &signalingMessage)); + + deleteChannelLws(FROM_SIGNALING_CLIENT_HANDLE(signalingHandle), 0); + + EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); +} + +TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_FastClockSkew_VerifyOffsetRemovedWhenClockFixed) +{ + if (!mAccessKeyIdSet) { + return; + } + + ChannelInfo channelInfo; + SignalingClientCallbacks signalingClientCallbacks; + SignalingClientInfoInternal clientInfoInternal; + PSignalingClient pSignalingClient; + SIGNALING_CLIENT_HANDLE signalingHandle; + UINT32 i, iceCount; + PIceConfigInfo pIceConfigInfo; + + signalingClientCallbacks.version = SIGNALING_CLIENT_CALLBACKS_CURRENT_VERSION; + signalingClientCallbacks.customData = (UINT64) this; + signalingClientCallbacks.messageReceivedFn = NULL; + signalingClientCallbacks.errorReportFn = signalingClientError; + signalingClientCallbacks.stateChangeFn = signalingClientStateChanged; + signalingClientCallbacks.getCurrentTimeFn = getCurrentTimeFastClock; + + MEMSET(&clientInfoInternal, 0x00, SIZEOF(SignalingClientInfoInternal)); + + clientInfoInternal.signalingClientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; + clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; + STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); + + MEMSET(&channelInfo, 0x00, SIZEOF(ChannelInfo)); + channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; + channelInfo.pChannelName = mChannelName; + channelInfo.pKmsKeyId = NULL; + channelInfo.tagCount = 0; + channelInfo.pTags = NULL; + channelInfo.channelType = SIGNALING_CHANNEL_TYPE_SINGLE_MASTER; + channelInfo.channelRoleType = SIGNALING_CHANNEL_ROLE_TYPE_MASTER; + channelInfo.cachingPolicy = SIGNALING_API_CALL_CACHE_TYPE_NONE; + channelInfo.retry = TRUE; + channelInfo.reconnect = TRUE; + channelInfo.pCertPath = mCaCertPath; + channelInfo.messageTtl = TEST_SIGNALING_MESSAGE_TTL; + + EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); + signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); + EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + + // Connect to the channel + EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); + + pActiveClient = pSignalingClient; + + // Connect to the signaling client + EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); + + // Should have an exiting ICE configuration + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); + // Describe is 3 because the first one requests in expired signature, second + // one results in 404 (not found because it doesn't exist) + // Then we call create which also fails once due to expired signature then succeeds + // the second time, then we call describe a 3rd time which succeeds + // At this point we have both fixed the clock skew offset in the code + // as well as created the channel we are calling describe on. + EXPECT_EQ(3, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_READY]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTING]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); + EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DISCONNECTED]); + + // Ensure the ICE is not refreshed as we already have a current non-expired set + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); + EXPECT_NE(0, iceCount); + EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + + // reset the current time callback to "fix" the clock + MUTEX_LOCK(pSignalingClient->diagnosticsLock); + pSignalingClient->signalingClientCallbacks.getCurrentTimeFn = NULL; + MUTEX_UNLOCK(pSignalingClient->diagnosticsLock); + + // Trigger the ICE refresh immediately on any of the ICE accessor calls + pSignalingClient->iceConfigCount = 0; + + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); + EXPECT_NE(0, iceCount); + // Called an extra time because first time will fail with 403 + // Due to application of clock skew offset but after failure + // We will remove the offset correction from the map and retry + EXPECT_EQ(4, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + + // Set to invalid again and trigger an update via offer message + pSignalingClient->iceConfigCount = 0; + + // Inject a reconnect ice server message + CHAR message[] = "{\n" + " \"messageType\": \"SDP_OFFER\",\n" + " \"senderClientId\": \"ProducerMaster\",\n" + " \"messagePayload\": \"eyJ0eXBlIjogIm9mZmVyIiwgInNkcCI6ICJ2PTBcclxubz0tIDIwNTE4OTcyNDggMiBJTiBJUDQgMTI3LjAuMC4xXHJcbnM9LVxyXG50PTAgMFxyXG5hPWdyb3VwOkJVTkRMRSAwIDEgMlxyXG5hPW1zaWQtc2VtYW50aWM6IFdNUyBteUt2c1ZpZGVvU3RyZWFtXHJcbm09YXVkaW8gOSBVRFAvVExTL1JUUC9TQVZQRiAxMTFcclxuYz1JTiBJUDQgMTI3LjAuMC4xXHJcbmE9Y2FuZGlkYXRlOjUgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTo0IDEgdWRwIDE2Nzc3MjE1IDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCAwIHR5cCByZWxheSByYWRkciA6Oi8wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MyAxIHVkcCAxNjk0NDk4ODE1IDE5Mi4xNjguMC4yMyA1MTIwNSB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjIgMSB1ZHAgMTY3NzcyMTg1NSAxMC45NS4yMDQuNjEgNTI2NDYgdHlwIHNyZmx4IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZToxIDEgdWRwIDIxMTM5Mjk0NzEgMTAuOTUuMjA0LjYxIDUzNDI4IHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTowIDEgdWRwIDIxMzA3MDY0MzEgMTkyLjE2OC4wLjIzIDUwMTIzIHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPW1zaWQ6bXlLdnNWaWRlb1N0cmVhbSBteUF1ZGlvVHJhY2tcclxuYT1zc3JjOjE4OTEzODY4OTYgY25hbWU6QlA0bEVqdTBHK0VBQk0yS1xyXG5hPXNzcmM6MTg5MTM4Njg5NiBtc2lkOm15S3ZzVmlkZW9TdHJlYW0gbXlBdWRpb1RyYWNrXHJcbmE9c3NyYzoxODkxMzg2ODk2IG1zbGFiZWw6bXlLdnNWaWRlb1N0cmVhbVxyXG5hPXNzcmM6MTg5MTM4Njg5NiBsYWJlbDpteUF1ZGlvVHJhY2tcclxuYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuYT1pY2UtdWZyYWc6VVhwM1xyXG5hPWljZS1wd2Q6NGZZbTlEa1FQazl1YmRRQ2RyaFBhVFpnXHJcbmE9aWNlLW9wdGlvbnM6dHJpY2tsZVxyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjBcclxuYT1zZW5kcmVjdlxyXG5hPXJ0Y3AtbXV4XHJcbmE9cnRjcC1yc2l6ZVxyXG5hPXJ0cG1hcDoxMTEgb3B1cy80ODAwMC8yXHJcbmE9Zm10cDoxMTEgbWlucHRpbWU9MTA7dXNlaW5iYW5kZmVjPTFcclxuYT1ydGNwLWZiOjExMSBuYWNrXHJcbm09dmlkZW8gOSBVRFAvVExTL1JUUC9TQVZQRiAxMjVcclxuYz1JTiBJUDQgMTI3LjAuMC4xXHJcbmE9Y2FuZGlkYXRlOjUgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTo0IDEgdWRwIDE2Nzc3MjE1IDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCAwIHR5cCByZWxheSByYWRkciA6Oi8wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MyAxIHVkcCAxNjk0NDk4ODE1IDE5Mi4xNjguMC4yMyA1MTIwNSB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjIgMSB1ZHAgMTY3NzcyMTg1NSAxMC45NS4yMDQuNjEgNTI2NDYgdHlwIHNyZmx4IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZToxIDEgdWRwIDIxMTM5Mjk0NzEgMTAuOTUuMjA0LjYxIDUzNDI4IHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTowIDEgdWRwIDIxMzA3MDY0MzEgMTkyLjE2OC4wLjIzIDUwMTIzIHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPW1zaWQ6bXlLdnNWaWRlb1N0cmVhbSBteVZpZGVvVHJhY2tcclxuYT1zc3JjOjIxNDEwMjk1OTIgY25hbWU6QlA0bEVqdTBHK0VBQk0yS1xyXG5hPXNzcmM6MjE0MTAyOTU5MiBtc2lkOm15S3ZzVmlkZW9TdHJlYW0gbXlWaWRlb1RyYWNrXHJcbmE9c3NyYzoyMTQxMDI5NTkyIG1zbGFiZWw6bXlLdnNWaWRlb1N0cmVhbVxyXG5hPXNzcmM6MjE0MTAyOTU5MiBsYWJlbDpteVZpZGVvVHJhY2tcclxuYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuYT1pY2UtdWZyYWc6VVhwM1xyXG5hPWljZS1wd2Q6NGZZbTlEa1FQazl1YmRRQ2RyaFBhVFpnXHJcbmE9aWNlLW9wdGlvbnM6dHJpY2tsZVxyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjFcclxuYT1zZW5kcmVjdlxyXG5hPXJ0Y3AtbXV4XHJcbmE9cnRjcC1yc2l6ZVxyXG5hPXJ0cG1hcDoxMjUgSDI2NC85MDAwMFxyXG5hPWZtdHA6MTI1IGxldmVsLWFzeW1tZXRyeS1hbGxvd2VkPTE7cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWZcclxuYT1ydGNwLWZiOjEyNSBuYWNrXHJcbm09YXBwbGljYXRpb24gOSBVRFAvRFRMUy9TQ1RQIHdlYnJ0Yy1kYXRhY2hhbm5lbFxyXG5jPUlOIElQNCAxMjcuMC4wLjFcclxuYT1jYW5kaWRhdGU6NSAxIHVkcCAxNjc3NzIxNSAwMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAgMCB0eXAgcmVsYXkgcmFkZHIgOjovMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjQgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTozIDEgdWRwIDE2OTQ0OTg4MTUgMTkyLjE2OC4wLjIzIDUxMjA1IHR5cCBzcmZseCByYWRkciAwLjAuMC4wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MiAxIHVkcCAxNjc3NzIxODU1IDEwLjk1LjIwNC42MSA1MjY0NiB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjEgMSB1ZHAgMjExMzkyOTQ3MSAxMC45NS4yMDQuNjEgNTM0MjggdHlwIGhvc3QgcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjAgMSB1ZHAgMjEzMDcwNjQzMSAxOTIuMTY4LjAuMjMgNTAxMjMgdHlwIGhvc3QgcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9cnRjcDo5IElOIElQNCAwLjAuMC4wXHJcbmE9aWNlLXVmcmFnOlVYcDNcclxuYT1pY2UtcHdkOjRmWW05RGtRUGs5dWJkUUNkcmhQYVRaZ1xyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjJcclxuYT1zY3RwLXBvcnQ6NTAwMFxyXG4ifQ==\",\n" + " \"IceServerList\": [{\n" + " \"Password\": \"ZEXx/a0G7reNO4SrDoK0zYoXZCamD+k/mIn6PEiuDTk=\",\n" + " \"Ttl\": 298,\n" + " \"Uris\": [\"turn:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp\"],\n" + " \"Username\": \"1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==\"\n" + " },\n" + " {\n" + " \"Password\": \"k5PFpnyKu+oLa3Y3QUIhi+NA3BONdSUevw7NAAy/Nms=\",\n" + " \"Ttl\": 298,\n" + " \"Uris\": [\"turn:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp\"],\n" + " \"Username\": \"1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==\"\n" + " }\n" + " ],\n" + " \"statusResponse\": {\n" + " \"correlationId\": \"CorrelationID\",\n" + " \"errorType\": \"Unknown message\",\n" + " \"statusCode\": \"200\",\n" + " \"description\": \"Test attempt to send an unknown message\"\n" + " }\n" + "}"; + + EXPECT_EQ(STATUS_SUCCESS, receiveLwsMessage(pSignalingClient, message, ARRAY_SIZE(message))); + + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); + + // ICE should not have been called again as we updated it via a message + EXPECT_EQ(4, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + + // Validate the retrieved info + EXPECT_EQ(2, iceCount); + + for (i = 0; i < iceCount; i++) { + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, i, &pIceConfigInfo)); + EXPECT_NE(0, pIceConfigInfo->uriCount); + EXPECT_EQ(298 * HUNDREDS_OF_NANOS_IN_A_SECOND, pIceConfigInfo->ttl); + EXPECT_EQ(SIGNALING_ICE_CONFIG_INFO_CURRENT_VERSION, pIceConfigInfo->version); + EXPECT_EQ(0, STRCMP("1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==", pIceConfigInfo->userName)); + } + + // + // Set to invalid again to trigger an update. + // The message will not update as the type is not an offer + // + pSignalingClient->iceConfigCount = 0; + + // Inject a reconnect ice server message + CHAR message2[] = "{\n" + " \"messageType\": \"SDP_ANSWER\",\n" + " \"senderClientId\": \"ProducerMaster\",\n" + " \"messagePayload\": \"eyJ0eXBlIjogIm9mZmVyIiwgInNkcCI6ICJ2PTBcclxubz0tIDIwNTE4OTcyNDggMiBJTiBJUDQgMTI3LjAuMC4xXHJcbnM9LVxyXG50PTAgMFxyXG5hPWdyb3VwOkJVTkRMRSAwIDEgMlxyXG5hPW1zaWQtc2VtYW50aWM6IFdNUyBteUt2c1ZpZGVvU3RyZWFtXHJcbm09YXVkaW8gOSBVRFAvVExTL1JUUC9TQVZQRiAxMTFcclxuYz1JTiBJUDQgMTI3LjAuMC4xXHJcbmE9Y2FuZGlkYXRlOjUgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTo0IDEgdWRwIDE2Nzc3MjE1IDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCAwIHR5cCByZWxheSByYWRkciA6Oi8wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MyAxIHVkcCAxNjk0NDk4ODE1IDE5Mi4xNjguMC4yMyA1MTIwNSB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjIgMSB1ZHAgMTY3NzcyMTg1NSAxMC45NS4yMDQuNjEgNTI2NDYgdHlwIHNyZmx4IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZToxIDEgdWRwIDIxMTM5Mjk0NzEgMTAuOTUuMjA0LjYxIDUzNDI4IHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTowIDEgdWRwIDIxMzA3MDY0MzEgMTkyLjE2OC4wLjIzIDUwMTIzIHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPW1zaWQ6bXlLdnNWaWRlb1N0cmVhbSBteUF1ZGlvVHJhY2tcclxuYT1zc3JjOjE4OTEzODY4OTYgY25hbWU6QlA0bEVqdTBHK0VBQk0yS1xyXG5hPXNzcmM6MTg5MTM4Njg5NiBtc2lkOm15S3ZzVmlkZW9TdHJlYW0gbXlBdWRpb1RyYWNrXHJcbmE9c3NyYzoxODkxMzg2ODk2IG1zbGFiZWw6bXlLdnNWaWRlb1N0cmVhbVxyXG5hPXNzcmM6MTg5MTM4Njg5NiBsYWJlbDpteUF1ZGlvVHJhY2tcclxuYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuYT1pY2UtdWZyYWc6VVhwM1xyXG5hPWljZS1wd2Q6NGZZbTlEa1FQazl1YmRRQ2RyaFBhVFpnXHJcbmE9aWNlLW9wdGlvbnM6dHJpY2tsZVxyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjBcclxuYT1zZW5kcmVjdlxyXG5hPXJ0Y3AtbXV4XHJcbmE9cnRjcC1yc2l6ZVxyXG5hPXJ0cG1hcDoxMTEgb3B1cy80ODAwMC8yXHJcbmE9Zm10cDoxMTEgbWlucHRpbWU9MTA7dXNlaW5iYW5kZmVjPTFcclxuYT1ydGNwLWZiOjExMSBuYWNrXHJcbm09dmlkZW8gOSBVRFAvVExTL1JUUC9TQVZQRiAxMjVcclxuYz1JTiBJUDQgMTI3LjAuMC4xXHJcbmE9Y2FuZGlkYXRlOjUgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTo0IDEgdWRwIDE2Nzc3MjE1IDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCAwIHR5cCByZWxheSByYWRkciA6Oi8wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MyAxIHVkcCAxNjk0NDk4ODE1IDE5Mi4xNjguMC4yMyA1MTIwNSB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjIgMSB1ZHAgMTY3NzcyMTg1NSAxMC45NS4yMDQuNjEgNTI2NDYgdHlwIHNyZmx4IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZToxIDEgdWRwIDIxMTM5Mjk0NzEgMTAuOTUuMjA0LjYxIDUzNDI4IHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTowIDEgdWRwIDIxMzA3MDY0MzEgMTkyLjE2OC4wLjIzIDUwMTIzIHR5cCBob3N0IHJhZGRyIDAuMC4wLjAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPW1zaWQ6bXlLdnNWaWRlb1N0cmVhbSBteVZpZGVvVHJhY2tcclxuYT1zc3JjOjIxNDEwMjk1OTIgY25hbWU6QlA0bEVqdTBHK0VBQk0yS1xyXG5hPXNzcmM6MjE0MTAyOTU5MiBtc2lkOm15S3ZzVmlkZW9TdHJlYW0gbXlWaWRlb1RyYWNrXHJcbmE9c3NyYzoyMTQxMDI5NTkyIG1zbGFiZWw6bXlLdnNWaWRlb1N0cmVhbVxyXG5hPXNzcmM6MjE0MTAyOTU5MiBsYWJlbDpteVZpZGVvVHJhY2tcclxuYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuYT1pY2UtdWZyYWc6VVhwM1xyXG5hPWljZS1wd2Q6NGZZbTlEa1FQazl1YmRRQ2RyaFBhVFpnXHJcbmE9aWNlLW9wdGlvbnM6dHJpY2tsZVxyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjFcclxuYT1zZW5kcmVjdlxyXG5hPXJ0Y3AtbXV4XHJcbmE9cnRjcC1yc2l6ZVxyXG5hPXJ0cG1hcDoxMjUgSDI2NC85MDAwMFxyXG5hPWZtdHA6MTI1IGxldmVsLWFzeW1tZXRyeS1hbGxvd2VkPTE7cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWZcclxuYT1ydGNwLWZiOjEyNSBuYWNrXHJcbm09YXBwbGljYXRpb24gOSBVRFAvRFRMUy9TQ1RQIHdlYnJ0Yy1kYXRhY2hhbm5lbFxyXG5jPUlOIElQNCAxMjcuMC4wLjFcclxuYT1jYW5kaWRhdGU6NSAxIHVkcCAxNjc3NzIxNSAwMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAgMCB0eXAgcmVsYXkgcmFkZHIgOjovMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjQgMSB1ZHAgMTY3NzcyMTUgMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwIDAgdHlwIHJlbGF5IHJhZGRyIDo6LzAgcnBvcnQgMCBnZW5lcmF0aW9uIDAgbmV0d29yay1jb3N0IDk5OVxyXG5hPWNhbmRpZGF0ZTozIDEgdWRwIDE2OTQ0OTg4MTUgMTkyLjE2OC4wLjIzIDUxMjA1IHR5cCBzcmZseCByYWRkciAwLjAuMC4wIHJwb3J0IDAgZ2VuZXJhdGlvbiAwIG5ldHdvcmstY29zdCA5OTlcclxuYT1jYW5kaWRhdGU6MiAxIHVkcCAxNjc3NzIxODU1IDEwLjk1LjIwNC42MSA1MjY0NiB0eXAgc3JmbHggcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjEgMSB1ZHAgMjExMzkyOTQ3MSAxMC45NS4yMDQuNjEgNTM0MjggdHlwIGhvc3QgcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9Y2FuZGlkYXRlOjAgMSB1ZHAgMjEzMDcwNjQzMSAxOTIuMTY4LjAuMjMgNTAxMjMgdHlwIGhvc3QgcmFkZHIgMC4wLjAuMCBycG9ydCAwIGdlbmVyYXRpb24gMCBuZXR3b3JrLWNvc3QgOTk5XHJcbmE9cnRjcDo5IElOIElQNCAwLjAuMC4wXHJcbmE9aWNlLXVmcmFnOlVYcDNcclxuYT1pY2UtcHdkOjRmWW05RGtRUGs5dWJkUUNkcmhQYVRaZ1xyXG5hPWZpbmdlcnByaW50OnNoYS0yNTYgQkQ6RTk6QkI6RTE6ODE6NzQ6MDU6RkQ6Mzc6QUI6MzU6MTU6OTE6NTQ6ODc6RDU6NDI6QkU6RjQ6RjE6MUQ6NjA6OEI6REQ6NEQ6RUM6QzM6NDQ6RkU6OTc6ODg6MjBcclxuYT1zZXR1cDphY3RwYXNzXHJcbmE9bWlkOjJcclxuYT1zY3RwLXBvcnQ6NTAwMFxyXG4ifQ==\",\n" + " \"IceServerList\": [{\n" + " \"Password\": \"ZEXx/a0G7reNO4SrDoK0zYoXZCamD+k/mIn6PEiuDTk=\",\n" + " \"Ttl\": 298,\n" + " \"Uris\": [\"turn:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:18-236-143-60.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp\"],\n" + " \"Username\": \"1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==\"\n" + " },\n" + " {\n" + " \"Password\": \"k5PFpnyKu+oLa3Y3QUIhi+NA3BONdSUevw7NAAy/Nms=\",\n" + " \"Ttl\": 298,\n" + " \"Uris\": [\"turn:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp\", \"turns:52-25-38-73.t-4f692171.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp\"],\n" + " \"Username\": \"1607424954:djE6YXJuOmF3czpraW5lc2lzdmlkZW86dXMtd2VzdC0yOjgzNjIwMzExNzk3MTpjaGFubmVsL1NjYXJ5VGVzdENoYW5uZWwvMTU5OTg1NjczODM5OA==\"\n" + " }\n" + " ],\n" + " \"statusResponse\": {\n" + " \"correlationId\": \"CorrelationID\",\n" + " \"errorType\": \"Unknown message\",\n" + " \"statusCode\": \"200\",\n" + " \"description\": \"Test attempt to send an unknown message\"\n" + " }\n" + "}"; + + EXPECT_EQ(STATUS_SUCCESS, receiveLwsMessage(pSignalingClient, message2, ARRAY_SIZE(message2))); + + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); + + // ICE should have been called again as we couldn't have updated via the message + EXPECT_EQ(5, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ICE_CONFIG]); + + // Check that we are connected and can send a message + SignalingMessage signalingMessage; + signalingMessage.version = SIGNALING_MESSAGE_CURRENT_VERSION; + signalingMessage.messageType = SIGNALING_MESSAGE_TYPE_OFFER; + STRCPY(signalingMessage.peerClientId, TEST_SIGNALING_MASTER_CLIENT_ID); + MEMSET(signalingMessage.payload, 'A', 100); + signalingMessage.payload[100] = '\0'; + signalingMessage.payloadLen = 0; + signalingMessage.correlationId[0] = '\0'; + + EXPECT_EQ(STATUS_SUCCESS, signalingClientSendMessageSync(signalingHandle, &signalingMessage)); + + deleteChannelLws(FROM_SIGNALING_CLIENT_HANDLE(signalingHandle), 0); + + EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); +} + + } // namespace webrtcclient } // namespace video } // namespace kinesis diff --git a/tst/WebRTCClientTestFixture.h b/tst/WebRTCClientTestFixture.h index 690263aad4..358965c0fe 100644 --- a/tst/WebRTCClientTestFixture.h +++ b/tst/WebRTCClientTestFixture.h @@ -80,6 +80,7 @@ class WebRtcClientTestBase : public ::testing::Test { mSignalingClientCallbacks.messageReceivedFn = NULL; mSignalingClientCallbacks.errorReportFn = NULL; mSignalingClientCallbacks.stateChangeFn = NULL; + mSignalingClientCallbacks.getCurrentTimeFn = NULL; mClientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; mClientInfo.loggingLevel = LOG_LEVEL_VERBOSE; From 65c0da070645016f09f4ea7c5749ff9ceafb7caf Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Wed, 8 Dec 2021 11:24:05 -0800 Subject: [PATCH 027/102] handle null stream track in case of recvonly (#1346) * handle null stream track in case of recvonly * a test with null stream track for revconly * Fix a comment * whitespace change --- src/source/PeerConnection/PeerConnection.c | 10 ++++++++++ src/source/PeerConnection/Rtcp.c | 2 +- tst/SdpApiTest.cpp | 23 ++++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/source/PeerConnection/PeerConnection.c b/src/source/PeerConnection/PeerConnection.c index 67cc5da7ed..d6af3e44d3 100644 --- a/src/source/PeerConnection/PeerConnection.c +++ b/src/source/PeerConnection/PeerConnection.c @@ -1196,11 +1196,21 @@ STATUS addTransceiver(PRtcPeerConnection pPeerConnection, PRtcMediaStreamTrack p UINT32 clockRate = 0; UINT32 ssrc = (UINT32) RAND(), rtxSsrc = (UINT32) RAND(); RTC_RTP_TRANSCEIVER_DIRECTION direction = RTC_RTP_TRANSCEIVER_DIRECTION_SENDRECV; + RtcMediaStreamTrack videoTrack; if (pRtcRtpTransceiverInit != NULL) { direction = pRtcRtpTransceiverInit->direction; } CHK(pKvsPeerConnection != NULL, STATUS_NULL_ARG); + + if (direction == RTC_RTP_TRANSCEIVER_DIRECTION_RECVONLY && pRtcMediaStreamTrack == NULL) { + MEMSET(&videoTrack, 0x00, SIZEOF(RtcMediaStreamTrack)); + videoTrack.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; + videoTrack.codec = RTC_CODEC_H264_PROFILE_42E01F_LEVEL_ASYMMETRY_ALLOWED_PACKETIZATION_MODE; + STRCPY(videoTrack.streamId, "myKvsVideoStream"); + STRCPY(videoTrack.trackId, "myVideoTrack"); + pRtcMediaStreamTrack = &videoTrack; + } switch (pRtcMediaStreamTrack->codec) { case RTC_CODEC_OPUS: diff --git a/src/source/PeerConnection/Rtcp.c b/src/source/PeerConnection/Rtcp.c index 6120cea2f1..0aa4a0166e 100644 --- a/src/source/PeerConnection/Rtcp.c +++ b/src/source/PeerConnection/Rtcp.c @@ -41,7 +41,7 @@ static STATUS onRtcpSLIPacket(PRtcpPacket pRtcpPacket, PKvsPeerConnection pKvsPe pTransceiver->outboundStats.sliCount++; MUTEX_UNLOCK(pTransceiver->statsLock); } else { - DLOGW("Received FIR for non existing ssrc: %u", mediaSSRC); + DLOGW("Received SLI for non existing ssrc: %u", mediaSSRC); } CleanUp: diff --git a/tst/SdpApiTest.cpp b/tst/SdpApiTest.cpp index b9b470ea2a..cff77583c9 100644 --- a/tst/SdpApiTest.cpp +++ b/tst/SdpApiTest.cpp @@ -428,6 +428,29 @@ TEST_F(SdpApiTest, populateSingleMediaSection_TestTxRecvOnly) freePeerConnection(&offerPc); } +TEST_F(SdpApiTest, populateSingleMediaSection_TestTxRecvOnlyStreamNull) +{ + PRtcPeerConnection offerPc = NULL; + RtcConfiguration configuration; + RtcSessionDescriptionInit sessionDescriptionInit; + + MEMSET(&configuration, 0x00, SIZEOF(RtcConfiguration)); + + // Create peer connection + EXPECT_EQ(createPeerConnection(&configuration, &offerPc), STATUS_SUCCESS); + + PRtcRtpTransceiver pTransceiver; + RtcRtpTransceiverInit rtcRtpTransceiverInit; + rtcRtpTransceiverInit.direction = RTC_RTP_TRANSCEIVER_DIRECTION_RECVONLY; + + EXPECT_EQ(STATUS_SUCCESS, addTransceiver(offerPc, NULL, &rtcRtpTransceiverInit, &pTransceiver)); + EXPECT_EQ(STATUS_SUCCESS, createOffer(offerPc, &sessionDescriptionInit)); + EXPECT_PRED_FORMAT2(testing::IsSubstring, "recvonly", sessionDescriptionInit.sdp); + + closePeerConnection(offerPc); + freePeerConnection(&offerPc); +} + TEST_F(SdpApiTest, populateSingleMediaSection_TestPayloadNoFmtp) { CHAR remoteSessionDescription[] = R"(v=0 From ab082b0ee22bf404d7fb2284bf5597f4233a90d7 Mon Sep 17 00:00:00 2001 From: jdelapla Date: Fri, 10 Dec 2021 05:44:51 -0800 Subject: [PATCH 028/102] State machine preparation is decoupled from the constructor (#1343) --- .../libkvsCommonLws-CMakeLists.txt | 2 +- samples/Common.c | 11 +- samples/Samples.h | 1 - samples/kvsWebRTCClientMaster.c | 12 +- .../kinesis/video/webrtcclient/Include.h | 19 +- src/source/Signaling/Client.c | 83 +++++++- src/source/Signaling/Signaling.c | 69 ++++--- src/source/Signaling/Signaling.h | 13 +- src/source/Signaling/StateMachine.c | 182 +++++------------- tst/SignalingApiFunctionalityTest.cpp | 111 ++++++++--- tst/WebRTCClientTestFixture.h | 3 + 11 files changed, 291 insertions(+), 215 deletions(-) diff --git a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt index dcc76ecf86..6db57e03db 100644 --- a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt +++ b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt @@ -6,7 +6,7 @@ include(ExternalProject) ExternalProject_Add(libkvsCommonLws-download GIT_REPOSITORY https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git - GIT_TAG 9e5f6d3ff115e85f694d2b1f434b6ad70ac1034e + GIT_TAG c7fce9e06021452ff3c42dc70c8360606b22ad53 PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} diff --git a/samples/Common.c b/samples/Common.c index 2ffe17da7b..8270e2cb09 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -24,7 +24,7 @@ VOID onDataChannelMessage(UINT64 customData, PRtcDataChannel pDataChannel, BOOL // Send a response to the message sent by the viewer STATUS retStatus = STATUS_SUCCESS; retStatus = dataChannelSend(pDataChannel, FALSE, (PBYTE) MASTER_DATA_CHANNEL_MESSAGE, STRLEN(MASTER_DATA_CHANNEL_MESSAGE)); - if(retStatus != STATUS_SUCCESS) { + if (retStatus != STATUS_SUCCESS) { DLOGI("[KVS Master] dataChannelSend(): operation returned status code: 0x%08x \n", retStatus); } } @@ -782,7 +782,7 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE pSampleConfiguration->clientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; pSampleConfiguration->clientInfo.loggingLevel = logLevel; pSampleConfiguration->clientInfo.cacheFilePath = NULL; // Use the default path - pSampleConfiguration->clientInfo.signalingClientCreationMaxRetryAttempts = DEFAULT_CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS; + pSampleConfiguration->clientInfo.signalingClientCreationMaxRetryAttempts = CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS_SENTINEL_VALUE; pSampleConfiguration->iceCandidatePairStatsTimerId = MAX_UINT32; pSampleConfiguration->pregenerateCertTimerId = MAX_UINT32; @@ -1049,7 +1049,7 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); locked = TRUE; } - + for (i = 0; i < pSampleConfiguration->streamingSessionCount; ++i) { retStatus = gatherIceServerStats(pSampleConfiguration->sampleStreamingSessionList[i]); if (STATUS_FAILED(retStatus)) { @@ -1157,10 +1157,7 @@ STATUS sessionCleanupWait(PSampleConfiguration pSampleConfiguration) // Check if we need to re-create the signaling client on-the-fly if (ATOMIC_LOAD_BOOL(&pSampleConfiguration->recreateSignalingClient) && - STATUS_SUCCEEDED(freeSignalingClient(&pSampleConfiguration->signalingClientHandle)) && - STATUS_SUCCEEDED(createSignalingClientSync(&pSampleConfiguration->clientInfo, &pSampleConfiguration->channelInfo, - &pSampleConfiguration->signalingClientCallbacks, pSampleConfiguration->pCredentialProvider, - &pSampleConfiguration->signalingClientHandle))) { + STATUS_SUCCEEDED(signalingClientFetchSync(pSampleConfiguration->signalingClientHandle))) { // Re-set the variable again ATOMIC_STORE_BOOL(&pSampleConfiguration->recreateSignalingClient, FALSE); } diff --git a/samples/Samples.h b/samples/Samples.h index ab783d83ee..8c2320c476 100644 --- a/samples/Samples.h +++ b/samples/Samples.h @@ -49,7 +49,6 @@ extern "C" { #define MASTER_DATA_CHANNEL_MESSAGE "This message is from the KVS Master" #define VIEWER_DATA_CHANNEL_MESSAGE "This message is from the KVS Viewer" -#define DEFAULT_CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS 3 /* Uncomment the following line in order to enable IoT credentials checks in the provided samples */ //#define IOT_CORE_ENABLE_CREDENTIALS 1 diff --git a/samples/kvsWebRTCClientMaster.c b/samples/kvsWebRTCClientMaster.c index 8cd277d377..d7e29e1506 100644 --- a/samples/kvsWebRTCClientMaster.c +++ b/samples/kvsWebRTCClientMaster.c @@ -91,6 +91,12 @@ INT32 main(INT32 argc, CHAR* argv[]) printf("[KVS Master] Signaling client created successfully\n"); // Enable the processing of the messages + retStatus = signalingClientFetchSync(pSampleConfiguration->signalingClientHandle); + if (retStatus != STATUS_SUCCESS) { + printf("[KVS Master] signalingClientFetchSync(): operation returned status code: 0x%08x \n", retStatus); + goto CleanUp; + } + retStatus = signalingClientConnectSync(pSampleConfiguration->signalingClientHandle); if (retStatus != STATUS_SUCCESS) { printf("[KVS Master] signalingClientConnectSync(): operation returned status code: 0x%08x \n", retStatus); @@ -286,7 +292,7 @@ PVOID sendVideoPackets(PVOID args) CHK_LOG_ERR(retStatus); - return (PVOID) (ULONG_PTR) retStatus; + return (PVOID)(ULONG_PTR) retStatus; } PVOID sendAudioPackets(PVOID args) @@ -354,7 +360,7 @@ PVOID sendAudioPackets(PVOID args) CleanUp: - return (PVOID) (ULONG_PTR) retStatus; + return (PVOID)(ULONG_PTR) retStatus; } PVOID sampleReceiveVideoFrame(PVOID args) @@ -374,5 +380,5 @@ PVOID sampleReceiveVideoFrame(PVOID args) CleanUp: - return (PVOID) (ULONG_PTR) retStatus; + return (PVOID)(ULONG_PTR) retStatus; } diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 47c29a8ced..55adc47393 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -583,7 +583,7 @@ extern "C" { /** * Default refresh ICE server config API timeout */ -#define SIGNALING_REFRESH_ICE_CONFIG_STATE_TIMEOUT (15 * HUNDREDS_OF_NANOS_IN_A_SECOND) +#define SIGNALING_REFRESH_ICE_CONFIG_STATE_TIMEOUT (20 * HUNDREDS_OF_NANOS_IN_A_SECOND) /** * Default signaling connection establishment timeout @@ -654,6 +654,11 @@ extern "C" { */ #define SIGNALING_API_CALL_CACHE_TTL_SENTINEL_VALUE 0 +/** + * Signaling caching policy TTL period sentinel value which will force the default period. + */ +#define CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS_SENTINEL_VALUE -1 + /** * @brief Definition of the signaling client handle */ @@ -1188,7 +1193,7 @@ typedef struct { //!< located. For default value or when file caching is not //!< being used this value can be NULL or point to an EMPTY_STRING. KvsRetryStrategyCallbacks signalingRetryStrategyCallbacks; //!< Retry strategy callbacks used while creating signaling client - UINT32 signalingClientCreationMaxRetryAttempts; //!< Max attempts to create signaling client before returning error to the caller + INT32 signalingClientCreationMaxRetryAttempts; //!< Max attempts to create signaling client before returning error to the caller UINT32 stateMachineRetryCountReadOnly; //!< Retry count of state machine. Note that this **MUST NOT** be modified by the user. It is a read only field } SignalingClientInfo, *PSignalingClientInfo; @@ -1929,6 +1934,16 @@ PUBLIC_API STATUS signalingClientGetIceConfigInfoCount(SIGNALING_CLIENT_HANDLE, */ PUBLIC_API STATUS signalingClientGetIceConfigInfo(SIGNALING_CLIENT_HANDLE, UINT32, PIceConfigInfo*); +/** + * @brief Fetches all assets needed to ready the state machine before attempting to connect. + * Can also be used to reallocate missing / expired assets before reconnecting. + * + * @param[in] SIGNALING_CLIENT_HANDLE Signaling client handle + * + * @return STATUS code of the execution. STATUS_SUCCESS on success + */ +PUBLIC_API STATUS signalingClientFetchSync(SIGNALING_CLIENT_HANDLE); + /** * @brief Connects the signaling client to the web socket in order to send/receive messages. * diff --git a/src/source/Signaling/Client.c b/src/source/Signaling/Client.c index 218aae2ae5..4bc8b0bb9a 100644 --- a/src/source/Signaling/Client.c +++ b/src/source/Signaling/Client.c @@ -6,12 +6,11 @@ STATUS createRetryStrategyForCreatingSignalingClient(PSignalingClientInfo pClien ENTERS(); STATUS retStatus = STATUS_SUCCESS; - CHK(pKvsRetryStrategy != NULL, STATUS_NULL_ARG); + CHK(pKvsRetryStrategy != NULL && pClientInfo != NULL, STATUS_NULL_ARG); if (pClientInfo->signalingRetryStrategyCallbacks.createRetryStrategyFn == NULL || pClientInfo->signalingRetryStrategyCallbacks.freeRetryStrategyFn == NULL || pClientInfo->signalingRetryStrategyCallbacks.executeRetryStrategyFn == NULL) { - DLOGV("Using exponential backoff retry strategy for creating signaling client"); pClientInfo->signalingRetryStrategyCallbacks.createRetryStrategyFn = exponentialBackoffRetryStrategyCreate; pClientInfo->signalingRetryStrategyCallbacks.freeRetryStrategyFn = exponentialBackoffRetryStrategyFree; @@ -61,7 +60,7 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo PSignalingClient pSignalingClient = NULL; SignalingClientInfoInternal signalingClientInfoInternal; KvsRetryStrategy createSignalingClientRetryStrategy = {NULL, NULL, KVS_RETRY_STRATEGY_DISABLED}; - UINT32 signalingClientCreationMaxRetryCount; + INT32 signalingClientCreationMaxRetryCount; UINT64 signalingClientCreationWaitTime; DLOGV("Creating Signaling Client Sync"); @@ -73,7 +72,12 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo CHK_STATUS(createRetryStrategyForCreatingSignalingClient(pClientInfo, &createSignalingClientRetryStrategy)); - signalingClientCreationMaxRetryCount = pClientInfo->signalingClientCreationMaxRetryAttempts; + + if(pClientInfo->signalingClientCreationMaxRetryAttempts == CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS_SENTINEL_VALUE) { + signalingClientCreationMaxRetryCount = DEFAULT_CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS; + } else { + signalingClientCreationMaxRetryCount = pClientInfo->signalingClientCreationMaxRetryAttempts; + } while (TRUE) { retStatus = createSignalingSync(&signalingClientInfoInternal, pChannelInfo, pCallbacks, pCredentialProvider, &pSignalingClient); // NOTE: This will retry on all status codes except SUCCESS. @@ -83,7 +87,7 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo // It is the application's responsibility to fix any validation/null-arg/bad configuration type errors. CHK(retStatus != STATUS_SUCCESS, retStatus); - DLOGE("Create Signaling Sync API returned [0x%08x] %d\n", retStatus, signalingClientCreationMaxRetryCount); + DLOGE("Create Signaling Sync API returned [0x%08x] %u\n", retStatus, signalingClientCreationMaxRetryCount); if (signalingClientCreationMaxRetryCount <= 0) { break; } @@ -91,12 +95,12 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo pClientInfo->stateMachineRetryCountReadOnly = signalingClientInfoInternal.signalingClientInfo.stateMachineRetryCountReadOnly; // Wait before attempting to create signaling client - CHK_STATUS(pClientInfo->signalingRetryStrategyCallbacks.executeRetryStrategyFn( - &createSignalingClientRetryStrategy, &signalingClientCreationWaitTime)); + CHK_STATUS(pClientInfo->signalingRetryStrategyCallbacks.executeRetryStrategyFn(&createSignalingClientRetryStrategy, + &signalingClientCreationWaitTime)); DLOGV("Attempting to back off for [%lf] milliseconds before creating signaling client again. " - "Signaling client creation retry count [%d]", - retStatus, signalingClientCreationWaitTime/1000.0, signalingClientCreationMaxRetryCount); + "Signaling client creation retry count [%u]", + retStatus, signalingClientCreationWaitTime / 1000.0f, signalingClientCreationMaxRetryCount); THREAD_SLEEP(signalingClientCreationWaitTime); signalingClientCreationMaxRetryCount--; } @@ -173,6 +177,65 @@ STATUS signalingClientConnectSync(SIGNALING_CLIENT_HANDLE signalingClientHandle) return retStatus; } +STATUS signalingClientFetchSync(SIGNALING_CLIENT_HANDLE signalingClientHandle) +{ + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + PSignalingClient pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingClientHandle); + SignalingClientInfoInternal signalingClientInfoInternal; + KvsRetryStrategy createSignalingClientRetryStrategy = {NULL, NULL, KVS_RETRY_STRATEGY_DISABLED}; + INT32 signalingClientCreationMaxRetryCount; + UINT64 signalingClientCreationWaitTime; + + DLOGV("Signaling Client Fetch Sync"); + CHK(pSignalingClient != NULL, STATUS_NULL_ARG); + + // Convert the client info to the internal structure with empty values + MEMSET(&signalingClientInfoInternal, 0x00, SIZEOF(signalingClientInfoInternal)); + signalingClientInfoInternal.signalingClientInfo = pSignalingClient->clientInfo.signalingClientInfo; + + CHK_STATUS(createRetryStrategyForCreatingSignalingClient(&pSignalingClient->clientInfo.signalingClientInfo, &createSignalingClientRetryStrategy)); + + signalingClientCreationMaxRetryCount = pSignalingClient->clientInfo.signalingClientInfo.signalingClientCreationMaxRetryAttempts; + if(signalingClientCreationMaxRetryCount == CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS_SENTINEL_VALUE) { + signalingClientCreationMaxRetryCount = DEFAULT_CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS; + } + + while (TRUE) { + retStatus = signalingFetchSync(pSignalingClient); + // NOTE: This will retry on all status codes except SUCCESS. + // This includes status codes for bad arguments, internal non-recoverable errors etc. + // Retrying on non-recoverable errors is useless, but it is quite complex to segregate recoverable + // and non-recoverable errors at this layer. So to simplify, we would retry on all non-success status codes. + // It is the application's responsibility to fix any validation/null-arg/bad configuration type errors. + CHK(retStatus != STATUS_SUCCESS, retStatus); + + DLOGE("Create Signaling Sync API returned [0x%08x] %u\n", retStatus, signalingClientCreationMaxRetryCount); + if (signalingClientCreationMaxRetryCount <= 0) { + break; + } + + pSignalingClient->clientInfo.signalingClientInfo.stateMachineRetryCountReadOnly = signalingClientInfoInternal.signalingClientInfo.stateMachineRetryCountReadOnly; + + // Wait before attempting to create signaling client + CHK_STATUS(pSignalingClient->clientInfo.signalingStateMachineRetryStrategyCallbacks.executeRetryStrategyFn(&createSignalingClientRetryStrategy, + &signalingClientCreationWaitTime)); + + DLOGV("Attempting to back off for [%lf] milliseconds before creating signaling client again. " + "Signaling client creation retry count [%u]", + retStatus, signalingClientCreationWaitTime / 1000.0f, signalingClientCreationMaxRetryCount); + THREAD_SLEEP(signalingClientCreationWaitTime); + signalingClientCreationMaxRetryCount--; + } + +CleanUp: + + SIGNALING_UPDATE_ERROR_COUNT(pSignalingClient, retStatus); + freeRetryStrategyForCreatingSignalingClient(&pSignalingClient->clientInfo.signalingClientInfo, &createSignalingClientRetryStrategy); + LEAVES(); + return retStatus; +} + STATUS signalingClientDisconnectSync(SIGNALING_CLIENT_HANDLE signalingClientHandle) { ENTERS(); @@ -215,7 +278,7 @@ STATUS signalingClientGetIceConfigInfoCount(SIGNALING_CLIENT_HANDLE signalingCli DLOGV("Signaling Client Get ICE Config Info Count"); - CHK_STATUS(signalingGetIceConfigInfoCout(pSignalingClient, pIceConfigCount)); + CHK_STATUS(signalingGetIceConfigInfoCount(pSignalingClient, pIceConfigCount)); CleanUp: diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index 8714e956b0..5fd46f89f8 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -167,12 +167,11 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf // Do not force ice config state ATOMIC_STORE_BOOL(&pSignalingClient->refreshIceConfig, FALSE); - // Prime the state machine - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, pSignalingClient->diagnostics.createTime + SIGNALING_CREATE_TIMEOUT, - SIGNALING_STATE_READY)); + // We do not cache token in file system, so we will always have to retrieve one after creating the client. + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, pSignalingClient->diagnostics.createTime + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_GET_TOKEN)); CleanUp: - if(pClientInfo != NULL && pSignalingClient != NULL) { + if (pClientInfo != NULL && pSignalingClient != NULL) { pClientInfo->signalingClientInfo.stateMachineRetryCountReadOnly = pSignalingClient->diagnostics.stateMachineRetryCount; } CHK_LOG_ERR(retStatus); @@ -278,7 +277,8 @@ STATUS freeSignaling(PSignalingClient* ppSignalingClient) return retStatus; } -STATUS setupDefaultRetryStrategyForSignalingStateMachine(PSignalingClient pSignalingClient) { +STATUS setupDefaultRetryStrategyForSignalingStateMachine(PSignalingClient pSignalingClient) +{ ENTERS(); STATUS retStatus = STATUS_SUCCESS; PKvsRetryStrategyCallbacks pKvsRetryStrategyCallbacks = &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategyCallbacks); @@ -291,13 +291,14 @@ STATUS setupDefaultRetryStrategyForSignalingStateMachine(PSignalingClient pSigna // Use a default exponential backoff config for state machine level retries pSignalingClient->clientInfo.signalingStateMachineRetryStrategy.pRetryStrategyConfig = - (PRetryStrategyConfig)&DEFAULT_SIGNALING_STATE_MACHINE_EXPONENTIAL_BACKOFF_RETRY_CONFIGURATION; - + (PRetryStrategyConfig) &DEFAULT_SIGNALING_STATE_MACHINE_EXPONENTIAL_BACKOFF_RETRY_CONFIGURATION; + LEAVES(); return retStatus; } -STATUS configureRetryStrategyForSignalingStateMachine(PSignalingClient pSignalingClient) { +STATUS configureRetryStrategyForSignalingStateMachine(PSignalingClient pSignalingClient) +{ ENTERS(); STATUS retStatus = STATUS_SUCCESS; PKvsRetryStrategyCallbacks pKvsRetryStrategyCallbacks = NULL; @@ -307,16 +308,12 @@ STATUS configureRetryStrategyForSignalingStateMachine(PSignalingClient pSignalin // If the callbacks for retry strategy are already set, then use that otherwise // build the client with a default retry strategy. - if (pKvsRetryStrategyCallbacks->createRetryStrategyFn == NULL || - pKvsRetryStrategyCallbacks->freeRetryStrategyFn == NULL || - pKvsRetryStrategyCallbacks->executeRetryStrategyFn == NULL || - pKvsRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn == NULL) { - + if (pKvsRetryStrategyCallbacks->createRetryStrategyFn == NULL || pKvsRetryStrategyCallbacks->freeRetryStrategyFn == NULL || + pKvsRetryStrategyCallbacks->executeRetryStrategyFn == NULL || pKvsRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn == NULL) { CHK_STATUS(setupDefaultRetryStrategyForSignalingStateMachine(pSignalingClient)); } - CHK_STATUS(pKvsRetryStrategyCallbacks->createRetryStrategyFn( - &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy))); + CHK_STATUS(pKvsRetryStrategyCallbacks->createRetryStrategyFn(&(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy))); CleanUp: @@ -324,7 +321,8 @@ STATUS configureRetryStrategyForSignalingStateMachine(PSignalingClient pSignalin return retStatus; } -STATUS freeClientRetryStrategy(PSignalingClient pSignalingClient) { +STATUS freeClientRetryStrategy(PSignalingClient pSignalingClient) +{ ENTERS(); STATUS retStatus = STATUS_SUCCESS; PKvsRetryStrategyCallbacks pKvsRetryStrategyCallbacks = NULL; @@ -334,8 +332,7 @@ STATUS freeClientRetryStrategy(PSignalingClient pSignalingClient) { pKvsRetryStrategyCallbacks = &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategyCallbacks); CHK(pKvsRetryStrategyCallbacks->freeRetryStrategyFn != NULL, STATUS_SUCCESS); - CHK_STATUS(pKvsRetryStrategyCallbacks->freeRetryStrategyFn( - &(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy))); + CHK_STATUS(pKvsRetryStrategyCallbacks->freeRetryStrategyFn(&(pSignalingClient->clientInfo.signalingStateMachineRetryStrategy))); CleanUp: @@ -398,7 +395,7 @@ STATUS signalingSendMessageSync(PSignalingClient pSignalingClient, PSignalingMes return retStatus; } -STATUS signalingGetIceConfigInfoCout(PSignalingClient pSignalingClient, PUINT32 pIceConfigCount) +STATUS signalingGetIceConfigInfoCount(PSignalingClient pSignalingClient, PUINT32 pIceConfigCount) { ENTERS(); STATUS retStatus = STATUS_SUCCESS; @@ -439,6 +436,29 @@ STATUS signalingGetIceConfigInfo(PSignalingClient pSignalingClient, UINT32 index return retStatus; } +STATUS signalingFetchSync(PSignalingClient pSignalingClient) +{ + ENTERS(); + STATUS retStatus = STATUS_SUCCESS; + + CHK(pSignalingClient != NULL, STATUS_NULL_ARG); + + // Check if we are already not connected + if (ATOMIC_LOAD_BOOL(&pSignalingClient->connected)) { + CHK_STATUS(terminateOngoingOperations(pSignalingClient)); + } + + // move to the fromGetToken() so we can move to the necessary step + setStateMachineCurrentState(pSignalingClient->pStateMachine, SIGNALING_STATE_GET_TOKEN); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_READY)); + +CleanUp: + + CHK_LOG_ERR(retStatus); + LEAVES(); + return retStatus; +} + STATUS signalingConnectSync(PSignalingClient pSignalingClient) { ENTERS(); @@ -448,8 +468,8 @@ STATUS signalingConnectSync(PSignalingClient pSignalingClient) CHK(pSignalingClient != NULL, STATUS_NULL_ARG); // Validate the state - CHK_STATUS(acceptStateMachineState(pSignalingClient->pStateMachine, - SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_CONNECTED)); + CHK_STATUS(acceptSignalingStateMachineState( + pSignalingClient, SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_CONNECTED)); // Check if we are already connected CHK(!ATOMIC_LOAD_BOOL(&pSignalingClient->connected), retStatus); @@ -642,8 +662,8 @@ STATUS refreshIceConfiguration(PSignalingClient pSignalingClient) CHK(pSignalingClient->iceConfigCount == 0 || curTime > pSignalingClient->iceConfigExpiration, retStatus); // ICE config can be retrieved in specific states only - CHK_STATUS(acceptStateMachineState(pSignalingClient->pStateMachine, - SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DISCONNECTED)); + CHK_STATUS(acceptSignalingStateMachineState( + pSignalingClient, SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DISCONNECTED)); MUTEX_LOCK(pSignalingClient->stateLock); locked = TRUE; @@ -656,8 +676,7 @@ STATUS refreshIceConfiguration(PSignalingClient pSignalingClient) // Iterate the state machinery in steady states only - ready or connected if (pStateMachineState->state == SIGNALING_STATE_READY || pStateMachineState->state == SIGNALING_STATE_CONNECTED) { - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, curTime + SIGNALING_REFRESH_ICE_CONFIG_STATE_TIMEOUT, - pStateMachineState->state)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, curTime + SIGNALING_REFRESH_ICE_CONFIG_STATE_TIMEOUT, pStateMachineState->state)); } CleanUp: diff --git a/src/source/Signaling/Signaling.h b/src/source/Signaling/Signaling.h index 1e5e036b89..dd00e1d980 100644 --- a/src/source/Signaling/Signaling.h +++ b/src/source/Signaling/Signaling.h @@ -14,8 +14,8 @@ extern "C" { #define SIGNALING_REQUEST_ID_HEADER_NAME KVS_REQUEST_ID_HEADER_NAME ":" // Signaling client from custom data conversion -#define SIGNALING_CLIENT_FROM_CUSTOM_DATA(h) ((PSignalingClient) (h)) -#define CUSTOM_DATA_FROM_SIGNALING_CLIENT(p) ((UINT64) (p)) +#define SIGNALING_CLIENT_FROM_CUSTOM_DATA(h) ((PSignalingClient)(h)) +#define CUSTOM_DATA_FROM_SIGNALING_CLIENT(p) ((UINT64)(p)) // Grace period for refreshing the ICE configuration #define ICE_CONFIGURATION_REFRESH_GRACE_PERIOD (30 * HUNDREDS_OF_NANOS_IN_A_SECOND) @@ -82,6 +82,8 @@ extern "C" { ((pClient)->signalingClientCallbacks.getCurrentTimeFn((pClient)->signalingClientCallbacks.customData)) : \ GETTIME()) +#define DEFAULT_CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS 7 + static const ExponentialBackoffRetryStrategyConfig DEFAULT_SIGNALING_STATE_MACHINE_EXPONENTIAL_BACKOFF_RETRY_CONFIGURATION = { /* Exponential wait times with this config will look like following - ************************************ @@ -328,15 +330,16 @@ typedef struct { } SignalingClient, *PSignalingClient; // Public handle to and from object converters -#define TO_SIGNALING_CLIENT_HANDLE(p) ((SIGNALING_CLIENT_HANDLE) (p)) -#define FROM_SIGNALING_CLIENT_HANDLE(h) (IS_VALID_SIGNALING_CLIENT_HANDLE(h) ? (PSignalingClient) (h) : NULL) +#define TO_SIGNALING_CLIENT_HANDLE(p) ((SIGNALING_CLIENT_HANDLE)(p)) +#define FROM_SIGNALING_CLIENT_HANDLE(h) (IS_VALID_SIGNALING_CLIENT_HANDLE(h) ? (PSignalingClient)(h) : NULL) STATUS createSignalingSync(PSignalingClientInfoInternal, PChannelInfo, PSignalingClientCallbacks, PAwsCredentialProvider, PSignalingClient*); STATUS freeSignaling(PSignalingClient*); STATUS signalingSendMessageSync(PSignalingClient, PSignalingMessage); -STATUS signalingGetIceConfigInfoCout(PSignalingClient, PUINT32); +STATUS signalingGetIceConfigInfoCount(PSignalingClient, PUINT32); STATUS signalingGetIceConfigInfo(PSignalingClient, UINT32, PIceConfigInfo*); +STATUS signalingFetchSync(PSignalingClient); STATUS signalingConnectSync(PSignalingClient); STATUS signalingDisconnectSync(PSignalingClient); STATUS signalingDeleteSync(PSignalingClient); diff --git a/src/source/Signaling/StateMachine.c b/src/source/Signaling/StateMachine.c index 8b21cc599c..45c1bea1f2 100644 --- a/src/source/Signaling/StateMachine.c +++ b/src/source/Signaling/StateMachine.c @@ -8,124 +8,53 @@ * Static definitions of the states */ StateMachineState SIGNALING_STATE_MACHINE_STATES[] = { - { - SIGNALING_STATE_NEW, SIGNALING_STATE_NONE | SIGNALING_STATE_NEW, - fromNewSignalingState, - executeNewSignalingState, - defaultSignalingStateTransitionHook, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_SIGNALING_INVALID_READY_STATE - }, - { - SIGNALING_STATE_GET_TOKEN, - SIGNALING_STATE_NEW | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | - SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_GET_TOKEN, - fromGetTokenSignalingState, - executeGetTokenSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_GET_TOKEN_CALL_FAILED - }, - { - SIGNALING_STATE_DESCRIBE, - SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_CONNECT | - SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_DESCRIBE, - fromDescribeSignalingState, - executeDescribeSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_DESCRIBE_CALL_FAILED - }, - { - SIGNALING_STATE_CREATE, - SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE, - fromCreateSignalingState, - executeCreateSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_CREATE_CALL_FAILED - }, - { - SIGNALING_STATE_GET_ENDPOINT, - SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | - SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT, - fromGetEndpointSignalingState, - executeGetEndpointSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED - }, - { - SIGNALING_STATE_GET_ICE_CONFIG, - SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_READY | - SIGNALING_STATE_GET_ICE_CONFIG, - fromGetIceConfigSignalingState, - executeGetIceConfigSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED - }, - { - SIGNALING_STATE_READY, - SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_READY, - fromReadySignalingState, - executeReadySignalingState, - defaultSignalingStateTransitionHook, - INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_READY_CALLBACK_FAILED - }, - { - SIGNALING_STATE_CONNECT, - SIGNALING_STATE_READY | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_CONNECT, - fromConnectSignalingState, - executeConnectSignalingState, - defaultSignalingStateTransitionHook, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_SIGNALING_CONNECT_CALL_FAILED - }, - { - SIGNALING_STATE_CONNECTED, - SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, - fromConnectedSignalingState, - executeConnectedSignalingState, - defaultSignalingStateTransitionHook, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_SIGNALING_CONNECTED_CALLBACK_FAILED - }, - { - SIGNALING_STATE_DISCONNECTED, - SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, - fromDisconnectedSignalingState, - executeDisconnectedSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_DISCONNECTED_CALLBACK_FAILED - }, - { - SIGNALING_STATE_DELETE, - SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | - SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_DELETE, - fromDeleteSignalingState, - executeDeleteSignalingState, - defaultSignalingStateTransitionHook, - SIGNALING_STATES_DEFAULT_RETRY_COUNT, - STATUS_SIGNALING_DELETE_CALL_FAILED - }, - { - SIGNALING_STATE_DELETED, - SIGNALING_STATE_DELETE | SIGNALING_STATE_DELETED, - fromDeletedSignalingState, - executeDeletedSignalingState, - defaultSignalingStateTransitionHook, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_SIGNALING_DELETE_CALL_FAILED - }, + {SIGNALING_STATE_NEW, SIGNALING_STATE_NONE | SIGNALING_STATE_NEW, fromNewSignalingState, executeNewSignalingState, + defaultSignalingStateTransitionHook, INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_INVALID_READY_STATE}, + {SIGNALING_STATE_GET_TOKEN, + SIGNALING_STATE_NEW | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | + SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_GET_TOKEN, + fromGetTokenSignalingState, executeGetTokenSignalingState, defaultSignalingStateTransitionHook, SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_GET_TOKEN_CALL_FAILED}, + {SIGNALING_STATE_DESCRIBE, + SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_CONNECT | + SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DELETE | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_READY | SIGNALING_STATE_DISCONNECTED, + fromDescribeSignalingState, executeDescribeSignalingState, defaultSignalingStateTransitionHook, SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_DESCRIBE_CALL_FAILED}, + {SIGNALING_STATE_CREATE, SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE, fromCreateSignalingState, executeCreateSignalingState, + defaultSignalingStateTransitionHook, SIGNALING_STATES_DEFAULT_RETRY_COUNT, STATUS_SIGNALING_CREATE_CALL_FAILED}, + {SIGNALING_STATE_GET_ENDPOINT, + SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | + SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT, + fromGetEndpointSignalingState, executeGetEndpointSignalingState, defaultSignalingStateTransitionHook, SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED}, + {SIGNALING_STATE_GET_ICE_CONFIG, + SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_READY | + SIGNALING_STATE_GET_ICE_CONFIG, + fromGetIceConfigSignalingState, executeGetIceConfigSignalingState, defaultSignalingStateTransitionHook, SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED}, + {SIGNALING_STATE_READY, SIGNALING_STATE_GET_ICE_CONFIG | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_READY, fromReadySignalingState, + executeReadySignalingState, defaultSignalingStateTransitionHook, INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_READY_CALLBACK_FAILED}, + {SIGNALING_STATE_CONNECT, SIGNALING_STATE_READY | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_CONNECT, + fromConnectSignalingState, executeConnectSignalingState, defaultSignalingStateTransitionHook, INFINITE_RETRY_COUNT_SENTINEL, + STATUS_SIGNALING_CONNECT_CALL_FAILED}, + {SIGNALING_STATE_CONNECTED, SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, fromConnectedSignalingState, executeConnectedSignalingState, + defaultSignalingStateTransitionHook, INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_CONNECTED_CALLBACK_FAILED}, + {SIGNALING_STATE_DISCONNECTED, SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED, fromDisconnectedSignalingState, + executeDisconnectedSignalingState, defaultSignalingStateTransitionHook, SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_DISCONNECTED_CALLBACK_FAILED}, + {SIGNALING_STATE_DELETE, + SIGNALING_STATE_GET_TOKEN | SIGNALING_STATE_DESCRIBE | SIGNALING_STATE_CREATE | SIGNALING_STATE_GET_ENDPOINT | SIGNALING_STATE_GET_ICE_CONFIG | + SIGNALING_STATE_READY | SIGNALING_STATE_CONNECT | SIGNALING_STATE_CONNECTED | SIGNALING_STATE_DISCONNECTED | SIGNALING_STATE_DELETE, + fromDeleteSignalingState, executeDeleteSignalingState, defaultSignalingStateTransitionHook, SIGNALING_STATES_DEFAULT_RETRY_COUNT, + STATUS_SIGNALING_DELETE_CALL_FAILED}, + {SIGNALING_STATE_DELETED, SIGNALING_STATE_DELETE | SIGNALING_STATE_DELETED, fromDeletedSignalingState, executeDeletedSignalingState, + defaultSignalingStateTransitionHook, INFINITE_RETRY_COUNT_SENTINEL, STATUS_SIGNALING_DELETE_CALL_FAILED}, }; UINT32 SIGNALING_STATE_MACHINE_STATE_COUNT = ARRAY_SIZE(SIGNALING_STATE_MACHINE_STATES); -STATUS defaultSignalingStateTransitionHook( - UINT64 customData /* customData should be PSignalingClient */, - PUINT64 stateTransitionWaitTime) { +STATUS defaultSignalingStateTransitionHook(UINT64 customData /* customData should be PSignalingClient */, PUINT64 stateTransitionWaitTime) +{ ENTERS(); STATUS retStatus = STATUS_SUCCESS; STATUS countStatus = STATUS_SUCCESS; @@ -143,16 +72,15 @@ STATUS defaultSignalingStateTransitionHook( // result > SERVICE_CALL_RESULT_OK covers case for - // result != SERVICE_CALL_RESULT_NOT_SET and != SERVICE_CALL_RESULT_OK // If we support any other 2xx service call results, the condition - // should change to (pSignalingClient->result > 299 && ...) - CHK(pSignalingClient->result > SERVICE_CALL_RESULT_OK && - pSignalingStateMachineRetryStrategyCallbacks->executeRetryStrategyFn != NULL, STATUS_SUCCESS); + // should change to (pSignalingClient->result > 299 && ..) + CHK(pSignalingClient->result > SERVICE_CALL_RESULT_OK && pSignalingStateMachineRetryStrategyCallbacks->executeRetryStrategyFn != NULL, + STATUS_SUCCESS); // A retry is considered only after executeRetry is executed. This will avoid publishing count + 1 if(pSignalingStateMachineRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn != NULL) { if((countStatus = pSignalingStateMachineRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn(pSignalingStateMachineRetryStrategy, &pSignalingClient->diagnostics.stateMachineRetryCount)) != STATUS_SUCCESS) { DLOGW("Failed to get retry count. Error code: %08x", countStatus); - } - else { + } else { DLOGD("Retry count: %llu", pSignalingClient->diagnostics.stateMachineRetryCount); } } @@ -179,7 +107,7 @@ STATUS signalingStateMachineIterator(PSignalingClient pSignalingClient, UINT64 e MUTEX_LOCK(pSignalingClient->stateLock); locked = TRUE; - while(TRUE) { + while (TRUE) { CHK(pSignalingClient != NULL, STATUS_NULL_ARG); CHK(!ATOMIC_LOAD_BOOL(&pSignalingClient->shutdown), retStatus); @@ -199,8 +127,7 @@ STATUS signalingStateMachineIterator(PSignalingClient pSignalingClient, UINT64 e // NOTE: Api Gateway might not return an error that can be interpreted as unauthorized to // make the correct transition to auth integration state. if (retStatus == STATUS_SERVICE_CALL_NOT_AUTHORIZED_ERROR || - (SERVICE_CALL_UNKNOWN == (SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) && - pSignalingClient->pAwsCredentials->expiration < currentTime)) { + (pSignalingClient->pAwsCredentials != NULL && pSignalingClient->pAwsCredentials->expiration < currentTime)) { // Set the call status as auth error ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_NOT_AUTHORIZED); } @@ -563,7 +490,6 @@ STATUS fromGetEndpointSignalingState(UINT64 customData, PUINT64 pState) default: break; } - *pState = state; CleanUp: @@ -838,10 +764,11 @@ STATUS fromConnectedSignalingState(UINT64 customData, PUINT64 pState) break; case SERVICE_CALL_INTERNAL_ERROR: - state = SIGNALING_STATE_GET_ENDPOINT; - break; - case SERVICE_CALL_BAD_REQUEST: + case SERVICE_CALL_NETWORK_CONNECTION_TIMEOUT: + case SERVICE_CALL_NETWORK_READ_TIMEOUT: + case SERVICE_CALL_REQUEST_TIMEOUT: + case SERVICE_CALL_GATEWAY_TIMEOUT: state = SIGNALING_STATE_GET_ENDPOINT; break; @@ -900,9 +827,6 @@ STATUS fromDisconnectedSignalingState(UINT64 customData, PUINT64 pState) CHK(pSignalingClient != NULL && pState != NULL, STATUS_NULL_ARG); - // See if we need to retry first of all - CHK(pSignalingClient->pChannelInfo->reconnect, STATUS_SUCCESS); - result = ATOMIC_LOAD(&pSignalingClient->result); switch (result) { case SERVICE_CALL_FORBIDDEN: diff --git a/tst/SignalingApiFunctionalityTest.cpp b/tst/SignalingApiFunctionalityTest.cpp index 93a41def18..c88e812e55 100644 --- a/tst/SignalingApiFunctionalityTest.cpp +++ b/tst/SignalingApiFunctionalityTest.cpp @@ -259,6 +259,7 @@ TEST_F(SignalingApiFunctionalityTest, basicCreateConnectFree) EXPECT_EQ(STATUS_SUCCESS, createSignalingClientSync(&clientInfo, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); // Connect twice - the second time will be no-op EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); @@ -371,6 +372,7 @@ TEST_F(SignalingApiFunctionalityTest, mockMaster) EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); } + EXPECT_EQ(expectedStatus,signalingClientFetchSync(signalingHandle)); pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingHandle); pActiveClient = pSignalingClient; @@ -508,9 +510,11 @@ TEST_F(SignalingApiFunctionalityTest, mockViewer) EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); } + EXPECT_EQ(expectedStatus,signalingClientFetchSync(signalingHandle)); pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingHandle); pActiveClient = pSignalingClient; + // Connect to the signaling client EXPECT_EQ(expectedStatus, signalingClientConnectSync(signalingHandle)); @@ -605,21 +609,6 @@ TEST_F(SignalingApiFunctionalityTest, invalidChannelInfoInput) MEMSET(tempBuf, 'X', SIZEOF(tempBuf)); tempBuf[ARRAY_SIZE(tempBuf) - 1] = '\0'; - EXPECT_NE(STATUS_SUCCESS, - createSignalingClientSync(&clientInfo, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, - &signalingHandle)); - EXPECT_FALSE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); - - pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingHandle); - pActiveClient = pSignalingClient; - - EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); - EXPECT_FALSE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); - - // Free again - EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); - EXPECT_FALSE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); - // Invalid version channelInfo.version++; retStatus = createSignalingClientSync(&clientInfo, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, @@ -797,10 +786,11 @@ TEST_F(SignalingApiFunctionalityTest, invalidChannelInfoInput) // channel name validation error - name with spaces channelInfo.pChannelName = (PCHAR) "Name With Spaces"; - retStatus = createSignalingClientSync(&clientInfo, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, + createSignalingClientSync(&clientInfo, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &signalingHandle); + retStatus = signalingClientFetchSync(signalingHandle); if (mAccessKeyIdSet) { - EXPECT_TRUE(retStatus == STATUS_OPERATION_TIMED_OUT || retStatus == STATUS_SIGNALING_DESCRIBE_CALL_FAILED); + EXPECT_TRUE(retStatus == STATUS_OPERATION_TIMED_OUT || retStatus == STATUS_SIGNALING_DESCRIBE_CALL_FAILED || retStatus == STATUS_SIGNALING_GET_TOKEN_CALL_FAILED); } else { EXPECT_EQ(STATUS_NULL_ARG, retStatus); } @@ -877,6 +867,7 @@ TEST_F(SignalingApiFunctionalityTest, iceReconnectEmulation) pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingHandle); pActiveClient = pSignalingClient; + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); // Connect to the signaling client EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); @@ -969,6 +960,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedVariatio EXPECT_EQ(STATUS_SUCCESS,createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -1000,7 +992,6 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedVariatio for (i = 0; i < iceCount; i++) { EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, i, &pIceConfigInfo)); } - // Make sure no APIs have been called EXPECT_EQ(1, getIceConfigCount); @@ -1235,6 +1226,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedVariations) EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); @@ -1495,6 +1487,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedAuthExpi EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -1617,6 +1610,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedAuthExpirat EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); // Connect the client EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); @@ -1746,6 +1740,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaul EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -1862,6 +1857,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithFaultIn EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -1980,6 +1976,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaul EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -2094,6 +2091,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithFaultIn EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -2204,6 +2202,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithBadA EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -2221,7 +2220,11 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithBadA // Set bad auth info BYTE firstByte = pSignalingClient->pAwsCredentials->secretKey[0]; - pSignalingClient->pAwsCredentials->secretKey[0] = 'A'; + if(firstByte == 'A') { + pSignalingClient->pAwsCredentials->secretKey[0] = 'B'; + } else { + pSignalingClient->pAwsCredentials->secretKey[0] = 'A'; + } // Trigger the ICE refresh on the next call pSignalingClient->iceConfigCount = 0; @@ -2321,6 +2324,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithBadAuth EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); // Connect to the channel EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); @@ -2341,7 +2345,11 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithBadAuth // Set bad auth info BYTE firstByte = pSignalingClient->pAwsCredentials->secretKey[0]; - pSignalingClient->pAwsCredentials->secretKey[0] = 'A'; + if(firstByte == 'A') { + pSignalingClient->pAwsCredentials->secretKey[0] = 'B'; + } else { + pSignalingClient->pAwsCredentials->secretKey[0] = 'A'; + } // Trigger the ICE refresh on the next call pSignalingClient->iceConfigCount = 0; @@ -2438,6 +2446,7 @@ TEST_F(SignalingApiFunctionalityTest, goAwayEmulation) createSignalingClientSync(&clientInfo, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &signalingHandle)); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingHandle); pActiveClient = pSignalingClient; @@ -2524,6 +2533,7 @@ TEST_F(SignalingApiFunctionalityTest, unknownMessageTypeEmulation) createSignalingClientSync(&clientInfo, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &signalingHandle)); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingHandle); pActiveClient = pSignalingClient; @@ -2582,7 +2592,7 @@ TEST_F(SignalingApiFunctionalityTest, connectTimeoutEmulation) SIGNALING_CLIENT_HANDLE signalingHandle; PKvsRetryStrategy pKvsRetryStrategy = NULL; PKvsRetryStrategyCallbacks pKvsRetryStrategyCallbacks = NULL; - UINT32 retryCount = 0, previousRetryCount = 0; + UINT32 retryCount = 0, previousRetryCount = 0, readyCount = 0, retryCountDiff = 0; signalingClientCallbacks.version = SIGNALING_CLIENT_CALLBACKS_CURRENT_VERSION; signalingClientCallbacks.customData = (UINT64) this; @@ -2619,6 +2629,7 @@ TEST_F(SignalingApiFunctionalityTest, connectTimeoutEmulation) &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -2660,13 +2671,15 @@ TEST_F(SignalingApiFunctionalityTest, connectTimeoutEmulation) pKvsRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn(pKvsRetryStrategy, &retryCount); EXPECT_LE(2, retryCount); + readyCount = signalingStatesCounts[SIGNALING_CLIENT_STATE_READY]; // Connect to the signaling client - should connect OK pSignalingClient->clientInfo.connectTimeout = 0; EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); + retryCountDiff = (signalingStatesCounts[SIGNALING_CLIENT_STATE_READY] - readyCount) ? 0 : 1; - previousRetryCount = retryCount; + previousRetryCount = retryCount + retryCountDiff; retryCount = 0; pKvsRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn(pKvsRetryStrategy, &retryCount); // retry count should not increase since there were no timeouts @@ -2736,6 +2749,7 @@ TEST_F(SignalingApiFunctionalityTest, channelInfoArnSkipDescribe) &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -2788,6 +2802,7 @@ TEST_F(SignalingApiFunctionalityTest, channelInfoArnSkipDescribe) &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -2868,6 +2883,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedWithArn) &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -2920,6 +2936,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedWithArn) &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -3002,6 +3019,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedAuthExpiration) &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -3025,7 +3043,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedAuthExpiration) // Check the states - we should have failed on get credentials EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); - EXPECT_EQ(3, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); + EXPECT_LT(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); @@ -3034,7 +3052,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedAuthExpiration) EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTING]); EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DISCONNECTED]); - EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_DELETE]); + EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DELETE]); EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DELETED]); // Reset it back right after the GetIce is called already @@ -3045,7 +3063,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedAuthExpiration) // Check the states - we should have got the credentials now and directly moved to delete EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_NEW]); - EXPECT_EQ(4, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); + EXPECT_LT(3, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_CREDENTIALS]); EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_DESCRIBE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CREATE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_GET_ENDPOINT]); @@ -3054,7 +3072,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedAuthExpiration) EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTING]); EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DISCONNECTED]); - EXPECT_EQ(2, signalingStatesCounts[SIGNALING_CLIENT_STATE_DELETE]); + EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_DELETE]); EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_DELETED]); // Shouldn't be able to connect as it's not in ready state @@ -3172,6 +3190,7 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); pActiveClient = pSignalingClient; @@ -3303,6 +3322,7 @@ TEST_F(SignalingApiFunctionalityTest, fileCachingTest) createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); } @@ -3319,11 +3339,13 @@ TEST_F(SignalingApiFunctionalityTest, fileCachingTest) &pSignalingClient)) << "Failed on channel name: " << channelInfo.pChannelName; + signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); + EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); + // Store the channel ARN to be used later STRCPY(channelArn, pSignalingClient->channelDescription.channelArn); - signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); - EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); // Repeat the same with the ARN only @@ -3336,6 +3358,7 @@ TEST_F(SignalingApiFunctionalityTest, fileCachingTest) signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); } @@ -3420,6 +3443,9 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer) signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + // Fetch credentials, describe, get endpoint, get ice config + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); + // Connect to the channel EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); @@ -3603,6 +3629,7 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_SlowClockSkew) EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); // Connect to the channel EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); @@ -3794,6 +3821,7 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_FastClockSkew) EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); // Connect to the channel EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); @@ -3953,6 +3981,7 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_FastClockSkew_Veri SIGNALING_CLIENT_HANDLE signalingHandle; UINT32 i, iceCount; PIceConfigInfo pIceConfigInfo; + STATUS retStatus = STATUS_SUCCESS; signalingClientCallbacks.version = SIGNALING_CLIENT_CALLBACKS_CURRENT_VERSION; signalingClientCallbacks.customData = (UINT64) this; @@ -3984,6 +4013,7 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_FastClockSkew_Veri EXPECT_EQ(STATUS_SUCCESS, createSignalingSync(&clientInfoInternal, &channelInfo, &signalingClientCallbacks, (PAwsCredentialProvider) mTestCredentialProvider, &pSignalingClient)); signalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); EXPECT_TRUE(IS_VALID_SIGNALING_CLIENT_HANDLE(signalingHandle)); + EXPECT_EQ(STATUS_SUCCESS,signalingClientFetchSync(signalingHandle)); // Connect to the channel EXPECT_EQ(STATUS_SUCCESS, signalingClientConnectSync(signalingHandle)); @@ -4011,7 +4041,8 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_FastClockSkew_Veri EXPECT_EQ(1, signalingStatesCounts[SIGNALING_CLIENT_STATE_CONNECTED]); EXPECT_EQ(0, signalingStatesCounts[SIGNALING_CLIENT_STATE_DISCONNECTED]); - // Ensure the ICE is not refreshed as we already have a current non-expired set + // allow for timeouts, as the forced 403 from clock skew can result in a 1 time timeout. + // however it must succeed after that 1 failure. EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); EXPECT_NE(0, iceCount); @@ -4025,7 +4056,15 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_FastClockSkew_Veri // Trigger the ICE refresh immediately on any of the ICE accessor calls pSignalingClient->iceConfigCount = 0; - EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + for(int i = 0; i < 2; i++) + { + retStatus = signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount); + if(retStatus == STATUS_SUCCESS) + { + break; + } + } + EXPECT_EQ(STATUS_SUCCESS, retStatus); EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); EXPECT_NE(0, iceCount); // Called an extra time because first time will fail with 403 @@ -4064,7 +4103,15 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_FastClockSkew_Veri EXPECT_EQ(STATUS_SUCCESS, receiveLwsMessage(pSignalingClient, message, ARRAY_SIZE(message))); - EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); + for(int i = 0; i < 2; i++) + { + retStatus = signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount); + if(retStatus == STATUS_SUCCESS) + { + break; + } + } + EXPECT_EQ(STATUS_SUCCESS, retStatus); EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(signalingHandle, 0, &pIceConfigInfo)); // ICE should not have been called again as we updated it via a message @@ -4112,7 +4159,7 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_FastClockSkew_Veri " \"description\": \"Test attempt to send an unknown message\"\n" " }\n" "}"; - + EXPECT_EQ(STATUS_SUCCESS, receiveLwsMessage(pSignalingClient, message2, ARRAY_SIZE(message2))); EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(signalingHandle, &iceCount)); diff --git a/tst/WebRTCClientTestFixture.h b/tst/WebRTCClientTestFixture.h index 358965c0fe..c4b5691251 100644 --- a/tst/WebRTCClientTestFixture.h +++ b/tst/WebRTCClientTestFixture.h @@ -128,6 +128,9 @@ class WebRtcClientTestBase : public ::testing::Test { EXPECT_NE(STATUS_SUCCESS, retStatus); } + retStatus = signalingClientFetchSync(mSignalingClientHandle); + + return retStatus; } From a83ae42a51c20d98bdaf35db37c9a25a948f984d Mon Sep 17 00:00:00 2001 From: Hassan Sahibzada Date: Fri, 10 Dec 2021 17:50:15 -0500 Subject: [PATCH 029/102] Merge master into develop (#1352) --- README.md | 4 ++++ samples/Samples.h | 1 - samples/kvsWebRTCClientViewer.c | 1 + src/source/Signaling/LwsApiCalls.c | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d5a0d021a..8dc9449b83 100644 --- a/README.md +++ b/README.md @@ -301,6 +301,10 @@ All Public APIs are documented in our [Include.h](https://github.com/awslabs/ama Refer to [related](#related) for more about WebRTC and KVS. +## Development + +If you would like to contribute to the development of this project, please base your pull requests off of the `origin/develop` branch, and to the `origin/develop` branch. Commits from `develop` will be merged into master periodically as a part of each release cycle. + ## Outbound hostname and port requirements * KVS endpoint : TCP 443 (ex: kinesisvideo.us-west-2.amazonaws.com) * HTTPS channel endpoint : TCP 443 (ex: r-2c136a55.kinesisvideo.us-west-2.amazonaws.com) diff --git a/samples/Samples.h b/samples/Samples.h index 8c2320c476..6b721a8d6f 100644 --- a/samples/Samples.h +++ b/samples/Samples.h @@ -49,7 +49,6 @@ extern "C" { #define MASTER_DATA_CHANNEL_MESSAGE "This message is from the KVS Master" #define VIEWER_DATA_CHANNEL_MESSAGE "This message is from the KVS Viewer" - /* Uncomment the following line in order to enable IoT credentials checks in the provided samples */ //#define IOT_CORE_ENABLE_CREDENTIALS 1 diff --git a/samples/kvsWebRTCClientViewer.c b/samples/kvsWebRTCClientViewer.c index 7dfe3499a3..6a100a15ae 100644 --- a/samples/kvsWebRTCClientViewer.c +++ b/samples/kvsWebRTCClientViewer.c @@ -3,6 +3,7 @@ extern PSampleConfiguration gSampleConfiguration; #ifdef ENABLE_DATA_CHANNEL + // onMessage callback for a message received by the viewer on a data channel VOID dataChannelOnMessageCallback(UINT64 customData, PRtcDataChannel pDataChannel, BOOL isBinary, PBYTE pMessage, UINT32 pMessageLen) { diff --git a/src/source/Signaling/LwsApiCalls.c b/src/source/Signaling/LwsApiCalls.c index 1c02bcc172..e40cd8bb3d 100644 --- a/src/source/Signaling/LwsApiCalls.c +++ b/src/source/Signaling/LwsApiCalls.c @@ -173,6 +173,7 @@ INT32 lwsHttpCallbackRoutine(struct lws* wsi, enum lws_callback_reasons reason, pLwsCallInfo->callInfo.callResult = SERVICE_CALL_SIGNATURE_NOT_YET_CURRENT; } } + } else { DLOGV("Received client http read response: %s", pLwsCallInfo->callInfo.responseData); } From 66d5e2e5c4e77ddac66cd8dc581af758c57090c8 Mon Sep 17 00:00:00 2001 From: jdelapla Date: Fri, 17 Dec 2021 08:21:53 -0800 Subject: [PATCH 030/102] Missing the public API switch in the other samples (#1356) --- samples/kvsWebRTCClientMasterGstreamerSample.c | 6 ++++++ samples/kvsWebRTCClientViewer.c | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/samples/kvsWebRTCClientMasterGstreamerSample.c b/samples/kvsWebRTCClientMasterGstreamerSample.c index 28ba593b41..185859bd57 100644 --- a/samples/kvsWebRTCClientMasterGstreamerSample.c +++ b/samples/kvsWebRTCClientMasterGstreamerSample.c @@ -430,6 +430,12 @@ INT32 main(INT32 argc, CHAR* argv[]) printf("[KVS GStreamer Master] Signaling client created successfully\n"); // Enable the processing of the messages + retStatus = signalingClientFetchSync(pSampleConfiguration->signalingClientHandle); + if (retStatus != STATUS_SUCCESS) { + printf("[KVS Master] signalingClientFetchSync(): operation returned status code: 0x%08x \n", retStatus); + goto CleanUp; + } + retStatus = signalingClientConnectSync(pSampleConfiguration->signalingClientHandle); if (retStatus != STATUS_SUCCESS) { printf("[KVS GStreamer Master] signalingClientConnectSync(): operation returned status code: 0x%08x \n", retStatus); diff --git a/samples/kvsWebRTCClientViewer.c b/samples/kvsWebRTCClientViewer.c index 6a100a15ae..189a8706db 100644 --- a/samples/kvsWebRTCClientViewer.c +++ b/samples/kvsWebRTCClientViewer.c @@ -98,6 +98,12 @@ INT32 main(INT32 argc, CHAR* argv[]) printf("[KVS Viewer] Signaling client created successfully\n"); // Enable the processing of the messages + retStatus = signalingClientFetchSync(pSampleConfiguration->signalingClientHandle); + if (retStatus != STATUS_SUCCESS) { + printf("[KVS Master] signalingClientFetchSync(): operation returned status code: 0x%08x \n", retStatus); + goto CleanUp; + } + retStatus = signalingClientConnectSync(pSampleConfiguration->signalingClientHandle); if (retStatus != STATUS_SUCCESS) { printf("[KVS Viewer] signalingClientConnectSync(): operation returned status code: 0x%08x \n", retStatus); From 8c2eebcddd697e1ba91f7bd822f5a8a15af287d2 Mon Sep 17 00:00:00 2001 From: jdelapla Date: Mon, 20 Dec 2021 11:16:18 -0800 Subject: [PATCH 031/102] Fix Fetch error retry cases (#1359) * Fix Fetch error retry cases * update comment --- src/source/Signaling/Signaling.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index 5fd46f89f8..b1d5ee02e4 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -440,6 +440,7 @@ STATUS signalingFetchSync(PSignalingClient pSignalingClient) { ENTERS(); STATUS retStatus = STATUS_SUCCESS; + SIZE_T result; CHK(pSignalingClient != NULL, STATUS_NULL_ARG); @@ -449,11 +450,23 @@ STATUS signalingFetchSync(PSignalingClient pSignalingClient) } // move to the fromGetToken() so we can move to the necessary step + // We start from get token to keep the design consistent with how it was when the constructor (create) + // would bring you to the READY state, but this is a two-way door and can be redone later. setStateMachineCurrentState(pSignalingClient->pStateMachine, SIGNALING_STATE_GET_TOKEN); + + //if we're not failing from a bad token, set the result to OK to that fromGetToken will move + //to getEndpoint, describe, or create. If it is bad, keep reiterating on token. + result = ATOMIC_LOAD(&pSignalingClient->result); + if (result != SERVICE_CALL_NOT_AUTHORIZED) { + ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_RESULT_OK); + } CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_READY)); CleanUp: + if (STATUS_FAILED(retStatus)) { + resetStateMachineRetryCount(pSignalingClient->pStateMachine); + } CHK_LOG_ERR(retStatus); LEAVES(); return retStatus; From 86311e6b02b93689201cca48e14bed4c15831118 Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Tue, 28 Dec 2021 13:22:07 -0800 Subject: [PATCH 032/102] added implementation and a test to use remote sdp to construct local sdp (#1238) * added implementation and a test to use remote sdp to construct local sdp * used same strings in offer and test * updated tests --- .../PeerConnection/SessionDescription.c | 39 +++++++++--- tst/SdpApiTest.cpp | 63 ++++++++++++++++++- 2 files changed, 91 insertions(+), 11 deletions(-) diff --git a/src/source/PeerConnection/SessionDescription.c b/src/source/PeerConnection/SessionDescription.c index 74bd84d5b4..5a182afda7 100644 --- a/src/source/PeerConnection/SessionDescription.c +++ b/src/source/PeerConnection/SessionDescription.c @@ -787,7 +787,7 @@ STATUS populateSessionDescription(PKvsPeerConnection pKvsPeerConnection, PSessio { ENTERS(); STATUS retStatus = STATUS_SUCCESS; - CHAR bundleValue[MAX_SDP_ATTRIBUTE_VALUE_LENGTH], wmsValue[MAX_SDP_ATTRIBUTE_VALUE_LENGTH]; + CHAR bundleValue[MAX_SDP_ATTRIBUTE_VALUE_LENGTH], wmsValue[MAX_SDP_ATTRIBUTE_VALUE_LENGTH], remoteSdpAttributeValue[MAX_SDP_ATTRIBUTE_VALUE_LENGTH]; PCHAR curr = NULL; UINT32 i, sizeRemaining; INT32 charsCopied; @@ -798,6 +798,7 @@ STATUS populateSessionDescription(PKvsPeerConnection pKvsPeerConnection, PSessio MEMSET(bundleValue, 0, MAX_SDP_ATTRIBUTE_VALUE_LENGTH); MEMSET(wmsValue, 0, MAX_SDP_ATTRIBUTE_VALUE_LENGTH); + MEMSET(remoteSdpAttributeValue, 0, MAX_SDP_ATTRIBUTE_VALUE_LENGTH); STRCPY(pLocalSessionDescription->sdpOrigin.userName, "-"); pLocalSessionDescription->sdpOrigin.sessionId = RAND(); @@ -814,18 +815,36 @@ STATUS populateSessionDescription(PKvsPeerConnection pKvsPeerConnection, PSessio STRCPY(pLocalSessionDescription->sdpAttributes[0].attributeName, "group"); STRCPY(pLocalSessionDescription->sdpAttributes[0].attributeValue, BUNDLE_KEY); - for (curr = (pLocalSessionDescription->sdpAttributes[0].attributeValue + ARRAY_SIZE(BUNDLE_KEY) - 1), i = 0; - i < pLocalSessionDescription->mediaCount; i++) { - STRCPY(pLocalSessionDescription->mediaDescriptions[i].sdpConnectionInformation.networkType, "IN"); - STRCPY(pLocalSessionDescription->mediaDescriptions[i].sdpConnectionInformation.addressType, "IP4"); - STRCPY(pLocalSessionDescription->mediaDescriptions[i].sdpConnectionInformation.connectionAddress, "127.0.0.1"); - sizeRemaining = MAX_SDP_ATTRIBUTE_VALUE_LENGTH - (curr - pLocalSessionDescription->sdpAttributes[0].attributeValue); - charsCopied = SNPRINTF(curr, sizeRemaining, " %d", i); +// check all session attribute lines to see if a line with BUNDLE is present. If it is present, copy its content and break + for (i = 0; i < pRemoteSessionDescription->sessionAttributesCount; i++) { + if(STRSTR(pRemoteSessionDescription->sdpAttributes[i].attributeValue, BUNDLE_KEY) != NULL) { + STRCPY(remoteSdpAttributeValue, pRemoteSessionDescription->sdpAttributes[i].attributeValue + ARRAY_SIZE(BUNDLE_KEY) - 1); + break; + } + } - CHK(charsCopied > 0 && (UINT32) charsCopied < sizeRemaining, STATUS_BUFFER_TOO_SMALL); +// check if we already have a value for the "group" session attribute from remote description. If we have it, we use it. +// If we don't have it, we loop over, create and add them + if (STRLEN(remoteSdpAttributeValue) > 0) { + CHK(STRLEN(remoteSdpAttributeValue) < MAX_SDP_ATTRIBUTE_VALUE_LENGTH, STATUS_BUFFER_TOO_SMALL); + STRCAT(pLocalSessionDescription->sdpAttributes[0].attributeValue, remoteSdpAttributeValue); + } else { + for (curr = (pLocalSessionDescription->sdpAttributes[0].attributeValue + ARRAY_SIZE(BUNDLE_KEY) - 1), i = 0; + i < pLocalSessionDescription->mediaCount; i++) { + sizeRemaining = MAX_SDP_ATTRIBUTE_VALUE_LENGTH - (curr - pLocalSessionDescription->sdpAttributes[0].attributeValue); + charsCopied = SNPRINTF(curr, sizeRemaining, " %d", i); - curr += charsCopied; + CHK(charsCopied > 0 && (UINT32) charsCopied < sizeRemaining, STATUS_BUFFER_TOO_SMALL); + + curr += charsCopied; + } + } + + for (i = 0; i < pLocalSessionDescription->mediaCount; i++) { + STRCPY(pLocalSessionDescription->mediaDescriptions[i].sdpConnectionInformation.networkType, "IN"); + STRCPY(pLocalSessionDescription->mediaDescriptions[i].sdpConnectionInformation.addressType, "IP4"); + STRCPY(pLocalSessionDescription->mediaDescriptions[i].sdpConnectionInformation.connectionAddress, "127.0.0.1"); } pLocalSessionDescription->sessionAttributesCount++; diff --git a/tst/SdpApiTest.cpp b/tst/SdpApiTest.cpp index cff77583c9..10e4ab28e3 100644 --- a/tst/SdpApiTest.cpp +++ b/tst/SdpApiTest.cpp @@ -640,6 +640,67 @@ a=group:BUNDLE 0 }); } +// uses words "audio video data" instead of "0 1 2" for session attributes. Sends an offer, expects the answer sdp +// to contain "audio video data" as sent in the offer +TEST_F(SdpApiTest, offerWithMediaNameInBundle) +{ + auto offer = std::string(R"(v=0 +o=- 481034601 1588366671 IN IP4 0.0.0.0 +s=- +t=0 0 +a=fingerprint:sha-256 87:E6:EC:59:93:76:9F:42:7D:15:17:F6:8F:C4:29:AB:EA:3F:28:B6:DF:F8:14:2F:96:62:2F:16:98:F5:76:E5 +a=group:BUNDLE audio video data +)"); + + offer += sdpaudio_sendrecv_mid0; + offer += "\n"; + offer += sdpvideo; + offer += "\n"; + + assertLFAndCRLF((PCHAR) offer.c_str(), offer.size(), [](PCHAR sdp) { + RtcConfiguration configuration{}; + PRtcPeerConnection pRtcPeerConnection = nullptr; + RtcMediaStreamTrack track1{}; + RtcMediaStreamTrack track2{}; + PRtcRtpTransceiver transceiver1 = nullptr; + PRtcRtpTransceiver transceiver2 = nullptr; + RtcSessionDescriptionInit offerSdp{}; + RtcSessionDescriptionInit answerSdp{}; + + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + + track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; + track1.codec = RTC_CODEC_VP8; + STRNCPY(track1.streamId, "videoStream", MAX_MEDIA_STREAM_ID_LEN); + STRNCPY(track1.trackId, "videoTrack1", MAX_MEDIA_STREAM_TRACK_ID_LEN); + + track2.kind = MEDIA_STREAM_TRACK_KIND_AUDIO; + track2.codec = RTC_CODEC_OPUS; + STRNCPY(track2.streamId, "audioStream1", MAX_MEDIA_STREAM_ID_LEN); + STRNCPY(track2.trackId, "audioTrack1", MAX_MEDIA_STREAM_TRACK_ID_LEN); + + offerSdp.type = SDP_TYPE_OFFER; + STRNCPY(offerSdp.sdp, (PCHAR) sdp, MAX_SESSION_DESCRIPTION_INIT_SDP_LEN); + + EXPECT_EQ(STATUS_SUCCESS, createPeerConnection(&configuration, &pRtcPeerConnection)); + EXPECT_EQ(STATUS_SUCCESS, addSupportedCodec(pRtcPeerConnection, RTC_CODEC_VP8)); + EXPECT_EQ(STATUS_SUCCESS, addSupportedCodec(pRtcPeerConnection, RTC_CODEC_OPUS)); + + EXPECT_EQ(STATUS_SUCCESS, addTransceiver(pRtcPeerConnection, &track1, nullptr, &transceiver1)); + EXPECT_EQ(STATUS_SUCCESS, addTransceiver(pRtcPeerConnection, &track2, nullptr, &transceiver2)); + + EXPECT_EQ(STATUS_SUCCESS, setRemoteDescription(pRtcPeerConnection, &offerSdp)); + EXPECT_EQ(STATUS_SUCCESS, createAnswer(pRtcPeerConnection, &answerSdp)); + + EXPECT_PRED_FORMAT2(testing::IsSubstring, "sendonly", answerSdp.sdp); + EXPECT_PRED_FORMAT2(testing::IsSubstring, "sendrecv", answerSdp.sdp); + EXPECT_PRED_FORMAT2(testing::IsSubstring, "group:BUNDLE audio video data", answerSdp.sdp); + + closePeerConnection(pRtcPeerConnection); + EXPECT_EQ(STATUS_SUCCESS, freePeerConnection(&pRtcPeerConnection)); + }); +} + // if offer (remote) contains video m-line only then answer (local) should contain video m-line only // even if local side has other transceivers, i.e. audio TEST_F(SdpApiTest, offerMediaMultipleDirections_validateAnswerCorrectMatchingDirections) @@ -1975,4 +2036,4 @@ INSTANTIATE_TEST_CASE_P(SdpApiTest_SdpMatch_Safari, SdpApiTest_SdpMatch, ::testi } // namespace video } // namespace kinesis } // namespace amazonaws -} // namespace com +} // namespace com \ No newline at end of file From 1fa724aa3739d9fda5b12bc5b28871b17533d165 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Wed, 26 Jan 2022 08:21:07 -0800 Subject: [PATCH 033/102] Update stale action workflow (#1381) * Modify issue triaging management * test on branch * Update ga for stale issue to use aws-actions instead of the one publicly available --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/ISSUE_TEMPLATE/questions-help.md | 2 +- .github/workflows/close-stale-issues.yml | 16 ++++++++++------ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 641e20b5f3..1ed5fb63b4 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -2,7 +2,7 @@ name: Bug report about: Create a report to help us improve title: "[BUG]" -labels: bug +labels: bug,needs-triage assignees: '' --- diff --git a/.github/ISSUE_TEMPLATE/questions-help.md b/.github/ISSUE_TEMPLATE/questions-help.md index 1cc48d57c9..83d1501847 100644 --- a/.github/ISSUE_TEMPLATE/questions-help.md +++ b/.github/ISSUE_TEMPLATE/questions-help.md @@ -2,7 +2,7 @@ name: Questions/Help about: Describe this issue template's purpose here. title: "[QUESTION]" -labels: question +labels: question,needs-triage assignees: '' --- diff --git a/.github/workflows/close-stale-issues.yml b/.github/workflows/close-stale-issues.yml index a1745b1b92..4f721c936b 100644 --- a/.github/workflows/close-stale-issues.yml +++ b/.github/workflows/close-stale-issues.yml @@ -10,18 +10,22 @@ jobs: runs-on: ubuntu-latest name: Close stale issues steps: - - uses: actions/stale@v4.0.0 + - uses: aws-actions/stale-issue-cleanup@v3 with: - stale-issue-message: It looks like this issue has not been active for a long time. If the issue is not resolved, please add an update to the ticket, else it will be automatically resolved in a few days. - close-issue-message: The issue has been stale for a while and hence it has been auto-closed. If the issue persists, feel free to open a new issue with details. + ancient-issue-message: This is a very old issue. We encourage you to check if this is still an issue in the latest release and if you find that this is still a problem, please feel free to open a new one. + stale-issue-message: It looks like this issue has not been active for 10 days. If the issue is not resolved, please add an update to the ticket, else it will be automatically resolved in a few days. # labels to be added stale-issue-label: closing-soon - any-of-labels: question,bug + exempt-issue-labels: enhancement,pending-research,pending-action,needs-triage + response-requested-label: pending-response + + closed-for-staleness-label: closed-for-staleness # SLAs - days-before-issue-stale: 7 - days-before-issue-close: 3 + days-before-stale: 7 + days-before-close: 3 + days-before-ancient: 180 repo-token: ${{ secrets.GITHUB_TOKEN }} From 5faadadd6b5e1f8f388954f26985859fa0f1c64e Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Wed, 26 Jan 2022 10:44:00 -0800 Subject: [PATCH 034/102] Travis to ga (#1347) * Test github actions * Clang format * Change platform * Add macos gtest * Ubuntu latest * Address sanitizer * Add ubsan, tsan and old gcc build * Fix macos build * Allow mac and ubsan to fail * Fixing clang format * Testing allow on failure * Run github actions only on PR and merge * Test mbedtls * Rebase on develop and fix clang failure * Test if travis builds without ga * Restore travis * Test mac build and add sample check * Fix sample check and revert mac to allow fail * Travis CI to GHA migration phase 1 * Set clang for mbedtls and test msan * Split files * Comment out failing tests * Add codecov * Travis CI to GHA migration phase 1 --- .github/workflows/ci.yml | 190 ++++++++++++++++++ .github/workflows/codecov.yml | 29 +++ .github/workflows/codeql-analysis.yml | 4 +- .travis.yml | 133 ++---------- samples/Common.c | 24 +-- samples/kvsWebRTCClientMaster.c | 6 +- samples/kvsWebRTCClientViewer.c | 9 +- .../kinesis/video/webrtcclient/Include.h | 28 +-- src/source/Ice/IceAgent.c | 4 +- src/source/Ice/IceAgentStateMachine.c | 81 ++------ src/source/PeerConnection/PeerConnection.c | 2 +- .../PeerConnection/SessionDescription.c | 15 +- src/source/Sctp/Sctp.c | 10 +- src/source/Signaling/Client.c | 12 +- src/source/Signaling/LwsApiCalls.c | 56 +++--- src/source/Signaling/LwsApiCalls.h | 2 +- src/source/Signaling/Signaling.c | 19 +- src/source/Signaling/Signaling.h | 33 +-- src/source/Signaling/StateMachine.c | 9 +- tst/WebRTCClientTestFixture.h | 13 +- 20 files changed, 388 insertions(+), 291 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/codecov.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000000..e20f23ceb4 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,190 @@ +name: WebRTC C SDK CI + +on: + push: + branches: + - develop + - master + pull_request: + branches: + - develop + - master +jobs: + clang-format-check: + runs-on: macos-11 + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Install clang-format + run: | + brew install clang-format + clang-format --version + - name: Run clang format check + run: | + bash scripts/check-clang.sh + + ubuntu-os-build: + runs-on: ubuntu-latest + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Build repository + run: | + # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + mkdir build + cd build + cmake .. -DBUILD_TEST=TRUE + make + export AWS_KVS_LOG_LEVEL=3 + ./tst/webrtc_client_test + + address-sanitizer: + runs-on: ubuntu-18.04 + env: + ASAN_OPTIONS: detect_odr_violation=0:detect_leaks=1 + LSAN_OPTIONS: suppressions=../tst/suppressions/LSAN.supp + CC: /usr/bin/clang + CXX: /usr/bin/clang++ + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Build repository + run: | + # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DADDRESS_SANITIZER=TRUE + make + export AWS_KVS_LOG_LEVEL=3 + ulimit -c unlimited -S + timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + + thread-sanitizer: + runs-on: ubuntu-18.04 + env: + TSAN_OPTIONS: halt_on_error=1:suppressions=../tst/suppressions/TSAN.supp + CC: /usr/bin/clang + CXX: /usr/bin/clang++ + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Build repository + run: | + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DTHREAD_SANITIZER=TRUE + make + export AWS_KVS_LOG_LEVEL=3 + ulimit -c unlimited -S + timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + + mbedtls-ubuntu-clang: + runs-on: ubuntu-latest + env: + CC: /usr/bin/clang + CXX: /usr/bin/clang++ + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Build repository + run: | + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + mkdir build + cd build + cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON + make + export AWS_KVS_LOG_LEVEL=3 + ulimit -c unlimited -S + timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + + sample-check: + runs-on: ubuntu-latest + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Build repository + run: | + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + mkdir build + cd build + cmake .. + make + cd .. + ./scripts/check-sample.sh + +# Todo: Fix these builds + + # mac-os-catalina-build: + # runs-on: macos-latest + # env: + # CPATH: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include" + # steps: + # - name: Clone repository + # uses: actions/checkout@v2 + # - name: Build repository + # run: | + # mkdir build + # cd build + # cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE -DBUILD_OPENSSL_PLATFORM=darwin64-x86_64-cc + # make + # export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:`pwd`/../open-source/lib" + # ./tst/webrtc_client_test + + # memory-sanitizer: + # runs-on: ubuntu-latest + # env: + # CC: /usr/bin/clang + # CXX: /usr/bin/clang++ + # steps: + # - name: Clone repository + # uses: actions/checkout@v2 + # - name: Build repository + # run: | + # mkdir build + # cd build + # cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DMEMORY_SANITIZER=TRUE + # make + # export AWS_KVS_LOG_LEVEL=3 + # ulimit -c unlimited -S + # timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + + + # undefined-behavior-sanitizer: + # runs-on: ubuntu-18.04 + # env: + # UBSAN_OPTIONS: halt_on_error=1 + # steps: + # - name: Clone repository + # uses: actions/checkout@v2 + # - name: Build repository + # run: | + # # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. + # sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + # mkdir build + # cd build + # cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DUNDEFINED_BEHAVIOR_SANITIZER=TRUE + # make + # export AWS_KVS_LOG_LEVEL=3 + # ulimit -c unlimited -S + # timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + + # windows-build: + # runs-on: windows-latest + # env: + # PATH: "/c/Strawberry/perl/site/bin:/c/Strawberry/perl/bin:/c/Strawberry/c/bin:/c/Program Files/NASM:`pwd`/open-source/lib:`pwd`/open-source/bin:$PATH" + # steps: + # - name: Clone repository + # uses: actions/checkout@v2 + # - name: Install deps + # run: | + # choco install nasm strawberryperl + # - name: Build repository + # run: | + # unset CC CC_FOR_BUILD CXX CXX_FOR_BUILD # We want to use MSVC + # .github/build_windows.bat + # cd build/tst + # ./webrtc_client_test.exe --gtest_filter="-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3" + diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml new file mode 100644 index 0000000000..dd7093eacb --- /dev/null +++ b/.github/workflows/codecov.yml @@ -0,0 +1,29 @@ +name: Codecov for WebRTC C SDK +on: + push: + branches: + - develop + - master + pull_request: + branches: + - develop + - master +jobs: + linux-gcc-codecov: + runs-on: ubuntu-latest + steps: + - name: Fetch + uses: actions/checkout@v2 + with: + fetch-depth: 2 + - name: Run code coverage + run: | + mkdir build + cd build + cmake .. -DCODE_COVERAGE=TRUE -DBUILD_TEST=TRUE + make + export AWS_KVS_LOG_LEVEL=3 + ulimit -c unlimited -S + timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + for test_file in $(find CMakeFiles/kvsWebrtcClient.dir CMakeFiles/kvsWebrtcSignalingClient.dir -name '*.gcno'); do gcov $test_file; done + bash <(curl -s https://codecov.io/bash) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 48df0f11f6..ec9d11cfb0 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -2,10 +2,10 @@ name: "CodeQL" on: push: - branches: [ master ] + branches: [ develop, master ] pull_request: # The branches below must be a subset of the branches above - branches: [ master ] + branches: [ develop, master ] jobs: analyze: diff --git a/.travis.yml b/.travis.yml index 95d952919d..1d1b1d5946 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,13 +3,13 @@ sudo: true branches: only: - - master - - develop + - master + - develop cache: -- directories: - - $HOME/.cache - - + - directories: + - $HOME/.cache + services: - docker @@ -34,17 +34,6 @@ matrix: - env: allowTestFail=true include: - #clang check - - name: "clang-format Check" - os: linux - compiler: clang - before_script: - - sudo apt-get -q update - - sudo apt-get -y install clang-format - - mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE - script: - - cd .. - - bash scripts/check-clang.sh # MacOS Builds - name: "OSX GCC" @@ -73,31 +62,6 @@ matrix: - ./tst/webrtc_client_test --gtest_break_on_failure --gtest_filter="SignalingApiFunctionalityTest.*:SignalingApiTest.*:TurnConnectionFunctionalityTest.*" after_failure: skip # timeout not available on MacOS - # Code Coverage - - name: "Linux GCC Code Coverage" - os: linux - compiler: gcc - before_install: - # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - before_script: - - mkdir build && cd build && cmake .. -DCODE_COVERAGE=TRUE -DBUILD_TEST=TRUE - after_success: - - for test_file in $(find CMakeFiles/kvsWebrtcClient.dir CMakeFiles/kvsWebrtcSignalingClient.dir -name '*.gcno'); do gcov $test_file; done - - bash <(curl -s https://codecov.io/bash) - - # AddressSanitizer - - name: "Linux Clang AddressSanitizer" - os: linux - compiler: clang - env: - - ASAN_OPTIONS=detect_odr_violation=0:detect_leaks=1 - - LSAN_OPTIONS=suppressions=../tst/suppressions/LSAN.supp - before_install: - # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - before_script: mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DADDRESS_SANITIZER=TRUE - # UndefinedBehaviorSanitizer - name: "Linux Clang UndefinedBehaviorSanitizer" os: linux @@ -108,32 +72,6 @@ matrix: - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' before_script: mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DUNDEFINED_BEHAVIOR_SANITIZER=TRUE - # MemorySanitizer - - name: "Linux Clang MemorySanitizer" - env: allowTestFail=true - before_install: - # TODO: Remove the following 2 lines. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - - echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json - - sudo service docker restart - - mkdir build - - docker run -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -w /src/build -dit --name msan-tester -v $(pwd):/src seaduboi/kvs-msan-tester - - msan-tester() { docker exec -it msan-tester "$@"; } - script: - - msan-tester cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_DEPENDENCIES=FALSE -DBUILD_TEST=TRUE -DMEMORY_SANITIZER=TRUE -DCMAKE_CXX_FLAGS="-stdlib=libc++ -L/usr/src/libcxx_msan/lib -lc++abi -I/usr/src/libcxx_msan/include -I/usr/src/libcxx_msan/include/c++/v1 -fsanitize=memory -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins" - - msan-tester make - - msan-tester ./tst/webrtc_client_test - after_failure: skip # no coredumps in container - - # ThreadSanitizer - - name: "Linux Clang ThreadSanitizer" - os: linux - compiler: clang - env: TSAN_OPTIONS=halt_on_error=1:suppressions=../tst/suppressions/TSAN.supp - before_install: - # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - before_script: mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DTHREAD_SANITIZER=TRUE - # Old Version GCC 4.4 - name: "Linux GCC 4.4 Build" os: linux @@ -199,39 +137,6 @@ matrix: - sudo apt-get -y install gdb before_script: mkdir build && cd build && cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON - - name: "mbedTLS - Linux Clang" - os: linux - compiler: clang - before_install: - # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - before_script: mkdir build && cd build && cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON - - - name: "Windows MSVC" - env: allowTestFail=true - os: windows - script: - - choco install nasm strawberryperl - - unset CC CC_FOR_BUILD CXX CXX_FOR_BUILD # We want to use MSVC - - export "PATH=/c/Strawberry/perl/site/bin:/c/Strawberry/perl/bin:/c/Strawberry/c/bin:/c/Program Files/NASM:`pwd`/open-source/lib:`pwd`/open-source/bin:$PATH" - - .github/build_windows.bat - - cd build/tst && ./webrtc_client_test.exe --gtest_filter="-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3" - - - name: "Sample check" - os: linux - compiler: gcc - before_install: - # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test - - sudo apt-get -q update - - sudo apt-get -y install gcc-4.4 - before_script: mkdir build && cd build && cmake .. - script: - - make - - cd .. - - ./scripts/check-sample.sh - # Generate Doxygen - name: "Generate Doxygen" if: type = push @@ -244,27 +149,27 @@ matrix: script: # Add SSH key to agent - | - eval "$(ssh-agent -s)" - openssl aes-256-cbc -K $encrypted_d627db542948_key -iv $encrypted_d627db542948_iv -in .github/github_deploy_key.enc -out .github/github_deploy_key -d - chmod 600 .github/github_deploy_key - ssh-add .github/github_deploy_key - rm .github/github_deploy_key + eval "$(ssh-agent -s)" + openssl aes-256-cbc -K $encrypted_d627db542948_key -iv $encrypted_d627db542948_iv -in .github/github_deploy_key.enc -out .github/github_deploy_key -d + chmod 600 .github/github_deploy_key + ssh-add .github/github_deploy_key + rm .github/github_deploy_key # Generate doxygen in container, need latest version - alpine doxygen Doxyfile - alpine chmod -R 777 doc - mv .github/doc/html /tmp # Unshallow repo - | - git remote rm origin - git remote add origin git@github.com:awslabs/amazon-kinesis-video-streams-webrtc-sdk-c.git - git fetch + git remote rm origin + git remote add origin git@github.com:awslabs/amazon-kinesis-video-streams-webrtc-sdk-c.git + git fetch # Move to gh-pages and create new commit - | - git checkout gh-pages - rm -rf * .github - mv /tmp/html/* . + git checkout gh-pages + rm -rf * .github + mv /tmp/html/* . # Commit and push - | - git add . - git commit -m "Auto-generated from travis" - git push + git add . + git commit -m "Auto-generated from travis" + git push \ No newline at end of file diff --git a/samples/Common.c b/samples/Common.c index 8270e2cb09..ccd8d004b2 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -886,32 +886,32 @@ STATUS getIceCandidatePairStatsCallback(UINT32 timerId, UINT64 currentTime, UINT pSampleConfiguration->rtcIceCandidatePairMetrics.rtcStatsObject.iceCandidatePairStats.nominated ? "nominated" : "not nominated"); averageNumberOfPacketsSentPerSecond = - (DOUBLE)(pSampleConfiguration->rtcIceCandidatePairMetrics.rtcStatsObject.iceCandidatePairStats.packetsSent - - pSampleConfiguration->sampleStreamingSessionList[i]->rtcMetricsHistory.prevNumberOfPacketsSent) / + (DOUBLE) (pSampleConfiguration->rtcIceCandidatePairMetrics.rtcStatsObject.iceCandidatePairStats.packetsSent - + pSampleConfiguration->sampleStreamingSessionList[i]->rtcMetricsHistory.prevNumberOfPacketsSent) / (DOUBLE) currentMeasureDuration; DLOGD("Packet send rate: %lf pkts/sec", averageNumberOfPacketsSentPerSecond); averageNumberOfPacketsReceivedPerSecond = - (DOUBLE)(pSampleConfiguration->rtcIceCandidatePairMetrics.rtcStatsObject.iceCandidatePairStats.packetsReceived - - pSampleConfiguration->sampleStreamingSessionList[i]->rtcMetricsHistory.prevNumberOfPacketsReceived) / + (DOUBLE) (pSampleConfiguration->rtcIceCandidatePairMetrics.rtcStatsObject.iceCandidatePairStats.packetsReceived - + pSampleConfiguration->sampleStreamingSessionList[i]->rtcMetricsHistory.prevNumberOfPacketsReceived) / (DOUBLE) currentMeasureDuration; DLOGD("Packet receive rate: %lf pkts/sec", averageNumberOfPacketsReceivedPerSecond); - outgoingBitrate = (DOUBLE)((pSampleConfiguration->rtcIceCandidatePairMetrics.rtcStatsObject.iceCandidatePairStats.bytesSent - - pSampleConfiguration->sampleStreamingSessionList[i]->rtcMetricsHistory.prevNumberOfBytesSent) * - 8.0) / + outgoingBitrate = (DOUBLE) ((pSampleConfiguration->rtcIceCandidatePairMetrics.rtcStatsObject.iceCandidatePairStats.bytesSent - + pSampleConfiguration->sampleStreamingSessionList[i]->rtcMetricsHistory.prevNumberOfBytesSent) * + 8.0) / currentMeasureDuration; DLOGD("Outgoing bit rate: %lf bps", outgoingBitrate); - incomingBitrate = (DOUBLE)((pSampleConfiguration->rtcIceCandidatePairMetrics.rtcStatsObject.iceCandidatePairStats.bytesReceived - - pSampleConfiguration->sampleStreamingSessionList[i]->rtcMetricsHistory.prevNumberOfBytesReceived) * - 8.0) / + incomingBitrate = (DOUBLE) ((pSampleConfiguration->rtcIceCandidatePairMetrics.rtcStatsObject.iceCandidatePairStats.bytesReceived - + pSampleConfiguration->sampleStreamingSessionList[i]->rtcMetricsHistory.prevNumberOfBytesReceived) * + 8.0) / currentMeasureDuration; DLOGD("Incoming bit rate: %lf bps", incomingBitrate); averagePacketsDiscardedOnSend = - (DOUBLE)(pSampleConfiguration->rtcIceCandidatePairMetrics.rtcStatsObject.iceCandidatePairStats.packetsDiscardedOnSend - - pSampleConfiguration->sampleStreamingSessionList[i]->rtcMetricsHistory.prevPacketsDiscardedOnSend) / + (DOUBLE) (pSampleConfiguration->rtcIceCandidatePairMetrics.rtcStatsObject.iceCandidatePairStats.packetsDiscardedOnSend - + pSampleConfiguration->sampleStreamingSessionList[i]->rtcMetricsHistory.prevPacketsDiscardedOnSend) / (DOUBLE) currentMeasureDuration; DLOGD("Packet discard rate: %lf pkts/sec", averagePacketsDiscardedOnSend); diff --git a/samples/kvsWebRTCClientMaster.c b/samples/kvsWebRTCClientMaster.c index d7e29e1506..a8a4348ec2 100644 --- a/samples/kvsWebRTCClientMaster.c +++ b/samples/kvsWebRTCClientMaster.c @@ -292,7 +292,7 @@ PVOID sendVideoPackets(PVOID args) CHK_LOG_ERR(retStatus); - return (PVOID)(ULONG_PTR) retStatus; + return (PVOID) (ULONG_PTR) retStatus; } PVOID sendAudioPackets(PVOID args) @@ -360,7 +360,7 @@ PVOID sendAudioPackets(PVOID args) CleanUp: - return (PVOID)(ULONG_PTR) retStatus; + return (PVOID) (ULONG_PTR) retStatus; } PVOID sampleReceiveVideoFrame(PVOID args) @@ -380,5 +380,5 @@ PVOID sampleReceiveVideoFrame(PVOID args) CleanUp: - return (PVOID)(ULONG_PTR) retStatus; + return (PVOID) (ULONG_PTR) retStatus; } diff --git a/samples/kvsWebRTCClientViewer.c b/samples/kvsWebRTCClientViewer.c index 189a8706db..218f920426 100644 --- a/samples/kvsWebRTCClientViewer.c +++ b/samples/kvsWebRTCClientViewer.c @@ -17,14 +17,15 @@ VOID dataChannelOnMessageCallback(UINT64 customData, PRtcDataChannel pDataChanne } // onOpen callback for the onOpen event of a viewer created data channel -VOID dataChannelOnOpenCallback(UINT64 customData, PRtcDataChannel pDataChannel) { +VOID dataChannelOnOpenCallback(UINT64 customData, PRtcDataChannel pDataChannel) +{ STATUS retStatus = STATUS_SUCCESS; DLOGI("New DataChannel has been opened %s \n", pDataChannel->name); dataChannelOnMessage(pDataChannel, customData, dataChannelOnMessageCallback); ATOMIC_INCREMENT((PSIZE_T) customData); // Sending first message to the master over the data channel retStatus = dataChannelSend(pDataChannel, FALSE, (PBYTE) VIEWER_DATA_CHANNEL_MESSAGE, STRLEN(VIEWER_DATA_CHANNEL_MESSAGE)); - if(retStatus != STATUS_SUCCESS){ + if (retStatus != STATUS_SUCCESS) { DLOGI("[KVS Viewer] dataChannelSend(): operation returned status code: 0x%08x \n", retStatus); } } @@ -204,7 +205,7 @@ INT32 main(INT32 argc, CHAR* argv[]) // Creating a new datachannel on the peer connection of the existing sample streaming session retStatus = createDataChannel(pPeerConnection, pChannelName, NULL, &pDataChannel); - if(retStatus != STATUS_SUCCESS) { + if (retStatus != STATUS_SUCCESS) { printf("[KVS Viewer] createDataChannel(): operation returned status code: 0x%08x \n", retStatus); goto CleanUp; } @@ -212,7 +213,7 @@ INT32 main(INT32 argc, CHAR* argv[]) // Setting a callback for when the data channel is open retStatus = dataChannelOnOpen(pDataChannel, (UINT64) &datachannelLocalOpenCount, dataChannelOnOpenCallback); - if(retStatus != STATUS_SUCCESS) { + if (retStatus != STATUS_SUCCESS) { printf("[KVS Viewer] dataChannelOnOpen(): operation returned status code: 0x%08x \n", retStatus); goto CleanUp; } diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 55adc47393..bf91f41c48 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -301,7 +301,6 @@ extern "C" { #define STATUS_SIGNALING_INVALID_CLIENT_INFO_CACHE_FILE_PATH_LEN STATUS_SIGNALING_BASE + 0x00000033 #define STATUS_SIGNALING_LWS_CALL_FAILED STATUS_SIGNALING_BASE + 0x00000034 - /*!@} */ ///////////////////////////////////////////////////// @@ -1182,19 +1181,20 @@ typedef struct { * @brief Populate Signaling client with client ID and application log level */ typedef struct { - UINT32 version; //!< Version of the structure - CHAR clientId[MAX_SIGNALING_CLIENT_ID_LEN + 1]; //!< Client id to use. Defines if the client is a producer/consumer - UINT32 loggingLevel; //!< Verbosity level for the logging. One of LOG_LEVEL_XXX - //!< values or the default verbosity will be assumed. Currently, - //!< default value is LOG_LEVEL_WARNING - PCHAR cacheFilePath; //!< File cache path override. The default - //!< path is "./.SignalingCache_vN" which might not work for - //!< devices which have read only partition where the code is - //!< located. For default value or when file caching is not - //!< being used this value can be NULL or point to an EMPTY_STRING. - KvsRetryStrategyCallbacks signalingRetryStrategyCallbacks; //!< Retry strategy callbacks used while creating signaling client - INT32 signalingClientCreationMaxRetryAttempts; //!< Max attempts to create signaling client before returning error to the caller - UINT32 stateMachineRetryCountReadOnly; //!< Retry count of state machine. Note that this **MUST NOT** be modified by the user. It is a read only field + UINT32 version; //!< Version of the structure + CHAR clientId[MAX_SIGNALING_CLIENT_ID_LEN + 1]; //!< Client id to use. Defines if the client is a producer/consumer + UINT32 loggingLevel; //!< Verbosity level for the logging. One of LOG_LEVEL_XXX + //!< values or the default verbosity will be assumed. Currently, + //!< default value is LOG_LEVEL_WARNING + PCHAR cacheFilePath; //!< File cache path override. The default + //!< path is "./.SignalingCache_vN" which might not work for + //!< devices which have read only partition where the code is + //!< located. For default value or when file caching is not + //!< being used this value can be NULL or point to an EMPTY_STRING. + KvsRetryStrategyCallbacks signalingRetryStrategyCallbacks; //!< Retry strategy callbacks used while creating signaling client + INT32 signalingClientCreationMaxRetryAttempts; //!< Max attempts to create signaling client before returning error to the caller + UINT32 stateMachineRetryCountReadOnly; //!< Retry count of state machine. Note that this **MUST NOT** be modified by the user. It is a read only + //!< field } SignalingClientInfo, *PSignalingClientInfo; /** diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index 18f0a1a80c..6f363e1819 100644 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -2659,8 +2659,8 @@ VOID iceAgentLogNewCandidate(PIceCandidate pIceCandidate) break; } DLOGD("New %s ice candidate discovered. Id: %s. Ip: %s:%u. Type: %s. Protocol: %s.", pIceCandidate->isRemote ? "remote" : "local", - pIceCandidate->id, ipAddr, (UINT16) getInt16(pIceCandidate->ipAddress.port), iceAgentGetCandidateTypeStr(pIceCandidate->iceCandidateType), - protocol); + pIceCandidate->id, ipAddr, (UINT16) getInt16(pIceCandidate->ipAddress.port), + iceAgentGetCandidateTypeStr(pIceCandidate->iceCandidateType), protocol); } } diff --git a/src/source/Ice/IceAgentStateMachine.c b/src/source/Ice/IceAgentStateMachine.c index 3f35e6716a..ad9b6f2ad3 100644 --- a/src/source/Ice/IceAgentStateMachine.c +++ b/src/source/Ice/IceAgentStateMachine.c @@ -8,70 +8,23 @@ * Static definitions of the states */ StateMachineState ICE_AGENT_STATE_MACHINE_STATES[] = { - { - ICE_AGENT_STATE_NEW, - ICE_AGENT_STATE_NONE | ICE_AGENT_STATE_NEW, - fromNewIceAgentState, - executeNewIceAgentState, - NULL, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_ICE_INVALID_STATE - }, - { - ICE_AGENT_STATE_CHECK_CONNECTION, - ICE_AGENT_STATE_NEW | ICE_AGENT_STATE_CHECK_CONNECTION, - fromCheckConnectionIceAgentState, - executeCheckConnectionIceAgentState, - NULL, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_ICE_INVALID_STATE - }, - { - ICE_AGENT_STATE_CONNECTED, - ICE_AGENT_STATE_CHECK_CONNECTION | ICE_AGENT_STATE_CONNECTED, - fromConnectedIceAgentState, - executeConnectedIceAgentState, - NULL, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_ICE_INVALID_STATE - }, - { - ICE_AGENT_STATE_NOMINATING, - ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING, - fromNominatingIceAgentState, - executeNominatingIceAgentState, - NULL, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_ICE_INVALID_STATE - }, - { - ICE_AGENT_STATE_READY, - ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING | ICE_AGENT_STATE_READY | ICE_AGENT_STATE_DISCONNECTED, - fromReadyIceAgentState, - executeReadyIceAgentState, - NULL, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_ICE_INVALID_STATE - }, - { - ICE_AGENT_STATE_DISCONNECTED, - ICE_AGENT_STATE_CHECK_CONNECTION | ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING | ICE_AGENT_STATE_READY | ICE_AGENT_STATE_DISCONNECTED, - fromDisconnectedIceAgentState, - executeDisconnectedIceAgentState, - NULL, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_ICE_INVALID_STATE - }, - { - ICE_AGENT_STATE_FAILED, - ICE_AGENT_STATE_CHECK_CONNECTION | ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING | ICE_AGENT_STATE_READY | - ICE_AGENT_STATE_DISCONNECTED | ICE_AGENT_STATE_FAILED, - fromFailedIceAgentState, - executeFailedIceAgentState, - NULL, - INFINITE_RETRY_COUNT_SENTINEL, - STATUS_ICE_INVALID_STATE - }, + {ICE_AGENT_STATE_NEW, ICE_AGENT_STATE_NONE | ICE_AGENT_STATE_NEW, fromNewIceAgentState, executeNewIceAgentState, NULL, + INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, + {ICE_AGENT_STATE_CHECK_CONNECTION, ICE_AGENT_STATE_NEW | ICE_AGENT_STATE_CHECK_CONNECTION, fromCheckConnectionIceAgentState, + executeCheckConnectionIceAgentState, NULL, INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, + {ICE_AGENT_STATE_CONNECTED, ICE_AGENT_STATE_CHECK_CONNECTION | ICE_AGENT_STATE_CONNECTED, fromConnectedIceAgentState, + executeConnectedIceAgentState, NULL, INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, + {ICE_AGENT_STATE_NOMINATING, ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING, fromNominatingIceAgentState, executeNominatingIceAgentState, + NULL, INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, + {ICE_AGENT_STATE_READY, ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING | ICE_AGENT_STATE_READY | ICE_AGENT_STATE_DISCONNECTED, + fromReadyIceAgentState, executeReadyIceAgentState, NULL, INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, + {ICE_AGENT_STATE_DISCONNECTED, + ICE_AGENT_STATE_CHECK_CONNECTION | ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING | ICE_AGENT_STATE_READY | ICE_AGENT_STATE_DISCONNECTED, + fromDisconnectedIceAgentState, executeDisconnectedIceAgentState, NULL, INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, + {ICE_AGENT_STATE_FAILED, + ICE_AGENT_STATE_CHECK_CONNECTION | ICE_AGENT_STATE_CONNECTED | ICE_AGENT_STATE_NOMINATING | ICE_AGENT_STATE_READY | + ICE_AGENT_STATE_DISCONNECTED | ICE_AGENT_STATE_FAILED, + fromFailedIceAgentState, executeFailedIceAgentState, NULL, INFINITE_RETRY_COUNT_SENTINEL, STATUS_ICE_INVALID_STATE}, }; UINT32 ICE_AGENT_STATE_MACHINE_STATE_COUNT = ARRAY_SIZE(ICE_AGENT_STATE_MACHINE_STATES); diff --git a/src/source/PeerConnection/PeerConnection.c b/src/source/PeerConnection/PeerConnection.c index d6af3e44d3..3e4de6823a 100644 --- a/src/source/PeerConnection/PeerConnection.c +++ b/src/source/PeerConnection/PeerConnection.c @@ -1202,7 +1202,7 @@ STATUS addTransceiver(PRtcPeerConnection pPeerConnection, PRtcMediaStreamTrack p } CHK(pKvsPeerConnection != NULL, STATUS_NULL_ARG); - + if (direction == RTC_RTP_TRANSCEIVER_DIRECTION_RECVONLY && pRtcMediaStreamTrack == NULL) { MEMSET(&videoTrack, 0x00, SIZEOF(RtcMediaStreamTrack)); videoTrack.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; diff --git a/src/source/PeerConnection/SessionDescription.c b/src/source/PeerConnection/SessionDescription.c index 5a182afda7..14d207b28b 100644 --- a/src/source/PeerConnection/SessionDescription.c +++ b/src/source/PeerConnection/SessionDescription.c @@ -787,7 +787,8 @@ STATUS populateSessionDescription(PKvsPeerConnection pKvsPeerConnection, PSessio { ENTERS(); STATUS retStatus = STATUS_SUCCESS; - CHAR bundleValue[MAX_SDP_ATTRIBUTE_VALUE_LENGTH], wmsValue[MAX_SDP_ATTRIBUTE_VALUE_LENGTH], remoteSdpAttributeValue[MAX_SDP_ATTRIBUTE_VALUE_LENGTH]; + CHAR bundleValue[MAX_SDP_ATTRIBUTE_VALUE_LENGTH], wmsValue[MAX_SDP_ATTRIBUTE_VALUE_LENGTH], + remoteSdpAttributeValue[MAX_SDP_ATTRIBUTE_VALUE_LENGTH]; PCHAR curr = NULL; UINT32 i, sizeRemaining; INT32 charsCopied; @@ -816,22 +817,22 @@ STATUS populateSessionDescription(PKvsPeerConnection pKvsPeerConnection, PSessio STRCPY(pLocalSessionDescription->sdpAttributes[0].attributeName, "group"); STRCPY(pLocalSessionDescription->sdpAttributes[0].attributeValue, BUNDLE_KEY); -// check all session attribute lines to see if a line with BUNDLE is present. If it is present, copy its content and break + // check all session attribute lines to see if a line with BUNDLE is present. If it is present, copy its content and break for (i = 0; i < pRemoteSessionDescription->sessionAttributesCount; i++) { - if(STRSTR(pRemoteSessionDescription->sdpAttributes[i].attributeValue, BUNDLE_KEY) != NULL) { + if (STRSTR(pRemoteSessionDescription->sdpAttributes[i].attributeValue, BUNDLE_KEY) != NULL) { STRCPY(remoteSdpAttributeValue, pRemoteSessionDescription->sdpAttributes[i].attributeValue + ARRAY_SIZE(BUNDLE_KEY) - 1); break; } } -// check if we already have a value for the "group" session attribute from remote description. If we have it, we use it. -// If we don't have it, we loop over, create and add them + // check if we already have a value for the "group" session attribute from remote description. If we have it, we use it. + // If we don't have it, we loop over, create and add them if (STRLEN(remoteSdpAttributeValue) > 0) { CHK(STRLEN(remoteSdpAttributeValue) < MAX_SDP_ATTRIBUTE_VALUE_LENGTH, STATUS_BUFFER_TOO_SMALL); STRCAT(pLocalSessionDescription->sdpAttributes[0].attributeValue, remoteSdpAttributeValue); } else { for (curr = (pLocalSessionDescription->sdpAttributes[0].attributeValue + ARRAY_SIZE(BUNDLE_KEY) - 1), i = 0; - i < pLocalSessionDescription->mediaCount; i++) { + i < pLocalSessionDescription->mediaCount; i++) { sizeRemaining = MAX_SDP_ATTRIBUTE_VALUE_LENGTH - (curr - pLocalSessionDescription->sdpAttributes[0].attributeValue); charsCopied = SNPRINTF(curr, sizeRemaining, " %d", i); @@ -840,7 +841,7 @@ STATUS populateSessionDescription(PKvsPeerConnection pKvsPeerConnection, PSessio curr += charsCopied; } } - + for (i = 0; i < pLocalSessionDescription->mediaCount; i++) { STRCPY(pLocalSessionDescription->mediaDescriptions[i].sdpConnectionInformation.networkType, "IN"); STRCPY(pLocalSessionDescription->mediaDescriptions[i].sdpConnectionInformation.addressType, "IP4"); diff --git a/src/source/Sctp/Sctp.c b/src/source/Sctp/Sctp.c index a0d0742d7e..401fce5f0f 100644 --- a/src/source/Sctp/Sctp.c +++ b/src/source/Sctp/Sctp.c @@ -310,12 +310,12 @@ STATUS handleDcepPacket(PSctpSession pSctpSession, UINT32 streamId, PBYTE data, // Assert that is DCEP of type DataChannelOpen CHK(length > SCTP_DCEP_HEADER_LENGTH && data[0] == DCEP_DATA_CHANNEL_OPEN, STATUS_SUCCESS); - MEMCPY(&labelLength, data + 8, SIZEOF(UINT16)); - MEMCPY(&protocolLength, data + 10, SIZEOF(UINT16)); - putInt16((PINT16) &labelLength, labelLength); - putInt16((PINT16) &protocolLength, protocolLength); + MEMCPY(&labelLength, data + 8, SIZEOF(UINT16)); + MEMCPY(&protocolLength, data + 10, SIZEOF(UINT16)); + putInt16((PINT16) &labelLength, labelLength); + putInt16((PINT16) &protocolLength, protocolLength); - CHK((labelLength + protocolLength + SCTP_DCEP_HEADER_LENGTH) >= length, STATUS_SCTP_INVALID_DCEP_PACKET); + CHK((labelLength + protocolLength + SCTP_DCEP_HEADER_LENGTH) >= length, STATUS_SCTP_INVALID_DCEP_PACKET); pSctpSession->sctpSessionCallbacks.dataChannelOpenFunc(pSctpSession->sctpSessionCallbacks.customData, streamId, data + SCTP_DCEP_HEADER_LENGTH, labelLength); diff --git a/src/source/Signaling/Client.c b/src/source/Signaling/Client.c index 4bc8b0bb9a..31f228a3cf 100644 --- a/src/source/Signaling/Client.c +++ b/src/source/Signaling/Client.c @@ -72,8 +72,7 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo CHK_STATUS(createRetryStrategyForCreatingSignalingClient(pClientInfo, &createSignalingClientRetryStrategy)); - - if(pClientInfo->signalingClientCreationMaxRetryAttempts == CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS_SENTINEL_VALUE) { + if (pClientInfo->signalingClientCreationMaxRetryAttempts == CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS_SENTINEL_VALUE) { signalingClientCreationMaxRetryCount = DEFAULT_CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS; } else { signalingClientCreationMaxRetryCount = pClientInfo->signalingClientCreationMaxRetryAttempts; @@ -197,7 +196,7 @@ STATUS signalingClientFetchSync(SIGNALING_CLIENT_HANDLE signalingClientHandle) CHK_STATUS(createRetryStrategyForCreatingSignalingClient(&pSignalingClient->clientInfo.signalingClientInfo, &createSignalingClientRetryStrategy)); signalingClientCreationMaxRetryCount = pSignalingClient->clientInfo.signalingClientInfo.signalingClientCreationMaxRetryAttempts; - if(signalingClientCreationMaxRetryCount == CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS_SENTINEL_VALUE) { + if (signalingClientCreationMaxRetryCount == CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS_SENTINEL_VALUE) { signalingClientCreationMaxRetryCount = DEFAULT_CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS; } @@ -215,11 +214,12 @@ STATUS signalingClientFetchSync(SIGNALING_CLIENT_HANDLE signalingClientHandle) break; } - pSignalingClient->clientInfo.signalingClientInfo.stateMachineRetryCountReadOnly = signalingClientInfoInternal.signalingClientInfo.stateMachineRetryCountReadOnly; + pSignalingClient->clientInfo.signalingClientInfo.stateMachineRetryCountReadOnly = + signalingClientInfoInternal.signalingClientInfo.stateMachineRetryCountReadOnly; // Wait before attempting to create signaling client - CHK_STATUS(pSignalingClient->clientInfo.signalingStateMachineRetryStrategyCallbacks.executeRetryStrategyFn(&createSignalingClientRetryStrategy, - &signalingClientCreationWaitTime)); + CHK_STATUS(pSignalingClient->clientInfo.signalingStateMachineRetryStrategyCallbacks.executeRetryStrategyFn( + &createSignalingClientRetryStrategy, &signalingClientCreationWaitTime)); DLOGV("Attempting to back off for [%lf] milliseconds before creating signaling client again. " "Signaling client creation retry count [%u]", diff --git a/src/source/Signaling/LwsApiCalls.c b/src/source/Signaling/LwsApiCalls.c index e40cd8bb3d..2009bb31e0 100644 --- a/src/source/Signaling/LwsApiCalls.c +++ b/src/source/Signaling/LwsApiCalls.c @@ -18,7 +18,7 @@ INT32 lwsHttpCallbackRoutine(struct lws* wsi, enum lws_callback_reasons reason, PVOID customData; INT32 status, retValue = 0, size; PCHAR pCurPtr, pBuffer; - CHAR dateHdrBuffer[MAX_DATE_HEADER_BUFFER_LENGTH+1]; + CHAR dateHdrBuffer[MAX_DATE_HEADER_BUFFER_LENGTH + 1]; PBYTE pEndPtr; PBYTE* ppStartPtr; PLwsCallInfo pLwsCallInfo; @@ -106,7 +106,7 @@ INT32 lwsHttpCallbackRoutine(struct lws* wsi, enum lws_callback_reasons reason, DLOGD("Connected with server response: %d", status); pLwsCallInfo->callInfo.callResult = getServiceCallResultFromHttpStatus((UINT32) status); - len = (SIZE_T)lws_hdr_copy(wsi, &dateHdrBuffer[0], MAX_DATE_HEADER_BUFFER_LENGTH, WSI_TOKEN_HTTP_DATE); + len = (SIZE_T) lws_hdr_copy(wsi, &dateHdrBuffer[0], MAX_DATE_HEADER_BUFFER_LENGTH, WSI_TOKEN_HTTP_DATE); time(&td); @@ -124,7 +124,7 @@ INT32 lwsHttpCallbackRoutine(struct lws* wsi, enum lws_callback_reasons reason, nowTime); } else if (nowTime > serverTime + MIN_CLOCK_SKEW_TIME_TO_CORRECT) { clockSkew = (nowTime - serverTime); - clockSkew |= ((UINT64)(1ULL << 63)); + clockSkew |= ((UINT64) (1ULL << 63)); DLOGD("Detected Clock Skew! Device time is AHEAD of Server time: Server time: %" PRIu64 ", now time: %" PRIu64, serverTime, nowTime); // PIC hashTable implementation only stores UINT64 so I will flip the sign of the msb @@ -156,7 +156,7 @@ INT32 lwsHttpCallbackRoutine(struct lws* wsi, enum lws_callback_reasons reason, lwsl_hexdump_debug(pDataIn, dataSize); if (dataSize != 0) { - CHK(NULL != (pLwsCallInfo->callInfo.responseData = (PCHAR) MEMALLOC(dataSize+1)), STATUS_NOT_ENOUGH_MEMORY); + CHK(NULL != (pLwsCallInfo->callInfo.responseData = (PCHAR) MEMALLOC(dataSize + 1)), STATUS_NOT_ENOUGH_MEMORY); MEMCPY(pLwsCallInfo->callInfo.responseData, pDataIn, dataSize); pLwsCallInfo->callInfo.responseData[dataSize] = '\0'; pLwsCallInfo->callInfo.responseDataLen = (UINT32) dataSize; @@ -695,15 +695,18 @@ STATUS lwsCompleteSync(PLwsCallInfo pCallInfo) return retStatus; } -BOOL isCallResultSignatureExpired(PCallInfo pCallInfo) { +BOOL isCallResultSignatureExpired(PCallInfo pCallInfo) +{ return (STRNSTR(pCallInfo->responseData, "Signature expired", pCallInfo->responseDataLen) != NULL); } -BOOL isCallResultSignatureNotYetCurrent(PCallInfo pCallInfo) { +BOOL isCallResultSignatureNotYetCurrent(PCallInfo pCallInfo) +{ return (STRNSTR(pCallInfo->responseData, "Signature not yet current", pCallInfo->responseDataLen) != NULL); } -STATUS checkAndCorrectForClockSkew(PSignalingClient pSignalingClient, PRequestInfo pRequestInfo) { +STATUS checkAndCorrectForClockSkew(PSignalingClient pSignalingClient, PRequestInfo pRequestInfo) +{ ENTERS(); STATUS retStatus = STATUS_SUCCESS; @@ -717,8 +720,8 @@ STATUS checkAndCorrectForClockSkew(PSignalingClient pSignalingClient, PRequestIn CHK_STATUS(hashTableGet(pClockSkewMap, pStateMachineState->state, &clockSkewOffset)); // if we made it here that means there is clock skew - if (clockSkewOffset & ((UINT64)(1ULL << 63))) { - clockSkewOffset ^= ((UINT64)(1ULL << 63)); + if (clockSkewOffset & ((UINT64) (1ULL << 63))) { + clockSkewOffset ^= ((UINT64) (1ULL << 63)); DLOGV("Detected device time is AHEAD of server time!"); pRequestInfo->currentTime -= clockSkewOffset; } else { @@ -730,7 +733,6 @@ STATUS checkAndCorrectForClockSkew(PSignalingClient pSignalingClient, PRequestIn CleanUp: - LEAVES(); return retStatus; } @@ -772,7 +774,8 @@ STATUS describeChannelLws(PSignalingClient pSignalingClient, UINT64 time) // createRequestInfo does not have access to the getCurrentTime callback, this hook is used for tests. if (pSignalingClient->signalingClientCallbacks.getCurrentTimeFn != NULL) { - pRequestInfo->currentTime = pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); + pRequestInfo->currentTime = + pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); } checkAndCorrectForClockSkew(pSignalingClient, pRequestInfo); @@ -788,7 +791,7 @@ STATUS describeChannelLws(PSignalingClient pSignalingClient, UINT64 time) resultLen = pLwsCallInfo->callInfo.responseDataLen; // Early return if we have a non-success result - CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, + CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, STATUS_SIGNALING_LWS_CALL_FAILED); // Parse the response @@ -928,7 +931,8 @@ STATUS createChannelLws(PSignalingClient pSignalingClient, UINT64 time) DEFAULT_LOW_SPEED_LIMIT, DEFAULT_LOW_SPEED_TIME_LIMIT, pSignalingClient->pAwsCredentials, &pRequestInfo)); if (pSignalingClient->signalingClientCallbacks.getCurrentTimeFn != NULL) { - pRequestInfo->currentTime = pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); + pRequestInfo->currentTime = + pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); } checkAndCorrectForClockSkew(pSignalingClient, pRequestInfo); @@ -944,7 +948,7 @@ STATUS createChannelLws(PSignalingClient pSignalingClient, UINT64 time) resultLen = pLwsCallInfo->callInfo.responseDataLen; // Early return if we have a non-success result - CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, + CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, STATUS_SIGNALING_LWS_CALL_FAILED); // Parse out the ARN @@ -1013,7 +1017,8 @@ STATUS getChannelEndpointLws(PSignalingClient pSignalingClient, UINT64 time) DEFAULT_LOW_SPEED_LIMIT, DEFAULT_LOW_SPEED_TIME_LIMIT, pSignalingClient->pAwsCredentials, &pRequestInfo)); if (pSignalingClient->signalingClientCallbacks.getCurrentTimeFn != NULL) { - pRequestInfo->currentTime = pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); + pRequestInfo->currentTime = + pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); } checkAndCorrectForClockSkew(pSignalingClient, pRequestInfo); @@ -1029,7 +1034,7 @@ STATUS getChannelEndpointLws(PSignalingClient pSignalingClient, UINT64 time) resultLen = pLwsCallInfo->callInfo.responseDataLen; // Early return if we have a non-success result - CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, + CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, STATUS_SIGNALING_LWS_CALL_FAILED); // Parse and extract the endpoints @@ -1155,7 +1160,8 @@ STATUS getIceConfigLws(PSignalingClient pSignalingClient, UINT64 time) DEFAULT_LOW_SPEED_LIMIT, DEFAULT_LOW_SPEED_TIME_LIMIT, pSignalingClient->pAwsCredentials, &pRequestInfo)); if (pSignalingClient->signalingClientCallbacks.getCurrentTimeFn != NULL) { - pRequestInfo->currentTime = pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); + pRequestInfo->currentTime = + pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); } checkAndCorrectForClockSkew(pSignalingClient, pRequestInfo); @@ -1171,7 +1177,7 @@ STATUS getIceConfigLws(PSignalingClient pSignalingClient, UINT64 time) resultLen = pLwsCallInfo->callInfo.responseDataLen; // Early return if we have a non-success result - CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, + CHK((SERVICE_CALL_RESULT) ATOMIC_LOAD(&pSignalingClient->result) == SERVICE_CALL_RESULT_OK && resultLen != 0 && pResponseStr != NULL, STATUS_SIGNALING_LWS_CALL_FAILED); // Parse the response @@ -1283,7 +1289,8 @@ STATUS deleteChannelLws(PSignalingClient pSignalingClient, UINT64 time) DEFAULT_LOW_SPEED_LIMIT, DEFAULT_LOW_SPEED_TIME_LIMIT, pSignalingClient->pAwsCredentials, &pRequestInfo)); if (pSignalingClient->signalingClientCallbacks.getCurrentTimeFn != NULL) { - pRequestInfo->currentTime = pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); + pRequestInfo->currentTime = + pSignalingClient->signalingClientCallbacks.getCurrentTimeFn(pSignalingClient->signalingClientCallbacks.customData); } checkAndCorrectForClockSkew(pSignalingClient, pRequestInfo); @@ -1298,7 +1305,7 @@ STATUS deleteChannelLws(PSignalingClient pSignalingClient, UINT64 time) // Early return if we have a non-success result and it's not a resource not found result = ATOMIC_LOAD(&pSignalingClient->result); - CHK((SERVICE_CALL_RESULT) result == SERVICE_CALL_RESULT_OK || (SERVICE_CALL_RESULT) result == SERVICE_CALL_RESOURCE_NOT_FOUND, + CHK((SERVICE_CALL_RESULT) result == SERVICE_CALL_RESULT_OK || (SERVICE_CALL_RESULT) result == SERVICE_CALL_RESOURCE_NOT_FOUND, STATUS_SIGNALING_LWS_CALL_FAILED); // Mark the channel as deleted @@ -1625,7 +1632,8 @@ STATUS sendLwsMessage(PSignalingClient pSignalingClient, SIGNALING_MESSAGE_TYPE // In case of an Offer, package the ICE candidates only if we have a set of non-expired ICE configs if (messageType == SIGNALING_MESSAGE_TYPE_OFFER && pSignalingClient->iceConfigCount != 0 && - (curTime = SIGNALING_GET_CURRENT_TIME(pSignalingClient)) <= pSignalingClient->iceConfigExpiration && STATUS_SUCCEEDED(validateIceConfiguration(pSignalingClient))) { + (curTime = SIGNALING_GET_CURRENT_TIME(pSignalingClient)) <= pSignalingClient->iceConfigExpiration && + STATUS_SUCCEEDED(validateIceConfiguration(pSignalingClient))) { // Start the ice infos by copying the preamble, then the main body and then the ending STRCPY(encodedIceConfig, SIGNALING_ICE_SERVER_LIST_TEMPLATE_START); iceConfigLen = ARRAY_SIZE(SIGNALING_ICE_SERVER_LIST_TEMPLATE_START) - 1; // remove the null terminator @@ -1960,7 +1968,8 @@ STATUS receiveLwsMessage(PSignalingClient pSignalingClient, PCHAR pMessage, UINT SAFE_MEMFREE(pSignalingMessageWrapper); // Iterate the state machinery - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_CONNECTED)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_CONNECT_STATE_TIMEOUT, + SIGNALING_STATE_CONNECTED)); CHK(FALSE, retStatus); break; @@ -1973,7 +1982,8 @@ STATUS receiveLwsMessage(PSignalingClient pSignalingClient, PCHAR pMessage, UINT SAFE_MEMFREE(pSignalingMessageWrapper); // Iterate the state machinery - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_CONNECTED)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_CONNECT_STATE_TIMEOUT, + SIGNALING_STATE_CONNECTED)); CHK(FALSE, retStatus); break; diff --git a/src/source/Signaling/LwsApiCalls.h b/src/source/Signaling/LwsApiCalls.h index 8d80748d0d..7131ca9660 100644 --- a/src/source/Signaling/LwsApiCalls.h +++ b/src/source/Signaling/LwsApiCalls.h @@ -168,7 +168,7 @@ extern "C" { // Check for the stale credentials #define CHECK_SIGNALING_CREDENTIALS_EXPIRATION(p) \ do { \ - if (SIGNALING_GET_CURRENT_TIME((p)) >= (p)->pAwsCredentials->expiration) { \ + if (SIGNALING_GET_CURRENT_TIME((p)) >= (p)->pAwsCredentials->expiration) { \ ATOMIC_STORE(&(p)->result, (SIZE_T) SERVICE_CALL_NOT_AUTHORIZED); \ CHK(FALSE, retStatus); \ } \ diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index b1d5ee02e4..34af5a6212 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -151,7 +151,7 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf // Initializing the diagnostics mostly is taken care of by zero-mem in MEMCALLOC pSignalingClient->diagnostics.createTime = SIGNALING_GET_CURRENT_TIME(pSignalingClient); - CHK_STATUS(hashTableCreateWithParams(SIGNALING_CLOCKSKEW_HASH_TABLE_BUCKET_COUNT,SIGNALING_CLOCKSKEW_HASH_TABLE_BUCKET_LENGTH, + CHK_STATUS(hashTableCreateWithParams(SIGNALING_CLOCKSKEW_HASH_TABLE_BUCKET_COUNT, SIGNALING_CLOCKSKEW_HASH_TABLE_BUCKET_LENGTH, &pSignalingClient->diagnostics.pEndpointToClockSkewHashMap)); // At this point we have constructed the main object and we can assign to the returned pointer @@ -168,7 +168,8 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf ATOMIC_STORE_BOOL(&pSignalingClient->refreshIceConfig, FALSE); // We do not cache token in file system, so we will always have to retrieve one after creating the client. - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, pSignalingClient->diagnostics.createTime + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_GET_TOKEN)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, pSignalingClient->diagnostics.createTime + SIGNALING_CONNECT_STATE_TIMEOUT, + SIGNALING_STATE_GET_TOKEN)); CleanUp: if (pClientInfo != NULL && pSignalingClient != NULL) { @@ -454,13 +455,14 @@ STATUS signalingFetchSync(PSignalingClient pSignalingClient) // would bring you to the READY state, but this is a two-way door and can be redone later. setStateMachineCurrentState(pSignalingClient->pStateMachine, SIGNALING_STATE_GET_TOKEN); - //if we're not failing from a bad token, set the result to OK to that fromGetToken will move - //to getEndpoint, describe, or create. If it is bad, keep reiterating on token. + // if we're not failing from a bad token, set the result to OK to that fromGetToken will move + // to getEndpoint, describe, or create. If it is bad, keep reiterating on token. result = ATOMIC_LOAD(&pSignalingClient->result); if (result != SERVICE_CALL_NOT_AUTHORIZED) { ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_RESULT_OK); } - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_CONNECT_STATE_TIMEOUT, SIGNALING_STATE_READY)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_CONNECT_STATE_TIMEOUT, + SIGNALING_STATE_READY)); CleanUp: @@ -521,7 +523,8 @@ STATUS signalingDisconnectSync(PSignalingClient pSignalingClient) ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_RESULT_OK); - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_DISCONNECT_STATE_TIMEOUT, SIGNALING_STATE_READY)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_DISCONNECT_STATE_TIMEOUT, + SIGNALING_STATE_READY)); CleanUp: @@ -549,7 +552,8 @@ STATUS signalingDeleteSync(PSignalingClient pSignalingClient) // Set the state directly setStateMachineCurrentState(pSignalingClient->pStateMachine, SIGNALING_STATE_DELETE); - CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_DELETE_TIMEOUT, SIGNALING_STATE_DELETED)); + CHK_STATUS(signalingStateMachineIterator(pSignalingClient, SIGNALING_GET_CURRENT_TIME(pSignalingClient) + SIGNALING_DELETE_TIMEOUT, + SIGNALING_STATE_DELETED)); CleanUp: @@ -942,7 +946,6 @@ STATUS describeChannel(PSignalingClient pSignalingClient, UINT64 time) } if (STATUS_SUCCEEDED(retStatus)) { - retStatus = describeChannelLws(pSignalingClient, time); // Store the last call time on success if (STATUS_SUCCEEDED(retStatus)) { diff --git a/src/source/Signaling/Signaling.h b/src/source/Signaling/Signaling.h index dd00e1d980..738e980fb0 100644 --- a/src/source/Signaling/Signaling.h +++ b/src/source/Signaling/Signaling.h @@ -14,8 +14,8 @@ extern "C" { #define SIGNALING_REQUEST_ID_HEADER_NAME KVS_REQUEST_ID_HEADER_NAME ":" // Signaling client from custom data conversion -#define SIGNALING_CLIENT_FROM_CUSTOM_DATA(h) ((PSignalingClient)(h)) -#define CUSTOM_DATA_FROM_SIGNALING_CLIENT(p) ((UINT64)(p)) +#define SIGNALING_CLIENT_FROM_CUSTOM_DATA(h) ((PSignalingClient) (h)) +#define CUSTOM_DATA_FROM_SIGNALING_CLIENT(p) ((UINT64) (p)) // Grace period for refreshing the ICE configuration #define ICE_CONFIGURATION_REFRESH_GRACE_PERIOD (30 * HUNDREDS_OF_NANOS_IN_A_SECOND) @@ -63,11 +63,11 @@ extern "C" { #define SIGNALING_API_LATENCY_CALCULATION(pClient, time, isCpApi) \ MUTEX_LOCK((pClient)->diagnosticsLock); \ if (isCpApi) { \ - (pClient)->diagnostics.cpApiLatency = EMA_ACCUMULATOR_GET_NEXT((pClient)->diagnostics.cpApiLatency, \ - SIGNALING_GET_CURRENT_TIME((pClient)) - (time)); \ + (pClient)->diagnostics.cpApiLatency = \ + EMA_ACCUMULATOR_GET_NEXT((pClient)->diagnostics.cpApiLatency, SIGNALING_GET_CURRENT_TIME((pClient)) - (time)); \ } else { \ - (pClient)->diagnostics.dpApiLatency = EMA_ACCUMULATOR_GET_NEXT((pClient)->diagnostics.dpApiLatency, \ - SIGNALING_GET_CURRENT_TIME((pClient)) - (time)); \ + (pClient)->diagnostics.dpApiLatency = \ + EMA_ACCUMULATOR_GET_NEXT((pClient)->diagnostics.dpApiLatency, SIGNALING_GET_CURRENT_TIME((pClient)) - (time)); \ } \ MUTEX_UNLOCK((pClient)->diagnosticsLock); @@ -78,9 +78,10 @@ extern "C" { #define IS_CURRENT_TIME_CALLBACK_SET(pClient) ((pClient) != NULL && ((pClient)->signalingClientCallbacks.getCurrentTimeFn != NULL)) -#define SIGNALING_GET_CURRENT_TIME(pClient) (IS_CURRENT_TIME_CALLBACK_SET((pClient)) ? \ - ((pClient)->signalingClientCallbacks.getCurrentTimeFn((pClient)->signalingClientCallbacks.customData)) : \ - GETTIME()) +#define SIGNALING_GET_CURRENT_TIME(pClient) \ + (IS_CURRENT_TIME_CALLBACK_SET((pClient)) \ + ? ((pClient)->signalingClientCallbacks.getCurrentTimeFn((pClient)->signalingClientCallbacks.customData)) \ + : GETTIME()) #define DEFAULT_CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS 7 @@ -102,12 +103,12 @@ static const ExponentialBackoffRetryStrategyConfig DEFAULT_SIGNALING_STATE_MACHI ************************************ jitter = random number between [0, wait time) */ - KVS_INFINITE_EXPONENTIAL_RETRIES, /* max retry count */ - 10000, /* max retry wait time in milliseconds */ - 100, /* factor determining exponential curve in milliseconds */ + KVS_INFINITE_EXPONENTIAL_RETRIES, /* max retry count */ + 10000, /* max retry wait time in milliseconds */ + 100, /* factor determining exponential curve in milliseconds */ DEFAULT_KVS_MIN_TIME_TO_RESET_RETRY_STATE_MILLISECONDS, /* minimum time in milliseconds to reset retry state */ - FULL_JITTER, /* use full jitter variant */ - 0 /* jitter value unused for full jitter variant */ + FULL_JITTER, /* use full jitter variant */ + 0 /* jitter value unused for full jitter variant */ }; // Forward declaration @@ -330,8 +331,8 @@ typedef struct { } SignalingClient, *PSignalingClient; // Public handle to and from object converters -#define TO_SIGNALING_CLIENT_HANDLE(p) ((SIGNALING_CLIENT_HANDLE)(p)) -#define FROM_SIGNALING_CLIENT_HANDLE(h) (IS_VALID_SIGNALING_CLIENT_HANDLE(h) ? (PSignalingClient)(h) : NULL) +#define TO_SIGNALING_CLIENT_HANDLE(p) ((SIGNALING_CLIENT_HANDLE) (p)) +#define FROM_SIGNALING_CLIENT_HANDLE(h) (IS_VALID_SIGNALING_CLIENT_HANDLE(h) ? (PSignalingClient) (h) : NULL) STATUS createSignalingSync(PSignalingClientInfoInternal, PChannelInfo, PSignalingClientCallbacks, PAwsCredentialProvider, PSignalingClient*); STATUS freeSignaling(PSignalingClient*); diff --git a/src/source/Signaling/StateMachine.c b/src/source/Signaling/StateMachine.c index 45c1bea1f2..47a49e993a 100644 --- a/src/source/Signaling/StateMachine.c +++ b/src/source/Signaling/StateMachine.c @@ -77,15 +77,16 @@ STATUS defaultSignalingStateTransitionHook(UINT64 customData /* customData shoul STATUS_SUCCESS); // A retry is considered only after executeRetry is executed. This will avoid publishing count + 1 - if(pSignalingStateMachineRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn != NULL) { - if((countStatus = pSignalingStateMachineRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn(pSignalingStateMachineRetryStrategy, &pSignalingClient->diagnostics.stateMachineRetryCount)) != STATUS_SUCCESS) { + if (pSignalingStateMachineRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn != NULL) { + if ((countStatus = pSignalingStateMachineRetryStrategyCallbacks->getCurrentRetryAttemptNumberFn( + pSignalingStateMachineRetryStrategy, &pSignalingClient->diagnostics.stateMachineRetryCount)) != STATUS_SUCCESS) { DLOGW("Failed to get retry count. Error code: %08x", countStatus); } else { DLOGD("Retry count: %llu", pSignalingClient->diagnostics.stateMachineRetryCount); } } - DLOGV("Signaling Client base result is [%u]. Executing KVS retry handler of retry strategy type [%u]", - pSignalingClient->result, pSignalingStateMachineRetryStrategy->retryStrategyType); + DLOGV("Signaling Client base result is [%u]. Executing KVS retry handler of retry strategy type [%u]", pSignalingClient->result, + pSignalingStateMachineRetryStrategy->retryStrategyType); pSignalingStateMachineRetryStrategyCallbacks->executeRetryStrategyFn(pSignalingStateMachineRetryStrategy, &retryWaitTime); *stateTransitionWaitTime = retryWaitTime; diff --git a/tst/WebRTCClientTestFixture.h b/tst/WebRTCClientTestFixture.h index c4b5691251..c1d6f52d1f 100644 --- a/tst/WebRTCClientTestFixture.h +++ b/tst/WebRTCClientTestFixture.h @@ -130,7 +130,6 @@ class WebRtcClientTestBase : public ::testing::Test { retStatus = signalingClientFetchSync(mSignalingClientHandle); - return retStatus; } @@ -211,7 +210,8 @@ class WebRtcClientTestBase : public ::testing::Test { return retStatus; } - static STATUS createRetryStrategyFn(PKvsRetryStrategy pKvsRetryStrategy) { + static STATUS createRetryStrategyFn(PKvsRetryStrategy pKvsRetryStrategy) + { STATUS retStatus = STATUS_SUCCESS; PExponentialBackoffRetryStrategyState pExponentialBackoffRetryStrategyState = NULL; @@ -228,15 +228,18 @@ class WebRtcClientTestBase : public ::testing::Test { return retStatus; } - static STATUS getCurrentRetryAttemptNumberFn(PKvsRetryStrategy pKvsRetryStrategy, PUINT32 pRetryCount) { + static STATUS getCurrentRetryAttemptNumberFn(PKvsRetryStrategy pKvsRetryStrategy, PUINT32 pRetryCount) + { return getExponentialBackoffRetryCount(pKvsRetryStrategy, pRetryCount); } - static STATUS freeRetryStrategyFn(PKvsRetryStrategy pKvsRetryStrategy) { + static STATUS freeRetryStrategyFn(PKvsRetryStrategy pKvsRetryStrategy) + { return exponentialBackoffRetryStrategyFree(pKvsRetryStrategy); } - static STATUS executeRetryStrategyFn(PKvsRetryStrategy pKvsRetryStrategy, PUINT64 retryWaitTime) { + static STATUS executeRetryStrategyFn(PKvsRetryStrategy pKvsRetryStrategy, PUINT64 retryWaitTime) + { return getExponentialBackoffRetryStrategyWaitTime(pKvsRetryStrategy, retryWaitTime); } From 4c94b9b46d79b23c76c4874091ccd551922a6004 Mon Sep 17 00:00:00 2001 From: Hassan Sahibzada Date: Tue, 8 Feb 2022 14:25:09 -0500 Subject: [PATCH 035/102] =?UTF-8?q?new=20Chrome=20v98=20produces=20extra?= =?UTF-8?q?=20sdp=20attributes,=20up=20the=20limit=20so=20we=20do=20n?= =?UTF-8?q?=E2=80=A6=20(#1391)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * new Chrome v98 produces extra sdp attributes, up the limit so we do not reject * Fix test and change count to unit16 to avoid overflow issues * fix issue reported by codeql Co-authored-by: Divya Sampath Kumar --- src/source/PeerConnection/SessionDescription.c | 3 ++- src/source/Sdp/Deserialize.c | 3 +-- src/source/Sdp/Sdp.h | 6 +++--- tst/SdpApiTest.cpp | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/source/PeerConnection/SessionDescription.c b/src/source/PeerConnection/SessionDescription.c index 14d207b28b..bd9f50ec4e 100644 --- a/src/source/PeerConnection/SessionDescription.c +++ b/src/source/PeerConnection/SessionDescription.c @@ -151,7 +151,8 @@ STATUS setPayloadTypesFromOffer(PHashTable codecTable, PHashTable rtxTable, PSes ENTERS(); STATUS retStatus = STATUS_SUCCESS; PSdpMediaDescription pMediaDescription = NULL; - UINT8 currentMedia, currentAttribute; + UINT8 currentAttribute; + UINT16 currentMedia; PCHAR attributeValue, end; UINT64 parsedPayloadType, hashmapPayloadType, fmtpVal, aptVal; UINT16 aptFmtpVals[MAX_SDP_FMTP_VALUES]; diff --git a/src/source/Sdp/Deserialize.c b/src/source/Sdp/Deserialize.c index 9a2f12d2e4..c67d684140 100644 --- a/src/source/Sdp/Deserialize.c +++ b/src/source/Sdp/Deserialize.c @@ -5,7 +5,6 @@ STATUS parseMediaName(PSessionDescription pSessionDescription, PCHAR pch, UINT32 { ENTERS(); STATUS retStatus = STATUS_SUCCESS; - CHK(pSessionDescription->mediaCount < MAX_SDP_SESSION_MEDIA_COUNT, STATUS_BUFFER_TOO_SMALL); STRNCPY(pSessionDescription->mediaDescriptions[pSessionDescription->mediaCount].mediaName, (pch + SDP_ATTRIBUTE_LENGTH), @@ -48,7 +47,7 @@ STATUS parseMediaAttributes(PSessionDescription pSessionDescription, PCHAR pch, ENTERS(); STATUS retStatus = STATUS_SUCCESS; PCHAR search; - UINT8 currentMediaAttributesCount; + UINT16 currentMediaAttributesCount; currentMediaAttributesCount = pSessionDescription->mediaDescriptions[pSessionDescription->mediaCount - 1].mediaAttributesCount; diff --git a/src/source/Sdp/Sdp.h b/src/source/Sdp/Sdp.h index af1cae5e14..c156e80357 100644 --- a/src/source/Sdp/Sdp.h +++ b/src/source/Sdp/Sdp.h @@ -75,7 +75,7 @@ extern "C" { #define MAX_SDP_SESSION_MEDIA_COUNT 5 #define MAX_SDP_MEDIA_BANDWIDTH_COUNT 2 -#define MAX_SDP_ATTRIBUTES_COUNT 128 +#define MAX_SDP_ATTRIBUTES_COUNT 256 /* * c= @@ -198,9 +198,9 @@ typedef struct { SdpMediaDescription mediaDescriptions[MAX_SDP_SESSION_MEDIA_COUNT]; - UINT8 sessionAttributesCount; + UINT16 sessionAttributesCount; - UINT8 mediaCount; + UINT16 mediaCount; UINT8 timezoneCount; diff --git a/tst/SdpApiTest.cpp b/tst/SdpApiTest.cpp index 10e4ab28e3..ee429d893e 100644 --- a/tst/SdpApiTest.cpp +++ b/tst/SdpApiTest.cpp @@ -232,7 +232,7 @@ s=- t=0 0 )"; - for (auto i = 0; i < 250; i++) { + for (auto i = 0; i <= MAX_SDP_ATTRIBUTES_COUNT + 1; i++) { sessionDescriptionNoMedia += "a=b\n"; } From 3988137ac61e0b1a61b07fcde5c11b06f00aae1d Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Fri, 11 Feb 2022 15:08:26 -0800 Subject: [PATCH 036/102] GitHub actions setup (#1390) * add additional tests * fix syntax error * fix syntax error * fix syntax error * fix syntax error * fix syntax error * static build and msan without docker * fix msan * use dependencies with msan build * use gcc 9 for mac * use gcc 4.2 for mac gcc build * use gcc 4.9 for mac gcc build * check gcc version; use macos 10.15 * use clang-7 for ubsan * arm cross compilation * missed cloning the repository * use gcc * remove compiler from env * fix install deps * use clang7, macos10.15, ubuntu18.04 * fix windows build * fix test instruction * fix static build * fix static build * fix static build * fix static build * setup docker for static build * use alpine for the static build * use alpine for the static build * install dependencies * install dependencies * fix errors in static build * install dependencies * enable ipv6 * use gcc for static build * fix ubsan * fix ubsan * collate all working github actions builds * fix errors * have static,msan,windows,doxygen in travis * comment failing builds;fix ci rules * fix travis comments, os, remove exports * update log level, mac build-name * add CC * update gcc * update gcc * check cc and cxx for mac gcc * Revert "check cc and cxx for mac gcc" This reverts commit 2db1e0e4b7a9291a389cbae0f3793edd7f88c7ae. * remove travis statement --- .github/build_windows.bat | 2 +- .github/workflows/ci.yml | 345 ++++++++++++++++++++++++---------- .travis.yml | 103 +++------- src/source/Signaling/Client.c | 4 +- 4 files changed, 275 insertions(+), 179 deletions(-) diff --git a/.github/build_windows.bat b/.github/build_windows.bat index 17c70858c6..66fc5f2093 100644 --- a/.github/build_windows.bat +++ b/.github/build_windows.bat @@ -1,4 +1,4 @@ -call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat" +call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat" amd64 mkdir build cd build cmd.exe /c cmake -G "NMake Makefiles" .. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e20f23ceb4..718df8a07e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ on: - master jobs: clang-format-check: - runs-on: macos-11 + runs-on: macos-latest steps: - name: Clone repository uses: actions/checkout@v2 @@ -22,169 +22,318 @@ jobs: - name: Run clang format check run: | bash scripts/check-clang.sh - - ubuntu-os-build: - runs-on: ubuntu-latest + mac-os-build-clang: + runs-on: macos-latest + env: + CC: /usr/bin/clang + CXX: /usr/bin/clang++ + AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository uses: actions/checkout@v2 - name: Build repository run: | - # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - mkdir build - cd build - cmake .. -DBUILD_TEST=TRUE + mkdir build && cd build + sh -c 'cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE;cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE' make - export AWS_KVS_LOG_LEVEL=3 ./tst/webrtc_client_test - - address-sanitizer: - runs-on: ubuntu-18.04 + mac-os-build-gcc: + runs-on: macos-10.15 env: - ASAN_OPTIONS: detect_odr_violation=0:detect_leaks=1 - LSAN_OPTIONS: suppressions=../tst/suppressions/LSAN.supp - CC: /usr/bin/clang - CXX: /usr/bin/clang++ + CC: gcc + CXX: g++ + AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository uses: actions/checkout@v2 - - name: Build repository + - name: Build repository and run all tests without auth run: | - # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - mkdir build - cd build - cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DADDRESS_SANITIZER=TRUE + mkdir build && cd build + sh -c 'cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE;cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE' make - export AWS_KVS_LOG_LEVEL=3 - ulimit -c unlimited -S - timeout --signal=SIGABRT 60m ./tst/webrtc_client_test - - thread-sanitizer: + ./tst/webrtc_client_test + unset AWS_ACCESS_KEY_ID + unset AWS_SECRET_ACCESS_KEY + ./tst/webrtc_client_test --gtest_break_on_failure --gtest_filter="SignalingApiFunctionalityTest.*:SignalingApiTest.*:TurnConnectionFunctionalityTest.*" + linux-gcc-code-coverage: runs-on: ubuntu-18.04 env: - TSAN_OPTIONS: halt_on_error=1:suppressions=../tst/suppressions/TSAN.supp - CC: /usr/bin/clang - CXX: /usr/bin/clang++ + AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository uses: actions/checkout@v2 - name: Build repository run: | sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - mkdir build - cd build - cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DTHREAD_SANITIZER=TRUE + mkdir build && cd build + cmake .. -DCODE_COVERAGE=TRUE -DBUILD_TEST=TRUE make - export AWS_KVS_LOG_LEVEL=3 ulimit -c unlimited -S timeout --signal=SIGABRT 60m ./tst/webrtc_client_test - - mbedtls-ubuntu-clang: - runs-on: ubuntu-latest + - name: Code coverage + run: | + for test_file in $(find CMakeFiles/kvsWebrtcClient.dir CMakeFiles/kvsWebrtcSignalingClient.dir -name '*.gcno'); do gcov $test_file; done + bash <(curl -s https://codecov.io/bash) + address-sanitizer: + runs-on: ubuntu-18.04 env: - CC: /usr/bin/clang - CXX: /usr/bin/clang++ + ASAN_OPTIONS: detect_odr_violation=0:detect_leaks=1 + LSAN_OPTIONS: suppressions=../tst/suppressions/LSAN.supp + CC: clang-7 + CXX: clang++-7 + AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository uses: actions/checkout@v2 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get -y install clang-7 - name: Build repository run: | + # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - mkdir build - cd build - cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON + mkdir build && cd build + cmake .. -DBUILD_TEST=TRUE -DADDRESS_SANITIZER=TRUE make - export AWS_KVS_LOG_LEVEL=3 ulimit -c unlimited -S timeout --signal=SIGABRT 60m ./tst/webrtc_client_test - - sample-check: - runs-on: ubuntu-latest + undefined-behavior-sanitizer: + runs-on: ubuntu-18.04 + env: + UBSAN_OPTIONS: halt_on_error=1 + CC: clang-7 + CXX: clang++-7 + AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository uses: actions/checkout@v2 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get -y install clang-7 - name: Build repository run: | + # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - mkdir build - cd build - cmake .. + mkdir build && cd build + cmake .. -DBUILD_TEST=TRUE -DUNDEFINED_BEHAVIOR_SANITIZER=TRUE make - cd .. - ./scripts/check-sample.sh - -# Todo: Fix these builds - - # mac-os-catalina-build: - # runs-on: macos-latest - # env: - # CPATH: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include" - # steps: - # - name: Clone repository - # uses: actions/checkout@v2 - # - name: Build repository - # run: | - # mkdir build - # cd build - # cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE -DBUILD_OPENSSL_PLATFORM=darwin64-x86_64-cc - # make - # export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:`pwd`/../open-source/lib" - # ./tst/webrtc_client_test - + ulimit -c unlimited -S + timeout --signal=SIGABRT 60m ./tst/webrtc_client_test # memory-sanitizer: - # runs-on: ubuntu-latest + # runs-on: ubuntu-18.04 # env: - # CC: /usr/bin/clang - # CXX: /usr/bin/clang++ + # CC: clang-7 + # CXX: clang++-7 + # AWS_KVS_LOG_LEVEL: 2 # steps: # - name: Clone repository # uses: actions/checkout@v2 + # - name: Install dependencies + # run: | + # sudo apt-get update + # sudo apt-get -y install clang-7 # - name: Build repository # run: | - # mkdir build - # cd build - # cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DMEMORY_SANITIZER=TRUE + # sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + # mkdir build && cd build + # cmake .. -DMEMORY_SANITIZER=TRUE -DBUILD_TEST=TRUE # make - # export AWS_KVS_LOG_LEVEL=3 # ulimit -c unlimited -S # timeout --signal=SIGABRT 60m ./tst/webrtc_client_test - - - # undefined-behavior-sanitizer: + thread-sanitizer: + runs-on: ubuntu-latest + env: + TSAN_OPTIONS: halt_on_error=1:suppressions=../tst/suppressions/TSAN.supp + CC: clang-7 + CXX: clang++-7 + AWS_KVS_LOG_LEVEL: 2 + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get -y install clang-7 + - name: Build repository + run: | + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + mkdir build && cd build + cmake .. -DBUILD_TEST=TRUE -DTHREAD_SANITIZER=TRUE + make + ulimit -c unlimited -S + timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + linux-gcc-4_4: + runs-on: ubuntu-18.04 + env: + AWS_KVS_LOG_LEVEL: 2 + CC: gcc-4.4 + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Install deps + run: | + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty main' + sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty universe' + sudo apt-get -q update + sudo apt-get -y install gcc-4.4 + sudo apt-get -y install gdb + - name: Build repository + run: | + mkdir build && cd build + cmake .. -DBUILD_TEST=TRUE + make + ulimit -c unlimited -S + timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + # static-build: # runs-on: ubuntu-18.04 + # container: + # image: alpine:latest # env: - # UBSAN_OPTIONS: halt_on_error=1 + # CC: gcc + # CXX: g++ + # AWS_KVS_LOG_LEVEL: 2 # steps: # - name: Clone repository # uses: actions/checkout@v2 + # - name: Install dependencies + # run: | + # apk update + # apk upgrade + # apk add alpine-sdk cmake clang linux-headers perl bash openssl-dev + # - name: Build Repository + # run: | + # mkdir build && cd build + # cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE + # make + # ulimit -c unlimited -S + # ../scripts/check-static-build.sh + # ./tst/webrtc_client_test # - name: Build repository # run: | - # # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. # sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - # mkdir build - # cd build - # cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DUNDEFINED_BEHAVIOR_SANITIZER=TRUE + # mkdir build && cd build + # cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE # make - # export AWS_KVS_LOG_LEVEL=3 # ulimit -c unlimited -S + # ../scripts/check-static-build.sh # timeout --signal=SIGABRT 60m ./tst/webrtc_client_test - - # windows-build: - # runs-on: windows-latest - # env: - # PATH: "/c/Strawberry/perl/site/bin:/c/Strawberry/perl/bin:/c/Strawberry/c/bin:/c/Program Files/NASM:`pwd`/open-source/lib:`pwd`/open-source/bin:$PATH" + mbedtls-ubuntu-gcc: + runs-on: ubuntu-latest + env: + AWS_KVS_LOG_LEVEL: 2 + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Install deps + run: | + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty main' + sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty universe' + sudo apt-get -q update + sudo apt-get -y install gcc-4.4 + sudo apt-get -y install gdb + - name: Build repository + run: | + mkdir build && cd build + cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON + make + ulimit -c unlimited -S + timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + mbedtls-ubuntu-clang: + runs-on: ubuntu-18.04 + env: + CC: clang-7 + CXX: clang++-7 + AWS_KVS_LOG_LEVEL: 2 + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get -y install clang-7 + - name: Build repository + run: | + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + mkdir build && cd build + cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON + make + ulimit -c unlimited -S + timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + sample-check: + runs-on: ubuntu-latest + env: + AWS_KVS_LOG_LEVEL: 2 + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Build repository + run: | + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + mkdir build && cd build + cmake .. + make + cd .. + ./scripts/check-sample.sh + ubuntu-os-build: + runs-on: ubuntu-18.04 + env: + AWS_KVS_LOG_LEVEL: 2 + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Build repository + run: | + # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + mkdir build && cd build + cmake .. -DBUILD_TEST=TRUE + make + ./tst/webrtc_client_test + # windows-msvc: + # runs-on: windows-2019 + # permissions: + # id-token: write + # contents: read # steps: + # - name: Setup MSVC + # uses: ilammy/msvc-dev-cmd@v1 # - name: Clone repository # uses: actions/checkout@v2 - # - name: Install deps + # - name: Build and run # run: | # choco install nasm strawberryperl - # - name: Build repository - # run: | - # unset CC CC_FOR_BUILD CXX CXX_FOR_BUILD # We want to use MSVC + # $env:Path += ';C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Strawberry\c\bin;C:\Program Files\NASM;D:\a\amazon-kinesis-video-streams-producer-c\amazon-kinesis-video-streams-producer-c\open-source\lib;D:\a\amazon-kinesis-video-streams-producer-c\amazon-kinesis-video-streams-producer-c\open-source\bin' + # git config --system core.longpaths true # .github/build_windows.bat - # cd build/tst - # ./webrtc_client_test.exe --gtest_filter="-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3" + # cd tst && .\webrtc_client_test.exe --gtest_filter="-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3" + arm-cross-compilation: + runs-on: ubuntu-18.04 + env: + CC: arm-linux-gnueabi-gcc + CXX: arm-linux-gnueabi-g++ + AWS_KVS_LOG_LEVEL: 2 + steps: + - name: Set up QEMU + id: qemu + uses: docker/setup-qemu-action@v1 + with: + image: tonistiigi/binfmt:latest + platforms: arm64 + - name: Install dependencies + run: + sudo apt-get -y install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi binutils-arm-linux-gnueabi + - name: Clone repository + uses: actions/checkout@v2 + - name: Build Repository + run: | + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + mkdir build && cd build + cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-generic32 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi + make diff --git a/.travis.yml b/.travis.yml index 1d1b1d5946..d2fc358e4b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,56 +35,6 @@ matrix: include: - # MacOS Builds - - name: "OSX GCC" - os: osx - compiler: gcc - before_script: - - mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE - script: - - make - - export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:`pwd`/../open-source/lib" - - ./tst/webrtc_client_test - after_failure: skip # timeout not available on MacOS - - - name: "OSX Clang" - os: osx - compiler: clang - before_script: - - mkdir build && cd build && cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE - script: - - make - - export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:`pwd`/../open-source/lib" - - ./tst/webrtc_client_test || travis_terminate 1; - # Execute selected tests without auth integration - - unset AWS_ACCESS_KEY_ID - - unset AWS_SECRET_ACCESS_KEY - - ./tst/webrtc_client_test --gtest_break_on_failure --gtest_filter="SignalingApiFunctionalityTest.*:SignalingApiTest.*:TurnConnectionFunctionalityTest.*" - after_failure: skip # timeout not available on MacOS - - # UndefinedBehaviorSanitizer - - name: "Linux Clang UndefinedBehaviorSanitizer" - os: linux - compiler: clang - env: UBSAN_OPTIONS=halt_on_error=1 - before_install: - # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - before_script: mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TEST=TRUE -DUNDEFINED_BEHAVIOR_SANITIZER=TRUE - - # Old Version GCC 4.4 - - name: "Linux GCC 4.4 Build" - os: linux - before_install: - # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test - - sudo apt-get -q update - - sudo apt-get -y install gcc-4.4 - - sudo apt-get -y install gdb - compiler: gcc - before_script: export CC=gcc-4.4 && mkdir build && cd build && cmake .. -DBUILD_TEST=TRUE - # Static Build - name: "Static Build" before_install: @@ -105,37 +55,32 @@ matrix: - alpine ../scripts/check-static-build.sh || travis_terminate 1 - alpine ./tst/webrtc_client_test after_failure: skip # no coredumps in container - - # Cross-compilation to ARM, no tests are run - - name: "ARM Cross-compilation" - os: linux - addons: - apt: - packages: - - gcc-arm-linux-gnueabi - - g++-arm-linux-gnueabi - - binutils-arm-linux-gnueabi - compiler: gcc + + # MemorySanitizer + - name: "Linux Clang MemorySanitizer" + env: allowTestFail=true before_install: - # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - before_script: - - export CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ - - mkdir build && cd build - - cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-generic32 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi - script: make + # TODO: Remove the following 2 lines. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. + - echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json + - sudo service docker restart + - mkdir build + - docker run -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -w /src/build -dit --name msan-tester -v $(pwd):/src seaduboi/kvs-msan-tester + - msan-tester() { docker exec -it msan-tester "$@"; } + script: + - msan-tester cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_DEPENDENCIES=FALSE -DBUILD_TEST=TRUE -DMEMORY_SANITIZER=TRUE -DCMAKE_CXX_FLAGS="-stdlib=libc++ -L/usr/src/libcxx_msan/lib -lc++abi -I/usr/src/libcxx_msan/include -I/usr/src/libcxx_msan/include/c++/v1 -fsanitize=memory -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins" + - msan-tester make + - msan-tester ./tst/webrtc_client_test + after_failure: skip # no coredumps in container - - name: "mbedTLS - Linux GCC 4.4 Build" - os: linux - compiler: gcc - before_install: - # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test - - sudo apt-get -q update - - sudo apt-get -y install gcc-4.4 - - sudo apt-get -y install gdb - before_script: mkdir build && cd build && cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON + - name: "Windows MSVC" + env: allowTestFail=true + os: windows + script: + - choco install nasm strawberryperl + - unset CC CC_FOR_BUILD CXX CXX_FOR_BUILD # We want to use MSVC + - export "PATH=/c/Strawberry/perl/site/bin:/c/Strawberry/perl/bin:/c/Strawberry/c/bin:/c/Program Files/NASM:`pwd`/open-source/lib:`pwd`/open-source/bin:$PATH" + - .github/build_windows.bat + - cd build/tst && ./webrtc_client_test.exe --gtest_filter="-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3" # Generate Doxygen - name: "Generate Doxygen" diff --git a/src/source/Signaling/Client.c b/src/source/Signaling/Client.c index 31f228a3cf..7e54682918 100644 --- a/src/source/Signaling/Client.c +++ b/src/source/Signaling/Client.c @@ -231,7 +231,9 @@ STATUS signalingClientFetchSync(SIGNALING_CLIENT_HANDLE signalingClientHandle) CleanUp: SIGNALING_UPDATE_ERROR_COUNT(pSignalingClient, retStatus); - freeRetryStrategyForCreatingSignalingClient(&pSignalingClient->clientInfo.signalingClientInfo, &createSignalingClientRetryStrategy); + if (pSignalingClient != NULL) { + freeRetryStrategyForCreatingSignalingClient(&pSignalingClient->clientInfo.signalingClientInfo, &createSignalingClientRetryStrategy); + } LEAVES(); return retStatus; } From 27224e17ec99e7c65ef722113a7281e20a10ef80 Mon Sep 17 00:00:00 2001 From: Chris Hiszpanski Date: Tue, 15 Feb 2022 11:15:51 -0800 Subject: [PATCH 037/102] Fix swapped SSL_free() and SSL_CTX_free() (#1401) --- src/source/Crypto/Dtls_openssl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/source/Crypto/Dtls_openssl.c b/src/source/Crypto/Dtls_openssl.c index b124cb00e1..35137cb504 100644 --- a/src/source/Crypto/Dtls_openssl.c +++ b/src/source/Crypto/Dtls_openssl.c @@ -414,10 +414,10 @@ STATUS freeDtlsSession(PDtlsSession* ppDtlsSession) } if (pDtlsSession->pSsl != NULL) { - SSL_CTX_free(pDtlsSession->pSslCtx); + SSL_free(pDtlsSession->pSsl); } if (pDtlsSession->pSslCtx != NULL) { - SSL_free(pDtlsSession->pSsl); + SSL_CTX_free(pDtlsSession->pSslCtx); } if (IS_VALID_MUTEX_VALUE(pDtlsSession->sslLock)) { MUTEX_FREE(pDtlsSession->sslLock); From 822f174a22c8b5c4ac12e9290574ad4d25b1a526 Mon Sep 17 00:00:00 2001 From: jdelapla Date: Tue, 15 Feb 2022 13:16:27 -0800 Subject: [PATCH 038/102] Hangup value included in LWS retry strategy (#1403) --- src/source/Signaling/LwsApiCalls.h | 1 + src/source/Signaling/Signaling.c | 1 + 2 files changed, 2 insertions(+) diff --git a/src/source/Signaling/LwsApiCalls.h b/src/source/Signaling/LwsApiCalls.h index 7131ca9660..83d76c032b 100644 --- a/src/source/Signaling/LwsApiCalls.h +++ b/src/source/Signaling/LwsApiCalls.h @@ -19,6 +19,7 @@ extern "C" { #define SIGNALING_SERVICE_TCP_KEEPALIVE_PROBE_COUNT 3 #define SIGNALING_SERVICE_TCP_KEEPALIVE_PROBE_INTERVAL_IN_SECONDS 1 #define SIGNALING_SERVICE_WSS_PING_PONG_INTERVAL_IN_SECONDS 10 +#define SIGNALING_SERVICE_WSS_HANGUP_IN_SECONDS 7200 // Protocol indexes #define PROTOCOL_INDEX_HTTPS 0 diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index 34af5a6212..c3d02b9e8a 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -15,6 +15,7 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf struct lws_context_creation_info creationInfo; const lws_retry_bo_t retryPolicy = { .secs_since_valid_ping = SIGNALING_SERVICE_WSS_PING_PONG_INTERVAL_IN_SECONDS, + .secs_since_valid_hangup = SIGNALING_SERVICE_WSS_HANGUP_IN_SECONDS, }; PStateMachineState pStateMachineState; BOOL cacheFound = FALSE; From 19e0f14d47eb2c37bab867ff412b0291228d5a8f Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Tue, 15 Feb 2022 15:12:33 -0800 Subject: [PATCH 039/102] GitHub actions setup static build (#1405) * fix static build * remove static build from travis * fix warnings in mac builds; setup iam role for sample-check --- .github/workflows/ci.yml | 90 +++++++++++--------- .travis.yml | 21 ----- CMake/Dependencies/libopenssl-CMakeLists.txt | 4 +- 3 files changed, 52 insertions(+), 63 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 718df8a07e..d5e034564b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,13 +28,15 @@ jobs: CC: /usr/bin/clang CXX: /usr/bin/clang++ AWS_KVS_LOG_LEVEL: 2 + LDFLAGS: -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib + CPATH: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ steps: - name: Clone repository uses: actions/checkout@v2 - name: Build repository run: | mkdir build && cd build - sh -c 'cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE;cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE' + cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE make ./tst/webrtc_client_test mac-os-build-gcc: @@ -46,15 +48,27 @@ jobs: steps: - name: Clone repository uses: actions/checkout@v2 - - name: Build repository and run all tests without auth + - name: Build repository and run tests run: | mkdir build && cd build - sh -c 'cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE;cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE' + cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE make ./tst/webrtc_client_test - unset AWS_ACCESS_KEY_ID - unset AWS_SECRET_ACCESS_KEY - ./tst/webrtc_client_test --gtest_break_on_failure --gtest_filter="SignalingApiFunctionalityTest.*:SignalingApiTest.*:TurnConnectionFunctionalityTest.*" + static-build-mac: + runs-on: macos-latest + env: + AWS_KVS_LOG_LEVEL: 2 + LDFLAGS: -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib + CPATH: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Build repository and run tests + run: | + mkdir build && cd build + cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE + make + ./tst/webrtc_client_test linux-gcc-code-coverage: runs-on: ubuntu-18.04 env: @@ -188,39 +202,27 @@ jobs: make ulimit -c unlimited -S timeout --signal=SIGABRT 60m ./tst/webrtc_client_test - # static-build: - # runs-on: ubuntu-18.04 - # container: - # image: alpine:latest - # env: - # CC: gcc - # CXX: g++ - # AWS_KVS_LOG_LEVEL: 2 - # steps: - # - name: Clone repository - # uses: actions/checkout@v2 - # - name: Install dependencies - # run: | - # apk update - # apk upgrade - # apk add alpine-sdk cmake clang linux-headers perl bash openssl-dev - # - name: Build Repository - # run: | - # mkdir build && cd build - # cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE - # make - # ulimit -c unlimited -S - # ../scripts/check-static-build.sh - # ./tst/webrtc_client_test - # - name: Build repository - # run: | - # sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' - # mkdir build && cd build - # cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE - # make - # ulimit -c unlimited -S - # ../scripts/check-static-build.sh - # timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + static-build-linux: + runs-on: ubuntu-18.04 + container: + image: alpine:latest + env: + CC: gcc + CXX: g++ + AWS_KVS_LOG_LEVEL: 2 + steps: + - name: Clone repository + uses: actions/checkout@v2 + - name: Install dependencies + run: | + apk update + apk upgrade + apk add alpine-sdk cmake clang linux-headers perl bash openssl-dev + - name: Build Repository + run: | + mkdir build && cd build + cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE + make mbedtls-ubuntu-gcc: runs-on: ubuntu-latest env: @@ -269,9 +271,18 @@ jobs: runs-on: ubuntu-latest env: AWS_KVS_LOG_LEVEL: 2 + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v2 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + role-session-name: ${{ secrets.AWS_ROLE_SESSION_NAME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Build repository run: | sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' @@ -336,4 +347,3 @@ jobs: mkdir build && cd build cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-generic32 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi make - diff --git a/.travis.yml b/.travis.yml index d2fc358e4b..9076e63f2d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,27 +34,6 @@ matrix: - env: allowTestFail=true include: - - # Static Build - - name: "Static Build" - before_install: - # TODO: Remove the following 2 lines. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. - - echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json - - sudo service docker restart - - mkdir build - - docker run -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -w /src/build -dit --security-opt=seccomp=.github/default.json --name alpine -v $(pwd):/src alpine:latest - - alpine() { docker exec -it alpine "$@"; } - install: - - alpine apk update - - alpine apk upgrade - - alpine apk add alpine-sdk cmake clang linux-headers perl bash openssl-dev - script: - - alpine cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE - - alpine make - # ldd will return non-zero when there's no dynamic link. So, the positive value for static builds is non-zero - - alpine ../scripts/check-static-build.sh || travis_terminate 1 - - alpine ./tst/webrtc_client_test - after_failure: skip # no coredumps in container # MemorySanitizer - name: "Linux Clang MemorySanitizer" diff --git a/CMake/Dependencies/libopenssl-CMakeLists.txt b/CMake/Dependencies/libopenssl-CMakeLists.txt index cf95d01224..e9074b16a7 100644 --- a/CMake/Dependencies/libopenssl-CMakeLists.txt +++ b/CMake/Dependencies/libopenssl-CMakeLists.txt @@ -17,9 +17,9 @@ else() endif() if (DEFINED BUILD_OPENSSL_PLATFORM AND NOT BUILD_OPENSSL_PLATFORM STREQUAL OFF) - SET(CONFIGURE_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/build/src/project_libopenssl/Configure ${OPENSSL_EXTRA} no-async --prefix=${OPEN_SRC_INSTALL_PREFIX} --openssldir=${OPEN_SRC_INSTALL_PREFIX} ${BUILD_OPENSSL_PLATFORM}) + SET(CONFIGURE_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/build/src/project_libopenssl/Configure ${OPENSSL_EXTRA} no-async --prefix=${OPEN_SRC_INSTALL_PREFIX} --openssldir=${OPEN_SRC_INSTALL_PREFIX} ${BUILD_OPENSSL_PLATFORM} -Wno-nullability-completeness -Wno-expansion-to-defined) else() - SET(CONFIGURE_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/build/src/project_libopenssl/config ${OPENSSL_EXTRA} --prefix=${OPEN_SRC_INSTALL_PREFIX} --openssldir=${OPEN_SRC_INSTALL_PREFIX}) + SET(CONFIGURE_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/build/src/project_libopenssl/config ${OPENSSL_EXTRA} --prefix=${OPEN_SRC_INSTALL_PREFIX} --openssldir=${OPEN_SRC_INSTALL_PREFIX} -Wno-nullability-completeness -Wno-expansion-to-defined) endif() endif() From b4f4516918dc58b85e1ba22e0f9b93ab98a940ce Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Fri, 25 Feb 2022 09:39:42 -0800 Subject: [PATCH 040/102] Migrate Doxygen to GitHub Actions (#1416) * add doxygen workflow to ga * install graphviz * install ttf-freefont * specify doxyfile * use enc key * use enc key * use marketplace action to deploy * use marketplace action to deploy * use marketplace action to deploy * check current folder * check current folder * check current folder * check current folder * check current folder * check current folder * check current folder * fix deployment * fix deployment * fix deployment * fix deployment * specify doxyfile path * fix syntax * fix paths in doxyfile * fix forked branch ci * add develop branch --- .github/github_deploy_key.enc | Bin 3392 -> 0 bytes .github/workflows/ci.yml | 1 + .github/workflows/doxygen-gh-pages.yml | 29 +++++ .travis.yml | 99 ------------------ .github/Doxyfile => Doxyfile | 2 +- .../DoxygenLayout.xml => DoxygenLayout.xml | 0 .github/Introduction.md => Introduction.md | 0 7 files changed, 31 insertions(+), 100 deletions(-) delete mode 100644 .github/github_deploy_key.enc create mode 100644 .github/workflows/doxygen-gh-pages.yml delete mode 100644 .travis.yml rename .github/Doxyfile => Doxyfile (95%) rename .github/DoxygenLayout.xml => DoxygenLayout.xml (100%) rename .github/Introduction.md => Introduction.md (100%) diff --git a/.github/github_deploy_key.enc b/.github/github_deploy_key.enc deleted file mode 100644 index 9be25b50328bdf2d92eb5bbb4519878ecf3381b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3392 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 Date: Wed, 9 Mar 2022 00:00:14 -0800 Subject: [PATCH 041/102] Fix ResourceEndpoint length check (#1411) ResourceEndpoint length check mistakenly uses ChannelName max length. --- src/source/Signaling/LwsApiCalls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/source/Signaling/LwsApiCalls.c b/src/source/Signaling/LwsApiCalls.c index 2009bb31e0..1e898c394b 100644 --- a/src/source/Signaling/LwsApiCalls.c +++ b/src/source/Signaling/LwsApiCalls.c @@ -1083,7 +1083,7 @@ STATUS getChannelEndpointLws(PSignalingClient pSignalingClient, UINT64 time) i++; } else if (compareJsonString(pResponseStr, &tokens[i], JSMN_STRING, (PCHAR) "ResourceEndpoint")) { strLen = (UINT32) (tokens[i + 1].end - tokens[i + 1].start); - CHK(strLen <= MAX_CHANNEL_NAME_LEN, STATUS_INVALID_API_CALL_RETURN_JSON); + CHK(strLen <= MAX_SIGNALING_ENDPOINT_URI_LEN, STATUS_INVALID_API_CALL_RETURN_JSON); pEndpoint = pResponseStr + tokens[i + 1].start; endpointLen = strLen; endpoint = TRUE; From 3eb31948ccff33d941ab7f5e0339013f38175573 Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Tue, 15 Mar 2022 02:54:11 +0530 Subject: [PATCH 042/102] update cross-compilation builds ga (#1429) --- .github/workflows/ci.yml | 50 ++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a0682d1bac..9e77b11b21 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -324,21 +324,51 @@ jobs: # git config --system core.longpaths true # .github/build_windows.bat # cd tst && .\webrtc_client_test.exe --gtest_filter="-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3" - arm-cross-compilation: - runs-on: ubuntu-18.04 + arm64-cross-compilation: + runs-on: ubuntu-latest + env: + CC: aarch64-linux-gnu-gcc + CXX: aarch64-linux-gnu-g++ + steps: + - name: Install dependencies + run: | + sudo apt update + sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu + - name: Clone repository + uses: actions/checkout@v2 + - name: Build Repository + run: | + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + mkdir build && cd build + cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-generic64 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi + make + linux-aarch64-cross-compilation: + runs-on: ubuntu-latest + env: + CC: aarch64-linux-gnu-gcc + CXX: aarch64-linux-gnu-g++ + steps: + - name: Install dependencies + run: | + sudo apt update + sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu + - name: Clone repository + uses: actions/checkout@v2 + - name: Build Repository + run: | + sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + mkdir build && cd build + cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-aarch64 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi + make + arm32-cross-compilation: + runs-on: ubuntu-latest env: CC: arm-linux-gnueabi-gcc CXX: arm-linux-gnueabi-g++ - AWS_KVS_LOG_LEVEL: 2 steps: - - name: Set up QEMU - id: qemu - uses: docker/setup-qemu-action@v1 - with: - image: tonistiigi/binfmt:latest - platforms: arm64 - name: Install dependencies - run: + run: | + sudo apt update sudo apt-get -y install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi binutils-arm-linux-gnueabi - name: Clone repository uses: actions/checkout@v2 From 866aee4a5fe7a25fe6be2ddc562e3072348a978c Mon Sep 17 00:00:00 2001 From: jdelapla Date: Tue, 5 Apr 2022 09:42:28 -0700 Subject: [PATCH 043/102] Addressing error handling concerns for an edge case (#1443) * Addressing error handling concerns for an edge case * Clang format * Removed useless status_success check, changed test to look for correct error value --- src/source/PeerConnection/JitterBuffer.c | 21 ++++++++++----------- tst/JitterBufferFunctionalityTest.cpp | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/source/PeerConnection/JitterBuffer.c b/src/source/PeerConnection/JitterBuffer.c index 2d919d07c6..aea092edc0 100644 --- a/src/source/PeerConnection/JitterBuffer.c +++ b/src/source/PeerConnection/JitterBuffer.c @@ -221,12 +221,14 @@ STATUS jitterBufferInternalParse(PJitterBuffer pJitterBuffer, BOOL bufferClosed) } else { lastNonNullIndex = index; retStatus = hashTableGet(pJitterBuffer->pPkgBufferHashTable, index, &hashValue); - pCurPacket = (PRtpPacket) hashValue; - if (retStatus == STATUS_SUCCESS || retStatus == STATUS_HASH_KEY_NOT_PRESENT) { - retStatus = STATUS_SUCCESS; + if (retStatus == STATUS_HASH_KEY_NOT_PRESENT) { + // should be unreachable, this means hashTablContains() said we had it but hashTableGet() couldn't find it. + continue; } else { - CHK(FALSE, retStatus); + CHK_STATUS(retStatus); } + pCurPacket = (PRtpPacket) hashValue; + CHK(pCurPacket != NULL, STATUS_NULL_ARG); curTimestamp = pCurPacket->header.timestamp; // new timestamp on an RTP packet means new frame if (curTimestamp != pJitterBuffer->headTimestamp) { @@ -315,7 +317,9 @@ STATUS jitterBufferDropBufferData(PJitterBuffer pJitterBuffer, UINT16 startIndex if (hasEntry) { CHK_STATUS(hashTableGet(pJitterBuffer->pPkgBufferHashTable, index, &hashValue)); pCurPacket = (PRtpPacket) hashValue; - freeRtpPacket(&pCurPacket); + if (pCurPacket) { + freeRtpPacket(&pCurPacket); + } CHK_STATUS(hashTableRemove(pJitterBuffer->pPkgBufferHashTable, index)); } } @@ -344,13 +348,8 @@ STATUS jitterBufferFillFrameData(PJitterBuffer pJitterBuffer, PBYTE pFrame, UINT CHK(pJitterBuffer != NULL && pFrame != NULL && pFilledSize != NULL, STATUS_NULL_ARG); for (; UINT16_DEC(index) != endIndex; index++) { hashValue = 0; - retStatus = hashTableGet(pJitterBuffer->pPkgBufferHashTable, index, &hashValue); + CHK_STATUS(hashTableGet(pJitterBuffer->pPkgBufferHashTable, index, &hashValue)); pCurPacket = (PRtpPacket) hashValue; - if (retStatus == STATUS_SUCCESS || retStatus == STATUS_HASH_KEY_NOT_PRESENT) { - retStatus = STATUS_SUCCESS; - } else { - CHK(FALSE, retStatus); - } CHK(pCurPacket != NULL, STATUS_NULL_ARG); partialFrameSize = remainingFrameSize; CHK_STATUS(pJitterBuffer->depayPayloadFn(pCurPacket->payload, pCurPacket->payloadLength, pCurPtrInFrame, &partialFrameSize, NULL)); diff --git a/tst/JitterBufferFunctionalityTest.cpp b/tst/JitterBufferFunctionalityTest.cpp index d88717b8da..c857bea78a 100644 --- a/tst/JitterBufferFunctionalityTest.cpp +++ b/tst/JitterBufferFunctionalityTest.cpp @@ -448,7 +448,7 @@ TEST_F(JitterBufferFunctionalityTest, fillDataReturnErrorWithImcompleteFrame) EXPECT_EQ(STATUS_SUCCESS, jitterBufferPush(mJitterBuffer, mPRtpPackets[i], nullptr)); } - EXPECT_EQ(STATUS_NULL_ARG, jitterBufferFillFrameData(mJitterBuffer, buffer, 2, &filledSize, 0, 1)); + EXPECT_EQ(STATUS_HASH_KEY_NOT_PRESENT, jitterBufferFillFrameData(mJitterBuffer, buffer, 2, &filledSize, 0, 1)); clearJitterBufferForTest(); MEMFREE(buffer); From cdb0c17d2d67f4a304354a69a80d6921019f2ef6 Mon Sep 17 00:00:00 2001 From: "Alex.D.Scofield" Date: Wed, 11 May 2022 06:20:40 +0800 Subject: [PATCH 044/102] sample: fix possible timerQueue deadlock when freeSampleStreamingSession (#1448) Signed-off-by: zhiqinli@amazon.com --- samples/Common.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index ccd8d004b2..c61f4984b5 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -551,7 +551,7 @@ STATUS freeSampleStreamingSession(PSampleStreamingSession* ppSampleStreamingSess // the running thread but it's OK as it's re-entrant MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); if (pSampleConfiguration->iceCandidatePairStatsTimerId != MAX_UINT32 && pSampleConfiguration->streamingSessionCount == 0 && - pSampleConfiguration->iceCandidatePairStatsTimerId != MAX_UINT32 && IS_VALID_TIMER_QUEUE_HANDLE(pSampleConfiguration->timerQueueHandle)) { + IS_VALID_TIMER_QUEUE_HANDLE(pSampleConfiguration->timerQueueHandle)) { CHK_LOG_ERR(timerQueueCancelTimer(pSampleConfiguration->timerQueueHandle, pSampleConfiguration->iceCandidatePairStatsTimerId, (UINT64) pSampleConfiguration)); pSampleConfiguration->iceCandidatePairStatsTimerId = MAX_UINT32; @@ -957,8 +957,12 @@ STATUS pregenerateCertTimerCallback(UINT32 timerId, UINT64 currentTime, UINT64 c CHK_WARN(pSampleConfiguration != NULL, STATUS_NULL_ARG, "[KVS Master] pregenerateCertTimerCallback(): Passed argument is NULL"); - MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); - locked = TRUE; + // Use MUTEX_TRYLOCK to avoid possible dead lock when canceling timerQueue + if (!MUTEX_TRYLOCK(pSampleConfiguration->sampleConfigurationObjLock)) { + return retStatus; + } else { + locked = TRUE; + } // Quick check if there is anything that needs to be done. CHK_STATUS(stackQueueGetCount(pSampleConfiguration->pregeneratedCertificates, &certCount)); From 0fbddaa7116f1bbcb33b809b7b60759e40e7885b Mon Sep 17 00:00:00 2001 From: "Alex.D.Scofield" Date: Wed, 11 May 2022 06:24:20 +0800 Subject: [PATCH 045/102] metrics: allow viewer sample to get ice candidate pair stats (#1406) Signed-off-by: Alex.Li --- samples/Common.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/samples/Common.c b/samples/Common.c index c61f4984b5..dcc7f50061 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -1317,6 +1317,8 @@ STATUS signalingMessageReceived(UINT64 customData, PReceivedSignalingMessage pRe // NULL the pointer to avoid it being freed in the cleanup pPendingMessageQueue = NULL; } + + startStats = pSampleConfiguration->iceCandidatePairStatsTimerId == MAX_UINT32; break; case SIGNALING_MESSAGE_TYPE_ICE_CANDIDATE: From 51e9aa8a73635bb2e92e892c4bcd13a15b131a2e Mon Sep 17 00:00:00 2001 From: jdelapla Date: Tue, 10 May 2022 15:28:35 -0700 Subject: [PATCH 046/102] account for hexidecimal numbers (#1465) --- scripts/parse_status.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/parse_status.py b/scripts/parse_status.py index 28a32e2d13..5114b8c781 100755 --- a/scripts/parse_status.py +++ b/scripts/parse_status.py @@ -20,7 +20,7 @@ print(example_sums) # {'STATUS_CHILD': "0x5", 'STATUS_PARENT': "0x4"} ''' -pattern = re.compile("#define *(STATUS\_[A-Z_]*) *(([A-Z_]*) *\+ *)?0x([0-9]*)") +pattern = re.compile("#define *(STATUS\_[A-Z_]*) *(([A-Z_]*) *\+ *)?0x([0-9a-fA-F]*)") def operands_by_name(paragraph): matches = filter(None, [pattern.match(line) for line in paragraph.splitlines()]) From cd47248a71f72c8c0e07b6663702876ee05fe62f Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Mon, 23 May 2022 09:43:15 -0700 Subject: [PATCH 047/102] Fix default data channel ordering mode (#1476) --- src/source/PeerConnection/DataChannel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/source/PeerConnection/DataChannel.c b/src/source/PeerConnection/DataChannel.c index bb66253b19..e8aee9a14a 100644 --- a/src/source/PeerConnection/DataChannel.c +++ b/src/source/PeerConnection/DataChannel.c @@ -30,7 +30,7 @@ STATUS createDataChannel(PRtcPeerConnection pPeerConnection, PCHAR pDataChannelN pKvsDataChannel->rtcDataChannelInit = *pRtcDataChannelInit; } else { // If nothing is set, set default to ordered mode - pKvsDataChannel->rtcDataChannelInit.ordered = FALSE; + pKvsDataChannel->rtcDataChannelInit.ordered = TRUE; NULLABLE_SET_EMPTY(pKvsDataChannel->rtcDataChannelInit.maxPacketLifeTime); NULLABLE_SET_EMPTY(pKvsDataChannel->rtcDataChannelInit.maxRetransmits); } From cc3eaba90e69103255600ef5fe072d800d4ef253 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Mon, 23 May 2022 10:01:46 -0700 Subject: [PATCH 048/102] Invoke gst_object_unref on allocated elements (#1477) --- samples/kvsWebRTCClientMasterGstreamerSample.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/samples/kvsWebRTCClientMasterGstreamerSample.c b/samples/kvsWebRTCClientMasterGstreamerSample.c index 185859bd57..29bee57ae8 100644 --- a/samples/kvsWebRTCClientMasterGstreamerSample.c +++ b/samples/kvsWebRTCClientMasterGstreamerSample.c @@ -217,6 +217,8 @@ PVOID sendGstreamerAudioVideo(PVOID args) gst_object_unref(bus); gst_element_set_state(pipeline, GST_STATE_NULL); gst_object_unref(pipeline); + gst_object_unref(appsinkAudio); + gst_object_unref(appsinkVideo); CleanUp: @@ -323,6 +325,7 @@ PVOID receiveGstreamerAudioVideo(PVOID args) gst_object_unref(bus); gst_element_set_state(pipeline, GST_STATE_NULL); gst_object_unref(pipeline); + gst_object_unref(appsrcAudio); CleanUp: if (error != NULL) { From e25997af5f8385b373fd8be19185f415f1bb61e4 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Thu, 2 Jun 2022 11:14:28 -0700 Subject: [PATCH 049/102] Fix typo (#1478) * Fix typo * Add unit test * find gcc version for static build * revert gtest version update and change alpine version * fix memory leak issue and abort trap in test --- .github/workflows/ci.yml | 4 ++-- src/source/Signaling/ChannelInfo.c | 2 +- tst/SignalingApiTest.cpp | 26 ++++++++++++++++++++++++++ tst/WebRTCClientTestFixture.h | 4 ++++ 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9e77b11b21..d914ba0eb4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -205,7 +205,7 @@ jobs: static-build-linux: runs-on: ubuntu-18.04 container: - image: alpine:latest + image: alpine:3.15.4 env: CC: gcc CXX: g++ @@ -219,7 +219,7 @@ jobs: apk upgrade apk add alpine-sdk cmake clang linux-headers perl bash openssl-dev - name: Build Repository - run: | + run: | mkdir build && cd build cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE make diff --git a/src/source/Signaling/ChannelInfo.c b/src/source/Signaling/ChannelInfo.c index 18e0df7dce..bc385d7638 100644 --- a/src/source/Signaling/ChannelInfo.c +++ b/src/source/Signaling/ChannelInfo.c @@ -156,7 +156,7 @@ STATUS createValidateChannelInfo(PChannelInfo pOrigChannelInfo, PChannelInfo* pp pCurPtr += ALIGN_UP_TO_MACHINE_WORD(userAgentLen + 1); if (kmsLen != 0) { - STRCPY(pCurPtr, pOrigChannelInfo->pCustomUserAgent); + STRCPY(pCurPtr, pOrigChannelInfo->pKmsKeyId); pChannelInfo->pKmsKeyId = pCurPtr; pCurPtr += ALIGN_UP_TO_MACHINE_WORD(kmsLen + 1); } diff --git a/tst/SignalingApiTest.cpp b/tst/SignalingApiTest.cpp index 75306b1d22..6ff92aef7f 100644 --- a/tst/SignalingApiTest.cpp +++ b/tst/SignalingApiTest.cpp @@ -9,6 +9,32 @@ namespace webrtcclient { class SignalingApiTest : public WebRtcClientTestBase { }; +TEST_F(SignalingApiTest, createValidateChannelInfo) +{ + initializeSignalingClientStructs(); + PChannelInfo rChannelInfo; + STRCPY(mChannelArn, TEST_CHANNEL_ARN); + STRCPY(mKmsKeyId, TEST_KMS_KEY_ID_ARN); + mChannelInfo.pChannelArn = mChannelArn; + mChannelInfo.pKmsKeyId = mKmsKeyId; + EXPECT_EQ(STATUS_SUCCESS, createValidateChannelInfo(&mChannelInfo, &rChannelInfo)); + EXPECT_EQ(0, STRCMP(rChannelInfo->pChannelArn, TEST_CHANNEL_ARN)); + EXPECT_EQ(0, STRCMP(rChannelInfo->pKmsKeyId, TEST_KMS_KEY_ID_ARN)); + EXPECT_EQ(rChannelInfo->version, CHANNEL_INFO_CURRENT_VERSION); + EXPECT_EQ(rChannelInfo->tagCount, 3); + EXPECT_EQ(rChannelInfo->retry, TRUE); + EXPECT_EQ(rChannelInfo->channelType, SIGNALING_CHANNEL_TYPE_SINGLE_MASTER); + EXPECT_EQ(rChannelInfo->channelRoleType, SIGNALING_CHANNEL_ROLE_TYPE_MASTER); + EXPECT_EQ(rChannelInfo->cachingPolicy, SIGNALING_API_CALL_CACHE_TYPE_NONE); + // The createValidateChannelInfo() is expected to fix up caching period to an hour + EXPECT_EQ(rChannelInfo->cachingPeriod, SIGNALING_DEFAULT_API_CALL_CACHE_TTL); + EXPECT_EQ(rChannelInfo->reconnect, TRUE); + EXPECT_EQ(0, STRCMP(rChannelInfo->pCertPath, mCaCertPath)); + EXPECT_EQ(rChannelInfo->messageTtl, TEST_SIGNALING_MESSAGE_TTL); + EXPECT_EQ(0, STRCMP(rChannelInfo->pRegion, TEST_DEFAULT_REGION)); + freeChannelInfo(&rChannelInfo); +} + TEST_F(SignalingApiTest, signalingSendMessageSync) { STATUS expectedStatus; diff --git a/tst/WebRTCClientTestFixture.h b/tst/WebRTCClientTestFixture.h index c1d6f52d1f..28a0686521 100644 --- a/tst/WebRTCClientTestFixture.h +++ b/tst/WebRTCClientTestFixture.h @@ -13,6 +13,8 @@ #define TEST_SIGNALING_MASTER_CLIENT_ID (PCHAR) "Test_Master_ClientId" #define TEST_SIGNALING_VIEWER_CLIENT_ID (PCHAR) "Test_Viewer_ClientId" #define TEST_SIGNALING_CHANNEL_NAME (PCHAR) "ScaryTestChannel_" +#define TEST_KMS_KEY_ID_ARN (PCHAR) "arn:aws:kms:us-west-2:123456789012:key/0000-0000-0000-0000-0000" +#define TEST_CHANNEL_ARN (PCHAR) "arn:aws:kinesisvideo:us-west-2:123456789012:channel/ScaryTestChannel" #define SIGNAING_TEST_CORRELATION_ID (PCHAR) "Test_correlation_id" #define TEST_SIGNALING_MESSAGE_TTL (120 * HUNDREDS_OF_NANOS_IN_A_SECOND) #define TEST_VIDEO_FRAME_SIZE (120 * 1024) @@ -293,6 +295,8 @@ class WebRtcClientTestBase : public ::testing::Test { CHAR mDefaultRegion[MAX_REGION_NAME_LEN + 1]; BOOL mAccessKeyIdSet; CHAR mChannelName[MAX_CHANNEL_NAME_LEN + 1]; + CHAR mChannelArn[MAX_ARN_LEN + 1]; + CHAR mKmsKeyId[MAX_ARN_LEN + 1]; PJitterBuffer mJitterBuffer; PBYTE mFrame; From 8f7ba52fc3769b7f0fa0d4665f13250181f48324 Mon Sep 17 00:00:00 2001 From: Gordon Date: Tue, 2 Aug 2022 02:06:53 +0800 Subject: [PATCH 050/102] fix video delay 4s (#1525) --- samples/kvsWebRTCClientMasterGstreamerSample.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/samples/kvsWebRTCClientMasterGstreamerSample.c b/samples/kvsWebRTCClientMasterGstreamerSample.c index 29bee57ae8..ed53ce0888 100644 --- a/samples/kvsWebRTCClientMasterGstreamerSample.c +++ b/samples/kvsWebRTCClientMasterGstreamerSample.c @@ -75,7 +75,7 @@ GstFlowReturn on_new_sample(GstElement* sink, gpointer data, UINT64 trackid) pRtcRtpTransceiver = pSampleStreamingSession->pVideoRtcRtpTransceiver; frame.presentationTs = pSampleStreamingSession->videoTimestamp; frame.decodingTs = frame.presentationTs; - pSampleStreamingSession->videoTimestamp += SAMPLE_VIDEO_FRAME_DURATION; // assume video fps is 30 + pSampleStreamingSession->videoTimestamp += SAMPLE_VIDEO_FRAME_DURATION; // assume video fps is 25 } status = writeFrame(pRtcRtpTransceiver, &frame); if (status != STATUS_SRTP_NOT_READY_YET && status != STATUS_SUCCESS) { @@ -146,13 +146,13 @@ PVOID sendGstreamerAudioVideo(PVOID args) case SAMPLE_STREAMING_VIDEO_ONLY: if (pSampleConfiguration->useTestSrc) { pipeline = gst_parse_launch( - "videotestsrc is-live=TRUE ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=30/1 ! " + "videotestsrc is-live=TRUE ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=25/1 ! " "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! appsink sync=TRUE emit-signals=TRUE name=appsink-video", &error); } else { pipeline = gst_parse_launch( - "autovideosrc ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=[30/1,10000000/333333] ! " + "autovideosrc ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=25/1 ! " "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! appsink sync=TRUE emit-signals=TRUE name=appsink-video", &error); @@ -161,7 +161,7 @@ PVOID sendGstreamerAudioVideo(PVOID args) case SAMPLE_STREAMING_AUDIO_VIDEO: if (pSampleConfiguration->useTestSrc) { - pipeline = gst_parse_launch("videotestsrc is-live=TRUE ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=30/1 ! " + pipeline = gst_parse_launch("videotestsrc is-live=TRUE ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=25/1 ! " "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! appsink sync=TRUE " "emit-signals=TRUE name=appsink-video audiotestsrc is-live=TRUE ! " @@ -170,7 +170,7 @@ PVOID sendGstreamerAudioVideo(PVOID args) &error); } else { pipeline = - gst_parse_launch("autovideosrc ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=[30/1,10000000/333333] ! " + gst_parse_launch("autovideosrc ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=25/1 ! " "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! appsink sync=TRUE emit-signals=TRUE " "name=appsink-video autoaudiosrc ! " From 3036e6abdf96c44c77cfbbc892e7eac9413f4d03 Mon Sep 17 00:00:00 2001 From: Gordon Date: Tue, 18 Oct 2022 06:20:38 +0800 Subject: [PATCH 051/102] fix mips compile error (#1532) * fix mips compile error * fix mips compile error * fix mips compile error --- CMake/Dependencies/libsrtp-CMakeLists.txt | 1 + CMake/Dependencies/libusrsctp-CMakeLists.txt | 4 +++- CMakeLists.txt | 17 +++++++++++------ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/CMake/Dependencies/libsrtp-CMakeLists.txt b/CMake/Dependencies/libsrtp-CMakeLists.txt index b2491d786c..e74838185b 100644 --- a/CMake/Dependencies/libsrtp-CMakeLists.txt +++ b/CMake/Dependencies/libsrtp-CMakeLists.txt @@ -52,6 +52,7 @@ ExternalProject_Add(project_libsrtp -D ENABLE_OPENSSL=${LIBSRTP_ENABLE_OPENSSL} -D BUILD_SHARED_LIBS=${LIBSRTP_SHARED_LIBS} -D OPENSSL_ROOT_DIR=${OPEN_SRC_INSTALL_PREFIX} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} CONFIGURE_COMMAND ${CONFIGURE_COMMAND} TEST_COMMAND "" ) diff --git a/CMake/Dependencies/libusrsctp-CMakeLists.txt b/CMake/Dependencies/libusrsctp-CMakeLists.txt index bae5c8a435..5315a45a48 100644 --- a/CMake/Dependencies/libusrsctp-CMakeLists.txt +++ b/CMake/Dependencies/libusrsctp-CMakeLists.txt @@ -8,7 +8,9 @@ ExternalProject_Add(project_libusrsctp GIT_REPOSITORY https://github.com/sctplab/usrsctp.git GIT_TAG 1ade45cbadfd19298d2c47dc538962d4425ad2dd PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} -DCMAKE_C_FLAGS=-fPIC -Dsctp_werror=0 + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} + "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -fPIC" + -Dsctp_werror=0 BUILD_ALWAYS TRUE TEST_COMMAND "" ) diff --git a/CMakeLists.txt b/CMakeLists.txt index f3dc73f9e2..45d4db468f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,6 +79,10 @@ endif() set(KINESIS_VIDEO_WEBRTC_CLIENT_SRC "${CMAKE_CURRENT_SOURCE_DIR}") +if(ADD_MUCLIBC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -muclibc") +endif() + message(STATUS "Kinesis Video WebRTC Client path is ${KINESIS_VIDEO_WEBRTC_CLIENT_SRC}") message(STATUS "dependencies install path is ${OPEN_SRC_INSTALL_PREFIX}") @@ -121,7 +125,7 @@ if(BUILD_DEPENDENCIES) set(OPENSSL_ROOT_DIR ${OPEN_SRC_INSTALL_PREFIX}) elseif(USE_MBEDTLS) set(BUILD_ARGS -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} - -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}) + "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -std=c99") build_dependency(mbedtls ${BUILD_ARGS}) endif() @@ -140,10 +144,14 @@ if(BUILD_DEPENDENCIES) -DBUILD_LIBSRTP_DESTINATION_PLATFORM=${BUILD_LIBSRTP_DESTINATION_PLATFORM} -DUSE_OPENSSL=${USE_OPENSSL} -DUSE_MBEDTLS=${USE_MBEDTLS} - ) + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}) + build_dependency(srtp ${BUILD_ARGS}) - build_dependency(usrsctp) + set(BUILD_ARGS + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}) + + build_dependency(usrsctp ${BUILD_ARGS}) if(BUILD_TEST) build_dependency(gtest) endif() @@ -218,9 +226,6 @@ link_directories(${OPEN_SRC_INSTALL_PREFIX}/lib) if("${CMAKE_C_COMPILER_ID}" MATCHES "GNU|Clang") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") - if(ADD_MUCLIBC) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -muclibc") - endif() if(CODE_COVERAGE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g -fprofile-arcs -ftest-coverage") From 36f123e554cd935f6addc375d90c1398a525a607 Mon Sep 17 00:00:00 2001 From: jdelapla Date: Thu, 20 Oct 2022 11:55:26 -0700 Subject: [PATCH 052/102] Fix file caching (#1575) * Fix file caching * Update test to count entries, remove unnecessary memcpy * UT uses MEMFREE --- src/source/Signaling/FileCache.c | 18 ++-- tst/SignalingApiFunctionalityTest.cpp | 124 ++++++++++++++++++++++++++ 2 files changed, 136 insertions(+), 6 deletions(-) diff --git a/src/source/Signaling/FileCache.c b/src/source/Signaling/FileCache.c index 9414ae4d7f..08b43dee56 100644 --- a/src/source/Signaling/FileCache.c +++ b/src/source/Signaling/FileCache.c @@ -172,7 +172,7 @@ STATUS signalingCacheSaveToFile(PSignalingFileCacheEntry pSignalingFileCacheEntr UINT32 entryCount = ARRAY_SIZE(entries), i, serializedCacheEntryLen; UINT64 fileSize = 0; PCHAR fileBuffer = NULL; - PSignalingFileCacheEntry pExistingCacheEntry = NULL; + BOOL newEntry = TRUE; CHAR serializedCacheEntry[MAX_SERIALIZED_SIGNALING_CACHE_ENTRY_LEN]; CHK(cacheFilePath != NULL && pSignalingFileCacheEntry != NULL, STATUS_NULL_ARG); @@ -199,20 +199,26 @@ STATUS signalingCacheSaveToFile(PSignalingFileCacheEntry pSignalingFileCacheEntr entryCount = 0; } - for (i = 0; pExistingCacheEntry == NULL && i < entryCount; ++i) { + for (i = 0; i < entryCount; ++i) { /* Assume channel name and region has been validated */ if (STRCMP(entries[i].channelName, pSignalingFileCacheEntry->channelName) == 0 && STRCMP(entries[i].region, pSignalingFileCacheEntry->region) == 0 && entries[i].role == pSignalingFileCacheEntry->role) { - pExistingCacheEntry = &entries[i]; + newEntry = FALSE; + break; } } /* at this point i is at most entryCount */ - CHK_WARN(entryCount < MAX_SIGNALING_CACHE_ENTRY_COUNT, STATUS_INVALID_OPERATION, - "Failed to store signaling cache because max entry count of %u reached", MAX_SIGNALING_CACHE_ENTRY_COUNT); + if (entryCount >= MAX_SIGNALING_CACHE_ENTRY_COUNT) { + DLOGW("Overwrote 32nd entry to store signaling cache because max entry count of %u reached", MAX_SIGNALING_CACHE_ENTRY_COUNT); + i = MAX_SIGNALING_CACHE_ENTRY_COUNT - 1; + newEntry = FALSE; + } entries[i] = *pSignalingFileCacheEntry; - entryCount++; + if (newEntry) { + entryCount++; + } for (i = 0; i < entryCount; ++i) { serializedCacheEntryLen = diff --git a/tst/SignalingApiFunctionalityTest.cpp b/tst/SignalingApiFunctionalityTest.cpp index c88e812e55..274bbe89ed 100644 --- a/tst/SignalingApiFunctionalityTest.cpp +++ b/tst/SignalingApiFunctionalityTest.cpp @@ -3397,6 +3397,130 @@ TEST_F(SignalingApiFunctionalityTest, fileCachingUpdateCache) EXPECT_EQ(STATUS_SUCCESS, signalingCacheSaveToFile(&testEntry, DEFAULT_CACHE_FILE_PATH)); } +TEST_F(SignalingApiFunctionalityTest, fileCachingUpdateMultiChannelCache) +{ + FREMOVE(DEFAULT_CACHE_FILE_PATH); + srand(GETTIME()); + + SignalingFileCacheEntry testEntry; + BOOL cacheFound = FALSE; + int additionalEntries = rand()%15 + 2; + char testWssEndpoint[MAX_SIGNALING_ENDPOINT_URI_LEN + 1] = {0}; + char testHttpsEndpoint[MAX_SIGNALING_ENDPOINT_URI_LEN + 1] = {0}; + char testRegion[MAX_REGION_NAME_LEN + 1] = {0}; + char testChannelArn[MAX_ARN_LEN + 1] = {0}; + char testChannel[MAX_CHANNEL_NAME_LEN + 1] = {0}; + int time = GETTIME() / HUNDREDS_OF_NANOS_IN_A_SECOND; + int append = 0; + int i = 0; + char * fileBuffer; + UINT64 fileSize; + UINT32 entryCount; + SignalingFileCacheEntry entries[MAX_SIGNALING_CACHE_ENTRY_COUNT]; + const int TEST_CHANNEL_COUNT = 5; + + for(i = 0; i < MAX_SIGNALING_CACHE_ENTRY_COUNT + additionalEntries; i++) { + testEntry.role = SIGNALING_CHANNEL_ROLE_TYPE_VIEWER; + MEMSET(testWssEndpoint, 0, MAX_SIGNALING_ENDPOINT_URI_LEN+1); + MEMSET(testHttpsEndpoint, 0, MAX_SIGNALING_ENDPOINT_URI_LEN+1); + MEMSET(testRegion, 0, MAX_REGION_NAME_LEN + 1); + MEMSET(testChannelArn, 0, MAX_ARN_LEN+1); + MEMSET(testChannel, 0, MAX_CHANNEL_NAME_LEN+1); + + append = rand()%TEST_CHANNEL_COUNT; + SPRINTF(testWssEndpoint, "%s%d", "testWssEndpoint", append); + SPRINTF(testHttpsEndpoint, "%s%d", "testHttpsEndpoint", append); + SPRINTF(testRegion, "%s%d", "testRegion", append); + SPRINTF(testChannelArn, "%s%d", "testChannelArn", append); + SPRINTF(testChannel, "%s%d", "testChannel", append); + + STRCPY(testEntry.wssEndpoint, testWssEndpoint); + STRCPY(testEntry.httpsEndpoint, testHttpsEndpoint); + STRCPY(testEntry.region, testRegion); + STRCPY(testEntry.channelArn, testChannelArn); + STRCPY(testEntry.channelName, testChannel); + testEntry.creationTsEpochSeconds = time + i; + EXPECT_EQ(STATUS_SUCCESS, signalingCacheSaveToFile(&testEntry, DEFAULT_CACHE_FILE_PATH)); + } + testEntry.creationTsEpochSeconds = 0; + EXPECT_EQ(STATUS_SUCCESS, signalingCacheLoadFromFile(testChannel, testRegion, SIGNALING_CHANNEL_ROLE_TYPE_VIEWER, &testEntry, &cacheFound, DEFAULT_CACHE_FILE_PATH)); + EXPECT_EQ(TRUE, cacheFound); + EXPECT_EQ(time + i - 1, testEntry.creationTsEpochSeconds); + EXPECT_EQ(0, STRCMP(testEntry.wssEndpoint, testWssEndpoint)); + EXPECT_EQ(0, STRCMP(testEntry.httpsEndpoint, testHttpsEndpoint)); + EXPECT_EQ(0, STRCMP(testEntry.region, testRegion)); + EXPECT_EQ(0, STRCMP(testEntry.channelArn, testChannelArn)); + EXPECT_EQ(0, STRCMP(testEntry.channelName, testChannel)); + + //Check size to ensure entries are properly overwriting each other + EXPECT_EQ(STATUS_SUCCESS, readFile(DEFAULT_CACHE_FILE_PATH, FALSE, NULL, &fileSize)); + + EXPECT_LT(0, fileSize); + /* +1 for null terminator */ + fileBuffer = (char*)MEMCALLOC(1, (fileSize + 1) * SIZEOF(CHAR)); + EXPECT_TRUE((fileBuffer != NULL)); + EXPECT_EQ(STATUS_SUCCESS, readFile(DEFAULT_CACHE_FILE_PATH, FALSE, (PBYTE) fileBuffer, &fileSize)); + EXPECT_EQ(STATUS_SUCCESS, deserializeSignalingCacheEntries(fileBuffer, fileSize, entries, &entryCount, DEFAULT_CACHE_FILE_PATH)); + EXPECT_LT(entryCount, TEST_CHANNEL_COUNT+1); + + MEMFREE(fileBuffer); + + FREMOVE(DEFAULT_CACHE_FILE_PATH); +} + +TEST_F(SignalingApiFunctionalityTest, fileCachingUpdateFullMultiChannelCache) +{ + FREMOVE(DEFAULT_CACHE_FILE_PATH); + srand(GETTIME()); + + SignalingFileCacheEntry testEntry; + BOOL cacheFound = FALSE; + int additionalEntries = rand()%15 + 2; + char testWssEndpoint[MAX_SIGNALING_ENDPOINT_URI_LEN + 1] = {0}; + char testHttpsEndpoint[MAX_SIGNALING_ENDPOINT_URI_LEN + 1] = {0}; + char testRegion[MAX_REGION_NAME_LEN + 1] = {0}; + char testChannelArn[MAX_ARN_LEN + 1] = {0}; + char testChannel[MAX_CHANNEL_NAME_LEN + 1] = {0}; + int time = GETTIME() / HUNDREDS_OF_NANOS_IN_A_SECOND; + int append = 0; + int i = 0; + + for(i = 0; i < MAX_SIGNALING_CACHE_ENTRY_COUNT + additionalEntries; i++) { + testEntry.role = SIGNALING_CHANNEL_ROLE_TYPE_VIEWER; + MEMSET(testWssEndpoint, 0, MAX_SIGNALING_ENDPOINT_URI_LEN+1); + MEMSET(testHttpsEndpoint, 0, MAX_SIGNALING_ENDPOINT_URI_LEN+1); + MEMSET(testRegion, 0, MAX_REGION_NAME_LEN + 1); + MEMSET(testChannelArn, 0, MAX_ARN_LEN+1); + MEMSET(testChannel, 0, MAX_CHANNEL_NAME_LEN+1); + + append = i; + SPRINTF(testWssEndpoint, "%s%d", "testWssEndpoint", append); + SPRINTF(testHttpsEndpoint, "%s%d", "testHttpsEndpoint", append); + SPRINTF(testRegion, "%s%d", "testRegion", append); + SPRINTF(testChannelArn, "%s%d", "testChannelArn", append); + SPRINTF(testChannel, "%s%d", "testChannel", append); + + STRCPY(testEntry.wssEndpoint, testWssEndpoint); + STRCPY(testEntry.httpsEndpoint, testHttpsEndpoint); + STRCPY(testEntry.region, testRegion); + STRCPY(testEntry.channelArn, testChannelArn); + STRCPY(testEntry.channelName, testChannel); + testEntry.creationTsEpochSeconds = time + i; + EXPECT_EQ(STATUS_SUCCESS, signalingCacheSaveToFile(&testEntry, DEFAULT_CACHE_FILE_PATH)); + } + testEntry.creationTsEpochSeconds = 0; + EXPECT_EQ(STATUS_SUCCESS, signalingCacheLoadFromFile(testChannel, testRegion, SIGNALING_CHANNEL_ROLE_TYPE_VIEWER, &testEntry, &cacheFound, DEFAULT_CACHE_FILE_PATH)); + EXPECT_EQ(TRUE, cacheFound); + EXPECT_EQ(time + i - 1, testEntry.creationTsEpochSeconds); + EXPECT_EQ(0, STRCMP(testEntry.wssEndpoint, testWssEndpoint)); + EXPECT_EQ(0, STRCMP(testEntry.httpsEndpoint, testHttpsEndpoint)); + EXPECT_EQ(0, STRCMP(testEntry.region, testRegion)); + EXPECT_EQ(0, STRCMP(testEntry.channelArn, testChannelArn)); + EXPECT_EQ(0, STRCMP(testEntry.channelName, testChannel)); + + FREMOVE(DEFAULT_CACHE_FILE_PATH); +} + TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer) { if (!mAccessKeyIdSet) { From f1c3f878ba4cfb4fc2d4d01d8b5e6c94395714d2 Mon Sep 17 00:00:00 2001 From: Thomas Ruf Date: Mon, 24 Oct 2022 03:25:17 +0200 Subject: [PATCH 053/102] Fix deadlock getIceCandidatePairStatsCallback (#1561) * sample: fix possible timerQueue deadlock when freeSampleStreamingSession * minor change (formatting) --- samples/Common.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index dcc7f50061..62435f190f 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -864,9 +864,12 @@ STATUS getIceCandidatePairStatsCallback(UINT32 timerId, UINT64 currentTime, UINT pSampleConfiguration->rtcIceCandidatePairMetrics.requestedTypeOfStats = RTC_STATS_TYPE_CANDIDATE_PAIR; - // We need to execute this under the object lock due to race conditions that it could pose - MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); - locked = TRUE; + // Use MUTEX_TRYLOCK to avoid possible dead lock when canceling timerQueue + if (!MUTEX_TRYLOCK(pSampleConfiguration->sampleConfigurationObjLock)) { + return retStatus; + } else { + locked = TRUE; + } for (i = 0; i < pSampleConfiguration->streamingSessionCount; ++i) { if (STATUS_SUCCEEDED(rtcPeerConnectionGetMetrics(pSampleConfiguration->sampleStreamingSessionList[i]->pPeerConnection, NULL, From acaef8801d91218deb7b0998c31abf89bd0891e8 Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Thu, 19 Jan 2023 09:22:13 -0800 Subject: [PATCH 054/102] Fix missing SDP m-line problem (#1458) * use fake transceiver for missing m-line * use hashtable to track previously seen transceivers * fix failing tests with updates to seenTransceivers hashtable * use hashtables for unknown codec rtpmap and payloadtype * fix firstCodec value in case of only a single codec in m-line * rename variables * clang build * fix mac-gcc build * add test * add test for missingAudioTransceiver * add comments * add comments * remove unused variable to fix mac buils --- samples/Common.c | 3 + .../kinesis/video/webrtcclient/Include.h | 1 + src/source/PeerConnection/PeerConnection.c | 12 + src/source/PeerConnection/PeerConnection.h | 3 + .../PeerConnection/SessionDescription.c | 317 +++++++++++++----- .../PeerConnection/SessionDescription.h | 14 +- tst/SdpApiTest.cpp | 304 +++++++++++++++++ 7 files changed, 569 insertions(+), 85 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index 62435f190f..c7b32b09ad 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -460,6 +460,9 @@ STATUS createSampleStreamingSession(PSampleConfiguration pSampleConfiguration, P } ATOMIC_STORE_BOOL(&pSampleStreamingSession->peerIdReceived, TRUE); + pSampleStreamingSession->pAudioRtcRtpTransceiver = NULL; + pSampleStreamingSession->pVideoRtcRtpTransceiver = NULL; + pSampleStreamingSession->pSampleConfiguration = pSampleConfiguration; pSampleStreamingSession->rtcMetricsHistory.prevTs = GETTIME(); // if we're the viewer, we control the trickle ice mode diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index bf91f41c48..1ff19af377 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -727,6 +727,7 @@ typedef enum { RTC_CODEC_VP8 = 3, //!< VP8 video codec. RTC_CODEC_MULAW = 4, //!< MULAW audio codec RTC_CODEC_ALAW = 5, //!< ALAW audio codec + RTC_CODEC_UNKNOWN = 6, } RTC_CODEC; /** diff --git a/src/source/PeerConnection/PeerConnection.c b/src/source/PeerConnection/PeerConnection.c index 3e4de6823a..d5aa8cd555 100644 --- a/src/source/PeerConnection/PeerConnection.c +++ b/src/source/PeerConnection/PeerConnection.c @@ -700,6 +700,8 @@ STATUS createPeerConnection(PRtcConfiguration pConfiguration, PRtcPeerConnection CHK_STATUS(hashTableCreateWithParams(CODEC_HASH_TABLE_BUCKET_COUNT, CODEC_HASH_TABLE_BUCKET_LENGTH, &pKvsPeerConnection->pDataChannels)); CHK_STATUS(hashTableCreateWithParams(RTX_HASH_TABLE_BUCKET_COUNT, RTX_HASH_TABLE_BUCKET_LENGTH, &pKvsPeerConnection->pRtxTable)); CHK_STATUS(doubleListCreate(&(pKvsPeerConnection->pTransceivers))); + CHK_STATUS(doubleListCreate(&(pKvsPeerConnection->pFakeTransceivers))); + CHK_STATUS(doubleListCreate(&(pKvsPeerConnection->pAnswerTransceivers))); pKvsPeerConnection->pSrtpSessionLock = MUTEX_CREATE(TRUE); pKvsPeerConnection->peerConnectionObjLock = MUTEX_CREATE(FALSE); @@ -786,6 +788,14 @@ STATUS freePeerConnection(PRtcPeerConnection* ppPeerConnection) pCurNode = pCurNode->pNext; } + CHK_LOG_ERR(doubleListGetHeadNode(pKvsPeerConnection->pFakeTransceivers, &pCurNode)); + while (pCurNode != NULL) { + CHK_LOG_ERR(doubleListGetNodeData(pCurNode, &item)); + CHK_LOG_ERR(freeKvsRtpTransceiver((PKvsRtpTransceiver*) &item)); + + pCurNode = pCurNode->pNext; + } + // Free DataChannels CHK_LOG_ERR(hashTableIterateEntries(pKvsPeerConnection->pDataChannels, 0, freeHashEntry)); CHK_LOG_ERR(hashTableFree(pKvsPeerConnection->pDataChannels)); @@ -794,6 +804,8 @@ STATUS freePeerConnection(PRtcPeerConnection* ppPeerConnection) CHK_LOG_ERR(freeSrtpSession(&pKvsPeerConnection->pSrtpSession)); CHK_LOG_ERR(freeDtlsSession(&pKvsPeerConnection->pDtlsSession)); CHK_LOG_ERR(doubleListFree(pKvsPeerConnection->pTransceivers)); + CHK_LOG_ERR(doubleListFree(pKvsPeerConnection->pFakeTransceivers)); + CHK_LOG_ERR(doubleListFree(pKvsPeerConnection->pAnswerTransceivers)); CHK_LOG_ERR(hashTableFree(pKvsPeerConnection->pCodecTable)); CHK_LOG_ERR(hashTableFree(pKvsPeerConnection->pRtxTable)); if (IS_VALID_MUTEX_VALUE(pKvsPeerConnection->pSrtpSessionLock)) { diff --git a/src/source/PeerConnection/PeerConnection.h b/src/source/PeerConnection/PeerConnection.h index cc48b5b7ef..238cc96c2f 100644 --- a/src/source/PeerConnection/PeerConnection.h +++ b/src/source/PeerConnection/PeerConnection.h @@ -77,6 +77,9 @@ typedef struct { SessionDescription remoteSessionDescription; PDoubleList pTransceivers; + PDoubleList pFakeTransceivers; + PDoubleList pAnswerTransceivers; + BOOL sctpIsEnabled; CHAR localIceUfrag[LOCAL_ICE_UFRAG_LEN + 1]; diff --git a/src/source/PeerConnection/SessionDescription.c b/src/source/PeerConnection/SessionDescription.c index bd9f50ec4e..a3fedc2cc4 100644 --- a/src/source/PeerConnection/SessionDescription.c +++ b/src/source/PeerConnection/SessionDescription.c @@ -387,7 +387,8 @@ UINT64 getH264FmtpScore(PCHAR fmtp) // Populate a single media section from a PKvsRtpTransceiver STATUS populateSingleMediaSection(PKvsPeerConnection pKvsPeerConnection, PKvsRtpTransceiver pKvsRtpTransceiver, PSdpMediaDescription pSdpMediaDescription, PSessionDescription pRemoteSessionDescription, - PCHAR pCertificateFingerprint, UINT32 mediaSectionId, PCHAR pDtlsRole) + PCHAR pCertificateFingerprint, UINT32 mediaSectionId, PCHAR pDtlsRole, PHashTable pUnknownCodecPayloadTypesTable, + PHashTable pUnknownCodecRtpmapTable, UINT32 unknownCodecHashTableKey) { ENTERS(); STATUS retStatus = STATUS_SUCCESS; @@ -397,18 +398,23 @@ STATUS populateSingleMediaSection(PKvsPeerConnection pKvsPeerConnection, PKvsRtp UINT32 i, remoteAttributeCount, attributeCount = 0; PRtcMediaStreamTrack pRtcMediaStreamTrack = &(pKvsRtpTransceiver->sender.track); PSdpMediaDescription pSdpMediaDescriptionRemote; - PCHAR currentFmtp = NULL; + PCHAR currentFmtp = NULL, rtpMapValue = NULL; - CHK_STATUS(hashTableGet(pKvsPeerConnection->pCodecTable, pRtcMediaStreamTrack->codec, &payloadType)); - currentFmtp = fmtpForPayloadType(payloadType, &(pKvsPeerConnection->remoteSessionDescription)); + if (pRtcMediaStreamTrack->codec == RTC_CODEC_UNKNOWN && pUnknownCodecPayloadTypesTable != NULL) { + CHK_STATUS(hashTableGet(pUnknownCodecPayloadTypesTable, unknownCodecHashTableKey, &payloadType)); + } else { + CHK_STATUS(hashTableGet(pKvsPeerConnection->pCodecTable, pRtcMediaStreamTrack->codec, &payloadType)); + currentFmtp = fmtpForPayloadType(payloadType, &(pKvsPeerConnection->remoteSessionDescription)); + } - if (pRtcMediaStreamTrack->codec == RTC_CODEC_H264_PROFILE_42E01F_LEVEL_ASYMMETRY_ALLOWED_PACKETIZATION_MODE || - pRtcMediaStreamTrack->codec == RTC_CODEC_VP8) { + if (pRtcMediaStreamTrack->kind == MEDIA_STREAM_TRACK_KIND_VIDEO) { if (pRtcMediaStreamTrack->codec == RTC_CODEC_H264_PROFILE_42E01F_LEVEL_ASYMMETRY_ALLOWED_PACKETIZATION_MODE) { retStatus = hashTableGet(pKvsPeerConnection->pRtxTable, RTC_RTX_CODEC_H264_PROFILE_42E01F_LEVEL_ASYMMETRY_ALLOWED_PACKETIZATION_MODE, &rtxPayloadType); - } else { + } else if (pRtcMediaStreamTrack->codec == RTC_CODEC_VP8) { retStatus = hashTableGet(pKvsPeerConnection->pRtxTable, RTC_RTX_CODEC_VP8, &rtxPayloadType); + } else { + retStatus = STATUS_HASH_KEY_NOT_PRESENT; } CHK(retStatus == STATUS_SUCCESS || retStatus == STATUS_HASH_KEY_NOT_PRESENT, retStatus); containRtx = (retStatus == STATUS_SUCCESS); @@ -418,8 +424,7 @@ STATUS populateSingleMediaSection(PKvsPeerConnection pKvsPeerConnection, PKvsRtp } else { SPRINTF(pSdpMediaDescription->mediaName, "video 9 UDP/TLS/RTP/SAVPF %" PRId64, payloadType); } - } else if (pRtcMediaStreamTrack->codec == RTC_CODEC_OPUS || pRtcMediaStreamTrack->codec == RTC_CODEC_MULAW || - pRtcMediaStreamTrack->codec == RTC_CODEC_ALAW) { + } else if (pRtcMediaStreamTrack->kind == MEDIA_STREAM_TRACK_KIND_AUDIO) { SPRINTF(pSdpMediaDescription->mediaName, "audio 9 UDP/TLS/RTP/SAVPF %" PRId64, payloadType); } @@ -534,6 +539,11 @@ STATUS populateSingleMediaSection(PKvsPeerConnection pKvsPeerConnection, PKvsRtp pSdpMediaDescriptionRemote = &pRemoteSessionDescription->mediaDescriptions[mediaSectionId]; remoteAttributeCount = pSdpMediaDescriptionRemote->mediaAttributesCount; + // in case of a missing m-line, we respond with the same m-line but direction set to inactive + if (pKvsRtpTransceiver->transceiver.direction == RTC_RTP_TRANSCEIVER_DIRECTION_INACTIVE) { + STRCPY(pSdpMediaDescription->sdpAttributes[attributeCount].attributeName, "inactive"); + directionFound = TRUE; + } for (i = 0; i < remoteAttributeCount && directionFound == FALSE; i++) { if (STRCMP(pSdpMediaDescriptionRemote->sdpAttributes[i].attributeName, "sendrecv") == 0) { STRCPY(pSdpMediaDescription->sdpAttributes[attributeCount].attributeName, "sendrecv"); @@ -616,6 +626,11 @@ STATUS populateSingleMediaSection(PKvsPeerConnection pKvsPeerConnection, PKvsRtp STRCPY(pSdpMediaDescription->sdpAttributes[attributeCount].attributeName, "rtpmap"); SPRINTF(pSdpMediaDescription->sdpAttributes[attributeCount].attributeValue, "%" PRId64 " " ALAW_VALUE, payloadType); attributeCount++; + } else if (pRtcMediaStreamTrack->codec == RTC_CODEC_UNKNOWN) { + CHK_STATUS(hashTableGet(pUnknownCodecRtpmapTable, unknownCodecHashTableKey, (PUINT64) &rtpMapValue)); + STRCPY(pSdpMediaDescription->sdpAttributes[attributeCount].attributeName, "rtpmap"); + SPRINTF(pSdpMediaDescription->sdpAttributes[attributeCount].attributeValue, "%" PRId64 " %s", payloadType, rtpMapValue); + attributeCount++; } STRCPY(pSdpMediaDescription->sdpAttributes[attributeCount].attributeName, "rtcp-fb"); @@ -739,33 +754,71 @@ STATUS populateSessionDescriptionMedia(PKvsPeerConnection pKvsPeerConnection, PS UINT64 data; PKvsRtpTransceiver pKvsRtpTransceiver; PCHAR pDtlsRole = NULL; + PHashTable pUnknownCodecPayloadTypesTable = NULL, pUnknownCodecRtpmapTable = NULL; + UINT32 unknownCodecHashTableKey = 0; CHK_STATUS(dtlsSessionGetLocalCertificateFingerprint(pKvsPeerConnection->pDtlsSession, certificateFingerprint, CERTIFICATE_FINGERPRINT_LENGTH)); if (pKvsPeerConnection->isOffer) { pDtlsRole = DTLS_ROLE_ACTPASS; - } else { - pDtlsRole = DTLS_ROLE_ACTIVE; - CHK_STATUS(reorderTransceiverByRemoteDescription(pKvsPeerConnection, pRemoteSessionDescription)); - } - CHK_STATUS(doubleListGetHeadNode(pKvsPeerConnection->pTransceivers, &pCurNode)); - while (pCurNode != NULL) { - CHK_STATUS(doubleListGetNodeData(pCurNode, &data)); - pCurNode = pCurNode->pNext; - pKvsRtpTransceiver = (PKvsRtpTransceiver) data; - if (pKvsRtpTransceiver != NULL) { - CHK(pLocalSessionDescription->mediaCount < MAX_SDP_SESSION_MEDIA_COUNT, STATUS_SESSION_DESCRIPTION_MAX_MEDIA_COUNT); + CHK_STATUS(doubleListGetHeadNode(pKvsPeerConnection->pTransceivers, &pCurNode)); + while (pCurNode != NULL) { + CHK_STATUS(doubleListGetNodeData(pCurNode, &data)); + pCurNode = pCurNode->pNext; + pKvsRtpTransceiver = (PKvsRtpTransceiver) data; + if (pKvsRtpTransceiver != NULL) { + CHK(pLocalSessionDescription->mediaCount < MAX_SDP_SESSION_MEDIA_COUNT, STATUS_SESSION_DESCRIPTION_MAX_MEDIA_COUNT); - // If generating answer, need to check if Local Description is present in remote -- if not, we don't need to create a local description - // for it or else our Answer will have an extra m-line, for offer the local is the offer itself, don't care about remote - if (pKvsPeerConnection->isOffer || isPresentInRemote(pKvsRtpTransceiver, pRemoteSessionDescription)) { + // If generating answer, need to check if Local Description is present in remote -- if not, we don't need to create a local + // description for it or else our Answer will have an extra m-line, for offer the local is the offer itself, don't care about remote CHK_STATUS(populateSingleMediaSection( pKvsPeerConnection, pKvsRtpTransceiver, &(pLocalSessionDescription->mediaDescriptions[pLocalSessionDescription->mediaCount]), - pRemoteSessionDescription, certificateFingerprint, pLocalSessionDescription->mediaCount, pDtlsRole)); + pRemoteSessionDescription, certificateFingerprint, pLocalSessionDescription->mediaCount, pDtlsRole, NULL, NULL, 0)); pLocalSessionDescription->mediaCount++; } } + } else { + pDtlsRole = DTLS_ROLE_ACTIVE; + CHK_STATUS(hashTableCreate(&pUnknownCodecPayloadTypesTable)); + CHK_STATUS(hashTableCreate(&pUnknownCodecRtpmapTable)); + + // this function creates a list of transceivers corresponding to each m-line and adds it answerTransceivers + // if an m-line does not have a corresponding transceiver created by the user, we create a fake transceiver + CHK_STATUS(findTransceiversByRemoteDescription(pKvsPeerConnection, pRemoteSessionDescription, pUnknownCodecPayloadTypesTable, + pUnknownCodecRtpmapTable)); + + // pAnswerTransceivers contains transceivers created by the user as well as fake transceivers + CHK_STATUS(doubleListGetHeadNode(pKvsPeerConnection->pAnswerTransceivers, &pCurNode)); + while (pCurNode != NULL) { + CHK_STATUS(doubleListGetNodeData(pCurNode, &data)); + pCurNode = pCurNode->pNext; + pKvsRtpTransceiver = (PKvsRtpTransceiver) data; + if (pKvsRtpTransceiver != NULL) { + CHK(pLocalSessionDescription->mediaCount < MAX_SDP_SESSION_MEDIA_COUNT, STATUS_SESSION_DESCRIPTION_MAX_MEDIA_COUNT); + if (isPresentInRemote(pKvsRtpTransceiver, pRemoteSessionDescription)) { + if (pKvsRtpTransceiver->sender.track.codec == RTC_CODEC_UNKNOWN) { + CHK_STATUS(populateSingleMediaSection(pKvsPeerConnection, pKvsRtpTransceiver, + &(pLocalSessionDescription->mediaDescriptions[pLocalSessionDescription->mediaCount]), + pRemoteSessionDescription, certificateFingerprint, pLocalSessionDescription->mediaCount, + pDtlsRole, pUnknownCodecPayloadTypesTable, pUnknownCodecRtpmapTable, + unknownCodecHashTableKey)); + unknownCodecHashTableKey++; + // unknownCodecHashTableKey is the key for pUnknownCodecRtpmapTable and pUnknownCodecPayloadTypesTable + // a value for the same key in both hashtables corresponds to rtpmap and payloadtype for the same m-line / unknown codec + + } else { + // in case of a user-added transceiver, the pUnknownCodecPayloadTypesTable, pUnknownCodecRtpmapTable are not populated by + // the function findTransceiversByRemoteDescription and are NULL + CHK_STATUS(populateSingleMediaSection(pKvsPeerConnection, pKvsRtpTransceiver, + &(pLocalSessionDescription->mediaDescriptions[pLocalSessionDescription->mediaCount]), + pRemoteSessionDescription, certificateFingerprint, pLocalSessionDescription->mediaCount, + pDtlsRole, NULL, NULL, 0)); + } + pLocalSessionDescription->mediaCount++; + } + } + } } if (pKvsPeerConnection->sctpIsEnabled) { @@ -778,6 +831,13 @@ STATUS populateSessionDescriptionMedia(PKvsPeerConnection pKvsPeerConnection, PS CleanUp: + if (pUnknownCodecPayloadTypesTable != NULL) { + CHK_STATUS(hashTableFree(pUnknownCodecPayloadTypesTable)); + } + if (pUnknownCodecRtpmapTable != NULL) { + CHK_STATUS(hashTableFree(pUnknownCodecRtpmapTable)); + } + LEAVES(); return retStatus; } @@ -860,119 +920,218 @@ STATUS populateSessionDescription(PKvsPeerConnection pKvsPeerConnection, PSessio return retStatus; } -// primarily meant to be used by reorderTransceiverByRemoteDescription -// Find a Transceiver with n codec, and then copy it to the end of the transceivers -// this allows us to re-order by the order the remote dictates -STATUS copyTransceiverWithCodec(PKvsPeerConnection pKvsPeerConnection, RTC_CODEC rtcCodec, PBOOL pDidFindCodec) +// primarily meant to be used by findTransceiversByRemoteDescription. This function checks if a codec is present in the user-created transceivers +STATUS findCodecInTransceivers(PKvsPeerConnection pKvsPeerConnection, RTC_CODEC rtcCodec, PBOOL pDidFindCodec, PHashTable pSeenTransceivers) { STATUS retStatus = STATUS_SUCCESS; PDoubleListNode pCurNode = NULL; - PKvsRtpTransceiver pTargetKvsRtpTransceiver = NULL, pKvsRtpTransceiver; + PKvsRtpTransceiver pKvsRtpTransceiver; UINT64 data; - - CHK(pKvsPeerConnection != NULL && pDidFindCodec != NULL, STATUS_NULL_ARG); - - *pDidFindCodec = FALSE; + BOOL contains = FALSE; CHK_STATUS(doubleListGetHeadNode(pKvsPeerConnection->pTransceivers, &pCurNode)); while (pCurNode != NULL) { CHK_STATUS(doubleListGetNodeData(pCurNode, &data)); pKvsRtpTransceiver = (PKvsRtpTransceiver) data; - if (pKvsRtpTransceiver != NULL && pKvsRtpTransceiver->sender.track.codec == rtcCodec) { - pTargetKvsRtpTransceiver = pKvsRtpTransceiver; - doubleListDeleteNode(pKvsPeerConnection->pTransceivers, pCurNode); + // if we have already seen / added the transceiver to the answerTransceivers list, we do not want to add it again. This is to ensure that + // we have one transceiver per m-line. In case of two video m-lines with the same codec, we need two different transceivers + CHK_STATUS(hashTableContains(pSeenTransceivers, (UINT64) pKvsRtpTransceiver, &contains)); + if (pKvsRtpTransceiver != NULL && pKvsRtpTransceiver->sender.track.codec == rtcCodec && contains == FALSE) { + CHK_STATUS(doubleListInsertItemTail(pKvsPeerConnection->pAnswerTransceivers, (UINT64) pKvsRtpTransceiver)); + CHK_STATUS(hashTablePut(pSeenTransceivers, (UINT64) pKvsRtpTransceiver, 0)); + *pDidFindCodec = TRUE; break; } pCurNode = pCurNode->pNext; } - if (pTargetKvsRtpTransceiver != NULL) { - CHK_STATUS(doubleListInsertItemTail(pKvsPeerConnection->pTransceivers, (UINT64) pTargetKvsRtpTransceiver)); - *pDidFindCodec = TRUE; - } CleanUp: return retStatus; } -STATUS reorderTransceiverByRemoteDescription(PKvsPeerConnection pKvsPeerConnection, PSessionDescription pRemoteSessionDescription) +// primarily used for creating a list of transceivers corresponding to each media m-line to respond to an offer with an answer +// This function generates the pAnswerTransceivers list which contains transceivers corresponding to each m-line in correct order +// To generate this list, it traverses over each m-line, first checks if it has a user-created transceiver present using findCodecInTransceivers +// if found, it adds that transceiver to pAnswerTransceivers +// if not, it creates a fake transceiver and adds it to pAnswerTransceivers +// In case a fake transceiver is created, the codec corresponding to that is RTC_CODEC_UNKNOWN. +// This function also obtains the payload type and rtpmap value for each unknown codec and adds it +// to pUnknownCodecPayloadTypesTable and pUnknownCodecRtpmapTable respectively. The keys for both hashtables are integers; +// a key in both hashtables corresponds to the payloadtype and rtpmap value for the same unknown codec, +// meaning, the same key can be used to retrieve a value for an unknown codec from both hashtables +STATUS findTransceiversByRemoteDescription(PKvsPeerConnection pKvsPeerConnection, PSessionDescription pRemoteSessionDescription, + PHashTable pUnknownCodecPayloadTypesTable, PHashTable pUnknownCodecRtpmapTable) { ENTERS(); STATUS retStatus = STATUS_SUCCESS; - UINT32 currentMedia, currentAttribute, transceiverCount = 0, tokenLen; + UINT32 currentMedia, currentAttribute, tokenLen = 0, codec = 0, count = 0, unknownCodecCounter = 0; PSdpMediaDescription pMediaDescription = NULL; - PCHAR attributeValue, end; - BOOL supportCodec, foundMediaSectionWithCodec; + PCHAR attributeValue, end, codecs = NULL; + PCHAR rtpMapValue = NULL; + CHAR firstCodec[MAX_PAYLOAD_TYPE_LENGTH]; + BOOL supportCodec, foundMediaSectionWithCodec, containsPayloadType = FALSE, containsRtpMap = FALSE; + PHashTable pSeenTransceivers; RTC_CODEC rtcCodec; + MEDIA_STREAM_TRACK_KIND streamKind; + PKvsRtpTransceiver pKvsRtpFakeTransceiver = NULL; + PRtcMediaStreamTrack pRtcMediaStreamTrack; + RtcMediaStreamTrack track; - // change the order of pKvsPeerConnection->pTransceivers to have the same codec order in pRemoteSessionDescription - CHK_STATUS(doubleListGetNodeCount(pKvsPeerConnection->pTransceivers, &transceiverCount)); + CHK_STATUS(hashTableCreate(&pSeenTransceivers)); // to be used by findCodecInTransceivers + // sample m-lines + // m=audio 9 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 106 105 13 110 112 113 126 + // m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 108 109 124 119 123 117 35 36 114 115 116 62 118 + // this loop iterates over all the m-lines for (currentMedia = 0; currentMedia < pRemoteSessionDescription->mediaCount; currentMedia++) { pMediaDescription = &(pRemoteSessionDescription->mediaDescriptions[currentMedia]); foundMediaSectionWithCodec = FALSE; + count = 0; + MEMSET(firstCodec, 0x00, MAX_PAYLOAD_TYPE_LENGTH); // Scan the media section name for any codecs we support + // sample attributeValue=audio 9 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 106 105 13 110 112 113 126 attributeValue = pMediaDescription->mediaName; + if ((end = STRCHR(attributeValue, ' ')) != NULL) { + tokenLen = (end - attributeValue); + } else { + tokenLen = STRLEN(attributeValue); + } + + if (STRNCMP(MEDIA_SECTION_AUDIO_VALUE, attributeValue, tokenLen) == 0) { + streamKind = MEDIA_STREAM_TRACK_KIND_AUDIO; + } else if (STRNCMP(MEDIA_SECTION_VIDEO_VALUE, attributeValue, tokenLen) == 0) { + streamKind = MEDIA_STREAM_TRACK_KIND_VIDEO; + } else { + continue; // ignore non-media m-lines + } + do { + count++; if ((end = STRCHR(attributeValue, ' ')) != NULL) { tokenLen = (end - attributeValue); } else { tokenLen = STRLEN(attributeValue); } - - if (STRNCMP(DEFAULT_PAYLOAD_MULAW_STR, attributeValue, tokenLen) == 0) { - supportCodec = TRUE; - rtcCodec = RTC_CODEC_MULAW; - } else if (STRNCMP(DEFAULT_PAYLOAD_ALAW_STR, attributeValue, tokenLen) == 0) { - supportCodec = TRUE; - rtcCodec = RTC_CODEC_ALAW; - } else { - supportCodec = FALSE; + if (count == 4) { + codecs = attributeValue; // codecs = 111 63 103 104 9 0 8 106 105 13 110 112 113 126 } + if (count > 3) { // look for codec values from payload types (111 63 103 104 9 0 8 106 105 13 110 112 113 126) + if (STRNCMP(DEFAULT_PAYLOAD_MULAW_STR, attributeValue, tokenLen) == 0) { + supportCodec = TRUE; + rtcCodec = RTC_CODEC_MULAW; + } else if (STRNCMP(DEFAULT_PAYLOAD_ALAW_STR, attributeValue, tokenLen) == 0) { + supportCodec = TRUE; + rtcCodec = RTC_CODEC_ALAW; + } else { + supportCodec = FALSE; + } - // find transceiver with rtcCodec and duplicate it at tail - if (supportCodec) { - CHK_STATUS(copyTransceiverWithCodec(pKvsPeerConnection, rtcCodec, &foundMediaSectionWithCodec)); + // if a supported codec is found, check if a user has created a transceiver for that + if (supportCodec) { + CHK_STATUS(findCodecInTransceivers(pKvsPeerConnection, rtcCodec, &foundMediaSectionWithCodec, pSeenTransceivers)); + } } if (end != NULL) { attributeValue = end + 1; } } while (end != NULL && !foundMediaSectionWithCodec); - // Scan the media section attributes for codecs we support + // get the first payload type from codecs in case we need to use it to generate a fake transceiver to respond to an m-line + // if we don't have a user-created one corresponding to an m-line + // we can respond to an m-line by including any one codec the offer had + // e.g: codecs = 111 63 103 104 9 0 8 106 105 13 110 112 113 126 + // firstCodec = 111 + if ((end = STRCHR(codecs, ' ')) != NULL) { + tokenLen = (end - codecs); + } else { + tokenLen = STRLEN(codecs); + } + STRNCPY(firstCodec, codecs, tokenLen); + + // in case a supported codec was not found from the payload types, check the rtpmaps in the a-lines for that particular m-line for (currentAttribute = 0; currentAttribute < pMediaDescription->mediaAttributesCount && !foundMediaSectionWithCodec; currentAttribute++) { attributeValue = pMediaDescription->sdpAttributes[currentAttribute].attributeValue; + rtcCodec = RTC_CODEC_UNKNOWN; + + // check for supported codec in rtpmap values only if an a-line contains the keyword "rtpmap" to save string comparisons + if (STRNCMP(RTPMAP_VALUE, pMediaDescription->sdpAttributes[currentAttribute].attributeName, 6) == 0) { + if (STRSTR(attributeValue, H264_VALUE) != NULL) { + supportCodec = TRUE; + rtcCodec = RTC_CODEC_H264_PROFILE_42E01F_LEVEL_ASYMMETRY_ALLOWED_PACKETIZATION_MODE; + } else if (STRSTR(attributeValue, OPUS_VALUE) != NULL) { + supportCodec = TRUE; + rtcCodec = RTC_CODEC_OPUS; + } else if (STRSTR(attributeValue, MULAW_VALUE) != NULL) { + supportCodec = TRUE; + rtcCodec = RTC_CODEC_MULAW; + } else if (STRSTR(attributeValue, ALAW_VALUE) != NULL) { + supportCodec = TRUE; + rtcCodec = RTC_CODEC_ALAW; + } else if (STRSTR(attributeValue, VP8_VALUE) != NULL) { + supportCodec = TRUE; + rtcCodec = RTC_CODEC_VP8; + } else { + supportCodec = FALSE; + } - if (STRSTR(attributeValue, H264_VALUE) != NULL) { - supportCodec = TRUE; - rtcCodec = RTC_CODEC_H264_PROFILE_42E01F_LEVEL_ASYMMETRY_ALLOWED_PACKETIZATION_MODE; - } else if (STRSTR(attributeValue, OPUS_VALUE) != NULL) { - supportCodec = TRUE; - rtcCodec = RTC_CODEC_OPUS; - } else if (STRSTR(attributeValue, MULAW_VALUE) != NULL) { - supportCodec = TRUE; - rtcCodec = RTC_CODEC_MULAW; - } else if (STRSTR(attributeValue, ALAW_VALUE) != NULL) { - supportCodec = TRUE; - rtcCodec = RTC_CODEC_ALAW; - } else if (STRSTR(attributeValue, VP8_VALUE) != NULL) { - supportCodec = TRUE; - rtcCodec = RTC_CODEC_VP8; - } else { - supportCodec = FALSE; + // if a supported codec is found, check if a user has created a transceiver for that + if (supportCodec) { + CHK_STATUS(findCodecInTransceivers(pKvsPeerConnection, rtcCodec, &foundMediaSectionWithCodec, pSeenTransceivers)); + } + + // if the m-line / codec is not supported or the user has not created a transceiver corresponding to it + // find the rtpmap value for the firstcodec that we saved previously + // e.g a-line: a=rtpmap:111 opus/48000/2 + // attributeValue = 111 opus/48000/2 + // firstCodec = 111 + // rtpMapValue = opus/48000/2 + // tokenLen = 3 (still contains length of the firstCodec) + if (foundMediaSectionWithCodec == FALSE) { + if ((end = STRCHR(attributeValue, ' ')) != NULL) + if (STRNCMP(attributeValue, firstCodec, tokenLen) == 0) { + rtpMapValue = end + 1; + } + } } + } - // find transceiver with rtcCodec and duplicate it at tail - if (supportCodec) { - CHK_STATUS(copyTransceiverWithCodec(pKvsPeerConnection, rtcCodec, &foundMediaSectionWithCodec)); + // if we have not found a transceiver for an m-line or if the codec is unsupported, got to this section to generate a fake transceiver + if (!foundMediaSectionWithCodec && (streamKind == MEDIA_STREAM_TRACK_KIND_AUDIO || streamKind == MEDIA_STREAM_TRACK_KIND_VIDEO)) { + MEMSET(&track, 0x00, SIZEOF(RtcMediaStreamTrack)); + track.kind = streamKind; + track.codec = RTC_CODEC_UNKNOWN; + STRCPY(track.streamId, "fakeStream"); + STRCPY(track.trackId, "fakeTrack"); + pRtcMediaStreamTrack = &track; + CHK_STATUS(createKvsRtpTransceiver(RTC_RTP_TRANSCEIVER_DIRECTION_INACTIVE, pKvsPeerConnection, (UINT32) RAND(), (UINT32) RAND(), + pRtcMediaStreamTrack, NULL, RTC_CODEC_UNKNOWN, &pKvsRtpFakeTransceiver)); + + // add the new transceiver to a list of fake transceivers to keep a track of them + // add the same to the pAnswerTransceivers since it will be needed later to serialize + CHK_STATUS(doubleListInsertItemTail(pKvsPeerConnection->pFakeTransceivers, (UINT64) pKvsRtpFakeTransceiver)); + CHK_STATUS(doubleListInsertItemTail(pKvsPeerConnection->pAnswerTransceivers, (UINT64) pKvsRtpFakeTransceiver)); + + CHK_STATUS(STRTOUI32(firstCodec, firstCodec + tokenLen, 10, &codec)); + + // Insert (int)(firstCodec) and rtpMapValue into the hashtables with the same key so they can be retrieved later during serialization + CHK_STATUS(hashTableContains(pUnknownCodecPayloadTypesTable, (UINT64) codec, &containsPayloadType)); + CHK_STATUS(hashTableContains(pUnknownCodecRtpmapTable, (UINT64) rtpMapValue, &containsRtpMap)); + if (containsPayloadType == FALSE && containsRtpMap == FALSE) { + CHK_STATUS(hashTablePut(pUnknownCodecPayloadTypesTable, unknownCodecCounter, (UINT64) codec)); + CHK_STATUS(hashTablePut(pUnknownCodecRtpmapTable, unknownCodecCounter, (UINT64) rtpMapValue)); + unknownCodecCounter++; + containsPayloadType = FALSE; + containsRtpMap = FALSE; } } } CleanUp: + CHK_STATUS(hashTableFree(pSeenTransceivers)); CHK_LOG_ERR(retStatus); LEAVES(); diff --git a/src/source/PeerConnection/SessionDescription.h b/src/source/PeerConnection/SessionDescription.h index 1e62ddf4e4..9be9bca2de 100644 --- a/src/source/PeerConnection/SessionDescription.h +++ b/src/source/PeerConnection/SessionDescription.h @@ -36,12 +36,14 @@ extern "C" { #define RTX_VALUE "rtx/90000" #define RTX_CODEC_VALUE "apt=" #define FMTP_VALUE "fmtp:" +#define RTPMAP_VALUE "rtpmap" -#define DEFAULT_PAYLOAD_MULAW (UINT64) 0 -#define DEFAULT_PAYLOAD_ALAW (UINT64) 8 -#define DEFAULT_PAYLOAD_OPUS (UINT64) 111 -#define DEFAULT_PAYLOAD_VP8 (UINT64) 96 -#define DEFAULT_PAYLOAD_H264 (UINT64) 125 +#define MAX_PAYLOAD_TYPE_LENGTH (UINT64) 10 +#define DEFAULT_PAYLOAD_MULAW (UINT64) 0 +#define DEFAULT_PAYLOAD_ALAW (UINT64) 8 +#define DEFAULT_PAYLOAD_OPUS (UINT64) 111 +#define DEFAULT_PAYLOAD_VP8 (UINT64) 96 +#define DEFAULT_PAYLOAD_H264 (UINT64) 125 #define DEFAULT_PAYLOAD_MULAW_STR (PCHAR) "0" #define DEFAULT_PAYLOAD_ALAW_STR (PCHAR) "8" @@ -80,7 +82,7 @@ STATUS setPayloadTypesForOffer(PHashTable); STATUS setTransceiverPayloadTypes(PHashTable, PHashTable, PDoubleList); STATUS populateSessionDescription(PKvsPeerConnection, PSessionDescription, PSessionDescription); -STATUS reorderTransceiverByRemoteDescription(PKvsPeerConnection, PSessionDescription); +STATUS findTransceiversByRemoteDescription(PKvsPeerConnection, PSessionDescription, PHashTable, PHashTable); STATUS setReceiversSsrc(PSessionDescription, PDoubleList); PCHAR fmtpForPayloadType(UINT64, PSessionDescription); UINT64 getH264FmtpScore(PCHAR); diff --git a/tst/SdpApiTest.cpp b/tst/SdpApiTest.cpp index ee429d893e..d6c160e86f 100644 --- a/tst/SdpApiTest.cpp +++ b/tst/SdpApiTest.cpp @@ -1076,6 +1076,310 @@ a=rtpmap:102 H264/90000 }); } +TEST_F(SdpApiTest, audioTransceiverMissingInactiveDirection) +{ + auto offer = std::string(R"(v=0 +o=- 481034601 1588366671 IN IP4 0.0.0.0 +s=- +t=0 0 +a=fingerprint:sha-256 87:E6:EC:59:93:76:9F:42:7D:15:17:F6:8F:C4:29:AB:EA:3F:28:B6:DF:F8:14:2F:96:62:2F:16:98:F5:76:E5 +a=group:BUNDLE 0 1 2 +a=ice-options:trickle +)"); + + offer += sdpvideo; + offer += "\n"; + offer += sdpaudio_sendrecv_mid0; + offer += "\n"; + offer += sdpdata; + offer += "\n"; + + assertLFAndCRLF((PCHAR) offer.c_str(), offer.size(), [](PCHAR sdp) { + RtcConfiguration configuration{}; + PRtcPeerConnection pRtcPeerConnection = nullptr; + RtcMediaStreamTrack track1{}; + PRtcRtpTransceiver transceiver1 = nullptr; + RtcSessionDescriptionInit offerSdp{}; + RtcSessionDescriptionInit answerSdp{}; + + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + + track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; + track1.codec = RTC_CODEC_VP8; + STRNCPY(track1.streamId, "stream1", MAX_MEDIA_STREAM_ID_LEN); + STRNCPY(track1.trackId, "track1", MAX_MEDIA_STREAM_TRACK_ID_LEN); + + offerSdp.type = SDP_TYPE_OFFER; + STRNCPY(offerSdp.sdp, (PCHAR) sdp, MAX_SESSION_DESCRIPTION_INIT_SDP_LEN); + + EXPECT_EQ(STATUS_SUCCESS, createPeerConnection(&configuration, &pRtcPeerConnection)); + EXPECT_EQ(STATUS_SUCCESS, addSupportedCodec(pRtcPeerConnection, RTC_CODEC_VP8)); + EXPECT_EQ(STATUS_SUCCESS, addTransceiver(pRtcPeerConnection, &track1, nullptr, &transceiver1)); + + EXPECT_EQ(STATUS_SUCCESS, setRemoteDescription(pRtcPeerConnection, &offerSdp)); + EXPECT_EQ(TRUE, canTrickleIceCandidates(pRtcPeerConnection).value); + EXPECT_EQ(STATUS_SUCCESS, createAnswer(pRtcPeerConnection, &answerSdp)); + + std::string answer = answerSdp.sdp; + std::string::size_type videoPos = answer.find("m=video 9 UDP/TLS/RTP/SAVPF 96"); + std::string::size_type audioPos = answer.find("m=audio 9 UDP/TLS/RTP/SAVPF 111"); + + // check directions + EXPECT_NE(std::string::npos, answer.substr(videoPos, audioPos - videoPos).find("a=sendonly")); + EXPECT_NE(std::string::npos, answer.substr(audioPos).find("a=inactive")); + + closePeerConnection(pRtcPeerConnection); + EXPECT_EQ(STATUS_SUCCESS, freePeerConnection(&pRtcPeerConnection)); + }); +} + +TEST_F(SdpApiTest, answerMlinesOrderSameAsOfferMLinesOrder) +{ + auto offer = std::string(R"(v=0 +o=- 481034601 1588366671 IN IP4 0.0.0.0 +s=- +t=0 0 +a=fingerprint:sha-256 87:E6:EC:59:93:76:9F:42:7D:15:17:F6:8F:C4:29:AB:EA:3F:28:B6:DF:F8:14:2F:96:62:2F:16:98:F5:76:E5 +a=group:BUNDLE 0 1 2 +a=ice-options:trickle +)"); + + auto sdpOfferAudio1 = R"(m=audio 9 UDP/TLS/RTP/SAVPF 109 9 0 8 101 +c=IN IP4 0.0.0.0 +a=recvonly +a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level +a=extmap:2/recvonly urn:ietf:params:rtp-hdrext:csrc-audio-level +a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid +a=fmtp:109 maxplaybackrate=48000;stereo=1;useinbandfec=1 +a=fmtp:101 0-15 +a=ice-pwd:db2619f637ea75cf7e578e8fc7829ebf +a=ice-ufrag:6a957b4a +a=mid:1 +a=rtcp-mux +a=rtpmap:109 opus/48000/2 +a=rtpmap:9 G722/8000/1 +a=rtpmap:0 PCMU/8000 +a=rtpmap:8 PCMA/8000 +a=rtpmap:101 telephone-event/8000 +a=setup:actpass +a=ssrc:1326673407 cname:{080eadab-2d5f-4ba3-abc2-0ccc305a028d})"; + + auto sdpOfferVideo1 = R"(m=video 9 UDP/TLS/RTP/SAVPF 97 98 99 100 101 122 102 121 127 120 125 107 108 109 124 119 123 +c=IN IP4 0.0.0.0 +a=rtcp:9 IN IP4 0.0.0.0 +a=ice-ufrag:XvdX +a=ice-pwd:VbwqLiodQFWAt3YVdyK/HG04 +a=ice-options:trickle +a=fingerprint:sha-256 F0:6C:41:02:7D:AC:E0:CA:3B:2A:F9:92:F9:13:86:67:DA:71:5B:4E:E4:83:80:C5:87:3F:3B:4D:41:F2:91:44 +a=setup:actpass +a=mid:0 +a=extmap:1 urn:ietf:params:rtp-hdrext:toffset +a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time +a=extmap:3 urn:3gpp:video-orientation +a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 +a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay +a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type +a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing +a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space +a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid +a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id +a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id +a=recvonly +a=rtcp-mux +a=rtcp-rsize +a=rtpmap:97 rtx/90000 +a=fmtp:97 apt=96 +a=rtpmap:98 VP9/90000 +a=rtcp-fb:98 goog-remb +a=rtcp-fb:98 transport-cc +a=rtcp-fb:98 ccm fir +a=rtcp-fb:98 nack +a=rtcp-fb:98 nack pli +a=fmtp:98 profile-id=0 +a=rtpmap:99 rtx/90000 +a=fmtp:99 apt=98 +a=rtpmap:100 VP9/90000 +a=rtcp-fb:100 goog-remb +a=rtcp-fb:100 transport-cc +a=rtcp-fb:100 ccm fir +a=rtcp-fb:100 nack +a=rtcp-fb:100 nack pli +a=fmtp:100 profile-id=2 +a=rtpmap:101 rtx/90000 +a=fmtp:101 apt=100 +a=rtpmap:122 VP9/90000 +a=rtcp-fb:122 goog-remb +a=rtcp-fb:122 transport-cc +a=rtcp-fb:122 ccm fir +a=rtcp-fb:122 nack +a=rtcp-fb:122 nack pli +a=fmtp:122 profile-id=1 +a=rtpmap:102 H264/90000 +a=rtcp-fb:102 goog-remb +a=rtcp-fb:102 transport-cc +a=rtcp-fb:102 ccm fir +a=rtcp-fb:102 nack +a=rtcp-fb:102 nack pli +a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f +a=rtpmap:121 rtx/90000 +a=fmtp:121 apt=102 +a=rtpmap:127 H264/90000 +a=rtcp-fb:127 goog-remb +a=rtcp-fb:127 transport-cc +a=rtcp-fb:127 ccm fir +a=rtcp-fb:127 nack +a=rtcp-fb:127 nack pli +a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f +a=rtpmap:120 rtx/90000 +a=fmtp:120 apt=127 +a=rtpmap:125 H264/90000 +a=rtcp-fb:125 goog-remb +a=rtcp-fb:125 transport-cc +a=rtcp-fb:125 ccm fir +a=rtcp-fb:125 nack +a=rtcp-fb:125 nack pli +a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f +a=rtpmap:107 rtx/90000 +a=fmtp:107 apt=125 +a=rtpmap:108 H264/90000 +a=rtcp-fb:108 goog-remb +a=rtcp-fb:108 transport-cc +a=rtcp-fb:108 ccm fir +a=rtcp-fb:108 nack +a=rtcp-fb:108 nack pli +a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f +a=rtpmap:109 rtx/90000 +a=fmtp:109 apt=108 +a=rtpmap:124 red/90000 +a=rtpmap:119 rtx/90000 +a=fmtp:119 apt=124 +a=rtpmap:123 ulpfec/90000)"; + + auto sdpOfferVideo2 = R"(m=video 9 UDP/TLS/RTP/SAVPF 124 121 125 126 127 97 98 +c=IN IP4 0.0.0.0 +a=recvonly +a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid +a=extmap:4 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time +a=extmap:5 urn:ietf:params:rtp-hdrext:toffset +a=extmap:6/recvonly http://www.webrtc.org/experiments/rtp-hdrext/playout-delay +a=extmap:7 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 +a=fmtp:126 profile-level-id=42e01f;level-asymmetry-allowed=1;packetization-mode=1 +a=fmtp:97 profile-level-id=42e01f;level-asymmetry-allowed=1 +a=fmtp:120 max-fs=12288;max-fr=60 +a=fmtp:124 apt=120 +a=fmtp:121 max-fs=12288;max-fr=60 +a=fmtp:125 apt=121 +a=fmtp:127 apt=126 +a=fmtp:98 apt=97 +a=ice-pwd:e2f571f28334aa91043ed38190223da9 +a=ice-ufrag:9dfb71ef +a=mid:0 +a=rtcp-fb:121 nack +a=rtcp-fb:121 nack pli +a=rtcp-fb:121 ccm fir +a=rtcp-fb:121 goog-remb +a=rtcp-fb:121 transport-cc +a=rtcp-fb:126 nack +a=rtcp-fb:126 nack pli +a=rtcp-fb:126 ccm fir +a=rtcp-fb:126 goog-remb +a=rtcp-fb:126 transport-cc +a=rtcp-fb:97 nack +a=rtcp-fb:97 nack pli +a=rtcp-fb:97 ccm fir +a=rtcp-fb:97 goog-remb +a=rtcp-fb:97 transport-cc +a=rtcp-mux +a=rtcp-rsize +a=rtpmap:124 rtx/90000 +a=rtpmap:121 VP9/90000 +a=rtpmap:125 rtx/90000 +a=rtpmap:126 H264/90000 +a=rtpmap:127 rtx/90000 +a=rtpmap:97 H264/90000 +a=rtpmap:98 rtx/90000 +a=setup:actpass +a=ssrc:1644235696 cname:{36a6a74c-73a4-594b-9bb0-023b4d357280})"; + + offer += sdpaudio_sendrecv_mid0; + offer += "\n"; + offer += sdpOfferAudio1; + offer += "\n"; + offer += sdpOfferVideo1; + offer += "\n"; + offer += sdpvideo; + offer += "\n"; + offer += sdpOfferVideo2; + offer += "\n"; + + assertLFAndCRLF((PCHAR) offer.c_str(), offer.size(), [](PCHAR sdp) { + RtcConfiguration configuration{}; + PRtcPeerConnection pRtcPeerConnection = nullptr; + RtcMediaStreamTrack track1{}; + PRtcRtpTransceiver transceiver1 = nullptr; + RtcSessionDescriptionInit offerSdp{}; + RtcSessionDescriptionInit answerSdp{}; + + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + + track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; + track1.codec = RTC_CODEC_VP8; + STRNCPY(track1.streamId, "stream1", MAX_MEDIA_STREAM_ID_LEN); + STRNCPY(track1.trackId, "track1", MAX_MEDIA_STREAM_TRACK_ID_LEN); + + offerSdp.type = SDP_TYPE_OFFER; + STRNCPY(offerSdp.sdp, (PCHAR) sdp, MAX_SESSION_DESCRIPTION_INIT_SDP_LEN); + + EXPECT_EQ(STATUS_SUCCESS, createPeerConnection(&configuration, &pRtcPeerConnection)); + EXPECT_EQ(STATUS_SUCCESS, addSupportedCodec(pRtcPeerConnection, RTC_CODEC_VP8)); + EXPECT_EQ(STATUS_SUCCESS, addTransceiver(pRtcPeerConnection, &track1, nullptr, &transceiver1)); + + EXPECT_EQ(STATUS_SUCCESS, setRemoteDescription(pRtcPeerConnection, &offerSdp)); + EXPECT_EQ(TRUE, canTrickleIceCandidates(pRtcPeerConnection).value); + EXPECT_EQ(STATUS_SUCCESS, createAnswer(pRtcPeerConnection, &answerSdp)); + + std::string answer = answerSdp.sdp; + + // check m-line and codec value + std::string::size_type posMline1 = answer.find("m=audio 9 UDP/TLS/RTP/SAVPF 111"); + EXPECT_NE(std::string::npos, posMline1); + posMline1++; + std::string::size_type posMline2 = answer.find("m=audio 9 UDP/TLS/RTP/SAVPF 109", posMline1); + EXPECT_NE(std::string::npos, posMline2); + posMline2++; + std::string::size_type posMline3 = answer.find("m=video 9 UDP/TLS/RTP/SAVPF 97", posMline2); + EXPECT_NE(std::string::npos, posMline3); + posMline3++; + std::string::size_type posMline4 = answer.find("m=video 9 UDP/TLS/RTP/SAVPF 96", posMline3); + EXPECT_NE(std::string::npos, posMline4); + posMline4++; + std::string::size_type posMline5 = answer.find("m=video 9 UDP/TLS/RTP/SAVPF 124", posMline4); + EXPECT_NE(std::string::npos, posMline5); + + // check order of the m-lines + EXPECT_EQ(TRUE, posMline1 < posMline2); + EXPECT_EQ(TRUE, posMline2 < posMline3); + EXPECT_EQ(TRUE, posMline3 < posMline4); + EXPECT_EQ(TRUE, posMline4 < posMline5); + + // check directions + EXPECT_NE(std::string::npos, answer.substr(posMline1, posMline2 - posMline1).find("a=inactive")); + EXPECT_NE(std::string::npos, answer.substr(posMline2, posMline3 - posMline2).find("a=inactive")); + EXPECT_NE(std::string::npos, answer.substr(posMline3, posMline4 - posMline3).find("a=inactive")); + EXPECT_NE(std::string::npos, answer.substr(posMline4, posMline5 - posMline4).find("a=sendonly")); + EXPECT_NE(std::string::npos, answer.substr(posMline5).find("a=inactive")); + + // check rtpmap values + EXPECT_NE(std::string::npos, answer.substr(posMline1, posMline2 - posMline1).find("a=rtpmap:111 opus/48000/2")); + EXPECT_NE(std::string::npos, answer.substr(posMline2, posMline3 - posMline2).find("a=rtpmap:109 opus/48000/2")); + EXPECT_NE(std::string::npos, answer.substr(posMline3, posMline4 - posMline3).find("a=rtpmap:97 rtx/90000")); + EXPECT_NE(std::string::npos, answer.substr(posMline5).find("a=rtpmap:124 rtx/90000")); + + closePeerConnection(pRtcPeerConnection); + EXPECT_EQ(STATUS_SUCCESS, freePeerConnection(&pRtcPeerConnection)); + }); +} + TEST_P(SdpApiTest_SdpMatch, populateSingleMediaSection_TestH264Fmtp) { PRtcPeerConnection pRtcPeerConnection = NULL; From 4aa281b099e38bbea1c2bfe08b02d57a4f902f05 Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Wed, 8 Feb 2023 13:30:35 -0800 Subject: [PATCH 055/102] Fix GHA CI build issues (#1631) * separate builds and tests * fix clang format issues * update libgtest version to 1.12.1 * fix deprecation in libgtest * update test suite call * run tests from build * remove build from tst instruction * fix san options * fix windows build * fix path in windows build * update bat file for windows * build openssl on windows * add openssl path for windows build * specify path to openssl root folder * specify path to openssl root folder * specify path to openssl root folder * upgrade cmake version * fix windows build * update checkoutv2 to v3 * fix checkout and install pthreads * remove windows build temporarily * move to v1-node16 for aws credentials * add sudo clean * add sudo to both commanda * use event triggers --- .github/build_windows.bat | 4 +- .github/workflows/ci.yml | 188 +++++++++++------- .../Dependencies/libbenchmark-CMakeLists.txt | 2 +- .../Dependencies/libgperftools-CMakeLists.txt | 2 +- CMake/Dependencies/libgtest-CMakeLists.txt | 4 +- CMake/Dependencies/libjsmn-CMakeLists.txt | 2 +- .../Dependencies/libjsmn-add-cmakelists.patch | 2 +- .../libkvsCommonLws-CMakeLists.txt | 2 +- CMake/Dependencies/libmbedtls-CMakeLists.txt | 2 +- CMake/Dependencies/libopenssl-CMakeLists.txt | 2 +- CMake/Dependencies/libsrtp-CMakeLists.txt | 2 +- CMake/Dependencies/libusrsctp-CMakeLists.txt | 2 +- .../Dependencies/libwebsockets-CMakeLists.txt | 2 +- bench/CMakeLists.txt | 2 +- samples/Samples.h | 2 +- src/CMakeLists.txt | 2 +- tst/CMakeLists.txt | 2 +- tst/SdpApiTest.cpp | 10 +- 18 files changed, 142 insertions(+), 92 deletions(-) diff --git a/.github/build_windows.bat b/.github/build_windows.bat index 66fc5f2093..836e44c000 100644 --- a/.github/build_windows.bat +++ b/.github/build_windows.bat @@ -1,6 +1,6 @@ -call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat" amd64 +call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" mkdir build cd build cmd.exe /c cmake -G "NMake Makefiles" .. cmake -G "NMake Makefiles" -DBUILD_TEST=TRUE .. -nmake +nmake \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d914ba0eb4..073056eece 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,12 +9,17 @@ on: branches: - develop - master + pull_request_target: + types: [assigned, opened, synchronize, reopened] + branches: + - develop + - master jobs: clang-format-check: - runs-on: macos-latest + runs-on: macos-11 steps: - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install clang-format run: | brew install clang-format @@ -23,7 +28,7 @@ jobs: run: | bash scripts/check-clang.sh mac-os-build-clang: - runs-on: macos-latest + runs-on: macos-11 env: CC: /usr/bin/clang CXX: /usr/bin/clang++ @@ -32,50 +37,59 @@ jobs: CPATH: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ steps: - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Build repository run: | mkdir build && cd build cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE make + - name: Run tests + run: | + cd build ./tst/webrtc_client_test mac-os-build-gcc: - runs-on: macos-10.15 + runs-on: macos-11 env: CC: gcc CXX: g++ AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository - uses: actions/checkout@v2 - - name: Build repository and run tests + uses: actions/checkout@v3 + - name: Build repository run: | mkdir build && cd build cmake .. -DBUILD_TEST=TRUE -DCOMPILER_WARNINGS=TRUE make + - name: Run tests + run: | + cd build ./tst/webrtc_client_test static-build-mac: - runs-on: macos-latest + runs-on: macos-11 env: AWS_KVS_LOG_LEVEL: 2 LDFLAGS: -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib CPATH: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ steps: - name: Clone repository - uses: actions/checkout@v2 - - name: Build repository and run tests + uses: actions/checkout@v3 + - name: Build repository run: | mkdir build && cd build cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE make - ./tst/webrtc_client_test + - name: Run tests + run: | + cd build + ./tst/webrtc_client_test linux-gcc-code-coverage: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 env: AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Build repository run: | sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' @@ -83,26 +97,29 @@ jobs: cmake .. -DCODE_COVERAGE=TRUE -DBUILD_TEST=TRUE make ulimit -c unlimited -S + - name: Run tests + run: | + cd build timeout --signal=SIGABRT 60m ./tst/webrtc_client_test - name: Code coverage run: | for test_file in $(find CMakeFiles/kvsWebrtcClient.dir CMakeFiles/kvsWebrtcSignalingClient.dir -name '*.gcno'); do gcov $test_file; done bash <(curl -s https://codecov.io/bash) address-sanitizer: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 env: ASAN_OPTIONS: detect_odr_violation=0:detect_leaks=1 LSAN_OPTIONS: suppressions=../tst/suppressions/LSAN.supp - CC: clang-7 - CXX: clang++-7 + CC: clang + CXX: clang++ AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install dependencies run: | - sudo apt-get update - sudo apt-get -y install clang-7 + sudo apt clean && sudo apt update + sudo apt-get -y install clang - name: Build repository run: | # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. @@ -111,21 +128,24 @@ jobs: cmake .. -DBUILD_TEST=TRUE -DADDRESS_SANITIZER=TRUE make ulimit -c unlimited -S + - name: Run tests + run: | + cd build timeout --signal=SIGABRT 60m ./tst/webrtc_client_test undefined-behavior-sanitizer: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 env: UBSAN_OPTIONS: halt_on_error=1 - CC: clang-7 - CXX: clang++-7 + CC: clang + CXX: clang++ AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install dependencies run: | - sudo apt-get update - sudo apt-get -y install clang-7 + sudo apt clean && sudo apt update + sudo apt-get -y install clang - name: Build repository run: | # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. @@ -134,7 +154,10 @@ jobs: cmake .. -DBUILD_TEST=TRUE -DUNDEFINED_BEHAVIOR_SANITIZER=TRUE make ulimit -c unlimited -S - timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + - name: Run tests + run: | + cd build + timeout --signal=SIGABRT 60m ./tst/webrtc_client_test # memory-sanitizer: # runs-on: ubuntu-18.04 # env: @@ -143,10 +166,10 @@ jobs: # AWS_KVS_LOG_LEVEL: 2 # steps: # - name: Clone repository - # uses: actions/checkout@v2 + # uses: actions/checkout@v3 # - name: Install dependencies # run: | - # sudo apt-get update + # sudo apt clean && sudo apt update # sudo apt-get -y install clang-7 # - name: Build repository # run: | @@ -155,21 +178,21 @@ jobs: # cmake .. -DMEMORY_SANITIZER=TRUE -DBUILD_TEST=TRUE # make # ulimit -c unlimited -S - # timeout --signal=SIGABRT 60m ./tst/webrtc_client_test + # timeout --signal=SIGABRT 60m build/tst/webrtc_client_test thread-sanitizer: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 env: TSAN_OPTIONS: halt_on_error=1:suppressions=../tst/suppressions/TSAN.supp - CC: clang-7 - CXX: clang++-7 + CC: clang + CXX: clang++ AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install dependencies run: | - sudo apt-get update - sudo apt-get -y install clang-7 + sudo apt clean && sudo apt update + sudo apt-get -y install clang - name: Build repository run: | sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' @@ -177,17 +200,21 @@ jobs: cmake .. -DBUILD_TEST=TRUE -DTHREAD_SANITIZER=TRUE make ulimit -c unlimited -S + - name: Run tests + run: | + cd build timeout --signal=SIGABRT 60m ./tst/webrtc_client_test linux-gcc-4_4: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 env: AWS_KVS_LOG_LEVEL: 2 CC: gcc-4.4 steps: - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install deps run: | + sudo apt clean && sudo apt update sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty main' @@ -201,9 +228,12 @@ jobs: cmake .. -DBUILD_TEST=TRUE make ulimit -c unlimited -S + - name: Run tests + run: | + cd build timeout --signal=SIGABRT 60m ./tst/webrtc_client_test static-build-linux: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 container: image: alpine:3.15.4 env: @@ -212,7 +242,7 @@ jobs: AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install dependencies run: | apk update @@ -224,14 +254,15 @@ jobs: cmake .. -DBUILD_STATIC_LIBS=TRUE -DBUILD_TEST=TRUE make mbedtls-ubuntu-gcc: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 env: AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install deps run: | + sudo apt clean && sudo apt update sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ trusty main' @@ -245,20 +276,23 @@ jobs: cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON make ulimit -c unlimited -S + - name: Run tests + run: | + cd build timeout --signal=SIGABRT 60m ./tst/webrtc_client_test mbedtls-ubuntu-clang: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 env: - CC: clang-7 - CXX: clang++-7 + CC: clang + CXX: clang++ AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install dependencies run: | - sudo apt-get update - sudo apt-get -y install clang-7 + sudo apt clean && sudo apt update + sudo apt-get -y install clang - name: Build repository run: | sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' @@ -266,10 +300,13 @@ jobs: cmake .. -DBUILD_TEST=TRUE -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON make ulimit -c unlimited -S + - name: Run tests + run: | + cd build timeout --signal=SIGABRT 60m ./tst/webrtc_client_test sample-check: if: github.repository == 'awslabs/amazon-kinesis-video-streams-webrtc-sdk-c' - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 env: AWS_KVS_LOG_LEVEL: 2 permissions: @@ -277,9 +314,9 @@ jobs: contents: read steps: - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 + uses: aws-actions/configure-aws-credentials@v1-node16 with: role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} role-session-name: ${{ secrets.AWS_ROLE_SESSION_NAME }} @@ -293,12 +330,12 @@ jobs: cd .. ./scripts/check-sample.sh ubuntu-os-build: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 env: AWS_KVS_LOG_LEVEL: 2 steps: - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Build repository run: | # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. @@ -306,36 +343,49 @@ jobs: mkdir build && cd build cmake .. -DBUILD_TEST=TRUE make - ./tst/webrtc_client_test + - name: Run tests + run: | + cd build + timeout --signal=SIGABRT 60m ./tst/webrtc_client_test # windows-msvc: - # runs-on: windows-2019 + # runs-on: windows-2022 + # env: + # AWS_KVS_LOG_LEVEL: 7 # permissions: # id-token: write # contents: read # steps: - # - name: Setup MSVC - # uses: ilammy/msvc-dev-cmd@v1 # - name: Clone repository - # uses: actions/checkout@v2 - # - name: Build and run + # uses: actions/checkout@v3 + # - name: Install dependencies # run: | # choco install nasm strawberryperl - # $env:Path += ';C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Strawberry\c\bin;C:\Program Files\NASM;D:\a\amazon-kinesis-video-streams-producer-c\amazon-kinesis-video-streams-producer-c\open-source\lib;D:\a\amazon-kinesis-video-streams-producer-c\amazon-kinesis-video-streams-producer-c\open-source\bin' + # choco install gstreamer --version=1.16.2 + # choco install gstreamer-devel --version=1.16.2 + # - name: Install pthreads + # run: | + # C:\msys64\pacman -S mingw-w64-x86_64-winpthreads + # - name: Build repository + # run: | + # $env:Path += ';C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Strawberry\c\bin;C:\Program Files\NASM;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\local\lib;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\local\bin;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\libopenssl' # git config --system core.longpaths true # .github/build_windows.bat - # cd tst && .\webrtc_client_test.exe --gtest_filter="-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3" + # - name: Run tests + # run: | + # $env:Path += ';C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Strawberry\c\bin;C:\Program Files\NASM;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\local\lib;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\local\bin' + # & "D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-cbuild\tst\webrtc_client_test.exe --gtest_filter="-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3" arm64-cross-compilation: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 env: CC: aarch64-linux-gnu-gcc CXX: aarch64-linux-gnu-g++ steps: - name: Install dependencies run: | - sudo apt update + sudo apt clean && sudo apt update sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Build Repository run: | sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' @@ -343,17 +393,17 @@ jobs: cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-generic64 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi make linux-aarch64-cross-compilation: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 env: CC: aarch64-linux-gnu-gcc CXX: aarch64-linux-gnu-g++ steps: - name: Install dependencies run: | - sudo apt update + sudo apt clean && sudo apt update sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Build Repository run: | sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' @@ -361,17 +411,17 @@ jobs: cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-aarch64 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi make arm32-cross-compilation: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 env: CC: arm-linux-gnueabi-gcc CXX: arm-linux-gnueabi-g++ steps: - name: Install dependencies run: | - sudo apt update + sudo apt clean && sudo apt update sudo apt-get -y install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi binutils-arm-linux-gnueabi - name: Clone repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Build Repository run: | sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' diff --git a/CMake/Dependencies/libbenchmark-CMakeLists.txt b/CMake/Dependencies/libbenchmark-CMakeLists.txt index 6e05e20ce2..21b375e398 100644 --- a/CMake/Dependencies/libbenchmark-CMakeLists.txt +++ b/CMake/Dependencies/libbenchmark-CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) project(libbenchmark-download NONE) diff --git a/CMake/Dependencies/libgperftools-CMakeLists.txt b/CMake/Dependencies/libgperftools-CMakeLists.txt index 721cad6657..96bf6b7de4 100644 --- a/CMake/Dependencies/libgperftools-CMakeLists.txt +++ b/CMake/Dependencies/libgperftools-CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) project(libgperftools-download NONE) diff --git a/CMake/Dependencies/libgtest-CMakeLists.txt b/CMake/Dependencies/libgtest-CMakeLists.txt index ebf7bf3be0..916087e762 100644 --- a/CMake/Dependencies/libgtest-CMakeLists.txt +++ b/CMake/Dependencies/libgtest-CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) project(libgtest-download NONE) @@ -6,7 +6,7 @@ include(ExternalProject) ExternalProject_Add(libgtest-download GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG release-1.8.1 + GIT_TAG release-1.12.1 PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} diff --git a/CMake/Dependencies/libjsmn-CMakeLists.txt b/CMake/Dependencies/libjsmn-CMakeLists.txt index c5940ca177..ef68de8866 100644 --- a/CMake/Dependencies/libjsmn-CMakeLists.txt +++ b/CMake/Dependencies/libjsmn-CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) project(libjsmn-download NONE) diff --git a/CMake/Dependencies/libjsmn-add-cmakelists.patch b/CMake/Dependencies/libjsmn-add-cmakelists.patch index 5fe1aea26d..133c61d9d5 100644 --- a/CMake/Dependencies/libjsmn-add-cmakelists.patch +++ b/CMake/Dependencies/libjsmn-add-cmakelists.patch @@ -4,7 +4,7 @@ index 0000000..f4a1d44 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,11 @@ -+cmake_minimum_required(VERSION 2.8) ++cmake_minimum_required(VERSION 3.6.3) +project(jsmn C) + + diff --git a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt index 6db57e03db..87068b9ab0 100644 --- a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt +++ b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) project(libkvsCommonLws-download NONE) diff --git a/CMake/Dependencies/libmbedtls-CMakeLists.txt b/CMake/Dependencies/libmbedtls-CMakeLists.txt index a2700eed4d..66ae44d0e0 100644 --- a/CMake/Dependencies/libmbedtls-CMakeLists.txt +++ b/CMake/Dependencies/libmbedtls-CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) project(libmbedtls-download NONE) diff --git a/CMake/Dependencies/libopenssl-CMakeLists.txt b/CMake/Dependencies/libopenssl-CMakeLists.txt index e9074b16a7..3320616495 100644 --- a/CMake/Dependencies/libopenssl-CMakeLists.txt +++ b/CMake/Dependencies/libopenssl-CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) project(libopenssl-download NONE) diff --git a/CMake/Dependencies/libsrtp-CMakeLists.txt b/CMake/Dependencies/libsrtp-CMakeLists.txt index e74838185b..6ba8ab0ed3 100644 --- a/CMake/Dependencies/libsrtp-CMakeLists.txt +++ b/CMake/Dependencies/libsrtp-CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) project(libsrtp-download NONE) diff --git a/CMake/Dependencies/libusrsctp-CMakeLists.txt b/CMake/Dependencies/libusrsctp-CMakeLists.txt index 5315a45a48..7ccc63f5bf 100644 --- a/CMake/Dependencies/libusrsctp-CMakeLists.txt +++ b/CMake/Dependencies/libusrsctp-CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) project(libusrsctp-download NONE) diff --git a/CMake/Dependencies/libwebsockets-CMakeLists.txt b/CMake/Dependencies/libwebsockets-CMakeLists.txt index 5700a3e4a2..be845ffe1d 100644 --- a/CMake/Dependencies/libwebsockets-CMakeLists.txt +++ b/CMake/Dependencies/libwebsockets-CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) project(libwebsocket-download NONE) diff --git a/bench/CMakeLists.txt b/bench/CMakeLists.txt index 917ae14f09..b74103d12e 100644 --- a/bench/CMakeLists.txt +++ b/bench/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) project (WebRTCClientBenchmark) diff --git a/samples/Samples.h b/samples/Samples.h index 6b721a8d6f..2ff522270b 100644 --- a/samples/Samples.h +++ b/samples/Samples.h @@ -50,7 +50,7 @@ extern "C" { #define VIEWER_DATA_CHANNEL_MESSAGE "This message is from the KVS Viewer" /* Uncomment the following line in order to enable IoT credentials checks in the provided samples */ -//#define IOT_CORE_ENABLE_CREDENTIALS 1 +// #define IOT_CORE_ENABLE_CREDENTIALS 1 typedef enum { SAMPLE_STREAMING_VIDEO_ONLY, diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0d215f5fb7..8ac842d59a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) project(KinesisVideoWebRTCClient LANGUAGES C) diff --git a/tst/CMakeLists.txt b/tst/CMakeLists.txt index d730949ab9..e31cd7658f 100644 --- a/tst/CMakeLists.txt +++ b/tst/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.6.3) # Enabling the instrumented allocators to track memory add_definitions(-DINSTRUMENTED_ALLOCATORS) diff --git a/tst/SdpApiTest.cpp b/tst/SdpApiTest.cpp index d6c160e86f..f1e651f2dd 100644 --- a/tst/SdpApiTest.cpp +++ b/tst/SdpApiTest.cpp @@ -2326,15 +2326,15 @@ a=max-message-size:262144 }; // 1v1a1d represents 1 video + 1 audio + 1 data channel -INSTANTIATE_TEST_CASE_P(SdpApiTest_SdpMatch_Chrome, SdpApiTest_SdpMatch, +INSTANTIATE_TEST_SUITE_P(SdpApiTest_SdpMatch_Chrome, SdpApiTest_SdpMatch, ::testing::Values(offer_1v1a1d_Chrome_Android, offer_1v1a1d_Chrome_Linux, - offer_1v1a1d_Chrome_Mac), ); // the last comma is used to silent a warning + offer_1v1a1d_Chrome_Mac)); // the last comma is used to silent a warning -INSTANTIATE_TEST_CASE_P(SdpApiTest_SdpMatch_Firefox, SdpApiTest_SdpMatch, ::testing::Values(offer_1v1a1d_Firefox_Linux, offer_1v1a1d_Firefox_Mac), ); +INSTANTIATE_TEST_SUITE_P(SdpApiTest_SdpMatch_Firefox, SdpApiTest_SdpMatch, ::testing::Values(offer_1v1a1d_Firefox_Linux, offer_1v1a1d_Firefox_Mac)); -INSTANTIATE_TEST_CASE_P(SdpApiTest_SdpMatch_Chromium, SdpApiTest_SdpMatch, ::testing::Values(offer_1v1a1d_Chromium_Linux), ); +INSTANTIATE_TEST_SUITE_P(SdpApiTest_SdpMatch_Chromium, SdpApiTest_SdpMatch, ::testing::Values(offer_1v1a1d_Chromium_Linux)); -INSTANTIATE_TEST_CASE_P(SdpApiTest_SdpMatch_Safari, SdpApiTest_SdpMatch, ::testing::Values(offer_1v1a1d_Safari_Mac), ); +INSTANTIATE_TEST_SUITE_P(SdpApiTest_SdpMatch_Safari, SdpApiTest_SdpMatch, ::testing::Values(offer_1v1a1d_Safari_Mac)); } // namespace webrtcclient } // namespace video From 39957369a95e8f8bccafe4d985beeacf4d725a22 Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Thu, 9 Feb 2023 11:09:25 -0800 Subject: [PATCH 056/102] Fix CI for forked branches (#1634) * use only target * use only target * remove branch name * blank space change to trigger CI --- .github/workflows/ci.yml | 5 ----- CMake/Dependencies/libwebsockets-CMakeLists.txt | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 073056eece..81a3bcfc8c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,12 +5,7 @@ on: branches: - develop - master - pull_request: - branches: - - develop - - master pull_request_target: - types: [assigned, opened, synchronize, reopened] branches: - develop - master diff --git a/CMake/Dependencies/libwebsockets-CMakeLists.txt b/CMake/Dependencies/libwebsockets-CMakeLists.txt index be845ffe1d..00a6876e17 100644 --- a/CMake/Dependencies/libwebsockets-CMakeLists.txt +++ b/CMake/Dependencies/libwebsockets-CMakeLists.txt @@ -5,7 +5,7 @@ project(libwebsocket-download NONE) SET(PATCH_COMMAND git apply --ignore-whitespace ${CMAKE_CURRENT_LIST_DIR}/libwebsockets-old-gcc-fix-cast-cmakelists.patch ${CMAKE_CURRENT_LIST_DIR}/libwebsockets-leak-pipe-fix.patch) include(ExternalProject) - + if (BUILD_STATIC_LIBS) set(LWS_WITH_STATIC 1) set(LWS_WITH_SHARED 0) From 72c46065df97f344c18e112fc406262e80bad308 Mon Sep 17 00:00:00 2001 From: Jeremy Gunawan Date: Fri, 10 Feb 2023 10:00:13 -0800 Subject: [PATCH 057/102] fix WSAPoll failed when set POLLPRI flag (#1636) Co-authored-by: weishao --- src/source/Ice/ConnectionListener.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/source/Ice/ConnectionListener.c b/src/source/Ice/ConnectionListener.c index 39ebaab8aa..92995eba91 100644 --- a/src/source/Ice/ConnectionListener.c +++ b/src/source/Ice/ConnectionListener.c @@ -273,6 +273,9 @@ PVOID connectionListenerReceiveDataRoutine(PVOID arg) MUTEX_UNLOCK(pSocketConnection->lock); rfds[nfds].fd = localSocket; rfds[nfds].events = POLLIN | POLLPRI; +#ifdef _WIN32 + rfds[nfds].events &= ~POLLPRI; +#endif rfds[nfds].revents = 0; nfds++; From 0052ddf428578c74d67923bb60e881ee8774add4 Mon Sep 17 00:00:00 2001 From: Jeremy Gunawan Date: Fri, 10 Feb 2023 11:42:35 -0800 Subject: [PATCH 058/102] Update README.md (#1637) Co-authored-by: Hassan Sahibzada --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8dc9449b83..c4246bc26f 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ Choose Start viewer to start live video streaming of the sample H264/Opus frames "kinesisvideo:CreateSignalingChannel", "kinesisvideo:GetSignalingChannelEndpoint", "kinesisvideo:GetIceServerConfig", - "kinesisvideo:ConnectAsMaster", + "kinesisvideo:ConnectAsMaster" ], "Resource":"arn:aws:kinesisvideo:*:*:channel/${credentials-iot:ThingName}/*" } From 965ba8869edbce8945dc85c4cea80176977d0366 Mon Sep 17 00:00:00 2001 From: Jeremy Gunawan Date: Fri, 10 Feb 2023 12:29:59 -0800 Subject: [PATCH 059/102] add paths for fedora (#1638) Co-authored-by: Hassan Sahibzada --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 45d4db468f..2989695149 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -212,7 +212,7 @@ endif() find_library( Usrsctp NAMES ${USRSCTP_LIBNAME} usrsctp REQUIRED - PATHS ${OPEN_SRC_INSTALL_PREFIX}/lib) + PATHS ${OPEN_SRC_INSTALL_PREFIX}/lib ${OPEN_SRC_INSTALL_PREFIX}/lib64) set(OPEN_SRC_INCLUDE_DIRS ${OPEN_SRC_INCLUDE_DIRS} ${LIBSRTP_INCLUDE_DIRS} ${CURL_INCLUDE_DIRS} ${LIBWEBSOCKETS_INCLUDE_DIRS}) @@ -220,6 +220,7 @@ set(OPEN_SRC_INCLUDE_DIRS ${OPEN_SRC_INCLUDE_DIRS} ${LIBSRTP_INCLUDE_DIRS} link_directories(${LIBSRTP_LIBRARY_DIRS}) link_directories(${LIBWEBSOCKETS_LIBRARY_DIRS}) link_directories(${OPEN_SRC_INSTALL_PREFIX}/lib) +link_directories(${OPEN_SRC_INSTALL_PREFIX}/lib64) ############# find dependent libraries end ############ From 617fb50be9f2f0c99167a40b28de2566e9a3ee33 Mon Sep 17 00:00:00 2001 From: Jeremy Gunawan Date: Fri, 10 Feb 2023 13:54:44 -0800 Subject: [PATCH 060/102] Add clarifying comment for fallthrough (#1639) --- src/source/Ice/TurnConnection.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/source/Ice/TurnConnection.c b/src/source/Ice/TurnConnection.c index cbd615dd54..33c171301e 100644 --- a/src/source/Ice/TurnConnection.c +++ b/src/source/Ice/TurnConnection.c @@ -910,7 +910,8 @@ STATUS turnConnectionStepState(PTurnConnection pTurnConnection) } else { CHK(currentTime < pTurnConnection->stateTimeoutTime, STATUS_TURN_CONNECTION_STATE_TRANSITION_TIMEOUT); } - + + // fallthrough here, missing break intended case TURN_STATE_GET_CREDENTIALS: if (pTurnConnection->credentialObtained) { From 28809c14999bff7da4d5d49a1b4d81e42379244d Mon Sep 17 00:00:00 2001 From: Jeremy Gunawan Date: Fri, 10 Feb 2023 15:54:34 -0800 Subject: [PATCH 061/102] Bkneff patch 2 (#1640) * Update kvsWebRTCClientMasterGstreamerSample.c Provide an example gstreamer pipeline for Raspberry Pi hardware encoding. Tested on Raspberry Pi 3 * Clang --------- Co-authored-by: bkneff <44409173+bkneff@users.noreply.github.com> --- samples/kvsWebRTCClientMasterGstreamerSample.c | 9 +++++++++ src/source/Ice/TurnConnection.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/samples/kvsWebRTCClientMasterGstreamerSample.c b/samples/kvsWebRTCClientMasterGstreamerSample.c index ed53ce0888..54c4d247e1 100644 --- a/samples/kvsWebRTCClientMasterGstreamerSample.c +++ b/samples/kvsWebRTCClientMasterGstreamerSample.c @@ -140,6 +140,15 @@ PVOID sendGstreamerAudioVideo(PVOID args) * videotestsrc is-live=TRUE ! video/x-raw,width=1280,height=720,framerate=30/1 ! * vp8enc error-resilient=partitions keyframe-max-dist=10 auto-alt-ref=true cpu-used=5 deadline=1 ! * appsink sync=TRUE emit-signals=TRUE name=appsink-video + * + * Raspberry Pi Hardware Encode Example + * "v4l2src do-timestamp=TRUE device=\"/dev/video0\" ! queue ! videoconvert ! " + * "video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! " + * "omxh264enc control-rate=1 target-bitrate=500000 periodicty-idr=30 inline-header=FALSE ! " + * "h264parse config-interval=-1 ! " + * "video/x-h264,stream-format=byte-stream,alignment=au,width=640,height=480,framerate=30/1,profile=baseline ! " + * "appsink sync=TRUE emit-signals=TRUE name=appsink-video" + * */ switch (pSampleConfiguration->mediaType) { diff --git a/src/source/Ice/TurnConnection.c b/src/source/Ice/TurnConnection.c index 33c171301e..cf91e06348 100644 --- a/src/source/Ice/TurnConnection.c +++ b/src/source/Ice/TurnConnection.c @@ -910,7 +910,7 @@ STATUS turnConnectionStepState(PTurnConnection pTurnConnection) } else { CHK(currentTime < pTurnConnection->stateTimeoutTime, STATUS_TURN_CONNECTION_STATE_TRANSITION_TIMEOUT); } - + // fallthrough here, missing break intended case TURN_STATE_GET_CREDENTIALS: From c789351196d0affd7b02235e7c27d9cdc896a001 Mon Sep 17 00:00:00 2001 From: Jeremy Gunawan Date: Sun, 12 Feb 2023 14:24:35 -0800 Subject: [PATCH 062/102] thread cancel memory leak, recreate signaling client & lws_context whenever a significant error has occurred, verbose and debug logging for ice & turn (#1641) * recreate signaling client & lws_context whenever a significant error has occurred * clang-format * recreate signaling client & lws_context whenever a significant error has occurred * Clang * adding local and remote null checks * More verbose and debug logging for ice & turn * Thread cancel on the media sender thread leads to memory leaks from writeFrame() not freeing all its heap usage * Clang again --------- Co-authored-by: James Delaplane --- samples/Common.c | 41 +++++++++++++++++------ samples/Samples.h | 2 ++ samples/kvsWebRTCClientMaster.c | 20 +++-------- src/source/Ice/IceAgent.c | 48 +++++++++++++++++++++------ src/source/Ice/IceAgentStateMachine.c | 1 + src/source/Ice/TurnConnection.c | 15 ++++++++- 6 files changed, 89 insertions(+), 38 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index c7b32b09ad..677aa56038 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -12,6 +12,13 @@ VOID sigintHandler(INT32 sigNum) } } +STATUS signalingCallFailed(STATUS status) +{ + return (STATUS_SIGNALING_GET_TOKEN_CALL_FAILED == status || STATUS_SIGNALING_DESCRIBE_CALL_FAILED == status || + STATUS_SIGNALING_CREATE_CALL_FAILED == status || STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED == status || + STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED == status || STATUS_SIGNALING_CONNECT_CALL_FAILED == status); +} + VOID onDataChannelMessage(UINT64 customData, PRtcDataChannel pDataChannel, BOOL isBinary, PBYTE pMessage, UINT32 pMessageLen) { UNUSED_PARAM(customData); @@ -152,7 +159,9 @@ PVOID mediaSenderRoutine(PVOID customData) { STATUS retStatus = STATUS_SUCCESS; PSampleConfiguration pSampleConfiguration = (PSampleConfiguration) customData; - TID videoSenderTid = INVALID_TID_VALUE, audioSenderTid = INVALID_TID_VALUE; + CHK(pSampleConfiguration != NULL, STATUS_NULL_ARG); + pSampleConfiguration->videoSenderTid = INVALID_TID_VALUE; + pSampleConfiguration->audioSenderTid = INVALID_TID_VALUE; MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); while (!ATOMIC_LOAD_BOOL(&pSampleConfiguration->connected) && !ATOMIC_LOAD_BOOL(&pSampleConfiguration->appTerminateFlag)) { @@ -163,19 +172,19 @@ PVOID mediaSenderRoutine(PVOID customData) CHK(!ATOMIC_LOAD_BOOL(&pSampleConfiguration->appTerminateFlag), retStatus); if (pSampleConfiguration->videoSource != NULL) { - THREAD_CREATE(&videoSenderTid, pSampleConfiguration->videoSource, (PVOID) pSampleConfiguration); + THREAD_CREATE(&pSampleConfiguration->videoSenderTid, pSampleConfiguration->videoSource, (PVOID) pSampleConfiguration); } if (pSampleConfiguration->audioSource != NULL) { - THREAD_CREATE(&audioSenderTid, pSampleConfiguration->audioSource, (PVOID) pSampleConfiguration); + THREAD_CREATE(&pSampleConfiguration->audioSenderTid, pSampleConfiguration->audioSource, (PVOID) pSampleConfiguration); } - if (videoSenderTid != INVALID_TID_VALUE) { - THREAD_JOIN(videoSenderTid, NULL); + if (pSampleConfiguration->videoSenderTid != INVALID_TID_VALUE) { + THREAD_JOIN(pSampleConfiguration->videoSenderTid, NULL); } - if (audioSenderTid != INVALID_TID_VALUE) { - THREAD_JOIN(audioSenderTid, NULL); + if (pSampleConfiguration->audioSenderTid != INVALID_TID_VALUE) { + THREAD_JOIN(pSampleConfiguration->audioSenderTid, NULL); } CleanUp: @@ -752,6 +761,8 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE #endif pSampleConfiguration->mediaSenderTid = INVALID_TID_VALUE; + pSampleConfiguration->audioSenderTid = INVALID_TID_VALUE; + pSampleConfiguration->videoSenderTid = INVALID_TID_VALUE; pSampleConfiguration->signalingClientHandle = INVALID_SIGNALING_CLIENT_HANDLE_VALUE; pSampleConfiguration->sampleConfigurationObjLock = MUTEX_CREATE(TRUE); pSampleConfiguration->cvar = CVAR_CREATE(); @@ -1166,10 +1177,18 @@ STATUS sessionCleanupWait(PSampleConfiguration pSampleConfiguration) } // Check if we need to re-create the signaling client on-the-fly - if (ATOMIC_LOAD_BOOL(&pSampleConfiguration->recreateSignalingClient) && - STATUS_SUCCEEDED(signalingClientFetchSync(pSampleConfiguration->signalingClientHandle))) { - // Re-set the variable again - ATOMIC_STORE_BOOL(&pSampleConfiguration->recreateSignalingClient, FALSE); + if (ATOMIC_LOAD_BOOL(&pSampleConfiguration->recreateSignalingClient)) { + retStatus = signalingClientFetchSync(pSampleConfiguration->signalingClientHandle); + if (STATUS_SUCCEEDED(retStatus)) { + // Re-set the variable again + ATOMIC_STORE_BOOL(&pSampleConfiguration->recreateSignalingClient, FALSE); + } else if (signalingCallFailed(retStatus)) { + printf("[KVS Common] recreating Signaling Client\n"); + freeSignalingClient(&pSampleConfiguration->signalingClientHandle); + createSignalingClientSync(&pSampleConfiguration->clientInfo, &pSampleConfiguration->channelInfo, + &pSampleConfiguration->signalingClientCallbacks, pSampleConfiguration->pCredentialProvider, + &pSampleConfiguration->signalingClientHandle); + } } // Check the signaling client state and connect if needed diff --git a/samples/Samples.h b/samples/Samples.h index 2ff522270b..83ef0cb194 100644 --- a/samples/Samples.h +++ b/samples/Samples.h @@ -85,6 +85,8 @@ typedef struct { PBYTE pVideoFrameBuffer; UINT32 videoBufferSize; TID mediaSenderTid; + TID audioSenderTid; + TID videoSenderTid; TIMER_QUEUE_HANDLE timerQueueHandle; UINT32 iceCandidatePairStatsTimerId; SampleStreamingMediaType mediaType; diff --git a/samples/kvsWebRTCClientMaster.c b/samples/kvsWebRTCClientMaster.c index a8a4348ec2..18eb44b0db 100644 --- a/samples/kvsWebRTCClientMaster.c +++ b/samples/kvsWebRTCClientMaster.c @@ -128,20 +128,6 @@ INT32 main(INT32 argc, CHAR* argv[]) // Kick of the termination sequence ATOMIC_STORE_BOOL(&pSampleConfiguration->appTerminateFlag, TRUE); - if (IS_VALID_MUTEX_VALUE(pSampleConfiguration->sampleConfigurationObjLock)) { - MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); - } - - // Cancel the media thread - if (pSampleConfiguration->mediaThreadStarted) { - DLOGD("Canceling media thread"); - THREAD_CANCEL(pSampleConfiguration->mediaSenderTid); - } - - if (IS_VALID_MUTEX_VALUE(pSampleConfiguration->sampleConfigurationObjLock)) { - MUTEX_UNLOCK(pSampleConfiguration->sampleConfigurationObjLock); - } - if (pSampleConfiguration->mediaSenderTid != INVALID_TID_VALUE) { THREAD_JOIN(pSampleConfiguration->mediaSenderTid, NULL); } @@ -166,6 +152,7 @@ INT32 main(INT32 argc, CHAR* argv[]) } } printf("[KVS Master] Cleanup done\n"); + CHK_LOG_ERR(retStatus); RESET_INSTRUMENTED_ALLOCATORS(); @@ -289,7 +276,7 @@ PVOID sendVideoPackets(PVOID args) } CleanUp: - + printf("[KVS Master] closing video thread"); CHK_LOG_ERR(retStatus); return (PVOID) (ULONG_PTR) retStatus; @@ -330,6 +317,7 @@ PVOID sendAudioPackets(PVOID args) printf("[KVS Master] MEMREALLOC(): operation returned status code: 0x%08x \n", STATUS_NOT_ENOUGH_MEMORY); goto CleanUp; } + pSampleConfiguration->audioBufferSize = frameSize; } frame.frameData = pSampleConfiguration->pAudioFrameBuffer; @@ -359,7 +347,7 @@ PVOID sendAudioPackets(PVOID args) } CleanUp: - + printf("[KVS Master] closing audio thread"); return (PVOID) (ULONG_PTR) retStatus; } diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index 6f363e1819..35075ea84f 100644 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -1229,10 +1229,20 @@ STATUS iceCandidatePairCheckConnection(PStunPacket pStunBindingRequest, PIceAgen UINT32 checkSum = 0; CHK(pStunBindingRequest != NULL && pIceAgent != NULL && pIceCandidatePair != NULL, STATUS_NULL_ARG); + CHK(pIceCandidatePair->local != NULL && pIceCandidatePair->remote != NULL, STATUS_NULL_ARG); CHK_STATUS(getStunAttribute(pStunBindingRequest, STUN_ATTRIBUTE_TYPE_PRIORITY, (PStunAttributeHeader*) &pStunAttributePriority)); CHK(pStunAttributePriority != NULL, STATUS_INVALID_ARG); + if (pIceCandidatePair->local->ipAddress.family == KVS_IP_FAMILY_TYPE_IPV4) { + DLOGD("remote ip:%u.%u.%u.%u, port:%u, local ip:%u.%u.%u.%u, port:%u", pIceCandidatePair->remote->ipAddress.address[0], + pIceCandidatePair->remote->ipAddress.address[1], pIceCandidatePair->remote->ipAddress.address[2], + pIceCandidatePair->remote->ipAddress.address[3], pIceCandidatePair->remote->ipAddress.address[0], + pIceCandidatePair->remote->ipAddress.port, pIceCandidatePair->local->ipAddress.address[1], + pIceCandidatePair->local->ipAddress.address[2], pIceCandidatePair->local->ipAddress.address[3], + pIceCandidatePair->local->ipAddress.address[0], pIceCandidatePair->local->ipAddress.port); + } + // update priority and transaction id pStunAttributePriority->priority = pIceCandidatePair->local->priority; CHK_STATUS(iceUtilsGenerateTransactionId(pStunBindingRequest->header.transactionId, ARRAY_SIZE(pStunBindingRequest->header.transactionId))); @@ -2247,11 +2257,12 @@ STATUS incomingRelayedDataHandler(UINT64 customData, PSocketConnection pSocketCo STATUS retStatus = STATUS_SUCCESS; PIceCandidate pRelayedCandidate = (PIceCandidate) customData; // this should be more than enough. Usually the number of channel data in each tcp message is around 4 - TurnChannelData turnChannelData[DEFAULT_TURN_CHANNEL_DATA_BUFFER_SIZE]; + TurnChannelData turnChannelData[DEFAULT_TURN_CHANNEL_DATA_BUFFER_SIZE] = {0}; UINT32 turnChannelDataCount = ARRAY_SIZE(turnChannelData), i = 0; CHK(pRelayedCandidate != NULL && pSocketConnection != NULL, STATUS_NULL_ARG); + DLOGV("Candidate id: %s", pRelayedCandidate->id); CHK_STATUS(turnConnectionIncomingDataHandler(pRelayedCandidate->pTurnConnection, pBuffer, bufferLen, pSrc, pDest, turnChannelData, &turnChannelDataCount)); for (i = 0; i < turnChannelDataCount; ++i) { @@ -2282,6 +2293,7 @@ STATUS incomingDataHandler(UINT64 customData, PSocketConnection pSocketConnectio // for stun packets, first 8 bytes are 4 byte type and length, then 4 byte magic byte if ((bufferLen < 8 || !IS_STUN_PACKET(pBuffer)) && pIceAgent->iceAgentCallbacks.inboundPacketFn != NULL) { // release lock early + MUTEX_UNLOCK(pIceAgent->lock); locked = FALSE; pIceAgent->iceAgentCallbacks.inboundPacketFn(pIceAgent->iceAgentCallbacks.customData, pBuffer, bufferLen); @@ -2441,7 +2453,9 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS pIceAgent->rtcIceServerDiagnostics[pIceCandidate->iceServerIndex].totalResponsesReceived++; retStatus = hashTableGet(pIceAgent->requestTimestampDiagnostics, checkSum, &requestSentTime); if (retStatus != STATUS_SUCCESS) { - DLOGW("Unable to fetch request Timestamp from the hash table. No update to totalRoundTripTime (error code: 0x%08x)", retStatus); + DLOGW("Unable to fetch request Timestamp from the hash table. No update to totalRoundTripTime (error code: 0x%08x), " + "stunBindingRequest", + retStatus); } else { pIceAgent->rtcIceServerDiagnostics[pIceCandidate->iceServerIndex].totalRoundTripTime += GETTIME() - requestSentTime; CHK_STATUS(hashTableRemove(pIceAgent->requestTimestampDiagnostics, checkSum)); @@ -2469,6 +2483,7 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS "Cannot find candidate pair with local candidate %s and remote candidate %s. Dropping STUN binding success response", ipAddrStr2, ipAddrStr); } + DLOGV("Pair binding response! %s %s", pIceCandidatePair->local->id, pIceCandidatePair->remote->id); retStatus = hashTableGet(pIceCandidatePair->requestSentTime, checkSum, &requestSentTime); if (retStatus != STATUS_SUCCESS) { DLOGW("Unable to fetch request Timestamp from the hash table. No update to RTT for the pair (error code: 0x%08x)", retStatus); @@ -2485,7 +2500,8 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS pIceAgent->rtcIceServerDiagnostics[pIceCandidatePair->local->iceServerIndex].totalResponsesReceived++; retStatus = hashTableGet(pIceAgent->requestTimestampDiagnostics, checkSum, &requestSentTime); if (retStatus != STATUS_SUCCESS) { - DLOGW("Unable to fetch request Timestamp from the hash table. No update to totalRoundTripTime (error code: 0x%08x)", retStatus); + DLOGW("Unable to fetch request Timestamp from the hash table. No update to totalRoundTripTime (error code: 0x%08x), typeRelayed", + retStatus); } else { pIceAgent->rtcIceServerDiagnostics[pIceCandidatePair->local->iceServerIndex].totalRoundTripTime += GETTIME() - requestSentTime; CHK_STATUS(hashTableRemove(pIceAgent->requestTimestampDiagnostics, checkSum)); @@ -2513,10 +2529,13 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS } if (pIceCandidatePair->state != ICE_CANDIDATE_PAIR_STATE_SUCCEEDED) { + DLOGV("Pair succeeded! %s %s", pIceCandidatePair->local->id, pIceCandidatePair->remote->id); pIceCandidatePair->state = ICE_CANDIDATE_PAIR_STATE_SUCCEEDED; retStatus = hashTableGet(pIceCandidatePair->requestSentTime, checkSum, &requestSentTime); if (retStatus != STATUS_SUCCESS) { - DLOGW("Unable to fetch request Timestamp from the hash table. No update to totalRoundTripTime (error code: 0x%08x)", retStatus); + DLOGW( + "Unable to fetch request Timestamp from the hash table. No update to totalRoundTripTime (error code: 0x%08x), stateSucceeded", + retStatus); } else { pIceCandidatePair->roundTripTime = GETTIME() - requestSentTime; DLOGD("Ice candidate pair %s_%s is connected. Round trip time: %" PRIu64 "ms", pIceCandidatePair->local->id, @@ -2537,12 +2556,21 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS break; default: - CHK_STATUS(hexEncode(pBuffer, bufferLen, NULL, &hexStrLen)); - hexStr = MEMCALLOC(1, hexStrLen * SIZEOF(CHAR)); - CHK(hexStr != NULL, STATUS_NOT_ENOUGH_MEMORY); - CHK_STATUS(hexEncode(pBuffer, bufferLen, hexStr, &hexStrLen)); - DLOGW("Dropping unrecognized STUN packet. Packet type: 0x%02x. Packet content: \n\t%s", stunPacketType, hexStr); - SAFE_MEMFREE(hexStr); + if (!IS_STUN_PACKET(pBuffer)) { + CHK_STATUS(hexEncode(pBuffer, bufferLen, NULL, &hexStrLen)); + hexStr = MEMCALLOC(1, hexStrLen * SIZEOF(CHAR)); + CHK(hexStr != NULL, STATUS_NOT_ENOUGH_MEMORY); + CHK_STATUS(hexEncode(pBuffer, bufferLen, hexStr, &hexStrLen)); + DLOGW("Dropping unrecognized STUN packet. Packet type: 0x%02x. Packet content: \n\t%s", stunPacketType, hexStr); + SAFE_MEMFREE(hexStr); + } else if (STUN_PACKET_IS_TYPE_ERROR(pBuffer)) { + CHK_STATUS(hexEncode(pBuffer, bufferLen, NULL, &hexStrLen)); + hexStr = MEMCALLOC(1, hexStrLen * SIZEOF(CHAR)); + CHK(hexStr != NULL, STATUS_NOT_ENOUGH_MEMORY); + CHK_STATUS(hexEncode(pBuffer, bufferLen, hexStr, &hexStrLen)); + DLOGW("Error STUN packet. Packet type: 0x%02x. Packet content: \n\t%s", stunPacketType, hexStr); + SAFE_MEMFREE(hexStr); + } break; } diff --git a/src/source/Ice/IceAgentStateMachine.c b/src/source/Ice/IceAgentStateMachine.c index ad9b6f2ad3..b9c2c293fa 100644 --- a/src/source/Ice/IceAgentStateMachine.c +++ b/src/source/Ice/IceAgentStateMachine.c @@ -226,6 +226,7 @@ STATUS fromCheckConnectionIceAgentState(UINT64 customData, PUINT64 pState) CHK_STATUS(doubleListGetHeadNode(pIceAgent->iceCandidatePairs, &pCurNode)); while (pCurNode != NULL && !connectedCandidatePairFound) { pIceCandidatePair = (PIceCandidatePair) pCurNode->data; + DLOGD("Checking pair: %s %s, state: %d", pIceCandidatePair->local->id, pIceCandidatePair->remote->id, pIceCandidatePair->state); pCurNode = pCurNode->pNext; if (pIceCandidatePair->state == ICE_CANDIDATE_PAIR_STATE_SUCCEEDED) { diff --git a/src/source/Ice/TurnConnection.c b/src/source/Ice/TurnConnection.c index cf91e06348..9690f61991 100644 --- a/src/source/Ice/TurnConnection.c +++ b/src/source/Ice/TurnConnection.c @@ -352,6 +352,7 @@ STATUS turnConnectionHandleStunError(PTurnConnection pTurnConnection, PBYTE pBuf MUTEX_LOCK(pTurnConnection->lock); locked = TRUE; + stunPacketType = (UINT16) getInt16(*((PUINT16) pBuffer)); /* we could get errors like expired nonce after sending the deallocation packet. The allocate would have been * deallocated even if the response is error response, and if we try to deallocate again we would get invalid * allocation error. Therefore if we get an error after we've sent the deallocation packet, consider the @@ -450,9 +451,10 @@ STATUS turnConnectionHandleChannelData(PTurnConnection pTurnConnection, PBYTE pB STATUS retStatus = STATUS_SUCCESS; BOOL locked = FALSE; - UINT32 turnChannelDataCount = 0; + UINT32 turnChannelDataCount = 0, hexStrLen = 0; UINT16 channelNumber = 0; PTurnPeer pTurnPeer = NULL; + PCHAR hexStr = NULL; CHK(pTurnConnection != NULL && pChannelData != NULL && pChannelDataCount != NULL && pProcessedDataLen != NULL, STATUS_NULL_ARG); CHK(pBuffer != NULL && bufferLen > 0, STATUS_INVALID_ARG); @@ -478,7 +480,14 @@ STATUS turnConnectionHandleChannelData(PTurnConnection pTurnConnection, PBYTE pB } } else { + CHK_STATUS(hexEncode(pBuffer, bufferLen, NULL, &hexStrLen)); + hexStr = MEMCALLOC(1, hexStrLen * SIZEOF(CHAR)); + CHK(hexStr != NULL, STATUS_NOT_ENOUGH_MEMORY); + CHK_STATUS(hexEncode(pBuffer, bufferLen, hexStr, &hexStrLen)); + DLOGE("Turn connection does not have channel number, dumping payload: %s", hexStr); turnChannelDataCount = 0; + + SAFE_MEMFREE(hexStr); } *pProcessedDataLen = bufferLen; @@ -493,6 +502,9 @@ STATUS turnConnectionHandleChannelData(PTurnConnection pTurnConnection, PBYTE pB CHK_LOG_ERR(retStatus); + if (hexStr != NULL) { + SAFE_MEMFREE(hexStr); + } if (locked) { MUTEX_UNLOCK(pTurnConnection->lock); } @@ -524,6 +536,7 @@ STATUS turnConnectionHandleChannelDataTcpMode(PTurnConnection pTurnConnection, P /* process only one channel data and return. Because channel data can be intermixed with STUN packet. * need to check remainingBufLen too because channel data could be incomplete. */ while (remainingBufLen != 0 && channelDataCount == 0) { + DLOGV("currRecvDataLen: %d", pTurnConnection->currRecvDataLen); if (pTurnConnection->currRecvDataLen != 0) { if (pTurnConnection->currRecvDataLen >= TURN_DATA_CHANNEL_SEND_OVERHEAD) { /* pTurnConnection->recvDataBuffer always has channel data start */ From 83ffe886ed43637cbf723d65240c91c9bd291181 Mon Sep 17 00:00:00 2001 From: Jeremy Gunawan Date: Tue, 14 Feb 2023 09:07:39 -0800 Subject: [PATCH 063/102] wrong port/address on debug log (#1642) Co-authored-by: Alex Zhukov --- src/source/Ice/IceAgent.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index 35075ea84f..ef1cc16b2c 100644 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -1237,10 +1237,10 @@ STATUS iceCandidatePairCheckConnection(PStunPacket pStunBindingRequest, PIceAgen if (pIceCandidatePair->local->ipAddress.family == KVS_IP_FAMILY_TYPE_IPV4) { DLOGD("remote ip:%u.%u.%u.%u, port:%u, local ip:%u.%u.%u.%u, port:%u", pIceCandidatePair->remote->ipAddress.address[0], pIceCandidatePair->remote->ipAddress.address[1], pIceCandidatePair->remote->ipAddress.address[2], - pIceCandidatePair->remote->ipAddress.address[3], pIceCandidatePair->remote->ipAddress.address[0], - pIceCandidatePair->remote->ipAddress.port, pIceCandidatePair->local->ipAddress.address[1], + pIceCandidatePair->remote->ipAddress.address[3], pIceCandidatePair->remote->ipAddress.port, + pIceCandidatePair->local->ipAddress.address[0], pIceCandidatePair->local->ipAddress.address[1], pIceCandidatePair->local->ipAddress.address[2], pIceCandidatePair->local->ipAddress.address[3], - pIceCandidatePair->local->ipAddress.address[0], pIceCandidatePair->local->ipAddress.port); + pIceCandidatePair->local->ipAddress.port); } // update priority and transaction id From 5766b1f3b923130396c14b861b721207485b8490 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Tue, 14 Feb 2023 14:46:18 -0800 Subject: [PATCH 064/102] Update openssl version (#1643) * Update openssl version and fix unused param typo * Pull in producer C openssl update --- CMake/Dependencies/libkvsCommonLws-CMakeLists.txt | 2 +- CMake/Dependencies/libopenssl-CMakeLists.txt | 2 +- samples/Common.c | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt index 87068b9ab0..46d0839ed9 100644 --- a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt +++ b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt @@ -6,7 +6,7 @@ include(ExternalProject) ExternalProject_Add(libkvsCommonLws-download GIT_REPOSITORY https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git - GIT_TAG c7fce9e06021452ff3c42dc70c8360606b22ad53 + GIT_TAG 8bd5adc78e8453e52a8707748c3469d8c9b74c29 PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} diff --git a/CMake/Dependencies/libopenssl-CMakeLists.txt b/CMake/Dependencies/libopenssl-CMakeLists.txt index 3320616495..1180b72f9c 100644 --- a/CMake/Dependencies/libopenssl-CMakeLists.txt +++ b/CMake/Dependencies/libopenssl-CMakeLists.txt @@ -26,7 +26,7 @@ endif() include(ExternalProject) ExternalProject_Add(project_libopenssl GIT_REPOSITORY https://github.com/openssl/openssl.git - GIT_TAG OpenSSL_1_1_1g + GIT_TAG OpenSSL_1_1_1t PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CONFIGURE_COMMAND ${CONFIGURE_COMMAND} BUILD_COMMAND ${MAKE_EXE} diff --git a/samples/Common.c b/samples/Common.c index 677aa56038..0831f2c781 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -22,7 +22,6 @@ STATUS signalingCallFailed(STATUS status) VOID onDataChannelMessage(UINT64 customData, PRtcDataChannel pDataChannel, BOOL isBinary, PBYTE pMessage, UINT32 pMessageLen) { UNUSED_PARAM(customData); - UNUSED_PARAM(pDataChannel); if (isBinary) { DLOGI("DataChannel Binary Message"); } else { From a9096375c7a0047245ec93980ded6e343ee17435 Mon Sep 17 00:00:00 2001 From: helloworld098765 <108649814+helloworld098765@users.noreply.github.com> Date: Thu, 16 Feb 2023 11:41:29 +0800 Subject: [PATCH 065/102] fix(project): fix issue--1614 (#1644) Co-authored-by: niedb --- src/source/Ice/IceUtils.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/source/Ice/IceUtils.c b/src/source/Ice/IceUtils.c index d269cdb91f..cc8176d505 100644 --- a/src/source/Ice/IceUtils.c +++ b/src/source/Ice/IceUtils.c @@ -68,6 +68,7 @@ VOID transactionIdStoreInsert(PTransactionIdStore pTransactionIdStore, PBYTE tra if (pTransactionIdStore->nextTransactionIdIndex == pTransactionIdStore->earliestTransactionIdIndex) { pTransactionIdStore->earliestTransactionIdIndex = (pTransactionIdStore->earliestTransactionIdIndex + 1) % pTransactionIdStore->maxTransactionIdsCount; + return; } pTransactionIdStore->transactionIdCount = MIN(pTransactionIdStore->transactionIdCount + 1, pTransactionIdStore->maxTransactionIdsCount); From 2c211bbaa56aced4774bf9252ce9aa763d863cbf Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Thu, 16 Feb 2023 14:42:22 -0800 Subject: [PATCH 066/102] update versions for actions (#1647) --- .github/workflows/ci.yml | 2 +- .github/workflows/codecov.yml | 2 +- .github/workflows/codeql-analysis.yml | 8 ++++---- .github/workflows/doxygen-gh-pages.yml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 81a3bcfc8c..0340da387c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,7 @@ on: branches: - develop - master - pull_request_target: + pull_request: branches: - develop - master diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index dd7093eacb..a06ec75d38 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Fetch - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 2 - name: Run code coverage diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ec9d11cfb0..23e91aaf11 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -22,11 +22,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -37,7 +37,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v2 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -51,4 +51,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/doxygen-gh-pages.yml b/.github/workflows/doxygen-gh-pages.yml index 488b4fb1fd..d8a2393618 100644 --- a/.github/workflows/doxygen-gh-pages.yml +++ b/.github/workflows/doxygen-gh-pages.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install requirements run: sudo apt-get install doxygen graphviz -y From 8083456728b4789e928ebfeda94f3d5363054468 Mon Sep 17 00:00:00 2001 From: Vikram Shitole Date: Fri, 17 Mar 2023 22:13:31 +0530 Subject: [PATCH 067/102] Seggregaated Audio and Video frame handling, updated Master sample to handle audio and video both (#1646) Co-authored-by: Vikram(VS) --- samples/Common.c | 18 +++++++++++++++--- samples/Samples.h | 5 +++-- samples/kvsWebRTCClientMaster.c | 14 ++++++++++---- samples/kvsWebRTCClientViewer.c | 2 +- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index 0831f2c781..962d33deb8 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -595,15 +595,27 @@ STATUS streamingSessionOnShutdown(PSampleStreamingSession pSampleStreamingSessio return retStatus; } -VOID sampleFrameHandler(UINT64 customData, PFrame pFrame) +VOID sampleVideoFrameHandler(UINT64 customData, PFrame pFrame) { UNUSED_PARAM(customData); - DLOGV("Frame received. TrackId: %" PRIu64 ", Size: %u, Flags %u", pFrame->trackId, pFrame->size, pFrame->flags); + DLOGV("Video Frame received. TrackId: %" PRIu64 ", Size: %u, Flags %u", pFrame->trackId, pFrame->size, pFrame->flags); PSampleStreamingSession pSampleStreamingSession = (PSampleStreamingSession) customData; if (pSampleStreamingSession->firstFrame) { pSampleStreamingSession->firstFrame = FALSE; pSampleStreamingSession->startUpLatency = (GETTIME() - pSampleStreamingSession->offerReceiveTime) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; - printf("Start up latency from offer to first frame: %" PRIu64 "ms\n", pSampleStreamingSession->startUpLatency); + printf("Start up latency from offer to first video frame: %" PRIu64 "ms\n", pSampleStreamingSession->startUpLatency); + } +} + +VOID sampleAudioFrameHandler(UINT64 customData, PFrame pFrame) +{ + UNUSED_PARAM(customData); + DLOGV("Audio Frame received. TrackId: %" PRIu64 ", Size: %u, Flags %u", pFrame->trackId, pFrame->size, pFrame->flags); + PSampleStreamingSession pSampleStreamingSession = (PSampleStreamingSession) customData; + if (pSampleStreamingSession->firstFrame) { + pSampleStreamingSession->firstFrame = FALSE; + pSampleStreamingSession->startUpLatency = (GETTIME() - pSampleStreamingSession->offerReceiveTime) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; + printf("Start up latency from offer to first audio frame: %" PRIu64 "ms\n", pSampleStreamingSession->startUpLatency); } } diff --git a/samples/Samples.h b/samples/Samples.h index 83ef0cb194..a60855c1ad 100644 --- a/samples/Samples.h +++ b/samples/Samples.h @@ -156,7 +156,7 @@ STATUS readFrameFromDisk(PBYTE, PUINT32, PCHAR); PVOID sendVideoPackets(PVOID); PVOID sendAudioPackets(PVOID); PVOID sendGstreamerAudioVideo(PVOID); -PVOID sampleReceiveVideoFrame(PVOID args); +PVOID sampleReceiveAudioVideoFrame(PVOID); PVOID getPeriodicIceCandidatePairStats(PVOID); STATUS getIceCandidatePairStatsCallback(UINT32, UINT64, UINT64); STATUS pregenerateCertTimerCallback(UINT32, UINT64, UINT64); @@ -175,7 +175,8 @@ STATUS streamingSessionOnShutdown(PSampleStreamingSession, UINT64, StreamSession STATUS sendSignalingMessage(PSampleStreamingSession, PSignalingMessage); STATUS respondWithAnswer(PSampleStreamingSession); STATUS resetSampleConfigurationState(PSampleConfiguration); -VOID sampleFrameHandler(UINT64, PFrame); +VOID sampleVideoFrameHandler(UINT64, PFrame); +VOID sampleAudioFrameHandler(UINT64, PFrame); VOID sampleBandwidthEstimationHandler(UINT64, DOUBLE); VOID sampleSenderBandwidthEstimationHandler(UINT64, UINT32, UINT32, UINT32, UINT32, UINT64); VOID onDataChannel(UINT64, PRtcDataChannel); diff --git a/samples/kvsWebRTCClientMaster.c b/samples/kvsWebRTCClientMaster.c index 18eb44b0db..9f3ce4f5df 100644 --- a/samples/kvsWebRTCClientMaster.c +++ b/samples/kvsWebRTCClientMaster.c @@ -48,7 +48,7 @@ INT32 main(INT32 argc, CHAR* argv[]) // Set the audio and video handlers pSampleConfiguration->audioSource = sendAudioPackets; pSampleConfiguration->videoSource = sendVideoPackets; - pSampleConfiguration->receiveAudioVideoSource = sampleReceiveVideoFrame; + pSampleConfiguration->receiveAudioVideoSource = sampleReceiveAudioVideoFrame; pSampleConfiguration->onDataChannel = onDataChannel; pSampleConfiguration->mediaType = SAMPLE_STREAMING_AUDIO_VIDEO; printf("[KVS Master] Finished setting audio and video handlers\n"); @@ -351,16 +351,22 @@ PVOID sendAudioPackets(PVOID args) return (PVOID) (ULONG_PTR) retStatus; } -PVOID sampleReceiveVideoFrame(PVOID args) +PVOID sampleReceiveAudioVideoFrame(PVOID args) { STATUS retStatus = STATUS_SUCCESS; PSampleStreamingSession pSampleStreamingSession = (PSampleStreamingSession) args; if (pSampleStreamingSession == NULL) { - printf("[KVS Master] sampleReceiveVideoFrame(): operation returned status code: 0x%08x \n", STATUS_NULL_ARG); + printf("[KVS Master] sampleReceiveAudioVideoFrame(): operation returned status code: 0x%08x \n", STATUS_NULL_ARG); goto CleanUp; } - retStatus = transceiverOnFrame(pSampleStreamingSession->pVideoRtcRtpTransceiver, (UINT64) pSampleStreamingSession, sampleFrameHandler); + retStatus = transceiverOnFrame(pSampleStreamingSession->pVideoRtcRtpTransceiver, (UINT64) pSampleStreamingSession, sampleVideoFrameHandler); + if (retStatus != STATUS_SUCCESS) { + printf("[KVS Master] transceiverOnFrame(): operation returned status code: 0x%08x \n", retStatus); + goto CleanUp; + } + + retStatus = transceiverOnFrame(pSampleStreamingSession->pAudioRtcRtpTransceiver, (UINT64) pSampleStreamingSession, sampleAudioFrameHandler); if (retStatus != STATUS_SUCCESS) { printf("[KVS Master] transceiverOnFrame(): operation returned status code: 0x%08x \n", retStatus); goto CleanUp; diff --git a/samples/kvsWebRTCClientViewer.c b/samples/kvsWebRTCClientViewer.c index 218f920426..21fff286b8 100644 --- a/samples/kvsWebRTCClientViewer.c +++ b/samples/kvsWebRTCClientViewer.c @@ -136,7 +136,7 @@ INT32 main(INT32 argc, CHAR* argv[]) } printf("[KVS Viewer] Completed setting local description\n"); - retStatus = transceiverOnFrame(pSampleStreamingSession->pAudioRtcRtpTransceiver, (UINT64) pSampleStreamingSession, sampleFrameHandler); + retStatus = transceiverOnFrame(pSampleStreamingSession->pAudioRtcRtpTransceiver, (UINT64) pSampleStreamingSession, sampleAudioFrameHandler); if (retStatus != STATUS_SUCCESS) { printf("[KVS Viewer] transceiverOnFrame(): operation returned status code: 0x%08x \n", retStatus); goto CleanUp; From 565854cc111c6e75ed125877fb3c7379b9955825 Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Fri, 17 Mar 2023 11:22:41 -0700 Subject: [PATCH 068/102] Mark Datachannel specific code explicitly (#1666) Co-authored-by: Dmitry Ilyin --- CMakeLists.txt | 15 ++++++++++++--- src/source/PeerConnection/PeerConnection.c | 6 ++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2989695149..78329d30d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -260,6 +260,10 @@ endif() if (ENABLE_DATA_CHANNEL) add_definitions(-DENABLE_DATA_CHANNEL) + set (DATACHANNEL_SRC + src/source/PeerConnection/DataChannel.c + src/source/Sctp/Sctp.c + ) endif() if (INSTRUMENTED_ALLOCATORS) @@ -271,14 +275,19 @@ file( WEBRTC_CLIENT_SOURCE_FILES "src/source/Crypto/*.c" "src/source/Ice/*.c" - "src/source/PeerConnection/*.c" + "src/source/PeerConnection/JitterBuffer.c" + "src/source/PeerConnection/jsmn.c" + "src/source/PeerConnection/PeerConnection.c" + "src/source/PeerConnection/Retransmitter.c" + "src/source/PeerConnection/Rtcp.c" + "src/source/PeerConnection/Rtp.c" + "src/source/PeerConnection/SessionDescription.c" "src/source/Rtcp/*.c" "src/source/Rtp/*.c" "src/source/Rtp/Codecs/*.c" "src/source/Sdp/*.c" "src/source/Srtp/*.c" "src/source/Stun/*.c" - "src/source/Sctp/*.c" "src/source/Metrics/*.c") if (USE_OPENSSL) @@ -295,7 +304,7 @@ include_directories(${OPEN_SRC_INSTALL_PREFIX}/include) include_directories(${KINESIS_VIDEO_WEBRTC_CLIENT_SRC}/src/include) include_directories(${KINESIS_VIDEO_WEBRTC_CLIENT_SRC}/src/ice) -add_library(kvsWebrtcClient ${LINKAGE} ${WEBRTC_CLIENT_SOURCE_FILES}) +add_library(kvsWebrtcClient ${LINKAGE} ${WEBRTC_CLIENT_SOURCE_FILES} ${DATACHANNEL_SRC}) target_link_libraries( kvsWebrtcClient diff --git a/src/source/PeerConnection/PeerConnection.c b/src/source/PeerConnection/PeerConnection.c index d5aa8cd555..584880ac69 100644 --- a/src/source/PeerConnection/PeerConnection.c +++ b/src/source/PeerConnection/PeerConnection.c @@ -35,6 +35,7 @@ STATUS allocateSrtp(PKvsPeerConnection pKvsPeerConnection) return retStatus; } +#ifdef ENABLE_DATA_CHANNEL STATUS allocateSctpSortDataChannelsDataCallback(UINT64 customData, PHashEntry pHashEntry) { STATUS retStatus = STATUS_SUCCESS; @@ -106,6 +107,7 @@ STATUS allocateSctp(PKvsPeerConnection pKvsPeerConnection) CleanUp: return retStatus; } +#endif VOID onInboundPacket(UINT64 customData, PBYTE buff, UINT32 buffLen) { @@ -130,9 +132,11 @@ VOID onInboundPacket(UINT64 customData, PBYTE buff, UINT32 buffLen) if (buff[0] > 19 && buff[0] < 64) { dtlsSessionProcessPacket(pKvsPeerConnection->pDtlsSession, buff, &signedBuffLen); +#ifdef ENABLE_DATA_CHANNEL if (signedBuffLen > 0) { CHK_STATUS(putSctpPacket(pKvsPeerConnection->pSctpSession, buff, signedBuffLen)); } +#endif CHK_STATUS(dtlsSessionIsInitFinished(pKvsPeerConnection->pDtlsSession, &isDtlsConnected)); if (isDtlsConnected) { @@ -776,7 +780,9 @@ STATUS freePeerConnection(PRtcPeerConnection* ppPeerConnection) /* Free structs that have their own thread. SCTP has threads created by SCTP library. IceAgent has the * connectionListener thread. Free SCTP first so it wont try to send anything through ICE. */ +#ifdef ENABLE_DATA_CHANNEL CHK_LOG_ERR(freeSctpSession(&pKvsPeerConnection->pSctpSession)); +#endif CHK_LOG_ERR(freeIceAgent(&pKvsPeerConnection->pIceAgent)); // free transceivers From 80eb8e1996fc99dd9bcf4baf0ac2ca49da86b5a7 Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Fri, 17 Mar 2023 12:27:21 -0700 Subject: [PATCH 069/102] Fix turn allocation taken long time when credential is incorrect (#1667) * fix turn allocation use long time sometimes * update some code style * fix compile error * Update IceAgent.c * fix clang format * fix prflx update interrupted connectivity check * fix clang format --------- Co-authored-by: Gordon --- configs/config_mbedtls.h | 2 +- .../kinesis/video/webrtcclient/Include.h | 1 + src/source/Ice/IceAgent.c | 30 ++++++++++++++++--- src/source/Ice/TurnConnection.c | 11 +++++++ src/source/Ice/TurnConnection.h | 6 ++++ 5 files changed, 45 insertions(+), 5 deletions(-) diff --git a/configs/config_mbedtls.h b/configs/config_mbedtls.h index b3e62b228e..52cc0ab10f 100644 --- a/configs/config_mbedtls.h +++ b/configs/config_mbedtls.h @@ -30,7 +30,7 @@ extern "C" { * * Uncomment to use your own hardware entropy collector. */ -//#define MBEDTLS_ENTROPY_HARDWARE_ALT +// #define MBEDTLS_ENTROPY_HARDWARE_ALT #ifdef __cplusplus } diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 1ff19af377..1015e37d3b 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -205,6 +205,7 @@ extern "C" { #define STATUS_TURN_CONNECTION_PEER_NOT_USABLE STATUS_ICE_BASE + 0x00000027 #define STATUS_ICE_SERVER_INDEX_INVALID STATUS_ICE_BASE + 0x00000028 #define STATUS_ICE_CANDIDATE_STRING_MISSING_TYPE STATUS_ICE_BASE + 0x00000029 +#define STATUS_TURN_CONNECTION_ALLOCAITON_FAILED STATUS_ICE_BASE + 0x0000002a /*!@} */ ///////////////////////////////////////////////////// diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index ef1cc16b2c..26a4a5ce1e 100644 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -1767,6 +1767,23 @@ STATUS iceAgentInitRelayCandidates(PIceAgent pIceAgent) return retStatus; } +STATUS turnStateFailedFn(PSocketConnection pSocketConnection, UINT64 data) +{ + UNUSED_PARAM(pSocketConnection); + + STATUS retStatus = STATUS_SUCCESS; + + PIceCandidate pNewCandidate = (PIceCandidate) data; + CHK(pNewCandidate != NULL, STATUS_NULL_ARG); + + if (pNewCandidate->state == ICE_CANDIDATE_STATE_NEW) { + pNewCandidate->state = ICE_CANDIDATE_STATE_INVALID; + } + +CleanUp: + return retStatus; +} + STATUS iceAgentInitRelayCandidate(PIceAgent pIceAgent, UINT32 iceServerIndex, KVS_SOCKET_PROTOCOL protocol) { STATUS retStatus = STATUS_SUCCESS; @@ -1802,8 +1819,13 @@ STATUS iceAgentInitRelayCandidate(PIceAgent pIceAgent, UINT32 iceServerIndex, KV pNewCandidate->foundation = pIceAgent->foundationCounter++; // we dont generate candidates that have the same foundation. pNewCandidate->priority = computeCandidatePriority(pNewCandidate); + TurnConnectionCallbacks callback = {0}; + callback.customData = (UINT64) pNewCandidate; + callback.relayAddressAvailableFn = NULL; + callback.turnStateFailedFn = turnStateFailedFn; + CHK_STATUS(createTurnConnection(&pIceAgent->iceServers[iceServerIndex], pIceAgent->timerQueueHandle, - TURN_CONNECTION_DATA_TRANSFER_MODE_SEND_INDIDATION, protocol, NULL, pNewCandidate->pSocketConnection, + TURN_CONNECTION_DATA_TRANSFER_MODE_SEND_INDIDATION, protocol, &callback, pNewCandidate->pSocketConnection, pIceAgent->pConnectionListener, &pTurnConnection)); pNewCandidate->pIceAgent = pIceAgent; pNewCandidate->pTurnConnection = pTurnConnection; @@ -2514,7 +2536,9 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS pStunAttributeAddress = (PStunAttributeAddress) pStunAttr; - if (!isSameIpAddress(&pStunAttributeAddress->address, &pIceCandidatePair->local->ipAddress, FALSE)) { + if (pIceCandidatePair->local->iceCandidateType == ICE_CANDIDATE_TYPE_SERVER_REFLEXIVE && + pIceCandidatePair->remote->iceCandidateType == ICE_CANDIDATE_TYPE_SERVER_REFLEXIVE && + !isSameIpAddress(&pStunAttributeAddress->address, &pIceCandidatePair->local->ipAddress, FALSE)) { // this can happen for host and server reflexive candidates. If the peer // is in the same subnet, server reflexive candidate's binding response's xor mapped ip address will be // the host candidate ip address. In this case we will ignore the packet since the host candidate will @@ -2524,8 +2548,6 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS // we have a peer reflexive local candidate CHK_STATUS(iceAgentCheckPeerReflexiveCandidate(pIceAgent, &pStunAttributeAddress->address, pIceCandidatePair->local->priority, FALSE, pSocketConnection)); - - CHK(FALSE, retStatus); } if (pIceCandidatePair->state != ICE_CANDIDATE_PAIR_STATE_SUCCEEDED) { diff --git a/src/source/Ice/TurnConnection.c b/src/source/Ice/TurnConnection.c index 9690f61991..fe01b3b0f5 100644 --- a/src/source/Ice/TurnConnection.c +++ b/src/source/Ice/TurnConnection.c @@ -923,6 +923,7 @@ STATUS turnConnectionStepState(PTurnConnection pTurnConnection) } else { CHK(currentTime < pTurnConnection->stateTimeoutTime, STATUS_TURN_CONNECTION_STATE_TRANSITION_TIMEOUT); } + break; // fallthrough here, missing break intended case TURN_STATE_GET_CREDENTIALS: @@ -941,6 +942,8 @@ STATUS turnConnectionStepState(PTurnConnection pTurnConnection) pTurnConnection->state = TURN_STATE_ALLOCATION; pTurnConnection->stateTimeoutTime = currentTime + DEFAULT_TURN_ALLOCATION_TIMEOUT; + pTurnConnection->stateTryCountMax = DEFAULT_TURN_ALLOCATION_MAX_TRY_COUNT; + pTurnConnection->stateTryCount = 0; } else { CHK(currentTime < pTurnConnection->stateTimeoutTime, STATUS_TURN_CONNECTION_STATE_TRANSITION_TIMEOUT); } @@ -992,6 +995,8 @@ STATUS turnConnectionStepState(PTurnConnection pTurnConnection) pTurnConnection->stateTimeoutTime = currentTime + DEFAULT_TURN_CREATE_PERMISSION_TIMEOUT; } else { + pTurnConnection->stateTryCount++; + CHK(pTurnConnection->stateTryCount < pTurnConnection->stateTryCountMax, STATUS_TURN_CONNECTION_ALLOCAITON_FAILED); CHK(currentTime < pTurnConnection->stateTimeoutTime, STATUS_TURN_CONNECTION_STATE_TRANSITION_TIMEOUT); } break; @@ -1110,6 +1115,12 @@ STATUS turnConnectionStepState(PTurnConnection pTurnConnection) if (STATUS_FAILED(retStatus) && pTurnConnection->state != TURN_STATE_FAILED) { pTurnConnection->errorStatus = retStatus; pTurnConnection->state = TURN_STATE_FAILED; + + if (pTurnConnection->turnConnectionCallbacks.turnStateFailedFn != NULL) { + pTurnConnection->turnConnectionCallbacks.turnStateFailedFn(pTurnConnection->pControlChannel, + pTurnConnection->turnConnectionCallbacks.customData); + } + /* fix up state to trigger transition into TURN_STATE_FAILED */ retStatus = STATUS_SUCCESS; } diff --git a/src/source/Ice/TurnConnection.h b/src/source/Ice/TurnConnection.h index 54df2bc280..cca70b6072 100644 --- a/src/source/Ice/TurnConnection.h +++ b/src/source/Ice/TurnConnection.h @@ -37,6 +37,8 @@ extern "C" { #define DEFAULT_TURN_CHANNEL_DATA_BUFFER_SIZE 512 #define DEFAULT_TURN_MAX_PEER_COUNT 32 +#define DEFAULT_TURN_ALLOCATION_MAX_TRY_COUNT 3 + // all turn channel numbers must be greater than 0x4000 and less than 0x7FFF #define TURN_CHANNEL_BIND_CHANNEL_NUMBER_BASE (UINT16) 0x4000 @@ -56,6 +58,7 @@ extern "C" { #define TURN_STATE_UNKNOWN_STR (PCHAR) "TURN_STATE_UNKNOWN" typedef STATUS (*RelayAddressAvailableFunc)(UINT64, PKvsIpAddress, PSocketConnection); +typedef STATUS (*TurnStateFailedFunc)(PSocketConnection, UINT64); typedef enum { TURN_STATE_NEW, @@ -90,6 +93,7 @@ typedef struct { typedef struct { UINT64 customData; RelayAddressAvailableFunc relayAddressAvailableFn; + TurnStateFailedFunc turnStateFailedFn; } TurnConnectionCallbacks, *PTurnConnectionCallbacks; typedef struct { @@ -140,6 +144,8 @@ struct __TurnConnection { TURN_CONNECTION_STATE state; UINT64 stateTimeoutTime; + UINT32 stateTryCount; + UINT32 stateTryCountMax; STATUS errorStatus; From 20201b1aea436d902aa1859992dfb69af794145f Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Fri, 31 Mar 2023 09:00:55 -0700 Subject: [PATCH 070/102] Update RtcpPacket.h (#1680) * Update RtcpPacket.h * Clang format --- .../kinesis/video/webrtcclient/Include.h | 104 +++++++++--------- .../kinesis/video/webrtcclient/Stats.h | 10 +- src/source/Ice/IceAgent.c | 2 +- .../PeerConnection/SessionDescription.c | 2 +- src/source/Rtcp/RtcpPacket.h | 12 +- 5 files changed, 60 insertions(+), 70 deletions(-) diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 1015e37d3b..329dc9e499 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -740,7 +740,7 @@ typedef enum { ICE_TRANSPORT_POLICY_RELAY = 1, //!< The ICE Agent uses only media relay candidates such as candidates //!< passing through a TURN server - ICE_TRANSPORT_POLICY_ALL = 2, //!< The ICE Agent can use any type of candidate when this value is specified. + ICE_TRANSPORT_POLICY_ALL = 2, //!< The ICE Agent can use any type of candidate when this value is specified. } ICE_TRANSPORT_POLICY; /** @@ -838,7 +838,7 @@ typedef enum { * @brief Type of caching implementation to use with the signaling client */ typedef enum { - SIGNALING_API_CALL_CACHE_TYPE_NONE, //!< No caching. The calls to the backend will be made for every API. + SIGNALING_API_CALL_CACHE_TYPE_NONE, //!< No caching. The calls to the backend will be made for every API. SIGNALING_API_CALL_CACHE_TYPE_DESCRIBE_GETENDPOINT, //!< Cache DeleteSignalingChannel and GetSignalingChannelEndpoint //!< backend API calls. @@ -1055,18 +1055,18 @@ typedef struct { * issues that we have today. */ typedef struct { - UINT16 maximumTransmissionUnit; //!< Controls the size of the largest packet the WebRTC SDK will send - //!< Some networks may drop packets if they exceed a certain size, and is useful in those conditions. - //!< A smaller MTU will incur higher bandwidth usage however since more packets will be generated with - //!< smaller payloads. If unset DEFAULT_MTU_SIZE will be used + UINT16 maximumTransmissionUnit; //!< Controls the size of the largest packet the WebRTC SDK will send + //!< Some networks may drop packets if they exceed a certain size, and is useful in those conditions. + //!< A smaller MTU will incur higher bandwidth usage however since more packets will be generated with + //!< smaller payloads. If unset DEFAULT_MTU_SIZE will be used UINT32 iceLocalCandidateGatheringTimeout; //!< Maximum time ice will wait for gathering STUN and RELAY candidates. Once //!< it's reached, ice will proceed with whatever candidate it current has. Use default value if 0. - UINT32 iceConnectionCheckTimeout; //!< Maximum time allowed waiting for at least one ice candidate pair to receive - //!< binding response from the peer. Use default value if 0. + UINT32 iceConnectionCheckTimeout; //!< Maximum time allowed waiting for at least one ice candidate pair to receive + //!< binding response from the peer. Use default value if 0. - UINT32 iceCandidateNominationTimeout; //!< If client is ice controlling, this is the timeout for receiving bind response of requests that has + UINT32 iceCandidateNominationTimeout; //!< If client is ice controlling, this is the timeout for receiving bind response of requests that has //!< USE_CANDIDATE attribute. If client is ice controlled, this is the timeout for receiving binding request //!< that has USE_CANDIDATE attribute after connection check is done. Use default value if 0. @@ -1077,17 +1077,17 @@ typedef struct { //!< A smaller amount of bits may result in less CPU usage on startup, but will cause a weaker certificate to be //!< generated If set to 0 the default GENERATED_CERTIFICATE_BITS will be used - BOOL generateRSACertificate; //!< GenerateRSACertificate controls if an ECDSA or RSA certificate is generated. - //!< By default we generate an ECDSA certificate but some platforms may not support them. + BOOL generateRSACertificate; //!< GenerateRSACertificate controls if an ECDSA or RSA certificate is generated. + //!< By default we generate an ECDSA certificate but some platforms may not support them. - UINT32 sendBufSize; //!< Socket send buffer length. Item larger then this size will get dropped. Use system default if 0. + UINT32 sendBufSize; //!< Socket send buffer length. Item larger then this size will get dropped. Use system default if 0. - UINT64 filterCustomData; //!< Custom Data that can be populated by the developer while developing filter function + UINT64 filterCustomData; //!< Custom Data that can be populated by the developer while developing filter function IceSetInterfaceFilterFunc iceSetInterfaceFilterFunc; //!< Filter function callback to be set when the developer //!< would like to whitelist/blacklist specific network interfaces - BOOL disableSenderSideBandwidthEstimation; //!< Disable TWCC feedback based sender bandwidth estimation, enabled by default. + BOOL disableSenderSideBandwidthEstimation; //!< Disable TWCC feedback based sender bandwidth estimation, enabled by default. //!< You want to set this to TRUE if you are on a very stable connection and want to save 1.2MB of //!< memory } KvsRtcConfiguration, *PKvsRtcConfiguration; @@ -1152,29 +1152,29 @@ typedef struct { * @brief Structure defining the basic signaling message */ typedef struct { - UINT32 version; //!< Current version of the structure + UINT32 version; //!< Current version of the structure - SIGNALING_MESSAGE_TYPE messageType; //!< Type of signaling message. + SIGNALING_MESSAGE_TYPE messageType; //!< Type of signaling message. - CHAR correlationId[MAX_CORRELATION_ID_LEN + 1]; //!< Correlation Id string + CHAR correlationId[MAX_CORRELATION_ID_LEN + 1]; //!< Correlation Id string CHAR peerClientId[MAX_SIGNALING_CLIENT_ID_LEN + 1]; //!< Sender client id - UINT32 payloadLen; //!< Optional payload length. If 0, the length will be calculated + UINT32 payloadLen; //!< Optional payload length. If 0, the length will be calculated - CHAR payload[MAX_SIGNALING_MESSAGE_LEN + 1]; //!< Actual signaling message payload + CHAR payload[MAX_SIGNALING_MESSAGE_LEN + 1]; //!< Actual signaling message payload } SignalingMessage, *PSignalingMessage; /** * @brief Structure defining the signaling message to be received */ typedef struct { - SignalingMessage signalingMessage; //!< The signaling message with details such as message type, correlation ID, - //!< peer client ID and payload + SignalingMessage signalingMessage; //!< The signaling message with details such as message type, correlation ID, + //!< peer client ID and payload - SERVICE_CALL_RESULT statusCode; //!< Response status code + SERVICE_CALL_RESULT statusCode; //!< Response status code - CHAR errorType[MAX_ERROR_TYPE_STRING_LEN + 1]; //!< Error type of the signaling message + CHAR errorType[MAX_ERROR_TYPE_STRING_LEN + 1]; //!< Error type of the signaling message CHAR description[MAX_MESSAGE_DESCRIPTION_LEN + 1]; //!< Optional description of the message } ReceivedSignalingMessage, *PReceivedSignalingMessage; @@ -1203,59 +1203,59 @@ typedef struct { * @brief Contains all signaling channel related information */ typedef struct { - UINT32 version; //!< Version of the structure + UINT32 version; //!< Version of the structure - PCHAR pChannelName; //!< Name of the signaling channel name. Maximum length is defined by MAX_CHANNEL_NAME_LEN + 1 + PCHAR pChannelName; //!< Name of the signaling channel name. Maximum length is defined by MAX_CHANNEL_NAME_LEN + 1 - PCHAR pChannelArn; //!< Channel Amazon Resource Name (ARN). This is an optional parameter - //!< Maximum length is defined by MAX_ARN_LEN+1 + PCHAR pChannelArn; //!< Channel Amazon Resource Name (ARN). This is an optional parameter + //!< Maximum length is defined by MAX_ARN_LEN+1 - PCHAR pRegion; //!< AWS Region in which the channel is to be opened. Can be empty for default - //!< Maximum length is defined by MAX_REGION_NAME_LEN+1 + PCHAR pRegion; //!< AWS Region in which the channel is to be opened. Can be empty for default + //!< Maximum length is defined by MAX_REGION_NAME_LEN+1 - PCHAR pControlPlaneUrl; //!< Optional fully qualified control plane URL - //!< Maximum length is defined by MAX_ARN_LEN+1 + PCHAR pControlPlaneUrl; //!< Optional fully qualified control plane URL + //!< Maximum length is defined by MAX_ARN_LEN+1 - PCHAR pCertPath; //!< Optional certificate path. Maximum length is defined by MAX_PATH_LEN+1 + PCHAR pCertPath; //!< Optional certificate path. Maximum length is defined by MAX_PATH_LEN+1 - PCHAR pUserAgentPostfix; //!< Optional user agent post-fix. Maximum length is defined by - //!< MAX_CUSTOM_USER_AGENT_NAME_POSTFIX_LEN+1 + PCHAR pUserAgentPostfix; //!< Optional user agent post-fix. Maximum length is defined by + //!< MAX_CUSTOM_USER_AGENT_NAME_POSTFIX_LEN+1 - PCHAR pCustomUserAgent; //!< Optional custom user agent name. Maximum length is defined by MAX_USER_AGENT_LEN+1 + PCHAR pCustomUserAgent; //!< Optional custom user agent name. Maximum length is defined by MAX_USER_AGENT_LEN+1 - PCHAR pUserAgent; //!< Combined user agent. Maximum length is defined by MAX_USER_AGENT_LEN+1 + PCHAR pUserAgent; //!< Combined user agent. Maximum length is defined by MAX_USER_AGENT_LEN+1 - PCHAR pKmsKeyId; //!< Optional KMS key id ARN. Maximum length is defined by MAX_ARN_LEN+1 + PCHAR pKmsKeyId; //!< Optional KMS key id ARN. Maximum length is defined by MAX_ARN_LEN+1 - SIGNALING_CHANNEL_TYPE channelType; //!< Channel type when creating. + SIGNALING_CHANNEL_TYPE channelType; //!< Channel type when creating. SIGNALING_CHANNEL_ROLE_TYPE channelRoleType; //!< Channel role type for the endpoint - master/viewer - BOOL reserved; //!< Reserved field for compatibility + BOOL reserved; //!< Reserved field for compatibility - UINT64 cachingPeriod; //!< Endpoint caching TTL. - //!< For no caching policy this param will be ignored. - //!< For caching policies the default value will be used - //!< if this parameter is 0 (::SIGNALING_API_CALL_CACHE_TTL_SENTINEL_VALUE). + UINT64 cachingPeriod; //!< Endpoint caching TTL. + //!< For no caching policy this param will be ignored. + //!< For caching policies the default value will be used + //!< if this parameter is 0 (::SIGNALING_API_CALL_CACHE_TTL_SENTINEL_VALUE). - BOOL retry; //!< Flag determines if a retry of the network calls is to be done on errors up to max retry times + BOOL retry; //!< Flag determines if a retry of the network calls is to be done on errors up to max retry times - BOOL reconnect; //!< Flag determines if reconnection should be attempted on connection drop + BOOL reconnect; //!< Flag determines if reconnection should be attempted on connection drop - UINT64 messageTtl; //!< The message TTL. Must be in the range of 5ns and 120ns. - //!< Specifying zero will default to 60ns + UINT64 messageTtl; //!< The message TTL. Must be in the range of 5ns and 120ns. + //!< Specifying zero will default to 60ns - UINT32 tagCount; //!< Number of tags associated with the stream + UINT32 tagCount; //!< Number of tags associated with the stream - PTag pTags; //!< Stream tags array + PTag pTags; //!< Stream tags array /* --- V1 members --- */ SIGNALING_API_CALL_CACHE_TYPE cachingPolicy; //!< Backend API call caching policy - BOOL asyncIceServerConfig; //!< This parameter has no effect any longer. All ICE config retrieving - //!< is done reactively when needed which will simplify the processing - //!< and will help with issues on a small footprint platforms + BOOL asyncIceServerConfig; //!< This parameter has no effect any longer. All ICE config retrieving + //!< is done reactively when needed which will simplify the processing + //!< and will help with issues on a small footprint platforms } ChannelInfo, *PChannelInfo; diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h index a8294fd699..187925fde4 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h @@ -274,14 +274,14 @@ typedef struct { DOMString remoteCertificateId; //!< For components where DTLS is negotiated, give remote certificate CHAR tlsVersion[MAX_TLS_VERSION_LENGTH + 1]; //!< For components where DTLS is negotiated, the TLS version agreed CHAR dtlsCipher[MAX_DTLS_CIPHER_LENGTH + - 1]; //!< Descriptive name of the cipher suite used for the DTLS transport. + 1]; //!< Descriptive name of the cipher suite used for the DTLS transport. //!< Acceptable values: https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4 CHAR srtpCipher[MAX_SRTP_CIPHER_LENGTH + 1]; //!< Descriptive name of the protection profile used for the SRTP transport //!< Acceptable values: https://www.iana.org/assignments/srtp-protection/srtp-protection.xhtml CHAR tlsGroup[MAX_TLS_GROUP_LENGHTH + - 1]; //!< Descriptive name of the group used for the encryption - //!< Acceptable values: https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 - RTC_ICE_ROLE iceRole; //!< Set to the current value of the "role" attribute of the underlying RTCDtlsTransport's "transport" + 1]; //!< Descriptive name of the group used for the encryption + //!< Acceptable values: https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 + RTC_ICE_ROLE iceRole; //!< Set to the current value of the "role" attribute of the underlying RTCDtlsTransport's "transport" RTC_DTLS_TRANSPORT_STATE_STATS dtlsState; //!< Set to the current value of the "state" attribute of the underlying RTCDtlsTransport UINT64 packetsSent; //!< Total number of packets sent over the transport UINT64 packetsReceived; //!< Total number of packets received over the transport @@ -461,7 +461,7 @@ typedef struct { //!< after a frame has been decoded. See totalInterFrameDelay for details on how to calculate the interframe //!< delay variance. - BOOL voiceActivityFlag; //!< TODO Only valid for audio. Whether the last RTP packet whose frame was delivered to the RTCRtpReceiver's + BOOL voiceActivityFlag; //!< TODO Only valid for audio. Whether the last RTP packet whose frame was delivered to the RTCRtpReceiver's //!< MediaStreamTrack for playout contained voice activity or not based on the presence of the V bit in the extension //!< header, as defined in [RFC6464]. This is the stats-equivalent of RTCRtpSynchronizationSource.voiceActivityFlag in //!< [[WEBRTC]. diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index 26a4a5ce1e..ef438266e5 100644 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -2642,7 +2642,7 @@ STATUS iceAgentCheckPeerReflexiveCandidate(PIceAgent pIceAgent, PKvsIpAddress pI CHK_STATUS(doubleListGetNodeCount(pIceAgent->remoteCandidates, &candidateCount)); CHK_WARN(candidateCount < KVS_ICE_MAX_REMOTE_CANDIDATE_COUNT, retStatus, "max remote candidate count exceeded"); // return early if limit exceeded CHK_STATUS(findCandidateWithIp(pIpAddress, pIceAgent->remoteCandidates, &pIceCandidate)); - CHK(pIceCandidate == NULL, retStatus); // return early if duplicated + CHK(pIceCandidate == NULL, retStatus); // return early if duplicated DLOGD("New remote peer reflexive candidate found"); CHK((pIceCandidate = MEMCALLOC(1, SIZEOF(IceCandidate))) != NULL, STATUS_NOT_ENOUGH_MEMORY); diff --git a/src/source/PeerConnection/SessionDescription.c b/src/source/PeerConnection/SessionDescription.c index a3fedc2cc4..d8831e3a7b 100644 --- a/src/source/PeerConnection/SessionDescription.c +++ b/src/source/PeerConnection/SessionDescription.c @@ -1018,7 +1018,7 @@ STATUS findTransceiversByRemoteDescription(PKvsPeerConnection pKvsPeerConnection if (count == 4) { codecs = attributeValue; // codecs = 111 63 103 104 9 0 8 106 105 13 110 112 113 126 } - if (count > 3) { // look for codec values from payload types (111 63 103 104 9 0 8 106 105 13 110 112 113 126) + if (count > 3) { // look for codec values from payload types (111 63 103 104 9 0 8 106 105 13 110 112 113 126) if (STRNCMP(DEFAULT_PAYLOAD_MULAW_STR, attributeValue, tokenLen) == 0) { supportCodec = TRUE; rtcCodec = RTC_CODEC_MULAW; diff --git a/src/source/Rtcp/RtcpPacket.h b/src/source/Rtcp/RtcpPacket.h index a2106fadfb..9dfee9424a 100644 --- a/src/source/Rtcp/RtcpPacket.h +++ b/src/source/Rtcp/RtcpPacket.h @@ -36,18 +36,8 @@ extern "C" { // is set to 5 seconds. #define RTCP_FIRST_REPORT_DELAY (3 * HUNDREDS_OF_NANOS_IN_A_SECOND) -#define RTCP_PACKET_SENDER_REPORT_MINLEN 24 -#define RTCP_PACKET_RECEIVER_REPORT_BLOCK_LEN 24 -#define RTCP_PACKET_RECEIVER_REPORT_MINLEN 4 + RTCP_PACKET_RECEIVER_REPORT_BLOCK_LEN - -// https://tools.ietf.org/html/rfc3550#section-4 -// If the participant has not yet sent an RTCP packet (the variable -// initial is true), the constant Tmin is set to 2.5 seconds, else it -// is set to 5 seconds. -#define RTCP_FIRST_REPORT_DELAY (3 * HUNDREDS_OF_NANOS_IN_A_SECOND) - typedef enum { - RTCP_PACKET_TYPE_FIR = 192, // https://tools.ietf.org/html/rfc2032#section-5.2.1 + RTCP_PACKET_TYPE_FIR = 192, // https://tools.ietf.org/html/rfc2032#section-5.2.1 RTCP_PACKET_TYPE_SENDER_REPORT = 200, RTCP_PACKET_TYPE_RECEIVER_REPORT = 201, // https://tools.ietf.org/html/rfc3550#section-6.4.2 RTCP_PACKET_TYPE_SOURCE_DESCRIPTION = 202, From c194ac0aae755b19c7282ab22b92402c6a96464d Mon Sep 17 00:00:00 2001 From: jdelapla Date: Wed, 5 Apr 2023 11:23:10 -0700 Subject: [PATCH 071/102] Changed sample frames to have 1 second GOP size, and removed overly verbose log (#1686) --- samples/h264SampleFrames/README.md | 4 ++-- samples/h264SampleFrames/frame-0001.h264 | Bin 4322 -> 4453 bytes samples/h264SampleFrames/frame-0002.h264 | Bin 392 -> 259 bytes samples/h264SampleFrames/frame-0003.h264 | Bin 282 -> 310 bytes samples/h264SampleFrames/frame-0004.h264 | Bin 748 -> 821 bytes samples/h264SampleFrames/frame-0005.h264 | Bin 922 -> 1062 bytes samples/h264SampleFrames/frame-0006.h264 | Bin 992 -> 1025 bytes samples/h264SampleFrames/frame-0007.h264 | Bin 746 -> 836 bytes samples/h264SampleFrames/frame-0008.h264 | Bin 440 -> 795 bytes samples/h264SampleFrames/frame-0009.h264 | Bin 574 -> 592 bytes samples/h264SampleFrames/frame-0010.h264 | Bin 544 -> 653 bytes samples/h264SampleFrames/frame-0011.h264 | Bin 656 -> 668 bytes samples/h264SampleFrames/frame-0012.h264 | Bin 427 -> 451 bytes samples/h264SampleFrames/frame-0013.h264 | Bin 529 -> 613 bytes samples/h264SampleFrames/frame-0014.h264 | Bin 725 -> 636 bytes samples/h264SampleFrames/frame-0015.h264 | Bin 556 -> 708 bytes samples/h264SampleFrames/frame-0016.h264 | Bin 669 -> 789 bytes samples/h264SampleFrames/frame-0017.h264 | Bin 635 -> 661 bytes samples/h264SampleFrames/frame-0018.h264 | Bin 745 -> 725 bytes samples/h264SampleFrames/frame-0019.h264 | Bin 688 -> 688 bytes samples/h264SampleFrames/frame-0020.h264 | Bin 598 -> 766 bytes samples/h264SampleFrames/frame-0021.h264 | Bin 843 -> 1080 bytes samples/h264SampleFrames/frame-0022.h264 | Bin 542 -> 595 bytes samples/h264SampleFrames/frame-0023.h264 | Bin 622 -> 725 bytes samples/h264SampleFrames/frame-0024.h264 | Bin 990 -> 815 bytes samples/h264SampleFrames/frame-0025.h264 | Bin 719 -> 830 bytes samples/h264SampleFrames/frame-0026.h264 | Bin 769 -> 5341 bytes samples/h264SampleFrames/frame-0027.h264 | Bin 652 -> 938 bytes samples/h264SampleFrames/frame-0028.h264 | Bin 778 -> 1040 bytes samples/h264SampleFrames/frame-0029.h264 | Bin 692 -> 749 bytes samples/h264SampleFrames/frame-0030.h264 | Bin 724 -> 884 bytes samples/h264SampleFrames/frame-0031.h264 | Bin 830 -> 823 bytes samples/h264SampleFrames/frame-0032.h264 | Bin 514 -> 605 bytes samples/h264SampleFrames/frame-0033.h264 | Bin 609 -> 706 bytes samples/h264SampleFrames/frame-0034.h264 | Bin 837 -> 792 bytes samples/h264SampleFrames/frame-0035.h264 | Bin 605 -> 690 bytes samples/h264SampleFrames/frame-0036.h264 | Bin 902 -> 869 bytes samples/h264SampleFrames/frame-0037.h264 | Bin 669 -> 647 bytes samples/h264SampleFrames/frame-0038.h264 | Bin 883 -> 874 bytes samples/h264SampleFrames/frame-0039.h264 | Bin 1151 -> 1001 bytes samples/h264SampleFrames/frame-0040.h264 | Bin 685 -> 758 bytes samples/h264SampleFrames/frame-0041.h264 | Bin 921 -> 1119 bytes samples/h264SampleFrames/frame-0042.h264 | Bin 721 -> 810 bytes samples/h264SampleFrames/frame-0043.h264 | Bin 696 -> 751 bytes samples/h264SampleFrames/frame-0044.h264 | Bin 925 -> 855 bytes samples/h264SampleFrames/frame-0045.h264 | Bin 676 -> 882 bytes samples/h264SampleFrames/frame-0046.h264 | Bin 1135 -> 1189 bytes samples/h264SampleFrames/frame-0047.h264 | Bin 923 -> 675 bytes samples/h264SampleFrames/frame-0048.h264 | Bin 780 -> 1070 bytes samples/h264SampleFrames/frame-0049.h264 | Bin 1124 -> 1096 bytes samples/h264SampleFrames/frame-0050.h264 | Bin 750 -> 865 bytes samples/h264SampleFrames/frame-0051.h264 | Bin 1382 -> 5963 bytes samples/h264SampleFrames/frame-0052.h264 | Bin 807 -> 1400 bytes samples/h264SampleFrames/frame-0053.h264 | Bin 946 -> 921 bytes samples/h264SampleFrames/frame-0054.h264 | Bin 913 -> 1010 bytes samples/h264SampleFrames/frame-0055.h264 | Bin 748 -> 990 bytes samples/h264SampleFrames/frame-0056.h264 | Bin 1096 -> 1045 bytes samples/h264SampleFrames/frame-0057.h264 | Bin 747 -> 806 bytes samples/h264SampleFrames/frame-0058.h264 | Bin 758 -> 813 bytes samples/h264SampleFrames/frame-0059.h264 | Bin 1122 -> 1074 bytes samples/h264SampleFrames/frame-0060.h264 | Bin 716 -> 803 bytes samples/h264SampleFrames/frame-0061.h264 | Bin 1118 -> 1026 bytes samples/h264SampleFrames/frame-0062.h264 | Bin 749 -> 709 bytes samples/h264SampleFrames/frame-0063.h264 | Bin 899 -> 885 bytes samples/h264SampleFrames/frame-0064.h264 | Bin 1377 -> 1087 bytes samples/h264SampleFrames/frame-0065.h264 | Bin 946 -> 957 bytes samples/h264SampleFrames/frame-0066.h264 | Bin 1231 -> 1349 bytes samples/h264SampleFrames/frame-0067.h264 | Bin 869 -> 929 bytes samples/h264SampleFrames/frame-0068.h264 | Bin 939 -> 1191 bytes samples/h264SampleFrames/frame-0069.h264 | Bin 1080 -> 975 bytes samples/h264SampleFrames/frame-0070.h264 | Bin 1032 -> 870 bytes samples/h264SampleFrames/frame-0071.h264 | Bin 1231 -> 1353 bytes samples/h264SampleFrames/frame-0072.h264 | Bin 827 -> 716 bytes samples/h264SampleFrames/frame-0073.h264 | Bin 910 -> 886 bytes samples/h264SampleFrames/frame-0074.h264 | Bin 1227 -> 1211 bytes samples/h264SampleFrames/frame-0075.h264 | Bin 947 -> 901 bytes samples/h264SampleFrames/frame-0076.h264 | Bin 1595 -> 6184 bytes samples/h264SampleFrames/frame-0077.h264 | Bin 821 -> 1718 bytes samples/h264SampleFrames/frame-0078.h264 | Bin 1294 -> 1008 bytes samples/h264SampleFrames/frame-0079.h264 | Bin 953 -> 893 bytes samples/h264SampleFrames/frame-0080.h264 | Bin 954 -> 978 bytes samples/h264SampleFrames/frame-0081.h264 | Bin 1232 -> 1368 bytes samples/h264SampleFrames/frame-0082.h264 | Bin 948 -> 888 bytes samples/h264SampleFrames/frame-0083.h264 | Bin 982 -> 1069 bytes samples/h264SampleFrames/frame-0084.h264 | Bin 1254 -> 1161 bytes samples/h264SampleFrames/frame-0085.h264 | Bin 870 -> 912 bytes samples/h264SampleFrames/frame-0086.h264 | Bin 1310 -> 1182 bytes samples/h264SampleFrames/frame-0087.h264 | Bin 952 -> 797 bytes samples/h264SampleFrames/frame-0088.h264 | Bin 1142 -> 1161 bytes samples/h264SampleFrames/frame-0089.h264 | Bin 1288 -> 1032 bytes samples/h264SampleFrames/frame-0090.h264 | Bin 1099 -> 1023 bytes samples/h264SampleFrames/frame-0091.h264 | Bin 1382 -> 1430 bytes samples/h264SampleFrames/frame-0092.h264 | Bin 1126 -> 1056 bytes samples/h264SampleFrames/frame-0093.h264 | Bin 1048 -> 1154 bytes samples/h264SampleFrames/frame-0094.h264 | Bin 1172 -> 1120 bytes samples/h264SampleFrames/frame-0095.h264 | Bin 765 -> 807 bytes samples/h264SampleFrames/frame-0096.h264 | Bin 1503 -> 1570 bytes samples/h264SampleFrames/frame-0097.h264 | Bin 1127 -> 800 bytes samples/h264SampleFrames/frame-0098.h264 | Bin 1154 -> 1105 bytes samples/h264SampleFrames/frame-0099.h264 | Bin 1550 -> 1356 bytes samples/h264SampleFrames/frame-0100.h264 | Bin 1002 -> 984 bytes samples/h264SampleFrames/frame-0101.h264 | Bin 1878 -> 6370 bytes samples/h264SampleFrames/frame-0102.h264 | Bin 1232 -> 2038 bytes samples/h264SampleFrames/frame-0103.h264 | Bin 1269 -> 1351 bytes samples/h264SampleFrames/frame-0104.h264 | Bin 1230 -> 1263 bytes samples/h264SampleFrames/frame-0105.h264 | Bin 1127 -> 1148 bytes samples/h264SampleFrames/frame-0106.h264 | Bin 1469 -> 1309 bytes samples/h264SampleFrames/frame-0107.h264 | Bin 914 -> 861 bytes samples/h264SampleFrames/frame-0108.h264 | Bin 1108 -> 1287 bytes samples/h264SampleFrames/frame-0109.h264 | Bin 1325 -> 1228 bytes samples/h264SampleFrames/frame-0110.h264 | Bin 1156 -> 1161 bytes samples/h264SampleFrames/frame-0111.h264 | Bin 1570 -> 1380 bytes samples/h264SampleFrames/frame-0112.h264 | Bin 1080 -> 1055 bytes samples/h264SampleFrames/frame-0113.h264 | Bin 1384 -> 1271 bytes samples/h264SampleFrames/frame-0114.h264 | Bin 1475 -> 1134 bytes samples/h264SampleFrames/frame-0115.h264 | Bin 1022 -> 1015 bytes samples/h264SampleFrames/frame-0116.h264 | Bin 1521 -> 1551 bytes samples/h264SampleFrames/frame-0117.h264 | Bin 1232 -> 1149 bytes samples/h264SampleFrames/frame-0118.h264 | Bin 1536 -> 1519 bytes samples/h264SampleFrames/frame-0119.h264 | Bin 1593 -> 1608 bytes samples/h264SampleFrames/frame-0120.h264 | Bin 1200 -> 1402 bytes samples/h264SampleFrames/frame-0121.h264 | Bin 1508 -> 1593 bytes samples/h264SampleFrames/frame-0122.h264 | Bin 969 -> 1034 bytes samples/h264SampleFrames/frame-0123.h264 | Bin 1260 -> 1201 bytes samples/h264SampleFrames/frame-0124.h264 | Bin 1467 -> 1394 bytes samples/h264SampleFrames/frame-0125.h264 | Bin 1046 -> 1098 bytes samples/h264SampleFrames/frame-0126.h264 | Bin 1560 -> 6478 bytes samples/h264SampleFrames/frame-0127.h264 | Bin 1120 -> 2216 bytes samples/h264SampleFrames/frame-0128.h264 | Bin 1094 -> 1139 bytes samples/h264SampleFrames/frame-0129.h264 | Bin 1241 -> 1150 bytes samples/h264SampleFrames/frame-0130.h264 | Bin 1167 -> 1269 bytes samples/h264SampleFrames/frame-0131.h264 | Bin 1332 -> 1264 bytes samples/h264SampleFrames/frame-0132.h264 | Bin 1205 -> 1414 bytes samples/h264SampleFrames/frame-0133.h264 | Bin 1077 -> 1115 bytes samples/h264SampleFrames/frame-0134.h264 | Bin 1312 -> 1263 bytes samples/h264SampleFrames/frame-0135.h264 | Bin 1040 -> 1064 bytes samples/h264SampleFrames/frame-0136.h264 | Bin 1439 -> 1275 bytes samples/h264SampleFrames/frame-0137.h264 | Bin 1214 -> 904 bytes samples/h264SampleFrames/frame-0138.h264 | Bin 1106 -> 1321 bytes samples/h264SampleFrames/frame-0139.h264 | Bin 1585 -> 1304 bytes samples/h264SampleFrames/frame-0140.h264 | Bin 977 -> 966 bytes samples/h264SampleFrames/frame-0141.h264 | Bin 1435 -> 1515 bytes samples/h264SampleFrames/frame-0142.h264 | Bin 1101 -> 1186 bytes samples/h264SampleFrames/frame-0143.h264 | Bin 1172 -> 1116 bytes samples/h264SampleFrames/frame-0144.h264 | Bin 2209 -> 2169 bytes samples/h264SampleFrames/frame-0145.h264 | Bin 884 -> 1865 bytes samples/h264SampleFrames/frame-0146.h264 | Bin 1457 -> 1660 bytes samples/h264SampleFrames/frame-0147.h264 | Bin 997 -> 839 bytes samples/h264SampleFrames/frame-0148.h264 | Bin 1104 -> 1307 bytes samples/h264SampleFrames/frame-0149.h264 | Bin 1592 -> 1512 bytes samples/h264SampleFrames/frame-0150.h264 | Bin 1018 -> 1226 bytes samples/h264SampleFrames/frame-0151.h264 | Bin 1778 -> 6603 bytes samples/h264SampleFrames/frame-0152.h264 | Bin 1016 -> 2315 bytes samples/h264SampleFrames/frame-0153.h264 | Bin 1130 -> 1262 bytes samples/h264SampleFrames/frame-0154.h264 | Bin 1196 -> 1247 bytes samples/h264SampleFrames/frame-0155.h264 | Bin 1007 -> 1084 bytes samples/h264SampleFrames/frame-0156.h264 | Bin 1585 -> 1358 bytes samples/h264SampleFrames/frame-0157.h264 | Bin 1868 -> 2317 bytes samples/h264SampleFrames/frame-0158.h264 | Bin 1927 -> 1140 bytes samples/h264SampleFrames/frame-0159.h264 | Bin 1474 -> 1459 bytes samples/h264SampleFrames/frame-0160.h264 | Bin 939 -> 1050 bytes samples/h264SampleFrames/frame-0161.h264 | Bin 1492 -> 1431 bytes samples/h264SampleFrames/frame-0162.h264 | Bin 960 -> 864 bytes samples/h264SampleFrames/frame-0163.h264 | Bin 1185 -> 1411 bytes samples/h264SampleFrames/frame-0164.h264 | Bin 1647 -> 1398 bytes samples/h264SampleFrames/frame-0165.h264 | Bin 1098 -> 1175 bytes samples/h264SampleFrames/frame-0166.h264 | Bin 1438 -> 1611 bytes samples/h264SampleFrames/frame-0167.h264 | Bin 974 -> 1098 bytes samples/h264SampleFrames/frame-0168.h264 | Bin 1183 -> 1240 bytes samples/h264SampleFrames/frame-0169.h264 | Bin 1208 -> 1175 bytes samples/h264SampleFrames/frame-0170.h264 | Bin 1006 -> 1213 bytes samples/h264SampleFrames/frame-0171.h264 | Bin 1468 -> 1691 bytes samples/h264SampleFrames/frame-0172.h264 | Bin 981 -> 873 bytes samples/h264SampleFrames/frame-0173.h264 | Bin 1154 -> 1186 bytes samples/h264SampleFrames/frame-0174.h264 | Bin 1534 -> 1528 bytes samples/h264SampleFrames/frame-0175.h264 | Bin 999 -> 1142 bytes samples/h264SampleFrames/frame-0176.h264 | Bin 1733 -> 6407 bytes samples/h264SampleFrames/frame-0177.h264 | Bin 932 -> 2354 bytes samples/h264SampleFrames/frame-0178.h264 | Bin 1141 -> 1381 bytes samples/h264SampleFrames/frame-0179.h264 | Bin 1169 -> 1474 bytes samples/h264SampleFrames/frame-0180.h264 | Bin 1012 -> 1192 bytes samples/h264SampleFrames/frame-0181.h264 | Bin 1355 -> 1454 bytes samples/h264SampleFrames/frame-0182.h264 | Bin 909 -> 887 bytes samples/h264SampleFrames/frame-0183.h264 | Bin 1039 -> 1224 bytes samples/h264SampleFrames/frame-0184.h264 | Bin 1389 -> 1436 bytes samples/h264SampleFrames/frame-0185.h264 | Bin 1010 -> 1248 bytes samples/h264SampleFrames/frame-0186.h264 | Bin 1358 -> 1348 bytes samples/h264SampleFrames/frame-0187.h264 | Bin 1046 -> 978 bytes samples/h264SampleFrames/frame-0188.h264 | Bin 1196 -> 1181 bytes samples/h264SampleFrames/frame-0189.h264 | Bin 1508 -> 1303 bytes samples/h264SampleFrames/frame-0190.h264 | Bin 1124 -> 1427 bytes samples/h264SampleFrames/frame-0191.h264 | Bin 1449 -> 1704 bytes samples/h264SampleFrames/frame-0192.h264 | Bin 974 -> 1163 bytes samples/h264SampleFrames/frame-0193.h264 | Bin 1133 -> 1290 bytes samples/h264SampleFrames/frame-0194.h264 | Bin 1299 -> 1313 bytes samples/h264SampleFrames/frame-0195.h264 | Bin 1076 -> 1152 bytes samples/h264SampleFrames/frame-0196.h264 | Bin 1590 -> 1856 bytes samples/h264SampleFrames/frame-0197.h264 | Bin 983 -> 934 bytes samples/h264SampleFrames/frame-0198.h264 | Bin 1284 -> 1393 bytes samples/h264SampleFrames/frame-0199.h264 | Bin 1706 -> 1777 bytes samples/h264SampleFrames/frame-0200.h264 | Bin 1075 -> 1425 bytes samples/h264SampleFrames/frame-0201.h264 | Bin 1992 -> 6653 bytes samples/h264SampleFrames/frame-0202.h264 | Bin 1039 -> 2644 bytes samples/h264SampleFrames/frame-0203.h264 | Bin 1139 -> 1742 bytes samples/h264SampleFrames/frame-0204.h264 | Bin 1235 -> 1205 bytes samples/h264SampleFrames/frame-0205.h264 | Bin 1035 -> 1293 bytes samples/h264SampleFrames/frame-0206.h264 | Bin 1475 -> 1609 bytes samples/h264SampleFrames/frame-0207.h264 | Bin 915 -> 943 bytes samples/h264SampleFrames/frame-0208.h264 | Bin 1017 -> 1196 bytes samples/h264SampleFrames/frame-0209.h264 | Bin 1357 -> 1435 bytes samples/h264SampleFrames/frame-0210.h264 | Bin 1017 -> 1519 bytes samples/h264SampleFrames/frame-0211.h264 | Bin 1502 -> 1552 bytes samples/h264SampleFrames/frame-0212.h264 | Bin 1056 -> 1054 bytes samples/h264SampleFrames/frame-0213.h264 | Bin 1067 -> 1191 bytes samples/h264SampleFrames/frame-0214.h264 | Bin 1361 -> 1312 bytes samples/h264SampleFrames/frame-0215.h264 | Bin 1009 -> 1190 bytes samples/h264SampleFrames/frame-0216.h264 | Bin 1455 -> 1685 bytes samples/h264SampleFrames/frame-0217.h264 | Bin 924 -> 1174 bytes samples/h264SampleFrames/frame-0218.h264 | Bin 1056 -> 1234 bytes samples/h264SampleFrames/frame-0219.h264 | Bin 1325 -> 1412 bytes samples/h264SampleFrames/frame-0220.h264 | Bin 1081 -> 1235 bytes samples/h264SampleFrames/frame-0221.h264 | Bin 1490 -> 1830 bytes samples/h264SampleFrames/frame-0222.h264 | Bin 978 -> 1091 bytes samples/h264SampleFrames/frame-0223.h264 | Bin 1035 -> 1165 bytes samples/h264SampleFrames/frame-0224.h264 | Bin 1618 -> 1677 bytes samples/h264SampleFrames/frame-0225.h264 | Bin 1122 -> 1327 bytes samples/h264SampleFrames/frame-0226.h264 | Bin 1757 -> 6784 bytes samples/h264SampleFrames/frame-0227.h264 | Bin 1009 -> 2754 bytes samples/h264SampleFrames/frame-0228.h264 | Bin 1037 -> 1219 bytes samples/h264SampleFrames/frame-0229.h264 | Bin 1112 -> 1441 bytes samples/h264SampleFrames/frame-0230.h264 | Bin 1094 -> 1496 bytes samples/h264SampleFrames/frame-0231.h264 | Bin 1406 -> 1584 bytes samples/h264SampleFrames/frame-0232.h264 | Bin 938 -> 1096 bytes samples/h264SampleFrames/frame-0233.h264 | Bin 1058 -> 1241 bytes samples/h264SampleFrames/frame-0234.h264 | Bin 1382 -> 1489 bytes samples/h264SampleFrames/frame-0235.h264 | Bin 1009 -> 1204 bytes samples/h264SampleFrames/frame-0236.h264 | Bin 1393 -> 1440 bytes samples/h264SampleFrames/frame-0237.h264 | Bin 1097 -> 1118 bytes samples/h264SampleFrames/frame-0238.h264 | Bin 1077 -> 1159 bytes samples/h264SampleFrames/frame-0239.h264 | Bin 1667 -> 1637 bytes samples/h264SampleFrames/frame-0240.h264 | Bin 944 -> 1111 bytes samples/h264SampleFrames/frame-0241.h264 | Bin 1428 -> 1789 bytes samples/h264SampleFrames/frame-0242.h264 | Bin 1045 -> 1312 bytes samples/h264SampleFrames/frame-0243.h264 | Bin 1070 -> 1208 bytes samples/h264SampleFrames/frame-0244.h264 | Bin 1357 -> 1406 bytes samples/h264SampleFrames/frame-0245.h264 | Bin 1083 -> 1151 bytes samples/h264SampleFrames/frame-0246.h264 | Bin 1474 -> 1813 bytes samples/h264SampleFrames/frame-0247.h264 | Bin 933 -> 957 bytes samples/h264SampleFrames/frame-0248.h264 | Bin 1072 -> 1229 bytes samples/h264SampleFrames/frame-0249.h264 | Bin 1506 -> 1672 bytes samples/h264SampleFrames/frame-0250.h264 | Bin 1029 -> 1292 bytes samples/h264SampleFrames/frame-0251.h264 | Bin 5565 -> 6533 bytes samples/h264SampleFrames/frame-0252.h264 | Bin 2812 -> 2665 bytes samples/h264SampleFrames/frame-0253.h264 | Bin 1152 -> 1624 bytes samples/h264SampleFrames/frame-0254.h264 | Bin 1251 -> 1439 bytes samples/h264SampleFrames/frame-0255.h264 | Bin 960 -> 1089 bytes samples/h264SampleFrames/frame-0256.h264 | Bin 1389 -> 1549 bytes samples/h264SampleFrames/frame-0257.h264 | Bin 1028 -> 1174 bytes samples/h264SampleFrames/frame-0258.h264 | Bin 961 -> 1283 bytes samples/h264SampleFrames/frame-0259.h264 | Bin 1429 -> 1585 bytes samples/h264SampleFrames/frame-0260.h264 | Bin 918 -> 1166 bytes samples/h264SampleFrames/frame-0261.h264 | Bin 1451 -> 1540 bytes samples/h264SampleFrames/frame-0262.h264 | Bin 948 -> 1107 bytes samples/h264SampleFrames/frame-0263.h264 | Bin 1099 -> 1263 bytes samples/h264SampleFrames/frame-0264.h264 | Bin 1652 -> 1518 bytes samples/h264SampleFrames/frame-0265.h264 | Bin 1010 -> 1380 bytes samples/h264SampleFrames/frame-0266.h264 | Bin 1451 -> 1799 bytes samples/h264SampleFrames/frame-0267.h264 | Bin 927 -> 1191 bytes samples/h264SampleFrames/frame-0268.h264 | Bin 1137 -> 1355 bytes samples/h264SampleFrames/frame-0269.h264 | Bin 1214 -> 1256 bytes samples/h264SampleFrames/frame-0270.h264 | Bin 1071 -> 1221 bytes samples/h264SampleFrames/frame-0271.h264 | Bin 1466 -> 1778 bytes samples/h264SampleFrames/frame-0272.h264 | Bin 960 -> 938 bytes samples/h264SampleFrames/frame-0273.h264 | Bin 1097 -> 1261 bytes samples/h264SampleFrames/frame-0274.h264 | Bin 1627 -> 1742 bytes samples/h264SampleFrames/frame-0275.h264 | Bin 1017 -> 1292 bytes samples/h264SampleFrames/frame-0276.h264 | Bin 1645 -> 6330 bytes samples/h264SampleFrames/frame-0277.h264 | Bin 1036 -> 2486 bytes samples/h264SampleFrames/frame-0278.h264 | Bin 1176 -> 1653 bytes samples/h264SampleFrames/frame-0279.h264 | Bin 1123 -> 1277 bytes samples/h264SampleFrames/frame-0280.h264 | Bin 1018 -> 1352 bytes samples/h264SampleFrames/frame-0281.h264 | Bin 1446 -> 1759 bytes samples/h264SampleFrames/frame-0282.h264 | Bin 814 -> 993 bytes samples/h264SampleFrames/frame-0283.h264 | Bin 959 -> 1187 bytes samples/h264SampleFrames/frame-0284.h264 | Bin 1305 -> 1444 bytes samples/h264SampleFrames/frame-0285.h264 | Bin 887 -> 1168 bytes samples/h264SampleFrames/frame-0286.h264 | Bin 1402 -> 1455 bytes samples/h264SampleFrames/frame-0287.h264 | Bin 1014 -> 998 bytes samples/h264SampleFrames/frame-0288.h264 | Bin 1125 -> 1248 bytes samples/h264SampleFrames/frame-0289.h264 | Bin 1507 -> 1373 bytes samples/h264SampleFrames/frame-0290.h264 | Bin 1123 -> 1439 bytes samples/h264SampleFrames/frame-0291.h264 | Bin 1499 -> 1829 bytes samples/h264SampleFrames/frame-0292.h264 | Bin 1054 -> 1289 bytes samples/h264SampleFrames/frame-0293.h264 | Bin 1112 -> 1271 bytes samples/h264SampleFrames/frame-0294.h264 | Bin 1315 -> 1342 bytes samples/h264SampleFrames/frame-0295.h264 | Bin 989 -> 1126 bytes samples/h264SampleFrames/frame-0296.h264 | Bin 1485 -> 1819 bytes samples/h264SampleFrames/frame-0297.h264 | Bin 997 -> 993 bytes samples/h264SampleFrames/frame-0298.h264 | Bin 1126 -> 1272 bytes samples/h264SampleFrames/frame-0299.h264 | Bin 1634 -> 1773 bytes samples/h264SampleFrames/frame-0300.h264 | Bin 1125 -> 1416 bytes samples/h264SampleFrames/frame-0301.h264 | Bin 1884 -> 6553 bytes samples/h264SampleFrames/frame-0302.h264 | Bin 1193 -> 2801 bytes samples/h264SampleFrames/frame-0303.h264 | Bin 1159 -> 1563 bytes samples/h264SampleFrames/frame-0304.h264 | Bin 1208 -> 1300 bytes samples/h264SampleFrames/frame-0305.h264 | Bin 1099 -> 1460 bytes samples/h264SampleFrames/frame-0306.h264 | Bin 1409 -> 1627 bytes samples/h264SampleFrames/frame-0307.h264 | Bin 825 -> 1011 bytes samples/h264SampleFrames/frame-0308.h264 | Bin 1094 -> 1322 bytes samples/h264SampleFrames/frame-0309.h264 | Bin 1281 -> 1430 bytes samples/h264SampleFrames/frame-0310.h264 | Bin 1007 -> 1303 bytes samples/h264SampleFrames/frame-0311.h264 | Bin 1512 -> 1572 bytes samples/h264SampleFrames/frame-0312.h264 | Bin 1035 -> 1077 bytes samples/h264SampleFrames/frame-0313.h264 | Bin 1180 -> 1268 bytes samples/h264SampleFrames/frame-0314.h264 | Bin 1460 -> 1367 bytes samples/h264SampleFrames/frame-0315.h264 | Bin 1067 -> 1235 bytes samples/h264SampleFrames/frame-0316.h264 | Bin 1428 -> 1767 bytes samples/h264SampleFrames/frame-0317.h264 | Bin 949 -> 1199 bytes samples/h264SampleFrames/frame-0318.h264 | Bin 989 -> 1170 bytes samples/h264SampleFrames/frame-0319.h264 | Bin 1251 -> 1360 bytes samples/h264SampleFrames/frame-0320.h264 | Bin 909 -> 1131 bytes samples/h264SampleFrames/frame-0321.h264 | Bin 1367 -> 1742 bytes samples/h264SampleFrames/frame-0322.h264 | Bin 1019 -> 1024 bytes samples/h264SampleFrames/frame-0323.h264 | Bin 1093 -> 1234 bytes samples/h264SampleFrames/frame-0324.h264 | Bin 1499 -> 1632 bytes samples/h264SampleFrames/frame-0325.h264 | Bin 1171 -> 1374 bytes samples/h264SampleFrames/frame-0326.h264 | Bin 1766 -> 6661 bytes samples/h264SampleFrames/frame-0327.h264 | Bin 1050 -> 2762 bytes samples/h264SampleFrames/frame-0328.h264 | Bin 1199 -> 1457 bytes samples/h264SampleFrames/frame-0329.h264 | Bin 1163 -> 1254 bytes samples/h264SampleFrames/frame-0330.h264 | Bin 1025 -> 1457 bytes samples/h264SampleFrames/frame-0331.h264 | Bin 1413 -> 1616 bytes samples/h264SampleFrames/frame-0332.h264 | Bin 834 -> 1034 bytes samples/h264SampleFrames/frame-0333.h264 | Bin 1080 -> 1314 bytes samples/h264SampleFrames/frame-0334.h264 | Bin 1316 -> 1448 bytes samples/h264SampleFrames/frame-0335.h264 | Bin 1046 -> 1564 bytes samples/h264SampleFrames/frame-0336.h264 | Bin 1359 -> 1428 bytes samples/h264SampleFrames/frame-0337.h264 | Bin 1026 -> 1070 bytes samples/h264SampleFrames/frame-0338.h264 | Bin 1014 -> 1165 bytes samples/h264SampleFrames/frame-0339.h264 | Bin 2094 -> 1924 bytes samples/h264SampleFrames/frame-0340.h264 | Bin 1261 -> 1192 bytes samples/h264SampleFrames/frame-0341.h264 | Bin 1558 -> 1921 bytes samples/h264SampleFrames/frame-0342.h264 | Bin 1148 -> 1384 bytes samples/h264SampleFrames/frame-0343.h264 | Bin 1054 -> 1237 bytes samples/h264SampleFrames/frame-0344.h264 | Bin 1325 -> 1436 bytes samples/h264SampleFrames/frame-0345.h264 | Bin 1030 -> 1227 bytes samples/h264SampleFrames/frame-0346.h264 | Bin 1507 -> 1846 bytes samples/h264SampleFrames/frame-0347.h264 | Bin 955 -> 953 bytes samples/h264SampleFrames/frame-0348.h264 | Bin 1146 -> 1298 bytes samples/h264SampleFrames/frame-0349.h264 | Bin 1553 -> 1674 bytes samples/h264SampleFrames/frame-0350.h264 | Bin 1033 -> 1278 bytes samples/h264SampleFrames/frame-0351.h264 | Bin 1833 -> 6536 bytes samples/h264SampleFrames/frame-0352.h264 | Bin 1952 -> 3664 bytes samples/h264SampleFrames/frame-0353.h264 | Bin 1911 -> 2171 bytes samples/h264SampleFrames/frame-0354.h264 | Bin 2131 -> 2236 bytes samples/h264SampleFrames/frame-0355.h264 | Bin 1937 -> 2157 bytes samples/h264SampleFrames/frame-0356.h264 | Bin 1412 -> 1545 bytes samples/h264SampleFrames/frame-0357.h264 | Bin 899 -> 1084 bytes samples/h264SampleFrames/frame-0358.h264 | Bin 866 -> 1291 bytes samples/h264SampleFrames/frame-0359.h264 | Bin 1432 -> 1593 bytes samples/h264SampleFrames/frame-0360.h264 | Bin 1044 -> 1524 bytes samples/h264SampleFrames/frame-0361.h264 | Bin 1456 -> 1524 bytes samples/h264SampleFrames/frame-0362.h264 | Bin 1005 -> 1082 bytes samples/h264SampleFrames/frame-0363.h264 | Bin 1112 -> 1266 bytes samples/h264SampleFrames/frame-0364.h264 | Bin 1659 -> 1506 bytes samples/h264SampleFrames/frame-0365.h264 | Bin 1440 -> 1667 bytes samples/h264SampleFrames/frame-0366.h264 | Bin 1745 -> 2099 bytes samples/h264SampleFrames/frame-0367.h264 | Bin 1085 -> 1328 bytes samples/h264SampleFrames/frame-0368.h264 | Bin 1256 -> 1314 bytes samples/h264SampleFrames/frame-0369.h264 | Bin 1294 -> 1385 bytes samples/h264SampleFrames/frame-0370.h264 | Bin 992 -> 1190 bytes samples/h264SampleFrames/frame-0371.h264 | Bin 1476 -> 1850 bytes samples/h264SampleFrames/frame-0372.h264 | Bin 942 -> 939 bytes samples/h264SampleFrames/frame-0373.h264 | Bin 1155 -> 1298 bytes samples/h264SampleFrames/frame-0374.h264 | Bin 1536 -> 1670 bytes samples/h264SampleFrames/frame-0375.h264 | Bin 1066 -> 1311 bytes samples/h264SampleFrames/frame-0376.h264 | Bin 1810 -> 6486 bytes samples/h264SampleFrames/frame-0377.h264 | Bin 1243 -> 2968 bytes samples/h264SampleFrames/frame-0378.h264 | Bin 1474 -> 1794 bytes samples/h264SampleFrames/frame-0379.h264 | Bin 1514 -> 1622 bytes samples/h264SampleFrames/frame-0380.h264 | Bin 1331 -> 1538 bytes samples/h264SampleFrames/frame-0381.h264 | Bin 1615 -> 1725 bytes samples/h264SampleFrames/frame-0382.h264 | Bin 1432 -> 1502 bytes samples/h264SampleFrames/frame-0383.h264 | Bin 1308 -> 1761 bytes samples/h264SampleFrames/frame-0384.h264 | Bin 1900 -> 1964 bytes samples/h264SampleFrames/frame-0385.h264 | Bin 1580 -> 1680 bytes samples/h264SampleFrames/frame-0386.h264 | Bin 1583 -> 1750 bytes samples/h264SampleFrames/frame-0387.h264 | Bin 1119 -> 1290 bytes samples/h264SampleFrames/frame-0388.h264 | Bin 1293 -> 1460 bytes samples/h264SampleFrames/frame-0389.h264 | Bin 1441 -> 1293 bytes samples/h264SampleFrames/frame-0390.h264 | Bin 1215 -> 1457 bytes samples/h264SampleFrames/frame-0391.h264 | Bin 1616 -> 1930 bytes samples/h264SampleFrames/frame-0392.h264 | Bin 1016 -> 1180 bytes samples/h264SampleFrames/frame-0393.h264 | Bin 1188 -> 1469 bytes samples/h264SampleFrames/frame-0394.h264 | Bin 1411 -> 1508 bytes samples/h264SampleFrames/frame-0395.h264 | Bin 1107 -> 1298 bytes samples/h264SampleFrames/frame-0396.h264 | Bin 1640 -> 1881 bytes samples/h264SampleFrames/frame-0397.h264 | Bin 998 -> 989 bytes samples/h264SampleFrames/frame-0398.h264 | Bin 1118 -> 1245 bytes samples/h264SampleFrames/frame-0399.h264 | Bin 1590 -> 1703 bytes samples/h264SampleFrames/frame-0400.h264 | Bin 1107 -> 1312 bytes samples/h264SampleFrames/frame-0401.h264 | Bin 1845 -> 6699 bytes samples/h264SampleFrames/frame-0402.h264 | Bin 1024 -> 2920 bytes samples/h264SampleFrames/frame-0403.h264 | Bin 1132 -> 1328 bytes samples/h264SampleFrames/frame-0404.h264 | Bin 1181 -> 1284 bytes samples/h264SampleFrames/frame-0405.h264 | Bin 1102 -> 1357 bytes samples/h264SampleFrames/frame-0406.h264 | Bin 1410 -> 1615 bytes samples/h264SampleFrames/frame-0407.h264 | Bin 883 -> 1117 bytes samples/h264SampleFrames/frame-0408.h264 | Bin 1022 -> 1272 bytes samples/h264SampleFrames/frame-0409.h264 | Bin 1272 -> 1429 bytes samples/h264SampleFrames/frame-0410.h264 | Bin 1116 -> 1434 bytes samples/h264SampleFrames/frame-0411.h264 | Bin 1425 -> 1489 bytes samples/h264SampleFrames/frame-0412.h264 | Bin 989 -> 1061 bytes samples/h264SampleFrames/frame-0413.h264 | Bin 1094 -> 1219 bytes samples/h264SampleFrames/frame-0414.h264 | Bin 1456 -> 1334 bytes samples/h264SampleFrames/frame-0415.h264 | Bin 1184 -> 1516 bytes samples/h264SampleFrames/frame-0416.h264 | Bin 1491 -> 1778 bytes samples/h264SampleFrames/frame-0417.h264 | Bin 917 -> 1204 bytes samples/h264SampleFrames/frame-0418.h264 | Bin 1045 -> 1240 bytes samples/h264SampleFrames/frame-0419.h264 | Bin 1364 -> 1399 bytes samples/h264SampleFrames/frame-0420.h264 | Bin 1059 -> 1244 bytes samples/h264SampleFrames/frame-0421.h264 | Bin 1461 -> 1810 bytes samples/h264SampleFrames/frame-0422.h264 | Bin 979 -> 990 bytes samples/h264SampleFrames/frame-0423.h264 | Bin 1030 -> 1180 bytes samples/h264SampleFrames/frame-0424.h264 | Bin 1400 -> 1561 bytes samples/h264SampleFrames/frame-0425.h264 | Bin 1024 -> 1276 bytes samples/h264SampleFrames/frame-0426.h264 | Bin 1547 -> 6513 bytes samples/h264SampleFrames/frame-0427.h264 | Bin 1069 -> 2419 bytes samples/h264SampleFrames/frame-0428.h264 | Bin 964 -> 1149 bytes samples/h264SampleFrames/frame-0429.h264 | Bin 1211 -> 1689 bytes samples/h264SampleFrames/frame-0430.h264 | Bin 1021 -> 1478 bytes samples/h264SampleFrames/frame-0431.h264 | Bin 1468 -> 1641 bytes samples/h264SampleFrames/frame-0432.h264 | Bin 967 -> 1148 bytes samples/h264SampleFrames/frame-0433.h264 | Bin 1057 -> 1278 bytes samples/h264SampleFrames/frame-0434.h264 | Bin 1345 -> 1477 bytes samples/h264SampleFrames/frame-0435.h264 | Bin 1039 -> 1315 bytes samples/h264SampleFrames/frame-0436.h264 | Bin 1398 -> 1489 bytes samples/h264SampleFrames/frame-0437.h264 | Bin 1026 -> 1090 bytes samples/h264SampleFrames/frame-0438.h264 | Bin 969 -> 1099 bytes samples/h264SampleFrames/frame-0439.h264 | Bin 1602 -> 1410 bytes samples/h264SampleFrames/frame-0440.h264 | Bin 895 -> 1108 bytes samples/h264SampleFrames/frame-0441.h264 | Bin 1469 -> 1817 bytes samples/h264SampleFrames/frame-0442.h264 | Bin 1039 -> 1282 bytes samples/h264SampleFrames/frame-0443.h264 | Bin 1047 -> 1418 bytes samples/h264SampleFrames/frame-0444.h264 | Bin 1322 -> 1416 bytes samples/h264SampleFrames/frame-0445.h264 | Bin 900 -> 1117 bytes samples/h264SampleFrames/frame-0446.h264 | Bin 1495 -> 1846 bytes samples/h264SampleFrames/frame-0447.h264 | Bin 956 -> 930 bytes samples/h264SampleFrames/frame-0448.h264 | Bin 1099 -> 1239 bytes samples/h264SampleFrames/frame-0449.h264 | Bin 1555 -> 1690 bytes samples/h264SampleFrames/frame-0450.h264 | Bin 972 -> 1253 bytes samples/h264SampleFrames/frame-0451.h264 | Bin 1948 -> 6707 bytes samples/h264SampleFrames/frame-0452.h264 | Bin 1028 -> 2793 bytes samples/h264SampleFrames/frame-0453.h264 | Bin 1124 -> 1387 bytes samples/h264SampleFrames/frame-0454.h264 | Bin 1182 -> 1171 bytes samples/h264SampleFrames/frame-0455.h264 | Bin 877 -> 1055 bytes samples/h264SampleFrames/frame-0456.h264 | Bin 1391 -> 1511 bytes samples/h264SampleFrames/frame-0457.h264 | Bin 895 -> 955 bytes samples/h264SampleFrames/frame-0458.h264 | Bin 851 -> 1127 bytes samples/h264SampleFrames/frame-0459.h264 | Bin 1379 -> 1460 bytes samples/h264SampleFrames/frame-0460.h264 | Bin 895 -> 1175 bytes samples/h264SampleFrames/frame-0461.h264 | Bin 1360 -> 1417 bytes samples/h264SampleFrames/frame-0462.h264 | Bin 938 -> 939 bytes samples/h264SampleFrames/frame-0463.h264 | Bin 1049 -> 1193 bytes samples/h264SampleFrames/frame-0464.h264 | Bin 1505 -> 1411 bytes samples/h264SampleFrames/frame-0465.h264 | Bin 1070 -> 1243 bytes samples/h264SampleFrames/frame-0466.h264 | Bin 1373 -> 1693 bytes samples/h264SampleFrames/frame-0467.h264 | Bin 853 -> 1060 bytes samples/h264SampleFrames/frame-0468.h264 | Bin 1088 -> 1287 bytes samples/h264SampleFrames/frame-0469.h264 | Bin 1295 -> 1524 bytes samples/h264SampleFrames/frame-0470.h264 | Bin 1056 -> 1424 bytes samples/h264SampleFrames/frame-0471.h264 | Bin 1484 -> 1832 bytes samples/h264SampleFrames/frame-0472.h264 | Bin 1041 -> 1026 bytes samples/h264SampleFrames/frame-0473.h264 | Bin 1156 -> 1533 bytes samples/h264SampleFrames/frame-0474.h264 | Bin 1590 -> 1692 bytes samples/h264SampleFrames/frame-0475.h264 | Bin 1057 -> 1306 bytes samples/h264SampleFrames/frame-0476.h264 | Bin 1838 -> 6634 bytes samples/h264SampleFrames/frame-0477.h264 | Bin 975 -> 2826 bytes samples/h264SampleFrames/frame-0478.h264 | Bin 1147 -> 1404 bytes samples/h264SampleFrames/frame-0479.h264 | Bin 1123 -> 1285 bytes samples/h264SampleFrames/frame-0480.h264 | Bin 1019 -> 1435 bytes samples/h264SampleFrames/frame-0481.h264 | Bin 1542 -> 1703 bytes samples/h264SampleFrames/frame-0482.h264 | Bin 832 -> 1015 bytes samples/h264SampleFrames/frame-0483.h264 | Bin 1130 -> 1337 bytes samples/h264SampleFrames/frame-0484.h264 | Bin 1333 -> 1477 bytes samples/h264SampleFrames/frame-0485.h264 | Bin 903 -> 1221 bytes samples/h264SampleFrames/frame-0486.h264 | Bin 1415 -> 1476 bytes samples/h264SampleFrames/frame-0487.h264 | Bin 1039 -> 1093 bytes samples/h264SampleFrames/frame-0488.h264 | Bin 1157 -> 1278 bytes samples/h264SampleFrames/frame-0489.h264 | Bin 1546 -> 1405 bytes samples/h264SampleFrames/frame-0490.h264 | Bin 1153 -> 1513 bytes samples/h264SampleFrames/frame-0491.h264 | Bin 1462 -> 1826 bytes samples/h264SampleFrames/frame-0492.h264 | Bin 1016 -> 1264 bytes samples/h264SampleFrames/frame-0493.h264 | Bin 1095 -> 1262 bytes samples/h264SampleFrames/frame-0494.h264 | Bin 1263 -> 1318 bytes samples/h264SampleFrames/frame-0495.h264 | Bin 935 -> 1121 bytes samples/h264SampleFrames/frame-0496.h264 | Bin 1495 -> 1832 bytes samples/h264SampleFrames/frame-0497.h264 | Bin 951 -> 940 bytes samples/h264SampleFrames/frame-0498.h264 | Bin 1073 -> 1216 bytes samples/h264SampleFrames/frame-0499.h264 | Bin 1579 -> 1681 bytes samples/h264SampleFrames/frame-0500.h264 | Bin 1014 -> 1296 bytes samples/h264SampleFrames/frame-0501.h264 | Bin 6066 -> 6822 bytes samples/h264SampleFrames/frame-0502.h264 | Bin 2671 -> 3006 bytes samples/h264SampleFrames/frame-0503.h264 | Bin 1214 -> 1448 bytes samples/h264SampleFrames/frame-0504.h264 | Bin 1211 -> 1291 bytes samples/h264SampleFrames/frame-0505.h264 | Bin 1272 -> 1572 bytes samples/h264SampleFrames/frame-0506.h264 | Bin 1489 -> 1616 bytes samples/h264SampleFrames/frame-0507.h264 | Bin 1041 -> 1296 bytes samples/h264SampleFrames/frame-0508.h264 | Bin 1112 -> 1323 bytes samples/h264SampleFrames/frame-0509.h264 | Bin 1375 -> 1528 bytes samples/h264SampleFrames/frame-0510.h264 | Bin 1159 -> 1420 bytes samples/h264SampleFrames/frame-0511.h264 | Bin 1390 -> 1508 bytes samples/h264SampleFrames/frame-0512.h264 | Bin 1082 -> 1116 bytes samples/h264SampleFrames/frame-0513.h264 | Bin 1295 -> 1276 bytes samples/h264SampleFrames/frame-0514.h264 | Bin 1535 -> 1382 bytes samples/h264SampleFrames/frame-0515.h264 | Bin 1041 -> 1441 bytes samples/h264SampleFrames/frame-0516.h264 | Bin 1464 -> 1823 bytes samples/h264SampleFrames/frame-0517.h264 | Bin 952 -> 1232 bytes samples/h264SampleFrames/frame-0518.h264 | Bin 1180 -> 1552 bytes samples/h264SampleFrames/frame-0519.h264 | Bin 1508 -> 1562 bytes samples/h264SampleFrames/frame-0520.h264 | Bin 1337 -> 1683 bytes samples/h264SampleFrames/frame-0521.h264 | Bin 1581 -> 2044 bytes samples/h264SampleFrames/frame-0522.h264 | Bin 1445 -> 1473 bytes samples/h264SampleFrames/frame-0523.h264 | Bin 1485 -> 1809 bytes samples/h264SampleFrames/frame-0524.h264 | Bin 1630 -> 1726 bytes samples/h264SampleFrames/frame-0525.h264 | Bin 1561 -> 1729 bytes samples/h264SampleFrames/frame-0526.h264 | Bin 1677 -> 6583 bytes samples/h264SampleFrames/frame-0527.h264 | Bin 1456 -> 3204 bytes samples/h264SampleFrames/frame-0528.h264 | Bin 1399 -> 1863 bytes samples/h264SampleFrames/frame-0529.h264 | Bin 1483 -> 1625 bytes samples/h264SampleFrames/frame-0530.h264 | Bin 1329 -> 1828 bytes samples/h264SampleFrames/frame-0531.h264 | Bin 1436 -> 1578 bytes samples/h264SampleFrames/frame-0532.h264 | Bin 1079 -> 1144 bytes samples/h264SampleFrames/frame-0533.h264 | Bin 1288 -> 1545 bytes samples/h264SampleFrames/frame-0534.h264 | Bin 1735 -> 1808 bytes samples/h264SampleFrames/frame-0535.h264 | Bin 1445 -> 1659 bytes samples/h264SampleFrames/frame-0536.h264 | Bin 1525 -> 1728 bytes samples/h264SampleFrames/frame-0537.h264 | Bin 1312 -> 1303 bytes samples/h264SampleFrames/frame-0538.h264 | Bin 1255 -> 1375 bytes samples/h264SampleFrames/frame-0539.h264 | Bin 1788 -> 1726 bytes samples/h264SampleFrames/frame-0540.h264 | Bin 1452 -> 1540 bytes samples/h264SampleFrames/frame-0541.h264 | Bin 1732 -> 1955 bytes samples/h264SampleFrames/frame-0542.h264 | Bin 1438 -> 1667 bytes samples/h264SampleFrames/frame-0543.h264 | Bin 1450 -> 1720 bytes samples/h264SampleFrames/frame-0544.h264 | Bin 1529 -> 1695 bytes samples/h264SampleFrames/frame-0545.h264 | Bin 1319 -> 1497 bytes samples/h264SampleFrames/frame-0546.h264 | Bin 1602 -> 2083 bytes samples/h264SampleFrames/frame-0547.h264 | Bin 1049 -> 1147 bytes samples/h264SampleFrames/frame-0548.h264 | Bin 1043 -> 1266 bytes samples/h264SampleFrames/frame-0549.h264 | Bin 1550 -> 1669 bytes samples/h264SampleFrames/frame-0550.h264 | Bin 966 -> 1199 bytes samples/h264SampleFrames/frame-0551.h264 | Bin 1846 -> 6746 bytes samples/h264SampleFrames/frame-0552.h264 | Bin 1118 -> 2847 bytes samples/h264SampleFrames/frame-0553.h264 | Bin 2076 -> 2351 bytes samples/h264SampleFrames/frame-0554.h264 | Bin 2246 -> 2316 bytes samples/h264SampleFrames/frame-0555.h264 | Bin 1020 -> 1287 bytes samples/h264SampleFrames/frame-0556.h264 | Bin 1446 -> 2593 bytes samples/h264SampleFrames/frame-0557.h264 | Bin 1264 -> 1493 bytes samples/h264SampleFrames/frame-0558.h264 | Bin 981 -> 1306 bytes samples/h264SampleFrames/frame-0559.h264 | Bin 1418 -> 1546 bytes samples/h264SampleFrames/frame-0560.h264 | Bin 1037 -> 1394 bytes samples/h264SampleFrames/frame-0561.h264 | Bin 1416 -> 1519 bytes samples/h264SampleFrames/frame-0562.h264 | Bin 1011 -> 1059 bytes samples/h264SampleFrames/frame-0563.h264 | Bin 1105 -> 1246 bytes samples/h264SampleFrames/frame-0564.h264 | Bin 1578 -> 1489 bytes samples/h264SampleFrames/frame-0565.h264 | Bin 976 -> 1157 bytes samples/h264SampleFrames/frame-0566.h264 | Bin 1428 -> 1803 bytes samples/h264SampleFrames/frame-0567.h264 | Bin 1068 -> 1314 bytes samples/h264SampleFrames/frame-0568.h264 | Bin 1091 -> 1253 bytes samples/h264SampleFrames/frame-0569.h264 | Bin 1421 -> 1460 bytes samples/h264SampleFrames/frame-0570.h264 | Bin 1023 -> 1284 bytes samples/h264SampleFrames/frame-0571.h264 | Bin 1422 -> 1804 bytes samples/h264SampleFrames/frame-0572.h264 | Bin 960 -> 974 bytes samples/h264SampleFrames/frame-0573.h264 | Bin 1115 -> 1260 bytes samples/h264SampleFrames/frame-0574.h264 | Bin 1560 -> 1668 bytes samples/h264SampleFrames/frame-0575.h264 | Bin 1078 -> 1318 bytes samples/h264SampleFrames/frame-0576.h264 | Bin 1816 -> 6790 bytes samples/h264SampleFrames/frame-0577.h264 | Bin 1090 -> 2944 bytes samples/h264SampleFrames/frame-0578.h264 | Bin 1150 -> 1392 bytes samples/h264SampleFrames/frame-0579.h264 | Bin 1065 -> 1151 bytes samples/h264SampleFrames/frame-0580.h264 | Bin 1106 -> 1388 bytes samples/h264SampleFrames/frame-0581.h264 | Bin 1602 -> 1787 bytes samples/h264SampleFrames/frame-0582.h264 | Bin 1030 -> 1383 bytes samples/h264SampleFrames/frame-0583.h264 | Bin 1079 -> 1440 bytes samples/h264SampleFrames/frame-0584.h264 | Bin 1379 -> 1534 bytes samples/h264SampleFrames/frame-0585.h264 | Bin 1006 -> 1537 bytes samples/h264SampleFrames/frame-0586.h264 | Bin 1412 -> 1481 bytes samples/h264SampleFrames/frame-0587.h264 | Bin 1001 -> 1113 bytes samples/h264SampleFrames/frame-0588.h264 | Bin 1157 -> 1244 bytes samples/h264SampleFrames/frame-0589.h264 | Bin 1583 -> 1444 bytes samples/h264SampleFrames/frame-0590.h264 | Bin 1092 -> 1257 bytes samples/h264SampleFrames/frame-0591.h264 | Bin 1468 -> 1837 bytes samples/h264SampleFrames/frame-0592.h264 | Bin 953 -> 1196 bytes samples/h264SampleFrames/frame-0593.h264 | Bin 1135 -> 1287 bytes samples/h264SampleFrames/frame-0594.h264 | Bin 1336 -> 1388 bytes samples/h264SampleFrames/frame-0595.h264 | Bin 893 -> 1048 bytes samples/h264SampleFrames/frame-0596.h264 | Bin 1476 -> 1863 bytes samples/h264SampleFrames/frame-0597.h264 | Bin 966 -> 940 bytes samples/h264SampleFrames/frame-0598.h264 | Bin 1049 -> 1193 bytes samples/h264SampleFrames/frame-0599.h264 | Bin 1498 -> 1641 bytes samples/h264SampleFrames/frame-0600.h264 | Bin 1130 -> 1320 bytes samples/h264SampleFrames/frame-0601.h264 | Bin 1792 -> 6711 bytes samples/h264SampleFrames/frame-0602.h264 | Bin 1142 -> 2674 bytes samples/h264SampleFrames/frame-0603.h264 | Bin 1078 -> 1270 bytes samples/h264SampleFrames/frame-0604.h264 | Bin 1130 -> 1231 bytes samples/h264SampleFrames/frame-0605.h264 | Bin 1051 -> 1369 bytes samples/h264SampleFrames/frame-0606.h264 | Bin 1404 -> 1583 bytes samples/h264SampleFrames/frame-0607.h264 | Bin 820 -> 988 bytes samples/h264SampleFrames/frame-0608.h264 | Bin 993 -> 1216 bytes samples/h264SampleFrames/frame-0609.h264 | Bin 1310 -> 1487 bytes samples/h264SampleFrames/frame-0610.h264 | Bin 1056 -> 1642 bytes samples/h264SampleFrames/frame-0611.h264 | Bin 1487 -> 1604 bytes samples/h264SampleFrames/frame-0612.h264 | Bin 1068 -> 1135 bytes samples/h264SampleFrames/frame-0613.h264 | Bin 1114 -> 1254 bytes samples/h264SampleFrames/frame-0614.h264 | Bin 1579 -> 1475 bytes samples/h264SampleFrames/frame-0615.h264 | Bin 1069 -> 1288 bytes samples/h264SampleFrames/frame-0616.h264 | Bin 1503 -> 1852 bytes samples/h264SampleFrames/frame-0617.h264 | Bin 929 -> 1184 bytes samples/h264SampleFrames/frame-0618.h264 | Bin 1161 -> 1315 bytes samples/h264SampleFrames/frame-0619.h264 | Bin 1366 -> 1400 bytes samples/h264SampleFrames/frame-0620.h264 | Bin 1126 -> 1264 bytes samples/h264SampleFrames/frame-0621.h264 | Bin 1340 -> 1712 bytes samples/h264SampleFrames/frame-0622.h264 | Bin 1092 -> 1087 bytes samples/h264SampleFrames/frame-0623.h264 | Bin 1104 -> 1249 bytes samples/h264SampleFrames/frame-0624.h264 | Bin 1452 -> 1543 bytes samples/h264SampleFrames/frame-0625.h264 | Bin 1092 -> 1347 bytes samples/h264SampleFrames/frame-0626.h264 | Bin 1560 -> 6729 bytes samples/h264SampleFrames/frame-0627.h264 | Bin 1011 -> 2705 bytes samples/h264SampleFrames/frame-0628.h264 | Bin 1115 -> 1306 bytes samples/h264SampleFrames/frame-0629.h264 | Bin 1185 -> 1580 bytes samples/h264SampleFrames/frame-0630.h264 | Bin 1020 -> 1535 bytes samples/h264SampleFrames/frame-0631.h264 | Bin 1426 -> 1628 bytes samples/h264SampleFrames/frame-0632.h264 | Bin 938 -> 1118 bytes samples/h264SampleFrames/frame-0633.h264 | Bin 1058 -> 1290 bytes samples/h264SampleFrames/frame-0634.h264 | Bin 1347 -> 1498 bytes samples/h264SampleFrames/frame-0635.h264 | Bin 1000 -> 1363 bytes samples/h264SampleFrames/frame-0636.h264 | Bin 1307 -> 1437 bytes samples/h264SampleFrames/frame-0637.h264 | Bin 958 -> 1014 bytes samples/h264SampleFrames/frame-0638.h264 | Bin 1065 -> 1101 bytes samples/h264SampleFrames/frame-0639.h264 | Bin 1516 -> 1355 bytes samples/h264SampleFrames/frame-0640.h264 | Bin 920 -> 1159 bytes samples/h264SampleFrames/frame-0641.h264 | Bin 1424 -> 1787 bytes samples/h264SampleFrames/frame-0642.h264 | Bin 959 -> 1181 bytes samples/h264SampleFrames/frame-0643.h264 | Bin 1106 -> 1490 bytes samples/h264SampleFrames/frame-0644.h264 | Bin 1403 -> 1439 bytes samples/h264SampleFrames/frame-0645.h264 | Bin 1096 -> 1270 bytes samples/h264SampleFrames/frame-0646.h264 | Bin 1509 -> 1840 bytes samples/h264SampleFrames/frame-0647.h264 | Bin 942 -> 929 bytes samples/h264SampleFrames/frame-0648.h264 | Bin 1141 -> 1296 bytes samples/h264SampleFrames/frame-0649.h264 | Bin 1592 -> 1712 bytes samples/h264SampleFrames/frame-0650.h264 | Bin 848 -> 1077 bytes samples/h264SampleFrames/frame-0651.h264 | Bin 1716 -> 6829 bytes samples/h264SampleFrames/frame-0652.h264 | Bin 997 -> 2716 bytes samples/h264SampleFrames/frame-0653.h264 | Bin 1043 -> 1199 bytes samples/h264SampleFrames/frame-0654.h264 | Bin 1078 -> 1254 bytes samples/h264SampleFrames/frame-0655.h264 | Bin 1006 -> 1646 bytes samples/h264SampleFrames/frame-0656.h264 | Bin 1481 -> 1643 bytes samples/h264SampleFrames/frame-0657.h264 | Bin 850 -> 1227 bytes samples/h264SampleFrames/frame-0658.h264 | Bin 1054 -> 1300 bytes samples/h264SampleFrames/frame-0659.h264 | Bin 1427 -> 1573 bytes samples/h264SampleFrames/frame-0660.h264 | Bin 1066 -> 1309 bytes samples/h264SampleFrames/frame-0661.h264 | Bin 1466 -> 1553 bytes samples/h264SampleFrames/frame-0662.h264 | Bin 1058 -> 1009 bytes samples/h264SampleFrames/frame-0663.h264 | Bin 1138 -> 1270 bytes samples/h264SampleFrames/frame-0664.h264 | Bin 1625 -> 1475 bytes samples/h264SampleFrames/frame-0665.h264 | Bin 1104 -> 1290 bytes samples/h264SampleFrames/frame-0666.h264 | Bin 1411 -> 1765 bytes samples/h264SampleFrames/frame-0667.h264 | Bin 906 -> 1145 bytes samples/h264SampleFrames/frame-0668.h264 | Bin 1165 -> 1332 bytes samples/h264SampleFrames/frame-0669.h264 | Bin 1222 -> 1327 bytes samples/h264SampleFrames/frame-0670.h264 | Bin 1035 -> 1205 bytes samples/h264SampleFrames/frame-0671.h264 | Bin 1556 -> 1867 bytes samples/h264SampleFrames/frame-0672.h264 | Bin 980 -> 962 bytes samples/h264SampleFrames/frame-0673.h264 | Bin 1099 -> 1283 bytes samples/h264SampleFrames/frame-0674.h264 | Bin 1606 -> 1704 bytes samples/h264SampleFrames/frame-0675.h264 | Bin 1032 -> 1281 bytes samples/h264SampleFrames/frame-0676.h264 | Bin 1740 -> 6654 bytes samples/h264SampleFrames/frame-0677.h264 | Bin 1089 -> 2914 bytes samples/h264SampleFrames/frame-0678.h264 | Bin 1208 -> 1403 bytes samples/h264SampleFrames/frame-0679.h264 | Bin 1156 -> 1345 bytes samples/h264SampleFrames/frame-0680.h264 | Bin 1052 -> 1447 bytes samples/h264SampleFrames/frame-0681.h264 | Bin 1444 -> 1614 bytes samples/h264SampleFrames/frame-0682.h264 | Bin 906 -> 1144 bytes samples/h264SampleFrames/frame-0683.h264 | Bin 1060 -> 1283 bytes samples/h264SampleFrames/frame-0684.h264 | Bin 1410 -> 1530 bytes samples/h264SampleFrames/frame-0685.h264 | Bin 1051 -> 1435 bytes samples/h264SampleFrames/frame-0686.h264 | Bin 1448 -> 1494 bytes samples/h264SampleFrames/frame-0687.h264 | Bin 1032 -> 1080 bytes samples/h264SampleFrames/frame-0688.h264 | Bin 1201 -> 1313 bytes samples/h264SampleFrames/frame-0689.h264 | Bin 1544 -> 1403 bytes samples/h264SampleFrames/frame-0690.h264 | Bin 1040 -> 1289 bytes samples/h264SampleFrames/frame-0691.h264 | Bin 1459 -> 1816 bytes samples/h264SampleFrames/frame-0692.h264 | Bin 1025 -> 1280 bytes samples/h264SampleFrames/frame-0693.h264 | Bin 1133 -> 1292 bytes samples/h264SampleFrames/frame-0694.h264 | Bin 1220 -> 1259 bytes samples/h264SampleFrames/frame-0695.h264 | Bin 1033 -> 1171 bytes samples/h264SampleFrames/frame-0696.h264 | Bin 1482 -> 1829 bytes samples/h264SampleFrames/frame-0697.h264 | Bin 1064 -> 1057 bytes samples/h264SampleFrames/frame-0698.h264 | Bin 1123 -> 1295 bytes samples/h264SampleFrames/frame-0699.h264 | Bin 1577 -> 1687 bytes samples/h264SampleFrames/frame-0700.h264 | Bin 1043 -> 1279 bytes samples/h264SampleFrames/frame-0701.h264 | Bin 1969 -> 6895 bytes samples/h264SampleFrames/frame-0702.h264 | Bin 1178 -> 3080 bytes samples/h264SampleFrames/frame-0703.h264 | Bin 1156 -> 1365 bytes samples/h264SampleFrames/frame-0704.h264 | Bin 1141 -> 1229 bytes samples/h264SampleFrames/frame-0705.h264 | Bin 1049 -> 1479 bytes samples/h264SampleFrames/frame-0706.h264 | Bin 1354 -> 1556 bytes samples/h264SampleFrames/frame-0707.h264 | Bin 830 -> 1027 bytes samples/h264SampleFrames/frame-0708.h264 | Bin 976 -> 1210 bytes samples/h264SampleFrames/frame-0709.h264 | Bin 1316 -> 1461 bytes samples/h264SampleFrames/frame-0710.h264 | Bin 1048 -> 1345 bytes samples/h264SampleFrames/frame-0711.h264 | Bin 1447 -> 1494 bytes samples/h264SampleFrames/frame-0712.h264 | Bin 1028 -> 1105 bytes samples/h264SampleFrames/frame-0713.h264 | Bin 1162 -> 1312 bytes samples/h264SampleFrames/frame-0714.h264 | Bin 1582 -> 1453 bytes samples/h264SampleFrames/frame-0715.h264 | Bin 1140 -> 1477 bytes samples/h264SampleFrames/frame-0716.h264 | Bin 1489 -> 1853 bytes samples/h264SampleFrames/frame-0717.h264 | Bin 928 -> 1160 bytes samples/h264SampleFrames/frame-0718.h264 | Bin 1058 -> 1249 bytes samples/h264SampleFrames/frame-0719.h264 | Bin 1255 -> 1362 bytes samples/h264SampleFrames/frame-0720.h264 | Bin 989 -> 1190 bytes samples/h264SampleFrames/frame-0721.h264 | Bin 1475 -> 1849 bytes samples/h264SampleFrames/frame-0722.h264 | Bin 1219 -> 1230 bytes samples/h264SampleFrames/frame-0723.h264 | Bin 1241 -> 1399 bytes samples/h264SampleFrames/frame-0724.h264 | Bin 1561 -> 1682 bytes samples/h264SampleFrames/frame-0725.h264 | Bin 1084 -> 1333 bytes samples/h264SampleFrames/frame-0726.h264 | Bin 1729 -> 6777 bytes samples/h264SampleFrames/frame-0727.h264 | Bin 1056 -> 3064 bytes samples/h264SampleFrames/frame-0728.h264 | Bin 1097 -> 1332 bytes samples/h264SampleFrames/frame-0729.h264 | Bin 1179 -> 1252 bytes samples/h264SampleFrames/frame-0730.h264 | Bin 1006 -> 1463 bytes samples/h264SampleFrames/frame-0731.h264 | Bin 1413 -> 1591 bytes samples/h264SampleFrames/frame-0732.h264 | Bin 914 -> 1118 bytes samples/h264SampleFrames/frame-0733.h264 | Bin 1016 -> 1240 bytes samples/h264SampleFrames/frame-0734.h264 | Bin 1423 -> 1568 bytes samples/h264SampleFrames/frame-0735.h264 | Bin 1040 -> 1459 bytes samples/h264SampleFrames/frame-0736.h264 | Bin 1417 -> 1487 bytes samples/h264SampleFrames/frame-0737.h264 | Bin 1056 -> 1125 bytes samples/h264SampleFrames/frame-0738.h264 | Bin 1073 -> 1359 bytes samples/h264SampleFrames/frame-0739.h264 | Bin 1689 -> 1520 bytes samples/h264SampleFrames/frame-0740.h264 | Bin 1040 -> 1276 bytes samples/h264SampleFrames/frame-0741.h264 | Bin 1407 -> 1754 bytes samples/h264SampleFrames/frame-0742.h264 | Bin 953 -> 1215 bytes samples/h264SampleFrames/frame-0743.h264 | Bin 1102 -> 1295 bytes samples/h264SampleFrames/frame-0744.h264 | Bin 1254 -> 1372 bytes samples/h264SampleFrames/frame-0745.h264 | Bin 994 -> 1203 bytes samples/h264SampleFrames/frame-0746.h264 | Bin 1526 -> 1848 bytes samples/h264SampleFrames/frame-0747.h264 | Bin 940 -> 916 bytes samples/h264SampleFrames/frame-0748.h264 | Bin 1106 -> 1263 bytes samples/h264SampleFrames/frame-0749.h264 | Bin 1628 -> 1729 bytes samples/h264SampleFrames/frame-0750.h264 | Bin 925 -> 1273 bytes samples/h264SampleFrames/frame-0751.h264 | Bin 6183 -> 6835 bytes samples/h264SampleFrames/frame-0752.h264 | Bin 2631 -> 2982 bytes samples/h264SampleFrames/frame-0753.h264 | Bin 963 -> 1263 bytes samples/h264SampleFrames/frame-0754.h264 | Bin 1269 -> 1281 bytes samples/h264SampleFrames/frame-0755.h264 | Bin 1168 -> 1459 bytes samples/h264SampleFrames/frame-0756.h264 | Bin 1414 -> 1576 bytes samples/h264SampleFrames/frame-0757.h264 | Bin 962 -> 1183 bytes samples/h264SampleFrames/frame-0758.h264 | Bin 1004 -> 1236 bytes samples/h264SampleFrames/frame-0759.h264 | Bin 1466 -> 1610 bytes samples/h264SampleFrames/frame-0760.h264 | Bin 957 -> 1212 bytes samples/h264SampleFrames/frame-0761.h264 | Bin 1469 -> 1559 bytes samples/h264SampleFrames/frame-0762.h264 | Bin 1222 -> 1055 bytes samples/h264SampleFrames/frame-0763.h264 | Bin 1124 -> 1497 bytes samples/h264SampleFrames/frame-0764.h264 | Bin 1857 -> 1706 bytes samples/h264SampleFrames/frame-0765.h264 | Bin 1194 -> 1432 bytes samples/h264SampleFrames/frame-0766.h264 | Bin 1579 -> 1926 bytes samples/h264SampleFrames/frame-0767.h264 | Bin 1033 -> 1293 bytes samples/h264SampleFrames/frame-0768.h264 | Bin 1124 -> 1306 bytes samples/h264SampleFrames/frame-0769.h264 | Bin 1337 -> 1377 bytes samples/h264SampleFrames/frame-0770.h264 | Bin 1131 -> 1238 bytes samples/h264SampleFrames/frame-0771.h264 | Bin 1453 -> 1798 bytes samples/h264SampleFrames/frame-0772.h264 | Bin 1019 -> 1022 bytes samples/h264SampleFrames/frame-0773.h264 | Bin 1172 -> 1326 bytes samples/h264SampleFrames/frame-0774.h264 | Bin 1598 -> 1704 bytes samples/h264SampleFrames/frame-0775.h264 | Bin 1060 -> 1363 bytes samples/h264SampleFrames/frame-0776.h264 | Bin 1632 -> 6626 bytes samples/h264SampleFrames/frame-0777.h264 | Bin 1055 -> 3007 bytes samples/h264SampleFrames/frame-0778.h264 | Bin 1309 -> 1535 bytes samples/h264SampleFrames/frame-0779.h264 | Bin 1180 -> 1259 bytes samples/h264SampleFrames/frame-0780.h264 | Bin 979 -> 1135 bytes samples/h264SampleFrames/frame-0781.h264 | Bin 1330 -> 1554 bytes samples/h264SampleFrames/frame-0782.h264 | Bin 737 -> 1101 bytes samples/h264SampleFrames/frame-0783.h264 | Bin 1006 -> 1260 bytes samples/h264SampleFrames/frame-0784.h264 | Bin 1413 -> 1573 bytes samples/h264SampleFrames/frame-0785.h264 | Bin 1017 -> 1532 bytes samples/h264SampleFrames/frame-0786.h264 | Bin 1437 -> 1565 bytes samples/h264SampleFrames/frame-0787.h264 | Bin 1014 -> 1058 bytes samples/h264SampleFrames/frame-0788.h264 | Bin 1114 -> 1250 bytes samples/h264SampleFrames/frame-0789.h264 | Bin 1538 -> 1385 bytes samples/h264SampleFrames/frame-0790.h264 | Bin 1313 -> 1542 bytes samples/h264SampleFrames/frame-0791.h264 | Bin 1501 -> 1846 bytes samples/h264SampleFrames/frame-0792.h264 | Bin 1054 -> 1278 bytes samples/h264SampleFrames/frame-0793.h264 | Bin 1241 -> 1457 bytes samples/h264SampleFrames/frame-0794.h264 | Bin 1078 -> 1196 bytes samples/h264SampleFrames/frame-0795.h264 | Bin 965 -> 1176 bytes samples/h264SampleFrames/frame-0796.h264 | Bin 1468 -> 1832 bytes samples/h264SampleFrames/frame-0797.h264 | Bin 1071 -> 1073 bytes samples/h264SampleFrames/frame-0798.h264 | Bin 1111 -> 1267 bytes samples/h264SampleFrames/frame-0799.h264 | Bin 1536 -> 1692 bytes samples/h264SampleFrames/frame-0800.h264 | Bin 1134 -> 1329 bytes samples/h264SampleFrames/frame-0801.h264 | Bin 1889 -> 6806 bytes samples/h264SampleFrames/frame-0802.h264 | Bin 1090 -> 2956 bytes samples/h264SampleFrames/frame-0803.h264 | Bin 1211 -> 1496 bytes samples/h264SampleFrames/frame-0804.h264 | Bin 1165 -> 1258 bytes samples/h264SampleFrames/frame-0805.h264 | Bin 1054 -> 1473 bytes samples/h264SampleFrames/frame-0806.h264 | Bin 1454 -> 1624 bytes samples/h264SampleFrames/frame-0807.h264 | Bin 813 -> 1108 bytes samples/h264SampleFrames/frame-0808.h264 | Bin 1168 -> 1410 bytes samples/h264SampleFrames/frame-0809.h264 | Bin 1498 -> 1624 bytes samples/h264SampleFrames/frame-0810.h264 | Bin 1022 -> 1344 bytes samples/h264SampleFrames/frame-0811.h264 | Bin 1567 -> 1618 bytes samples/h264SampleFrames/frame-0812.h264 | Bin 1103 -> 1139 bytes samples/h264SampleFrames/frame-0813.h264 | Bin 1125 -> 1275 bytes samples/h264SampleFrames/frame-0814.h264 | Bin 1616 -> 1483 bytes samples/h264SampleFrames/frame-0815.h264 | Bin 1115 -> 1313 bytes samples/h264SampleFrames/frame-0816.h264 | Bin 1433 -> 1813 bytes samples/h264SampleFrames/frame-0817.h264 | Bin 999 -> 1255 bytes samples/h264SampleFrames/frame-0818.h264 | Bin 1122 -> 1330 bytes samples/h264SampleFrames/frame-0819.h264 | Bin 1382 -> 1458 bytes samples/h264SampleFrames/frame-0820.h264 | Bin 1156 -> 1264 bytes samples/h264SampleFrames/frame-0821.h264 | Bin 1453 -> 1771 bytes samples/h264SampleFrames/frame-0822.h264 | Bin 957 -> 969 bytes samples/h264SampleFrames/frame-0823.h264 | Bin 1158 -> 1293 bytes samples/h264SampleFrames/frame-0824.h264 | Bin 1465 -> 1569 bytes samples/h264SampleFrames/frame-0825.h264 | Bin 1027 -> 1258 bytes samples/h264SampleFrames/frame-0826.h264 | Bin 1804 -> 6854 bytes samples/h264SampleFrames/frame-0827.h264 | Bin 1100 -> 3041 bytes samples/h264SampleFrames/frame-0828.h264 | Bin 1233 -> 1425 bytes samples/h264SampleFrames/frame-0829.h264 | Bin 1146 -> 1226 bytes samples/h264SampleFrames/frame-0830.h264 | Bin 1073 -> 1341 bytes samples/h264SampleFrames/frame-0831.h264 | Bin 1412 -> 1544 bytes samples/h264SampleFrames/frame-0832.h264 | Bin 947 -> 1225 bytes samples/h264SampleFrames/frame-0833.h264 | Bin 989 -> 1238 bytes samples/h264SampleFrames/frame-0834.h264 | Bin 1398 -> 1534 bytes samples/h264SampleFrames/frame-0835.h264 | Bin 952 -> 1225 bytes samples/h264SampleFrames/frame-0836.h264 | Bin 1320 -> 1380 bytes samples/h264SampleFrames/frame-0837.h264 | Bin 963 -> 1057 bytes samples/h264SampleFrames/frame-0838.h264 | Bin 906 -> 1043 bytes samples/h264SampleFrames/frame-0839.h264 | Bin 1535 -> 1449 bytes samples/h264SampleFrames/frame-0840.h264 | Bin 1116 -> 1375 bytes samples/h264SampleFrames/frame-0841.h264 | Bin 1444 -> 1802 bytes samples/h264SampleFrames/frame-0842.h264 | Bin 965 -> 1187 bytes samples/h264SampleFrames/frame-0843.h264 | Bin 1110 -> 1503 bytes samples/h264SampleFrames/frame-0844.h264 | Bin 1367 -> 1434 bytes samples/h264SampleFrames/frame-0845.h264 | Bin 1006 -> 1163 bytes samples/h264SampleFrames/frame-0846.h264 | Bin 1454 -> 1836 bytes samples/h264SampleFrames/frame-0847.h264 | Bin 931 -> 931 bytes samples/h264SampleFrames/frame-0848.h264 | Bin 1015 -> 1168 bytes samples/h264SampleFrames/frame-0849.h264 | Bin 1556 -> 1645 bytes samples/h264SampleFrames/frame-0850.h264 | Bin 851 -> 1112 bytes samples/h264SampleFrames/frame-0851.h264 | Bin 1690 -> 6741 bytes samples/h264SampleFrames/frame-0852.h264 | Bin 989 -> 2419 bytes samples/h264SampleFrames/frame-0853.h264 | Bin 1137 -> 1787 bytes samples/h264SampleFrames/frame-0854.h264 | Bin 1136 -> 1265 bytes samples/h264SampleFrames/frame-0855.h264 | Bin 1002 -> 1510 bytes samples/h264SampleFrames/frame-0856.h264 | Bin 1411 -> 1592 bytes samples/h264SampleFrames/frame-0857.h264 | Bin 948 -> 1151 bytes samples/h264SampleFrames/frame-0858.h264 | Bin 982 -> 1229 bytes samples/h264SampleFrames/frame-0859.h264 | Bin 1401 -> 1549 bytes samples/h264SampleFrames/frame-0860.h264 | Bin 1055 -> 1289 bytes samples/h264SampleFrames/frame-0861.h264 | Bin 1421 -> 1549 bytes samples/h264SampleFrames/frame-0862.h264 | Bin 874 -> 903 bytes samples/h264SampleFrames/frame-0863.h264 | Bin 1097 -> 1198 bytes samples/h264SampleFrames/frame-0864.h264 | Bin 1500 -> 1349 bytes samples/h264SampleFrames/frame-0865.h264 | Bin 1124 -> 1457 bytes samples/h264SampleFrames/frame-0866.h264 | Bin 1448 -> 1805 bytes samples/h264SampleFrames/frame-0867.h264 | Bin 877 -> 1108 bytes samples/h264SampleFrames/frame-0868.h264 | Bin 1159 -> 1350 bytes samples/h264SampleFrames/frame-0869.h264 | Bin 1184 -> 1299 bytes samples/h264SampleFrames/frame-0870.h264 | Bin 1049 -> 1263 bytes samples/h264SampleFrames/frame-0871.h264 | Bin 1396 -> 1781 bytes samples/h264SampleFrames/frame-0872.h264 | Bin 1043 -> 1042 bytes samples/h264SampleFrames/frame-0873.h264 | Bin 1098 -> 1251 bytes samples/h264SampleFrames/frame-0874.h264 | Bin 1576 -> 1686 bytes samples/h264SampleFrames/frame-0875.h264 | Bin 1043 -> 1280 bytes samples/h264SampleFrames/frame-0876.h264 | Bin 1818 -> 6789 bytes samples/h264SampleFrames/frame-0877.h264 | Bin 1025 -> 2946 bytes samples/h264SampleFrames/frame-0878.h264 | Bin 1151 -> 1399 bytes samples/h264SampleFrames/frame-0879.h264 | Bin 1063 -> 1149 bytes samples/h264SampleFrames/frame-0880.h264 | Bin 961 -> 1115 bytes samples/h264SampleFrames/frame-0881.h264 | Bin 1303 -> 1496 bytes samples/h264SampleFrames/frame-0882.h264 | Bin 843 -> 1004 bytes samples/h264SampleFrames/frame-0883.h264 | Bin 1010 -> 1260 bytes samples/h264SampleFrames/frame-0884.h264 | Bin 1254 -> 1486 bytes samples/h264SampleFrames/frame-0885.h264 | Bin 932 -> 1162 bytes samples/h264SampleFrames/frame-0886.h264 | Bin 1376 -> 1408 bytes samples/h264SampleFrames/frame-0887.h264 | Bin 957 -> 1028 bytes samples/h264SampleFrames/frame-0888.h264 | Bin 1074 -> 1230 bytes samples/h264SampleFrames/frame-0889.h264 | Bin 1527 -> 1391 bytes samples/h264SampleFrames/frame-0890.h264 | Bin 989 -> 1198 bytes samples/h264SampleFrames/frame-0891.h264 | Bin 1333 -> 1666 bytes samples/h264SampleFrames/frame-0892.h264 | Bin 1028 -> 1289 bytes samples/h264SampleFrames/frame-0893.h264 | Bin 1092 -> 1581 bytes samples/h264SampleFrames/frame-0894.h264 | Bin 1299 -> 1424 bytes samples/h264SampleFrames/frame-0895.h264 | Bin 984 -> 1252 bytes samples/h264SampleFrames/frame-0896.h264 | Bin 1513 -> 1876 bytes samples/h264SampleFrames/frame-0897.h264 | Bin 1073 -> 1059 bytes samples/h264SampleFrames/frame-0898.h264 | Bin 1072 -> 1239 bytes samples/h264SampleFrames/frame-0899.h264 | Bin 1588 -> 1685 bytes samples/h264SampleFrames/frame-0900.h264 | Bin 1097 -> 1316 bytes samples/h264SampleFrames/frame-0901.h264 | Bin 1886 -> 6875 bytes samples/h264SampleFrames/frame-0902.h264 | Bin 1078 -> 2992 bytes samples/h264SampleFrames/frame-0903.h264 | Bin 1138 -> 1435 bytes samples/h264SampleFrames/frame-0904.h264 | Bin 1140 -> 1290 bytes samples/h264SampleFrames/frame-0905.h264 | Bin 1322 -> 1746 bytes samples/h264SampleFrames/frame-0906.h264 | Bin 1522 -> 1643 bytes samples/h264SampleFrames/frame-0907.h264 | Bin 1013 -> 1216 bytes samples/h264SampleFrames/frame-0908.h264 | Bin 1066 -> 1283 bytes samples/h264SampleFrames/frame-0909.h264 | Bin 1218 -> 1413 bytes samples/h264SampleFrames/frame-0910.h264 | Bin 1004 -> 1334 bytes samples/h264SampleFrames/frame-0911.h264 | Bin 1453 -> 1541 bytes samples/h264SampleFrames/frame-0912.h264 | Bin 1104 -> 1197 bytes samples/h264SampleFrames/frame-0913.h264 | Bin 1095 -> 1248 bytes samples/h264SampleFrames/frame-0914.h264 | Bin 1604 -> 1458 bytes samples/h264SampleFrames/frame-0915.h264 | Bin 1054 -> 1293 bytes samples/h264SampleFrames/frame-0916.h264 | Bin 1424 -> 1771 bytes samples/h264SampleFrames/frame-0917.h264 | Bin 964 -> 1166 bytes samples/h264SampleFrames/frame-0918.h264 | Bin 1236 -> 1564 bytes samples/h264SampleFrames/frame-0919.h264 | Bin 1392 -> 1545 bytes samples/h264SampleFrames/frame-0920.h264 | Bin 1075 -> 1174 bytes samples/h264SampleFrames/frame-0921.h264 | Bin 1402 -> 1780 bytes samples/h264SampleFrames/frame-0922.h264 | Bin 1001 -> 1011 bytes samples/h264SampleFrames/frame-0923.h264 | Bin 1078 -> 1217 bytes samples/h264SampleFrames/frame-0924.h264 | Bin 1531 -> 1636 bytes samples/h264SampleFrames/frame-0925.h264 | Bin 1110 -> 1319 bytes samples/h264SampleFrames/frame-0926.h264 | Bin 1698 -> 6737 bytes samples/h264SampleFrames/frame-0927.h264 | Bin 1070 -> 2879 bytes samples/h264SampleFrames/frame-0928.h264 | Bin 1170 -> 1444 bytes samples/h264SampleFrames/frame-0929.h264 | Bin 1163 -> 1296 bytes samples/h264SampleFrames/frame-0930.h264 | Bin 986 -> 1413 bytes samples/h264SampleFrames/frame-0931.h264 | Bin 1698 -> 1605 bytes samples/h264SampleFrames/frame-0932.h264 | Bin 1018 -> 1272 bytes samples/h264SampleFrames/frame-0933.h264 | Bin 1259 -> 1488 bytes samples/h264SampleFrames/frame-0934.h264 | Bin 1497 -> 1721 bytes samples/h264SampleFrames/frame-0935.h264 | Bin 1075 -> 1582 bytes samples/h264SampleFrames/frame-0936.h264 | Bin 1438 -> 1506 bytes samples/h264SampleFrames/frame-0937.h264 | Bin 1057 -> 1116 bytes samples/h264SampleFrames/frame-0938.h264 | Bin 1107 -> 1231 bytes samples/h264SampleFrames/frame-0939.h264 | Bin 1666 -> 1518 bytes samples/h264SampleFrames/frame-0940.h264 | Bin 980 -> 1349 bytes samples/h264SampleFrames/frame-0941.h264 | Bin 1451 -> 1858 bytes samples/h264SampleFrames/frame-0942.h264 | Bin 1068 -> 1466 bytes samples/h264SampleFrames/frame-0943.h264 | Bin 1257 -> 1496 bytes samples/h264SampleFrames/frame-0944.h264 | Bin 1496 -> 1596 bytes samples/h264SampleFrames/frame-0945.h264 | Bin 1201 -> 1379 bytes samples/h264SampleFrames/frame-0946.h264 | Bin 1637 -> 2097 bytes samples/h264SampleFrames/frame-0947.h264 | Bin 1131 -> 1219 bytes samples/h264SampleFrames/frame-0948.h264 | Bin 1256 -> 1423 bytes samples/h264SampleFrames/frame-0949.h264 | Bin 1668 -> 1822 bytes samples/h264SampleFrames/frame-0950.h264 | Bin 1159 -> 1471 bytes samples/h264SampleFrames/frame-0951.h264 | Bin 1970 -> 6828 bytes samples/h264SampleFrames/frame-0952.h264 | Bin 1102 -> 3953 bytes samples/h264SampleFrames/frame-0953.h264 | Bin 1084 -> 1580 bytes samples/h264SampleFrames/frame-0954.h264 | Bin 1327 -> 1472 bytes samples/h264SampleFrames/frame-0955.h264 | Bin 1119 -> 1522 bytes samples/h264SampleFrames/frame-0956.h264 | Bin 1338 -> 1554 bytes samples/h264SampleFrames/frame-0957.h264 | Bin 1115 -> 1312 bytes samples/h264SampleFrames/frame-0958.h264 | Bin 1244 -> 1632 bytes samples/h264SampleFrames/frame-0959.h264 | Bin 1643 -> 1752 bytes samples/h264SampleFrames/frame-0960.h264 | Bin 1237 -> 1680 bytes samples/h264SampleFrames/frame-0961.h264 | Bin 1681 -> 1804 bytes samples/h264SampleFrames/frame-0962.h264 | Bin 1093 -> 1248 bytes samples/h264SampleFrames/frame-0963.h264 | Bin 1344 -> 1483 bytes samples/h264SampleFrames/frame-0964.h264 | Bin 1820 -> 1769 bytes samples/h264SampleFrames/frame-0965.h264 | Bin 1434 -> 1592 bytes samples/h264SampleFrames/frame-0966.h264 | Bin 1758 -> 2140 bytes samples/h264SampleFrames/frame-0967.h264 | Bin 1411 -> 1666 bytes samples/h264SampleFrames/frame-0968.h264 | Bin 1463 -> 1823 bytes samples/h264SampleFrames/frame-0969.h264 | Bin 1562 -> 1761 bytes samples/h264SampleFrames/frame-0970.h264 | Bin 1179 -> 1623 bytes samples/h264SampleFrames/frame-0971.h264 | Bin 1506 -> 1990 bytes samples/h264SampleFrames/frame-0972.h264 | Bin 1014 -> 1055 bytes samples/h264SampleFrames/frame-0973.h264 | Bin 1123 -> 1293 bytes samples/h264SampleFrames/frame-0974.h264 | Bin 1564 -> 1713 bytes samples/h264SampleFrames/frame-0975.h264 | Bin 1052 -> 1410 bytes samples/h264SampleFrames/frame-0976.h264 | Bin 1824 -> 6855 bytes samples/h264SampleFrames/frame-0977.h264 | Bin 1005 -> 2938 bytes samples/h264SampleFrames/frame-0978.h264 | Bin 1300 -> 1601 bytes samples/h264SampleFrames/frame-0979.h264 | Bin 1196 -> 1286 bytes samples/h264SampleFrames/frame-0980.h264 | Bin 1169 -> 1623 bytes samples/h264SampleFrames/frame-0981.h264 | Bin 1464 -> 1652 bytes samples/h264SampleFrames/frame-0982.h264 | Bin 812 -> 1046 bytes samples/h264SampleFrames/frame-0983.h264 | Bin 1020 -> 1244 bytes samples/h264SampleFrames/frame-0984.h264 | Bin 1427 -> 1561 bytes samples/h264SampleFrames/frame-0985.h264 | Bin 1044 -> 1313 bytes samples/h264SampleFrames/frame-0986.h264 | Bin 1429 -> 1542 bytes samples/h264SampleFrames/frame-0987.h264 | Bin 993 -> 1068 bytes samples/h264SampleFrames/frame-0988.h264 | Bin 1111 -> 1235 bytes samples/h264SampleFrames/frame-0989.h264 | Bin 1342 -> 1200 bytes samples/h264SampleFrames/frame-0990.h264 | Bin 1006 -> 1268 bytes samples/h264SampleFrames/frame-0991.h264 | Bin 1454 -> 1781 bytes samples/h264SampleFrames/frame-0992.h264 | Bin 990 -> 1244 bytes samples/h264SampleFrames/frame-0993.h264 | Bin 1142 -> 1349 bytes samples/h264SampleFrames/frame-0994.h264 | Bin 1148 -> 1189 bytes samples/h264SampleFrames/frame-0995.h264 | Bin 923 -> 1090 bytes samples/h264SampleFrames/frame-0996.h264 | Bin 1457 -> 1830 bytes samples/h264SampleFrames/frame-0997.h264 | Bin 1050 -> 1036 bytes samples/h264SampleFrames/frame-0998.h264 | Bin 1179 -> 1315 bytes samples/h264SampleFrames/frame-0999.h264 | Bin 1535 -> 1639 bytes samples/h264SampleFrames/frame-1000.h264 | Bin 1130 -> 1409 bytes samples/h264SampleFrames/frame-1001.h264 | Bin 6085 -> 6777 bytes samples/h264SampleFrames/frame-1002.h264 | Bin 2400 -> 2739 bytes samples/h264SampleFrames/frame-1003.h264 | Bin 1170 -> 1360 bytes samples/h264SampleFrames/frame-1004.h264 | Bin 1110 -> 1213 bytes samples/h264SampleFrames/frame-1005.h264 | Bin 1454 -> 1555 bytes samples/h264SampleFrames/frame-1006.h264 | Bin 1430 -> 1620 bytes samples/h264SampleFrames/frame-1007.h264 | Bin 1047 -> 1427 bytes samples/h264SampleFrames/frame-1008.h264 | Bin 984 -> 1218 bytes samples/h264SampleFrames/frame-1009.h264 | Bin 1380 -> 1560 bytes samples/h264SampleFrames/frame-1010.h264 | Bin 1078 -> 1431 bytes samples/h264SampleFrames/frame-1011.h264 | Bin 1519 -> 1608 bytes samples/h264SampleFrames/frame-1012.h264 | Bin 1145 -> 1109 bytes samples/h264SampleFrames/frame-1013.h264 | Bin 1177 -> 1268 bytes samples/h264SampleFrames/frame-1014.h264 | Bin 1509 -> 1357 bytes samples/h264SampleFrames/frame-1015.h264 | Bin 1124 -> 1528 bytes samples/h264SampleFrames/frame-1016.h264 | Bin 1433 -> 1778 bytes samples/h264SampleFrames/frame-1017.h264 | Bin 980 -> 1242 bytes samples/h264SampleFrames/frame-1018.h264 | Bin 1093 -> 1278 bytes samples/h264SampleFrames/frame-1019.h264 | Bin 1290 -> 1380 bytes samples/h264SampleFrames/frame-1020.h264 | Bin 1039 -> 1257 bytes samples/h264SampleFrames/frame-1021.h264 | Bin 1372 -> 1699 bytes samples/h264SampleFrames/frame-1022.h264 | Bin 935 -> 917 bytes samples/h264SampleFrames/frame-1023.h264 | Bin 1040 -> 1200 bytes samples/h264SampleFrames/frame-1024.h264 | Bin 1388 -> 1597 bytes samples/h264SampleFrames/frame-1025.h264 | Bin 1016 -> 1214 bytes samples/h264SampleFrames/frame-1026.h264 | Bin 1485 -> 6471 bytes samples/h264SampleFrames/frame-1027.h264 | Bin 947 -> 2566 bytes samples/h264SampleFrames/frame-1028.h264 | Bin 1069 -> 1276 bytes samples/h264SampleFrames/frame-1029.h264 | Bin 1163 -> 1257 bytes samples/h264SampleFrames/frame-1030.h264 | Bin 930 -> 1374 bytes samples/h264SampleFrames/frame-1031.h264 | Bin 1302 -> 1499 bytes samples/h264SampleFrames/frame-1032.h264 | Bin 863 -> 1074 bytes samples/h264SampleFrames/frame-1033.h264 | Bin 994 -> 1235 bytes samples/h264SampleFrames/frame-1034.h264 | Bin 1267 -> 1467 bytes samples/h264SampleFrames/frame-1035.h264 | Bin 1116 -> 1714 bytes samples/h264SampleFrames/frame-1036.h264 | Bin 1389 -> 1443 bytes samples/h264SampleFrames/frame-1037.h264 | Bin 1173 -> 1119 bytes samples/h264SampleFrames/frame-1038.h264 | Bin 1126 -> 1227 bytes samples/h264SampleFrames/frame-1039.h264 | Bin 1612 -> 1502 bytes samples/h264SampleFrames/frame-1040.h264 | Bin 1043 -> 1401 bytes samples/h264SampleFrames/frame-1041.h264 | Bin 1424 -> 1772 bytes samples/h264SampleFrames/frame-1042.h264 | Bin 1028 -> 1248 bytes samples/h264SampleFrames/frame-1043.h264 | Bin 1044 -> 1219 bytes samples/h264SampleFrames/frame-1044.h264 | Bin 1376 -> 1437 bytes samples/h264SampleFrames/frame-1045.h264 | Bin 1037 -> 1131 bytes samples/h264SampleFrames/frame-1046.h264 | Bin 1560 -> 1891 bytes samples/h264SampleFrames/frame-1047.h264 | Bin 962 -> 932 bytes samples/h264SampleFrames/frame-1048.h264 | Bin 996 -> 1216 bytes samples/h264SampleFrames/frame-1049.h264 | Bin 1504 -> 1590 bytes samples/h264SampleFrames/frame-1050.h264 | Bin 863 -> 1124 bytes samples/h264SampleFrames/frame-1051.h264 | Bin 1647 -> 6629 bytes samples/h264SampleFrames/frame-1052.h264 | Bin 975 -> 2540 bytes samples/h264SampleFrames/frame-1053.h264 | Bin 1218 -> 1776 bytes samples/h264SampleFrames/frame-1054.h264 | Bin 1150 -> 1275 bytes samples/h264SampleFrames/frame-1055.h264 | Bin 1005 -> 1459 bytes samples/h264SampleFrames/frame-1056.h264 | Bin 1455 -> 1644 bytes samples/h264SampleFrames/frame-1057.h264 | Bin 911 -> 1167 bytes samples/h264SampleFrames/frame-1058.h264 | Bin 967 -> 1210 bytes samples/h264SampleFrames/frame-1059.h264 | Bin 1433 -> 1563 bytes samples/h264SampleFrames/frame-1060.h264 | Bin 946 -> 1194 bytes samples/h264SampleFrames/frame-1061.h264 | Bin 1402 -> 1415 bytes samples/h264SampleFrames/frame-1062.h264 | Bin 895 -> 947 bytes samples/h264SampleFrames/frame-1063.h264 | Bin 944 -> 1075 bytes samples/h264SampleFrames/frame-1064.h264 | Bin 1501 -> 1346 bytes samples/h264SampleFrames/frame-1065.h264 | Bin 992 -> 1325 bytes samples/h264SampleFrames/frame-1066.h264 | Bin 1471 -> 1830 bytes samples/h264SampleFrames/frame-1067.h264 | Bin 946 -> 1186 bytes samples/h264SampleFrames/frame-1068.h264 | Bin 1182 -> 1345 bytes samples/h264SampleFrames/frame-1069.h264 | Bin 1321 -> 1372 bytes samples/h264SampleFrames/frame-1070.h264 | Bin 1100 -> 1215 bytes samples/h264SampleFrames/frame-1071.h264 | Bin 1496 -> 1825 bytes samples/h264SampleFrames/frame-1072.h264 | Bin 1043 -> 1041 bytes samples/h264SampleFrames/frame-1073.h264 | Bin 1157 -> 1330 bytes samples/h264SampleFrames/frame-1074.h264 | Bin 1499 -> 1585 bytes samples/h264SampleFrames/frame-1075.h264 | Bin 1071 -> 1293 bytes samples/h264SampleFrames/frame-1076.h264 | Bin 1827 -> 6748 bytes samples/h264SampleFrames/frame-1077.h264 | Bin 875 -> 2665 bytes samples/h264SampleFrames/frame-1078.h264 | Bin 1111 -> 1341 bytes samples/h264SampleFrames/frame-1079.h264 | Bin 1102 -> 1474 bytes samples/h264SampleFrames/frame-1080.h264 | Bin 1061 -> 1513 bytes samples/h264SampleFrames/frame-1081.h264 | Bin 1468 -> 1628 bytes samples/h264SampleFrames/frame-1082.h264 | Bin 915 -> 1166 bytes samples/h264SampleFrames/frame-1083.h264 | Bin 1008 -> 1254 bytes samples/h264SampleFrames/frame-1084.h264 | Bin 1390 -> 1540 bytes samples/h264SampleFrames/frame-1085.h264 | Bin 920 -> 1357 bytes samples/h264SampleFrames/frame-1086.h264 | Bin 1468 -> 1572 bytes samples/h264SampleFrames/frame-1087.h264 | Bin 994 -> 1045 bytes samples/h264SampleFrames/frame-1088.h264 | Bin 1157 -> 1291 bytes samples/h264SampleFrames/frame-1089.h264 | Bin 1609 -> 1440 bytes samples/h264SampleFrames/frame-1090.h264 | Bin 1051 -> 1244 bytes samples/h264SampleFrames/frame-1091.h264 | Bin 1555 -> 1951 bytes samples/h264SampleFrames/frame-1092.h264 | Bin 1151 -> 1299 bytes samples/h264SampleFrames/frame-1093.h264 | Bin 1181 -> 1360 bytes samples/h264SampleFrames/frame-1094.h264 | Bin 1354 -> 1398 bytes samples/h264SampleFrames/frame-1095.h264 | Bin 1128 -> 1215 bytes samples/h264SampleFrames/frame-1096.h264 | Bin 1585 -> 1890 bytes samples/h264SampleFrames/frame-1097.h264 | Bin 1056 -> 1090 bytes samples/h264SampleFrames/frame-1098.h264 | Bin 1206 -> 1260 bytes samples/h264SampleFrames/frame-1099.h264 | Bin 1604 -> 1740 bytes samples/h264SampleFrames/frame-1100.h264 | Bin 1138 -> 1387 bytes samples/h264SampleFrames/frame-1101.h264 | Bin 2024 -> 6631 bytes samples/h264SampleFrames/frame-1102.h264 | Bin 1290 -> 3013 bytes samples/h264SampleFrames/frame-1103.h264 | Bin 1379 -> 1574 bytes samples/h264SampleFrames/frame-1104.h264 | Bin 1144 -> 1288 bytes samples/h264SampleFrames/frame-1105.h264 | Bin 1021 -> 1260 bytes samples/h264SampleFrames/frame-1106.h264 | Bin 1433 -> 1602 bytes samples/h264SampleFrames/frame-1107.h264 | Bin 864 -> 1236 bytes samples/h264SampleFrames/frame-1108.h264 | Bin 981 -> 1199 bytes samples/h264SampleFrames/frame-1109.h264 | Bin 1371 -> 1523 bytes samples/h264SampleFrames/frame-1110.h264 | Bin 960 -> 1297 bytes samples/h264SampleFrames/frame-1111.h264 | Bin 1490 -> 1548 bytes samples/h264SampleFrames/frame-1112.h264 | Bin 1056 -> 1087 bytes samples/h264SampleFrames/frame-1113.h264 | Bin 1170 -> 1299 bytes samples/h264SampleFrames/frame-1114.h264 | Bin 1524 -> 1368 bytes samples/h264SampleFrames/frame-1115.h264 | Bin 1054 -> 1284 bytes samples/h264SampleFrames/frame-1116.h264 | Bin 1433 -> 1776 bytes samples/h264SampleFrames/frame-1117.h264 | Bin 1031 -> 1266 bytes samples/h264SampleFrames/frame-1118.h264 | Bin 1007 -> 1182 bytes samples/h264SampleFrames/frame-1119.h264 | Bin 1316 -> 1421 bytes samples/h264SampleFrames/frame-1120.h264 | Bin 1093 -> 1295 bytes samples/h264SampleFrames/frame-1121.h264 | Bin 1472 -> 1844 bytes samples/h264SampleFrames/frame-1122.h264 | Bin 1030 -> 1042 bytes samples/h264SampleFrames/frame-1123.h264 | Bin 1174 -> 1324 bytes samples/h264SampleFrames/frame-1124.h264 | Bin 1518 -> 1631 bytes samples/h264SampleFrames/frame-1125.h264 | Bin 1072 -> 1374 bytes samples/h264SampleFrames/frame-1126.h264 | Bin 1786 -> 6656 bytes samples/h264SampleFrames/frame-1127.h264 | Bin 1053 -> 2927 bytes samples/h264SampleFrames/frame-1128.h264 | Bin 1131 -> 1356 bytes samples/h264SampleFrames/frame-1129.h264 | Bin 1185 -> 1281 bytes samples/h264SampleFrames/frame-1130.h264 | Bin 955 -> 1360 bytes samples/h264SampleFrames/frame-1131.h264 | Bin 1357 -> 1548 bytes samples/h264SampleFrames/frame-1132.h264 | Bin 940 -> 1152 bytes samples/h264SampleFrames/frame-1133.h264 | Bin 1186 -> 1409 bytes samples/h264SampleFrames/frame-1134.h264 | Bin 1306 -> 1465 bytes samples/h264SampleFrames/frame-1135.h264 | Bin 998 -> 1322 bytes samples/h264SampleFrames/frame-1136.h264 | Bin 1342 -> 1420 bytes samples/h264SampleFrames/frame-1137.h264 | Bin 1002 -> 1091 bytes samples/h264SampleFrames/frame-1138.h264 | Bin 1152 -> 1291 bytes samples/h264SampleFrames/frame-1139.h264 | Bin 1706 -> 1578 bytes samples/h264SampleFrames/frame-1140.h264 | Bin 1055 -> 1234 bytes samples/h264SampleFrames/frame-1141.h264 | Bin 1435 -> 1764 bytes samples/h264SampleFrames/frame-1142.h264 | Bin 939 -> 1196 bytes samples/h264SampleFrames/frame-1143.h264 | Bin 1121 -> 1315 bytes samples/h264SampleFrames/frame-1144.h264 | Bin 1334 -> 1441 bytes samples/h264SampleFrames/frame-1145.h264 | Bin 1822 -> 2003 bytes samples/h264SampleFrames/frame-1146.h264 | Bin 1513 -> 1882 bytes samples/h264SampleFrames/frame-1147.h264 | Bin 1922 -> 1916 bytes samples/h264SampleFrames/frame-1148.h264 | Bin 1100 -> 1249 bytes samples/h264SampleFrames/frame-1149.h264 | Bin 1594 -> 1707 bytes samples/h264SampleFrames/frame-1150.h264 | Bin 904 -> 1403 bytes samples/h264SampleFrames/frame-1151.h264 | Bin 1843 -> 6785 bytes samples/h264SampleFrames/frame-1152.h264 | Bin 1080 -> 3014 bytes samples/h264SampleFrames/frame-1153.h264 | Bin 1115 -> 1335 bytes samples/h264SampleFrames/frame-1154.h264 | Bin 1168 -> 1270 bytes samples/h264SampleFrames/frame-1155.h264 | Bin 1048 -> 1443 bytes samples/h264SampleFrames/frame-1156.h264 | Bin 1393 -> 1604 bytes samples/h264SampleFrames/frame-1157.h264 | Bin 947 -> 1184 bytes samples/h264SampleFrames/frame-1158.h264 | Bin 1103 -> 1313 bytes samples/h264SampleFrames/frame-1159.h264 | Bin 1396 -> 1554 bytes samples/h264SampleFrames/frame-1160.h264 | Bin 1041 -> 1290 bytes samples/h264SampleFrames/frame-1161.h264 | Bin 1501 -> 1567 bytes samples/h264SampleFrames/frame-1162.h264 | Bin 995 -> 1058 bytes samples/h264SampleFrames/frame-1163.h264 | Bin 1181 -> 1298 bytes samples/h264SampleFrames/frame-1164.h264 | Bin 1610 -> 1468 bytes samples/h264SampleFrames/frame-1165.h264 | Bin 1021 -> 1459 bytes samples/h264SampleFrames/frame-1166.h264 | Bin 1414 -> 1783 bytes samples/h264SampleFrames/frame-1167.h264 | Bin 898 -> 1161 bytes samples/h264SampleFrames/frame-1168.h264 | Bin 1131 -> 1324 bytes samples/h264SampleFrames/frame-1169.h264 | Bin 1298 -> 1357 bytes samples/h264SampleFrames/frame-1170.h264 | Bin 1083 -> 1189 bytes samples/h264SampleFrames/frame-1171.h264 | Bin 1414 -> 1774 bytes samples/h264SampleFrames/frame-1172.h264 | Bin 996 -> 1000 bytes samples/h264SampleFrames/frame-1173.h264 | Bin 1097 -> 1245 bytes samples/h264SampleFrames/frame-1174.h264 | Bin 1590 -> 1708 bytes samples/h264SampleFrames/frame-1175.h264 | Bin 1094 -> 1301 bytes samples/h264SampleFrames/frame-1176.h264 | Bin 1740 -> 6604 bytes samples/h264SampleFrames/frame-1177.h264 | Bin 985 -> 2856 bytes samples/h264SampleFrames/frame-1178.h264 | Bin 1179 -> 1418 bytes samples/h264SampleFrames/frame-1179.h264 | Bin 1095 -> 1228 bytes samples/h264SampleFrames/frame-1180.h264 | Bin 1073 -> 1444 bytes samples/h264SampleFrames/frame-1181.h264 | Bin 1424 -> 1619 bytes samples/h264SampleFrames/frame-1182.h264 | Bin 857 -> 1113 bytes samples/h264SampleFrames/frame-1183.h264 | Bin 1064 -> 1305 bytes samples/h264SampleFrames/frame-1184.h264 | Bin 1428 -> 1569 bytes samples/h264SampleFrames/frame-1185.h264 | Bin 1005 -> 1265 bytes samples/h264SampleFrames/frame-1186.h264 | Bin 1472 -> 1545 bytes samples/h264SampleFrames/frame-1187.h264 | Bin 1011 -> 1051 bytes samples/h264SampleFrames/frame-1188.h264 | Bin 1373 -> 1504 bytes samples/h264SampleFrames/frame-1189.h264 | Bin 1586 -> 1445 bytes samples/h264SampleFrames/frame-1190.h264 | Bin 1231 -> 1459 bytes samples/h264SampleFrames/frame-1191.h264 | Bin 1529 -> 1884 bytes samples/h264SampleFrames/frame-1192.h264 | Bin 963 -> 1185 bytes samples/h264SampleFrames/frame-1193.h264 | Bin 1076 -> 1292 bytes samples/h264SampleFrames/frame-1194.h264 | Bin 1257 -> 1368 bytes samples/h264SampleFrames/frame-1195.h264 | Bin 850 -> 1060 bytes samples/h264SampleFrames/frame-1196.h264 | Bin 1480 -> 1880 bytes samples/h264SampleFrames/frame-1197.h264 | Bin 1051 -> 1035 bytes samples/h264SampleFrames/frame-1198.h264 | Bin 1121 -> 1276 bytes samples/h264SampleFrames/frame-1199.h264 | Bin 1596 -> 1663 bytes samples/h264SampleFrames/frame-1200.h264 | Bin 1088 -> 1351 bytes samples/h264SampleFrames/frame-1201.h264 | Bin 2019 -> 6820 bytes samples/h264SampleFrames/frame-1202.h264 | Bin 1191 -> 3070 bytes samples/h264SampleFrames/frame-1203.h264 | Bin 1116 -> 1278 bytes samples/h264SampleFrames/frame-1204.h264 | Bin 1124 -> 1178 bytes samples/h264SampleFrames/frame-1205.h264 | Bin 984 -> 1210 bytes samples/h264SampleFrames/frame-1206.h264 | Bin 1407 -> 1710 bytes samples/h264SampleFrames/frame-1207.h264 | Bin 887 -> 1275 bytes samples/h264SampleFrames/frame-1208.h264 | Bin 1000 -> 1246 bytes samples/h264SampleFrames/frame-1209.h264 | Bin 1329 -> 1505 bytes samples/h264SampleFrames/frame-1210.h264 | Bin 1122 -> 1438 bytes samples/h264SampleFrames/frame-1211.h264 | Bin 1464 -> 1566 bytes samples/h264SampleFrames/frame-1212.h264 | Bin 1047 -> 1079 bytes samples/h264SampleFrames/frame-1213.h264 | Bin 1142 -> 1241 bytes samples/h264SampleFrames/frame-1214.h264 | Bin 1658 -> 1497 bytes samples/h264SampleFrames/frame-1215.h264 | Bin 1147 -> 1409 bytes samples/h264SampleFrames/frame-1216.h264 | Bin 1388 -> 1699 bytes samples/h264SampleFrames/frame-1217.h264 | Bin 992 -> 1171 bytes samples/h264SampleFrames/frame-1218.h264 | Bin 950 -> 1125 bytes samples/h264SampleFrames/frame-1219.h264 | Bin 1223 -> 1311 bytes samples/h264SampleFrames/frame-1220.h264 | Bin 1051 -> 1239 bytes samples/h264SampleFrames/frame-1221.h264 | Bin 1428 -> 1794 bytes samples/h264SampleFrames/frame-1222.h264 | Bin 999 -> 974 bytes samples/h264SampleFrames/frame-1223.h264 | Bin 1099 -> 1248 bytes samples/h264SampleFrames/frame-1224.h264 | Bin 1531 -> 1643 bytes samples/h264SampleFrames/frame-1225.h264 | Bin 1104 -> 1384 bytes samples/h264SampleFrames/frame-1226.h264 | Bin 1729 -> 6794 bytes samples/h264SampleFrames/frame-1227.h264 | Bin 1120 -> 3063 bytes samples/h264SampleFrames/frame-1228.h264 | Bin 1067 -> 1354 bytes samples/h264SampleFrames/frame-1229.h264 | Bin 1236 -> 1345 bytes samples/h264SampleFrames/frame-1230.h264 | Bin 991 -> 1315 bytes samples/h264SampleFrames/frame-1231.h264 | Bin 1400 -> 1563 bytes samples/h264SampleFrames/frame-1232.h264 | Bin 984 -> 1217 bytes samples/h264SampleFrames/frame-1233.h264 | Bin 1063 -> 1311 bytes samples/h264SampleFrames/frame-1234.h264 | Bin 1410 -> 1579 bytes samples/h264SampleFrames/frame-1235.h264 | Bin 1016 -> 1430 bytes samples/h264SampleFrames/frame-1236.h264 | Bin 1363 -> 1446 bytes samples/h264SampleFrames/frame-1237.h264 | Bin 1042 -> 1192 bytes samples/h264SampleFrames/frame-1238.h264 | Bin 1113 -> 1298 bytes samples/h264SampleFrames/frame-1239.h264 | Bin 1624 -> 1472 bytes samples/h264SampleFrames/frame-1240.h264 | Bin 1023 -> 1219 bytes samples/h264SampleFrames/frame-1241.h264 | Bin 1468 -> 1838 bytes samples/h264SampleFrames/frame-1242.h264 | Bin 939 -> 1161 bytes samples/h264SampleFrames/frame-1243.h264 | Bin 1070 -> 1266 bytes samples/h264SampleFrames/frame-1244.h264 | Bin 1342 -> 1454 bytes samples/h264SampleFrames/frame-1245.h264 | Bin 880 -> 1098 bytes samples/h264SampleFrames/frame-1246.h264 | Bin 1498 -> 1821 bytes samples/h264SampleFrames/frame-1247.h264 | Bin 967 -> 999 bytes samples/h264SampleFrames/frame-1248.h264 | Bin 1021 -> 1194 bytes samples/h264SampleFrames/frame-1249.h264 | Bin 1579 -> 1717 bytes samples/h264SampleFrames/frame-1250.h264 | Bin 955 -> 1201 bytes samples/h264SampleFrames/frame-1251.h264 | Bin 6127 -> 6791 bytes samples/h264SampleFrames/frame-1252.h264 | Bin 2656 -> 2912 bytes samples/h264SampleFrames/frame-1253.h264 | Bin 1028 -> 1315 bytes samples/h264SampleFrames/frame-1254.h264 | Bin 1315 -> 1335 bytes samples/h264SampleFrames/frame-1255.h264 | Bin 957 -> 1315 bytes samples/h264SampleFrames/frame-1256.h264 | Bin 1405 -> 1575 bytes samples/h264SampleFrames/frame-1257.h264 | Bin 1019 -> 1099 bytes samples/h264SampleFrames/frame-1258.h264 | Bin 1069 -> 1600 bytes samples/h264SampleFrames/frame-1259.h264 | Bin 1311 -> 1442 bytes samples/h264SampleFrames/frame-1260.h264 | Bin 908 -> 1164 bytes samples/h264SampleFrames/frame-1261.h264 | Bin 1422 -> 1474 bytes samples/h264SampleFrames/frame-1262.h264 | Bin 940 -> 983 bytes samples/h264SampleFrames/frame-1263.h264 | Bin 1038 -> 1193 bytes samples/h264SampleFrames/frame-1264.h264 | Bin 1666 -> 1502 bytes samples/h264SampleFrames/frame-1265.h264 | Bin 1119 -> 1388 bytes samples/h264SampleFrames/frame-1266.h264 | Bin 1462 -> 1771 bytes samples/h264SampleFrames/frame-1267.h264 | Bin 977 -> 1214 bytes samples/h264SampleFrames/frame-1268.h264 | Bin 1154 -> 1333 bytes samples/h264SampleFrames/frame-1269.h264 | Bin 1242 -> 1364 bytes samples/h264SampleFrames/frame-1270.h264 | Bin 1043 -> 1254 bytes samples/h264SampleFrames/frame-1271.h264 | Bin 1434 -> 1816 bytes samples/h264SampleFrames/frame-1272.h264 | Bin 980 -> 980 bytes samples/h264SampleFrames/frame-1273.h264 | Bin 1015 -> 1273 bytes samples/h264SampleFrames/frame-1274.h264 | Bin 1429 -> 1534 bytes samples/h264SampleFrames/frame-1275.h264 | Bin 986 -> 1203 bytes samples/h264SampleFrames/frame-1276.h264 | Bin 1560 -> 6531 bytes samples/h264SampleFrames/frame-1277.h264 | Bin 955 -> 2703 bytes samples/h264SampleFrames/frame-1278.h264 | Bin 1121 -> 1396 bytes samples/h264SampleFrames/frame-1279.h264 | Bin 1100 -> 1197 bytes samples/h264SampleFrames/frame-1280.h264 | Bin 1026 -> 1409 bytes samples/h264SampleFrames/frame-1281.h264 | Bin 1426 -> 1582 bytes samples/h264SampleFrames/frame-1282.h264 | Bin 880 -> 1126 bytes samples/h264SampleFrames/frame-1283.h264 | Bin 1025 -> 1247 bytes samples/h264SampleFrames/frame-1284.h264 | Bin 1441 -> 1584 bytes samples/h264SampleFrames/frame-1285.h264 | Bin 958 -> 1219 bytes samples/h264SampleFrames/frame-1286.h264 | Bin 1342 -> 1400 bytes samples/h264SampleFrames/frame-1287.h264 | Bin 1010 -> 1042 bytes samples/h264SampleFrames/frame-1288.h264 | Bin 1204 -> 1327 bytes samples/h264SampleFrames/frame-1289.h264 | Bin 1356 -> 1168 bytes samples/h264SampleFrames/frame-1290.h264 | Bin 1097 -> 1373 bytes samples/h264SampleFrames/frame-1291.h264 | Bin 1378 -> 1723 bytes samples/h264SampleFrames/frame-1292.h264 | Bin 1075 -> 1340 bytes samples/h264SampleFrames/frame-1293.h264 | Bin 1164 -> 1474 bytes samples/h264SampleFrames/frame-1294.h264 | Bin 1304 -> 1362 bytes samples/h264SampleFrames/frame-1295.h264 | Bin 939 -> 1119 bytes samples/h264SampleFrames/frame-1296.h264 | Bin 1522 -> 1895 bytes samples/h264SampleFrames/frame-1297.h264 | Bin 958 -> 970 bytes samples/h264SampleFrames/frame-1298.h264 | Bin 1139 -> 1261 bytes samples/h264SampleFrames/frame-1299.h264 | Bin 1568 -> 1674 bytes samples/h264SampleFrames/frame-1300.h264 | Bin 1116 -> 1494 bytes samples/h264SampleFrames/frame-1301.h264 | Bin 1887 -> 6750 bytes samples/h264SampleFrames/frame-1302.h264 | Bin 1074 -> 2879 bytes samples/h264SampleFrames/frame-1303.h264 | Bin 1167 -> 1463 bytes samples/h264SampleFrames/frame-1304.h264 | Bin 1092 -> 1182 bytes samples/h264SampleFrames/frame-1305.h264 | Bin 1007 -> 1175 bytes samples/h264SampleFrames/frame-1306.h264 | Bin 1411 -> 1595 bytes samples/h264SampleFrames/frame-1307.h264 | Bin 828 -> 1109 bytes samples/h264SampleFrames/frame-1308.h264 | Bin 930 -> 1225 bytes samples/h264SampleFrames/frame-1309.h264 | Bin 1327 -> 1495 bytes samples/h264SampleFrames/frame-1310.h264 | Bin 945 -> 1346 bytes samples/h264SampleFrames/frame-1311.h264 | Bin 1416 -> 1597 bytes samples/h264SampleFrames/frame-1312.h264 | Bin 1094 -> 1093 bytes samples/h264SampleFrames/frame-1313.h264 | Bin 1061 -> 1209 bytes samples/h264SampleFrames/frame-1314.h264 | Bin 1421 -> 1335 bytes samples/h264SampleFrames/frame-1315.h264 | Bin 1128 -> 1297 bytes samples/h264SampleFrames/frame-1316.h264 | Bin 1396 -> 1744 bytes samples/h264SampleFrames/frame-1317.h264 | Bin 911 -> 1142 bytes samples/h264SampleFrames/frame-1318.h264 | Bin 1172 -> 1438 bytes samples/h264SampleFrames/frame-1319.h264 | Bin 1271 -> 1380 bytes samples/h264SampleFrames/frame-1320.h264 | Bin 1027 -> 1250 bytes samples/h264SampleFrames/frame-1321.h264 | Bin 1464 -> 1835 bytes samples/h264SampleFrames/frame-1322.h264 | Bin 997 -> 1010 bytes samples/h264SampleFrames/frame-1323.h264 | Bin 1173 -> 1332 bytes samples/h264SampleFrames/frame-1324.h264 | Bin 1484 -> 1591 bytes samples/h264SampleFrames/frame-1325.h264 | Bin 1082 -> 1517 bytes samples/h264SampleFrames/frame-1326.h264 | Bin 1616 -> 6827 bytes samples/h264SampleFrames/frame-1327.h264 | Bin 1138 -> 2883 bytes samples/h264SampleFrames/frame-1328.h264 | Bin 1049 -> 1326 bytes samples/h264SampleFrames/frame-1329.h264 | Bin 1221 -> 1327 bytes samples/h264SampleFrames/frame-1330.h264 | Bin 1242 -> 1691 bytes samples/h264SampleFrames/frame-1331.h264 | Bin 1414 -> 1577 bytes samples/h264SampleFrames/frame-1332.h264 | Bin 1010 -> 1212 bytes samples/h264SampleFrames/frame-1333.h264 | Bin 1039 -> 1246 bytes samples/h264SampleFrames/frame-1334.h264 | Bin 1440 -> 1579 bytes samples/h264SampleFrames/frame-1335.h264 | Bin 1038 -> 1568 bytes samples/h264SampleFrames/frame-1336.h264 | Bin 1349 -> 1419 bytes samples/h264SampleFrames/frame-1337.h264 | Bin 1027 -> 1088 bytes samples/h264SampleFrames/frame-1338.h264 | Bin 1174 -> 1343 bytes samples/h264SampleFrames/frame-1339.h264 | Bin 1703 -> 1534 bytes samples/h264SampleFrames/frame-1340.h264 | Bin 1004 -> 1233 bytes samples/h264SampleFrames/frame-1341.h264 | Bin 1484 -> 1837 bytes samples/h264SampleFrames/frame-1342.h264 | Bin 1353 -> 1581 bytes samples/h264SampleFrames/frame-1343.h264 | Bin 1346 -> 1519 bytes samples/h264SampleFrames/frame-1344.h264 | Bin 2250 -> 2349 bytes samples/h264SampleFrames/frame-1345.h264 | Bin 899 -> 1106 bytes samples/h264SampleFrames/frame-1346.h264 | Bin 1459 -> 1837 bytes samples/h264SampleFrames/frame-1347.h264 | Bin 970 -> 969 bytes samples/h264SampleFrames/frame-1348.h264 | Bin 1022 -> 1179 bytes samples/h264SampleFrames/frame-1349.h264 | Bin 1558 -> 1672 bytes samples/h264SampleFrames/frame-1350.h264 | Bin 1037 -> 1332 bytes samples/h264SampleFrames/frame-1351.h264 | Bin 1824 -> 6645 bytes samples/h264SampleFrames/frame-1352.h264 | Bin 1094 -> 2921 bytes samples/h264SampleFrames/frame-1353.h264 | Bin 1063 -> 1299 bytes samples/h264SampleFrames/frame-1354.h264 | Bin 1190 -> 1335 bytes samples/h264SampleFrames/frame-1355.h264 | Bin 1095 -> 1460 bytes samples/h264SampleFrames/frame-1356.h264 | Bin 2472 -> 2655 bytes samples/h264SampleFrames/frame-1357.h264 | Bin 1944 -> 2091 bytes samples/h264SampleFrames/frame-1358.h264 | Bin 2087 -> 1338 bytes samples/h264SampleFrames/frame-1359.h264 | Bin 1401 -> 1542 bytes samples/h264SampleFrames/frame-1360.h264 | Bin 963 -> 1216 bytes samples/h264SampleFrames/frame-1361.h264 | Bin 1495 -> 1575 bytes samples/h264SampleFrames/frame-1362.h264 | Bin 955 -> 1006 bytes samples/h264SampleFrames/frame-1363.h264 | Bin 1196 -> 1276 bytes samples/h264SampleFrames/frame-1364.h264 | Bin 1649 -> 1485 bytes samples/h264SampleFrames/frame-1365.h264 | Bin 1083 -> 1494 bytes samples/h264SampleFrames/frame-1366.h264 | Bin 1435 -> 1920 bytes samples/h264SampleFrames/frame-1367.h264 | Bin 1184 -> 1581 bytes samples/h264SampleFrames/frame-1368.h264 | Bin 1412 -> 1631 bytes samples/h264SampleFrames/frame-1369.h264 | Bin 1785 -> 1798 bytes samples/h264SampleFrames/frame-1370.h264 | Bin 1629 -> 1970 bytes samples/h264SampleFrames/frame-1371.h264 | Bin 2104 -> 2426 bytes samples/h264SampleFrames/frame-1372.h264 | Bin 1619 -> 1548 bytes samples/h264SampleFrames/frame-1373.h264 | Bin 1562 -> 1524 bytes samples/h264SampleFrames/frame-1374.h264 | Bin 1908 -> 1902 bytes samples/h264SampleFrames/frame-1375.h264 | Bin 1291 -> 1746 bytes samples/h264SampleFrames/frame-1376.h264 | Bin 2035 -> 6664 bytes samples/h264SampleFrames/frame-1377.h264 | Bin 1266 -> 3198 bytes samples/h264SampleFrames/frame-1378.h264 | Bin 1379 -> 1735 bytes samples/h264SampleFrames/frame-1379.h264 | Bin 1227 -> 1333 bytes samples/h264SampleFrames/frame-1380.h264 | Bin 1201 -> 1437 bytes samples/h264SampleFrames/frame-1381.h264 | Bin 1445 -> 1670 bytes samples/h264SampleFrames/frame-1382.h264 | Bin 1018 -> 1267 bytes samples/h264SampleFrames/frame-1383.h264 | Bin 1312 -> 1511 bytes samples/h264SampleFrames/frame-1384.h264 | Bin 1781 -> 1898 bytes samples/h264SampleFrames/frame-1385.h264 | Bin 1454 -> 1726 bytes samples/h264SampleFrames/frame-1386.h264 | Bin 1682 -> 1835 bytes samples/h264SampleFrames/frame-1387.h264 | Bin 987 -> 1126 bytes samples/h264SampleFrames/frame-1388.h264 | Bin 974 -> 1285 bytes samples/h264SampleFrames/frame-1389.h264 | Bin 1499 -> 1402 bytes samples/h264SampleFrames/frame-1390.h264 | Bin 1068 -> 1364 bytes samples/h264SampleFrames/frame-1391.h264 | Bin 1505 -> 1813 bytes samples/h264SampleFrames/frame-1392.h264 | Bin 969 -> 1227 bytes samples/h264SampleFrames/frame-1393.h264 | Bin 1089 -> 1281 bytes samples/h264SampleFrames/frame-1394.h264 | Bin 1338 -> 1386 bytes samples/h264SampleFrames/frame-1395.h264 | Bin 970 -> 1131 bytes samples/h264SampleFrames/frame-1396.h264 | Bin 1485 -> 1875 bytes samples/h264SampleFrames/frame-1397.h264 | Bin 1041 -> 1039 bytes samples/h264SampleFrames/frame-1398.h264 | Bin 1150 -> 1296 bytes samples/h264SampleFrames/frame-1399.h264 | Bin 1562 -> 1681 bytes samples/h264SampleFrames/frame-1400.h264 | Bin 1105 -> 1310 bytes samples/h264SampleFrames/frame-1401.h264 | Bin 1833 -> 6818 bytes samples/h264SampleFrames/frame-1402.h264 | Bin 1086 -> 2789 bytes samples/h264SampleFrames/frame-1403.h264 | Bin 1149 -> 1418 bytes samples/h264SampleFrames/frame-1404.h264 | Bin 1187 -> 1186 bytes samples/h264SampleFrames/frame-1405.h264 | Bin 1093 -> 1640 bytes samples/h264SampleFrames/frame-1406.h264 | Bin 1430 -> 1624 bytes samples/h264SampleFrames/frame-1407.h264 | Bin 881 -> 1298 bytes samples/h264SampleFrames/frame-1408.h264 | Bin 1041 -> 1266 bytes samples/h264SampleFrames/frame-1409.h264 | Bin 1376 -> 1519 bytes samples/h264SampleFrames/frame-1410.h264 | Bin 1078 -> 1330 bytes samples/h264SampleFrames/frame-1411.h264 | Bin 1432 -> 1540 bytes samples/h264SampleFrames/frame-1412.h264 | Bin 1023 -> 1077 bytes samples/h264SampleFrames/frame-1413.h264 | Bin 1055 -> 1166 bytes samples/h264SampleFrames/frame-1414.h264 | Bin 1390 -> 1298 bytes samples/h264SampleFrames/frame-1415.h264 | Bin 1105 -> 1309 bytes samples/h264SampleFrames/frame-1416.h264 | Bin 1340 -> 1652 bytes samples/h264SampleFrames/frame-1417.h264 | Bin 874 -> 1114 bytes samples/h264SampleFrames/frame-1418.h264 | Bin 1117 -> 1261 bytes samples/h264SampleFrames/frame-1419.h264 | Bin 1342 -> 1391 bytes samples/h264SampleFrames/frame-1420.h264 | Bin 1049 -> 1190 bytes samples/h264SampleFrames/frame-1421.h264 | Bin 1461 -> 1870 bytes samples/h264SampleFrames/frame-1422.h264 | Bin 1027 -> 1068 bytes samples/h264SampleFrames/frame-1423.h264 | Bin 1078 -> 1245 bytes samples/h264SampleFrames/frame-1424.h264 | Bin 1469 -> 1588 bytes samples/h264SampleFrames/frame-1425.h264 | Bin 1060 -> 1337 bytes samples/h264SampleFrames/frame-1426.h264 | Bin 1720 -> 6668 bytes samples/h264SampleFrames/frame-1427.h264 | Bin 1020 -> 2503 bytes samples/h264SampleFrames/frame-1428.h264 | Bin 1014 -> 1170 bytes samples/h264SampleFrames/frame-1429.h264 | Bin 1118 -> 1316 bytes samples/h264SampleFrames/frame-1430.h264 | Bin 947 -> 1260 bytes samples/h264SampleFrames/frame-1431.h264 | Bin 1405 -> 2026 bytes samples/h264SampleFrames/frame-1432.h264 | Bin 972 -> 1139 bytes samples/h264SampleFrames/frame-1433.h264 | Bin 1037 -> 1273 bytes samples/h264SampleFrames/frame-1434.h264 | Bin 1383 -> 1516 bytes samples/h264SampleFrames/frame-1435.h264 | Bin 1015 -> 1388 bytes samples/h264SampleFrames/frame-1436.h264 | Bin 1429 -> 1503 bytes samples/h264SampleFrames/frame-1437.h264 | Bin 1058 -> 1107 bytes samples/h264SampleFrames/frame-1438.h264 | Bin 1109 -> 1467 bytes samples/h264SampleFrames/frame-1439.h264 | Bin 1629 -> 1508 bytes samples/h264SampleFrames/frame-1440.h264 | Bin 969 -> 1118 bytes samples/h264SampleFrames/frame-1441.h264 | Bin 1515 -> 1849 bytes samples/h264SampleFrames/frame-1442.h264 | Bin 898 -> 1165 bytes samples/h264SampleFrames/frame-1443.h264 | Bin 1117 -> 1311 bytes samples/h264SampleFrames/frame-1444.h264 | Bin 1264 -> 1348 bytes samples/h264SampleFrames/frame-1445.h264 | Bin 772 -> 978 bytes samples/h264SampleFrames/frame-1446.h264 | Bin 1412 -> 1734 bytes samples/h264SampleFrames/frame-1447.h264 | Bin 863 -> 866 bytes samples/h264SampleFrames/frame-1448.h264 | Bin 930 -> 1084 bytes samples/h264SampleFrames/frame-1449.h264 | Bin 1436 -> 1571 bytes samples/h264SampleFrames/frame-1450.h264 | Bin 980 -> 1186 bytes samples/h264SampleFrames/frame-1451.h264 | Bin 1823 -> 6809 bytes samples/h264SampleFrames/frame-1452.h264 | Bin 1158 -> 2899 bytes samples/h264SampleFrames/frame-1453.h264 | Bin 1100 -> 1193 bytes samples/h264SampleFrames/frame-1454.h264 | Bin 1051 -> 1126 bytes samples/h264SampleFrames/frame-1455.h264 | Bin 944 -> 1189 bytes samples/h264SampleFrames/frame-1456.h264 | Bin 1321 -> 1516 bytes samples/h264SampleFrames/frame-1457.h264 | Bin 911 -> 951 bytes samples/h264SampleFrames/frame-1458.h264 | Bin 997 -> 1235 bytes samples/h264SampleFrames/frame-1459.h264 | Bin 1399 -> 1875 bytes samples/h264SampleFrames/frame-1460.h264 | Bin 964 -> 1416 bytes samples/h264SampleFrames/frame-1461.h264 | Bin 1491 -> 1560 bytes samples/h264SampleFrames/frame-1462.h264 | Bin 989 -> 1042 bytes samples/h264SampleFrames/frame-1463.h264 | Bin 1166 -> 1443 bytes samples/h264SampleFrames/frame-1464.h264 | Bin 1639 -> 1489 bytes samples/h264SampleFrames/frame-1465.h264 | Bin 1060 -> 1273 bytes samples/h264SampleFrames/frame-1466.h264 | Bin 1467 -> 1834 bytes samples/h264SampleFrames/frame-1467.h264 | Bin 940 -> 1201 bytes samples/h264SampleFrames/frame-1468.h264 | Bin 1163 -> 1334 bytes samples/h264SampleFrames/frame-1469.h264 | Bin 1285 -> 1354 bytes samples/h264SampleFrames/frame-1470.h264 | Bin 1096 -> 1246 bytes samples/h264SampleFrames/frame-1471.h264 | Bin 1518 -> 1878 bytes samples/h264SampleFrames/frame-1472.h264 | Bin 1048 -> 1020 bytes samples/h264SampleFrames/frame-1473.h264 | Bin 1121 -> 1278 bytes samples/h264SampleFrames/frame-1474.h264 | Bin 1460 -> 1571 bytes samples/h264SampleFrames/frame-1475.h264 | Bin 968 -> 1287 bytes samples/h264SampleFrames/frame-1476.h264 | Bin 1810 -> 6769 bytes samples/h264SampleFrames/frame-1477.h264 | Bin 1039 -> 2841 bytes samples/h264SampleFrames/frame-1478.h264 | Bin 1124 -> 1422 bytes samples/h264SampleFrames/frame-1479.h264 | Bin 1096 -> 1183 bytes samples/h264SampleFrames/frame-1480.h264 | Bin 1052 -> 1541 bytes samples/h264SampleFrames/frame-1481.h264 | Bin 1473 -> 1724 bytes samples/h264SampleFrames/frame-1482.h264 | Bin 846 -> 1095 bytes samples/h264SampleFrames/frame-1483.h264 | Bin 1043 -> 1267 bytes samples/h264SampleFrames/frame-1484.h264 | Bin 1377 -> 1507 bytes samples/h264SampleFrames/frame-1485.h264 | Bin 891 -> 1147 bytes samples/h264SampleFrames/frame-1486.h264 | Bin 1346 -> 1412 bytes samples/h264SampleFrames/frame-1487.h264 | Bin 956 -> 1085 bytes samples/h264SampleFrames/frame-1488.h264 | Bin 1050 -> 1172 bytes samples/h264SampleFrames/frame-1489.h264 | Bin 1353 -> 1188 bytes samples/h264SampleFrames/frame-1490.h264 | Bin 1069 -> 1271 bytes samples/h264SampleFrames/frame-1491.h264 | Bin 1430 -> 1773 bytes samples/h264SampleFrames/frame-1492.h264 | Bin 1050 -> 1331 bytes samples/h264SampleFrames/frame-1493.h264 | Bin 1180 -> 1344 bytes samples/h264SampleFrames/frame-1494.h264 | Bin 1258 -> 1372 bytes samples/h264SampleFrames/frame-1495.h264 | Bin 882 -> 1270 bytes samples/h264SampleFrames/frame-1496.h264 | Bin 1530 -> 1886 bytes samples/h264SampleFrames/frame-1497.h264 | Bin 1143 -> 1141 bytes samples/h264SampleFrames/frame-1498.h264 | Bin 1149 -> 1317 bytes samples/h264SampleFrames/frame-1499.h264 | Bin 1528 -> 1664 bytes samples/h264SampleFrames/frame-1500.h264 | Bin 1223 -> 1427 bytes src/source/Ice/IceAgent.c | 1 - 1502 files changed, 2 insertions(+), 3 deletions(-) diff --git a/samples/h264SampleFrames/README.md b/samples/h264SampleFrames/README.md index 3a0f155515..159c9c5c85 100644 --- a/samples/h264SampleFrames/README.md +++ b/samples/h264SampleFrames/README.md @@ -1,7 +1,7 @@ GStreamer Pipeline to reproduce sample frames -```sh -gst-launch-1.0 videotestsrc pattern=ball num-buffers=1500 ! timeoverlay ! videoconvert ! video/x-raw,format=I420,width=1280,height=720,framerate=25/1 ! queue ! x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! multifilesink location="frame-%04d.h264" index=1 +``` +gst-launch-1.0 videotestsrc pattern=ball num-buffers=1500 ! timeoverlay ! videoconvert ! video/x-raw,format=I420,width=1280,height=720,framerate=25/1 ! queue ! x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency key-int-max=25 ! video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! multifilesink location="frame-%04d.h264" index=1 ``` Note: since the fps is 25, we need 1500 frames to create a 60 seconds video diff --git a/samples/h264SampleFrames/frame-0001.h264 b/samples/h264SampleFrames/frame-0001.h264 index c22968a107875b678153e04cb0fe0dc88be5a1bb..3e2bf501b72c7d5f060214420462862e7c83bcb2 100644 GIT binary patch delta 1119 zcmV-l1fcukA>|^FH37GgHXaW(AaXJ}F*hJEVK_8oIXIDHECMk&v5|%W4Ipb}d1-ER zUu|h_Ju;If0?rB&|Ns0w6aWMh{F4C#OOr_hLVrd7{sQ|j_wiCTInu>&FmX}n5|p8b z{#~K)`P1+~P~+cFQ~!S}V*yr(7$TLyBG7Vzs#|OCis79On7-^lyT(LG6661IlTY8G z!GbAH%8r=E6|lCSsCk+v!hHhdNpKd!4$3u7K4-(QrlmAR}AQM#rI+b-ZCOcmmNV|bP<35fWFK< z{8WvObg^6v98`J)r6^(lmuP%GbnH;9cOQZ^f_5?w@YD~PqF)0C6&`_Dp@)4_AZP#i z8yshWgNlv`7Y8Xy7=Q3wGojNL^b0P~#{_Zp1+|k=11o=D_J{l^3My)~PX_eFKIud; zF35>Y+rkkftZa{@ww(u+pZ{-!@rqcdt`H6!JS7GRQc>#hihuono$yhl24}E@8814H zucO0={jb>@V->h>ARFp1XbeAb?)5-89wc_(CL;Bbjm9QlR|;ULYN@J9x!5DT?K1 z@BqVy31EN0DpBg>VxRy2g(&HQy)p~fy+Hv9IEQ`^gCwIXe%3PCV~tb)U9|2oP6>)t zATvFLAjx^ub$uQjN9}&d+Zd&aOhi%RRP|6>{?Px00Yyz#so>t2hutWKCD{=vn|MMb zm5q_~meZi}v-^FzUNK7)y^!5B)#&=>Ty~P(13@-8_`e86B%>Kz%gY?B|NCf%af)c6 zidCjVN@uSKM3V8u&Xbw@r-=QpV`O;6EK@;>Ia%tUx07)QEPww`{vQMy1?Y)s3isfg zX6Yb{PiuU?!^IjnYI5+?m~Y`Y47QSh{27}4Ac%?Ju!SXl8g5gg_5y1a^6@&+I@ZLP z&RhCul*eBc@Y8Z1Hc!#NW+wOl4`>k4fW1;IuYz;I_^bw7Nq7%~Ghh7>58=c4p$_s> z24ZFITuD6ljcgbmRXIyfO%k3f!}d|rDcA|EzwtiQi88`kf5bjv!jM&5(lC5sucxFN z{F)+KK(N0T+{mC;(fe4FPmc*mlPo@DRHc}idzTY@38>M9QdPDnu69rM*tjtsulTia4 z6Mz5!0c8L=h=@Ti|Nq0$Kmb8MlVJ-TlW+?NEW!}?;SHOA{%7^oV-F6p0DJ%ZUw;|k zdJRW>yMN#R|AfVW$`CqUd+#I>ij!dr9g}bi2$N9*9RqjYeY2qsI06*l0004H02M+a l5KI66@bpjs5Kr=xK@LchzzYVG&kG*2unsW-lYj#W0eJOD29y8* delta 972 zcmV;-12g>PBH|&CH37MiHXaW-AaXJ}IXNIQIW{yoG+~irECMnxv5|%W4=^BWWqE0C zbYE?0Zap$JlOzJp3KswW{5=!^1Q-010Ru^s5Ca91N&`QC_y72CS2tvJ6lMmbEFc^4 zIr6a*6_a#lF@7=(hK#X~Dw&t3|M*P00;Cl*RL}nwoG`2g&6KS*KF1dt(r5d#do`mV zk?zFj$mDWaBW-c2PK>Ijbrens{ox$Pw#PtRH$wFZ1x*z*_IF{n*4_yo?M6t1=g_5+ zZKvGHSyfGc8NXCdq(2GHV{A|oItc|usf$$4|6w>nxDA^rRMh(%Tx&_6?e^hJ5O zZjWt{(UvjYMHA8i;`z*9jD}S+E@mo|8iM+hQ3ou4J|6uju7Ced$vZ{tA=@7@<7hQa zWxoy$ANHT&GW3dO;Lpzjou^A;`0F4@J&o;hV>4~gp`bZK(q9Wx(s)zOq&hkn6J<5~ zcs1I4_&_=5TA0%CFOLTXf8bhaICu8&k^FOp2i8U+Irx3P%wL558B-Rf9*M!18uR1_ zY0}q!@JKy@)?dBrlM^=G7;=J!jV1g)Ny49b!vp_mv}{`@IggE?T9|Jwn*TAchfhi2 zPT2X4Q(w1(U8lc|pzBi_KLc~3fq(dWPYQ5I_8)FyLweyuM?VC&;DF)E9+LWYN!l-F z+aEFGXf;h`zYYx_!qd`mezh^sFSqpVhRjZgfyDP+yY)2`vtN_wT;@@4ox*zWeXK`?FC8LIIO-2T~Kf0004H z0B#~71;79Q4@Ce01^<(=2t<>>2n)0I2s#1*=aVoCBmp{;Q3p38ulqy#K?o|b&Hg|B z9tC0W03~)7Z)1Lt{@;YbWOnN_6$Q1EVFMcz-~a#tWdJ#dh(T}v|HIKh06~9~F$^J- z@CyVj!Vp3DLuTLqnf-NG!^5nA9{>Lr-^O?zgHhiu-}nFj;W1z`gbtUU`^f~NvXj9M uB$Ese9s>8@vk?zC0u*=v00CtH6+$8qTmS#?^iTj0U-FZ|4okBM4_pErGrPS2 diff --git a/samples/h264SampleFrames/frame-0002.h264 b/samples/h264SampleFrames/frame-0002.h264 index 26a426ef8c52f6a8644691ff9df9fe8bb716b52b..437f912d81e966f9342da7e453fbbd3cf28493f5 100644 GIT binary patch literal 259 zcmZQzU|{4l01}R~6ub`vW?6^)5Gt-yS4&~Iq4SVibxK;Sl;R;3BOQ%O@x=$`#UE*m zyJeDX8r~kv)}M9e-2LO%^kzQppZ4xNOMKG$&i>2sKCzcAUqu|4^TSHT^4GEGXFu!K zAI-4mN{^Qj$m;+7;QRxQGLU5qd1@U(AK3cp?dP9AFst7FfM4T#2Q`P!uOG|;OIvm> zV%a0y`O%)yihYltHc(v0C8z9}sz%q~}VA)SdSq60RV4}MM9fbAl43N`PH)aN^m_h=jFUAX*&p-TlZ!-$H96`S} zA33MN1Qw<#_4q6EAXiSa)HItRQ@ ouoIwvy@Jn?tQrHqHzJYDClmSn`~hgd0003&02M-LfiD1VFrX%gQUCw| diff --git a/samples/h264SampleFrames/frame-0003.h264 b/samples/h264SampleFrames/frame-0003.h264 index dc39cc4ea3f77d3b3b91c0e6c37bcd687c8eab8c..38e0395c8628da4726860b02ab96a9a077d9b8bd 100644 GIT binary patch literal 310 zcmZQzU|{4l01}R~9F#tYM7>Igi7MRnDl_x#VTKns!~?Ax@_bWOXBS>M7rZE5V4__j z$I7ou`3jw*s$Ms~6mzMt_FEO1dGOznYg^a+Haqr7j{D8Qi|RKPZis1-{m>d?0b5nw5ai5@#kEo^!z+ zUnG<7e-D`Xk7bTwN7D~>Kah7A^3*19>|s1J|NJ8hwFa<=W#p`YT5X@(I1C1Ii z!LJ4i;Wwq%%j)%v@Y;X;jq^Lhn2sJmi;~w!Uj6;EM;Wb&Iq^I2>JvSDU^n!ZQHaEWi|6A@qI;P?mTwe(7KowVGJbkVk1C@0(&Q?mya|`gkAa{{J(0 zQ-DXWwjCJ=^*#rR2FZf6V;dzMA5{pIggz2(Riwv z`o{X6XF3De{;l%6zmMR45dA?A*EUeV<^zMUEdhDH{R zB9y*S9yK-oMf_(D$%XYPnjSiZ1mlwbVJ=2DI-1a~#%5`mc00jxDSMdP+iGQtm$gBjz<0rwp%*k=iJvS8S-V9QV0SfSn){IE*Y_0RHF zJ_uEDR}f6lup4#xV-f%I;XZ+X$sH4rc|^Q*=ygnVPQf@pXd7wQc<7yG;RnS=Z&j#I zpj`WK&5gvrHxRj>_>q_Z)2*X0#trX)i$8zP+UlS4cloeFCf`BgzYr7p997r}hP;Z@ z_5NZbAOD28K$EZ@%-Qhi`8LD_D3Pm=hJyE{lMO5wU`-JPunv3x00BV&ZYG!xyaA=3 zf!Y870YLyciKYXu1wwpJiSaxMVmd#d65t?3gp3Oe$=T)cA_Q7-nQVV8%N6ByUjaG? zlGSh~o(ptgY^)bc`QX1@kQPYIK%At=NWruDh%bd~e!+?Q literal 748 zcmVUq>`2b$k=`MOXYQEnccy|ogy)$#H2_4dYz#6rZXXtEEKYa?2`I<_ zyn=84 z>7I))011Ejr~+89P#=lzK)}*(zlp|) zzk)p-l3cLV2Y!#o?qA8yp^Ag)Fop?d`E89G0Qj!bu|sg?s-Y#yaEmoG=)Zj5jLo3?zB22mY3r zh^6DY+WUY2e>C7RVq=wrQ6c{m$TaNbR^_^Q3O!3^w~TzzU(3Z0%|pNO`4z#v2s1+iCg^e@D41Umo#0YLz6CYTPq0pP#@00BV&If1ljul0003AFaQ7nL7IRPyag99B8GR2i}q{rg0PXs|B|&X82DAjHO*-BYjI~# z#Qa-U>hb^nR;GNVG+=MR^!36#0h#}|uf9^_z?rYURGcWL{PVU>arkt(flik{ zggVfHAU=RYt6A;Q#L46Mt_a>|y=ie)3Y;Lsp1fR+Fh7Q(Is4_E!=a<*|NV*xZ~(o_ zAYS?uS?hoikErc(d}exH|Cht?%zPBaaAycAnZ4iufdld$tZ#h>{_PO%CT8}m85D^a z89Yc{ZU_peMrH&R=S}(2irR)`H|doHtX)CX`^bp-FR!@m=QLdc~K4h;{) zP248${RtLGRcVf{hIou<)Sr5!%5*!8js;pL=8Va~%WM20jZrQ4)%f!(^#*>w_5!Wx z^P%Nq##e|GEUIR2$9_$7ttzAt3C1{pKI#eE{mb?9iHB*Bf8(a_#AfiDzw~q>MUu3~ zVz#bs)dpdz287ZynfT5T@OyE-d4PXY*w*YN^;i?PqrMacThr&&<0wQ(MKo$py;5a5 z9mI@Lf(pJGwI}Y3gxDOmmLUi}96k zU~b(n8W9H`0<>kA^s)cG2&H0XUWHTMnm>tSGR?^ z15?-i&KL|I?xf{C5U{2jz-Y^}yir2B)w2Bc=5|&59xt zTyf%gFaf(=AnKd+|8r;HMeQ))`k#PY$v|te_b%i|Yusjjq*Jv55z&vHHCp`hfJmK) zfy(fUvhw~WQjHOSAN)jtuG|bgQJ^+?FCFL*@USIcTn-OVS@0y`i^C8Oga7~mK>%(h zpaib~crX9}0YLyciKqc9!1jL;;ynBbr}znwKbRCiKlR`y>0rxd9l%Lnn)m3ru%v#O z`~>J8LS&eFD&iAWi_@% literal 922 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 delta 730 zcmV<00ww*#2I>WW000012`~Tv0YRF;6ubo|V51xq`sMJCl(P7k*go=xa0Or-0+;5@ zfzhl_ijIK$md6bt^fx+~JXZwy2k~_H5==XQ7~4~}{nKqw3o{4Ak^mlvT_q{#DA3Ws z0$ANDZ9n~~U>tLiX`1u+5w@B^2m2|}@L|J2+4>OUMqS%~1_tLqCF}FDvCY8VU@(8k z5syLt7!b{ap#H&FaVMFZf>3A@z>pkBKL#dhJIsHOFnnQECOtzpzV~;3jv(ovi21)2 zXbd>VX|@Mk<39oa$@&MBsLaL9kH>X9eB5(y2QpF!DD1Wo@!WJm;0J_Q8}NL3Aktu9 z_(nPFoP*xnNT=u&72?^g5EMe zp3p&!RR;z&FwmkDL^2S#%pT!uX&-!iRvmXkp#OkyP$j`|wfuJ+5*R}Df$68^d=0jI z1(aQ+^S&#FA@#INhLCLB&xFf?GjJdO=f^;ypnQve{C)^wC<4PNMun{JR%>lI`k()} z2_Fy)8g2)zyr(du&;k$8A9>ftegbDtnW7MIxB!*xlBnbe{V%)-<6a`>AA<}JSI1y0 zZ{==(fskG%QnA_l-#oXwWhSo5Cr$)8W`~!l4E(?wRJB|qqA$q{{)AGIs z+dcxyF4B3>A_#(9M~LwrBgAk7N0XQWAAcmk^T1Gn+*l;RAUQ}I(&cQ02nnZxT>j6P zBnu1xK~>XyLdP8-kh0y(ox|`GAafFAFK7^89|@QnksMb7Y2dF>79$q{)GxsWCUg3>P@MBhAUhy{WG01E*@ M02M-O08;P<*0DeH;PMMZ`48^tgPu@_t8_b{xPzuxG zuwY>5kTbx4Qk=jS10De9zL}5(kz1TFFr)wM23#vFDTA3Z|Lnqwa@6z!Unhbcj<*oM zmqKEpV~I$1IV0_vuGqfd03cC&z=Ptz>`>$it~tHu{m5nC_5fQa=`73wLoh1&LKVK5 zDlEcI`k9@;#P_Y44S(JF#j^1QgBkIUfA;trGk%GQ9b5gaIa5BuH?ojEVI`Ge3e$Ox z$I!X9dQ^cjFai0zHM@8}U@tY%4x%Wi|MeW?ZlZrS1^+E8dwc=>L?IE}k68Qso*Rq2 zA8>?eAWN)Y@`VjF$DR)XT7q_}M9lKXYXkqw67^rOcGCtCvNq`iW8xj6`5?ojw<52T4&mT2*qMB}1t zW}pck`oHTx2pFjzM#U%cP}`8l$4I=@%6U-pnI#6sNbe5zx_`z_AR#{wSoOk{A|?tb zb5-zq4)?U^zHfdzmZV49tDqBx1-FO&hB4p8L?$w+j0pt{zsH;q{(76)!bZnTTyNS0 z4_(dg#u>m7&?WK)m%MxM`K9Si*+_Sr5ClZ}@jL{B%O7|;QA*yXD)QZIho>XB82#1% z|0x!uNyvOXsW#X7lA^%;E%(hxCJi&crX9}0YLyciLL=lz$54L`S=r$@Dw0%%l=jpiv?H=P86iGR|YBLfnVnT z*YH3;0W)_Rd#k{jcz1{>NEQ?T1ZX(PboqCH(MPuYoyz Zb_jthM}zPPd;kCeK>!s(Yk*Sl2IJX@bnO5D delta 425 zcmV;a0apH-2Dk%%000012`~Tv0YRGJ6ubqO6bm2&>o))_1w2RmK_BK}mbjn+0%RO` zjgSBcBPZ#g#u5Ml03Uq-6Qt8Plc}Nrn1qVwUNt>YB9vz`T8?;_JH#v z@*E?2@rvt@zxIh5mkYbs{KklCzyx01GzZ^(9^~)pM?6X&`v@UPh9IhgRE?kTP{Sz>G z%z8u@Y2Sl3Bg|}SoQK#xEK@!#k6U&DOQ2NE!JnyMV#IN^D#^jBm%aiB zh%KQVVT?xrMG%vk0vl=YC!gRbK;ytkfz((k!7!ybs-#bQ<}m7(WY|x#mUw1>e`RU&uUv$Li-)>Ezjd@DmRObYI1S zNDxj3k>Im{JwF%#2n_}VgV+Oq(v-G0&`HBAKtTnaU0G)a_=7*uz7D=J(!UEJa1X6P zFM@F3F@iw?!3aZc^}|O>_tD?>EK-?Qf!M8Vq@hI*E#TOF-FPPc>zBm>G#3Q`)G!|z z(E%ga|2&6(QffOn=;@j=w$b;=5#RJru{D4U-{o%KVM@@5{PW#s6e;+W-7U~6S|9Z3ANPzV4=s5SBTfidU_0*e3}L*z$UssBA52H2S~{=YAQARic#g2=;s z2goEF7~*NUOeVsKY0wXqkDd8PzzyaIi}S-?WbpZ4l82|4^~Ro&%_jAY$MaaE zP4gb%n9TH}1HzXXy~Gpsz6Vu!672wNUL}YR0r1gA(sKVezcCSy|HW7p?tq6w`obIm zn4_h3Qq0lc2+nzh*np=3NSG~vbs&?<0UBHL`S=r$@Dbp7*zo`(K;|qKM|@8Fgw;S> zrLej3mjc~IGAmnvCY}m-wm?}h00pil3wji81k?2R@`4OFgf{|(NFobqZ(hWtgrC4) RKmY&%K>!s(YyeX52IDy`4Z{Ec delta 561 zcmV-10?z%=1il1+000012`~Tv0YRGp6ubq2{JwH*5)Tgy1%L?sTLV;%z8aSp1y`g7 zU7diC6a9~>CzL+_(+Cta&%^it7tv*hmOnUne*ksc8fL5C^CHGR!{~z^`raZau{^}g zccuJBI1t8oMS+=k0qpB0h5i79NK&wik2a0Qk5iV}<$>3K_!ZiJB`3cxnjs7f#EkAd zF%lgY@UC3USBNixu2s9-*az-!h|dE6mS{3}F+g@S8&6fXkKBZ1H>K1HxH|}S>6S#2 z^@YI_1lO?HivTj7`rr3{?{%|J6M(AidnQw7@Bgb>ngEn*%Rc`}JpX>a90Gwy8-S4e z+_jB(7+1o7d!N=?t{YS<41f9NS(ulP1i!+Hs7)l2oer+u&gjh}ep`qrwaPYW-zGop zIT8)-3dFvUPd>Zai0whjzkmzUZIA*$Q{y4v6#({hYIzR0yr^LKQgclN<@&>8dr1`7J>iYbn- zV?TA>gD4v$H9OP{Q|0;oFh(lnfrG#rplaNRY8?Gv0z@^{_~aRk?*kM_9a5pm5x`Fo z1-<}>;FH?{8d~ulegxzE1c)9?9O1`XfSm)Fu!cby8e|^6e5^u&H1J!*_$Ccy{I4s4 zH2%MQB2Ynu?mZi_Uw1Ly1o`3wWAWY?;K%RSlWaFHZUXuM00BV&6+&zPQt$@j`9cbw diff --git a/samples/h264SampleFrames/frame-0010.h264 b/samples/h264SampleFrames/frame-0010.h264 index 1e93ebcdb09e9d2860a979fd74aa9d322052a998..53066cafefd699ab7b7069006bb8fde16363793c 100644 GIT binary patch literal 653 zcmV;80&@KT0003AFaQ7nL7N~Hyah)nDv%(jNK?duGhhJioD_x{?2<&9|M&qA`xvKa z_jFS=XoIPx@Iws8!Acp!NMcR3$AD*TD(h>m+q7=KxcwGq+bb#|W;7ufaAT!~77AzU z13j$9P+=&Nm+Slp93kPfK-Y!>Q5zp)h8 zj~V~pgg6*y$uIsA<1b8XnNTkMaF>J}IpAbneI5$_KvfCwHh_3^cnV*^H$X@kUNO+t zi7Y%;0-OL)WO>dA9_Tn0j}HLg08lwF674C4%76eMWcKA?XSiLA0=gmsA6On}e#gE+ zA(#+mAKnUc#dJ|K$N)ph#GJ4rfoy0PMrf?;q{jE7n9%6aqR+&z=wy}iD?irM~d`X>Vusi80*DUa_hH8Cu~aheLKHo} z4B>fb-TE+kmi!&m_(Y9d01y7|vLs49z=MDx*Z=?lK>%(h$OSI|crX9}0YLyciLwDp zz&I!K`S=r$@Dd<-Fk^x}&s{)7oI!#`r@%{r#st&BUlN4^u5ShkL6j0f;qG65u|i8xx!$|AGCl;C`@}0LdaqO^}Gp nfrkQjBnZFtYw|z9-D1ED8dXPc_#0pV00BV&6+&!)Qt$@j1aK#s delta 528 zcmV+r0`L8e1)v0f000012`~Tv0YRG}6ubqIe}aAlF+i(;3S@dhJ02hYP&Pobx`h*# zE+w!dQ)jy>jp(Lz)*BB2oDd9xPq8!vfUBsMHXue6`*oX zXxO-S%0nC=Noi?2fDH=9t4KGWUF5-g@a0}bJk7u^1Uu4TPa%3$^#*^>2pX!R|KI<@ zgnC~rf88yAfXTy5ZUSf&Wfo%Jki7V#)lCR2Gc>ek_iEhLDRClo1m zJ>~l09|95iK780v;h2#49t!~9f%?K=0LdaqO^}GpfrkQf@=<~eQtP}8)+8`$sylzc S+W-IoK>!s8LTrFi@CM`hk?BYP diff --git a/samples/h264SampleFrames/frame-0011.h264 b/samples/h264SampleFrames/frame-0011.h264 index 4510cabf1a9c30f4abaa8eed422e8a27f6d304aa..c451b3e114b98e02dcd7fbddd0208e3c2176f9c7 100644 GIT binary patch delta 648 zcmV;30(bq81)K$c000012`~Tv0YRHU6ubq2{NKjbV}xKVzyb8HW9$;1OTQQ&(p!KB z%+DZI7$`|5->DS3D6`q_c{u4~DJL#f7$Bd&0~Ed`2!w)yND$xzCy5nNm-g5>)P#wp z>%2rvv0}gYZY0Al1CEHs(dm3-Ej(C6XE_PSu$x`H0@ZJS$e8=~3}8_{s;_^LvQ$a| z;rHd3CKum-0{uD#khT5x;P|?z+JLt&J&3CQM~)wW4lom5U?3Q<0QN(uv@sg6*1WpJ zOxBlUG3{mmA}^Hr%eMPAivIxjiA>ms{IwD6z4jD;(8K0^FUPw9#(E3@B$5ph5k<7ew}7zkkXlk1P@3E< zHn|==N<)S&>YKU-f&ehw9sm?B%LGnvIFI%8;{4r7zWTFCh1AP&yZwJVQOd^(VbaXp zaRm2(-@Y<{4*AaAG@{9 zN1E@FP2g=G5Oysg-+#ba5~4{}`~UxLA~U#d7y`>)=jP5N0B7mVS@-Y)9J0C#lRn{3 z??M?ruNefSVnq!g5hzuz&y76upjf2gxFBICBxq3-mh3U;zxQ=9Yf`ttYUe(~5^(0pK?c zB!`J7`K*#X7On}H?}rVK$yn#5jFD#@nRL?xf%aG&1k(TE zmO{V>l&5ol2@86RfaduS1_t}Uwvzae;tRt9LFmFz@#^Y0W=4+N6;N9lnIHWLp`p-< zf~0Bc9)0!==WKztQJR6@D1Zt99LMTNnE_pbg_!r=02z(9qD`l`yokVswFy)8ENF3` zOmAhy;$*gnvJf+W|3U+56&KB6lma4nP##GRlK5PI6R^R6p29&08?BBBEyQ25|NO8i zN1Gz;ocn8S313?Ozx6ywQnQS)AD#{Zcl-$37xG+}z{WUE7Z4X2ZnshI0<&2ODrxqs zoLCDI4YKEtV-o=J^ou4u*>>wv!lHcIvk_tU$My&Kr?fxK&Ug<@@FEC;xB@DG0003& z0B$Ce2Lc*;fRzJ?2@p7t7ICj&CP3m7>b>x@iLm~kf&kuX-nZd>Ty#1l1?DP@G-E2!($OF%~L_FOo42h$8t! d@Pq$l2yfK>pSidi-~a#tK>!s(Z2(g62IDFE9>f3u diff --git a/samples/h264SampleFrames/frame-0012.h264 b/samples/h264SampleFrames/frame-0012.h264 index 8c5cea8ff82e8a6bf38236c5da59019b85df0e2e..f00deb340fff7c7cdf8a7465b142a0ed9db8c4e0 100644 GIT binary patch literal 451 zcmV;!0X+Ty0003AFaQ7nL7QL`yakisY0L0tJ`BMSCdmv~a$1LKCotN1drQN<6G7 zHA_HGFXBLpxU6mm3G#R!yFdZ)oyp)qRFnT$(RLdO=-2KKXaEm&0MYHxMn-cWt-Vt< zp~^kZ;kdlo3O~cKq@+?n03Z^H7o`|?mV*Q)I%k6@(FLpo22}h3#E@vvoLgLb#K34H z(C;4c;3Jy!%p4KRdS@cTRUg_>fcK-pYzdDP4hRYXT*5Es7{t2!dxC31F;33={%l}h ztMNn!?IT`3?}+@FbF?l~4bB|M#UKNJb+t`~CojU;qFC zK>%(h*aYtYcrX9}0YLyciM9bdz!M?-{(c0}9)DmYK;kSwNEUF&)TWVP%i(4MJPj)2 z`t=Sv?FiEG<43K^ejPb5CLRg-P@q8$wKRbtVk@! t>1z>_h3EjBU*3ce&|P&V$L=l+6v!s(ZGcYj2IG8-%EkZy delta 414 zcmV;P0b%~b1FHjn000012`~Tv0YRH!6TAhM1hWEYao0p=;59wV;KWd9I6M`C;Gn}m z8+UpCr~t>OG$(yP0ATGaCO*&LtI4oIeo{fccd`qrHxGDWLse1B|DRlZ7!p5CBM{8Y zg?MxLFaZP>qF{>g)!C+OW(oq7$VR0KAOQ{~%i)L! z&@|buI)+82jkJ2CaDoz)n0&#!+)>GI9ij=fs!t1th%tW<-0PxfR01E*@02M-Q IfKKoRoE5S#u2Z^7qoZ4n0Ty0!s%VlxG6GU&eHDLufZyrKrk0^_H<>^X zpcSXjL4kv!K+ggFN_GIa5by^*^wnXqEoyMU!e8tQaHWMXa;1IscodwPk8A|;{nx~vB@6knwrdCPyi4peTO0svE`I1TYmr%9^~3Tb*InPpZUSDcc}I&gT@a2agUQF zMVLw7Q!~D)?^`k(uif|M<>C~>?|G}g+W|8-=$Mh>-}R>|&#@cXNFOkg%CLoLJjY|E zE^WOPAWfJ6UT+O<-Vfj}HPH^DD5(GRjO1>R_?*egu5()fN zH2~Q0Ne35l$H8`u{)zWkwF^1SjtKz~}9V@9h9wqL63Zco=co{9ZvhKfln~2jSGGgl0|i000mE z;BB@ZW~J!|hX6yc0003&0B$DW1n&TNFaQ7nK>#_4xB)xB6{-A3pMf;~e}It#SwUnn zYTdyjt;*7@g<996pbHNL9 zK5+BjD0mhJg0YZ$53vd@O|TJjA99pAU;HzyU(oqcnXA=QL;Fwyvl0^3$v>*+fd>mKW;-V-b0l_*x6TPy*C z{?Ya>xfbjH{$+xh$Z#)?#r&fo8Ef;1tIH%3HbEF0fiZv+bN~PWK>%(h-~}%LcrX9} z0YLyciMRnvz!jiqtl9fIk88Grx)0YLy2LT&(3@NL8b$N_ARg9a8*zkayd)&K$tL*M`aK`LcIuo2?9 zhj>Q=Bmjr0wI1W&-D)eArGO)5G9kkRJ%KUq0Pn;~&(Ht&&2ld<@R2|V$jvZ(1RQKv ThNi&OeRN}On~osC_yakBgcs*X diff --git a/samples/h264SampleFrames/frame-0014.h264 b/samples/h264SampleFrames/frame-0014.h264 index e0831d7e7060ffc7079c6ef2e124d84ce5b683c3..2818b02d40add15e14edb23d673379bb8bde16ed 100644 GIT binary patch literal 636 zcmZQzU|{4l01}R~7YOfRZQTD)MnmcWoAgEFsJ$mx_&H}cE zoY@DO8-n&@eWM60TN_hU#yf*Q*tIso< z-2cxf&-vw9M~BwG30<5H+(IE83@l7p%?&J{^xG^>7yV0NxNe+<$hh4d`u>68!xMW&=C3`yP-XvS`~S1KPN;m2 zEfkouJpYdCv)%jUrItVcbN0mSXNp~SesNcyGJk&GKlfY9>AN2)eoe3VQOz)cf6a^Z z!@MFnlfD1wKYylV`2WXhrnnazCHCDMSqw)sLbtt&WxvPqnr~Zd2Uh`$H7I@=^3-0i zyl1EYM>d0H=PpL;0}_UR+z)s(&WTVtWPEzsrb{;45BS*#{Z`P?3ID`>d4DxfZk|K~ zShuKCUW4C<9Q6k(4(B_6a0(dzM*%;~;~adfbWh|>nf*Pj%(LZulJiBY{We0+KmYvm Ouik$Cd2|LtlmP&SDK=^V literal 725 zcmV;`0xJCg0003AFaQ7nL7SiyyakDTP!R-&ppYaiU@QO$5G?ZW=`HRG*t38+DFhNH z>Hqm-Nq|_0Bb%+vD!eI9Tf4yUIu64N3yy!mU;xl4OEm1XfnzFz5F6IqfB^;ykamEQ zkbICV{k?arKQ*!cVYrwx4%8;_3@U${k1oN;VXVQf1VZ*47+t9>khnxZEF;E66Mvh2 z$RgDVYMS-Y6G60S(jfQQk;=X@i(o|AVI04m0nI*sg|KVjTBAxW)p+rjc_#6=? z&Jb86!VkyzXK#{U>F>+th(dzwNX~hr#~`VC709H5l}->pf&IaBvjsp4+;7oS!GIJ_ z=Q7zG09NfXW?fZolQjSA&d+V7hf}}&mb#1)NfPk9>{ozIeVDKTQk-8=5Z9^5DtnpC zJt^vPUj*u5B<#QYUl1WxTJ{7P3Qg(>K9YiiQ+(2X8SybZt z^u7z2R4Nh#qzsJjz)~X>h2X)@=hE~}M`~GNwq4}wVXS}c`a04Kk z3l-7vpW@8hpdyT{N8}DejUWMlP^SOQFM{y^Lkt2ypm^gUhVIiZ>^+%}*HXXVu*dIo zBK{f2N#r$(M}D8uBBW+{qzm>AbOC|f?nhWk?6x1^7$fvz(|3f z7=Qo(0YLy2LT-Rk@N6gGBtX-N_z4g*kQNQoXT-s539kVr29g4S(Qdgn{gP=DJ&6xQ H>);Ebv`I&Y diff --git a/samples/h264SampleFrames/frame-0015.h264 b/samples/h264SampleFrames/frame-0015.h264 index ee4e1f05da5680085701da2594f83827951de290..18a61a028387f1328903fb92ce4e9a0c2341b3b5 100644 GIT binary patch literal 708 zcmZQzU|{4l01}R~4~XnxoqVLpm}v!rwQ=jlw%L_RXY2nkG)ZmjDstbgWgM(1zA2vn zu;GVj$>|L8KR$=tXkNiqmKh$SdwKJ9`|CflS8V2=KjmPD#t|PL+lHVG|57(dUUNy- zP<-Cv{`McsXOV}q80vm7R6qZgD_mXP-pObe=+W=EiGP7p&L`Cu)0o3gTzPD}PdMYH z{hh_Z?&`~h+)Nac59n-2+1V}Ua@uAa>&69%lFi8{ryl;B@vx__+iJGV5vBRNmj|XN z{r}AD-ZPC$$@LG5=cTW+?MtRD(@x~CE=o@R|8ZA_U4gassm+HLDX$XP_^EBJzWt|z z^_y6}cPzF|V3Kh1{Mr0Z=~@DV(X|6EPo_Ag1Td7IR{MTd&f@Q9wD_eM?ABeJK@)cwD#%G!7{vFM#_pgdbi ze%||U+DV_pf2lJZ3pY_?zBHrOq>bTI ze-xL+H`)~X6}YuHFxda_doodwQ~3^uO-(_)+M5CvOHeE^)eTiaO;p1bxU;zrZPAa709`pdheghAxm}vZ$YR;sFNz!yFYo zg7fyz7B$TNj|`fN59arCHl47V(Ow}WS(N`_{lkEHOlk$aZ|WI%^i}h{BRP(+I63NW zm%8}-#Dr&uR`h-_J}I*G|9RG(fBx0m&p-eC^G{Sp^9+s+Mjfm?>o5G&`D+_@H^Q%t RjrYHeJ{F}Q%|DnL8vp`XQL6v| delta 544 zcmV+*0^j|_1*`;r000012`~Tv0YRI<6ubq2`Y-TLupo*BTmVxe(Fo`*AO27}1cfS& ze~7r2z!X#EwVpdTEfu}~u-JGE;DBTidqeR0Raar`^V#CX4Kdu zL_lm5BLkRQ!2CLmrh0#T;~)S?NC7AM93r(sKtZd`-41SXI{|3{CJ76azx8s|%R8-Z z5|>(PGfm$_fXjD@r=iiYqAQJFolqD&6+)Z3vmp(!X|}nSwMrz3nlRt|08P-7tN|H+ z9(WYbz&z*k@FySOA;8jLNx?HShs*vGF%Yp4>!3Fskpj1#6%TdBt;;?&o>SlipZk9A zT^YC!|Cn9?00BV&6+&+SQt)mk&1tz)EF=;pMh>|1$dI83 i2#xSF$O-TfU}X?>;=%?W(}A^omSq6>ePBlT0+)bVYwTwL diff --git a/samples/h264SampleFrames/frame-0016.h264 b/samples/h264SampleFrames/frame-0016.h264 index 75a60082be423a1ca38a2b51e2dc25256586f53e..4c7803132ce526416c373dcfd0a808a49b28aa09 100644 GIT binary patch literal 789 zcmZQzU|{4l01}R~ABgN>ZSdn@U=*AwC^>VY;LQ5}3|fp+w9i>={2Dj?p!YIWfrN7m zmWC_kP0z3Y|Ealb{)DZU8Uq-<6&*2&nWb|&@6a9oJZ+&f^`-JB{0mp!)mDtk@xFg2 zz3P6`>pNWSr@tu$A7QazlfIRC{Qt{+_oIy0*%#M8Trp9ypl7m_`_hjSwtP$!oU_c` zQ=;`H|Ly~}(Vx`h{x&c4{TjDlT~fvSK6~5i(}@D{b@y0*TCq;p`uE#|AG=oEKA0C* zov`Ykdno=9uEXw{PAFp7q~Ekug3AD%NEn0pCi}=y)t|k zefskt(Chk__m`#OKknI|ZpT<$WLU>(692eLLy<1c$vQOsqKu z$5v>+yY#+4En{(q^S2p3Rf}etdw-bCG@X-Y`~C0tzx1}JE|P5%;=JGXCC4Mb>_nx6 z!PiCn6P0h}z7Y(QllUs9@iIA%!Hltg{{{P;(3)pGll~t3e)_+e8pEB|7ajc-A2^ab zd=A)abPDzFI@To9w9Gbd2Fvj#OV)!2Zy5XO9uB+u{!B+_LSfwBuDn{sd?#*sH85K2@Q8 z{`u#hfBx0m&qrbWu+%@&$?;UkA%rVe%6(^Tss2NaEa|koLoyG482H^>Hq)$ literal 669 zcmZQzU|{4l01}R~ABgVZN`J`wL7`A#LrUk96+iNl;`C<;TbPAkH*jxIXnSVp9#R$0 z+mfcSOG2Q5zwL2~cc;Go4TdO#rx%%|BKyC}A3MEwgMB_va9GqUm#t@YFK|seae>F- z?YY)~yU%TcW*8qZ>%OUP@$W{vMS7P2*9D0O*ECjoJb(A&&(`v{UEV9({%SHV{8+?R`_a_ms32 z`fENAFnGHj?;A6Zd^{ic_rL$guWz(A>6l--7&%#`ZbvSoqNM$S4{A00*68(V z&;R>!$-=2^6%RgK@m}075wFH*vVVqkXQI-#56ZsZ3uFUiI z!**@G=arInSkmO!i(Anf*PBOXsh#ghe`Eh-`HT8s!5_SnD+F5{^OQS;AK7v|;3xvc zGDDu)57vB!3UHJ&Sa$AXj6UcvkKqje^UojlfE9>3h0&BM`8St k`L~QUas}_Qp#N1Z3y-UmH@$`fvOIB0XE{`HZK1am#{N_rQhQx-`%Et%CA! zbvg(O_qET2q&x_F3m$+11c(S=e3T~3#~Kn64u1hX;NS})umbtA3OPxGq!2fH>yjG3 z>;mUTLBt)o1SX~YfeXFSQ5f}%OEzK*$paKv*VIz@F$935U@`@OLPIxa?FuIHqQCf+ zh*#$BzPBI?&hUl|7zq9OQU;1DbweE3AOWNho{PH(gAp!r4;7#VZwMxSb7>@4Mjjtj z|4(;zeV>{E`a9&G|2_p!KsvLKcvd2TZ3uzpKoE8VEfH zTzkv_5K(ESV!#ks5}DNk&w#mI!BSX;ukH{&}(6rKbf^5eR0Rg@LYshRyw0%Y;8}1Q}^Ki11IKs#$WNDzE?k zABfx&8bOf7BKuQe*m9I>#N+@3s9p#|2xv4u1d$L|0O`O000BV&ZYF>QZvb-#;HCfo z0YLyciJ$>n!9botJ|}=QNB{r!s(XaH95awo+2o&@9i0U`yF0!#{_=nVu%FUR&c zNC^-xh~i%{aP}q`%YFhh3?VviWeONeBpCn^sR#s({J>2-73q}<2!g?KP7llR^B
  • J)yP2Oq4D)XZ-<|W9RLz6BJ~tM literal 635 zcmV->0)+hl0003AFaQ7nL7D&-yb9;&{HNqUXW;i=5DN+mGP?|Hj)Kk}ClO?D!5Iq} zvGCvdC=BzqP7|<)gG0^}48w5s$;U?~_)35{!EHqt1uNi736wiu^cEa-(HMIJQ@OUN z1(}25NdOL^5mRwrVo8IS00Cq*lTFnh{?#y8SF`QNh2RNWQ%DdxY~rXfg*s5`)wKxw zHXfa@7zE;|33~kOI+i1WyuhWO6&(ThEsh#lEC+-9oOE(v`W>0R7{)bO+{~H!yT`b*@?g4hBXhkj#*?MWqiD04NQS?a0-C$R{Q+0r@UA zm#_P|we`U_ZUUgU5m@?v{$ylnUM8@Jh8RtJFWo7&e!eJ%@1h8AGm^o%m<=#7YKwv@< z1-Oq9;ygzvjsS>Y0003&0B$CL1+M^jFaQ7nK>#_4paE;Z8;k$|0YLy2LTCV5@Ny@_ z_?`sg`T-&Zkq0m;bASLsMYTT12>~Jn@fg>FuPE|d-dD1LQknAj2=FlZkV323No1vU zG2F#q%r6A(FZh8l@K;J%hl1`jnQbFirgsh89PnSG2#pj9pJ4%j;L3`r`o=ZDqy*(I VO1!Vj{Hj-}1TsO100iTJBv@Fg5|01? diff --git a/samples/h264SampleFrames/frame-0018.h264 b/samples/h264SampleFrames/frame-0018.h264 index f258ec04820964bfa93b30f00cac1024baadb93a..80323d4be3f6cf67cac338567305410850f9a37e 100644 GIT binary patch delta 700 zcmV;t0z>`j1=R(A000012`~Tv0YRD|7Q6)?V6!L~cp^#58aE_OK8NG{@y7$jn`|sV zwodqA7B*g3`lUslv~BPlzxePG0=xihj6Z@Xm$=Ud5kjJ~JWO+;e*oMBl9dVV-{d~j zo$CRk1|WTg`eyQI7#uu62xZj)~TX78b`MCN6U7F^aJppgfDB7lq~`Qf7~T}G>BvJ z>^Y>npu;G2y>e(!!hHPO7X)notfAgcv9R0uz8Ma{zo1PPlY??L4AXzHE`AWcXXiIYIOM(dqbdUfA zytWwo(##X^u71d14U{ReNboke&DCYK-+*; z7gsgU_3e5gKdfI8U;hKMMv=gUQ-6C#WI;Z>5b^4Zb>K7exyi_M!I&Z_$&tIQzxpUu zc91hp!cYRpW&n4z%BsaWA+NPX)fk0>?39jW4haCl3Gc0STtPX`l4? ipyX=2IN)s!kS2H&m+!G0U|;-glD1O&x~rQkj05T9WK4Vj delta 720 zcmV;>0x$j51?dHU000012`~Tv0YRD|7Q6)~C@K!5tB>O3Hwc_>4nRG>k}xx-Q=jp8 zX*mw*DhL;!gfPYR_cAm*e0BfA7O7YW(B1zn?m%aX#s+@p20K{s*alJ5pkuw^KNisiFXwgqq=~Hplvk(U>zLk$%1w z!0IX3jKDA;AJgUBZvOv3(ui9<b;kL{se4=rm6qF1fKo`xa5ET=G}pjZ1pAjvyp>YncOk|?PJH*ry3QlfA;c9 zASNaFyb`_zzx83);QNfR95zAp=y@HF0u17<3-A&YS6;ZBX^sh0nyyL#{L$D40LB5! z$-ygSru<&Qba>D%xOH%bQP)@`-HS>AkeJ}=aSw`r#_G@%@cd2d*MqOh#d6LF5Zv4# zmV>~2oZeB91ZfySY9kFMgz96kodE@G#l8nPZk?sH6yra2c&jbD$&ESg^#^^&EKa8T zH1bbh$&Faw_W|)+f@mvqxWE7)FR?R2@3~W4K<;}=fk&~0F)N*TsT7pr<(v>9xwx$dfP>)>S3*2T07Y<Y2b%UO3Ph04HpMOk)4@L^z^P%>p!?)!8UP5AX8UCU5(Tpeyu1mgg5Qb- zob8+D006>p@BaW0nrqgX|1af%KZ*@TY3u|BIRFa4oR`b)ol!VdWKnFg+<8`afPEkX CA6!`g diff --git a/samples/h264SampleFrames/frame-0019.h264 b/samples/h264SampleFrames/frame-0019.h264 index 3cc198ea77baf58eeba50fceba47e69e6f4dfd97..629cf78c69def139d9739bfd78f215cac21fff82 100644 GIT binary patch literal 688 zcmV;h0#E$_0003AFaQ7nL7G4oyaj>3{+uWYxB$_EGNJ%5d6NgL&?Dsm3k+FuR-^q6 zY=8B%S-t~<2jBthBwh-YaR^J_wGIGUEQ0zEO~bo4Gb``|70B5wUce_--ibD^h#kZX zK7Kv^0)zJnQ#SH7_&aJ|ZLv4~?=V1sQP!E*2V(B0eUWP zp*#A|KJpT|p1%T^c5Fn>fBV)nU5FK`2wnTQ02(`(VVuyGnf?Y4@tN4`Z=rxMQqeI7 zth2Qw#%J~{59z$W{7}3FWTqjSqhaCi@BoKa-ibF$;Q%v2;HU`#149LHBK!vacxobD z9&s7!eU^rWW$&opGd2EKL!2pO!|XgPSC6v0@V%vb-s00qT+atYgWed~Kr3R(HrqaF9n zt)jv~@apgrHb#b*IwyuwQo-|i6MV;oCxn37n|XNnd%y|n!d_y!-@!sgLypY4`K3QG z5s&}HWCljPWZO6}e}O!`5M@V17K_ETW1FDATb4 zB2F`U+^Ajr9?7OnhyUP!CIhUEl8<>#N$EF%Fz~*D0oouc0?x5-kMvd0xZ?TYf~AmR Wp?^~pXh#)~ry>Kq#lmGT@DH4NIXMOZ literal 688 zcmV;h0#E$_0003AFaQ7nL7G4pybGu2KL^~w?L)ekiyX)|FJvEw&>z7KH_9IlA0Ge} zRvM7drz4OZJ1i2knPzU8#C-nDQ9%GGU=CXV;V=t#-;KbqgyUu4#GCKOfg-%OfCU={ zgc^~OD`>BC0;XfJd;a_YU16(Cg|q1gf*|ivo!6!EoY)CC2vLv&pstl-&(E>%%vG%1YY?}sq&WEe(A!L-^YTf zTn^(1*QmmTmtQ%5q5ts$Yr{Oj*_&={zW^XVE8)P|laVA0r~hi27Ow836aIB|4P+K~#P06hi;+P&PzjN*!-kar%+iWcP~gz6Ze+kkq--A^W+01ek7N2NYfa z^;d!a;sHEa)dFL0&;`hMFvN?C9KUPo03;N^Xs5dSw8TX&!Z%x40dAX>M*Pod?XLWW z`+r~k7Lw2me1O716ZO>;D5bxUNA9>B{`LmMhT^7pLkiXT{xB1cxnk2tf>Z;pPG%a! zzjwfq2C2)#m?F&Y0~ACDT#_4qyc-t z8;k$|0YLy2LTLbA@DYde@FySG9ze1nB49zl67kfAJIhDE<>M{5V1N$P zUfHex^|H>IW@L}|dkjq|T%q#XiXmnal*AYqJYfcjyeHk;akYt9RHoZ79zPY!MWopK_3G!2$fVGIFqN&ge?0QKTVOEfdThd@{( zYsok?^s_PpRs=rt#KBsqmSHj2j)`9@(i!HLP6$kMu!)Zc0-;%X%?&*}^`=S<0fY=d zY#2-?47n{a2rJP570Ekrbt_gZ$Agrw;{X7Fp7~&ZKw`v}!R2z+*!i$3#w%e9dv##a zsyhZ8WePE(FTNO3ab2c`NfDT}p7OvM!4aK8D$l);0R)H?pnJfZ%K(+G!~gT&{N9OA zj}Md({Rzmw6$e+#lVr2^fh3EpAhX|YC%^Q`L11=X<=iSHBK-#?wtk)ZV6V=k|L85? zDG23XPtyP@iZC@zFvYcIN0LU+U-#)NJU`y=FYcjf5K?n&bHe}p2Dj`du+@wFXa=mt zgx~r&aFJ)i5llb;1OJc6Xh=gbo8NQ{Is`H?a3qIFU&nFra4&U3Fk-rEfFa0}ngKC# zDu6lvR`1K_FbJ?Hrs6q`pCBrVIRz4{a@YtED1^wj-hU<*U}^{Fg^j=_o(uIXV4z)r zradfYJuk$;e*p#sQ9zm{W`w^DIwsatmspW7UiW{osioKF{0XY^2yjTY!}9PprVtI2 NBXEkH=u8*DG%#{yPnG}x delta 563 zcmV-30?hsX1=a+A000012`~Tv0YREz7rX_Le-a>q0f@3pSEel0-$d+Xu)c%Hc_Wg%)c;MsRlaEfwgWycX(PyA$^;7wg#|#jkG z1xRcxbdcJAO@CYZ{0AT$j924v$XB-cVR9UYChts60%#Ov7GmF!UMd_HGx#W2#;pkC zEP1}PW$ZHS9}*z)NQ%s*-=zRIWAtd%PJ9f}3WKQ0kQHm1fn zkG!lrkp1sg>%{X{V?-pW1*OC`Z-5CUp;vc@e6xTZv+9G8y}x`(QY1wsc&ic_2i^}j ztAlI?z=Q!dz>`}7F@Gq8V!of3&R`LsQ)a{x&fsj+vv~l@jq?El1rVGY{f@j4&@{fw zqlhp9Y2dd_p+bRRObIU(4r8X-XM){L9w-w-sSAOrSkOI~w4ErIZvh4cks`=GWc*%< zC5~HH$G_lBSCCPKLn098m(;aPCT>4g6PD_M>i6054)Ei|01N?tBtRpxJ|+ub8WL6w|-@^WN<5_v$X*NxNz5!}Agl2?{8$-yJ7CG#57~sxt z!aO>)V7D1N#{vJz!dauZ+rbN5RZoOrJRb=d>?E*Y4}}&B9HT6P;l_|>-~+YsM$`Kc zRIKM@f^VDOOo(e?5^%bS*(V~o(D>|tn2#Mwr6Edx|8N{|jt?-SiTr)`pJv5>5cnC- z0#My;LUS=^zu}L2^JZiL#RyR2b9QG~>Z3akdB#5V5==6XpbzMh2WAE?A%<&1M@}Db z<6MM(LO6AQ`^&k^()plzUr^#*r(YD;zeR$)ZHy&E<{lm-0EMkfBhWbl3%GGK@*({R zWg^LcW)40>o=lJX^+!m)m<-|&O`ABQ30}0R9pt9qR4XqzvEi}^EEx11Qx)9S1_OY&OhYh=k9a>s82N>_uX_R= z6NC`{BauP}$HD{$+#`nIz99H@c)GBwN8fmMA)dIYK-1jfg8`uX$6U2wLHx#w3dg)R zYC7bcFf4MWxg#TP+5mqg0E|I-nIVN6!-+TmGWJN?CfJZMwlE#QQbUI`{VH zv_}8`$N)J~QlzW?|Ndk|TMMo??AYZq5!)!sJU8fOp`}I4{%!*bgzCvS_}|(9R|-cS z;;M{4@J0<;J>OcR$7|Jw?(YO|f>|JC6Z_le`Srt&3M}wvD*x~1u~JCo$BBX%Hrf#< z!zsWddks-L9#7DV|AUc;#q3>*=b}bD@B_$p!V5L_$NTBEjC@xfk^rC)fnyh*ZG_=a0Ezng{{Q#@?_%s�$|%qr*;F##(K00*SQ zSuh&{$d>&ILAF1^e>@d`=kSRCoGpRWad}GMgFsIV!I>3*HTnZeA#C@M@FoA(zV12y z@3=^FWVniY_OHEVt-aZ_jzDO3WdSh$?0V#Q;E%HOV6D}AFZ>P#p8f?_9l!emHbT=> z|KEAg%JG{yT*k8b0`Rc%M+||@NHihinU4IS+eVA0?>&C{1Ar;&co%#^35SW@a6ivD zcIP;d@4vx+hMbluw2IE0z8Z`TfruV~KphN#5Cr_;c0RC)Vw*c}2jUu1EpW0+j<(P_ zU{yJ)5DH63qz~167OR0wG%4oNj1G}S7@}_KSO-`F;P#rbwJ0WN(1<<_pwTGz)5-ye z`(&xv_jCqWl^T^FI}$Kyk<&?q3(K2{xIIij*XB7?Wg}C#Rv@u0M9N<`sINz@K=}ntiY)TvwtYO qCSkCv^9qcn1TguSOb)!=w8jMPASA#rZ=pu`*T1r%x`hD(_ytCl28*}= diff --git a/samples/h264SampleFrames/frame-0022.h264 b/samples/h264SampleFrames/frame-0022.h264 index 5f7b733d9ff16ad7fcf9e62459a0ea5f986f73f3..dbaf9793d55e2236f5a3a662109b52ffcef787ac 100644 GIT binary patch literal 595 zcmV-Z0<8T20003AFaQ7nL7Jc!yag8^BIc6iF;Pc?$6Qwp!EF;Yf&RbhjC6ch6MP}Y z1J^)X z5JRMAD-mCjF@6v&Vpvf2uHWzgwXa2;_bmi{rR`NJQy)Rp7Q~uRscSj zYC$P&QGg@;8^_^|t&`+JtJoAHyDJt5uH6PQt-C(Mg|B=!1flB)IcB)XAgEVh697^%@{4?X$AAG4I9q9$Gyo7RgtPhGjH0a~{>cJY?+42TG7XM{z;9fff{Hw1 zr7XlAS)1P#jfRJ$MD^TsvFHr~_bIZQ{rGwgVIB?ugh+Kpc!!s(YJgtw33>ed3CH*zK%!tx zG8hoOfzx;h5G05!1e@?haU1X9Bks6{u_WrASRv*bR=+t3I%|(5U$1m z(rI9pz{fR`Cp=6R<^1CI#R80*0yYSt=@yVfcR2t~fPn&tsSeU>!$5!uHh)*s7C>B9 h2Fbx**M4A4`eWrU=?M~oSRH)}v2)m0qe1%ss6f|L0`LF; literal 542 zcmV+(0^$7t0003AFaQ7nL7Jc#yb8zY{h!akq09>hz~exbiI^hucqeENG``i zA?ybGm%&^#93BWka3&c7FJ^Lp#1dkiPId%azhI&#pFZQ^wVeP`fzKVt^#8uVUJXdG z!vw?gP49!M$PlZ9F(LLu*alLbfT4Z)n3(`D0jaAGdFrFVNTngGzkk7i09*lq<&y*z z;(}T*Ch=t`L5G+}7#bhQN@N|cFX(OvWPmCe&Lkyy-%kzgwcIcNzx)9~ZbTTHbks0I zAxwK3Ul;|#0D}nvu>o}}~`dN^zqnLa;OMjS$A!B~N5Q$&b3Dfj1g9LGD zU3vkSYH}Ksa|Y>*#CA)N_LEiswo2y!7QErX-~qZKV|s*VboWyj=z%;%hFp)DEPfb{ z2!50rOA{Nw66k{g;icc-`pkk(a-dZqCKq!CQ7D%d;tkn!098sE0p^`XV}UULI$>c# zM9u*OL>9*h;0S&I00BV&ZYHP(F93Kj0003&06B@O0gJ#Ji~s-uK>!s(YJg(!33>ed z3CH*zK%!tx4!Lj-*7V@|+W`Uukp|_=8b-)mCy7{y2oNWPIU|>k1Owm)KLTmsw=d#H z2GD^5fnZ9+FAf0FD!{^<0fnymliTqyTcIMzAW$fQU1*U|ik}ekNFa2(+x-G_1B@aC g5mE)m@LnT;V@O~DnEYSNLfSM91M+693(3GL5Q>A~`v3p{ diff --git a/samples/h264SampleFrames/frame-0023.h264 b/samples/h264SampleFrames/frame-0023.h264 index f179935b48c1b00e8a22ee8d461dd7a5f5371264..fb3ead0e44b3452570bc5c13e46235ddcad9d783 100644 GIT binary patch delta 700 zcmV;t0z>`o1l0w9000012`~Tv0YRF;7`z2P77IA|q8Sel1r}fYcnE=B05(GxaOWOb zMtCJ)<>=aIDo}N3 zuwR7O!q`t?#vgu-A_QU-0N$+)9UMLZ{|B8c#1_zvHJ|>$$H;MH$p614f2TCVG>(8{}85_@o~^}P$0Z0JalIQX@QD=2#Dc=@i+kEvIvTS5nliWhp+jf=&oU zIp)C_w@4AMr_KMb;DBBN8Rv99@Ft!ca`F*p5yg^&6Xbt)0Kznih z0rUwo1k5p?iLeCI!GDlYE(QYVF+nmzYZ*WRo(uHFq$n0noD)&}#1c={fjM~ws0E&@ in;*r$?L-hj%P2so=pPUcz9WYf%3n!8c>syWupjW!k4=97 delta 596 zcmV-a0;~Pi1?~iY000012`~Tv0YRF;7`z3S6bm2$>S3&y2Eg)WKTtCFuw@!893fKpEh-OiCc2RSCcHBQhSc>R_OJ3CqYf0Q21=f%q?+ iq6Z;}Gr`xG6_|H0CPNnH)Ine&dw`G{@4kj#fd7CT$p|$7 diff --git a/samples/h264SampleFrames/frame-0024.h264 b/samples/h264SampleFrames/frame-0024.h264 index f1fa2ad4efd8c7177ad15c753845291dd225f95c..7d7a4a83d3e6533c0de7ef0817757f511fa50dc7 100644 GIT binary patch literal 815 zcmV+~1JL{c0003AFaQ7nL7Lzgyag99BAiAw0ro2(VnDdqfo41c2fGbjpzQn^q{sff zFQ|(vV-1H;Z#-lMzg&au2I1EIuET_4S<0a<<5X+x*rx7oSuK<7Ay@>hEP62gm+z>}d_y4&h z4n!e7Z*RZg9CfIlxJr&ts-$M(_VfX9zA8!}pX}*ixyUHlMD5ff_zmzEds6v9$RQXY z3IVWoC##%dRxDz&LWxAx92$uptQiIFf4|uY@N1r2nopf&*(Nkk=KK0xOX2|>E(!ri zU_LW|MBVA`fbC}0xqk3HI3lDj_I*RJsum&4W?Ot_W(kb{|MYz~ql2sl#b$aI>ztHC zvH}d$msk4(#=}&nL{Yr0VYH3jM>RF|MbOc3M910=Y;D_g{r*@;>0lh73=ffkuIGU< z@Dka45QYpv=dln15UrMtjtmVtty7A8pnq@pK$}Ms^ZXOaw)YcYE>}j`j`>QYUZQ^M z^7)Jr45%WH*ACqyf2_Ah02_4n` z0Eb`z00BV&ZYH<}F93Kj0003&06B@S0gJ#Ji~s-uK>!s(Yk*?#3<>=F3CH*zK!cah z1DFt8L?jC^ZTcdAfz${h@Ji4cb6*K)0x%|?3w2Q(#2=LtiPFH&RxCefq7e?XDZX#oHL literal 990 zcmV<410nnX0003AFaQ7nL7Lzhyagu~3W5e3Q+wY2SY-h8ZVGFUjTh_)1_tsIr(6%V zut;&&6TE;R^9&?P2TBQYXcQsi`>&3c&NMI#%n)(H$Jh!?N+66-z64*AXi~^xdav() zhUY_>c1!q-B7&m_0Ew;xe{v^z5FP}k-&@DjPW zTEk6CjqjLSZRvFo4ZheP_9&yXMHohoy8)0DUmysN&QU;fl=!yy|7;Y!(hvR#emq1- z@Ina&cm)j;!)A``_izHy&nIr2{{S323_;$b3DxQ=0Hvq?mFw|a8ptAkpJ`=}8=E^=cRWke`C4RRiJ1SOEB|d4SWl!d%k} zpc?^=Tj3bl!!&Wz7EqLh;n+oR02^I&Uo<0NM*0@;+};TuWmW`X!C*`Hh|p7S_&Fy9J@kc?w*QPSYaLPX*9)oku1|G)^7Gz5n!4{a}> z=6%u!5v2fhBi-j`Kmf##r~yDmOXR)_!~qO22?BxRjDd?>b1xH`J&dCK%Tm>)xv+0* zih@6MV+;zVNO)8zMgM=I6HT0_=R^tn2YeC?JFSD+4xcF?4l99uV~R(g^H+hGx@#_4t^u3C8;k$|0YLy2LTi9#@C*t3{0YbS z9zcR%Q3?5dg~9_bmIn|ZxTr+fIXtuY|G!yc=P?Nw7#l+1CH#QTj{<4nzf}?u1<$Sn zsmYgdl#@8=6tW8bCGc>&5wjpBo(uI9XREPw!@S$e=Y1M)@a3lYp3M98Q}%PB%p Mm4A4E=EdMYpp13Ay#N3J diff --git a/samples/h264SampleFrames/frame-0025.h264 b/samples/h264SampleFrames/frame-0025.h264 index 1954a832bc466095a4e5b0286995636a1075973b..c724c06b7baa10b6ebe62c53db0cf92594645fb1 100644 GIT binary patch literal 830 zcmV-E1Ht?N0003AFaQ7nL7M;=yakiQf-?fB03h73YQlt8t-AvuKm-9F*i*@5d)+e= zyG23^XqUkZGam&gX8{d3%lDmKDUJ028>tGfbf5p4%V`>BWJmkGwsNeR5|sD;)|5dZ zf>Q`%fZ(?Tp(=i8-uwL7F?d>W!i}~q7h(CWnDIt1yuCJo_X*Gmw%8ggMHPG{LX3$n zW+e^#qd^P<3RFuzFO322GD7$8hMP1^$nHKm_sI<*l9biZ2nj!M_vX=BZuo(BgY6{h4vk8Y{6_UOy z&<2R?b=R5&MrklGypbM-|9RrK56v!|5SUh>&5s8FxGS%a@YB<>>scr?1`sg;uxEwF z0~fMvr#Q3cfCkd${+q$}=BB5}77Z2TU;ta2m89H6o|dh1)OM#PD*3KuxM;J zNSr0dfZH%oWU=!w5TaA#!casRo9I5xv;RH@Fg2TRQ3S*z_V%(hzy>b>crX9}0YLyciLe2Sz#EJJ00BV&6+&zPV(<=$ z{Qm>UKNblv11rRb<#2_I;(a58+2*j=Yrh7 z&V=LzhFlLNKvhU^fSismAe;cB(bO?={g!BfA2`7PeuIaj1mV-tD7M_TaEFLo3EC+K I)PI1jfcDCGPXGV_ literal 719 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 ZCfclL;c&CR_BQbe7A`&ZYg8VDe*=;8nNt7& literal 769 zcmV+c1OEH~0003AFaQ7nL7N~Myaj2093~6FkSG)ifCrQ6=!Q6~cmK#9q^YN?xD1~S zsG5e509U{(TwvM{3`V4bs7rg-k9L@i=|I>ChKYeYHUm|VaWBmjEKh9kzzZ8D4;Sg0 zG#rFxOzHSDo<{L859T8ZYrSUgGvxUYE0FPaV|J4ay)S3mk(GuCOc{HK=Vm9gO z1JE00!GfxhNdHl}owg=@xuB>E5JZ+4nN)pxyBA`#m8~2YF0T=0O(`^q-W-W zVDa?p#A7SX{h>hAm@BajB1C&dSmdU<;@XSUh-)=t6 z5Qej8KfAGYWj-1EtTuJnAOCpXwE^z9Mb2rf|D(N1HX@GsegGiz5GEj%?}f~O^E(g> zfZh*=eog)rJXf1UJvY902vioiOk~pM!OD#@!W&H^>BDuRUEVN z?gLq*^FwWtQmM9Q|7pdw(q4b2^!|rFL4YRc0003&0B$D825$g(FaQ7nK>#_4vH_dG z8;k$|0YLy2LTrF$@D7>y6VLECgPsQvbH6Amao|6%2LS?U;I4#x4j|?P)9@AW7QbIL diff --git a/samples/h264SampleFrames/frame-0027.h264 b/samples/h264SampleFrames/frame-0027.h264 index 568097cf3f43b2ee80c747a29c7f9ae6d02686ac..0ccdd95b3b9cf3aef52b9f0911446ed550ecdf9a 100644 GIT binary patch literal 938 zcmV;b16BM00003AFaQ7nL7E^Iyag99BIDjh$OjZ3HxzApilS4f`+dZ&*zwZ~s3dXAOpEROARZv%YJ zjY6RW-7g4O>c#08(Jn4%qjP01$Djrd9|5Ao4A9${twU zRQw6rt~fu&X5qv+Z3F_^6?QDa>ve!L`mBHaW6&^r$Tl9F-{Xcs&@s?N#)C!!cw;wV z+aK(x5OQt8pNfXiWWESAd=CGQ#%B7%!KM{7NGu$HkDIY=pW+FRj-1yMI-hL1 z*cW~1zaJ!Nktt~v!N6b(`;U&5U~as9ek&UTC_ePc2z=kk@cX&(5*xiL1{iZy00Ax^ z)vhbBVL5{b%p5(he0PTt4#NmQ+R;f)m;2rhfQTTbJRha*AYi{(Ye+Pxd>{phes3s! zUy39?5HmW5$9KU7q*X8pf*@!A?u;0~2673%5Q3D(d;}y#A!O1?`@``Ygd<2I7=&Mc z;1T+malb=xx1v|#K0Z2HMAs8KurMF40EZv|00BV&ZYGEYuK;*30003&06B@G0c*e; zi~s-uK>!s(Xn>%ovyxSRt`mB)OxO2C!-@nXPmJ#Y?W*X~m;Nv!!eZjqJ-(Iz29N@Tn8fALIs6H58kysR2L5W2 z`|qbR0v&XxBse<}HUQ3182NAS%mlKl)LSt)Wa4BpdJS zLCAPd*VKp=b*vkuIXBqQBa2Gwd<0Y)iiS$b5KoP4L$-85W>uGK0@=Am0_m2C0>}hy z5i!3)GrD`EW&xT3$RuOrqsEILF$xSO>KiTlQIxO-+Au(wqbMKVMq(l<&Vk&8oPEq0 zMx#hHf{oco09{T7U@YN%hP47%*U_!0 z1-1Nf2!8-hJQe7Y1V;j>Cd1ma1fAOdz=Q`BMR$`T%Bt^|;DR6Qfjw7|t@8LBLCz#- zB8dtRsvgtu0@q7iZ@;S4y&ybw;tms~z$Tsxa{3EmN8tceC}cix=RM-gP5)Vgcv&W- zVDdMQ4d_XR@B<&KbL{$G77*A+5<58|_JGs8&=vEBqBw8W0k9=5QGqI+1m}cg5)!vh m{>P*zrTvaEq6iiN(&iEX11Tc>Kh`c(I!pSEhW;iBd<$@Gz8wz$ diff --git a/samples/h264SampleFrames/frame-0028.h264 b/samples/h264SampleFrames/frame-0028.h264 index 8e690f2ca0c75d92739d9ab6cb20eb69f5c0227f..b6de0f22b4e3538a04aef774287a124293038e65 100644 GIT binary patch literal 1040 zcmV+r1n>I*0003AFaQ7nL7G4pyagW!g3M@Wti_QK`gkezzHUS(&j@mf2P{^=+S$|5`nD?$o97W}}fI$0nk<0p*cfM#ODX*sh3M(T&IP@>v*;HN_gUXRTP^?G<< zKg9FcL4h?e35>|g<2e9hfN824Cb$UN#GAKS1!CdJqI5|Z_A>KJJvL$H#+xHSL- z5eY4s=H%3!o)P2$jsd6q5j{NK6Zk{4NG8n95!(XCy2KyP^1tAq`;4cM<$?~akq^hd z%BiD8T2jPQu2{TH59dUO5^VgEF$lQ$-^EkpI8{v=LZ252@OwUJdFA8pYln6_11XFN z_W`=E{3jk3aBd6u*n8g{+@>n91hDi#{U19IjHi(0f)1^b568aBsiQ?&Qp8iPN*b6t zAfIA};o4veOb}1g2#j|z`jl=4kXcm42GtZ>$u>XaO%%EMevkl z4_bm;B0MKdSZyc#(cs*|4<`xG%_5lNA+^B2GXo6~KE1#MjPwbfsm6bw9lBsBYW*x3 z9@Bf^>4h9sZ1*jBj#DumvWT<5*Id^V|Nkl(sCuHte>Zpko@A}B_kR7r!l62{PCY;N z2*6~OJzL-cxKcRx6;xoK!P=w8YSqT>-~@3oG73*$=yAdNH^7!aMHBn|6LRbQIN+ks z1R@lZ?~ni74NS%^A(q`m4NZsfIB_P95U|=x(dpm_asU7UK>%(hkOl7mcrX9}0YLyc ziKGF0z#EJJ00BV&6+&qMUho7+e?J0g`hlbwm^}!%a*3x8?z#gwF&sM{2ndSs9jOOP zJ=ilIFW_wkAvhSZOAf5@to>|BN)(8JQIM4nTVfC literal 778 zcmV+l1NHm>0003AFaQ7nL7QM2yagW;3mTiTpeSYJ*GVrG-6R}*b>!kFRM>43Yt0yg zfeZj~d$7r5J@~8uEVnz!FabCVJ}CVG^S`L8EZcan0G0tQ-5%FNx(J!}KmZ6TcisdG z-eUj&fF1AX0K_7f&ILf2FlfM-WCTJXAbs69!az&+=df=bL(rS9xB!R$?GWSrV?h-C zzwO=di}YoEp>__EQ-Un`A|Qf*c+>L_B3Z(tty~F?WI&BzLsm7(>~J385(DWpU@Y}% z0CK296e&CjrzK$YWs%S)m;MAZ66vkK-+Dmat>8#jsh|NMe~5z7B}#-aNxsQJ ze$`~4lk9yu#^*W1(}*R3O@H1_6ERFc7nfiuxIWd(2D?ApCc@nCue}|4tPC1Nt5g z<}u@68eRIS4SO+yfB=GR_pTymU|Ku<^za_tK@Fk@+z0Cfl#G(0d1M{H|6uR{qAGwt zG$#_4wgIca8;k$|0YLy2LT!L*@B~PIKLUIWAjHAw;oOSZ z%&!ADF&sODX$UePIOM*#Re$g{gAwpma906wiGGxp8A?hgy<{Ou3{@EUEVzCP$15iU6|~|e99;6_ z`|R{7xS6RNphMkF&Hesn@TUL>Wh~D^%DU=c9l{7FRF8j#0vIHMXCvXM z6|pibLkn>Ur2kv*?krS9Bfv-Ln`eE*2d%E%mxjnVbTA%g2l`3INzY_o;5h!A`Fr57 zsHm9CTq!3RfhPwse((~zIN=BA@K2x5=J5aUP8eUn0V6UJDN3v-B|R^Q1aP=02BCoX zz@`BYyGPxi?Psgy`@rTnLd;#=pFl8G3c{+-WxtHf!7-oz{*$JgDW`ybOEb{2u5wWl z$Pi`ub-%1UY&9oDQM{Jy4Ww?eS2btqFNTYTTz5g!-MP)E|12Qzs{sIj!1)*&>7Eby ztYtr!h?Fgq;K0-W6F?mG4&KlHPb(ft52tm>!zizxit)$oQ0?jPP{ogH`M8D5|HO>I z0qP+R&eF&dMA&!?9su2J+XMgSfz%_A)YLEj|NDQ8M6Iw#BmVd!{MaEAZ=m<{G5{BF zc8eL*m`4X5kOtPt=cD26pAF!bh`4S7@f4C+fBt*?z$6@nAr&v}2tSyJ$N%E80LV+; zOg6O0r{JtP5`}hfW`v3d^4!{5a0YLz6CYS~< z0C+F}00BV&IfC^N4YZgkNrOa6ndD~ucoBqU{O7~+ z37XTb%sFiQ4B*5~VZ#T!lBo#p{q)~U08Q4i$Ob!Wz?zCI3^Ea@L6u7t?ktKm@4>ZD fC1Z7}}6G@8DU0jWK7a literal 692 zcmV;l0!#e>0003AFaQ7nL7RXYyait{Dx9&@{!TtMWIPq-XE$&RKZJo`08n2XT14n) z2UEEI!qx%_5X6ncFV@2!qdyBjM@`24wC)3;Zd!n@lJCJ70p6hH((i*fqI(h;41X`c zL5RRX(5wJr0Au9lR<{5Rhu}sUX#$l!UhX;~y`}g6#mYUQ5;Qq{(?$kjMpbt{fmL#{ z--iFx8&Gzm3m~ozcpTSUANCZ*A7krlc?kcxXiY3Fw{PzT1=?X0gO%?%)Br{Hxwm&5 zDzQp~RSi|wewv3>Cod-~s0Au=f+^-a{NnBCU^n()sz`2Yq13cv*zL0{TX zf?)0_F5BG0*SPT9Scv_SR@KZ9yk4l zKK};4d>=w0LE3pXpyLE@_xQjBD3s-kp717N1IpQ@C`Dptyadq%I#I9jz>Fwn z1(uql$cKBN3Az9P0YLz6Cg29I0C+F}00BV&If=LdtH2wK0003&02M-R0BZ0A=zoEP z7?==n36;$uHU@A~5gCJjhbMz9NnE%A#n&xC`Fso@r*g%|+OWrrf(5(`6YzGRO*|Ip zNWw(|&LS8aG?=84U^HwZhjd{XovU8DEIrZA4rCV-^_pzy91P&ZNh4o3zZ&Hdwa*sU zrGR^7kpRNk?*eKluq?@w?$B~0-k8nxOi0NVV9Y57!me#@a45jmF&r(P5zZ1E1M^l9 acqrckNiyOyzsNaW|Ln{o9o}cJ{sovltu%-L diff --git a/samples/h264SampleFrames/frame-0030.h264 b/samples/h264SampleFrames/frame-0030.h264 index eddcae8368020cc3c338ca3405a775be0ff6c9a4..d8d00264dfcbc8408af413076867e5726bf238c4 100644 GIT binary patch literal 884 zcmV-)1B?6s0003AFaQ7nL7IRVyahKF3b@dMPFlDE@P|xv1nPO5Y+URZeqG8SEzf)+ zaQyvoULI!NhB6C&YsNv~Fc*`8U$*xj6z73X{93P6y9 zQ=G#Cqk>S?KQM27{%n}OJviY;+ZL0<0tXk30l@c;kV8#(RTv0F`}pXZ_pnjWcn^fF z$HD>aN;l)7rxw()!iS|GK|?@o`7eYRSl^136b*qnkz;`W_^kyy4Wd>OnBE!uJMRgH zSP{AAhX{JYg6rXNYc7EiTC?iO^ z<^LK1s}Rte|3?lJJX|qU|HtU4NJByxhIn;g#=zglgwOF9z#J9=fg(dF&A4*> z0S-U_00BV&ZYH1xF93Kj0003&06B@M0gJ#Ji~s-uK>!s(Y5-#J1nPf*q!5@nz$R(5 z8+KGOiY#*pf@nvJ-85q zc>W6$?gUL8z=l7V+k>hbUw}r{LBeXuBmhl37V0A&3nI7P?dSyrJpgpGo*yXugG_Wc zFY}2JC`5DwUs|Vm42&Pgl}I4~ll=$byZ?bWL>BB^#SjV?4j^1f3}`P0;mKiUeII_r Ki(7Eozr?^c2#iz! literal 724 zcmV;_0xSIh0003AFaQ7nL7Si&yaf^n`{o5f+u3k0ipUm0r9qrPIO9c%?_-AHz*iSx zEaEcchfl?0f?Y~tr7=>Nm+}CB#DUmXfCol}%~0H|bpIeq2sTb08*(d>z*E1#0@(L$Cz+9OyEvPVdsG{D~$>4{^3DT=1d3W&2Mfs>H zV+Y)sA(NLlnctV1P{~2)9!^q+7k^YE{zFuzDpM195?1<7GGa^2jJzL!7|zz7U;wyk zb|aJ_{6+VHc#IK^VEq?ek6(NgK?{{KoV-8%(h!AcaUBaLX8|+{GK(>9$ON%S6n!y# z9198T*)a9TkiUP<6YMk72gHaPCXD7Ii(jOH-G$y%HB*;>VplZ>QGqQYWq_3$i$!s( zar%O|AHagtM^kZw%vAEy1(+kPdCB4|YwTpkYS=A4DYMT&BU`NpZte`Rz!om797ped z^&%=EWKEL+G(;Bh9wYdSFa$jS00BV&ZYJmkuK;*30003&06B@e0jt0pi~s-uK>!s( zZh&g=1nPf*q!5@nz#iAuRRks|vC!&$0Ds(mqM)I_@{Gtm?F@qc2w!a2SCqU|SKb@+ zg7?aJf9U}<@K4dgAh7_4w*nC1fbrT$@i=n&eSH`}EwF%v|FVmR>g65_JwJd2%}h8f z#lf*tPxF9+{HlL@R!EQmH1J!gtavP%mO}iV%w!MXAFk#>s#uXQ`A7FMOR`_*5+YED z=mN8^ty6CP2>fobsrmpdtG~zp$9Qljm&MFQQ3W^7RS_0DrQn*u+N4pZg+CW!P0C7T GzHu=5bVCFH diff --git a/samples/h264SampleFrames/frame-0031.h264 b/samples/h264SampleFrames/frame-0031.h264 index 44699745814e4c2f1b879d507c1fbe4979666646..0619290e60e61337b07d6beb6186e23cdcbd98cc 100644 GIT binary patch literal 823 zcmV-71IYXU0003AFaQ7nL7Jc#yaj|H#R5(ML|-ZMk%&f@N_+0om%#)|8Xy*k7$Zen zeNYr2Jh%n`lM=D6YAeWfz$z!bB<_uuVE z=m5~Rg4n_cFiaJNP#a+oKh=Ve?84w^5zxnW6Dw(jE-~HqaUnYWE_1` zlSm!=@i!Oq1&7P@zD}hEEU2fyFVRLf^5G|?KRf{dpkixQ==2UkAMnT1#KiVVV{b;5 z1NhZlapk7cS`Gnl?!MwfPdl(d=;BayO$T%h1mg|C4g$u8yOV}1%L2}Swy|+OG|fpG zjglKm!+uP;)O79p!04Nq2a96aWGNA-_4{d}<;*mPg-nVqiKV z8}y=Ax>_t5IoSb5t%*r1UU?RqTe2feGl&u;I5#rspk*(d5ES_kNA=RSPi7vXM^GGAPj`H=ELFa z0fDu^29$xvs=d#f@A&X%W(V1)L%2%EKr~%8ufC7<_zZvVA04j@@Bim-+hPtf41d7B z=Pv<70(5F;GQ4fvMs^PlE(jVmf@Orly`t3*Z=?lK>%(hs0J?p zcrX9}0YLyciK+pMz#EJJ00BV&6+&u&V(L z8$bq61-X6e!a%WoH_OBDa3B+l@9sj4fCN%7x8%NC_=0r7?wC!iATMG-I`n`A{6v@Y Be7OJs literal 830 zcmV-E1Ht?N0003AFaQ7nL7TuDyaj+x8UO?*XLfdHXLfe}06j3o!bVp#Ds%tL&Q2>a z9t>6z01qO$coACU05qs9@4>i+uoSiT=uK1Y&9H0yTxEt85C9Q9O zQnC>AvXH$E|7*5Gf}(i3fB(EZmcW!)#j*dNz3rTlvqC0daN&a37q<|oc)$I?0c=E4 z`7lZ?bj{XXraF6Vw68wpk(l@&kRdYZ^{67B{oeoyi%N0*!!XNhZNLR(!p$!~ z^{JG3{c9JWrpJpFBx;xM_vf|;oInvU#_cW9?&fhip`!~@8{mN=ML*>ij(+!pF?vGD zZQyB;OX5q5KLLRw8zN!37*>*!Z-CI3QYw#|5~u(E-|_K1uooN> z5J@2yy#}QcXSUK?07_$lMSprl4A9|RF_FRG^1#V*Jb1t*te6DXgr+P2FDO;elMG*?KmyGYM|qP-{Qv`-CANPfZ-4*q!Fiv$Pxas9dwS>mu^^+5 z7rMtEU#S+3^3;#lx_xf!yU%C8U;F0-M1!>V+JlS}jefr%1uPD^DDML>0S+ZOU?yP$ z%GsqTMPg^Y|7G_=5JGT`x7LHJ{shTZ*w}(IKfU03EWiLjJ>P%_Ksagn_rL@H-`g|a z_tD;(bb4P9Iu?b*1;#)G}rb^N#2`vOpMm@BeZ&-GDm`A+lq zU;t!QBN;^Y`G#wnSt9Q{O8R>Ez6lEKXOTNlG_J+tL5? z!GI>{0003&0B$Dm2Co2kFaQ7nK>#_4yaB7g8;k$|0YLy2LT>L`XjR z0{9`6AZ9Zh7)k&cg;aqO{0hJPz?yh1%kte&kXRcjnVu&-XgIVW;EnJ*44w;k7sI20 zXB|wFw9WTi)jWPXD_M0GCAp<;GBf z9sa5@5|5@HfVR9rf-M>tAmai&>!MV`5gC#zf&U?BP~uI(JMfE_T44}VPX_>56bm2% zw8P{Yn$;E!25d7G`h1LcdjKH^bk4_-Pu3X9i*C=b;comojG(#29J2_>5LX~$O_w_L z`ew8_N4eh*4gHj=!&kS&M4}c#BQO961j(3dSeT>!S`4vAtM&W)RyTeCPbHBOCE5UF zCX70j1SCzfRF%(AOHXX zK>%(hum rX9}0YLyciL3#Oz#EJJ00BV&6+&wOV(VxqB_Y|>(pB4VmBsFq%@0%(XU r-I0$4oq4_)d%)hi%j0F9p)CMSm{>8XGCvRzV?Z9;b#hVr{r~g8^#TL- literal 514 zcmV+d0{#5}0003AFaQ7nL7U(jyakisNiZnj0p(R{Dr~vilWkB7GY7INJU6c3)iq!9m`hGJQ} zfk5s+g#-Eo2{>7$cy{~@3FZDj1TsJs0ObxMNv}KO@NfEs6L=#3{@@cVe-i;it9c2g zP&S-p+0!&a02crP2frvu3XLoV6MR35!`gKix?q30w)9hX?4_CLSyy?g4ctddO<^Q% z<`m$00)_Lz}HNvJeCC7G13j{;4#(vVf-^ISTG|@fF@TcVegWk@Ds#AYyl6z0003&0B$Du2Co2k zFaQ7nK>#_4z5%Pi8;k$|0YLy2LT`X-@C5LF1o#+4m^pX>xwA?!9evkqF}FiBf)2ebr^1aF9Q6jdmAZ&Sl9r7zt|nHu_!Xj_gfkP;y<*N1Bb2u Eo;w-aC;$Ke diff --git a/samples/h264SampleFrames/frame-0033.h264 b/samples/h264SampleFrames/frame-0033.h264 index a94ae50558274721b2dc3e66cbb9ed503d164e86..b5ace03636cd1a006534090ebe76b78d39785208 100644 GIT binary patch literal 706 zcmV;z0zLfz0003AFaQ7nL7LzgyakV7t8Av_|H2?51$Y41oPEI_WmOFD11s0Vx3Jkv zH6fz%dxj)qRGv`pb@Wh=+l`}3;JAVq65zxWjLU#WY=A{vBhd1*Yzx*Mr4fr3lk5=q z5|0sgO!wXbd6BU^LZh=#7l5tKSOpLRT76dmNkAY4L~`&y-2xF?C>bDOFbjUZ4B}BX zggk>lp~e7cQy{036?hatMC_}@dgmtZ0Xu|t14!v*0059?3n)Ms{^k7^gt1UqVm%-)C?C@IGV}wf^tiZ@_^_M~+6EE))M* z=u%6Tz3>5A1*3qlv)_mdrO!T$pM>)mQ$2z8S(C zUr?tk&cH`jy^Mkc1k=H8^N17+2?pn;T|T0iC=9IiTH=cYf8X7ayakiQfp}0VfCs`U(2O6ry64&ivj!{YS9FF7YxlrJ zHwU2&=uVRT;7K3a1RI&x;zXk7(>Rl0Pyd0uY93Ev|9$98c*#lFWRrWSfbC8e)U4k&<=CGG zK`Ljw9vfsZ+c_!LFZ>8*A|_5ncfJ8+c<;fbF~zh0_s$Ag3u4l5f#h)iSqyu`KmD#V z15)~Bph$B|{^%3S`NZPENT>++%g+7L1+HpJc>nwmZkL*I)=sl)afw|xoUAUH!ceQJ zIsfnU$c8YRN?3iH8A@ZY9RUGs#c!ZIpfaXYMVbLe3cu`oLP@DQmETE{jy89wJ2|90 zoJIM*%?`4D%MMcp-@q+Gm0-%E%~!a<05}fw6EqD@jyf{&!+)#=WQ@?9iuc%kKvq{D zx%=<6?IvU%*V+cR8;zVw4XXQT8vqcS*dCp8ArID$fEE@elxRoQYf?hU(Gxl3*bv#r z@RuGqZir|eumsrv00BV&ZYF>RuK;*30003&06B@E0jt0pi~s-uK>!s(XaH*P1&)7# zWF}xyge;Rih&UC(qlv&t&4u1|E(C~q$lzo5`U3c82yru|yt4O@MldrRh4u?J;;>-h z!2)UEw_zE?3I&8hhVy5bxf;qnFHpcR2zx-OK?mM@CyagXHEI1$&nZ~IYfkJozN2^vp{a1lIW6S2a$e6(# zmqq(j7hG>ZSOBfwUx0wWf&cIi{-)85FX1f-0uV=l44v^N>+w<8wE;|kMaa}irenYW zm;nGJSuhP|ieP~O>aY}t074paXnf!d2Bw-RpQ^Dj3?sl7(d>=Eyd;2n*JWjJE0`UE z^9L6=KajaPx{;mGGTaC8!TGS``{*?3v+ohq6(~#q2Q=bu>zDN_+eA5Tjj{7QbKLqOp@CDpoUm@BjcnQUGTZ zCA^Gh-~pR$@|%+QfJX{~fNB^IjNl2I*ZtrnR~svHcfj;;#YlX%eNEV1j>55f?Y8*L z%n7KU`>J`@mHFTal(RgAmG>nOw_%KbpIiGu)DnoPPl~g<+JUyjQpXZqf8`6{(O^Z_ zbQ~p|ZMP4X`Ct+IyKi_5H6R89^iU*-FeW_+6j%V5hfEa0TZ-5H_80&XRYV_y4y-2{DFcg<;o&5VfTSj7b0WR$zZ0%qS+xIcJSW@ zF*OA>!vEut4^eX1{QtfJPm4x(l+cOm8M6<+=CMecA()2tn?WO=kkP>WBx&?G@%Fr7 z!G|88J4lJ;_58pFaL)lcgj_cPMu_l94UZwrXKVXH59T5<|M;wc42Hb3AozPn-}kT> zt^gWS0)?*LZ-JOT0A*x)5}ouhe)~Iq#00kt1hu>m+27y@b^rhYK>%(hzy@yscrX9} z0YLyciLe2iz#EJJ00BV&6+&zPX7B}&e?TH&;38mHIh?k2!A`5c=V{!z+b}|41!mU08)4_gUmS14FGNhM? W57}7hc|}W45rZ0%8z$s}v-zM;(PYU0 literal 837 zcmV-L1G@YG0003AFaQ7nL7E^Myaj>$z9iTpf)H#l6#xf{f7V$tJOBN_A>=@BYC%Wc zAAnFKErJE_97RD59RF)%godS1*lK>ux38cFLn>YK4tsESBJGE(FaY!p;!H!J=(qp= zU;u1JKbf6EVjEqg) zUyltzy6l{MK5u{z!;c$@sFHvMV1EX2=ae~<)$FU$6|zs?yEY-N13y2EWhuw*f50v$ zBtE%`njF4qqXRJ`F-P;TOyXKt$JjFUtP@oBmPl2o0OqdbJ{;)2jl#G$EvL3YKkkqM z+n(FC>%o8;$$~ipn3BaVfCeS6T>ms^D*hrjcW?DfDH5x?8GGmiD7N%tuU7Pm2u`k7 z{abZOCSx~z0%?EpiZNgTc^Fx9swZ9j=nJl$wC#WXns}TAS8LfItn}wrfB(z&9Z{7u zlm&d2*9NKb{*sV~|Ni#_7r+L<_2%FXgcT&u^W=dJ_z9Do55x#gtNvLEbR3Ofo)SO& z_B#q&lyae@1=WxA8kY2H!Z9N@r9=;JQXz%Uz?=oo*)_i<#>%9NW z_z$kO`M=$$O~?X^#AOhZ;s00`G>#TG{l-530N?Na-~I^A0=!By;iJXpe~bVSQESTw zfinaLmb=bS%EbS82~h$aD$-IGSob@;2*So7Jhb%-N(p!g;vlX7hu{DJ0YLz6CWr>F z0C+F}00BV&IftEdi)y;4qTQ#Cp`aQ0yPX=pBGfJQd~p=EQ=kX0{U+mzsc1Yg&Vdg1o<@1=WPX zW^cp~2-cRUAMhrg3wJIP1&xp=eS3N2sDb}_>tH#RDmz( Pl5qoHyf_DcfOLN}l|X_y diff --git a/samples/h264SampleFrames/frame-0035.h264 b/samples/h264SampleFrames/frame-0035.h264 index 866db8cf80c19f67b9b48e660de46697a7e11190..a1c05e95f776027cf736c425b530db03ebd300dc 100644 GIT binary patch literal 690 zcmV;j0!{q@0003AFaQ7nL7N~MyakiQf-?fh03h73OriuMQ365+ zrx3w|1@KB5r{)dszs;;(7MyUyE{jRnU{5mvd7t}$3o#LOG)ittd;7s66l=1g*X#Sj zVb%tId7_^$TPbhD?+j({iGsJHS%kx}3dvmx^a53knITfKo9CVY0s@c&IH4`%Lm~T1 zrvxSysB+`bfVeBKknq#fvg=Hi5(4#Qb7|dzJT0K94_`&6g8{(FOgZYBhpqnU(0gK`{*qq z4qj|%VIjO5_7nId^8bwh)re?K|D%Tqo-P=wasU7y{phGjLq-t>cyI(e0003&0B$D8 z25$g(FaQ7nK>#_4vH_dG8;k$|0YLy2LTrF$@CA}1)DVG0Ff0~a*@8ws6b0FQzu-v{ z1hFFJ1ld>eU@pLc0XYFgpidGj89^Yr-BlEok`9>gk6r|Sul-Gv0U5qcy1)CND1=dj zjQ9=FgiH?Ugi!1-8E2~kZHpmb#i&iy5;|#e$RJY|VXXz5?2dTS?j8Y?#Y(Ypd=zsP Y&NWupKnOE`D&PaVJW)@+{!NgQocxBx7c4d&12`ZV05Q_h#_Q+7aRAO18zVCH@mlls zG=tIGct|QA_klH;fCvG-D+DEY0S~MIMQfOo+69mO)sVGA5x-A-9}omobAd$5&bo-< z1qtP&NxpAEAp>{Oh$GDf5$ON&-946Sl1dE2Y?3jAtViOOhKiD(V2f`r>-4WiU zCAs>D2h&mY3e7y>cmooU^c_Y4FJ#LBIuehDaqV&Xg18NE5PJyfZZJGUvg=3-Fjrdh ziQyg+`wS*CR>AO?rq4Y9gqf?6Kdo#^!@((eJZOY-e)S?MAd#CQZh$7}0003&0B$Cb z2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM@CA}1)D(e45DNuZS1Sc)bOK;-^uAy4 zB#8o8k#d4IRr1C(p+9m0J^-A6qEIJ^6}%^r$&raxrDC11i@zgN9z99dzfnX75951WdT7I{dI?@7U diff --git a/samples/h264SampleFrames/frame-0036.h264 b/samples/h264SampleFrames/frame-0036.h264 index cda34945418cf7048dd1b00d9f21ff1cb412c93e..d8126fbccaf96cea49c2a92e4bd1e9f041dff4cf 100644 GIT binary patch literal 869 zcmV-r1DgB*0003AFaQ7nL7PAsyagvHC>|dUusdbtwjaKe0hR^?=YpKy#@1sDU@X7^ z4U>NqU2y9*`$hqEX>I@>N^PQ=HIYDE#q8pdt$fz`DyX&cnV^Gz9KIP5x>6& zFN6Uk!2qB{DiGiwEKO~p_05W#f(@jdeIW{e?`&QKLrAQrcYRn2Aw*;_J`GYY=H(3z zJ-wsF7fK1zf_MMD1UJI`X8b0R+Gwj>>qxOMm~&K2ZAcMg)EX4N-@tInZK&4B-Gq zcLW$gC7Ji;yc0(b98b*5FzF-wpmq&L0bTG&DPf3WFdxwPPDi=W$xXs9MiV{YYC!%l zd&TKSzW;z2ghFYI#7UC|9^6D^QZIjpdDrRY1r`9riPCq9kK8gTIn%-7O${BRz|o1j z+}}WM(lBIW(dPLO(}DYhw+sY_I|HNq0S>?b00BV&ZYIzMZvc2O0003&06B@Y0h_=Z zi~s-uK>!s(Z2)HQ1(gDPz@ia+KuNq0!{>uwa5a#k$SlF_i*wBUR8Ckcj8VR|DM)Rd z=zRcyiR}TgXbGo+otX3z1(wk8AM&vV%;6ISx~mC-&Kz@e#;8+J38#YGzx1MkW(e9H vxwrsB&~OZk=1O0>7?DMnnF;M+(BOSKWtm;V5p;=u@4`fP*b6{21&TIUVswEf literal 902 zcmV;119|)a0003AFaQ7nL7HG1yakDU0RSKcAh3K;!GNoP1;hsZ#Gdv-dEf!?5KGjL zvYVs3mHIUxrLay2cUS>8aDv%r-=<? zJeiQJlpLqo7}#O~08~Oj4})R=iwg?aPy+gLqhdW!0=b$e9xu_TR!%**V=soI17KnY zpil=xAOhtWcD@qSYQfSfG)`C3z%|4TR^-aX&DM%r83V+?v=&t%0HHk@E(z5u!E`GH zn{?NAd;Q_`Y~Z%UnhYTM^sV3trN9HA2{35cut1Sg$R;f<}1OH!N?ospPY{23k!>3kpiHVejvKy zOf!f#*y%@HFy6v6q5~u}i_X+BW>`9Svgo<+Z5er&AGA18_F{7W`gDkF$ zD~}8(ryHHjz9Lb;`qmwD)feNB8{1ci1p%?~s-X!N;wqD528#{cbh z+mo#y`~U3ts(Z-y`@n$!Cg=bF0YLz6CYT1V0C+F}00BV&If&UgngH7R-+%~JtHAxA4W*pJ{e@&GvIuPJKg^ETxf}=&!9F#o0;xkbo8|uk zFDXDR>sS(s4e=J3=ojmcgNG0kPXzlh=x{3K^1D4ie}mf)X&J&M3iuLO@KyM6(YGHf zBNPK?CJ&`10W|Pem;X^fs|avZX(09+;BZWYs1NW`|BOhY%fX*9-^>T0Q~~^R)zP{1 c0~hHV|LIh&5+LgNfdQ}}!V!p7nfjZuz=$lB`v3p{ diff --git a/samples/h264SampleFrames/frame-0037.h264 b/samples/h264SampleFrames/frame-0037.h264 index 6df028b58fc465337796dd1898e0a790972f7bc4..56f3778c7c3e25e24363d827780cf8685dcae760 100644 GIT binary patch literal 647 zcmV;20(kuZ0003AFaQ7nL7QM1yahKPD#{op6X7(G~DM~ac2VeYD&1iCubG{x7zRFi&tJ~Cw zk`Xf*2tWW35urv6YZ)ou`(VL6RBQLy*Nszv6Ueb6A}-JaAeu0BItoa76MCIOfbh9dE$!vGK7Km;fG!330Pp8zO? zVrYh9G|4JvzHcZ|>L$$Ot1qixgfF0>AVc z3{Bhoj01kMuvu^in(PQ&3VY+Kf8+?MCOmKfe`5^79AFu!b literal 669 zcmV;O0%H9D0003AFaQ7nL7IRXyag99YBD#rYlg(1vD2o>!MDv}ka|a#gr^@cL6Bo? zco-jnEX9BtE-Cl45j$Z#=&;|v%izRNXgE9-g5aRT0Fmo_z+lkJbSq5n`U6&PK{3$u zk6*6906+-<1qF&#ELg&C08@c|-%A)H266Vg;Oek~8rpG74i3a6P&?XOf<*KAs+1c6 zz%t1EWoOk70ZdU?RjvE}3;+QDFaTf=7ECu9CTQa$tO;CEWewE;m}mqxC$4FVQaDv` znKCs1yS`t6DGk92Bmk%fUKEII-`lmk4F9Rl2TEK1@ClKbp%5ua-Ytv-Ry>E?X?$Q8 z2nVo`Ef5nKvj|2-3KXNu;s4UiM3&HTgk-^g_e2h1X-Indh=N+~RB|PGJ7$c4K}*6B zf4!;(;aEhx(Z^6JtUKoH!Dd<0SOl1yC(OBV-dP&)7~{`^=;_2XqFg$wH?i z<08TMGL||0v@*+3&U^q*p+o{=NK z8F0@K=Bxxjb=pTdBvdBg1l<4t0YLz6CZGnd0C+F}00BV&Ifu09FhDc`Tk!pEd2iIGo>+!|D$EBAf@YDTx%3k(e diff --git a/samples/h264SampleFrames/frame-0038.h264 b/samples/h264SampleFrames/frame-0038.h264 index a1e5799feba9ba597f897de1cec60ff63bc79c21..aecefe00a336c58647ef04dbd9af4e2b8f083b23 100644 GIT binary patch literal 874 zcmV-w1C{&$0003AFaQ7nL7RXYyakbe>>>gnP%PjBAQFZC7?Z59&wxw5d$`O}D8DFF zeefLn1`@1V&*Rwnv?HmwO*&r$#1O!OP;v;yW4;1dY!Zl_u=p1+W4|^~DNV_^AnY5< zh}*(F_kf)l8H8MiLb6a2;CJF00K&j6r`CD_X($5#GGR;L{|N9R+~5u1aEN&K&LJo( zl-sf_NnmKJ|A2@*HRs`G0$^e_YLMy@79+B4;<-Zv!lgL!!Nd;Mg1jfpLL7noVFMft z4iC79$Y0!s(ZUAcV1(ydi0*FE=ApjQBo-E?z-)Vr)%l-sW0PH}sMh?9AG!^lyx|iTdizo;{ zI>&Sf)2{#UB4(`LF5K54+xQbt1$q*16Yl~Df&##`SNlKm|EK~lbf44&)4^}d3nA1P z57&$ELfP#=9V9VbOP*uEhY*ag4igfxyYrYO1YeG{6|ygYn7<%AFpCEV@EiUgBviwQ AApigX literal 883 zcmV-(1C0Ct0003AFaQ7nL7Jc%yagk|HVKZRFwdwV2t~*k2o)PauwkZ%`n1H#y$ex zD|jeP%&k$L`ydTG(_ zH~^Y3?SQoEGl0Fh7bTyMm7ci z(F-a*j-Pu5Sn3NyZp&~04QNjay2gVk|9{)NXd|x7@3a?SRhGUPVxZWv8Uf=^L?%YJ zrNVDq363UVPhex%J<05F4{*x>`%O3m9+j5v$HhGHT_ zxDTN>*dT8F2@du&02TxNaS$yMRH$PHyX=$;^2;?viK#nvgK<{VXrc{paS!+iJSJ3I zzWzUq`p1Uf1u%h+!Rv_Co|9-TcDxJWI}k4r%sV(jJOBp6S~vKbA(PnH5DOHlHmW9Q z33#95G6*+hux9Ye4%Pwk0sxPKBgIE&Iy_)II^Y23FXt1B1tTGtnfRM^-EsfjaI*nU zgc8Yx|DZ|f(rjpX=A5&)xX75^7KB!0=+N&|0(Qj)$O_9-ulWpwC}6x&oHj=Syi4Ge z;qaI;1Y``1CYT3;Vzo>fP0^zc^tB3WS1+!zA`=j0XB6it_LDSESGe++n4}67HB{ zCU5{E+h`W3AcUr~T(zx%?bM%Z?g6U;dsQ$#*T(6+JOHGG?Z5-H1rRG>%ou0kRPx)- zUg#viMiImeBna>`0X$3!s( zYJh6+1(v{*2Qval1hqDU&;UP*bHYQqlQ-00GxGm|6hJ!=EZPPH3Ji3=4g+0Lw0;B= z3n{iA-Gi(GVWo&a;~dtzU`;#|>`938`l}QQ063L5X8-j5(tr`?^N-d2w7{BpDWhTY zs9+GNCcqA&yosFf6aWU$1H-|FTZXuT8vp@0KoFqR9aZ5X1k4oz4O;Cg373qADU`*KP1s-e+~cu diff --git a/samples/h264SampleFrames/frame-0039.h264 b/samples/h264SampleFrames/frame-0039.h264 index cc9d36c64b2e681c96da00c3df48fdeebbe34b8d..16984555001f9a748bedf0f9c5d0d469a4f62ff8 100644 GIT binary patch literal 1001 zcmV9rUD`&t+%UVgX0OPB^c(){Z=3U~a#1Ple7OyUNhY-N31hlM!T1b(|* ze~$h6Vy29|7!%+F$}Ln_NPm6=2D_~H|6RlY+S+nCmx0=h0o)Y?KK^ij$V-kyeM`l0 zANqk7{j>U2KT81EcjT42t#GWd+>EC)|A2wqe1$jhIfe?cK|2F$Kz<^H9tQs#01^0% zXdoVm4F70gB^i9&XpcF+{v19(fHHrqlSD)ozeq&{paNjb+F}?01O(-D0=bBW{z1l$ zVbZ1m?4oow@CtEtm!?nN0t+2nldBaQznlXGWXvFzw2#UDy^!+ zd=9HNR^|J^=5R$!T&~ZlI}5ScRyV%eZ<(0H>1Y1xo^p9#o&g&~nVvyqUCBsVu*N+n z*8b3U8x2yQ6=!#~gC@jRk;Ic%(qr)c*f01YY@11`L2050QY9HuQKe zfghL^4*@~{ggXo}f~E=pq#l}rF2U;q#c z0D@!yZL%^AsvU?{hcHwu4!-@EI05Bgg(7Ae#F+oVJ^)@oiKgB_SpmD;C91P!e*l|g zKyfY=Bs{Na82JJ!y*g1BV}1aIs0gYAf825oQnhF2|8^MPF*uLq^~8#Zh?VevGfqU( z<|B&f7(3Vz3Ast(55H3xXIo`g=6^M3vc1kwzG#6wub z@&vyz5s&}HXa^(`?Qxv{-qH8lJ%Gh<05+l?32pq}4bVIQL;Q`IumAu7K>%(h=mxI(BfK|CH17JBve4}FGE5JUtxU6PSfIUV57-Z=;;Olf#VTdb@=f`o7l zeY%8oH-R++lnz5ehCqq9ak4!WE|eYsB?9R~D1X=68ntYm>M;=h%JCqub*M^n{x*DW znExW%Y!`g4Kmjhd6YULwHYB7Q1%!<>yuTHRLtz2PUf;OxI_&y@J`Wz0ztO5MgTc|{ XGais>2plc0zwMkZ_H}~z{8M{?7z4ag literal 1151 zcmV-_1c3Vh0003AFaQ7nL7KoCyagX%qG0smA_|0^mqtd7K=chd=;8 zCU5`{0{{~t`J6ZgCJezz_ajS$x_*EF1OTj%00aO44!{6J01}WahM>M8Q9F0AV=E{f zc!*Eo|KU&o5eha96)XGvxCeo*hvv*?{ptcjI65UEC(<8smfSKM!A%{eZ@760h%Vh2 zX~dew!2qT%5)oj(QAvG7Tph+hU6^H}mSAB#x-`4+endiMLm3!OQaCsONxa-jNodcxfdfMpt5-cX(r5V**O%QOK2x7|Y}S;J@^1v%!jmoacUr({r}+TojF!N+nfn+f!td-%*@T&@BuP| z7g!?7s)N%qIM<8qYT57)3kxcXC|%kuK;*30003&06B@Q0jt0pi~s-uK>!s(YXEBS1(ts=;KV>V5aAF} zz!t=TshmI!jc;NQcm%Ab2d0o~pUO!~e7*#cSXO95i*rI!D2e29l%=E^$B2T+F3!!b znHB<7h!9cy0`INdB5(K;P&q*UC}btKY{Fn*vCXeV=l}s;fI>8w4zT1&Z>zR83p3qb z4~T~LSBV7yKUImvfBXF13vsm9zZySl&C4X{%^(J{@m%o@uqMQ!4U9F6i?2QIUy8(` zuz<>grIMim_yZrhVmp`ijB@B9KyZ3e|CuBa@JE|w2pAVlunZR6Adim+8QnyZ_1FH& R0cG)yP9e9)|5$!}-rx_U_C){y diff --git a/samples/h264SampleFrames/frame-0040.h264 b/samples/h264SampleFrames/frame-0040.h264 index 3c605b2d68a0765f46e777040ed5e6e27803aa06..6286e5839c14bb9c5487191223a82c927c84ca5d 100644 GIT binary patch literal 758 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 literal 721 zcmV;?0xtak0003AFaQ7nL7N~NyajIw0z>Shz1**XEFmAKKwLV5DZmH<_>*wxBA&$Z zr-$wSUj`zBLBZgx7X=0o0&my#fLLfI%+xIriBI?qv8~21y!%7f>aYM12w(u<@r$LC zH+lbq!O}u;qlIABKiPa9M;JhclSCNVvI`KMz*1g)gT{6Fgp>?`I07u1VHOWn4S*?% zJB+r!-@$+YAPxWq03>NK9}SN@*9`>L1g>Jx82J+?DKJa(_M?~dH-RXS0nl2`9LjvJ z|97^)XX><7kIZ+_6CtYN5IKw9HH-lr&oG;fFN^}=0QM3CIDnYVm?51MIC{hv!~doX zM3?X=;_`AU|KS9BihVHN{-PjDZpwseJ+$qW4T2JG6wUqYq!-I^Qt>1N^i8x5**h>S zySM$)08E79mI1ceVIjrhizgnk+~D!`6-K|Q=a(@@1- z12aa71;@#dpWZ`r2#+MR3tNeje^yWobEb!|MTRfyfB+B%QiTjqbb;O>#wkN6UuTj} zjT#HM38EmT0El1!00BV&ZYIbEuK;*30003&06B@W0jt0pi~s-uK>!s(Y=CO;1p4qs z7%*!DdpGO=;NebLC4-RAvtp!^0096T0TcNLG#yeP>o_oB8elMod;I{Mcp=y^4+I$C zQ7@S-Qo^RBid*mpKjm$LDAmn~NqO@876b`d1c3VDU;jaX@Fh}-{NG1=;KVQ_#EjAa zp3vzC4!XaMBtn zqAjo?%|gn}NESBe1MUS2;7vRfr{{JKl^yiF&GU%?WV$anvEz|1xEWdN(M9LL)yuoF!wy=1F^Of3NpY DC4DrN diff --git a/samples/h264SampleFrames/frame-0043.h264 b/samples/h264SampleFrames/frame-0043.h264 index b483c7b3a3878d3f2d41ba1214407f5ab8da31e7..2b358f737691d240ce476769309efd1213dbe18a 100644 GIT binary patch literal 751 zcmVSAYlV1aMUF zV#Qx^p8zpjw|8wA+bI7mA`@(Q5k9bB)nRQPx3TH61Q*$6Y0~&8LKqTIIRv8#fF^Q6 z7}0(Jc?%?A#F${2R-N+rmBffSnl|3G*F_M4%oXPzC^W zLRZ255#U9+z#G8h;0`_Wh)N1Vn{w+CU>Yj_;35wVb+}o8m>7*(Ngg6XF0C+F}00BV&If|QRUI*!33c&!gL5gLjWfaL2$M4`yFW;mRmY#U!Vh%>c zOcn4_2!#U7U>F>BN9`^*E^^LxP>pA3V|?S%wR+_%hC2zR*Lie?ladP(%Y@h4%Oeg&WnsRJty_r*1Yu%{89^l03laZ^vObJ^Q z8z3s}PP`AuWFbNY;*{aCcopJb1g8&#!H^>m85!Y#4In2w+)!z<;lVfhM9T>;e81gf zCLxR&oS_LhbJ-&rGM=w_u|;AE$ut>K#8==xW-F))5r*m!5*`2UBLEU$hMp1m8$5P9 z+7gR&QkZJqfs611e1n=3vh^MQ_s2mfOKI6la*W9GQ}^nfieI>3_*d0fZ71e z08P*U00BV&ZYIzMuK;*30003&06B@Y0jt0pi~s-uK>!s(Z2)TU1p5UbfWU)*E&7-p zYP=PK0cL{~%S*}%WSif9QotNy0HhiS6N~rs5-?3*;LkU6Tprkgp^v2#1w0gjAwZ#n zf)0jg$5$G<2F)f5tfRmu7v`&MC!rlG(V`LHa!>{K%r}66%4o-gMjC>MmN{gx5%6M+ ee$C)c5d}GaQ^CY=dId&m-cT1p?mKq$2Mjf*AJVI$d*ZBXxEL6~s03M^vjut<^8vS)%xcVb`?3>bF65HD*(j`@l^+7UuT1+StHU01}%L<$q!XFaFD!vtWc< z-1Ykrg}9vJ5zQy>up1l81`l09rRVQ^{@vhwyT>l zn>ve@bVh2Ung2dDK!3mPX&?XKoL;aOkwZA9Un`FfzyX^gCO7CrcS(FC24oinKu8c8 z7%PA!Qrm<7{`feUl@hn>vV+{HG|L_0rv;bS>P*nPed*JNZjxAv=%0FJe z%uc2`2Swvlr1D~^!QjCB-bCLq;Ye}p0sd;u7gw*&0AIXY(8=>2|L@?438WbZh=#F= zLMXNVVj~~_y#VBcU9Krl{p}xL{=i{Q0096Nq6t3vJ>M5S`~Wfgko?4OFZYdhw>RIh z0WJIlwVMO>aDD)XU;qFCK>%(hkOr>+crX9}0YLyciKGFmz#EJJ00BV&6+&qMYVZX6 z1R#LGl32i+o&lAK5DURTfgCvYL+a;^061D!ItjrbPl9z19fCK2&8~olK)?_uN?}lo zm$Hkx0S2$}y5kR~Vi&cZHw*?Q3wjbR5)=racl9@11Qt5PrfoHlkCbRH=z?N@MrwRn z3s_=B<$=q@a?45m_!CwJnF&je{s-;$V1I|$58(rRd=9z-7!Tc1TH;SR_)BU2fd6y= hE$`43rS^>=>@{LXBT z0yqQd@EaBvHnq8&N6+lV6c7Poq5uH^UGIPZ;1?hdaDI3^4T6co4bAXrBnAKhAk8*g zzyZ)T2Vny+mZ~kPRdln|NglL@F9UNtaG2QOXU(H0Ve?l zG5|4Cw&vUL0ESY`^hnKf zfr+^YWb|?6{=*1vxrdVVxL5aW^DqqYFy*1vY~jTat1*ZE>fpf(xp(JcB;US)kq|_= z9vZn7kU{;e0BddnEA1jkZ}>j2jhTmqn~y?2{|8}!_^=XUi@*h$ogrbE=u>a_0RD&I zoYbNDq_+PCUS0y=L1%~v$Vh-Os>3g_X0XIMZ00BV&ZYJ0UuK;*3 z0003&06B@a0jt0pi~s-uK>!s(ZGdX<1p5RafWU$fvQQ(@Jqgqb!9bA#As7uw4blfd zC>E1HOxUO?1VKIxs~y8)0FT~~8S?sEAO05O@C4~hDgcjtcEww^YKa?H`JFNpKm5*_ z5Ravw&T&sX6#WSo2?`HjYc^8LaLBYhNUPs-U4&;S&|k<969VMELtQ$*`_vsqY34eF zXHhsWd%6N625|epnz#}OLnrzV-WC_L|6%_VeNGQ)m;8$e6XD+jfzdn<_1=zqt|V^r z^MS1h2;m$l_`}K)y1tN0Uyc#ogJk)x$y diff --git a/samples/h264SampleFrames/frame-0045.h264 b/samples/h264SampleFrames/frame-0045.h264 index c92063ab588f1b4cd69f40c33f3be5b319338d82..887b1917b8341b0bc95868fd7f5378348349e4eb 100644 GIT binary patch literal 882 zcmV-&1C9Iu0003AFaQ7nL7HG1yahKfC}HCO2lvicgT5<zR9t^Ou2pX^;9zP!g0HK+R0C)j_ z>nLLEsZV*58<16^y$&@jm%$7(9|b6903hE&@z4Ly6^n+dCB}?lt<$RhMMLqwuvWPc0>?pzu1F@(C;A*wq5BJ~W8!43n$tQt>YD=c@{L!+p z;phf|1b2&sd>&&Lpc@4l0^A>PjyMPC7dg@Jzq9~QD9HYNz8i!2;xYn|4enwax1e4p z0L%at@vs0-%N`i^4ObQFJZ@l2O#oWIjOtxj$Wi$31QUz&2zq*vcl$W_LHD7Pm_z_C z(^l$t_xd@i_3zZpC};5EpaJ5tQxMH^VgCrA0MY@A#GW|*y^K=Is29`}O#j1R31xCe zu$Vg-rusbhz?ghhY zL1J$pv)_M?+amz4NGv6kZU7XRGiCSC6X6mR7yBy=AM5xn#7U2#zL8jT{&VM-{`vw* zm^hne7d&_o(Ea>G&A}3ezt4~c^h13&|1*bzQfu(TsLa29M~C~+s1pdtQ#_4rU9$K8;k$|0YLy2LTP|%@C5q=Ah5yf1A#xK`CJf! z!NVX-_H&>~!N5hn@NNjiI!HJ6;SET`{Wtjw=c4}hXlxh{mYxK_X!*|psChDu{O`aX z{O}k~LT#4*2tiPil5Q2fEkx``_=#1v|i+A_{&W6=whd&zKNA&!IzGPI_91<5F_OPwiI&lR7vb{=+D~ I#>{*QFuvK9k^lez literal 676 zcmV;V0$cq60003AFaQ7nL7RXYyagWwV3=#v2aW@0N0;!3Ux5sK%*rL;0>XAJr4sAC zf9Mer07XHferzYX7NJJ~6)46`^4`xQVl#2ysCG1-v15SF2nIj}-^pY+Q}@q;(Eu^e zqGU5>FO&7XkDJ;-=yp#8r?8*A1t8;a7zobM661IQ1MdI^XOu%mqCRSw6^Igc5lX-7 zz7L21j)fE?oRTV4P(aF(_?ZqO?Ro-X4nlBNl*=NvfK?s!fB=Zo;q(pym``$37fA#W z4y*yEd>{wU05+9?7aNXD1oH=y2ZBx%gPNGHg=GM~07Xk>k+&dm2wF038`_8eyn`IY zQ22#sq{Q(w3Nni^Yvq6m;Y2(Wjdy_|F;})n1<9wxHWxOxtOhICKM@2!A}W-YIi=-@ z0rW~9eMDAH6JP;`#TJ99r~)kNhbpiHRyPmAu<9uvs0-|X8^i&F-v3*1fOvwV>TN=2 z20F;`#$I7zSKN3b4Jx%@nkx!@=EwkoOx4Irx4sTwJAtviC>BY5-`+@s+A)xX$lIU^ zx&QzHK>%(h;0CV%crX9}0YLyciMRo)z#EJJ00BV&6+&(RYVZX5utEzA8lWg5e0?Q{ zK|tY>$N_EX7#yK*_z;K#P93Ix20PvXaNGR<2OYwR3P1MX>+av1m&@b9fNU5jCy0(F zV*zYwkSadSgYN(HC{{RQbhF3uuiF#PhgoS}KeV4C8nY38z{RS6- zG(-~oKqSB(-7pU+yN9CSG`*pl)eR;?cuHSgnZ$5LFrJ(U%l3>7v26}I0yRVQUtYrM K5)x$X@F>8(#3Rc9 diff --git a/samples/h264SampleFrames/frame-0046.h264 b/samples/h264SampleFrames/frame-0046.h264 index 7c972d50363160d82e6aa4cdad506140761eaadc..15b718fcecba84bebf5d048a204aac948ada7938 100644 GIT binary patch literal 1189 zcmV;W1X}w50003AFaQ7nL7IRXyaj>3|AY{NC;%$Ji7CNWP^>D-S(pX`RoFD3^*4M} zjZU<&7yy2tjvx3TLM^z@fShqSG{mcf`Cqm$zUp7-2@mEFht{gX?n(aJW2#=Z?9Z$O zvjNHFGyvm3cW<@cmMFnWBR}|`cXnB{Ej4B3zR?+kuD<~>W|6;x6(9xzF{08j>9hP3 zCf@-)r>9Ld2fzU%G6|Gb>Kul(7>r(s>U^lJ`|otB9!0x9_C^wKm2LQFX}|!z0ZAx# zktk8G{ju>2E7B9aHsh!rrf8S(hq1)Sv?vy{{oVvqKjWcaVB7>jdOiz+3H|&Z)Ch@7 zXkNk%8~^M^q#LU(pX+zhNRf6M-q1dVsrS7p41fP%6~IjQ8=zYt<9|RAuXL#PpIzH2 zO3$U=FhAxmHHhLeuP8rJu>vx|fIbz1pnHJ{7)DGLanHa7vQ5}fuE+0)5x}mB3glFn zmHjdyt)fmBQ9C6S#!iht{^-#Ny#2XFbID)a1i*TPXl&$>M)z-h_LX+#2e4zV7*pL8dV8W%nv=tc={n9_vm@y;g|sb`!EOu`Ov0;_GPKZ zn}caCuV4X%1C^*@r}gQ0z#u%}Lv_z~Y~2Gv0T^x!a1{>}t;ErcZP3{l`;J30hD;=8 zdd9;ZFjQ18`h;()<0LqXt^a}GhZZR**qgu2;ibk`7GZR5FyL_a1t~%%fB^sZyb!Af zDU5}QPf$s|g1Ve~ngh$>MV22Z|KFvMgN#rgF_6756 z8m=lf9eOxrb5Q)r3@F|lOaKxmn34W&yo?yapQV5nkSNwSG&tYgahSe#wHg2J03j%e z5|JwZg9prri(z$!{gX^dE0n?2o^d8ymJF?_+L7>w?z_;m5pb14D^KA#5y%T;fp)tv zabMPL3r$<~zS1iXpU!(8|Ng!s(Y5;2R1YHh; z0brYgN4Y8iC(!L?f|zU=6ota)uPEFAQn^#+fB%1hH1PkiAfiW9T%w`q3=Hg!V@fp6 zA_{#30aC1V5IX~c(jwd%k+Y(D(uGq3Y2dGD%>)5Z7J{%{^!2yZ;D?|qPr(B-;*oAF zP8MH~^Nb;wCtZm&34acHu)*L!9^GJMKKcMF0(Hm}upwm1KVBeJ4K$s70(t-9V21*X Dx*R30 literal 1135 zcmV-#1d#gx0003AFaQ7nL7Si&yagv1=Dli0SGDcX^vjg|kANnn?2EX&Is3V{IfVn`r zr;R~H5D6OrUI9Ji6fCB}A~*t=Lhe3vp)!dl^ijjt7Dt*0g2FOcXfdbW@5o&kttV@H zEZ8HU6-T+B_o5%s@WD0upQ0x;dodInZ>@et|G|JLgXOD$lGs3)a1d%?I=fZrUH6Bu zrMDPIJhz;4doPeL3mhv213KVjj0&QJ$u*FB^{4@>&%0no?` zMM1;fR0*#CuF8|pl_<;a02`o!p*1%@lbKQnFyJu+$}%Ri&aePbBk;{A7t37$s@Fkg z{QB>^{2H+k;4PG~V#^f0+gkt%!cKqybpY{47qvk%28R(uQA|OH$bv*ON5AZ1Ohp8+ z?cnuR^GpXP#8U}nsFqO4NIF>V00>>HM0g+a1YwMrCBzItxbSA*M!6+;@UtiY1wc4o zENBmHN=+hiXWemJr^=5VL|`w)cmSkiU>F;>LfUczKQ+!yLzs*jVu>{tyJXWsVJ2!* zxVZcFfIQ#?blULoV56n)_`rxm6C}h?^YY%Td5|WFNUkfsvCR-@MF{^l*ccX(HGCP^ zCEk0r7a90T(}`F(Q}?t3arq{*uZj;(m02whZ$|t?r!ds#<00961o{R$7zhpW3`$-^?iII`d+5it_d<93e zr@n%%FqMlKtmM81FtD61ATBZjeD|>P9+j9s4O66#0~}IFXLlE(ndyIlCd ze_5b4_wlTM%}@s;xQus@v+Uy!OO`!Jn(RB7-+bB2J_N$8PrVME%!7^8*P4#^jfjMe zHdk_={i(5RnnXY6`iA1Cn#_4x&f=e8;k$| z0YLy2LT-R+@C02Ag8^WRj+ao3xC|MyN}IE=*f1=uvTk}h@`-o@1ue{cd+&iX@ZYh( zk_3;mPAZ^@gQKoRd6A$$%Kwo==XIVmDCwL;68Z=NW318N1P_7IFx{~3i4oz?DHQaA z+coS3DS9Q9GK`6#oue*i$&se!Xy1wVgzh|=&U7yrl;u?Dz1CzsyS6~qn3UM3yzD8NYM B47~sV diff --git a/samples/h264SampleFrames/frame-0047.h264 b/samples/h264SampleFrames/frame-0047.h264 index fff3400ed727c7b7de7ecd7560360ff6c01f22f9..22cc69fa7cce2ce3c73f9717ab35d1994fde03d3 100644 GIT binary patch literal 675 zcmV;U0$lw70003AFaQ7nL7Jc%yagW?3I2nrooNL79`R zaQ6bh8zj+Fd9W*0%2zgmkOe*r1Ss?kJWFlL6pnmXCVYNd!+zJ$fdBl z5kB+=1}bY$UA7Jc8v~*S6ebwc$UV-(V1r!o!^Xm8EI;X(o8=zoKL)@tcH-WZ9p2ue z6DBa2hjSPJ3$UYwOj@1NN&mJEzW@Gq@c027Bq~NDF}pwtKqF%T$})v~zhAd}bO8h) zqIF^|$Go5b9RMC62Z)EfrR<|{05$+D$O}6j{#?uh97<@3^0m{?{2zoe0>}_8M;Hcb z(CLuYG8qB)5kQ9L7!C5|0Ef_jiODE-P{4jFKrN9#i8NPS*F(w4;kYL+lLU={`4wOn zcsK$PBRC`srWr%xrh5Pa(g@Pb>A&XiFV*<1mRsNusz_%|hhLePFe=Pi#0*r@7>!2Q z1i%CLhzR8PqDB^Rp8zOCF|#_4ssXFO8;k$|0YLy2LTZ3&@C029gJ6g# z;7ay?(KrVD#F_>P44-4(69$4N9s&2oL#?^yoU<3pv%sqgqri8Cov6mM3xh#COHM#+ z9pHdL27u)?fjGZ6J||Q#;K#s(NkP~mAxXk`Dc6bx0n3ca1CBU4>syg@eYb%*P(&OO zz%V9Nfwd@cRRdb+Tmle&+BdmqxR>TYyO;+#NtwN?{}Y6k3kFghUj>Ff{n2b3D` J;7&Xgz^CP88Vmpc literal 923 zcmV;M17!RF0003AFaQ7nL7TuDyagvHBF8~K`>@P(fNFj-MKHW|GGH?R$;5!tPY3gW zq~qh{R;24M|@^T;&AQmYPtiG}5yA%q+r+dbs00$NBtC*xlDlY0I*~U_c=texo!UeCCc)k&M%G9H~pu80D$2n0098d3k0&J zZ(+XRGyz&8v`p}RBr~fj_#YI|%myC47I8ScZ#V>E!hjq~@5~}&|DGahpL3XvX;0mO_^vbtR?&viaDB#1 z88K0i0FD81*9wqo+&dou7zDsTI^eb+K!u-;1&2z8EuhY>E;`+<1LTaN4oL5rkG~ln z7XCE+V5w4ZrF)|wPONoaJ_QxRlFLa3&6``4YA|qMH9?{3<014Nz8!#g$P@&k1t=rf z{pexWgf(l6!w4>y+R-Je6C32f3tFrEe1CW4{SCnk67!;N4L}7j1eQ1yWfzbC_j@`V zoBxtY1^y_i0OTT-(839O`NQfk071$;V>OMIUl;|#0qi6S#00{g7!WblI1GeAY!+_| zgQf`+wia+!M9{-jh!-Od;-!DS(gZQuU)zH{6!AHEBpCsOzlM;%?=Ykev1&Cn$%qs5 z@jt=MqaiVn!9=tVnGFcMi#;@Mbq3 z;NuGdgz;2zUCILrP5?)2Xh=?OYK8vs131MoVq4*tl4L<|5sC*iA~CVDM@bZ|KmZ^x z;+_XM44xSF957OW2oFxZ5L#q5Fm%2XhBg=w-oZg-q76v*@!s(ZvblW1YC!M0LVBL2{VlX0gPU73D~$W z*6REJ{kQ%T27)2k=7M$iR4S`$Ghd`_(+Ee2<3+%!KLOK%LXw6xm|PkJIE7Kf2HbwX z8dx7xfaNuya1S?f`>YAY`7U}BgaZwS1X}?FH3Vo7hNW?w@Jp{02?E+Cm~a}GaMa2t zZY63z>wW~~K@f01S`Z&t1~^R0z}Vz5wS~$)WA>L&MskFFA=_930v)@n``lA-)%oAz xE|AuHg8E|9yN)~lU)dKEfi6Y{SOV1fMh8s*{qJG_B$&Y5Z{SWm66f>qD8P2hhs*!~ diff --git a/samples/h264SampleFrames/frame-0048.h264 b/samples/h264SampleFrames/frame-0048.h264 index 69049b3060c44808a7605682fc6abac71eab39c8..70b361285598191a73ac7060d30b4a117b845c37 100644 GIT binary patch literal 1070 zcmV+}1kw8d0003AFaQ7nL7KoCyai7vCScMT^Fynf9UQDL!aP5j9WyS4&}KTs;KE}6 z;Sdo5yZ}E?Aw=f}8a7OmJ^&==q|IvfhEizZQbAO`bNmL~Oa=zY(AS;0W?0pPEiTa+ zO}Of3AzCHyC5M}UlM=)Pq`%lOkMouHU`QI`1UTIHXfG!p;1i}zk;v0a014ty4tf|! z061VNzv~+yT532Kjwh$~f-H+_f9yjFh@?@n;T8Mo@E`!d7=lAsc=MrB z4Km%HE1bwD+1jMn)08kE|AgdMl>}50RTovxxyRc0;y0T+zD`kc7GjM2UJY}7bp)mo(jNURmDmn90P%1KH0$m zzZGYeaiAux;Jlp0j|y7gC@JDtqXMAk1bByFqwG24m`7~n;*_*_00=^V7!8JkBpy#C zL<+FC{s0HahvIc&cO9K(@mKCbRzLr=;Ghxmxuf1?!c+%P%s45g6k&2d;KBDG*x(Co@Q|SVp#C-hRsSVfcS;DO z{xf(`G=YAd2l(}1QFY*d?f)Mkk^tRM_3L0hYJTH@(T(7WSiIiw;s$!x6F?Z*YXB`S zz3I$gVuB)ldx)t353qZfAyBmiA)o+o2N{5Fi(L{M`wM^kA4>o&AW^DrXmNkJu{5O> z!hLPHyIf{3oh?Rx`>+gDRJ{=@UOD>w000OD|HbyR|M`$qSRd{^*WZTxfowD3ZiQEk z!?rd+T54tGz5+OcWi)-|i&(Ia;#E!&EFTN8ZMscf0C7)niG002NHAH;P6D6JcXn!COArAH3b2dGT7?kK^@fAAq* zaG?Mu{2ulIhadm|0YLz6Ca?yt0C+F}00BV&If<+RtH2wK0003&02M-O0BZ0K@J; zj(Zz@&b|cbL>vT!PsXH$!CN6B9a19zbN&1A~m;ZrDroCyO^(_Q}B+w{@_(foa0XV;g oLcg$}K#>}3TM`bkIF}5J0j0SD+wNb|>_`vuto_YmeqVs0fK?RSz5oCK literal 780 zcmV+n1M~a<0003AFaQ7nL7U(jyaksO2_OLBBZpl@M*!{z%1s}B2i;s0k>qO0umBK9 z09T_;N4b=v-%*9z%zyw8(*M8cCF&4>0GsD`0QXSK=K_FC7&90V4B&tels_>fLGZ4( zpMb~)xcmdq5~(x!009Cez!3gl^r?h6!v~YUqE0dbAL|&f6ctkd?HBwS(3teC70w1l z;SaF$J|YjBxCB6@Ap(_9QB{OlOR=B+VeY3lPp7>KrtaVC%GI^^6w46E7( ze7rFS2r*bSFo>?+4awW@K?Q84bTWx;B)}O4JRuE`ioTRMp;f%tB7iFFjUVPp+(xf9 z0h~D{kE9xD)diOUJinYyEEI}>8+Tt1`QKfPCS57kT{r%LC#OW%(DN#3X1&0t^vTH6 z?o$CfA;6d&mn(n${zD;-2pg(Xhsxk*seBTgJ`)B&j6h^(h5#BsZgN~uBt=P(%l&UM z#S-_&eb^y1F@!PPp-LX9aI(5GzMkQ*qmaV5@G7Q>um5lln2zcLg<1NAMM6*g#4v8c zgsw>$9}r^>^B|mkqZGqdN(V3C47mcy<(%P7mj}-dwT)0wH!Lkw-M#>|w!{-H1qL;8 z1roKUz#1ng-%(h_y(^4crX9}0YLyciM|1=z#EJJ00BV&6+&--YVZ#5 zP7nYDn@Kj>Nwxp{038E3ggIhY+7BelHar{!!N9PVS}+0v<7J6nWmN!BXNg58)vibvH!NF_kP`V3kXZ{TsBLEM5zk7Hv`4I3$;0qgGfSupIgU^Y@ zLN8~d%z`k?$r|(B01Fd9z2Zfu|@7x2hW$Q8^U1N?7cK!G9xNxT;1LL!ATFR^L@< diff --git a/samples/h264SampleFrames/frame-0049.h264 b/samples/h264SampleFrames/frame-0049.h264 index 9e4b28d1b3c6bc759963b9efb75ff88f5dd55334..8e6b31d57891252e6436ae51019c54d6a9f00fd7 100644 GIT binary patch literal 1096 zcmV-O1h@MD0003AFaQ7nL7LziyagvHBtuewrEy$-5=YtErE)yt#o!hN%f)zg1=gkc z*EGXJAk*5!3pM~D`F*?h{RLC-7}XQc{-yO1Wo%(E>J7m72XC%PV0dk@-Fn$+{_eoo z1>eV{5_#|5P-=*s>T0|^({97NdQ&hY2Dgw8|2_bqndG3bl@wcV()fB3gvExygc0BY znzMQqRm(bqzH%o&TYw>?1sj+nt^c}yIfcyFMa6sn@oWfy6l9>6`cKesel!Qo!58QnfkY2(w9&}z zw_6|pN(7eWSm&Gn*Mf0?Djb6GhCqjBtWtah`UEd(UnnaMgaiRVHV?*ewD6S+8BuU~ z7vyVW(#w#nWU|V4p#2sT|M2>~-2k4-I&jMJDK76KV=_e*2;%nM{#XGE+UJkn1}cz%P;Mn*wX49G@NxnrqkQDb~P1m5ocnizs zFhnzgDE-tbUnFCn&j(i99Lu-AtH6(b?SUs(#gQ3ExBlQaLkrSV7c>hv|IF#pH%Ee< zl62SC_5Fqf_`;jS|DW>_82JCa0CGXER~gU!?O%QEv$mx;00aR^Mj9fGJvYN-gTMnH znj!g!;)R#}#?!U5(Ck1{e*iLv;%|F@hu{cy0003&0B$C@2Co2kFaQ7nK>#_4t^upS z8;k$|0YLy2LTi9(@DA~R@gV5Hk^p$$QK0-T02(9N4ujyn4*{@<5Eu{#6DhzxKEW&l z;b|GKA7kJASP%jn6Oq6!%0-lg*6Y1wC-vy4O?;7FuvNCXdX#yq80GuBy|uLA>F OQvL+v!9F9;z)-+d&kMl- literal 1124 zcmV-q1e^N+0003AFaQ7nL7D&>yajIw0sz||v|&>&2Jf{HLkbhXM_Z%N20Q>&I{;q5 z>bj~QafU_38`NJhXqWL86(Ce#zySN#rT$O-&>8&QDhm_0ExI=oY)qmmLDytewMF(khyTAAE zpmn;GXqSAjM`g&_zh{k;Hei4;kJC*SvKlff;(Dij`3Q;qSd2fom*d1lj|DNBOy#~5 z12q%q?jnhQ-uM7f+!!>|n-`@zop490h z2ub1b0O41rLH~M`^Z&dL?Q5s}hJX7wfJV~zJj~8uFfxpc2rGrX)=CpV0R*`kW{SV*(>F-)tCjY@1H!Yw#0ZED5GB08v_P zAnKRFut=l?fdGi1gaJol1yK%MfYgV~%zy1562ZzV=v~)&ulNmXM_~?dC2OWAwpkbl z0G**TqZ7X16rkhCe;9GYVIsW$sGLOO31j~KcmPnMmjsCh?G@zwU;t=sLA}*}&_NJE zxxMT;)>D7?SB7va^UObC@5c+PT&9hh(1vLIJ^IVxFKh|AU0(kbGKcv01y&J3(^2+2x?#H zd>4oU7+?|w1IHQrLR9!#^RuK;*30003&06B@E0jt0pi~s-uK>!s(XaH*P z4)K5SAn3q>zz-R#hlBD!16eTcgkY!VoA2T42!Q~gKpaglIAite0TYBdlkAr>z?^v5hF1T8+y(NVN{PWp03G>kq-VfRjR(Uq!P^He(VNzE z4Ip{X_#r;eCM+M|Kwpyg9eqU$*Z>`1}n>+wBzcOlC@JER890d&6BKz0? diff --git a/samples/h264SampleFrames/frame-0050.h264 b/samples/h264SampleFrames/frame-0050.h264 index 1465169c66378bca47adbb0b89ca7b25b2f2546d..d2a47779d43c68e62f045bbc5cee004f3c0ea33b 100644 GIT binary patch literal 865 zcmV-n1D^Z<0003AFaQ7nL7M;?yahiN34>@HadI;_FXh5k4XQw9g~afO9-jbBtYd}7 z2GK@6;z1a=ViLcA0s)+QJCHEOc5Fr>QGfub6rfg|It;qDZ!sgehib7ZC{6t@f*58# z3Q*1fB<4#aL$CaU(b&5q^K56pb+8lRA_+2>^`f8t;H#n*qMWAfeTEKK$dGB*z4H*X zAY>3T3pBC8*m?v=>QA$gKYjiivWd7&mMmzUiPYVO1l}mTWB?M050|3{=iBJOX&NQ~ zRrq2Qw1`tzvAnz_k8eN#jHUsP=~&WVSj8-_0;NI4&-~*77F9HRL~tF%6&)+Z`~WZ} zJ1N~mt1?4a@D6X07CwVXF}-eC+D<&+2*@P29BgjI>^rUU&wkP?AKGoGwI5EMNc#0|14OmJL7wwlJ{4H|%Wm z2JgVojIp5>nw;<6NQQ?J_Y5}n?ujUgA#9i!a2;!yBMSOc5=%NK%@+<4D31RI0YC@%!aT+A8tq)>C(Kfjz5Eyw0wKt# z7;Sm{kSpK#7tE9v2W9U4kPC*?!^GY};$MFUFX-W?avGO^{X=j7QeexHZ=ff^6BHdN z?7;+mdy_VZT9sJegi8*Kv8|f;zJN(H1B=FCaVADO4S(YMp{$t03 zQtSBPlv6j~ZUg^&MKGMlLkMG@903l%0003&0B$D02Co2kFaQ7nK>#_4umP*U8;k$| z0YLy2LTmtP@CA(xDGa2_6TMm#TS5h-`58V)xi8BDi3}UFKXZi-S@%5z|bg8YfrX726z*M rK|d@&BoEzw2C>1MOp|^8kL;bB5aMvM8EDvGYoRR_#vFLH4e%Z?KOKC^ literal 750 zcmV>~*^7A$ZX!2nVK7QcwRgTCt00>@N!_3iR=i358N>I36iy3yjfDr-=*6dTxY=}*yOW1Yn7R znz*`H6l5K20ISL%0O+s^s@Mf#q^gdA3$07mrtG+CFD8ro0tOcf3LpcJMHl(ZBxm=c zt$GZq0dJDtAO(07I234(WdIBq3&Pn33jb00xwZXX0?2>>Ko=k(@9^aXw&UKB;ynaO zgJ8p~X?zPnmIQ+aP@$a!b_=V^I!e4>>r2Ayre_hFhx-kgxqtwGfB*;xeSifA9)Apo z4}gps%$YbIpt!35jqW9oAoF7_3^zFa`amiG2D$}M08~5IRk+1WU?EfifZ1)Q>4Eq6 z0Eg=WHHif!nV8OW@BM><$!s(Xn<<)40~We5(FV&its28Bc+L0i`$in z4A%Kefs#Adhk)hjdlUZmfSnQqK}3KLT>Fv@tKyHq{s;T<4L||#)v3hm*w93}p2ytx z&I~_~8RqZD{>K3QT&O<@pGS@A0%vXE|HWdS>%;TqWSRgcY*aRqaWHG$9i3swF>rDC z5dKko1JTKBus>$+LYMjyY$7T-KLC{UX@C3RMAimUVb9Yd8?**)coT#{A8`PIsYQ?y g2I{5yKLmC!a{%$S1qGS#@eSeuoU$eKy!Y@PFei0HOaK4? diff --git a/samples/h264SampleFrames/frame-0051.h264 b/samples/h264SampleFrames/frame-0051.h264 index 0d5f6e9d720931b31530cbb6b9e0618cef4361aa..5ed90ce117edf58fe14e4570da66d6064f9b74cc 100644 GIT binary patch literal 5963 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 G8}c`lS@xm; literal 1382 zcmV-s1)2H)0003AFaQ7nL7G4syajCH1_CL309}}&LSDhHZ~z>-m>)`0)*4V{GEZU7 zj%gArdBGeV2?DjJbR&C!0l5fN*x&k=m01HlK@1hT3zrG1fc}v-?D=afK@<8nq*z{z887wEIIl%0ARVAKq;YyhN9m8dck>zzzh#7<^)9rK+Y8>&X;@{a`5&Ayu?vh+4(%w?)!kMH=j@cIYq+DX&qCjq_Jv z_E^A`F-5OPKmYG*3Jl|p=%l3*7Jc2nfH>&Phw_38Z)K~jH~+;}*Hhp9`|#ifV>8h+ zBkxonenSZ~$m!r^FNUK7U}6WLPzOUGN{S8(cDy6q-v&?#6cVKwzMcRZpo1kfw=_%C z$w4eQ1|YdcMpz*GKm`FGf;_-)t#pH{-v?Xs>%Q;sZbC4l=BHl>Fj_~}8Gr#pPQU;l z4xkMfc-7GYW(J291wl>*7$*VEnq2QPxo6v6=xp}V*#qiSt3 zqkGN)AVEB< z-XR^&YEw=;57{xY75VioaicON_TC@B*X(}I>gxZ#j@cSD9+$wz6cdHS1;#*6j{n~= z=}f`!Zrvns!VjrjwvQI|3Jgi z-Qj7Pu;!s(X#i^Q3~_()AWkqK zfI{;oiC_Zk?E*OLzs-y5mBBXlP$UQ@hI|3;a=~Pdb{AZ-qBWMN5(*?CfUm%nQlJ=@ zCX-ulg8QZwL>a4pfEz~EHym35IKPlz0${3pSc3@&vB!^jjSK!cn|zCH)z1XI5Kwv= zjt1>YHTvk_8*Dhh#ABwG@&@GR;?qGu6QV$XNC01&?^g`(*A>8(tZ}}=^^x(^RdU}EBXAnLp^JU^Ly-L4hRg#-LHAb;*!pL5V8Fw@ zTrPio4w>Cv2tcAzm@qK!R}Amw{7spr0kUua zLn3eDkE8}zi8r$VFUc$bOe66WmZ{#GS8fOb-V)=1^~&Gy0I_v-K#_j8ANQQ_3u_z} zuFeM^|MTTZxbP+)%^3s;)ysTP&6F{3zX))Nn#AxHY$TE!52klbeH8ofd!a>wX2*+H z4@2-D7)-*~a#M-XLq9uJi=<8Ty+eI$CGlLs*W8riXq1@#KSd1u?Lva};0S%Cb>6Ug z{;S8t+7%4jUwD=1idVF=$40;axOY?!Pn@Xxmzn$k((y3Irn&3rI$RUcm|$Oy5rCxL zT>mBmlGbm3yb#WCN+c7=|?hqOp1e~c)7I`8i8Jg9s0=3p^Rd%-G|JRtwL0Ys$7@%kud=V}xeuL6JX>-ro3fNfvr{k`ye#SNKp z()WA#fs7mtpz^d3Tm#74AE}NFS-=85BMhM_?o2v{@JI?aU`{U`!5+ZhSm7+722>fk zO9s56Nzi(~kAM$-5vy#!>?JPMgcQrUFMy0BI!IJB{o#wt*c-MG+CS_)0baUa6@nIk z`@Kh%w8Pv2{Dp~wk+9%CFoCP>?!d^AY5J0K|ecvh}~_@GsT) zu7n-|3Z#r0Y&!hR!GTs{QXpccki=><$RU6S?+_8m@kEO(<30gUh+}AiAzf9U|NK86 z()0u&*+Ud@Wgp;3I7HC$0q@JETkwy0|J;^9W9i`4e;x26)&}~qCI2rV<4bJ+vFB}; zyhB|70qF0C+F}00BV&If zFmr$r8`5rl>3_rlA%QShLIG@Sg4He$55AgAN$r=}Zk?0~0sx>`ESe|Rd#Y}7kOFi_ z;a!+;AQt8mIPfR~WH#OPzzEIf!6x!WK!-`qgun2wFr0(1BcTJo0S+7l;{OwJ3W@^3 zsB0x5N&F0ECReB#ac6Qx0Rtp}|2K-YmfJJ>?%gq~?WlCjB4`plh^e_S8NaixY$WVX zZ|05^hG{qh>p;BUMZ?6voFWT)Ab>^T_1vRn-+K%pBsK%WlFNUB0b&H1pH`dZ20q`r GfKXsD%8va2 literal 807 zcmV+?1K9ik0003AFaQ7nL7HG1yagW;2$0G|e7tx72WEhVTgP#dur@q62H-%P>;chA z5E428Xayb*m%x&25FL7ZnVKxhCS3MMp$ z!BDRBQ3{6h0vBGFuU`mV?={$G2@e)O?r?xmF@S#GCV_nqKr;S@;KoP*ya1BN0>G&+ z7yG@P4*UO-Nd==6RRD4z%IIMPx%~0<7yuyU9xmoh7zh~Zz+?ez z7H=Qj!P5;Bx)yj=WYEJp0t=Xa6o;>Pn z0s{pU@G-z-@W-&>f|LkAdUNQ4(;=~gfR-W%;0TTY00BV&ZYG!puK;*30003&06B@K z0jt0pi~s-uK>!s(X@F|*3G%`KKrmB)9}A^LYcKe~CaPI!?5vV}-z0QCSd zl{b^m0~#RxK$~wJnaluyO!ugfBA|pcQg{PIUQ(?zdw@aGAmG3tv;dufAXT6M2+0F{ z-kxCv02saW*EX#_fQa4pHdwNN5!SbL)&KByy%sD+-X`oy{OnN0lVib?wyYgd0-+K> zHvX_fue5;T*3bPcRZL?;Q}`MQD+ay*AiXkZ5BR4Vs$b8>Klp#*7!$rxp`80CEc_?qWs*<6VSF^5f_Ov(Fri!kFByYoi|oFYiWR@$10vccJouP67keheyVmXwrZzdEqxi~u0{M(U9IvVc7Y{l@-Ds)kAdR1$RT>iEP9{*!1LUP zkD?L(eqJ}a&#KQX2ER^@bPrx|BL)azM3zW55w^PWx)%; zdf(z|LJD}mGS&Q4WCzhfO0-^Z@Sg)!cf`yLIUxECVvvK8ya#!I`@&}}&czRqg?TPO zHzMgt#zIH>-{17J=sy07R*j6OPZOipy#5rZvbuzT9J%td++;7>dh=in3=KTNSX literal 946 zcmV;j15Nw@0003AFaQ7nL7IRXyajJCARG|i@Pso3_KE?vRT+k0B|NK74;Pe04V@2eky&u1Lbmnr-Dq}h`0bu=hUS@zzm_$#Awej zr4OpXP*!QRAOH}o|DZ~)3~&Gl1LwcU0KzEc^MODn3>q*d8RUQh2|%94XAKtx`^~HX z-39P{2K`$8umgp_0uGTmwETjJG{JLsxtSar1T8tlGz9@y7(Fto=u+YkMj}OVkPObC z!{#Q>MPs(t01$?V)`>R2NyY};Pqf4W^mtOBKV<0Q7;kw90cN$~2bdI3fSo*+3?G5f z+P)f-`E-;6Ulmvx##%8OcD=sx0tF^lJ_J#ZthfMF5BMSibSkA%qYeta=3qjD|5dJK zLTB<3v&_H-IF?y2X%HY?pu>+B4KUV&hLHYzM0}qGhEXK9X;?nsj&;}?0cyA|$0raT zFm=E^R~cl7AB-FYeFaTv2#R{F)A4s;?TxX4JwpNOf;^(}(BoCszAG`Y;lQj19&;WG ze~XkLAp?f|=%U%LFT49M;;WD)j)aJp7cfH63qj){26zFN^NGcRkcj0kbHjC%OL6 z11UgaPaxsDTDSiH-i)9CAOwnogU%fTe}q~v=mWG6Fk85(Pm31KAKE|>m;hk}Jm90C z-*A?AC5A!>KGz-sgD;8L78#epyjXyMD^7qDWB>pGK>%(hpa!o1crX9}0YLyciKqdq zz#EJJ00BV&6+&tNYVZm4Kof-mE&FMF55g zwM#Q+n+=-uc#rvkF9!oU-}#;R1mgc*L%}oPME{`zIe`H+FhsJs#1YEpZ3w{`Oh%7* U1IN-^V;>Je_X2s~k3RsQ!0l^{82|tP diff --git a/samples/h264SampleFrames/frame-0054.h264 b/samples/h264SampleFrames/frame-0054.h264 index 655ddeb6e0e8c02e0c4ea5f2e95d45c05f32639d..e8dd4a12ce7a210a7d1646ef00b411fde642f87c 100644 GIT binary patch literal 1010 zcmVo1d| z(9BY{xQqZFYe55s=kt7E0D!=G#LggY0%NH)b_))9z6eI?d;N=dw#SnAsHvG@9uhD$ z&!tlUJqpBsesC7#27M}#41EXuK$i-xPD*X=EB|0BTYk{5N`L8~14a9UL;AlQFDYDx zaoPLcX+#XbZ<-p4kKq4_!|B&~Ls5XrxSV_n4XC(o59fq&@d2bo@<1TO87h(esU|oA z@fE_j#f9biTr`95U=Q4HFZn$6T#^Fvh67x7RHOhGqD2OmVQ9cMxCHa*(Erikr#uuF z!my|SB-%-~(oL`b|9}IbxdcbO{=*pe%i@6=3xa@Z7!QmJU;_`D^!NX~1F=sXTXoIf z0*oEQH!=C9=h?6ZK`jqaq(Af8Y=7q|N)b|5{_2-@EcM#xFZUcz!yoQ0T)%m^_) zk){854#o*MB2n&2Xy5b)M5=eTqFQA4>I&Q{K7=PO=sa9wm1mBvpW=Qx2j5TtVrkyH z!S)Ry0HEAT!)rr8zbycR5M-)H@ILOz6{2!S!Qgg+zDflR!CZie+-weah6)Am0v7+X z@&fBG;h*N>7c>78zyXD^h8D*%MdM>7VIa{502i^9>0RxI{qO@6fPqLVOtJs`edn++ zV#|Z*cfA7JAo;LDCf`Btf`9{Xa4y;Ohha2RfUPhAXb1R{$e7x{zO?s+mx3?EBM-yF zQId#A$d-@$`~4{cF!2yeh-wjGuk#TY|NK^fIUv`qj6?r>SKoVPcGRZ;0Dvhd!^Bai zuJ{DQzyv;M1(K>%(hm5>Su_=D|-|yo9tbl?DXnFbcqc5RAi!xEK~2TI^s= zUQfI}i+>HA{Fz$6;jkK6a&`1ay+O(Ogd#k`F z7s?<&LgEQC{xP_Fe)9rrkQ|cww&4UW3UmQ6iEeBd#x?5IU?`cai9&B zask3@+68|y3F?T41OLTO*?tGH7zjL801yFycMC}JlIs8$kOOo94i75ef^*gG63viJ zFIGzbGcyk|9ZJGG84h1G(Sewen(Ldr@Bf(2SkmTKG{>k{#{HmXQr%q-7(!Y-K;cW1 zLH}V$t;YWQ59IF3yuu&%F#wI01-YB<@DN~S7@Q$w4<+|a6+i&XPMK_(H{qa?-K0-S zy{T3h0^c<$;Jo9m%xQ$}`V@cPSZsuo2y(NC`)I@4WKCj}_5uf9uDvf_uDv6|FE{xB z1_27d0gHnOHN8h9j}7*+I3>d%AGnYJW&(^PRdvaYh$}{c`~X5=01y-U-~bR301cQR z|9)?Vw~-*mcmN<6M@wej`!E6)36Q=4N>h|O9SbCJemoD)U=T3npvuEJ6RB13U;+7n zf?`GI(MyiD`%R3#x%>YS|L_k1Ff5rCVBfeZ!}mUz00;k1*y^ww`S6C=x%|U z6qE`n@9i#AWA<=7p4=y{WtNzSdd7Iq~35V*som zDl-5VmEZK<(CVN(sZXYi0${PBKfFBxA5Y{0>%+Pgud8q!oif77CI-2##+ON>u8IJ00LB nqi8fSg2+_CTRa>r>9!v${Kn{;4Sb=mqLNGe3CDswM*zt{n**2w diff --git a/samples/h264SampleFrames/frame-0055.h264 b/samples/h264SampleFrames/frame-0055.h264 index 05de97c8ab9cb48a8c44d17d4cd1a064684b5738..848e1ea5088c6f40ee124b9cab2711e315cadefa 100644 GIT binary patch literal 990 zcmV<410nnX0003AFaQ7nL7IRXyajIvf^2L{Lk99?6A#c5XqY}ze}}VSPYIuEfDQ*j z^C>3+yPVV_Av6F7JOr2(XsN{)^{z8v0yEd92)*fi5W{n@%Nf8hf=d#@)AWPU__`zW z@BpJQn3I+`xzqN7ITWnj$3j_Ffn)gq(s+FHwt|p>lt8O6($5XxTmcjseMb3zH?RSr zOhW)F9yFxI#)y4`FBQ&cpa3O1l|O|03^fokAz)R55}<*Y z5HYw8pbu!s-ameq5yrsR$Hp(?@Z3Ibg$wt52EmA^Fyt`5yy6xGV)E!Q;P{do&xB*H zt>~j*gpxLo|DU3UA)Gto`1`H^%}h{(1GUx$9dX#w6HpDq*r*u-|>G|ylF8iV?B19xaz{7zI zX=04RNyj;356SEz98)?e&jI(4VmY|76g(pgp?>dx*f9V=?G&NN&!wI-=Rg1;1ON?F z02nFf0xAt)Z~P~mLcpw0!b_?HC_dxp0)WQ(p>{riS}<1zLBn!b6nvZ|XEo6d13&j( zAesPkg~`G=2y_tP@E8p~xD7A(jF=DwUVX@~_Mt-|9@5A+RxP>r3Vt&e}GtPa{%jeURf9u^43(s)q{HJ|V8 z_#gOBK&BB6Di~vow1%iYIuItn5bOW|0YLz6CZGnd0C+F}00BV&If;;Xo`41rRqM3}xeclfr%Kt;#18kF(Br6RJ2z4v}#NhcEb?bhoP@ zNP;E`dfCT+aXz?@(IAa@O;_iwdv0d3%C=AUGy MRq);C;DZ40z%LxL@c;k- literal 748 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 diff --git a/samples/h264SampleFrames/frame-0058.h264 b/samples/h264SampleFrames/frame-0058.h264 index 9ba87b50f8d9ba4f395c7f19b237390a3fcf893a..218179209f40d8ac6739bc07d0318821f469fe1a 100644 GIT binary patch literal 813 zcmV+|1Je8e0003AFaQ7nL7Lziyakbe@Q4V3K%;;M>I869@M6VZai0J&Jhyf27~3fS zE+P|bcroxWOwg8}x3+Z5f*;jpd(!wWAch2xMh-y;%0{pv%xnnM;YF~q7TQP&c>zll z))6Yx>`nC z!Y*^<2*^p;5O3T;I2^|lwq}nK87_bD27#b!#Nd{M;AITDL_@4>e1#)y1kn&vMg3?? z6bb=QbAvoXuvm)Dc_s+$9hBh9>9&wPl~K2mp}k~h<+zh6O?s!n`N6E zF)eTR&I$n^E1Er~K{^3c5PaH(1ry}SQDzc&0-2q3A|IcVly?$Ke(roemMfG=-#8Ni zD^_hIG55aUM-_Xha!iL4PqctMYK95BLuqzCn%GIiYHQ`$6K|!pGD`BjbAQKC|Mt-z)~F)1#V!_dsBd zI4OmeVRApIkS)t9~S5yUl8 z#okt>2^aiJQ-n(g#kjWIeO>_Z5GEk;`p+I{*LyK>%(hxCXBPcrX9}0YLyciLL>wz#D83 z0f@ow0?I=$mEe#JK@nIFY0EYtfd~kevo~#o3=f-#>(SNl@E8Id34KiYF)^P=LX`E{ zVe|wq>Hq)%K>!s(Yk+F-CcF>;O6A0oyegL3g%O+_` literal 758 zcmV2$?e+2`vAW{{80|Fl)wO=rQH14DT7)8XU zY?E+ep3>&tzu^irQ~%S`qei{-5&~odfl3GA*LVqlA92VCH`v5&XqR-(Bf0vE>sCsNe}s1N#~^CK5+8vp&z zA+^UsEV_Qs5rWdXU1|~cXS*2!&GcxRq?R7u^0zYr7C3($K>&RYtB_Gwo+tdNzx9K0 z2u63a*4yt156{&AX(kjt2zfIATIfH*ZP~g8%qZT|5Q>YgYxmqR!=?XjOovH?-~Q+j zI`wtwdi8bbi}}Rj!APh8n%cju|86W{vvHE?(`jHjc^wll(DY6wrjEA(pPDgwmpM!V zav{J>24scr|AX=jh7{mWDNhNhsE6r}!gK@`vlYJp4GI7dskiivA_fW^vEyM89c=Wi z-$-F5J}bTI4+olaacT>2*3b9C2@_IDGXiOUtVoeYMAj=9Ifn;n zsSw}79uxb3`~8nKdjs=eApV@cS=M2p*Cud&2@U?Iixqf8mhgqQY>O}jpiEC9z#>SC o@_)k=<~}ZgWVUDfxDp8R(jiI4fA6c5 z1zZ%bLJL2ibikHaDojR)kpJ)#i|!;60R{vR$o~LZ826@t0E6UU0wH6DW4j-9z%rKg z8Cc3k`MVkZ#6 z%k-Tu`@nWENx>A4c3VdOpgJW}wY3t{C%;%;Tyib~8(*{?8#$Ud+K=+U1U&Ct_V7t4 zKyY3mVYT;o6CMOX0*?R$;6PQy(B&IW8cTV-fC6~z{;~r$$$ z1fY=v5)#>S{=a~t%rxem;5W76gcOv~jTp9#g67{-2sc#1#q^1PdHBlU33n-YVB~19 z_F#)>T?za5^8{(f+}t0iG5h_s5R-_sOKV&A-}6|AiN0gslr^yg<&&&+0SDkj zG*p4lh3n8z;K4r63jjaFp6J@2m*)U4-YmQkejykCe>^n+4}mm+m@PyS;ufSZOY;#J z|NK^fIUv`qibMZ#_4umP*U80-}RfWU)r0o!u6V*h@t5K%NC_>^^^Yl1)>p@1s0|rU@h@x(ux-N{kN{3EiwGE|5~GdB zBg4o5cJZijD{Y6tlOPz)C><3@y`o^J!s(YyfKTCYQkg7OAlVf?%Qmm>5`v1dpTD+yaYZrtlQ`Fl#9S zl8?ZO(=0et-OJ$`2r&W#ghv2a=b+n$!ko!If!40f}9DW sJ}80#5UhEQI&?Y$u}gEm2+RvA7I1yuZ~t5WWMkOUN?HH^&kDd6jNvNk=l}o! literal 1122 zcmV-o1fBZ;0003AFaQ7nL7PAtyaj>$z9iTnL9kpf5dZ^$W&E?<5uyM7;vXXdw&f6b z7uNpp03#2$U>_9xvt)yajrhYe7=a?*k(eXDqMg?d0NfPSy+zc|Y%z(ZDmEB!0C5LR zIx&w{i9&P#fB_hp&gdgCZ(A6?3_j5*MWlNR6kh+hgD5#;%+?4fCo`p283n_PGDp`S zB-gbc^uLJ50+uo{dG&j*q#uZ}Gb^jx-~mYB9mhjBWV*ltr~`HZ4h=5wf^*gGWtC8b zma8S{6ObdyE(mwOxQQW1k{`dT|IFEkn;lBR5sHT|nrOhxNXzv}3U9zE zGsnSxr2-qupY{YLY6P_#tYu+m|DSCp0ZY)J;SyBm7hu&`4ac5F@DN8s6_)gH`>v8z zBVnMokms(}gCz_)iq3D9Jf?T(viZQ;6HE#s0l>|OfpI5wnT|j6zJ@P=#HJ97QTzZL z7*2fbnxlrG!ubFHqaP&A>?_H8&mDFEAE2Sb`9WHB_MVthY&CFInprQr1Yjl$4yzPb zC4z50r^vtnKv^gN2oHb(z(xJ}(-9PlVH>TR_zZ-)!CM%Ns(#*k0~cmiynpUC!(MXL zRgs=R5u(8Xru`a34GDx@0zlDF(Q?mv!7qP<@4x>4!SE18K()-bRRV<%VYlM|0H_58 zk(L-B{1b!)%~m6_Ngm8YJ)vR-5{embqb~|J?hFW^NEyNNRH{ZuNv{AV=l}o#K>%(h z&<3vncrX9}0YLyciL?Q$z!>Zt0bs$b0fnxc`_K@}2e6%WMxICi(*K75&dXO#XUjlj3eF#LH_KllMSz8MS% z5@9Mh+&I;lcQ`-DpSqGm;Gp;I2Lgm>3U;bcL3WQOiGncY_o`+d2)tvv+8@#Ae*i1^ zd1!*|ylkw*s0NYU@8v{Dr9kuC6`>U#Pyhe{K>!s(Z2)TUCYQkg79?>20pN-NYyiRP zP_cx`1z)h~uFMFS+Xfjs`~j1b*jKX3NI4ci2w2N%XLXIEzyY#m(3>e$nPvRINFWdd z2?&k=T7^|`Xs_x11Yqev7*&NH@1WoezoH!{Wo{V&H;b-I%`RW!V2{9>BjSi4I1}Ud oIq~NpR0GjkHIXTDQ`Tz2fkAjKCP<9`${PFMwqcXJqlmGw# diff --git a/samples/h264SampleFrames/frame-0060.h264 b/samples/h264SampleFrames/frame-0060.h264 index 9b554f036270266e9ae9da924279da80c0d7e69f..f945ba77b33c87e11c1c2e2108e1bdd7c8fba3b4 100644 GIT binary patch literal 803 zcmV+;1Kj)o0003AFaQ7nL7N~NyakiQf-s0C;l{oj1SbW64hC`P?%{?rvtlt4i~t8f zr2@R+%)Yj-d5Im&J5`BMLUZYS5W{n@QigC2TS%NS@lOt;@pMn~@BpJQOl`}GE-L=e zLZg2={FEh?X%~*^fJ4X6?Ai)a22ler!;3x#1RjAB5i0I9)QTh`&e4a;2;g$I0b+}IKTiP03=8N z2nm3CJ>niKr4koHHrjvyAY=jqIRT=k!XPh6At?tWhye|1Vg@lTbM(jnPrv{`bJ?H) zV}sYn009610|2!W1BBe|1pvAPz0{@1~S-{6I?@DqC`Pcm3K0z0=zf%Rg;c87SvZ-e^Hr-4dcGg^@5Y z;6oZ%qA-$ij%eRRvq-EiQadX5+WW{Dj9oN^FDwEN(MlYgdRgN*2O0nY03ZNLfC?6~ z-UQwgr9&cN=D&da)*?g{hYltH6oXqBWHh~T6g+Nz0x*^N28oC6o|Y&M0YC@Xf;6P= z7R;_>JkI29{tO8MAzPq9b=Pw9{r`X+^Cbm=*28p=fg<< z>l=UoKmtucpC{h|F9J3=6)5cCMtyscn?fRUsRX_dwLc$YTQr=!&;n_Q1s|=#<4zCs z4S!ILoue&}f2gb-wc0iH|IBz;BO6KKL@4HeyW8+T_n=b@hY=1b#&pAgA=m%_0YLz6 zCddY_0C+F}00BV&If=3XtH2g(!9W@e9LGpO7n}yS&1x*&z-f?+tlNc%6U*SB4IN@l z9RLhgNbG<*2Wx&uQE7GL5;{65P$lmCNRACrhYu|iCM66UU^Rje3ELAF3mh0KsJ}GO z@Gk&c-C$Ye<_+ga0nvG2MN2|MP)D?sXtaktNIfGhALsc2a1eps zljKz$KSF)@KHvd(kHSBzO+zTQB%?YD3 z6uq_bpXPpG_}U;FLDkzuP?VYbzzlj9JSYKxEB{%)c4(Z%08s-rby$&C^*tEQHoxlV7z+@93!EX8@@Zg)o_os& zh*|_#f^cw)T4Hb$K%*$L6pQ760DuATqy&uFc6c5I!f(4|4hQMO;){*x@@CTjVPD|< z5d=L#_4wgIca7Hh#k z8VnZ5Apl`{(|?VEpfn3M9d3n61~f$-oM)^74)(AU%iy359b=6Nm<1q6_i6N7FOUJB z@n&1`IOJRS{YWG@gbJgAQ1_(4KpBLHcHV*EB7P=dPxu0HeqMrzPIMw9u-zkAn_2$% z{s8y80?fR@ye4<^z$VdclzM$rP>|GI2~ddt5%3~-%95$sU|bU=>Hq)%K>!s(ZGdX< yCa@p@;4Tpm9*&8gwadyF?%-_Hwl4$GQp+?Y>?Q!lp7T3Dga5#sc-;Pe0JLCz6gR&B diff --git a/samples/h264SampleFrames/frame-0061.h264 b/samples/h264SampleFrames/frame-0061.h264 index 0092a2800dadc1092bcb8e7152267e7c6f56f150..92f77bd080aa233d6bea19c56bd14fd8430c7e45 100644 GIT binary patch literal 1026 zcmV+d1pWH}0003AFaQ7nL7PAtyaj>$-^SKs3}7h00S0DHvBUX*%o#dZzyOuWEiZrv zgi+h96+b9!6*z7C0tC&4UOX-)4cirX zOK8Y2O+N7Xp;J&1R}2$)Xb>W1A?*(Q76!|XA^<3(wWk}0foK2&5I^KBz)9B}U;My8 zHUJ3$gg0uO+X9U$=sHke89vaFJejQ?#$(!u02hg@bE^%DP8c=;i?bH=sP6UwL-=Gw z)UEKGGyb5Xg-xm5B)|6Fq7x=Cn1^#101FH~kPK#AM!`mJ{a4@r&fJp(U{)PvaMxg- z8zcAt&hLNw|Nj2X96o2!IYl$@0w@5|0K(~%T0gH^eS|Q*;FEd$HUKLsqIw7t9lFm%Is&3;_Uw;I~2EEH8Kef4`W0q4nWG5C~NyF>o@;3~v#Z3QfS41#~_351D)7(*B*QXZqWV-!T* zHA>UDz=hmlU)~0Zhq@qLaE;s|`~L9=!ZM?rrXs7LF!tgjA%q20f3^R;-#r_(kNQAE zm=Vb?QlVRbq62J|H;?z=vBlZYR7b$W>{fE2A-_1sqs{ySXQ@fEf9@3AFam78M)$Y> zz!2;J00BV&ZYIzMuK;*30003&06B@Y0jt0kWEcUMP$b|-`+A!*7SJQ#YQoN7zzsqp zQJ`S*L*C$jaz!v=F4%1ZL+1Rhm$Ux`fM^~-paTSF0?6|hjpN(|-jErQn}GlM_-@zM zK0Ky2yNy`{6n^I6?qjbcr-3&RC~zRy0uF1z8v+#8WLe=?ro2Gsf}H|bC}so@BU6X> zhM?Ewur5Tt?X`)jx0Qx05k6wS=zKfR*M|aWfBb@AM8=H{@8uwXghj%!slNNJ@-EE+ wL-;R;T@XI5Mk9gHM`RS^#{^D}75BK9DX0Jd0YLy2LTvzQ@Ft1zJ|}=OC?d|$N&o-= literal 1118 zcmV-k1flx?0003AFaQ7nL7RXYyakDU0RSKcAh3K;!GMc^1)zaft2)%vA?$bnEP#Tc zeZ?4`(L{BB;35PEN<;X0g5;9`tWobf0097ED5DLTG!^1f2>1rr3a1A$U_0&u3g0jQ zAsqB05`1%Hh#~p{9jy-1buuEEmUI}900;ou;ebVCJ{O*!`>zfGj8zS|ofgRVFho+& zaSBkN3|tE~r?SK=6wqS~CQi>1W_X5D33Zwp<2h?dz=i?=euu}HgJJ-;3ktvtdEIaB zss^lwE=@DLZvYB>NXJnX#rxoS_=WRBMI*<+z@_liU~CLP^a=pzWCc*9JQnS!Gs^#~ zpajYdQmWri00S!w5h}6Ss&;2g3~S&FAo)&4+$>Gt1ptM!o*-8WDbUrqFe=}ht$p9% zZbLAkbz7vu%^H>YreFXd1z?eQ0KNyv2(NKS5f}*s6-Pmi2INd;L6IKs&ju1=s6FC& zfor+ui~#odO<@*$3uHlwDm5&30096XyPBx*5IXgB>3a2b=^q0b3jh~@1jPU-vx1W; zaI5PB3RPy=ulU9u90$WfeD-id-|DFI$cwH{$E zAzGnXF+yBA(J!QH6Uz+W*V)VrWef9Ye_lOofijLsz}2{@!u||(+z_mj02P2~vhLCV z!S2igEAK#TdQ^dcFx-MG$tT!z2_>HljHB%wVW3csYYxmf)CU0aU}(d987te~1gZiA zEn3V;Yot($w#mQ%KneI@m688z%nxwL1BorU5dj%VLaxi#_4xB;uc7GxL!m{5Cw5g(NK$xh=CrU4-Gap&06Wjh7{Y7q|4I0*oB zYF7-9xgfVt;_Q#V`OFkji#%t39RJ)9prn{h;LgR!wDO5K;Vas`g{62OHnuO)v7?V4;H6f;q1S0IC2$w3Y>% zBNLTO(>z^Z0q24p4}_V6PzozD7gkVPWiWw6!GkgRP+||fBR3W+$9udEz$xo)@K^I} z_S>EW)g6#b1K#69OFjEJ#i0QJ=V@dRbM;k!&@12AOSPs~zy1S;ky7GCKBA5JjWkX4qd-}nF1)LYIc=0$fU0em@ zy}1=2sQ>+efJD`J9~Fs6(06~VI|>GSkHN*#7fN(u0KjG^V6$WZ(PE2kRXwR0Re~Un zoxkuue|dsPH)MWQq`J-@&LP#~q|_Y+~q$v^+>0Am%ovMoa= zE%X0M9EJb_0z8`lD$lf80Dz*Bd_#pRd4){YhbZ?u;MfK(+*{J27WVZJnK6XKJD9)# zZG{{vV$|-EPyMiDWS9gmKY#!F|BYt=8|Z~d#%4EY0Yn6BU^zxmub1oe@h}6-5K(%; zHtFvq00ZCyzz;r`JY+xtfF5K8oA=+z+W^9eO))-Jx_SSD0&~OzViW|w3@FC?9FsgX z+YJe6AO_C;uOSHba;OJUO)&S%SMG9B;!ECfFalb00BV&ZYJ0UuK;*30003& z06B@a0jt0h;s-!z1^{pff@~4*0X}ho=|6ys`y=~;FxzXP{=#MlfNl{C{tnAfs(oM* z1}|W`h5s#a0AmAf8_ZqG2EcF{P=_$Sv5WWc44X4A6ABxTnD8eT(G`ms6SM)nMIT{0 zmD4iR2-niB);ZvxFStXZxXgI|3B&PXcND{(j&900BV&6+&%*YVZc*uxv0r literal 749 zcmV;+&A0?fGb3H ziJT6^hIM6M2a%ze3_ZFm;&9vd??D){oB-#ZKBMLTzVZ}p2bKcB)nE2@QK9fOL}O1n zM_oVqFaQJvzyLsK03Hh_G={^OUFN8cLC-KCydx=0L$&CYFItE%z>tREhDZSB0FuW7 zj*`Fs-`Vi*-}xkvU*d|O4nis23?P@kojRic1Qf%@H+a(cz%CFEVIWo@CNrY~20E}A z2!hxy<~Q6OFwr}qXN6=@3^Yg(eB*GV{=YzmJ4^d;Vi8YUmdPMw1`_TZ_5XQ=Aa#pT zsjf^wpT{2P0sk_Xz%ALz{Qv-f0T^#ASQV=_#Q?wohU5`mOZ|p0l3C^?L0%ffhEOMP z^pZaYLpc8j7+4S|nxm5LP#98h0ykqqLX&f3Pxpu!#3{=X&y2jIVoQ9p6a_RQF|m?I zNffmJ0D!}acpTs|cw@+L!Ab-mJv#J3X^_~(zzMnl00BV&ZYJmkuK;*30003&06B@e z0jt0h;s-!z1^{pff(!yB^uplJQN|y5{s9`E#N%*dX`?ab`~BEIu$h728-znI;Z|PI z=!f+JaIVS)ZqhHwu7NBUtpJw=?BIzVUr;s!fYO9G=h-lB+u*euj#)SSg!bM>e>)6* zIDytth~50q#JT=nN$h+dEn~?IA-OOE&R@iWe-uCjmjG$Jk#?FgYIf5G!Vpi{MW+>) z|NWtl%T)7lR9$e6fr_RazSe<5B`m@&g8?&S(A%L=ogvJX76*0j?z;bP$QHvs8t7Gc z{5xZ01*W84Ti_#zCR0b=Shb4?{v=g6M6i5&i*3?s@B_qP*r8kke9hhP8z0YLz6Cg29I z0C+F}00BV&If=LdtH2RhPA~u=>;A95|9}I=WF%6RSWZfCYzF|4YYHkXL%I-Q62TyY zRs0?0zrny92l1d`{vzSr?7`V&2F)Tj$9~VRD82xD^;REm-+?s)fHnhwISMs0&3JPi zQ2gqoTDX9V2$x|1ej*dqP9zg1{^gWv5Lym36nL=7kzh?;K#T|ZuYLRbv=9gcJE4TE z0M3;6anMmlXkU2!kR!JOJg`6E4J}Iw2_Gd1DQ_yMkNQmDAzemvc);`t-UV0y00BV& L6+&(RYVZc*27is7 literal 899 zcmV-}1AP1d0003AFaQ7nL7TuDyagWwK!D{(%>}F7Q9Wv23uhQu4Gk%Q08Une%P-*Y zemW}10P@bY$Ftx8Xag;V22mpNqKKRtik*$vv%0sx@OoMrE{}Nl00aO8r5;=Z-MAnS z1wa!76}L_i#NFD9C*%+ZS3`k@?pSi5!A!$1oC*OjV9a1dG6WC+L8ueB%+aFY&v~@K z238lr^d0qU`oIns00=rn=F##BB-2IB-&v8NphDN&=YXIpQGqFyPePXvf-w?1ngNOa zaQTU|$yn{Rzyu+pHKI+l5^;gI6zpUJ_k}70_fC!>gVp0e0|?D{K}H@OxK5JV9|4`z zkO+R31T0w7)}Un&gk+;o1nh4;0tF^pIt5X#u*d*Z5BMSm>SbD`MI04d#$ZB&|23{% zB4_Rqv&_H-Ip>KlNDv@Zz{8**b*P@TFA2lWnuy8`SQsP-5)C%s0hjZM#e$LW+)#QK zD&DK@|Lxi)7$qSJG{D`0h2-#B>JgX#8MeF#6E%Vl61l+*tz>2Z z8Zw+R`!BcvWhe|u%(h@CL5{crX9}0YLyciM#=;z!6wZU;u}&`o91E01pkw zVmR;h6sNxiz;Fo$upvnd&kBKureH7v^;NSF?nr93590tdT1Jm@#ENX$ z?HSC})87?O>&h>HJ??q51#4{b$~6GL)RPADM~5mU@xg=OP2>o`CY`4ot?%8aKp}l1cqVCvNJmh0 z=3w+_&0(ruKV%5#45FYv^`JlbA*h`vVgfQxNkEY$yuka3&zx94|4E4eil%wUzjnHx Z2CNT%Pk}qYs{jB2K>!s(ZvblW2IC7qg{%Mo diff --git a/samples/h264SampleFrames/frame-0064.h264 b/samples/h264SampleFrames/frame-0064.h264 index 0ae69a7e6ca9f2db21d0b81c260a38baaab42e58..36ad2f2d928fd14916456e2da705d590e56a7c82 100644 GIT binary patch literal 1087 zcmV-F1iAdfH8pWo4(M& ze2xF`;qZ?D6@<7{u!fSu)#eh004kc00<(00DyxoKnFMg1O!(jfB=G*004mQ zuYYn6n_qSS%-;9_bg+Y~y6I9nVkh7L&5)5!Ucz$M+GvIY-%N-+6Qu_D33C82TgLe5 zxx^j+FaQXEU>Yo$#0KCKh{fgD77QTo1S2|L|6<*PDWjEwLJ9=tgE|IecU zV^rQD4NlWtKpnKYll}+%Ku&|P38`I@QJ?!*sqN{ZU!MQjpa3Co>DX0E|2Ir8EIC9{ zNq7H%ns5Jy4}|ytg7t5${+c2ntNKDHB>)cS0fuH)IG_L!397mQBg$cl{ir+%0-i3i z$N&TYeUurLZSVxx6P8M(#4iwBTmDpf*z_~BVIzaQWpJEDs(0UfWcHI|W1+tTr3PLf zAck$xxBq#@ap^+tv_fxILE5xj;?=}02*}Hmpyn6N{~P}8>wI>+!zxd6e#cjb|dz2 z>#Tx_X%xT!AOL^>AbtQKnE)D@iP%(M5~np#<_d*?hu^aY06HrH1v+MnA>j}F6R-eF zFe7mL$O?!7oLRy&jz`&l0FwNK1&+EcqL*{bP2J24S9{hejOhH(1??OtTJ{glKs`l8 zvHAb*=nOJuFPxPVaEL7k$c=m-%-o5k%tICAhCJ$rc^l89M85~f&OFOkamjFopui?x zmf&y${tYNp#?_{N0)63S;LS+IW%zh%0F@9Jh15Z06xJYX^AQ-w|BBE9ngqRkVxRlk zzWduVw@F2S4yh%(h=mxISkbfr`Lw9_HX~T z&R}#00fgqv7F4scg4|6oIHgN4*RK~1C4%Hw0`+SGb;z~{1%WyafbcT{R+ycflON-q zWX5rA=s&>ZrU8f@3IqxuyBrAx-CI5)3G~iF3IxDYlDkhRPlVy(h~z0l!^B@E9ScdC z*h}k=3*Ly_@J|A1eT2jWC}2Q%CY5X4IkQMNGVh!VcvLtr4*nx!C2RI`q%ZOE5i9I+ zba{MW@`fCd-U#!s(Zh&g= F2IDLz>CylI literal 1377 zcmV-n1)ll<0003AFaQ7nL7U(jyaitt9!qiHuJFS^P+le30YLZ&5t6$1{`rsqXaG%&15x3x`3MYxnjVDFA2mobXGz0^D~$XWTx&)< z??X}y!Ug{LFkI0SIy4M09$9)SH9$kkBA3O85fp*QOk@RPDDSgEY~ao;UNrn4h$0we zAfk&B$C71G-~nc%#`OxJ^fAVVH)V4WHS zYAZf8?f>RADe)LzS{!FO9KLCz12H2ZH{to}@Bf%PH~;_ZcXbB$m4t03^8FQcGctzjcffVj;h2hBN>648%s5AkJe7eY7!a zD-oGB?R};A5crSej7Rw-4|t*GkYX$H2{cKbUODz*kN{Y~GcJh($cYnJ+>MsOfL9s? zI(R2@C##&7!3ztA0Hg#EunUSNP&j%7%*Fxd>w{2A@@#^G4{0QtOppK& z3v&PffG`312!G%j$e0j)5Q2JEZ0`UdXF1Hq>6!s)h1$R31xkV9h$u;by28%z7!v6R z0pqyM9wu567R%tsXjEuG6Ob}9<1jEBb{d^X8E|bNbUPNu52PTsNx}sqt~+l}WK>n> zw0-~%0}O}W$euJsCmYxQ{{Yl8C%eG55u63F*dIw0W;u#el(+aW0R07rKgtAfnKz!B z5wPC46{ntW09^n?1(GX98`+@Q7wK$<00ID902%>-X!!in_%9FyFu)`V2aYr6h{{fZ zaVp;+o-hoeiDbGnsTWDQzj?3>4u9#PD+q6mrNkNlN;SHL(#xR9!f*fh0t7RZ!%wlh zZ(KF_W*AIJD};)str2+)2k?Yaf%HvqtQr1bAdhkZkq-dyF*Lb`;b;Mb%(h_y(^4crX9}0YLyciM|1=z&mCCz=#H;2NM7b zleVTRQj_}t3o9Wf$sJfnx{74Zy(}mfyLxX=EIMz zMaX+u07?C4>u6zTr7~gn9|~)z#yigfbR7ZUW&nFr;%1!=t9YuPtJPdj407A-3}EI| zEtDLEbZbFS4j2aguZAm*biKYJ2z1Uv3Iqd6!b$#~OhcwBTpXBb2V8hq3s*y-U>1`e zz)y3kKg0Z+B_~e=FeaDSOh7`11P6i&ETsQLm5)R@RC(2ndn83{-~0f`>t3JxBTeCo z9jE{7=TUu zwR_A+QkZwE7Q%$@()fNGje@i@fCt3T^`xj(f5M}>C*#}(02F2kjX7~eK|8h{bNHCtwb{rC7Xkw)Au%^DCbY9Ni+es3QD z0`kT{WuZ*KfFS?8Ct!VT=${DXS3h78fVFTy*qhTz_pd|6>#7v=?y>-@p|K);Fb?@ zN+pQ5p})3*veKA%j<^53F<7mIWgZ?`mZOhI0Km*V`55_uL?6A3a0(cpyg~abr(l5Kv zio5_z8Frl(DaQ8$u`KR8|h!RD`~R{$b(hjBO`|6tkEB01yF(_n=b@f()k| zL7p4|4!{5a0YLz6Ch!KY0C+F}00BV&If=XhtH3d3{|7*L2Ece02_Qn(Fa>R)#TPVs ztS{~8kN;s=2t_{!|AQI$JOhBcd;n0AN^0|IRYi&?@HJk;Fim!fdCFnC00BV&6+&+SYVZc*A62?} literal 946 zcmV;j15Nw@0003AFaQ7nL7D&>yagv=!Qc|~k$wpOE!uJh7s6fKa0=9pC82kyA^uAu zfm)z7$)q?oC=og)S$`lY;6oMIKmq6g1OP#W&CfuAvIp@0^FW9p0UnVT)gM1XefT`! z0r?5fM#jXiZxGzWBTY4KGm8_e4}t(Qf&q{KwYj1d=v;sA;ItqV(3&$bOWa>7{LjXI zHi!n$b#}p2d4hiM3p6fxPyqld=&~3^yZ|>o0097F7Ab^Gt_+QQa!4`>A%iXsYh!Vs zF!&oF05IZ&1KBVHU915*%_{%!5PL2($6OQfk$R{O_+~!pYqp>a#oO}9^oB#v?rhtn80wBkWs@!357%@o#0(H6V zy9H0~0E42yM>QZqdYpu`sDJDZ85@euBxKvaaKHzc40vBJQ<)lOTmI6q&<{xcQT0#v zv4UYjXGnFJD6@0$?lTC)0kZ~Tkcy!e06q*5G3=J5y{o31-UJY=6o(d!dasu%OaV7Q z0003&0B$CL2Co2kFaQ7nK>#_4paHAEF=hV;KzIhgcorUjGa2e7ky+FP-a&8&vsTGWxq1hL1!^3bnwxcA z3!QCTZ|lH$bx|`B?_L+KoM`mE6%g#dLf_69#nchk`_lg^sJ=3LroZ})!>Z2)1^@+> z@@pk~8~*TkU$4y%`0eqPOW!b<7I=gJT8SZl(*NJU2$Lrt;-CBt<5dCY@9^MG5f9=& Uh~PaS0003&02M-L0BZ0C<5-W1r2qf` diff --git a/samples/h264SampleFrames/frame-0066.h264 b/samples/h264SampleFrames/frame-0066.h264 index d1897919efa5ad748fa225930af0bc57c51f2a4c..c71c790759f88e3fcc81ea186051b9c574b9f861 100644 GIT binary patch literal 1349 zcmV-L1-kkG0003AFaQ7nL7U(jyagX%lNoJj00_{WSO6dhDI^dAT}1VtH&<0Uo~C2rPpDrFQ5+U=d0x{q`XM{WCfj>yqoBFlNN@ zi(#w4Xc+veI@5NcG;VMZtEEZ`#DJH_nI-?W?fL+TM09`Us3fq=M4SEh&9oQ`bues$ zn=xF00=i?(L&{zc<@=bYh#A1tCBo|6ZBtPH{kQSMzYJcqF4;tror$2sz#6OG=#TYd zE*1s~k_u_%OVaqLT3C>X&H^)Ax$A;Pa_6G}Y=|=cjXCS<>;n?2HNPbg^Z$E!4qgmF z6*#teZ?#A!Fx00p!1xTLLca~9g+aq@_kr=Lxt1B}!3XmV0RWGfg5Cuy27vgG;Rp#H zStN{Zj*jdB)C5jjz9ujT;;@PU1mzLD(jI^6q3i$<4-+nrL|6d;vrJ2<81MzB3Qb2b zzr8RS#cIY8PP$-P%J@3rz;LPJHb4P`&{r=QGy<+pI7a~d#tOt+dH=WuhA03h4{sMJ z$P_G-^$9=#APX-7xf67h>sPT%M1k!|w(R@y20qg&0 zqZwIX;{^KDk=t19>AeAV9#F1>i(<$|AXKNEi5l~txg3pByJP`+BpVj zGijnB1fTzf4-OiZ-rpK4Y6F;c951XWdb~2^qE>yOJ}eaFh!eR|^&W5=d@@fi>GS{s z0|@{e|L|edA|w!%9Pj6&<#@H90cYrjXXq7Ah7b6d0Z?hd0>86FntOnnzyLrH00aOm z0fWhN-~fU+;ZRYmIJaUwg%4Bg8Q|F{AjfQ3{{YVl~`_B5I}@OXvT z>?)(c*fVwOwnt?V7!pK0pUv#_4z5%PiCr<)U91I@Z07VxhS)kj#u!w*s0pMAJR&vl_m;}M*OqN1M0p;L0 z4$ujsdkx7L=3mx!Qiz((b$ELE@;;mf@-)T#J|p#joWP6*!NNxyfHQKiGkf4Gb0LH& z_e{fvU30b;FCN%0HQzu00BV&6+&-- HYVZc*+_-2N literal 1231 zcmV;=1Tgym0003AFaQ7nL7E^Myagk{4*0P2coeMwz>mMh!_e(gplqf>+rTcHLIQAz z03ab+#xbpHSjIK1|Na0Q02P)1C`h8{Qjn8SuJ2|80d=sH031QLf>+X6m{Y;po7dm~ z=m0>Zp(NmkuD46R@W?@4wF+yUSFb&t37M20^0;ca&wLK}QmB36$KC{6LC+zx%s3#U zfG_bYZc&(Oph$>HNx0_3JwLs`xERdh zw>oF<>Oq1N6Wp3&xxL)=7t;V9_@+CPnLm1{eBEJvp{Hk;fev2{Mh3vd4?v&}hCo#n z1A%VdgS@Z%7cfG6illi*w(tN9>=-IlbG1}XR;!^0k{R!0moS<&~<471{=&ya95GaAHKi< z5UL|b$3~Do>(9&uy$qazagSEqFaT^2)-NYY1lC2k6?PB~xIhp(!2j0V9SA^(p;Rni z1Z{7ySm|+{LmNb2xBz`XFd+`o9~C7kMcQAUI$4Hj>cdHqUrzV|G3kTwrcCvKNP*uv zJwjhRymkc_*7btU^lGPn;NcQgNIq`=0Z#Wlzr`s||Nh9?G8z>+^u7i$!f?2NxX1&% zeR_|IF5bik;Ab+n$ADm`Hsaj#B4hE1l)o~7vj71AG>ZVhlANol6?r%d*-G7GbmD{u ztZPg#M_g2&pkUKlj|@XAT%*SHDYs$CG5i??l0)xNmX6WlcUFhoyH53i5X@;24s(kC z_N>@$v6T==Kll9T&Oo-0U2#9a*EAq-e#d|~0&IW)00BV&ZYGEZuK;*30003&06B@G z0jt0#PXbUJ3>e1S00q0!EK0a`Oa2c4@C4vI3ors*oUr9#01bEoa7>5j{=G>@WO1dKn(m?8OornVq>d%=;lqeh+n_$ZbWGzu*iS4#H z+h)(eNC(wr2pp=%jSz8S&T<_RKx&~7832}TdhPk>6#y#9k84N6?U%zak(!{0z-*c| zua9s0d(Y2%a2NGJ#rQk>V0Z{#PTwFVX^^Lf=YgDD08xCi?>rFr6GVJL1O!s(Xn<<)2IHkBDUJXD diff --git a/samples/h264SampleFrames/frame-0067.h264 b/samples/h264SampleFrames/frame-0067.h264 index 4f208e08eb7e610e86fd2a8296cb8023ba059da1..6c22a2737d4ed7922850f01d54e1300280674a25 100644 GIT binary patch literal 929 zcmV;S177?90003AFaQ7nL7D&>yait{BCr{i!T3X<#|~?QuQzaOjRlZ3@55ubl(S*4ChJUmJ0LM*u-pv>=B;*c= z1_}#@JXkdLger_4@=zFX+|2BOOW?#30+B$-76Azi@NNZe-PZx(-RjVVp%ZMw6|d?k zZ~wR!P&u{BHii-w6%7CWa05cvB~O*7tq+I#CcbDm0~3s!hG-P71PBmiO2wak;a?B{ z2mp)rurM!5kL?13OsOG7gl1c0N9O6TTK41EAMc+SHE^l~_PI81X660sLU7=__L(4N zM3AJYAVQFVNNV+g8EAa+pFe>vymutB#a zf=75RLL>Su0G|iAW}#kSq#nL%HUI(v7A6801Lwcx@R}SAR2G2@c{x;r2~kB6MPK%> z1PxVmvORCmf2Amt1Yj6r0t%n~;|#o4jz(>0nA1je05f0^l{>A|5n}JO{eWN)2!3ph zEOw7G1OjB~CKg!N{p3O+HbXHQM4lhN7Q`5VmW>KHNydSP07I|<00BV&ZYF>RuK;*3 z0003&06B@E0jt1uK&S^HV2c0^cM_ShBLah*3Ix;YgQcJiQXu+21J&a~?`g%nfB|qL z^2%T=0Du<};hL6bus$-?m^J%2*Xs&vAvs{aJPFVw0pM1_Kq5WZd^6iEDYzD_#I{)R zx1jp|P4=Ka;@6r08~Y?5Yv(jRBL#ueX0U<#Yv?dH-vU4#1e56?)NmMUq&v&l3yd5I zrT$+f3{aBFsE-!}CeQM)E9IZ7;S-``132zO@^)Mp(XdKLz~DeQufc{4jr$GhaygJ# z0~+uluqR9n2?4LxBpxUL1$ZSd<^T5~0_&UuUaB(R_!JKWa0)a400BV&6+&nLYVZc* D?2V8a literal 869 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 F2IC0n3Qqt4 literal 939 zcmV;c162F~0003AFaQ7nL7HG1yaksO9)JUYh)@)qjHCbvNCZVMPnqBvl&1iq&Yj6o z&;Wb@TV%+{Y45nfY7462%+*(<00JD}_xpfKr2_~6?RVo?7iNbqoC*OjV8j>@4Cp{1 zSPlGUAh~Fc{cs7u11k^UT>_|ClGXqeE&vcJM()u;CKPeQVmG;&8Vv&)yy6}LfK;Ob z)h@4xFe?V) z6k?S`p$8fc;4w>U55dE)5Ws}uh}Rf2s{myfGn9@mU|zHN=m-j2zI+a|h_u)MHUs_y zU}RG&)hswcYu+;f3I_hHWa`C5=_$L+U{{N6v-XifM&1t)0X)B)PAn9PfCke&E8YJ7 z)?A?7{6XF>U;m&XBjG&Eu5u*h5boW&zqjU$C7IF0MgT`K2Mn;a>Zhmw2jmP#JYcRA zO`#iGjMGctlt_Fg41pMc$j<`+UVx1$)tVb8b~rMBt+A4c2)$k%_i`f|L5L`F+Ca0* zlhlY)ki|V-;M7W6h&14kwC@?C|F{5ZGa8kH#H?31l(ZNB?hs%RTrin24dNvzCy#i< zB2D}pf<#eYh6(rpF>{2(i=>t;Tx2UF5j4QcK%x5-Fv6tgfB_3@z<`;q6eyaO4Z60L zHvxGQ?J<4L-~pZ#0}?GJ2=%JMsQMW|06-a42LePIjPaB=XV3$*2nZbZO4R1v#_4rU9$KOuPv|cra4%5~yj7 zg}4*|@GM76I)KU>APoYEw_wIL_FD(Z#jqmFK!<)ps)GB7|bhy3fb8$Jc?ch|rFAj8vYX952IoZ|oA3D$0}*XIHJ1RRpU zoL@q*BiX_epgBN;QeF`K7?ZC(_yTg1O6Fz^zwQv@@not*XNj(Oe}Om-g9FggnFyM4 zAMPkRgu(BY_1eT&_4qE=>0}1|ZvY-D4RF+GeR__&V{po6`~JM|;pd0oO)sg0JCG~_ zZ*FxX;JwfGr67X{OKBX1m;m@CFTq4OOOTJO)W61zVI7K!s(X@F|*2IE4rozDOO diff --git a/samples/h264SampleFrames/frame-0069.h264 b/samples/h264SampleFrames/frame-0069.h264 index 9040389f95afb2fa2c097cdaf0472c8335118f9c..640eb24dcf693fd5ee4ee13c5d12d42933ad6b9a 100644 GIT binary patch literal 975 zcmV;=12Fsm0003AFaQ7nL7G4syaj>3{+uWt-~!SCfKZR2;3OkyYCT?nIMhlECrA=> zMs`^B4s3t*v=f`>00#yL$!~$|&E*a-xxej@02P5T^%ylBlW^|MDVyJb3PafJVb6{vFWJm~gZ>Z`pjRO|Ez(Ro|7!}1Gr5qzw%_`w1z_vdME|PkK`gN45s561{{b}c zOPku?YhwW*04g&HdFz|HgyJkuV(a)E*NqIm}~1fT!yKxPTGa9|!y;82$T z+yF0thpnZa1r{a=lz02Z5rI#IduP4(uYdsM53JkK%6@eOqQ#?>sY&BM>cLW_Kfl>F zasTj6FIWM6oCY{jRoAR|egFv>h>WK?kVGwLm%>11L2y(AfdQd{xB$B{T-vk$-=Iii z%@j&7zDxV|>;QD3HAb*YAAZweuR@&X26UbOyC+o8mD+dkA#4J6AhDP?5S59luV(;t z05h-&~o+&plTQmxKbC&jLr_Au9@IABBj}B_RcI^-y`o5<&#OF%ggd#cTjQpfqon9OM6c zXV&&?%*RNw-~g<%fnk;{@%{#3-~km}(2lzdzv}HdlWD`3#00-^zz#_4qyekIlLCMq3_!i*U z5Im2dWTV5rB6uaw=kxje{0R^!0oYI^4uTN|Bou_7Ph6G;SOXeJFlzFKTa-Y&tPe~5 z^e8P3vZN2q)6BsY$68D*MV xXhCTL4tG1_zx~_)o(OaK{QiGG0!jS-e?Onk=kxFn3;+NDK>!s(X#i^Q2IJFZy+Hr~ delta 1072 zcmV-01kd}=2e=4-000012`~Tv0YRF88oUL8zEJ;%!Vmyk08L>)a>f?3yp5^xb?AOM&y=HM>D2g#%;rT3Hl=D-9oW`oVI(KU2}fn&ko0P-FW zbpB_E>JtD9#15Vgcuk6D%+FW2#EPU55j*PX?mPyA)>%NH^5sKDFaHJ~{KoElMjzIP z8P10MKu|I8=yV{U}LXv5SL*wyO;Hn!@}8yvx{Pt*m%ZER1G{rSdW z?!*1{;5S6&Wv-$*|8|f7hUoY{=I^=iAi$OuGm-d)sv+Xgl8pH^HGnm59_J%EGVml@hx7Z1#{7U@Z z%-eHfzW@eogq)@9W+_`tK&LGbQO^1emV?4-90Yn?xb}*=PVSRt;cf7SN9!ZF?HSnbO1p2 z2sjijQwc&%`<^9G01yl!0b@`EWyL?eFM|<4Lkt2ypm^gx@e#=E7n0A?i{k)g99yQ- zt;@b#n|{^}Oh_fCS@N6h4@LZ3e`Y!r%xPMY*O|nH|6G2!1ZECMFz# zqpGh+a#sWJhEo9gD%f@nP@fAV;(#5Q&;ei}G`)uK7Jv*dD{Eltb%ziJ&;x$~F_M0p zh6WAZ=8S)i#OdX~?f^n4#)OE;yb>uLxC=K7ERF*%|ALK>CcoZb0DzcK5b&+|>&Z=j ztcrjWbN~PWK>%(hpa!o1crX9}0YLyciKqdqz>@-i9t;}5o}(LP3aXf-KenYm5y-&a zlHeEr|Nr1fFW^uE)&&4Q3Kal7uVh9aUWm|p^|!GczzgP>pg8LwgWv2(PpzJi3H3^t z5B7gUw*MX@z@5~5@BU$z0dlI4AG4=_Heg(4;r{Lqr2Po{CyX88)PL?Lhx7UT{(nCL zL<#_Q6doQh1Q84dIv$84>fSTwp^^9SGCh6YznhRAO6;M#ptvw@oaLPNeU1)a@1a47 zvdo*L28E2e0q$S{k+j+$4_TdhpiK7qfC&cX2Ru8^=kxje{0SU_7{Pq{wwwPTN9`&Q q6dDs0U?SqpEH-Lbrt*@dwuEB=OviJ-JkRHcldl6B25JCm@CM^s+UJ!3 diff --git a/samples/h264SampleFrames/frame-0070.h264 b/samples/h264SampleFrames/frame-0070.h264 index 6ca8047e226ae71fb6d4ddfb5d8ed1bcbeecf46f..79f5f77e71a6ecd31dadece3df8753ddc049530a 100644 GIT binary patch literal 870 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 CHo(^a diff --git a/samples/h264SampleFrames/frame-0071.h264 b/samples/h264SampleFrames/frame-0071.h264 index 52bc211a2bf9e379ed7803b9f575925e6e626be9..1c04be3a8df7654e712333a06cb397b2f39222f2 100644 GIT binary patch literal 1353 zcmV-P1-AMC0003AFaQ7nL7IRXyaj>3|AY{Spa7|aRZB(vf?93%GFkvI0%qt75FV!Q zijk?*Qq6z|>H-{I^m*gu%QN5=gUqx7Oi2m}QUCXGpYy8t2?4G!VG7ddRQ|*t?KU&l z7XD``Pp|-s5`Zb_abN%-05lxm_O-GsEMRd=WB--+-|X#UViO{*U#-62o)ko{_X8}8 zs(;|}eP#d#078ooasPcbVftj-;11IxWO6cT2fzU#xdc*4f3W8kOR)?(qLqishF9;s z(5VAtTeJUR3{~2lWv-0_M*soY04XH{nsi$T9_1V1865n=B{t)#9fatW^uT#2<#cO^ z0dIfa1W3p4h1i$a3)=t)!Bq*G8zvz54N`z3C8f}B!J?wy{m3{`3PwsagruItgwYyZ zPJg@)z;4~1t8pd7r~csZWhQ8gm_H(dsvP_P9N8~fY&JQ`|9sd4x?+IlI;3{{G9joi2{>Iu=$uo7Xu8PrfBw)$ zA7850mSLxp_i%t7uo$o=vT#v8Hh=F2(#I*nU!-81L>>f$IWOH&OAwN>?f+Vs{>tU= zeJKG@0@J|;CiT^!`V?Q~Pw#IK$L9teBDEF3ND$H_naZxpT!8yg-o?)1esK+r%$gHYfp9R+GMuLKlC$QM5U zamX;9GxF)KqDc@$T?RCkln|K!4gb6t4~k1iBvMfM7J=8qzzYV`f(3tOh;{E3fB=9X00;nF$O8wV;P4EA zoN$DiTiq7&-<(I^BxuqrqXaAw4B}?)+$9G{7j0e%R`aaVHUj}VZZ?65Ce5u=#cbqG5_#- zj@gWHmwZbVr*nXZ-ceuP1c`#q;X`Yr^6_7P)$#V*WAFXAh{(bKuT{K%&i^AfcVqsL z9oPs}MyD2s?l{JYp~r*7N68}kPctq9jZG>sD!i4!IFFT@t_l$9;#T3SDN769lFA#x3IK?%;h z2N}v_9CU$J(@DGo)BgVv0003&06B@M0jt1{z_15wNF)L93?d#PP-IG`wc9Rq3MU!~ z2Z@4S1%N&TK_CbC3@NW5qbf_sgYcbk06bo9|NsC0|GE|0n)t`M-DWK zg<>OcG05mud16S;1soWVGJwwc?c?wH;r#x8KcCO%;7C88&*$^`{QiGG08lUh00BV& L6+&tNYVZc*b=GCD literal 1231 zcmV;=1Tgym0003AFaQ7nL7KoCyaj+xAOI6YjiP2q*_Z#o2jFPnjWAslZ0F`@VHI=< zn1H>7fC0cnI0{ZiQUC=c0wR}&i7>(b_RuE$g}vhs|GHXcCyo)|31Fa`pvl&W5?~Gm z0sI7<{f4H+kwT?UU;>B?KCR;xJMs7I z^ne#_FQz^}ED)IoDk34uZ@S6y00;p9nN?KJKLPl|4uLg{^x3nN5azJJ1w9mFsEXwM ztEK$-J6Vv?O!~YWz8Z`Tfq)xTASz^Sbrojr0}Ng&vFJDq5d=~SWj+2j1_^Ok1(-Xz2vU>Ah6SqH zcaV0EL6$)rs~}og7C-<%Fc{t zy_3v=7!qc3-kIWafB@J~9K`CLB2?G~4++Kq1Q1fmk_Qp6xYf4xYj9)?%0-Ztzka~# zJ1|}$BANUDU|=HzH07>vV-_-XZXhKB3A1GFbJo&Sr3EN1kr}(I+Vmd|5N}10j$-|fDY!GGymIWiYKx3 zrlHAv3}In7TtHl81nfS&MdcH1VuSEAnc5-X7%8o|roE(NSk08Z5kQP!03ZgQ0DzKS ztEmxq%`iVZhMk7668+<4rDHtRJQeFG@6NHf-XXzdQ6 z{;gg-Yp3^h*i2?NL@C8-|Jt)))nh6lq5r?0nE&4fG&UKDj0{?|3|Z z-vPhr2LU7Fn96(uqB#={;xi}Zk%3?j0t%jQ0{ICk-gi-`{oq&wpg@Jl1=URpA)ga3 z9`7h}F$$L>5T>$ydlY`riAN9L;vfJ30YLyciL3#uz>dJM2W&`q1BSqH2D}MO&m*8#!&`1jdu!wjJOvv|v)Mfxc-MA(39e|I12m9{`+ic_! ztMzfos}KMG|Np>_Uv!rw1|AbR^1~C=dMJ)e#0Ly7LKZ1eK$l5i=LRf{;wbP8B~Om{ t`+GKK-W>4Ge?Onk=kxF+AJ6CW`TYKWKc9do7ytkPK>!s(YXEBS2IH=%AbJ1* diff --git a/samples/h264SampleFrames/frame-0072.h264 b/samples/h264SampleFrames/frame-0072.h264 index f2860cd1c225a5fe6d2a1b37cc61ce5915fe710a..8f120ceace420fe798a86fdacdb6211f2773ef38 100644 GIT binary patch literal 716 zcmV;-0yF&p0003AFaQ7nL7Jc%yakUiB!nypG4Fw=H{xu~Fb((sATbe}@RQOgV#aOR zW&i;JQt4mcv=D-0mTyPJY z;X$JR|4z=y8|%P^3{WR=7$oo?+57_@xB5Ni14yg@Ocp3A%m}kDu=D^3i*l{Gd{&`%+B9T z#NR0QG=7bM7+<)nEv^}7yoiD`Adco3rw{-F0(c7)6>+fQk!8R3!2S3C|JX2Rzy|pc zTtzVoH)sJQ2Z=nCIDDuFeqQNY>!^?pa2L0fB=9EKm$kP-a3E)fH(ji z(3%~GSPIx#15g@OPsH>M0!}Yx*fB=95&@@IC~uv?15+8u@hzJIlO|L@=l#rAlV5{w^|5q$WLjt$U9Q{j*6o@b{<HtO zpa#z%cmNx0nj3T~GwKg~kvPR6%LW_XTTHsf3?xB=+CnIZYFSW~kt3DjL_N^b@q|NsC0{0QfQT>gJQpU>y>`TYC=Xutpf0YLy2LTZ3&@CM^E9X-bY literal 827 zcmV-B1H}9Q0003AFaQ7nL7Lziyak6Kjwm$v5=<1}0N`JWoy0Aj&EkJc;KWd9I6M`C z;GoC=hB8+4v;vUq71_?#RVryTf50eSj<~cKaK1lPzx~6^00a&OhyVnEF_o!uvcvx1 z4S)(*QhID8D~YyR3pc^yjDdy(9V>!Hn~mjtYrQ~0A1?u<-#>74XRpr?P|1PppdJ9F z%2R|aoCe?t6O5Q)pP|Hc3Sfp`E29smG=I1DC6K?=a`IpE<4LEJg{;7>2;ZU|(6 z1k3;ltSAD+f~ZD6|GdGd3V*F~Eph!}=ieAa9j!x(4K%*cI`e=4N&rzrO&7RbFN^}= z0QM3EVgh427$89kSRn)<1%xbdUvLhDGN=3t2o=!kIBVzu0KEta!;v@p?kEHd5tjE= z1vHPlHxaQS4&cIO_*riL@qnfSk_mXlNQsgO^eK6$02;1G2tY2kAcvEH06;iJ7?GvG zJBKC0fzSaXoI;$jEA;{iHp*TZh(M-+q^t?9a$s&GkKi$!lUG4cIua?|fFW-602mxi zf$ZU_(NJPN7bAEf$uLrgl`5dh?vj%~@nbXrM~Fua4_OejX^tQO5HJ+5u+pK~8P_b} z#;XiqXSwqxel|4>TmYM(0003&0B$C@2Co2Y$P2)D0{|TYA?%L=CBz2KI1q{>4*(e& z%@|DnxT>n7_y48b-{5wjS_8m{Ep;IaYen~2;?xC%q#H?6{0qQ%9{{zXq^}6>;fQPF zuWgO>u3~K_FO#Vo?|f3zG@N;OAlvP!Eu=lw8~E?g54SGOSM_b-|J71^fBFJ(eU>={ zB_EA}BB5{=>4*WJ4D=oqyEbk<@Zd_AGp+gH=k({Zx6cpj#Rs}I6D$*cKz)TFkURt@ z@&3vcAB#nZ{`3XG)ZZ@M|E906|JS~rAH+Za00BV&If|W#r6``o;_-L5qR=d_QN`@YFFzo@3YuSdg`vSBVfK04#eV zJYfX=qeifNYJmUw^Y)TRe5@FM|NsC0@FSid&*$^`{QiGGpU=P+i~s-uK>!s(Yk+F- F2IIA>ZQ}p{ diff --git a/samples/h264SampleFrames/frame-0073.h264 b/samples/h264SampleFrames/frame-0073.h264 index 909e7e7648703f7a6facd6683bffc7cdc0ab8db7..00f8e3645ff57faa28f86a00a231d23fbaf1ff53 100644 GIT binary patch literal 886 zcmV-+1Bv_q0003AFaQ7nL7KoCyakbe@Q4V3K$Cz6>H-{I^m)VO%QN5rE9vPoSN);6 zGlxu&RWC?*5k8m<1nmWqKhJArnTSJH?G=)3$5VL<(Jz54JjwwkB!va2|JWL5{B*Cd zBnGHp!WE^^sojV_z$Z+Nk;uuVfCN~S1D=N(00j*OH~nK`6C$mjtG=(k|7T$MCxsC! zPT*z{eQ*7UFzSj%A1)bxzP+fx0Kf=gVXYtY&V@t`5pKXIyh{}YKzo6U99B&idCwAH zhgEvCkssDT06}B?U<`pM=>cZp)8PZmuK)+gMO>XoC8W1@n_{oth|9Hq-f$EQ`qa8T z=3EKb1#ocde;E)nnJO&8PT(qL70^Z>U#iuXVWz+C{|C~=ImW+O;W(dKn`szj?|cM= zIWOH&OAwN>?f+(UE8Ro)iN;v}1w%%Q?F_CknsKx)g0Aix0>WNbDhwJrxeYV*9|MR>*&+{ckulIiI zulD?alLUM;h-G;E5wWoikyfwP-vGM^HdDfHO%(hum-OHVygoH9}EZ}3_n>0zpOQlQD9;Nz=A-9yzb@zx4VG%>BA}8 z%3)x&KY@S`1K>#_4tO2XQj3>nSo&d^V0003& M02M-O0BZ0C<8CsLg#Z8m literal 910 zcmV;919AKS0003AFaQ7nL7M;?yakiQfp}1Q01iSEB6$>&Gw&C&9`G}OqsZ5**GNsl zhhKmP_DqKnagu-?ZW;28cnAUo``H5rbEcFcf@r-joC*OjVGNiM4Duil%m)555L~oJ ze!ENnGO+#y&?<$QJzxPs-~j@pZt)ZnVMm-gBYT;NbFgDq+)*GX1xheAQ!DUu0 zM{$q_C-{PM8E>-irS-rBG2*$x&$t|Ypn}w$#wY=LJUMU#Zk;?q2ls=5j8dqSAmc&X zhAFLJf%rIeq8JdIQyl9C)mRLp26C9afqO(Z-hhCm%jdxBIrf}2Z2#c3zQ%wSSQvf0}}u|sbMh=7~SSt+9afP;$#B8UJJO!$@V|Nmf^ zFmC=J&lgYsu88*3ku>3I3z7Q#%TZU05utlO2ML5E1X7J3;*{BFbJ+3Oqho95|k9jykZe% zr-ykb(PxH<_y8HvfU*+lC5sms3P{8*FgQ{N56H2G6)8FZ2wLzUCTj)?CZ&UJEo3(V zd%dPFviraWSWpaDw3Z{*FAJl{WdH#Hg;Btf2BSP>4cY%_0on`*9R4cR=H2th_J{%# zfTsx{KxmK?@)|${-2eaqK>%(hzy_}XVx|AU%m)JopaF6B2uX#c@sIxiAW02To;`-d zyY5s+SFhL@fbckw5Vyx^04>^_2ZI2>#GSk>4gi{;Z@&TW{P=tf0C*n&)_Ev!5D!ML zw|xTm0KRmby&wPYx(C7m5Tk~F^(fD$gyKEYyrCKU1GE1O8==Qq(K6(+|Nn*r(*HIF z06Pi@HC~#{i>#FGI6Mfsm3=U5(qxGj=0(}nsF;7CLkt8A7Jv#p0>>Uu#JFAphr?m@Fu{}0sw`8my>pczd{6y z5#_4umP*Uj3>nSo&d^V0003&02M-P0BZ0CB7|o(>X21X2Wd0~Al?p%odS6i%R>m6u z?3@qyqlBjeySjzZ9Aho1YOT}%|M(yYOXJf9lp6iz2IQ=YTFAeDC6hFc?zx2KygrPBEuptC^07In4wFr*sL#Q8$Cu{ng1hPOW45LIG zR{p;YQyGJ@5+QTmU;qdKfB=AC02Tz3ISlm;91u7cQmAzgfD&kW;-e}`U~+&Pguu9y z8{U`2MNG>G@De>>YwP<`U;xtCFDUQ41~wtvkv`00^dIp7It6kUlKm{hKld=Gvp1Ow zgzIb201}~7u&R^(Zj=|69HKMJcmIHzp^#$~SUwdz))_?4&=z@;#{!Vde*gaanUSHl zL!&xFm(YCSa3Kmfk%X`ZE;okb=7>F#V$J2Ka(=*FlsltzRkSSFaAfUQH-QuFw=!CA zf^gCe0B>0v?*$2VN8kTTUSO@_Y| zr#LgDNB-+9)NvV$etqO-A~K4-Ly)!i5G+AETqv_BnYMp;1Gs?G!zmQ@A!A(p0nwu{ zgubRF;-g?*d=*LI%+vORvBo*yEO&GKumHrJU}kC)6~h-U;*{5cDqWYEIDfzjh$d7U@EtH4)#Cx9IK zu2~q)Wxw|TEug_sCJ?*8JZb-#$>@yKcpRG|I(4`Hz`$h0R|x)@@a7^h@&6UD1KI*b z=`o5w_qIRV_qJoCqQC>H%nt~wV{h?&pdWw)RdYld>>_`wwB}n*9KIkW`-T8ltX+2> zNIw8WumAu7K>%(hxCXBPSc?My2xAPq048#9-lH@B|MUi6JWeJBfQ{>0SyL|MXVf95Oc$@CcwxCf#KjkeD+>opTJs9yXpGd!UpVHC;!{x-l6%Q z0?g%keMwv;fD2#UPmkZ|s0=mo4j=IkF|tqBe$2+mdQptyyRGASo)dvI{(nCe0003& Z06B@S0jt0pi~s-uK>!s(Yk+F-2II^IE6xA_ literal 1227 zcmV;+1T^~q0003AFaQ7nL7N~Nyaj@YBNP(g30)I4A3+Esh-gyoZFoh<6FBAs;u8#d zy-WCu3Xm!=U;ujbY)HLnAN!yee8##Y!c#wbn;K{NmHCNc3+soKs$6^iRB^`x5+Pl1 zCFpAvb1UC#A>y$Ugc%kO-{gD|;KPb!JqQnJ6Q*?6Xt9|6RsmE2+W(Pb+dSnOO%|j8{Q5C-3`c5e@yXh)4Qqemq1- z@Ind(OpSeSzre6Nq^00S7LxD#-v9@Y@O#2>-Xp10051?acsb!VDW5YvUiL{{SVdId ztEXVE-6-(mkH4pRKiv-ixw?Q+cBn>Fv8uO_{KoElL>E`iGaZL7nrOhxNX;DHKRsRl z^9s2z+o6@s7<+@89-UBT*4>&*;{+Pm{J`NRwp8r?{lSr6bKSoH-5ZpPT}C1QcMt%E z=%0h`?|A`$-k6-l1`@GzNtG5}fB}<6k&`iWRq$*Q-?ZsOxg@pRumL6LZgJqX8FAr) zOhhm3FvoxXu+@mj5O=YKKkGvlvauPHUb1Wi*M`}Pzz>`*il}a?Uk1SU|GYo~bOjW~WjGbf=L!Q_VLsy;5I6OFmk`Skz_cBUh|fYv@3;Vv z0)tO04|u_0)8Sp+q;RWzSTbsV^?(2*9FeeGs04Kn`70Oz8Ur^0l4e@X0SCZX#CIvk zJ-HVC|8+bD6g7JMy+i%d{$0}_DX=((qT=t9N59tyc00j8WOM*p2w%&XWe-3G7p1k3bvnbYfHr^=Pz1(F`dnbZo$gq|JZ>h>E&p%= z5rs4?Mor+6NbSH`xM5^)8F%OkHb{#9d4L22!hoUzx8tuRHnJ=LP0#=U0YLz6CddY_ z09cCy00?6affHWpf$-U^cQO{g|L>qP0pfAN4mJow5(X>E0s=ui(W<6S!+0&T8ensU zLO4e52Z4|e1LXvnCina>>;eDS{A>am{?l9j&HBnDr35_Amdp@`PZ`c0VV*6(G8$#F zWY`I%{KN4A1!3(SfeU(RGzDn;s%IEZF*bXYAv6d!Q9JlfoHz$BeDI#4(0E9A&PN)= zD5O-4Q>(yO&;l92EOxa3vZlRRgkQECey|Ln5Rhx&l!A%}JU;?#41jnZ9tT_7FEF3v z3rW{LpSs={8_6R3*Xv>Aco@&Ul0l=qJC=YJf2+{=>|0Lc2HqM_M#{d5zhW4<3})tm p5OU{-o)v*K{(nCe0003&06B@W0jt0pi~s-uK>!s(Y=CO;2IF%qA}{~| diff --git a/samples/h264SampleFrames/frame-0075.h264 b/samples/h264SampleFrames/frame-0075.h264 index d2908d8b94166c442d9b2e8557d66a5966328ba1..48e2313368a72300af99f6308d7869d7ec8005af 100644 GIT binary patch literal 901 zcmV;01A6=b0003AFaQ7nL7M;?yah)V2&Y^(7Ox;oY!djM5aR%zZGn!11E5Bwit!+f zSA@^Czy|=wCkAUp1S_?x*$u*=0Z5j=gK5*jsjE|3lm1nxi2JgTf`IY3Mh*f2J{HT}qmv(O zEyXamBFRJl01%EbZX}kuMdV{@hjTWgHxNv9AW!}A8dRg`Wt!4wJwQ7F93_~fL6bXR z08&^uTiK72fBN_>8km*J3ITKsKx!HAD!6c-q3PVf#)-;kk`7w_z2|@qjo}pZTc(eu zWLdJb00aX7WSVZUEeF)QU90cu0IVA;Tl8*4FYN$H`fGk-i(j^;0gWY$j%P}mI{S$b zwr0#`VjyflLqYvvrH&EBn}ihgv*|zDLh$)aR(0>S_mCLGKOSQjmH?=J@TUhWG(;0y zfKf025DEYR07{?&f)V$D6O)rr1WyspAV&c!&jpdd|s{gf-;`edN6J1=+Y z1n?QC#>Dz4c~`;sJ=I8XHTod9d6pXB1d7QRj9b0}UIG%DKYYcoKu_1X7}pTQ;`*Ju z5jP&o`10=;*O~wkG8hLB=i#uiAlHCz)j=OIv?^#OqF5cgtqpw#{KLU$tbQ#41}sBG zyKUpZ|GxHum?Dfih!B&V0EYlWumAu7K>%(hzy_}XPLMPK;3Nq#sY$fZl_*pR6C`6c zr5nwGs1F3-`v4fb`W*h48UXAhzB!x?!mxlsa0GodwWsyA8jtm`Cl}nWMU$DZMEQEqc5Z+0e9oaAXOu9e>i{eu@f<7w$S`|+OuqK!Ew1H#Yw|{Zkm*#L4i literal 947 zcmV;k15Eq?0003AFaQ7nL7PAtyagk|F(IJLTkeWJ;Qxz_mz^BJg(1*vzXg;A%w#~Q zDQQ4v7-kD&A($(LuYzkM493RUK>)qs?w)(%?I`?9jLNyaW zc@#=t!XbVHF_n-U#lQn_0S6$R)5d2BcfasU=F_nZJVYD?zz8r3T8B@%4urf(8p5Xl z3t=%r#hJv#x!{g)$2-Tr^`66I(6M8H&Ikq&03B{-x<6 zXW_vI>Ls1^24J z@IV-pJkT^&Z=SnKJRwv^oD-0-udg5h7!W((!NiJu*ej?2BAfA~zyL=$e-EH=6c`zz zKlxUj2{jy}0Ry~{fGm?hb>7e$j*+RHVp)v6WTHc90=mBHgO!aa}irX<^6#J z3xx$h77>mWJYfcgC;uNQz%#f3bq#t90AfIJWJYLDJ3t&@POmK&F#fC08%Ey$tH2n9 z04!1kI<8MN7Wo&6f#Vl}nkc*;D)yJavB7LRjx( zZ+b8Q5Fh{n0Cj*HJB%YY#0&h)C4Zxg#Kc9hW0003&06B@Y V0jt0pi~s-uK>!s(Z2)TU2ID?;lAZtn diff --git a/samples/h264SampleFrames/frame-0076.h264 b/samples/h264SampleFrames/frame-0076.h264 index 89ea86dda07a21681c6421916633d21353b4e247..6a14a014ad1648112048efa932b08a2da9fc4d2e 100644 GIT binary patch literal 6184 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 O0~Y@8uJ4e6(Z2ygtOC#g literal 1595 zcmV-B2E_RQ0003AFaQ7nL7QM2yahiT954V*2rrahNy=tmznaQGS&Ng4siauvK7>FQ zFTj>0*m#1V0DuI}yn6Y{LaGVz2gGC#PVwXjhI32c00;vNfAHY^J@A1m0e2^#7#PZQ zsOZz$2=Vm8F9OMg5Cy;imjfW;NLXsyf9?Aaau{asPt6gf@F2#F)oMQ^gWp5sQmE6< zgR$QO(~YNSae4p3Pyi5-7~v#g8!7+b`~?`MG)8OX`bNx@E&qT}MF6k}Oh^8`4ch6V z0*C#>K!6|&HY1hQ(oC?~jfP-=?wIh>vBJ;)b-&Od8Lnao*|to7?+swQ!{7l9mfn(W zVSqM*Ode6|{+Gnv2F@245C99Akxj>oKj27Z(P29(z^EQ8AV(@zNxkT5n7rY^|KT6_ z_W8a96xVC4MnC^gR~G!4jlcJsT2BW5xpvHqXXK?FHW+2s~T=Fu(<{9sF= zLAS$HUGf)CJX~))eDdA)Bpc_SWsr02G{l~D6|p@hr93K2h8YB z?0r-T2@!1T7B|=Z#~G_i=I{T(hX5yuG1N|E{pz9L^@J|a(Mad3z<}lO)L?830Ne@y z=wt;b(hCIMy+XFP{fA&wZ;{fUsebSP1OP?j0aUpJYRJ6q+7xTx0frB>=rW0t)c^tj zAhDwpcqg@0_%B6T7d=fnYim#N8AM_W2GzvPgG7X9>9k>h5@FS-02+W5GB&;Z16jL( z!v0F@0R!HV6*hR2{%EuS0stfapd$d6r~5=9JP=`KplMXgmr7xd|6*z!)S)4ET;QLA!|GA>bGhIn>d(N|$=-!SE&+r$P*I1X7%j z!Ka~QJP^`x!B_Eqf%@9!mmZhk#7H$37Z4Q~Z}VmV%DkXDS|4}+&{33`ToNAAbac2YqC6G5@>t6Q-TRQoS@^ ze}I-js(JU)-~QM$tht7nU$w1}^E^R$DzEjKO!YWO|Fyej4hEu4LF=9X0Du^T3O(fw zzKUSn=D?tjVgaBVLBPrJC0|Q2kpUNer1&sBti;DYVHSJFAX5^e)8H&!gr_witKDQY zwH+PE&+YGxQ?LJlBmG62n$)Ff`}AcC6QNVDOWub7rQCSjhBoXuCLch^ERr931!Q^~2V!cx$6Y`5-UP;DOpvEIum1KP8oXshG>`r7 z!K}pESMIo<@L&nL0003&0B$DO2Co1_a5e$pA{@{#0{-quZgd2X&>#Q*hlS^t!}ci! z|L;-_+wng4Ts8mreD{7|15h3S+y{yTC`TXB@H`wAOcS#m(rqv`0nj194VFV_rpWwV`2Q?-v;-ur~bX*PS}_Ok6b_9&?q`v%wzB1Ln2^g z4?Ae0*5{I10hm0d^Jye4VeP@d68WTv+fNSgHUZdRdR4h+Z_nHg#uh&<^LTZTM9ki0oB+w3w@*q tSZf{m)F0=EU`{`u&%jl{0003&06B@a0jt0pi~s-uK>!s(ZGdX<2IGL=>a73( diff --git a/samples/h264SampleFrames/frame-0077.h264 b/samples/h264SampleFrames/frame-0077.h264 index 3976a110c5f3299f471ae27e53f45b6e00f05b04..4e1776bf35587dd05fc7c0aa7ee067a6ddea5d9d 100644 GIT binary patch literal 1718 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 diff --git a/samples/h264SampleFrames/frame-0078.h264 b/samples/h264SampleFrames/frame-0078.h264 index 3bc42125c7a356de06c6b3023162a8e01106458c..a5f58329dba92ae9c1a92e0a73727d9d1def3b1f 100644 GIT binary patch literal 1008 zcmVlfCXS3Fs*YR1STo~6$u6MTD5e7IHq`sZ1I0e}#~!&*N+bSgm67VH8yFC0wb zOdSwUu|sfn-~rRN(}D$lJ2*)@*hINvqtXKmQJW|wnT0qui=)JU|Kqe2rdoWL8vP0$@>W}$C)?GMnRdn$i@apXTbusvab0KiSBx6gfb zY!DB%z+uzUnJO&8PViGOu7WW7{Z_QI4>kXH_&$~?&Jz721mYmIHqtSlmiP$>a$mZ_ zmLVl&+y2o28V!7kOaB%k^rQtq3r_?Xi`Q2mxD)&%w9$5o`&R}XBxe+AAJXh(#i5_KAf2se}wW=C;%o424IMP5y*hz>0Mup?&B|?yW(-yk6k(A7qra^2Wh_TfatK9KY{$P09wcj7UyQ75A$IYQ;tyd zG185>!*VVwTUdqv`v5W3Qc9xS-YNS1-wnCDUVr~G0)t=fJ&}F*Z^#zG9}9FVJZ>AY zvI5gq{I|eI5ZO&1dSccrC-~JQ&Jiph9^%_@n!Et<7&a(rK5zRE90YvL{Xj+4NGdEB z|LVy6)UN~nV~2sMb@VWln!o@6fJ{HWu!<|k;b$`MP_ppg2zCGf0YLz6CXfcN0Klvc z0C+GUhX;TpWwamlqP+pum>dA?Fx(~cwlv4UI%_dI{$LPy`cLRx9xqfM*NOZ{!#RJ= z{boYrHKzj$e{N}!V?X*ny9d~Q1K;_9_vheFk~1h;0E+LqbPJu-Cg*SO0fE5Q>@~K& zP<|0r)o&q5Ue~!Mn+@?WPos-Mg#tmGTV%=oH~0fnWDNPDTme)U@+1s~v)Mcnz?!f- z0pNHfsuMhM&b9{sPagCQr-4bKeEA~aI@hcZy{E~6`LNEY@8tuH!{>ru0&tJwKc9e8 eU;qFCK>#_4qyekI8;k$|0YLy2LTLbM@CM^3;>OJY literal 1294 zcmV+p1@Za-0003AFaQ7nL7Si&yajI*8sh@vRx}D?;HQk3*y+8eQeEQrSBPQo_KW5) zFm3UXz=Ws(8F<1{mb`ZCiv+3<8Z_`2 z;ib*h7w@H}P&8HfYtEet04vzLJYu7jK=r5yUAr#<01zEF@&SSVZM9fTbqkXDz@QTb z5Xpf6&mjO|78}kPUpjI>%XOmw0RS;jYQQeQ%90bCzyLr|Z~zDeXm9m37$CtygD>xB z#zjMr2silC3V@&j;+O(k755_T55QIyq`1TmLeda+p|XFTgA)6|0S1xekU&XFK@x?h z%u@KlKm)241wH^Tm2Bh$pWX)ohB0--6(mR@s8M4ihu}Cr*#e9&6~jn2CbGZ`Qvt|Z zna~L0J-+e)Kot2dRsq;7sUjc%AXWfN;3zQdNeWNV^G^v=;kY4S8okJLXT{|8p5@~h z1vE5?F`6J?!Kz_0mx9TH76C>;!3-pElf!TzU?jS54g&!0Y0dOD zm)&sK*Mg=GxI*4x1)AVSLudfFAsi##I=DhQFsjGKAn+o5)IcX(0v&Ntus8$o?bK3u z77NB(aF4p{6w+XxCjlEHx>H30pQ>c!Ls7*KCG@hy^HLIQWk&=J%IA=flObm*mg zcq~+frxSVke?URSf|2z{4x9iMOm-&M{V%fOj<#^5T8>EBUQrIhK0`T2QcDzPL|ENV zcFD#;nerXDgy3hnMT4{!#kDs7;=thX0Kyb#a92vG=+u`%UnzVNi4TOqz##>Jk)8tp z3aABfq+BQ)J1q`{FZQ#L=A%-t-{1Fg5RQm2;RT%X!bzC0?xJ$qr!DUH11L%)gN3|o z8mzdDfBnD!+z^Mg;4CGBdcqMP8~^SEC@a`3eE3WGj!%zc-Y|xE-Ppp68C~=RmiPby z0B2$VFJL_JBZa|pa8yju!Y~xJ(Z&J<;Q#>!RkTJK?TZfdnT!6ygKz+@b`GIq9Ys+hmR`>;urWyjDU%z=Z1dZ5OW8 zsxtNK?}3CG{6lu;aE?eRuYb+`Wz$d|3GXW77D5Y_}*MaIG>At-h3u!KRTZi z4(0LeK$;XFP-qe7CT|j(&ej=f1PU-XlTBP>SO5qCet`b?61F;70+1+{p4(3iz?xqu zB!%+`9vXne-P7Oi`zx9}5(G2X-WAhvETO7dGg~}rc7{Vcv@$T+R*?5K`mnk?R9rU*e>|0qbC>WB0rUHX+-Q ze#~QZAMpV?1#%aX`y`{k_b{llJDE$5w$&gN3Y&#QzRl8t^23xyB)5O~30$QtV1eU3 z8$1x_fPMuOm=8ioVo0+;}nb0%Vs{`e7so*bs% z=e`7t4&cT27vBFq-GB^~Ca~8FTkqOzHRw~E;Lfoh`>3-me^|$m<0K_(;4KSy% z0$-Sj$N%EC0DC~udica2``bRZ?`+4(MSur|SwZ0yY;O!700^q)h&9+m|5s_unWqlK z1vd-;$RfKxujTlEZ_Z!vJ^{cEz;qTM z2KO=p34^>~2`%yO&x<@V-5_DG%EoW4MZhqE)zzE&@_&!|a3IY?)bJ)Xp$GJM6P{S8 zO2Y~{Ne|>Q-*_g2Ijj>v7*kwK68%#`ffrHGz#rYO)CU!8A#oiIw(b|Ff;baP_#Oc5 zf#42;fgpy=W8WWP4+J8-EvyHc?7*kLUM~xI)z`;Us=)ty0cC#uehUG6pafwRoix9p zFNAva>H;RPHZA-Q@GuYw?mIlU{>5A955B6>2v76DE(GBp#D6~k&p-eG0YLyciKYRo Tz#EJJ00BV&6+&r%YVZc*!=05I literal 953 zcmV;q14jG+0003AFaQ7nL7TuDyaj>$%;xR^hw&l6073>&4I`*AUV#Jw%PBj8R*C?S z3Z;lH9oU!t&@gn^VSfq0=Mw8mFa4pT;16KC%$k6*GmiboMnD0P;)og}QZ=`+kVVgw z#{ooR3M>E_5Ih3j9)gw>i#J0y@U)(kmQ7wTJ2g zAe(!uc!%%j25+s~`~C0@(YeU{st||$+CTvW=-3xn#<;`az?@DZ#5TdPEmgc`fB}h- zk{fkpXMY1AYbWT5RFIP1MhpNFT7p{1J;xvWPX-M!PyI{~@4wm`u?c1f5$$1T`$HbH zF&$G0X*L3D!zX7YBeo`Q@&F718884atT-4JWeD_0fXzGV^u=d5hIml`JA+IKHA;n< zm|2ogFMtFafB-(BrM41fSYW}tc*Y~Sm75(^pN0DuMrI?25}-53vietvPlQiW*M z7J@9A8OcyTJir10frKDbfPcXs-`ax!1bD#&M%^pbBR3K&?Tn)At@@p~gmIt(APXa* zcMPg%I!XJ?=@2Om)>h>6Iy9oE8>E`a?t^(MT!i0w5YXi4T`kM4*Si!S~18*|zY00Dy#0Y)Ou(pTQ$C zygB9o0q_8zJp8aAe}Nng05)%wiXt8mTNsyskU>S+gB>cUeCSbogYyU{K&1uaLf5Bj zB2WOEpa1{?K>%(h@CL5{m@E!JcrZ%9Pyv8Fha-tE{U!ec@Eic_2SH+hhuFr#kT;J$ zMXMEMyz#kT@G)UpJ8obJ=u=udcmD6|QE)n8zTF~P-NII0&->gZkSPmUEY=_L;O}`* z(9hRi1nH2dBO-jqwUh%ng42)hyjh?Df||yJ4lI!3VbJCJt87qeVr++q51F-q)Q2n} z9JQk$XY5;=TAK^hz2rCDDrTa~x0>U_IJll{08rma5 zG)CAE$Y|OE!{xTXH>?LU6@^9U`~NIwmfJm(J$-pR8X<@C{y^d9hVUl{{v-ML26_Mh b0YLyciM#=;z#EJJ00BV&6+&+SYVZc**Vd*k diff --git a/samples/h264SampleFrames/frame-0080.h264 b/samples/h264SampleFrames/frame-0080.h264 index c19fd89b2f3128e3d8363feb2fbb023dd791b907..ac620363609a5d32650c265673a8cf502a3ce1b5 100644 GIT binary patch literal 978 zcmV;@11K{sf`{az=)mCqE*>AX0V{(2C>Fo~6bp&)hao|rU{N6a=LMg5 zAS*+*pdPS$$%jyPYe75jho!B~rGANV}BT8AE>I|4A%L%zB|06-7`1OO^%0YghX3C6(@2`|Tq@BmGK z@IKhuX)7;9lKub>@q~Gc-ZYI|<|oYMB768BfDw*Pfri(g$p{nei3p8I&3!-hx8_O< z1G4un;7X?%rCDr08Nm9aJ_aJ9(XGPLtoS*XJ|zHi~U7l?WJf->;IT|dLtW2 z;e@F6000C4Vg2n3VUR(T%(hpa!o2z7viB1e-}V+DWzl`~V#T zID|1~nz98Ts<AOIaQ0I907I}dQuZq9mhWs#b_h(=r0PrpswNB<~ z;KE#(7@hP0m=mCQ1E8(E_DTsw6COnXX@z>m009~kOUyZj{p`%x->FsILk~)DsG!n= zH929wAEY>yoEbb3|0jYx3AsfAA;1L8K!uEewiB9NPYL><9zT2b@C2zyW70np^1&_D(dV2+ud#fZweScq71_aRJX5-urgG zbf6v!G6VyF^fs5+jWeJu&R6;2cn7`!00BV&Ifj0150n{)-It5iRNzy?@FN5p#34&0iw!DA zSOq{osS*=CsMNZE16@D`3bMq{x~rT3g3Kg^?`Qx500Xj0(75pO0>AzC1Kh#@>x4iU z6=?s@+!znU9_HlffV#-XaI8L5G%AJ@L>wIiC{$9aSUaNh*WMeD0ftU?%|=t(Zbg^@ z)BrMs@@XF&Q=R?d5e8;bic^Z_JAe~(0003&0B$Du2Co6W6PN%I8Icj0nGqS6|L_2D z1th^rB21bs8fck34}fqM6o4qSM#=deQE0=wC!Htg5eM;12;)oW0Qe>0z}WzK2!2dd zq@(2L-An&`)1HKt4a)^usqef5} z{jfx3!Hp~4rT!>{F+wDp*heCY78twCgeHl^1OgjnK23nrZr}t5Do?G|-%n39RQRLS z;nS3M{0?|;0(Ha%JY`zVG1~bk90$R_kdOl~0Q3aYe~7cjIBs`O diff --git a/samples/h264SampleFrames/frame-0081.h264 b/samples/h264SampleFrames/frame-0081.h264 index e995ea180c7949f6be94f53f24c1681cd53c84ed..2cb3185c1d1218b30faae51e82f8e8235ce87069 100644 GIT binary patch literal 1368 zcmV-e1*iG|0003AFaQ7nL7Jc%yai_{BDQuiLJU#(05fQ;$I-H`+@m3i%gVoZ(^YiJ zUjz{-Xnr+|5zyw%n;?@cmM!^AcXS5K2t+VjFg@Kpg&wJ)2+7wz!5Cp5E=9`pztHCqMjuv z^u8(ei z69`2prZ^se&SpEPHkKSfN8bMcA@G#`%LE}1O10Mk(rIQJ(;ZsVg{1^ae027jk4ku{!a-ZEtJfa*M z_;5i!aezX^`yNnD6q~O^P znCXA~4?!LlV}z2_?%&(MZO|gxebG1foaCZ9jL zdk!J{eeg|$jsd@+MuvaTeaF)(ldjj@0gngP2Dm&2uH!HN_>3W8`~R_VspTtA$7O;D z7!LWq2H2c0@U9p;0KXAVfkVk|k>Eo>2k|iSSXJ;e0uMo<|GXf3%gkTGhQiTDfCM^B z-h_&~!IMr??IDUScVfWBySb05w<=P^pirO#Ofdv<(}i#B!he00ROA z762X73Y5!-%F6{^Z+`#U@M>JBQ$o!T(_+9!Hz_1+Tg(FW^7iDY#$*Ad1+J?0!GM5bOW|0YLz6Ca4Cl0Urb4 z90h_5Cd0MUE~8iCCAp@x%gQx@MHzsd1MnLKU;_I7h{GZO<|z1Xp7cOM4}cDddZvx_ zo+R*a0IY{b`G16}+1!8kf&Ij9qS*)bJVpTj>zqusdkYPoYZyMgd@o>sd5C3F1O3tB z`*?qn1MvQ3S64YgU=+@tiLZbB{d_^v*CPjkH$s9yTyg}7bIGdV{&dy*UU!?|Kh}kn z`?C+M#CbG(l)gt*lwZSf_rqcFdA_8@3X=+9I=UwhSU#_4ssXFO8;k$|0YLy2LTZ3&@CM@*cyH7I literal 1232 zcmV;>1TXsl0003AFaQ7nL7D&>yaj+xC;$)y6oN@0k_aS%Ng$FxfC~a}ERNC8wfxj_ zJ^$usCl#2F1}g~w1Arhb7AD~juZ1SSLc%O+HUk2-AZj+v=a>+LmbVTplO)qHVV(v7 zU!|6zTJW++JOqF6BVd#^*oxgN-vFQzwgLprc~yn)$3O2dl%pE~Yh3{tBu^HB@ezL^ zog+^==il!b+@j*RpK1s@hzvMjU>F4ZwFrv*e%8Oh0N`PcB=pqMftnFcqyKp5GnQ=% z6*-qN)7x#OeHoU%U|dG8_Wlw85C&(;fjFO75S#co06RbvBY>ck%Lck3C2_h)00aas z=71jILTLLN03?CY>C(TOKful(kBn=oiq=hr0APB)J4l{yxsHE09TcOU5SPu6)!^oF zI-#QrQXBXL0y-UpkIZh#HJ~kKWFk74!H}!(006{OgEE2fIV*Qy(9|aCC^FA9LPSfQ zY@d7pfC3k+LOn0ZepQ>1-u~|C{_qXZ$K@0ewrNLrTEN1BCwN=aYmR^a_t%2)OaTFq zoK89LeWtjAmKlNQY841otO)y$gh;==V9X0LGLM}s8h(4;2|+@D;wz6X`FZ>R1_H`R zTEHOoT^hbSC@iBE28V^ad@Ohks5l2FHCXk{z1zZ5U;yEU!jf8`dgX-{xnckAupz#! zWWhe?WB>W2UnUs8WPkzyW;IKLmt3yQEC3t1Y;v8sWii+Deiv*d@vBxaPR;%RdNIS4GLfU90d>e7H4j?ty+Km zk+NhP6}t4kAapGYhzpGS*lNAU<{PBB0r(8!YATxpiV*1qwdO=-aGN=LGJ!FG0DwDq z0|QGTchoNSmVm4~D&l?h!a@M`jd{lm=>)^TF_M*DkCEf_UGMhQ(X zdW^D%JSiRD)Ymd_9?P^M2!>Q;E?U<9>^2QvGUTR@{rkY)V{Ie%SWoa^3Az9P0YLz6 zCV&R70Urb490i6jBiseI({?iZLd1m@RIPIHMvefH_;@z?fSmkR0Dxw)$Or%U00ZOV zZcAzJFdSbm^<+oyfO7^U%+^e;9`h2hXg~VkQC>smgEMb|f%`rWKWzSU_Km(9cz{Vf_3w$H%OtVrnz>InT~4(|{DAQv>cY0uy4#)USvCS(8mJR~Z#vReQ5NLkP_ z#t|`AP{~4n4-gSf1PIFu&i(}02mm??2@ik(fX4s=>0k~}oNZ?Lfq&n4VZ64Q_6IM` zxNi1%qs}mcRPu}Kfj&5~eVqqa@9(KGLZRvnqKLRdp~sDU4)dS@tr}MK9=rI4N#)X2 zSMT5(+LD#Ay>nZ?1ONP}G$n-Sz#6yAa!#Vf|!T#_4paHAE8;k$|0YLy2LTCVL@CM`5w=L8F diff --git a/samples/h264SampleFrames/frame-0082.h264 b/samples/h264SampleFrames/frame-0082.h264 index fb0d8725a03863f24688febcd5d2e4cc072a99d4..0b53bd38c041fe3e24c7a34d8510405f07aeb368 100644 GIT binary patch literal 888 zcmZQzU|{4l01}R~4oK}`l^5gal3kO*|F@xiAM2m}ERP?Y(cxlLIM2YsX0*F*ntnci z#NFTdXT;_+BnI~^_upP8z{UK-xp&p((EKa^e=rCuNv~5BJom=^LBo}eJLVRI%x_aa z^?>!E_bcOx%q#1EJ2tRPDiUMZIYD6JgQNd%L@tovscd}^Fz;#`=i?T3cB5&JA1%K9 zfpJ@_i`c#X`Xqi&3&kTME9^fA-{WK0#QA~IAY#E=fndJLnJ*Z4*X|6v71!A3{zqG= zO~6$4PJ{?+r)yz~!>s!M7uXn@mg`LXbFsOZMP)-q@qw9z%ssVdS`!aGo!0RA`SL|2 zy*g(ziu#N9u`PJ|_u8yaOl#jhaWb6ArpRaMBErDLQpVcFcjLOmN}K<;*&-acf4~2~ z|3k8i9E0{o!yR2kQ}Qk_d2qN2NFAP{vtnP?vk$%uyj&g$1z!{witKtIae;w_$$`N^ zO@ZOVn(D&}4Gaw)3>-{vA{Y~e?Jqtpuza|7JHsv`VdsWdEPSU9u59>muQPHZv%vp_ zHVjIuX9-?cIL*U;zE3eMx475JTeTr^A0f_Gfh0yC!n=|j}nLTCW~d3p&kAF_wR0G5)tgUagdpXgH8UP zjpiwVD-7)lpa^HkQ`^9{p8bL~>z{oQ({Fq--7U4>iurAl{r>|3*=rf)w)M9^n&2w6Sy&^kX~L}gaTRy| z)!WZM|NQgMKTyVp>V*y+lE!Vic@vpE)&!~PoIN&4xcz|RD(1KC^&gmo-6q^#t!+_% zO2d->s`f6H{J823jB;Dt*#5CD|DdtA--Jh5bxv>D^A?1OP@@mN`oz~@JMs0;W%WPz zR|YgJiZ-a9A^KgmDZ1kR+#mlt#TlJr7&BaErEXcII)SCGBYVa@F_jZ$rXglp^?~g%0D2#zy8r+H literal 948 zcmZQzU|{4l01}R~6r}dB%1cN&rI~TKGFcvRKkT?*N^`@3c?YNc@R_78npgLN?HT7k zV+n>Qewq%=MSl`62>ecNon_d3-X+rF=fUODG7<)N7M);rJI;Tf*XUz#rvh(rZ~u*b zERz!&pJXsR&|0)US>%%?%YvQTR`rl>T0Q zdrR~G9>#t)VXw>woD2$+99b3H4jd3z;bFI7nq17iAGz-N^-Sd~*5@Q;H~p7ybKKy? zppzhZtYL?XZt;x8#Xh_TMEt6Ma!>uNT>rg6jKkk{mFR;Tw|XmE%d;0S-OFP<7^G&z zxT|uOA_I2=BlFU)j7*}<7osLE@R&c}=0saL^TrvQ9GkxB2tS`VqvKTZN*1SU{Q`HI zluxSPNaj?X$K$s!dr`*I)4hMrw%I*N4pB6od!v8B0m(VZ2ln$gwX8JJU=V1{WEc3j z_G?nN-K#syY>E%I9j~f0*!NPfT>N`OqRd3=g-#wZf`3+j5x&46ATWht*@>e6aV#>M z+jV9ZJ!*Yp=cg3-U}XWLOe*#rjGWcEq#WF*l zS_j*D_6ydG2O^v$IXD>fqYI<=zdQUZX7Ncr^#ajl3{|WXm~1%buWVUr$GurCSakRM zT^;}7;E&t^2gVHn&JC=yvdy-vj>%!LxLalZD(|UI#*P<1Yc8KWBElS%JY~|)_+HJ1 z0^JR1f4{i6{Qq-sUupf{naB24)#v}L*{HwqN!m8!xjzra%-`JdWq+_7JL7}2Z3+U< z9{gZomQz}<)UY&7Enq)W>{t1kPtQO9{PVBge*SqFqxmiuFCWVqM-#t~hfTQ^1^$0^ zHZuMu|JAAB27}|*`{n;XC>j|#=Pe5>_&+5eiDOE}6Xo>|`9Zcm+C}qaUobvhnxfQR z(fsS%f&bk%KDCH6Y1lsNQaM+#2gMSgZ6B)kv^DC?_V>F}zxQXo)-C~&Ge87;uF-&Rr1Nqhp!LHS9Klm8r^ vR5GFA6m$JNX}BlgjAnH2fnghLZflj)t(;=DNHe0&T!`$Cb26# zrD~^&3k8_!S>#?e%}I$he!>1ha`8)zXWxo+7#=6hcxU|4ZQ~PT29}5^42!-rJrGl2 z_WrkVBjYBm0|v}Oee0Y5a_r&w{qzJ|iJU3J6{v9&q$l z|J$aMB9hi|M}gtPb(t%S`#VwW#=J~i{- zKg;$;E)F4&P9_zd`h(5y95UQ)R<4O6W$x7L~pO`6dbUxUyk3rDY;)K)R zL|z`ojSV*qoqQ+#jR@#BWAQzz^I)stXO^fGqnQ_;?Cq%kyMeJa)ibAC@lWyB-(R9m zJkwiwnE&%0`}3a_G)!;b{dN3rZr%My43n9qS?2ORX{tyUT*+LTy3%fY4bw9Y=?xp= z-o8nQSpHGrRDp|^xc`sKWzyjdj2k*c`^5!M%jS#O$oy;zeZwp~GeJwG<^Qi!Y5z>R ze%OEGd$2{T<8+yUs!&$7y;)lFgMa!R9}_r&PP2Y|bk}IsjRQwyG8mrCvAV(-;J{G^ zO0W!hYCG80v$y`?XDB=1z<3});h}ib3W1r5b1du@7^dD&Wc;FZfhjeGZJGZJt`wt& zGT&U2hurIa?Z5i;o`dZ{_7C;?y~!*Allpht9H=m_sPE7}F?Cvghu`Bb)9-%V&L7)w zqU0jm<@^8P;D?R=3pXYPUZw??buzCuGsx$?ZD{8cRcg8XuFGKAo?E*r6i@%sm(Z|z zTx`T}D1F(%_{slfHF#yPtSwxh_-=Y&l8%~;# z&S39nWMFGz+ry;vqAl0{jDgFx_HIV&PY?bdUHEf;U(V8*z7Hji_`Lo7%*O4tPC(+C z@cySCd7h>eN{CcW;FO!8yl&67%EX7;q7~#n>o^-{TxHxp=g$Xs3~T0}Kll>GUbq7o c0>FgXhA(^?~g%02nU#WB>pF literal 982 zcmZQzU|{4l01}R~9HjQJPCn9D5s<~eq0oM&-$~a%eVWgU%LkI%W}1hbc+MTNAY=6h zhV>~)I_d5j8>FI}#q)F@C@?WEuX8Z4Kf7%;XWzo2bfHoc2VsH9;Vv@_#NX#O+B%sr zDxW?h&AHmTX=NS*$HD`9*R1GLl~>^4W%$15VsCf5+sBoZ_ij!5iWJzWIT? z<}nk=*}v8te`2;kVi}LK;IkXQw4XOh=ucnmAR3-BVUBD?PlB+%hF|WljXob3XE-02 z`t_yD5})Z@bq|hn{;po_ai+@EBjP{b1@-BlJC8O^3}A>fyfG{K$sX=5!JL;KTV*D1 z$_tck(sQ=%TPofy_|E-*`0sgsMm*;yygj1MDECy1??SZM)!Y9Y8!H+NTBT$}FRijL zRlN{?DtUt}BV*3d`~wUej1x2%`TgE}Qa^ey`Os~jf@f?>Qbf7D4gFu?X`Km6R@T>bi)Gl-2E!~u%>bm;SgFB&GL7!S)sy8qwFzK#H zDa!KDs7;);X&>h~L@-)us1Mh0Zg-lz%|A&Kr{M=tU3zHU@F{m70@MU`& zn*jIfN%En43_4`EdOVh2zQ=#NPjTr#?c77|Qfk_~ccM2~o}D+f(fY;op!EidpBp&( zuYT)jIWaRZqMNIAg0II3H~U)qkgA!xnGN#i#r&(cpMU=O=bwLIj2|{fCa6A8UYf_E zef#^*;~f&kv*vprl(t(dF8`M?E7g3(|8E^q0A1@_*fqZML~8G-;~+*AL&NR)*T~ se?E+EJ;)vG%aPmzci5jlj1C9DabwxJgmLu&=^ijg)G3o8>jT?k05qV>S^xk5 diff --git a/samples/h264SampleFrames/frame-0084.h264 b/samples/h264SampleFrames/frame-0084.h264 index 5682468f8951f31bb54089884e5369d7c73dd5e0..3db69efb61057f7cbdbf10be686c263e2ec13d05 100644 GIT binary patch literal 1161 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 literal 870 zcmV-s1DX5)0003AFaQ7nL7IRXyakbeASvKO9vUzJ!%$-UqJRM804PCulv*-90rkXo ze(``1KoGSLpL`t%_>wk-P5>6dAwtENf@<9GLbQV!zyLFa zzyOCnV3Q+gLK8}YMSy{oAl^6B|3@#KNLsC_cz!NadJ*pI=rbSaZ5R3o?j8I`#`Z$2`La&K{&}P_DB?Mwn#Wt9n0MIDP zEXA*hfB=AiTr5C|o?Ca&L?#BmX|RI8y-x&XCgt~K;{2+d2Oc+`0uZ2-5{0a?t~|+I zU=;v#u~r{nto1s80Me)cD0Ub!ebq-+01!OGOkVbY03Zk*l6Hb);cXtJQTE1rm;v7k zfE)T>9DNn`5Lj2+MQNhq-0wT56(4C89v+oAx05DYNY}6{R z8}vNT1GRt#P~TM{l12N!?+``^M`Mm*MInSRc7Pyw2p~2XumT-fvPMsU1v=`8wkcmw#Y^K zlN=uPU`ZdqJmD$kGN|o$4|}%ulgcV>WNDxW6GT(tzyJ99px_CZfuj>jcz42(0003& z0B$Cr2CoNC0T2dZL7)hk!#!69V0EFmyhSr+rQrYM{SLZ+#lahqTWV+jzPptynEwe<1d+hQIfGhbeKaj{b0YL=wn;O3D wf333s+rz}ee-pr(BlwT!;0)3L00BV&If$-^SKs3}7O_0RfDz|AmX&!`C@}*uVfRI!Km; zJ8OU}2;ijoLDgBI(a90F>;wXL)31#Ja^hS5otDWN_3bkN0RRMy6a@72#{`65zYVc3 zgaIH#Fc3iysLlX%3($_=io2NK|NH@!ude>%1CtaCa;e3QH~YaL+p4h*5urIuI5<}S zY>4HE(C{Oy!wC|UdS4X_OA-+oxSZ`s4g(iWf6ao{B9+yNss6tJF)E^UsgnwO|Nh=b zW&jXEs%dUXZ?usDVI52%jt9UqnGWg==7&I$_j|zjN`Ga75Udg>xN`ylpD{+30vCh8 zIx=uX0V~feu!rnKE6@Xo38nwc1OpZT2>=)nZRuo_sA1=;LUyA2E6d%GET(Hmv6zG! zhyWJB62ph}8P8uB8iSYjT6@R{=dc0>xDnBLGD-0M2(T@z|ge-gTkPwO>HHRo!QG8X==ovEu zyccwFVVxEv4wD*m%5%;zzWpQJumCMA3JD>YpphTzoKlnw3$UWI_w`n0tDs2);sK~| z1V>@ok1{+MX)zJ2M-Cvuct_>Y3-?WW___=vmc#e;6zQorHbdq*d;bH_MTMB-Nosa~ z?cg@(5pO=|oC~tV0mIw@M2QS0Kmot^xdHH`v?*hhf+k)E-vrPE=WRGJayt-6^ZU%; z03Z|q0s$8w2L&VV1%XKcoFT=CFkjvc1t5olQ1F^_)$iyN9vA`v1i--L9^*@g{>T5H zn0!C43JCrRQ4knjtTdP*Kmyt9APi$x94O%etNZg4!8CB;#QbA%!+z)fND{cR8Hc~o zf*?wmFoOsvw?Op{*^F?DzAehrxu7BS3@iJ

    3F5aKM`Be3CQ&`@$fEJ0pr?l~{-j zJ-CR-E|_Ys|F8Y;`a5^p-~Nyo<^mOwUc6d6=mi=q(BK{+DT>3YJb!0>LAfuXGWzlY z)Sy@JUjFEkv;T0W;eZT+D{?y6{Con-0W<}J4cI^c?JH>U64USO1P~boj9~;VO7bCf zgSUqt_h`z3M#lVsk6rixQSlfLT?34zK<7*b7&?3EYWOTn5r=??0|4+v?cA6^OUK)vNDqhF zeB^uk?>Yqd%_hZ~0fjX@5x|;XjqX94_Cz=&O94_4k@0rZeFt15yL zkHGazfbVPrsDc6@i0K4I=^!y{z6qWHU?$Me7B>AvAJ_!uza0O@6P_M;Bf_u%00BV& zZYIzMuLnp3Kp22X0iZy50q^^lA%q9c(OK^O5C9O6>KiyN#-T?yyZmXGn&_nv7dG$H w!&LwO|NsC0|NsC0|NsB~0Nh{z00BV&If=9ZtH2wK0003&02M-Q0BZ0C;}y>rK>z>% literal 1310 zcmV+(1>yPt0003AFaQ7nL7Jc%yakDU0RSKcAh3K;!GX>I4k3sB8AOGAo03%k0C<2f zcTtNm3E<1Sn*IQA0Z<2O!1RKMny};_!iVFS00;~X<$?!Yyb|D!y&r%K*aMJY2r4uy z*I>ngO8^6iazrKaGSV|*ODEjGAW}^M2s?3-R>fY})Ib8vtWYIf5*>kPMEm!F;06fv zj_fmLv>N^bp);5~L0T*iAq$iy>2BMxMnGV|fi`t4XpVSA6~ta6!1D!mW6sJDFarR3 z(p(xP0?-S1SXKZj>dxh#zp4b3cm4{2JVu?)-4|eS>YRCZCZ~S7z zrddNkt0u?*2nYkNQSPt=9?PRs^Hq;r+ughrg0f%&*Z>Fv7*G~mAXQVc@&_OZh{De$ zLYxM}O!e*^%2N1{;DEd^Bp!?=001BYa0A)jVD>}cP3$xeAVvZqL^udhp~)8}^MW_- z2Qy;>O9az0`cTXw&w>tqzhnfV&R}|mR#(eBhU6JZJV_z+nSNwLz+mOx97kBdIbcYg z`?Np-fd69xlkK!d;M7imfFyH_LzX3dpg|^COW-k;=B9!id@NJR07~7)NC4mgWFTC? z&w_`)d%zJ~0Kno`%|k>c%b^YsX{-PQ1P{PKX$D!=yfF2mJRW8CGcyllv4|4*L=&*V z0H(r2J^%;7u#-VL3|2~sX6j@QgaM!c69jY>f=h7_Q=j7f0X?}MpiX!6aFBpKW8QItIzdu?h9nzqg$+HBGPm4#zEl5iVWf;7Kt>)}PrXL6hb}8Szp9Ta zGV9&80w9QGW}LtQy=^P_#4bkv@dmr{{jpHZ1596STOuQzW^N3BCxv0 zUz6V02p}>G7&KY|c{drB5@rJBfalAA$NkrW%tJ>rkKcy@xjq1K0ZJ9m|2gq696R$l z9Fc)Rb|&xE5GGRm4x~od9tzUW@M;dK$6`D{PCz06%mN?{K@$L5cVvb*+^O_kgDCEw zTOkF92HCm|3UG6Tsqd+){7gC?0w4?n!(I#bC%~LXR(u}yw#38xJQv#TJiYhy2obQ> zMhHLNXn~&d-YgElai*t+;7u>a^2j_n2rU7a3RUP>AUHiY*aPlEzg(s{OK1UJ0cO4^ zh=1^vl_^3z9!VmDsYf>K0{)^22!tR>nS(kOfNac&UjSrzW`_raI3O9Oz+?~>01uqTTm5sL|L)X>T$8yw&_ z(ujO4U$hZ1Pr0ApVKPX>;Bj3hKuv=xz`=k2|NsC0|NsC0|NsB~0Nh{z00BV&If<$P UtH2wK0003&02M-NfNJmty>Jof+Eg@Cd-$Jt@0?Qj0z0GSEOxP(VLkdMLu1&#uu^#P=OF+LW662hM5 za$xLV?)ESM()_1@He>`LnefKo6rjQkIG~ba)9ipLL=c7J)m?g+?M7kaYst6?-M|l3 ze<1(wcm7|*fgfWOcx-?GfJguc0_<1;As;`}MqmMfLfd8m zbYv!n0n`c40mKXlP!c=GJQP(q{6vt^IVXb#eVyPl)rY}Cq=yv-9N56WSK^2dz#vkH zh8L?3e~fN8Z`}XM0$3J9AoMUy04<)v0LC?8!j2Fszq}#{L$WxgIaP>{58vIf0u&L5 z*wF(72nHMiD!@enfCPXT1&_c&_n-a{7r(XGHqqcPfGpQ7`T~3ea2En2paSQ?YiM6M z=fDHbSsCqdA8ez4LWr6CkQ8e>*#WZxu;+TI&Z>tOpkTx3f)13k5G&lwA1r;!V&B#G zfQSOX!vHz-{ZXF$;QRxFWT1Al9w7di7vs(tl#PHZA~bB|0D<21^T8Ymxds9(AOVkg z$ev?Zr*4e+@Eu~8AN~%R2Ko=f*N7kTi{^m+o9BW*gh3Ku{7(Ssn@j**8;V2iKKz2; zlT>s}z%jRX#=fv*PBI3vBE9%(h*aoi$LVQmEaL@n% b0YLyciM9c&z#EJJ00BV&6+&%*YVZc*bv#-I literal 952 zcmV;p14sM-0003AFaQ7nL7KoCyakU4hJ$fPH5OMJ&ch+FFK`j$o?@&HVellF@QC5B zMnPl&02feqt}w$+Qx9Odd>D!i2M2<%Tof2!0WRd5aXat|K}Z?e&eUy6aaDi7C?%t= zEdmyQgl^aWv_1d=1cXHZ0pKDOV4pi&TkZfd01kK|eGv^0;&qmm@$h(|u%-irRM4S< z7*Ag%-=Gj@#K|BYWT>p-vL8PPn2mt;Z~{OCFlM|ncJLa28Z!`RTnk2G6`?Qy1P;Ie zK}Y}u55PQ`dF&OC6o$dRfdv6vhO5Ax##{!5Mc2R+O3H`0H>16UL(&fs0szbKBq6*A z!=_hebpQ*70TFbtTq1JC|NrI&pcGzv*t+OnnEOZJn88VU3OE)a&ABs43;+v21qd=A zuD)?j>wU}P0JuOsgn-Tv}YUltE08~PQ za6#Yi`B(%54BPvw16)V`979qv2Otn^M+Kc@`^EuG0ZRvxJ#ynFLw(F1WPkub1=le{ z6a?1g67o0z1O);x<%FF8E0^a(fW!cht#O1jYr9yY&c3&XG8AZ$)e|4MejsCVli(O) z7B8|eNQfY3=|E~k;vfLPakvAT)JSLw!vWGa`@n;ia6-wOHn3Hq1*S#5EHhvV8Z9h! z61*#P`y3zu5FUBq;KJa)__wRzF)93>QFc1%N zn+kv0k$Rfn`~J)teTlD^+@BD9*gJd05x0vt52`-Z8GUFkclO{S0I)E?OgpmM`fOeG z=|99Dg1`Z`$?OgHKMc*jyj8-gKR6rOv2Rt_dX?(#0P=O=D z0jMcX1Sk1n<@Nc-Fh~Fm1K8_!hxR0ee)^%8&bSPNPgeW)>yaak@8^d85e+Rsm6w^o(;^VW!O$W7?hL^pu>i|& z=_LJcWd%$95pTHHzfn#35Kr}1L@9G?eK)^@o)?9n0003&0B$C*2CoM~d`|#y&;S4d aK>#_4tO2XQ8;k$|0YLy2LTdnO@CM`eV3j8T diff --git a/samples/h264SampleFrames/frame-0088.h264 b/samples/h264SampleFrames/frame-0088.h264 index 88b400b22d6ed315af8ad5e023e8ca02886e9095..70717e528993f0bede463720a5b2d942932d3763 100644 GIT binary patch literal 1161 zcmV;41a|uX0003AFaQ7nL7RXYyakbe=pq6jP$1v|ZYTl{7yb?;dd-J?03t0RhJYm%(uaFetEc2}VOrFt3*L2MQ|! z75)ejQS%((2oXCD3nFmW868yk0M`J|4Wy&o;Fka34jU9jq@sDpu(Fwe0FN4g1s}wl z0BE=d7yV-~0NGh!4ghjcqWC}1M^G_#hu8zY2ZSN>e&B{^G=mM^q_QSt4hrA=0N4OB z0N#h77H|=O$~tr=W6=u3aZhr#0tXew+m*d^NCj!(;9l^VotBN_6~#l40Nd6uAg!Pe z!7WS%MLKRZI9TlU@KZA*phAG-t~wHxICmfxz9Jt%d-q6oLS}YfaSidEA+ont*`PO) zx`A<;1FjITlWBpuNN5Wnj0<#EYToPq^IlGlmg%~QVd4k5k$XAxEK|t`wHw}IFkeb z0zIYZcwDFFFCXClzzu`5`3D5$hN7s-Edbbi?rS z?W~}HRJ?qO@z4rX3CmlDrU5=;{v;Flr~(t<0F$VY{9TzAt+Ze<3OG*c(|@8CzyHP~ zgQ&M4-VT}52Y<8!1#y80>gk4y#VIFFg8?a+oeoaJp-V(LlA_nIckbTPW@i5o1c(f5 z5_CI~3*mf5qz%=UulBp(7cf9h!ojFT#O7EEi6KA!vYEe)BEAp(gSagUqB7l#2}GKn&&`>b_&@jJzz9=I2JnGz znN4h9!+=D~_y~Y70FVOIKu3h!D$rRXGigAHtPUC>QYJqzUY%wmZsFcFRYCT631Bb? zzz~AU6zV1T1bDn4#rvQKAXD(S;CzNhBfIn59PD7FzuhDd>ad^?z*syXz-Lsa@7@kx zQo*3DSQL(vMTh?%C*WG&$WKRJ1mgID;s#=2BNO!=mih)mrZ3_M%2HSc&d9^XQQGPr zqU1Qw-z#|$1UY`Bi-bi2APzt8;Wu^ThX*%(h;0CV%crX9} b0YLyciMRo)z#EJJ00BV&6+&(RYVZc*Dsc!Q literal 1142 zcmV-+1d00q0003AFaQ7nL7Lziyakbe2ZQk-QWO|201pY{>$_OL_rL;#1HWjX;Yl`U3j;Li*=4MTA9^aUpN#3 zV8R(NAQ=M!03gZ_=P4l*(63$>@DqRlfH{&2yre@!12XUc3V`hoN0VW~jv6pN zOYIoQ=qd$1jx^HXAOI>Uz&-Jw@;2aBK8FcBVF5~N!vtqBF+@TS&Mp7}0tJ>yAw_Bh zi&u!5Chiz006L+dAcz2OYTL*Szq|*7f*i{tixegn)-JV`!|)y-?4gGliy*R23ogV1 z9N;M|dwKz!LYIBy06-L6(~iTGDBUtp1>n!XA%ZzXDKsLJ#D%TAHv}{RtmLOh&^Il# zPg}+q2Rsr~xcw3~Z0%6FbH&3rbTW$`Oar&!DZp{DpECvw@O{A#L^@bUZ@$gX&2&G( zU4m%+VCTJt4uE+0)H{6I)SM$^{FIa~JONAsF9ldRe?URSf{=^=8xtRmrK_jVN)#&@ z($RY*=)3=Nh<*|B8Ol1694JE8Wp1xp1pe&F!(xf`i|!Ck0Ukn)0=OR4<#+$%EV^qA8jHGHHfh z+n^zcgM>6_hm;mk`2Ndy8j03XK#~F?){ZLzkbLj}Gl7a1v_(o78$Hx1L3i?C2m=!} z;>7gF4!%!5009SJ01zdKkOhF1o*0gAyQ_m&K+Q1bi% zb-2s{Kmb#r-uC1kpc76%XFlEmVlUt#0Kfu33sC_c0IvGiztVu%LMR860mr$4{X{Z?yom#M z_fwiQ!!kEGeS=D+N(W+C31Bb?gx>0av?NhoO@09h>|kBWlfo1l`Op9@1WKZO!C_;; zmc+Dq^I$Zxiapi-@rrO~q5E+_A%L)WLx;XmK3;edlq=Fi;nZ#5B?z}!kfb2`|M!?) zy+8B#9aqcRPIwcG;tHl2iG*C@q)9iR9}xRQJUlrVwGV7~Y7)vK!|R?`h$jzfwiQB7;EF_RRMl{_Dj69t$3U+wTTlhf4&;GyUKyNs*3GNzP9H_&MRY z6HE2cqr+Zi8q7|u^Ale``Tqk&WtMv_cfZ&wqiZR|fBigXemrg6-`OI>3xfZEwMwb4 zLdXCJ1;+s}{2BuQ0-y*NkOp8It8*}h*Z6`Cv49{Amc*cc^pFC;=hk_+|LzZHK-Yi& zzjMQ|&D3}Dzw^UzCm+w};dlT50YLz6Cb$N#0C+F}00BV&If3{v19K-~#dl=oMrbN#q`{O^^H`oF$L|0s=q) zAi@9w1qn-%l`aq&z_0+03>E2 zGK#%H3Tsv7p%eji6EZkpzO;aD8U+u(uf~l1J7~Eo|AGGq1ndez z7t;MS;UD{0DlE?DQq!-$_GkbKcpZNXsek6_K)kS3xydxI{{a)PeR?3@{|+As@BqT{ zR`j&d5vu-hiU~jix&Rmv-B?h72W978!^$B?C-R1ljgEJHkSXJYt;u5f*yrUPtW#u8z!SHH0h(a|Z6_k8m@BeP6i1Sd7 za$uY~e~X9U2JnLZ_S4#exA1vEYfd3G9ew`#)r#2Yqxb+bXp_o*iN0bOuOt|I)&?M*=82K-!SMzu zGbFEJOCV#=UnvOXg3Sbka$HOO2zS)ThpSSF z;5|#wD=~x+3Dpu}vQG4XJU7F^?Tkba>%@XCA_9o?D;aB?J3JA#_4x&f=e8;k$|0YLy2LT-R+@CM_E Cv&t9% literal 1288 zcmV+j1^4;@0003AFaQ7nL7M;?yakDUfnedp34uIdXaF1lPyj#};IEP95dD8wUKg4O z1`@9T-BMmqXc>kRE&u%>$Li=5h&{nJ2)}l?#5e?es^ENZysD{x0ighcGzDnM(7D7} zo|b$Z009IV1BU=Q1o&UoZw-eCT49WxU~bGbY&WmefB=D~0m3K%fD>H1108|0jl>)rr+g}KP8A1^i z(p}6&`-)_B+!%tKD=@(kGOmbcplU$H91@QBB+at6yx9Q2z#bv&-IZ7ge@4>yvIvTS z1&o0#!wN`}yf78b*^xKT@Qfpja)mU>5(+Ryu+R_yJV5Xs@YEEM$gyw$wh#`~0R@N1 zS{V?YuX6;&Qw++zOObpZKnM_PbfF&$3Fk4rH+KK=hEtD>L1}u76@?+o=9(}w5;I1d z!K_~U|Ka{8saJG)xi>0hEf=pARuC#<4^X33!Rv*>!iHf0W`nC&juze z01<)(6jQu9bXeuWC8EWbKSO?(;7kVLpkxKnU|kqM5&(Tb9UyWdF{jkvVMSswsWT3G5`Vqpd`J38xAOdF)lJ-UZf>ZFJMF!%?n5@ zeBi7Q0FM98^fG|hku_Ptf($z8MNt3&+av%50NtVm+5$$zP)Qqdj5dS!uK)o6Lyj=6 zJtMLY`YBCa@&R}*4V0K@h~TH=cYrVi++aX_@0z9Dae0x>Uj|1Cg+f4_fsvmL!-7v} zwC;FyLCZiq28Zve`}@%t3%LFeVYC!Cg{j&RHHnv>@BnZF129c*5^5F^=|Y>o|L_21 z7)Gsd`l6cPFwC35#jw>?M_vFHXf;V;J$Pd#Emm!%5ZrakLeV1o`~h?TAqT~ZWZ>>E zg{+^j%?O|XAUuhg009Be0HA*T?@QpkKoG+KkSHEF&%6-JQc!<1q@+UpU;xD=EU3RS z*2POTsC&jRIC(wfh>9X)J?1oE_5cXrmSqRqL{=scXCD9%3=xF9`|~sNDIhuc_{3>O z2!YHG4!FgD&4q*TL7YGa*|K0xF4c|+lXg%vh(p!@9syTgU>V>ZfC0j?QFY^fejK0! zzyT7-0kNWK+%OCVLd+y6$^~LF`_KD;1Q>xxn;)C_CT0jqK~~{`W+(w0sX#DYV!!_L z0096X8;$|S0(tN16WmAy01-8SkOIKJ0?QL12vnaJ;W1`lUmRmzC`TQD>v3@B4NlNE z_|$Pmo`1?|lNp~KgvaK#R;3dFaYV>nf(CZH3Dpu{>VA=we~}0>GE{UCQXO&aj6^f9 z5*jsDhY%mEgfbZ&$$1q^Ycs=eCYSo$AQ}rG06QWAs$&6>1A1gNoP0Cevqb;fcOJOd zS4kuF&rxN>jQ|w|pbuEK7Iy>0003&0B$D02Co2kFaQ7nK>#_4umP*U8;k$|0YLy2LTmtP@CM`KRT@SB diff --git a/samples/h264SampleFrames/frame-0090.h264 b/samples/h264SampleFrames/frame-0090.h264 index a7b51aade378e35fa2b118ab23db317beef278c1..4dd72439875faf83155581eae7b956e139ff8bee 100644 GIT binary patch literal 1023 zcmVc}6``6yDiY$_mx(B9 ze>(@o*&m-kAOS;hkjmE6NkXsg1D>GSvPK{SFKql2{ZCV=oB zz|96yutszd-~YhQXAGVfS4x71 zATFdsjkpIdlOc^w#uai=XEZ!AO`qB0H_Fcund=B*Z3TF$jRjHomai;)W>E zHc4buadfHiXkH7R$zOY#+VF=cqWF`DURVNf{{}7)6jBe}0k6aeSg+p=sjEjYj*N4N zkADUPfDn&X@PfBNJ(@S)`edN6J1=+c0`Lq;f`rO9#EO{%_#Wz}6m@T?D+F4w*8mzT zBx126d<2~gMm#tE)v#D+*O?IAP{w5+)JE_kCktn$JlW>;=70ecAc3cS_-qm|33vl4 ztAiIY^g5|7vRDq^1?Xk)f6NU7(cDfgL4p({(QetcJP-Zt0@x9U3X+a2=Z6D}z(oOI z!f=g-gbWyCW8am9ASQsYFN4Hwt^*3_>3BH)0)owa+1A#@TnWnoAO*u72=;dPz;Q7m zl_S;yKnnpl;m`q#4Q9=U`vhkqD}V6&X~)Z{{XF02q%AKO6(bzw@nIuyoP_}v`eQ5l z=LP%G@NGx8zsDYm0Wbx?k;IcgWGtg7$QZ$ouj3A?K$B=OQYV5K6BKShv}^!|xIC!z zJtjtmk?DLuL!Cs3oqlW%-`g;F^`HOa8bb}{H<1{AdkjSACn$-xW*e3O3vW?@_8N$x zBcpNxmV)i6Q!_yqJdXYz8@G^y*g4>a1k(6OalRlu<^f3AhaR`>8qM#=2Z9z*{PEJ* zLRue{;w47HJ3lx;qa#HzP-aa$#RDp8`QYs7Z&R!s(ZvblW2IFs$%1rx8Ru<1+ z2*?h`g9M?OmP2UY6FERS8JF_{o&+&m#=rr<06-i7!263wB(gZDjF_fTka2(rFa$9{ z7HCA}UZqYU!+-^_MmTt}SWZ)O!3xs^dn8Hyf?Ry6RtP}=8NmR^064nELK~@r;dT9h zga(lnnivzxVae3Ty_m~+N7UdzR8X`vxuGhfvNQ9sxjWe$$M-cmM(bXA8gp zqDY!3*hM&AbyiTY2n^3CA*MQtUA_nKC;$*om256oQloP=V6gFG4!kkw#KNztu!E*sy&KyAOsAI(A}9a}J3r^Z;0Oi)gur6!%C=Mp7J_yF3!Wqh0DTi+<*Kj_ z;L##d2mDa^0RT?u1 zAtHaL7JO6P^dV`$107%{{6&5^2RIE32gZRF9MAwzKtGbKL!w{nA4b$N$5+3sWDEO? zrtt{C03Zh(pyMz6D3D3Bcf?=~0ye{uEH4tKs;r+hT4_ukB`Ul30{~u7D5$8MU&d@rtl{$1b`O| zE&xq8U2pHo9~+3Iy;13W1b`L`tZ?W6UDbxNA&?dR0as0QRzCA>-jqh)$(8G}{rMgr zTk=@f{q+XSg?Sh~_^ApArM+Q~4c@?Mdv~^D`2Q~qhfYp8KqdgVbBQ3r*Le8Qt`pMy#6EUKPLC=H=5t|tytI*(z=TDA%ujTOp4Ck>TAYHpR zzkZZ$xW?ePO!xo!WKtF^!$bMs3h;#=<7`$-cR7%E**d0*;CB!x*dH@7t2|=|PJ8DyHEw_E(_%hE6z+Aup00BV&ZYIbEuK;*30003&06B@W0jt0p Ri~s-uK>!s(Y=CO;2IF8W){g)H diff --git a/samples/h264SampleFrames/frame-0091.h264 b/samples/h264SampleFrames/frame-0091.h264 index 79454344425677f8f42336e84784b8444880998e..110780827ed1a8cc7619ccda889d9dbda5cfb1a2 100644 GIT binary patch literal 1430 zcmV;H1!?*K0003AFaQ7nL7U(jyagW^2snEFdyx$T0w01W=mcQBVqOb9Lqc(20DuS- z(+n`vO*F#{G}Ax-fDeoS1Ok~r06-KE1`Pw<-ssaEyCTBrvWY=#<0|ASRK#ru(cntu-RH_+W&c1$)&H#eH9c&RzhEkXjE&sag z_CN${!Wkd?p#p1Q$Wkk>|J-KK7z6E035fDG6|4aOrA;JC39!5$%k~ir6yy*yfuu#j zeWqD1C6E8xe*hVtzOK9&RBD@LQKjNJbYH+V;c;5N#11z=@*|Mo5Un^uZm=49Ul|Ke z77-c3(_JIS0!E)&?=VbEbE>mV-hTW5V`W77E0c~b|Nn0wP;>HW1QReB z#cIY8PW-S7dCtIB!9W}lcuuSXjiIEs84v(uq+!6G0^DPdA(mQ;{lE=`SOs9oUSvb? zk&;L25kLSSA3D$uWQ1P;qy_kQjz*Vx)Bg*9)*9deBCQ``a4wt>sr<9{><7 zJQv(vqemPZ6M~=nM-Ve$LhzB)gHQj%&md!3@3$Bb+ySHx;e=Bl(dzI;WJ`iaI1y0t z1qkT?j!qx6_W;SzGRLzzBR~PpfZPAUhu8q3M1~2G2>+(t6T(k@pP~Z{y+LdRiLVm? z4aa?>ia3wP6>t09pa38w00IJ6U;#ns_w)ftAQ*v!putA4c>>x9H0qukTJ!tBm}G{K zZ}B2P0SH9v$YCi_3wllK{hdnCq*G$R2X@Y5iAZ13-%*c zoWxWi<bi#{k5bC`==KNU5+2075le!V294_G$+E!1q-lz-#qEut zZ5kW(VXgpZtdYsZ`|bop;cWEBn>^lw;0&s+3|z<1>7=S1lE6EB7a>>Nz|cJ%#NyN# zAwo^z%i>kth=u@N-wn=q;aa>0M5DSP^`mRl2?kxDGfZ6;BB9tKH?6WWBmdgA#703B z!L4$y^#9)Pqno`ozx^NwO>DfL%-=qeSOe`Vn!u#kL?7W=MVVnzD z2tm(oL@q-!e+BdULdm^@{lc4u05SpkQ4}DpDF~*j7ejF8GX5{MjXdr zfA|k-Ei{5^ukLub?;f zPzhU8Uow?b19*Tnksx#2gj~4q+h5(6{~(q=eJ!KM!>hr7v%;_^AJ6CDE}#Ga0YLz6 kCin)g0C+F}00BV&If=djtH2wK0003&02M-SfNJmt(^b literal 1382 zcmV-s1)2H)0003AFaQ7nL7PAtyag{of~37llLX-q06-8@NFahqB$5aql1Tsl02qJ( zKnu%&0YRaHNZOvwLc6_~3IoNN>CLl8-3sq_hBShPB=(_gCzjB$|9MM zBq>hsz#$oKiS0amq`!arz)AqaVc5*P-t?f+fB3hVfB=910NZ*34{(482q}cKAhkt< zJ0!ZF|6qf!4PKadR1dD=L}~&fU;lUm04Bq($1^m@bfkxeZ%^g%Vj*bw!H_%v88#fH zpc|t-XT1K@Z~=2=XEd4n`k+XnkXW4Tu6q9WT4@2k_W%NKM2tGjr?2DnRDJ9)fT75v zFRuqLhNA;uVh5m52SXqzu_g;g@0!4_z5ij%0-=*3mYP<-cmM(cVNfVqN>ytr5_(F= zkG1ds7#Iu0>=#@>?VtdF0Du5IcylHJe=fZsTDI&Kypu+gCeuy$0g6EkJOGM7@D72nNCh~mYmb-!2YG&nMC*@?$+6jbwEu++`KGNEQ6I5>$Tejf9It&tr?K`X|Jd8UT z?qCOODgbbO^Z!3^bQrbi#PxcTmV2RZ`w(O&BPlphitz* zbh8ZD%m)b2XrA;{j>sGokr0Z<)~Df#a~1y$u!zM`S27z zr3*8+TGqXP{>a#rhhn#0m%zq2P8Sdt831!&)z!nHhv{W7KLEvYRai_09w>=Mknu%xFp70YV&&wM`>bpY-VxEL$NvBQ z2J;D(OSJtf{0s&J1wb+|-T)4OJ$eD4kc3FE-#=g_0H8Q$0Am$F@(Ai#I4a}_UU32e z24ny|s;qTP{-;BFst=SwCQ7_N-l%i}ND2fn{s=Gy0#XUdF%rD)JJ1lvg8geu)7F7% z>NpSQ{o}#QmPSFdr`5<&txb7W{d>AbU~pOgf8b5Q0HHyoo3%rn;U|?5B)$g`E=*@HGGlku5l@FffQ`d17C`^@2_!8QDaDmFi+o5zi4x!}*>MgkW=LPxhWzl%36dCspx?4!oam+I9 zQ%R(fTE7h7#1jW!?iGf_GKUOrf85_~n>~0xyag99Ta5?^zCjxx+ykP%29YJlLH7xNU`qMu^R#mO zAB14c7XpCb!*BpV7-n~-nm?q27Z8)a{KAu%0fkO9uaR&1Ku7}EVFGTr@jPSyxBw#) zIb957D87V$1OYLjdaU$hzk(9!Z~&Ja{-Fv?3g-Xr0{{X^Jx>5WrG_Dxkbd!KJ8jq=xCRzV|D|Hs;)kdENCJRZv{DT)eW8EuKnwsu)27R(RbW6QQwKmn zMT^CTOptq+hj622nvh_ilv?hgrSM`20Z5=^3jluF0X^*=?hXTP+WB>G^0N4*;TS=R1y3jraP9KZB0ssUn3>$-V5+z{=2MDcj z=|}Dod>{h7dhiMd?PdMU3kI1Xpus1#JIW`=8b-XCHr!o-|MmF5ZcyX_u}=FLZ)=#n zG6>*M6SQs90&Xm3<=K#$dIdpFjtfz0r68&>;MD;Ho!w@eb@ZH6GMTjg3uw4@{%B6*%Tp3F+cBJ z;6OH2<4jx43_dABOc}w&pz!lYhAVWE!AsPa4~7Vc?(${;LsagQqP23l*BfR4FarSM z^?W$t+8uI?9cbNFnPjW}@d$z{tB6w(Rn_79`&$q(!I+(d5-v=LFyZ(K04NKBD*zYWDBLq1*a4B=i0{KoPY*@`X~W(u5CrNE@!^oe3GM9I|NU?8 zfd(F&APYqV23G0AjnDx|b$aWQ>!;Cn9x1q@H@z6uVaB@t)%Bq2pcMe%!9s}u{5Ac{ zBdW+7*Z>e3?TBxD@Vp6y{4f&0OaVYpcm^AhfPq%~@{4dT!Q=u=&Tlc7Ui3MB4DirU z!wU?JuG-z(ddFM`0q;5thvVfh@Z>>?5yT=qf-b!PSvZ4FF!9euU=FqrsOn&~R%}@P zARqV-EP3fty#4mTNxjh~pLc%);YL0|2S;3DDu+K;;pc>4O@tVL$Aaz;QVw4~b$m0L z4B=AOzXDGkKL+tvpZV;zIm$qg#x}QJZyMgWs=PVjT>JtT0003&0B$CL2Co2kFaQ7n aK>#_4paHAE8;k$|0YLy2LTCVL@CM`O_|K65 literal 1126 zcmV-s1eyB)0003AFaQ7nL7QM2yagWw;eoJzp!NY{8UiQBYU*T{sgizar|*FzAW_j^ zSCC#1A032nN3#v24geqmRRtw6g&HGXXN}9?#87BBJQafApu+$Lza=wiGy;ez13y^W zjjc{9zxV|Nw06ayLj-tFE`R%jssI86g+u@VfCvbM7$?lz5Bq=&fCHWgUr&aD7@g&% zynG%cHXOiks+tonLmSC`Yra4r#Ke*T=1YpsDiZ#C<^74ya+r&QBkdE{7yD5Q=`X@ zU~h?z8EGQwpjm*dsd=n=_(s6aF8im3*`eg12lG{peo4dQgwhnCKQ`?CDu;56guG?P zsK5G__^%orec#F9#i*C`H-R`s#A-$)7yw)t11jO5Y$7>Q_+S6|fNlU#oum1cDhmG^ zHNFf-8fk1eP^<6p+3Kla0CGS9!AHj$+FwiK0JuOsgn-TjS_fCRdLdG`D=7-1h{>aOm+Roz@L^x*(nC?F2}m&Tgl0wg^vmv$#^ zo8&Ek&~miU=AMI3v2HCW-TyHY@@8J36cYvtBmvA}|M$y}ZmsVQz6bya0RYK_oWq|y zdz!FBq*w<2ZV~`$ZNoSwV_xVRls>GK_d1 zIGO;#+b`Ot4)4F-5MX(KhawD6i6H=Rg4Ib+(g2N@5MH{&VMnvD2H-M`Tac-M+>(!n z`4Hd(&wW^Yy0kv`B#|z^zxII7(j-W&%6|jl1`)t8@sfMuKzX3bvz-It7ZFE+>_fu4K%{y(?u-~VWTJZ^pg s3xEIs0YLz6CfEkA0C+F}00BV&If=FbtH2wK0003&02M-QfNJmt;|T)ZM*si- diff --git a/samples/h264SampleFrames/frame-0093.h264 b/samples/h264SampleFrames/frame-0093.h264 index 07f5650740d76eaafb5fb80e8bb6ee728f2bd9a0..291525143f9f49beb97960e7db650254d8c85c27 100644 GIT binary patch literal 1154 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 S8;k$|0YLy2LT&(R@CM_EKF5my diff --git a/samples/h264SampleFrames/frame-0094.h264 b/samples/h264SampleFrames/frame-0094.h264 index e13187a9c5ba52ceccfbf0c907fb5ce0567c07ea..4d63c3650323835542265fb20cf3229aa66ac574 100644 GIT binary patch literal 1120 zcmV-m1fTl=0003AFaQ7nL7G4syaj>3{+uWp-~!PA7y&^^tdI``ByvIO^Z~Mqs{`o@zPRrCOhPOt#KmprD=~w&@_&^A(4pSS}PKjyH{j3UwyZ-8G_4oeG z00D)-?f4?C|C^Q}Hm07^9J9>-@DjTy@agDQcy~9ozShP9002t{As35m?b3%org03e zcLWftt$q7c0|2{HrVK+%zx(Y#7{-2V3<<4FFj>F%01IdV2hGNh9$>s$wcp?bvnWX1 zB(h}*Kl$(g2n6duzDL?Y4SwT5PCaUr$6Cjd|E*F;sZ9O;>9fcGf^mAl0F@A+2r!b@ z;#fRC00f5QF&tLXOfCr{FOBGVe|M#Fag9|t*omriA{rgM6 za&S)|T0~s?_L+lqLyq^3N^gJe(qoAt=5m`q_yLc-So&H(EHWrY7VpUAz1#pgzycM( za~rzu51WYgfD9On6VkG#izXze)|MsyIk}vR`v*AHQ~!7WmH-fLjci>PhxiFm0ss^N zK9+!qSYgM2oB|Px06J#tVf$SGHI3s5hl}euCHuhI)zGp6)!{5nOS=lp+xt8iADsyG zDo_A1fX}GSOo~65XM{F80VD(rr5JGYvJP?MZ6J^i^MfL|iZ@q)kBG9=I}F?YNPa4s z1krSh^Cu=9hHS7;j_~3a=Kw>1@HJ>%yb$wQve0t(fg~t0_Jf{B63~xtfB_Q#$O(A8 zroRdfC(mr#8r#;-|NWo<5EMtGIlu)pk%m9~55c(dO*Tpu8^nU&2jF3z(F~+bZ1{^z zEAHbJ+C>N$efR(0_%QQ%6MV;oAOt;Uks0~C0096Ocm$assfPEHU`hAkIXWEA#FEAM z*wjA?K!~vbrv%baBJl;*#g7NfL}UN)M6duopb|IDjv)Wu+4a4T{-fks@BlnI#0Z$T ze~EdJd;lVfXvjkSVGaI^Opapeiw?vEHw*w|5Ut4TWAGn`ASM8aI|Qw=sQrV&8DIDw z%>*9}(js7ofS3X>@ImHwxuGxFUL6`yn6k29HvYx7`QU~G(*0Dej|3Ow2wBHkIZYwJ zJjv*oAk|?Xx;wL>1w{L$599K(OBP#_4qyekI8;k$|0YLy2LTLbM@CM_AVFJ1U literal 1172 zcmV;F1Z(>M0003AFaQ7nL7Si&yag{ogCxC7lN;p^hYyc{0?YsrJQNnmfoc`CQSk?W zAJmip?k)(<`_1NYA3w7caPI_WtRMmQyz^iL!90L=8mEI$9Y7J_p}bra&SC-u=*9p5 zfRF%#MPQU=ZjQ*hT6b zO5ffBpxh7O0O){d2fRH6G$}T+01v_d??4=2E>8<%f_IykOjj^RW$H*p_YHs>1LtU= zp>ij~0W1H(hyNI56r5rWNh~;K7KbmIXu!-!Q%0M?yjorV^9A{_Da71YdBL4H1(9;k z>X4=Awi8%ZLWC7nADjq*5+_Q_h=2NUW-XT1{{MUc%EVDrn_rY6|921o2mk{jC+H@# zoq59JOW^$&M;W7uyfQ)CQoQwWKU5NS?v=lejz=XWt3bh1ye$^;(zH9s|2^1M$lc4pg~ z6?gz7W+F12T|o$IQNfT02uF}$gjAA4ZGUSpAYxgZ3!gIifVca&Y#m~p08zB|3yAFC zZWfJ-eFX_q3nbtD&=?Fo9!q&ddhMfb|L7240tO0XqX~oWOU~QWjv0l*l8EoJFM1sPe00;mK1{pQycG;<57*IELasUK)U|@*h z6X>-XlweQUl;M6_U$6EfxX=J01L9IyEGyeX^N-$Uq8I=O3}s%>1(~Q)Vj^-ahjp@F z00uLsrjI_9Lc50Pvk#~#>De^YKlcpA9eP3_9L;#SA zG#^A)T;TV=!T-g)&tvMmKL7{>GXR*I4Y8#l@QBwQsek|=1^@y8U=JOZ8mHhP!XO`& zD#-O9L}`p+E`UfdP>=s&$B{d63s-Pp3j_>^3TP`Tl2k>mCS*H9uK_p&BNhNZ2^TEY zW9@hVeKZVQL5dG`){rr!s;|ewX@9^+0U!kc5(SV%*^z*^yh;RM0aOIcgTO{0tP~S- z>;KT<(7Eo<`vD{b45b5N&U6g}vCrJ_Ubu=7(8s^PH|e8=TNV2F3D6S&L>x#0y*9Pw zQgc~>DNj~@^@sTUV@!jXGo(aAJOscIhlV&XpKeK~^85zh>3nwcanIEf>j7+2#%=TG zhG0!E)kxUz#DVh#@(DC`X96Y7Anv>nD#_4x&f=e8;k$|0YLy2LT-R+@CM^W7W(A? diff --git a/samples/h264SampleFrames/frame-0095.h264 b/samples/h264SampleFrames/frame-0095.h264 index 463dcf3ed58c7e44b88d6d9f9aede0c37dde1fde..988dfeb5048315fe041e3cc76e01014771dae914 100644 GIT binary patch literal 807 zcmV+?1K9ik0003AFaQ7nL7HG1yahKfdqy$>A2kOI!I^YLyhtMz;2~@6^}rAV3T*~+ z$AT8(LSG=nOXQgMDox4+XRqdo@myI8X>S? zc+vqL1X`)ig74pdfX*kJlntp9AmFt$nJciso@SIY|C#_D0KUo$L5|*5AMgiQ069Da z0fzY%PmglI5`E5qIWS-X0_tu+0t*vsDS5z)0q!t?DRQduU%=@_boDZ?C;`|8FnJiX zV2OY&-~memgUN0wELZyKZ4EagxLYxfrm_;CZTt~cfH+MAG_DyF0+l!G2_OJiy^!^y zTKj+ugERq{I%nGyMj1Ft{b1h!1ghx{W@T@HQUj)nNJ4bU0%EwBf8H?J#9Cau=CLU5 z00C0CGE?WE2-BiJf7mbs2X$Xi+-S0`-n?q6zxD9LNY2fUp1v4P@W|Fcveza1#JP9pMXXL1x?;VMD{T$*LpK z5fdi-`~<)d2{6i21Os>sh@J&l_N*V@35GGA@wMiItEBM!7#qTE%<#FcbhoJ)6Re-6eW@0(~-2TI{{cP6W6E8cY`n-&8Vv_wXL><`goy z<1kIH{;+R=2CC@}W@PVx0?&dKg@S+WV@HBMyvT-ELkY_zEFnAy$-?RBgr9u;yl4Oj z*@gs(;hYwp90xoA%BtXFW!s(X@F|*2IJn5U!?#5 literal 765 zcmVudY08Ri30+e3p zk{i;9|NilS2rv#}f-KO9O1;XP!-oJ1GZ^9GL}@uq&jc$<5$usBiv+m&bgWq5GlBt- z0C9g85Zz2439sw~AS{Ti(7>is4o;>$=3_0T3#q_>s-bCfGLZ}yAa~#e4xpY*JOcpc z{HGas@Bjn=&L4mQM80UFVHDws-C;t&AR@e=hM4LpcKAO6fB^*gcS7ZLDmO7|3lA75 zb>WLdCKZ10fFp+tZM}pYGTrFj*aBrdoIHyF07=>ZHVmW?1OosPNm@UTRcmzPKie)I8 zhX3e*AQ&2_t633JJ!ALK7S7TM(yF_5;sz03GnC0Ki<4|DU)R0-)ikBWc}% zdE{-}6sP0kp?)FSFyM3uAe30T+!?uy)qUV@U;u&Bo;Oh29P!Xi$N}EK0E{2%tUgfJ zfBoSQLWo8fS3XR?*dC@y#b#PSq;^l7Lj(I1YOB9YVk4l$SvtSX8XYK z697OFa9}6Q3uZJ;%q8Ip@EH+24fBV-uQjyYfKJmxD1V+aDMyePYP9go3A+*&9)NId zEFBzeEq1sH)A<>{VMj=19@IoH@xh5RVs+YsiO(R6-nr*rHXXo)bU@7b33i-BRYo1R zPYl4Cs}L6WsTlxu@w>)|4^BQ&&;bPABJ;dQ@Q<}1g}u1b%(h@CL5{crX9}0YLyciM#=;z#EJJ00BV&6+&+SYVZc*bB|4j diff --git a/samples/h264SampleFrames/frame-0096.h264 b/samples/h264SampleFrames/frame-0096.h264 index 8ed139381cd0433f50031f525501b2997bce583d..8d8b36fb75aa6e5d0ed7bbb37b2e28b9a4020ed4 100644 GIT binary patch literal 1570 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 F2IH{gd0GGf diff --git a/samples/h264SampleFrames/frame-0097.h264 b/samples/h264SampleFrames/frame-0097.h264 index f98c74f395fa2264203f10f4dfaa129e0223fc37..0cba60acaa61bada9bd16cac82307f67ed8d3601 100644 GIT binary patch literal 800 zcmV+*1K<1r0003AFaQ7nL7Jc%yakiN2sh36n=?!UV1s}H0K+rAG|~Me7{G*`_Fw=M z3eu&32_cQqiz?dABA!_G0!F>-0Dv+RMOp-m(t~aP0U#$hzbXipW{TuK{mj5JI&q-e zXD0!}|Nm3HGZH%L@F4>nGO!Z>=*55^?Iy7Nz!0nJdY!x2O)kJp1A)YiMFe*NwW^E) zsT>Y=2ob#-{u`rSEiWY}z$%jM|D~H+$_(&>o$@(~WiU zH-vw=;7mVWCD!7b?O6ha3g`pRM_SmOJQ4B)BLnvkj!vUxVfhIFIQ8HE>-U%qBCr5B z3mgvdMzl=3&p-fdw&GUWPk>=$uT3)&#}pE;>>vmW7K%Zp540Kn&;fu5I&{f&>bwaA zia@9h2No+O+A?GBVxzEO(~LkcR7x#(P??FoQSNbl4M69n;@L_`f zjm3(C3;6Wm8g+bjdu+ht8Eupf+?$3JoP%h|q_v&{xY041_=$oaplb#QP+9{<)3vps zzzw$g@&*_!`PT_en0p3MB-gr$GEi?`Hvk)Hd(Xb?Wv`?8{B5_n2|i@t=Z4_Nut5N3 zf4qF{e(-PvB0=8P;aI|~^1d<{KAFBkT;|!re zD3V1J0QN@E%oc+f!jJ&AdjtSMAL+rO1dK251YwFJDF--)W+FU4e`~@9I5QEjf+jeb>*MCD;2kDh2sjFarS)QC zxD$SvKorvgJ-cA~B@5O4|N0EQFUQZ_4BkklU*cedIrtNg=inPC0003&0B$Cz2Co2k eFaQ7nK>#_4ssXFO8;k$|0YLy2LTZ3&@CM`fAzkJG literal 1127 zcmV-t1ep5(0003AFaQ7nL7D&>yag`>0cs+E0?}3;0UHXRC4mnQodI|z&=G|hAVcc8 z%-a)#;HNO#v_fEkAtbYM!1@5u9X03*54!;nA$4H=N}mZ+Vy_6i(cvgg!SIIwRR=Z( zSQ&#O05eD8tPOzA1#p^x84Mxg(O^1{2+_ttc8@54<7WqhHWydPoydLgB#W>ckGMD! zerrGw3#eB7bBi$wHHXXK#87BBJQafApvV9=w&GJWBzy!4P+~WptWC@y%YW|xPeDnI zVCRhb26jt>ssI89hE)InfY=5>Hi|R6#s1&`%m4=#CEbb71Gvbu*2>=pr4VcsP{9jZ z7&=mn=&WS?{>r?;6 z004q`00=n%0E0*Y)`8*7||k9e`fzB1aTAtQ1kFd$;iRM3#(k%91?FB&JOBO(cz}k@?`B?V9_yOu zZ(Q1=`7CunA5&j8K`Z;6)XK!ap|~NE02>$sGU?!KA~jO~|NOu=04Pq;Mr6u@|H6%E z0x=wEWw60Quf4x#>mh&vr~o)1MdNz;()hqG5D#G>Rv<1jz%URTdeP7|1R%pQ_ZaQ~ zJ`52_=V6oKT;(XR>vjM@00t32N_aGWUI()oAxrp2xpdeN5PLN~a zf>r`o8C2qR###LPYwIMfR|5|%rSN)E~kGq{IRc}4wyjAf4M=!9iMFmu9iCKvkh4#5mne(v;cJ@xIx zS{#HJC>}2VtbZE63r+j+hktpF*y>x%HESc1?Eef+a^d&knrI0`TnPryX%$EHXO7?v z)Sjn-|D-n0z!CP75Bl5=RuK;*30003&06B@E0jt0pi~s-uK>!s(XaH*P2ID>=>OBAe diff --git a/samples/h264SampleFrames/frame-0098.h264 b/samples/h264SampleFrames/frame-0098.h264 index 8a87870153df65d19e59d02b8231884d89b9565d..70bec1c7abe1abf59d6a91706dbd2ce51659c228 100644 GIT binary patch literal 1105 zcmV-X1g`r40003AFaQ7nL7KoCybobHfC3)B>ihrr06aG#h~vN1Ql9$(JPZI!0|8-; zdhz7|k?=%VpFW@B9RN`&+U`8a+J zf8)5wfV4G@M)W1|x&a}7Tp|J>SAYYYYzQRkF+e!Dt^3XZ3e~k6A$L#zdIl*O4;qbH zAw>4a2zE`>4i4mU6>a^=hLoicz_i-A&!*gUH;}Co|APyR`2!~zO{4}=F|tMU zz>olCV1Wh-<853!iF5n_<3%H>i;%4CwEzJRNRSp?1_*!;2nL=1avW0wBBwNjq`vRI z-@Uva0ELH~^4h)uTy#Yj{?r2jU06p2)(sxp?44M^0)RmW$JIYyNe^j zKyYvdG8f=K7h@}<05IqEEVflQ2=cm2sAU!N1JSpHX*9A#`XWE}62JpN&u1yE` zLjX_%nExC=go!JfH|9!TA&uQ0Ih-F|5VA%?MZB009cG z@WAd7Cn6np1@BA;7Ak-Pu!t|$Zn4_a%wMcljonE+S_UL|A>4|#=P%i#2c zipkLt8$X#UEW%FU3T7A3A&b)W-tjCt>VJ3mA8(2)%(S#HBN2s>F{&e+eO>Sp1RV1J z+#{qIc8TBjg+N>@VG6~Xyd)~?0H^>g(I8NyXY1D>E(0YX#BJdeOZ2kfU{;!z6_~(r zCI|oz_Dno3us(UG2Eu-G5V7zW9T7IdODX+pfrMOD1f1=i9h3b@EJiTKn^+8F=;v;f1p zr1wRTOrTd_002Ob!)x~+{r~4o$O;X1_kQ!%>9zjf;s8v5W9YFEO4~of_>D*#t1Zd$ zUGNK-ATluUCwBIL*Uv@WhKL?EGr#qu~GFqyY|T;PeU{`Sn=V3^-uE;;V>> zs7MB&#+Z-K$-qzzqkki(BXobVGme@p!O8+Z&kVp28~^|TK>%(hum-OHcrX9}0YLyc XiL3#uz#EJJ00BV&6+&wOYVZc*#m4#W literal 1154 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 O0YLy2LTi9(@CM_CE_Cn! literal 1550 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 YIfUyq5uE@ diff --git a/samples/h264SampleFrames/frame-0101.h264 b/samples/h264SampleFrames/frame-0101.h264 index cb3e1a08034de071a1af52d470df81b214358616..8a00e2996d28f21f5684f2e7f93d1b910fe8e0cf 100644 GIT binary patch literal 6370 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 BR7L;* diff --git a/samples/h264SampleFrames/frame-0103.h264 b/samples/h264SampleFrames/frame-0103.h264 index eb0de6e0937322889bc27dc4e55b618782d10807..8385b601c570155da3b928e1298a02cb85f463f3 100644 GIT binary patch delta 1232 zcmV;>1TXvb3C9Xk000012`~Tv0YRET8oUyh{{cu6FnRzzuSINW|C|6W^bDpFN}%0y zkL~y$!oW@j2NNnIW^5D6m^ab?+*}h|E67loonS4#><`A^|E=W19~;k+aT#IwC4ig{ z48R37avGqG|L%>2i;VkCN<}6zf|l=W8GSRx(4zaEhh@2phu`Mw&NF!b9nS=Lex-Cl zK#8*4K!2pGICsoN{IvN87tUGi3Oe0KTf_Z&rBlHllkNf{ll}qFm;!8M>qm}0Y=s* z!m-bfhl0=i0HDQisnYusAa5BZe|7s31D9KdVu98hH#nPd)bgznKf#NL`2|K1Q^wpo z{-T)uv+aG@5&&+33VGXQOOD$4{s40$5~&{}qNdaUBgUWsNAV`W8ZH7I|6(;DZmhO% zwcmH&|9f~o1bA?ZdQ*VyE?uwvh!{I6nS)}XOa1lEvj71AkN`mpiJ(6|YlICgbU;$G-#*~Z!l+D^Tsje$A?Y@$=q>~Km1N_wHw!A*FpFB z2rp2$<R69dpU=MuMHAw*H zf;%vDK|aL|0wF4p0G#c#Q3a8YL=$VYLS2x^^#ia)koi$;GlZNOBI_Ph|KRvQ29^Ph z0X3t;O7pA#L+On%UOfSj(V&FOq8I{re+1ottus9mo$U>HalfSz??@0^^XmcWVSoTY zAPuzkL{lo}0sy~U0|Z`nvmhul2|fyD4R{cb(si3HG~q0x@IQm?W1Ld2)(|%lMX8Nb zIYrdp0U-q}pY|BBiZf5&_X_|G0$LSGB{e=i^)7!bel7;YQ? zqDINDE=hjl;P9|-zDWTK2OA$=B5*)8Vx^@{6{{D{6!utoaJuY{|FI(!`ZEI!5k9(N z00Ghf!rZ7SMQb0vA>#$+nZZDJp9y!+GA=4t;QXAG#=$2;xgeey z#A-m@S!z$M-vGIS2J9>wyL%WGC;UW}I3gtrr~GNV4U514*hC7#21IhlTgA_ZK4F!6 z0L12442dCM{<4|BjUv7e{e!qI3ZgRI3<*e>000mfhwz_^IsihNSTBzj>6F&i1PnZ2 uvfv1I0003&0B$Cb2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM@CM@<30DxEvRYD;}Q~xLcfmh50 zE=&;;6bS4d|MO#2e^?2?z`|k0#T_icf=q`J!2e3o_kL+G_$E5X+*|~EOE`V>3_iaX zE8kuS8Z4LV(NE3rC1)28?qY@g-~a#r|NsC0|NsC0|NsAg|NsC0|NsC0|NsB+O940@ z8Gr%7vV6m(2O9tTp;Z9tiJ}|4^`c``L!5B(=KEmQ6MHssu>i7{=b*eISI;=*FMb}s zOzelDWO%YU=}TgvT(P`E4~Nt+jW^@t@(VG!qC0w&3i}s3*@u88ITH;40@Anm0OPTG z@flj6QeC|S`WL5$lVJiafBo@cW&>bIFwzplJe+-XGE3CS5b+>h6@UT+7+hjqD3EX? zw-0LIZkz#!28gwvbhO>ns}7F806OeSL&6oDrvPbt0S~gW@DKnX4&6RPy~8!^y?5T0-2 zfD*@-^aLDODG0y;^d&8flJ(#J_W>wS&2P;_ly+{+y~IQChs+{YTPRx#7`2)I)#;U# zU%O=Cp~g;gQNjqI7_yvr3gCY+xh1&&;=thWgPd@&13s*);aaVNAL)D&i4TOqkRuQo z3Va3t2W0_>5LP7(1EUr5;6l?54$Cr`>4MR}d;}1xfettzlP?}H;xKhQ84oU8L-&D{ z6Ad_17`wv|!b5w3 z4!mdTod}%x00IGF(7@S=uV|6;^RPD*gzrWR4PepR&4MdbkV*gxJZ1nW0LV#zz)|Jp zM#?P~4B!K)lC#2-=9|C(5CaQO0S=pZz@F-@ioX2;jsOlr5GWBYGY39KWUu-F0sa7h z6a<*fnJ?zz1_$>d0~8S80*(uG$naDV)Pbx!LWhNs(I}Dd1}g9bV*mgFK>%(hum-OH fcrX9}0YLyciL3#uz#EJJ00BV&6+&wOYVZc*KHLkJ diff --git a/samples/h264SampleFrames/frame-0104.h264 b/samples/h264SampleFrames/frame-0104.h264 index 8cf25264be9eb0c9257c89f61f7d78a73eb61711..9895f3ac4f67a41c543c7b9eece2b76a2a579a42 100644 GIT binary patch delta 1204 zcmV;l1WWtQ3GWGN000012`~Tv0YREz8oUx96hQzJ0bqzAz(hK*Ga>^WvK#aR5PC3n z1U>VbHsCc^JVRg)#i0~ordTXi1LbiJ|J*zV1S%zru;HTYlvnnJ27N+z}3Hee|+#q zlRyC!lS=^!lS=^!f9Lc0{QiGGpS~~#CH+x2 zMJexBnL!i)`l*=;9zC^DfB;+oKm)@`oFD@@0LT$<+O-Rhw`af{?KQ6R)b@UC&5xz= zQByL)JOqt!8pnSs(*OYgRJP!%cmM58h!mcUSsX!n4}tK2B9I)WKdikH)1Uj86&`1M zsqnof%>V(9X8~KV?3ey-k}~fHSp+OfpZ*Atyb(XL1v&-)AOs%0hz;>v z6sy}0`>EiElRp6!lS=^!lS=^!f9Lc0{QiGGKLvn+h(7Is0Itr{vu+klUd?{eK zNx^>y>M~Yipy5N-TeIo}q`>y1NpwH2xPC6WCBh5%jfyk^45jevsPaZf!8BlBANWh2 zj9`nvf3H+7zrjq<^a78)G)6pzpdRbxy=d@5i-HMkD#D-uh|GwL%*cq$f4~3!01iU6 z#yO%{>Vyr~Q1TTy;t-sH- zn*-8=c>>ZR=iju<8>$M|ykb*(|8M>1vJb*|s2%jh*Ne->( zx4;MBgCm00n!g^%pS=JMe}Z=$vvMr(i1+M3o^%Cr&Dbi(sndNz0o9YAAR2zFnGhNEI2gha6jo3sC0e?rV0 zfpU}`VWiSPf&OA6Y9IfK*Z@7C5;x7HIRD<=_uJXCGkl9a00)OyffE-m^%%hL0E#Kb zLKo`@Z}eKo<}Rt>*npH0003&0B$Cj2Co2kFaQ7nK>#_4rU9$K S8;k$|0YLy2LTP|%@CM^aq!n)f literal 1230 zcma)+X;4#l0L1@~ghvw6@)QgS2nMJ$AOeaJdu6PjY z0T>Q(WEk#4rUFweA<~vq3IQ|dlmJN;5yfc~uz@7Ls^2@~e%RTW{rKBi004w{|6tx? zl~wE)lTqEwfGtjuXIEwo4V(O^(rZ)S>z3Zo&1x7cO~J^974a?Q-C|pA-H3L<8MpYyHdb@==%8I)YCxp zUJhe=7`Joqs-4Oxb~CDknM$x%Fs)>RS3*;if6f}DyRPThn)luBetCwN)9O=7?7Dl) zK{3~qTcM&3aj7rD0nulZ$>@kWsWNO)VCn%p6_^6khqJhAV-dZB$Q&ZwzEbayrRR=1 zWzX5(eL^b|7rTk$B_n=+icjYCcN`da5*it}Wp{OZ%F%a)LzjDWjXT8w^^c6_3WVa=P=tG7LT8$b9ZQ+ny@ zCP%|U*I{6Tk8HchcDm?OA)yHVa!WsazRKowS|1r>pHVU~G`K8`$s}T8_K^m1$QkHs z_$*P@Zox~=yk@B5_Lnl(J-*};kiYpYZi_NkQq{1epqxah4-={bVfdv-Mo%1@M7+>Y z%ac&|DJED_%dzvZXF`5sOT(>_QzmBASZJK#TRdB#HP@{D%qgVXb!Zyvhl{N5qs!6# z#16U|zQPTXLtNwFDTN>MiX+@`A~AV!L7n~CxIb>gkcy)TYDcNx%oJPAtb6|886aZ_ z5-49w<4)Dujg)B-02SNa`G!K>y4osUydGSOn8o(iG-^+~x zl`f$xt0ltWdp47gHGu51+1zKUylm3lH=uH_>JYCrBG$|>*ykNFUvcW)^KEM2jf`wG z3DB1gOH>Dqk_1>TT)_E}=kZTDs}?muNlV{}nl*ZWz@9)`aW4~D9A5jP->!S|2iJbsXo#!aKvqNzCvmvDK;hvM#gz>DdsMU!Of*t3WvzW6&^PfcXUWnF zp{)~gRHF6SJ36}A7?;#4K4Ms*GjIQq&5>umZEcs|a_w*9@7-aAsu~Qt;zXYDvO@2;ZGsS5tjPk(-z*V3`0 zv_c~*zy8L_#nf7+pW3<*{HtQ`cH z7nDl&a&ctWnRI$RRA7*kXHr&Cl@BWOyuamy(T+yWT$xFRvoHNnYwNS6O|0x{uWBY#i)rQ>U-@G3;Mby4O&qG`g!Nc?8o&^m#4DOpX_Za`k zG5oxN@nk}R#lA%|C;COO?s@KD{a^tf$I6`y0w2vbiO=EKAof_Ml4sME_y;cy-_7)^ zYOrSPkops*akD}90n;>A)(Lk40{XvRxyfsuUa+m%A)Z-4s;z?Mg^2x2MVk)0hmpN0 z6D)JJzVG|MP-5h)`*MFC_p76yUwmj_XjsZ{+QvS~z^47m%gKeuKQb)SuhPp`6zlhY z$DkI!b^9}mum3Z7M6Xr26i3H=Sp81L$;UZOctQ`G{GEf#&q*vka#2+{ns>$gw+kzD ztCwbY&${)IFVN*-y12G5!J z_5X1%GVW&+bZt0(Nd5sw5vVv}$WvRuww|E^T(&S+cCKJteL%VgEFO;zXCH!Lk?uDbY3*U=pYjOa_1a98)x0go732 z#HzbLk#Q7}fCYd5f+z{W!i2yDLab0QoK`3z#+gmemC_59o)X5NE!T@%}f!J0$ATRMy8au&w1nL2TG_KLP20C~9 zumk`C1xgzGV0>OjX=)lR;{+jq3iievQ(4Slr0O-62Val?2nB$_cg%;i%_mrto)+oN zfNF%I>rnsi-XH)F1{fe~Yb+-5w`$JNiD=6}03aCX!GT)+*9U+j2=cL@tzzN9=8DLF zNgT)&q@*xMC5GsVO9%%@K);hlkAuLvFS0Hl3oX&995x~EUJOFJGy-uSy!j!-<@+L{ zn2Oy^BWnZ<>^w(i$Mhs{_A}~m0Ibdu6w345HKW$QeE@DXz{b}L!po&GJWT?OqRdgc;H4JZ#6wajt(#fC6rS0003&0B$D02Co2kFaQ7n aK>#_4umP*U8;k$|0YLy2LTmtP@CM@_)3qxA diff --git a/samples/h264SampleFrames/frame-0106.h264 b/samples/h264SampleFrames/frame-0106.h264 index 19be10d14d5a86158e16251c032efce9d2c73fcc..dc3d92a8cb345ade0973c3c083fec585ee35e445 100644 GIT binary patch delta 1231 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 literal 914 zcmV;D18w{O0003AFaQ7nL7PAtybwGD!G#4l0C?dd`Cb@eT>vsS$=~)-{aJ(JzV-}( zht`?%!PtYc2#%eAMu15#AKD;n8x8+G)m4rZ-`99k{9-F# ztQU>!iVyqFd{@mIN6OYD^vxdFA0!ufx`VL>Y(Rxlx|qF^$R05BesfGUiKl|-)~_wN7&>3;8u0u^6N&=de&!AVaPc#V0VH~MX=0cK$M+yD@K z0KnntP^#NgaUD}w+5o@+2m%KTI!{y6+M>~X$!`rx00INTsVD;?6^}LA5Fq#i0A-DH z4!qDL9HH4SKU55De*l1p2L2L>yuOc034iYZ3>JqkPbNeQf%iznYeDBgIsgbNQP@s+ zB(YLI-wpBFuYX*0cuu8?Eld|qh0(xL9)$#61Nl(20zghf;0r=ulR&$}n)m;?`Xa;# z11W<`QUjoB&u_R32JqPmQji8%&#)`Fia;D7G5F;99tBb;KKv(H&Wl3jGX1{oM0O>v?M zTbryYCg;qEWpojkm!(WjfWQESC}N>~453~qY77=01 za7da?1NFC{A@C(~+4A_&13n^+lf*ng3j)%;B>Y*x0Vp3xrYv`7^7uqZdLSSqfe0wK zC_Flxd%(kO`2>^p2{tN@CO3U=i1wNB-mHR)+nL$Jm;e8fqZE;_2Q&OXlp%oTGlnF3 zs4=vuefSD1U~)O({J+o%ekeRX$kPU`rVLX|Rc$e{z!^I{OgNVL;gb&m9+Th#7Ju=4 z!O53kP6P+V#)CZ*3g|h)0@CK8sv5o#jkH9LUs{6_iD>@nL7`w%Vaxx7Ktu}g0CSCj z1f5PO2NxBPyx;(=wx-Cl9^Qe9S5rs+ZW5w-YlJ%{ybcb;ausd;^v2cBU_i83$*;@c zxPllGN)AC7$Pl&6TjjXG&J=)CsekCPmWzvFy&!_(;lZmiG%fB>Z6q2CAk1U`i? zT_+GFm{jrvP5XfccphoudAY5RiH3vM{{S`s0sy7}C$P5xqJnr#(dOtQFn{*rxK22# zT-(hkM56@&tMPe&09LWlKS2hgicgXO47qLuK*h5KOs4Z~$~*X1W+alC>x_*Mr~^1w8t0 zYJ)1aTlhHu7!l_iE*7S6lYyE#Sql^Y_vk==u!h4k%$TXqH+$;)|M}bg01oT{e-TIl zNf~VNKmOor!NXI9tg0!PH0SR)z#2=201y|VTh^0pTzCQiI&lCBAJoZFW)gRTnSmdG zK@IbKkCMf>`4)Z;z-mv5IVWmb3Jk=3g_8~03M>8h?*O1Em2;FD`Di%(m++_s!!{JG zX{+alTZ{mx03LAA6g4UO^~3>ie+-p@3E2U3&33}zFcqhz#&3n0sH`D1$XiV728flarE2(*e&#^`hI07kJZzsCX8KXv0s<(OpS@=D>`8L#s`4H zjRY7fRJmLK@L*0hAw*9Fh4281DaJt$^@Th?EMOZZC|HUtW$Q$I%tckaf3XGD(kF|! z$TEre)lAA5-~X@x!@DH+MU+YeKVQE^td3&piWqRr{dOJa|MMUyHQU|$$Ne_HZ}9*o zKr!@Ki6w2H@%%=l4b_&!`(5x0m>@DZ@F#Zmv^-<^0<@1f5fg{;H-*)#zbn81Y%+&o z1ETt8&Le^_m&`M-U<_YnT7YCr4gd9&!}i77UkCod+#ZKfI(El~Bw0^q<5yK52mbt6 z0SbBGPl_Bw`mJ*Y903l%0003&0B$C@2Co2kFaQ7nK>#_4t^upS8;k$|0YLy2LTi9( G@CM`R5)!ij delta 1010 zcmVBA47HA<@Qm&S-0@fgDz5~rlBU;q#TKn}^1j$hBkfuIIR zH%M^kRR34>5ffn!kX1{nV7z$;eglIz#XkfhzxD!kA*rex9)fYdw}Y3?wA(%k|7oN$ zpZ@jXO|fNR-oBraffj_S==zpo4q>|NgeK6qb< zLW0A{VkIyfL5j4&f=w`-e9Sxsl#AVG!3CDe%r2lmFc}6R~;UH02S;?$Al|6j=(tIpb+~ix&{IO z1OeOWumXUO_ukYK3t+i3i8`7f35ZFTp+r%__dCzU`lr9}2M3)*D~+ucV-~jn0FDj= zdgEiN87NR4e+hsm?=mpREf%jpn^{_UfB=A2AO-^SWoz@pvqEjgVFh%c_7K|CSMC4= z3>StVg=;*;bkEM)nW@FPllumuMD`{bAN6TX6ew<_shcg2Vx zmN0?Bm2opB>4Re*2o5QKy@oYm)N8H-5CpbDs0`ujyd2QvD>JbB@|EO*%nor6@|U~w z{$CIz9Y~7a09XT-Fh=;Y!;S0)O2XD>5a=X7?-l^ocwdp>Ad&A9fBE|2j5-bi`(6$M z_;Ehr+`}lIi}}Rj!APP217RtAZ7*HFu#_lvJI10)JvWAaq8)@jK@yT#j$vG4)?&xI zeQcT<9AxJ;93Y$n7E=U`RB^c#xBueci{S?_;bI1TSy#f9TLd4|9farzD`qQx002NN zz@Py|tC#%|vQRQ9e>k+mgRpW^_1Z-?ck2Q{p;LyS*OK=KfIh;hg80Wy7hV6efC0D= z#=gZPA}^90&+r2bFsS0_&j*ZfB2t?FfB-=F00aW!WEvDVoB#lTC@g|fWKYZ|$$*b; z4zOb=qRVl@$tLahfvF-e0k*zHiSgw86^AJ9WURA>`DcItU?36}*cBa$MW;@DCAx0` z1$Y9EBL*OV4!zg=HX*z$AVH_y`;q3{8VKQ)adw+(c&3j~k zaPdr@2!0U+1CsE1`B{Z#4T>ip=YkxO!7Y;z0|$Tbf{}<67T^J7RoOh{q-XzAX8;f# zJ~uC#<04}OVc8Jv$J0+KxUzgZn0spz0G_X@W)+8xky`n*}bWijCuNm|OvkB7a zKY!}5IIq2MkkzTOU&2}v1R#$926`ee-k_YdqXw4%>*olhzxLp0i{gG6|JS~C5$q9c zz2<)a0D!0f2o?YUfp`a#IDo?MIuz5mp#i~s}zQrI1Yf8GLN@&lXEYbga6p#OvbjzBq#dNjWl;Sc@H z1w+mMbv_rR+PDBOAUpmF%lq814YhPj${{YISpV>{|8fSHc@pP$^enshR}@R7kSlMn+4fA~b+Oz9qUiVtuFhywxAu;?41MCJ!lk5&sCQBY_5%C@5FQbZZ*nI1v(Nx+*#N-=+H@jF(_&$XOU@4x|@Atxz&8H!ey#R4=J1pw4A z9~r;{lSYP}S}pzX7%?;Ip0{_WulxqkF!Mtj<(ubU-?X*?$e>RsT7^h``%Ge|apaQl zg{DjYb`~^|(1j_JzknESK@^h7_8h`Ve^(F$f)u2j95k1AwO{+d0r)UPbZZl35XMFR z@Blsy+#_nrGMeQl)&V?J2O+2i6UXfb@X&G{6sTNshvk3-8%Sw+6_Y zI0Hblfei|rWfVv%CFc79fCOAbaASHm0Z;@538Zgslw;SBjjwl~;3y#8B^U~Rkgu@>0O*;W9+qC!s(YyfKT2II^+=$8Nh delta 1234 zcmV;@1TFi_39SlW000012`~Tv0YRI98oWILFeD-tws8S4!?;ife@1)JlEvhr;KG0W zL{9~jwf$g3JA^mwIsEnD+&NqqA(7z-*THsn?BFL44mRY_e_$@6n(_qvc-zp(2hKia zr>dTjQ4^711d(6_K>z>$@bP~75fcv6?E?V=w*+wRqh_vt0UvGA)(07N^eE-vdBMNppzeJF?px0$6Q;8)iE004lXApPjz9gR8#&B=qLV~>Ll zaR*63Qn?hyv?J#4kH(0pdt328O(5}L0mnfb3`3Ux-roQQArFByvwB;m6>{JK=3obU zpa%&Tn7$Dwy#Dh9N^+PH*?Q6yvI0Cu9DIr3j(@&?q(l=ilT|9p@B9D84C0f{QR^kb z2x*9N`KF8v#EjU}JR8NlyZ3_p@RV0?GhEOHaCk*+b0097CBP-xG^PKg^&y7{~`Wc5I;YG<0lX~pf zrGEf183u?_DMU(^p8#e7JZ@;TeKtPI>~b&$Mc)yniG%7AxOfHut}wOh;HfkA12~Rk zph3nwfe+S!hwj8N2;5m>>@2_CVljcA28?f*6%mFQ&oMM;F#7Z`H=+i=_ju0>&ToF> zApuJhH-io*oT~j#`zT=uIgRxo{p47H83Xy@Jd^zaBayBWe}RAUiZDt54h$h7T2IcZ zr=x$<``|G@u{mi|Q3+CJo+klS+VoEbV)Gn_)^bn(^gkd2iW~^3DPIKK0VX2u00s(E zR9ezSBx8ir|L}GIEERV^03ZbvB`_Ux#06*|9z*@CYbm0eMxjk8)(k*~S^@0$_o{sL^WQ(VO8*hj3sE0s<-no(|5my)mf; w4hWD0-2eaqK>%(h;0CV%crX9}0YLyciMRo)5WpLZ0003&02M-R0BZ0C<7-(MB>(^b diff --git a/samples/h264SampleFrames/frame-0110.h264 b/samples/h264SampleFrames/frame-0110.h264 index 8af46c9dd76caf106c4e92224c9dde60de3f830e..5f3ebada9707bc8507dcee382d47e215e6b271b4 100644 GIT binary patch delta 1058 zcmV+-1l{|D35f}B000012`~Tv0YRG}8oWARz)l1}Oaw%T2?vu<290YC_)+{iC72ID zKmgsw185q$UO9Yfxf34%`?_$mwCT>k8k7@+JQM?W$cc}c$hjCtc@biF=X-m0dT-0& ztAtIK3-_nAVBPJ$Z@~X#A@r1yksC|@|Nr<*@cdG+69PnrfMjP8nCLw=y*0pYZWr~%SjY+Euu{XCPw0xy%^ z0tkNz7x*K@f-ynv5qDoe2LLeV;AcE|di%)BW*3}*1waL@04d>uN>`-M?-(XHr5_ngmj?PPP~C|KMjcgCzrM`LJ+W znog7s4k*87;-luh<^@83kpZc&S;bFpM`yRbA<}J3@W3f=_fiMG0{AKxDEa>{suE!( zgnR+*QGv?C!8L$E8x;;UfExvyxc?f4C3At+YzPniloIB>Yv0+oNjQiX%2})%{DT6X z8W*62fA5Fb7xwIXnab zM)?&^ggIadKIdQ@m@ol>bvGaZ1&Otkyx>KE_ZUEwxm9?t?g3>EA{O}srhI|EG1A@_6O5{+Z#%Hui1J;#$-gp2V1Xv=;Or5+pyHY}jY`_3OXaSlm55BN0 zkJRXq62AV>0%G^7=64|$#IJw^%hO*~2q`uHX$%~z5?VX1GAQl$sEA37Y{GJt!H4%4 zHu=E}5`W#4VO1PfvVXgv55w2GTBQ8e*Mt=@p2YnXM00;^I z0D#6#00MzyJO~|>C1Py(`6UYiJ+IAB6HaRpB2Ytz5GWcL-9zQENNWoI4f1Us! zhGNk{CS<SXZ-b&4 zd`lnm13+38Wa-@+5}`(~kG9#5ga3R$v_NMFa!U|k_dp@Q5bOW|0YLz6CddY_0C+F} c00BV&If=3XtH2wK0003&02M-PfNJmt+P^&Y0-<<4MZFNZ`+SA?qFNj=avAmUVaQF^W(mbyl<5Sb~iYz0m=^)!lpl|8TBfG_3ED zaU4+p|A$q8m=Y!om2-&A?eJk?u_<5*F6*8M_i3D90|L3>T4-?ntF7@6o?nxXQ6X;v zuX1xByv* zrk@rwO44q45U)658!lZp3wW8eED(YKGlBt-06{9pLqRW8ZW~w#U?jNR5X81~&cu@+ z=EFbd59z=_DyV;IoZTc#2FeKh0HM?q%c8&-10DLbAVBZ{1Od(pfB+BxESQpyN>zvA zYa-QvAQ7HmW6gCnKYTLBfS>>nS`5Ajn%KZXx8y<-C_vr_xp8pH?+5`13LN8`3O;eU zC{KIg2?JCbdVNlNV%uMy31c#w(EwxzUcKB`&jE~rLJQ`7vGi|aS4adfY)q1AS=}ye?P#R=71!G2;U9AudZ`%d)H6>oCGUtDA)D8 zVf?3e$juGV&CejL*E!RNUxS_zk>D(oF9HgGlb9vXi;_Hf;8(&F0$?Ks=MGB_gu-s? ziqH%{1||TUL0|x9Qn-vZmc8Iq@HD_EMgR#+aD^=>B;0@jWDpL9ccBc`+Dv@c_jq^! zkpKe*jH<^{?MRTQ$JO*9*dnrMm0<#PKu=GK(=%_*?)8ZwYv8 zOIqd}1_9t2{g+b$z)vTma-kS~rY}geU+oJjAAmsw8Bu9s%{EB0=l!S(fDX4Z!S_YN z)b&6W7vKU!tcT{S-o?tm06+*2Hw_ej*`NRj2Lh2JE+Y;^T@|fi_61LI0F-6G;Ds>% z*4zvL>JUXl@jSRcOpd#Plv{rh4M^g4X~6ghFvQxsTpz)_mVMx55DYb0z_j| zKnHmM0L}|atOZRS_y4>j3}HyZ1t7B;K~E1T0&ai+00BV&ZYJmkuK;*30003OK>#_4 Wx&f=e8;k$|0YLy2LT-R+@CM^S$iQ&` diff --git a/samples/h264SampleFrames/frame-0111.h264 b/samples/h264SampleFrames/frame-0111.h264 index 047f949cd724150f43333215a60b269cbcd44a26..9bd880d71ccc9418ee309409664a2e61c3492391 100644 GIT binary patch delta 1279 zcmV*&4{L2+NB7n)G;VTPx&N_}#&8`K5CouCtUM487>Y zIc6kTM&P8)qWqEhf02Q_y4$Yr_zz_lZGdxO!kYAwWUaq{+W|0d)@VT^b~h@A2gPgu zBM5bav1f&VV0VaVQY}Z)_^4V~kciF=?Ot<7JRAXwrAogrOiU`%>O@w&{rCXGW<~ic zkqjpP|F@8GxCA&wCqz`+YT_*rWe{}`AtS)S@B}EZzfB`{_%Z8qo2-1JkLAVYlb%iS0Y8d0* z0B(R{s`_Nn@J_}!1%(=nVR$Iic{l&>5Qrm@#T=rBd1ZhDA&1cb0|N@IBPec!3SIv1 zzTckPaub3W9>I&0;Jbf$6X3(Z1G~)G`#1mJnizb~rNpnm3G4vmp#X55P~-a#?{*ye zgcv8R7(QnWKnQrhAm^O1rN$OLfFfWqm|zk>rG&XD-MwCbVqyoXFHW^oQ{$!p=|ysS zn5)Ph3G%5U?=JuaEP$YCj>Sfdp zJfDw0{oDD6${$`Rz?XoDB1lXry_hXnwM+mlp1}YJEB_E8C{)`1{MUkL;lqjeXE<>!5(w%Mv<)^v2cGv{Y4f07zzl$S&!j{@8^jZrN3$@ku4ECV_!*2rQ%d&-75jQ0K(&q!I3qyKQ0;eZFU?RYM9ck8|YhhP8z p0YLz6CeR-SuK;*30003&06B@Y0jt0pi~s-uK>!s(Z2)TU2IGDzD*FHc delta 1467 zcmV;s1w{Jf3Ze{u000012`~Tv0YRI<8oW4Pz()i?N(9s*7Hz;7)b+wDe5fyhI9ebA zPt#9Fr8hGh?(ia$I;0x)mo+F6#p%DQBk1-sUd;)F>(g7iQ&~f5n;w9q3B0`cVfK0MTBm1J#c))8Vb}L}4KhrdC4n6PV8Vr)U zUpf9jDh4qJP$oT8YU{9Br{yYCT&KSSu6S3G{uYt&A%A?qWIESVB)v?Nm(UOb08$GF z#S98@+yD>)3=L%Y43ccjoItM76er^GfB=9600%UX2DA?{FCfCkfC_^)!Pc7C-@E_;0dQ6X1t_hTbE!M5^vG$f@COJV zs#=a*7!;5I2mlBK0I-m85dlt0RQ4NNN&vCsMn;j7GBPvp0LL)r4Ghw|(onIvq_69P z6n_GvC^1a%0e=JX5i0hOKthNDs7S?*P|*PH1t884ha6b-d;B*C3Y;l`M1ZFm3omux z(BK8`P73RVGJT@%5I|9pt48D9(da+`APf`u^D21h5tM`AVQg%Ui0_^Kw7QFwkbvM? z6xz8ME7jfiq4N<|hdut+TBceO_GD?x@L{LnNM0|{Q9W=W*t>ZK>QdODm=Pr};$P9i zGr~Nn01p6iOD}=J_ZtIXgs|F~Qe;uNfx84?44|vbNTgGM2i8}I)doH3ebDov_j?iu zMu&0V25W#Ac&ba-)UN%#z~_&W0Thw&BY(mM*JvfM<3d;fSYV|Ic^?r;jgqNf-uM7L z01N>HB8E+_!r82U{qQiw3nI!!4N79DRZSQQ04Pi$=pgU_{N0dHLI3M3aBu*kV8AiOxB5{IX2+htyodq<9f7JfNzf8E^&x-&Z~$-+C4Vd* zj7(8d5`q%SqQrSJ@di-{VofzA3PDxU@*A<4MQ^BuHLCL>8DAL4QGb>A03d?A!Al}c zpV~O#Qf_pWXojo-m_}pFT7p`ICFo z9r*wO0m)zhqGE9G2B*KsjwE3- zPm9Y12USkvM2tYiL|u8c>LI^-hZm5?-W-t@-2bd(#Sc0|h;HwD>{dd?wo9NP2yvMR z=E-H7`>19EDa227kpJKRz%(<=HC00OzeIn708P*U00BV&ZYJ;suK;*30003&06B@g V0jt0pi~s-uK>!s(ZvblW2IC*mdRG7d diff --git a/samples/h264SampleFrames/frame-0112.h264 b/samples/h264SampleFrames/frame-0112.h264 index b2bd827d8ee9b8f2bb4914b68570b54fd0ebcf54..5c09854567cf3ca2d5b375c183d8c4a021495187 100644 GIT binary patch literal 1055 zcmV+)1mODs0003AFaQ7nL7QM2yfw|>0L`LIZ_tSDmHq)kCLhG`CO;G&(8FMKuzMns@^6L~;sPG5 zZFCcT9jFojSp*a+M1ey3*Z*(;MkXoU3}z^)Qj@^|COkJ)pAMTyH9pq>1i0ed;*yLK zhky65U;rQmC8CJ{38}&8Xf6zGp5YrC4kinpr~tOm1_~ZY2Zlsl@EdI$W8LXxzx_-O zMF0pL~&hWvS_-{JZSM~@c)d8v>f9j(Tx zm{Qy6NnqbmNmy3GfgAv1QnS*}K-hSkwl2X7clKNlA_4#(k(rcFnKysf4gR$fbt(J& zfg0S%Mh@-|iemg5y?B|y1a}=n0oULE-o3tfRt@_OF*x==AFwFE?jHmTasi;>K$-<0 z03XFk_5)D*P|5xfkAevBfY1#n5l75DkR-uB%Rn|H1Woc>U=qKnYUR)j^ZZ0`u)%0Z zYKEjR2Ww_*KzA-G)2k;8qzof^lAYQ zRviWiml2kosfFalb00BV&ZYJ0UuK;*30003& Z06B@a0jt0pi~s-uK>!s(ZGdX<2IDQM%k2OF literal 1080 zcmV-81jqXT0003AFaQ7nL7U(jyfw|>0L`LIZ_tSDm^!fCji}tFm-I|NmKr!ftvh6X*W)78@zf zLLRKdl-wpukqM0mFs@(bY|M2}=KB2q=ZEt9m_mf)95M(95`g?e zg2EF-rTzK@1cy{^a7nreX;K6OB6OS^f&4e&?`>!H9 z5ORW%yzv?na^7Wr08c}{HA9{@ft`~7_XDZ`0tbdf004m420=E8GrGn8-~eU-0*eyv z#OHzRWI5|)PlMv(8wC(FLe|C3l%CX2t#{}Efs3h=Ko1jMLr6kjLGVIik%Q{cG6z+^ z`8t%m0k{AqW+++M2}29(QnoWF<* z;3x%(C@k(V!#-GfMoR$5Y%~Qt*K@(zwjyy9|No8){gW5VUH{km2NC1N!D5j~HBk(D zaLev@+vZ`PNB>?!d+1HG|NDNB((oU)u169PzyRbYTxVGd|NsBMkOON1dQ_zTR6qaA zyZ{6G>2!bm01JY0mNIpyB46A90fk)l+dAPB>;Kkp-X~3EKc9ox<|n`mcgpEVSW%|@ zyW9@`J8$-V?|kuaeZ~bH18ZT&OY(%-Cc-cQXoH+EOkaT^4Z#W|06PW%Gp?QkVGyNE z|NrrTHvkG7w9%Q9U{x$B*?=L0AoI;|hla_L>(M(XU;rQi00F_mf{0KgCq7NQ#k5Fm+~n>@*I0Qe9x)!#u;Q|#slujK)=9O7zBxyPaXm_ zCbdOvJpup$1S3L5M@T|QtbO*l3<;V83#_4z5%Pi8;k$|0YLy2LT`X-@CM_kVb5m( diff --git a/samples/h264SampleFrames/frame-0113.h264 b/samples/h264SampleFrames/frame-0113.h264 index bf38dd3e65239713226ca3f1d6941b7118d29cb1..e167dd9a294132204b4b9caab3b5c097e438348a 100644 GIT binary patch delta 1120 zcmV-m1fTop3ik;{000012`~Tv0YRI98oV^XLfH-A5sYhCXU%=KN z6vG$W1q1fQ&sIoj5H3LDEyhlVAfHlV1ZHlV1Y{e+d`LV2e<$`i2xvQ z|Hr{4L~dMg0AyO8md$PfoNlL!?AUUM<%g4Xa{w3tkv;>&w8quk!H4~fmf0_Ygdu?> z5`&OJGMRJ03=VY)X{mpB1?4R+5MfLJ1ORWb3N(nA8Ud~V#DZ-o_c|@V_yWPP#%jzh z1PeiRJ%9iqe`BN%C*_?0IBWrx|5$234b_$aAOQ5?O3D(5IQ@{SRsH~qm-9}Lwq8hZGU@7Ci0DgXzZGzASxe!Y1>7XZmv5S@@0OxJ9< z33piK+3HKL}&|I7+klY3z01SYxPasiUwBqCGzx|+Q4T9e&`hR60kCoG> zPBFCBgR9E{Ix=ia5UA;c<3egSC-~cumL$Hz2eKY3~!5B;C8Q-u5C$hjY zC5Hd{%3=Fr%$LFcuy+Tc)J|Qo;fWSq?EGq~_rd?aNCFho!Tuz3=hb7FFyIJw0003& m0B$DW2Co2kFaQ7nK>#_4xB;uc8;k$|0YLy2LT&(R@CM`IgY{eh literal 1384 zcmbVMYfMvT0R4J{>vR`zUwgID_Ig%+}wNSW}h6Zc`~fN@IA&R=yxfH}mSpae^7*1Ot=_S%hZzGvg?1 zRe?&=hWuT2Cv;cN2hNaNxypN8#{YrAZmY@#%QpkV4J@E=x?V(8uPQAR6(uE^)?a2F zmsP9Q_vAS`S{qo4ub){VM=f(W)WZEaDhA`#&NWufgfM|qpt6X&S<|Jzq-sCfkO|?C1d-u+<}`p2 zO1V;XCL(ohy%Jeagih^;M2zhIAF)eoNuMw?uwSzibEn}Rb=gnRuDoLL$%3|5Y*+<+ z{IQJ#A)|xS1V2}cSq%G{VA()2eZp$oYSPUPC!8wkHzTc%p~V+B_9)DGc3Pzp9gDt5 zGBs@5RPd-CBGM@ZD8voRx=`EvTnc|1uDvAo`@j`J zPy6|p9U)H~it&TMyNOJ9<<*Xe^?|z6x6W#jlk5EHPQCtT+&fnXGmaM?PC+X=Y~%o- z)gl%*F?9=)57|9Esks<^ZxKi4vVUf9t%l0|h4_ z`{ne6j4k04(Z`e)4EFuO2bXhgkHn<3$oyCUDFqO;w9Q1KPyra~drE6);NEOXx#OUd zDf<}>A0yH86*;TQ?LI*Omg#68zMj;?5H1coALceq98v+isbmskx%l+R`7rdhha6+- z0%pD9mg%CYEM~G@H}GA26Hmm>3uwgRfcoAb{BRy&`EI-$8JIB7hnCjL_o$;or{zkPP@AM*qO@=k&jq!Y2q04a6{<1Ibn!vw!OlKNPR9H}k>kIKmf{ zEKhp?H+@ha(yzt`N(9XC{0OH1_;C2{052d;f!bh%+fem-Y=7YlCJ@K~0RkWZ5RCu< z1?FA=G-v<>3d)2y00>bi00bS+SG;p;?%WLC_yAV~z<@?m$^^x7Q3yN$5*v`jaIf_k z!bxYDK^y=tvSverLV3J29#9GsTQAesJflwkm;ePp0e}KQWX=!(&HxCZSVtAOA{BJs zfH}=IuJhFPel=Bb^u8)8*<&Th*|b;yt=sDJcYplOP{1gPPPpe4?u@!X0DjT>+5ZFn z5CS;>rZN3x__v6E?O-Y%XZxw`((nC?fCBg({{>~g^K!%{)zL2~ri)|$#pat||u|G-!nd7Kp9u-`xL?IyrII1|bmp;8}y(Tr5@Jd$1zv`K&N!7-$c zgmRfX_yLCG5nf3?!<0!X;sB6hmFEWxCFSi`{_p^P3=tg~#MwkGk#D>J4}*6I>avWc zxk~kbOBDggY5|1t`$7CTISz_kTylryfCLicWtf#0htNr*2nB+8Nnov185fYQ7Xz9D zfMQ=@d4VtEE(dsmaj1^nK;QqwnRO5U>6`<=ECft|{e!|;TBwQ$06(jr@vt$Kikp@faA*io56nCIQJVZ-!m1dv$aH z!7GTsxoWn3a>T?uU`BCTP-EQM=$bL!2YFBpJ2H3}3~p4I2p=r=Xo25>|C;0gU=jCL zp$MSes3sFB%2KlUKbeanX>%Sc=!Fwo#RJPTnyM;X9}pN*?oEHg8gOx_FajR4$c+5n z00Vb`(=H-ueXYlo2m(tG6rr?~9dX50MTWo3L}UN)TL1y=07%q{ zh7v#bwm;k1voVj5v)}*_0fH=Gsq4~xOU(iB0E#KbK@a(bKl&|Xa~D+b>_AI!zysMn zUJIQa|8RZ)hhP8z0YLz6Cg=vQ0C+F}00BV&If=RftH2wK0003&02M-RfNJmt<6{Z* AnE(I) literal 1475 zcmV;!1w8ry0003AFaQ7nL7E^Myfi1o@Ft)Vz@!9#BNP2Eqj{r=fC4}jdQo{TLD#{6A(R4|m4FVgH-8`iQ0f+6 z%i$A*2LpJ96M%FkO~Sp(U-}su)sN%i2N125QER{d`wy$ZNP#|BMEBPK2kq~1R!`de zKzITu^;N%`cvb{r`vSm_(ggsXFem^H00ID500aPl3^W^2A7I67-u6Te4gjbDgI!1g zTqxW~_#}Z;XaE1g3>8$$4qgBlKqR%h_fi>wKm{%;gbl2>^Z@s2m*& zqprmktzZBk*B5610SS-*5U0QZD!dth06+|+NB}`V9IsqJps)$%+e-ie1%(+L00IgC z03cED00>Iv^Z2h$Z64@JyUlnP&UQ0hA!7hzR#? zMMR~KN%@-x4g#c#W=1TeG_6X~_^|>ZBm@}93K_$Xc4fzGWG%k7+`0Ha0ti9F7C@mw zXU{lL`Ebk^00%??paS0w;|QEwmOugKAT>V)n;f3PP&8S2xL_g*w;Wb)w8no2-~bQ| z3oB^g`oX}~p)A-~;QzxFZ#RlyzN&+TIOI8e(?$kjMr_E5>Y`q(|IMMfCB&l0C0$#0}oGvTn!Ja$EEN_!lA$_0R%7v5rhD6 z01yRN00(#jmkY|@@zHv_*JD*ms2F2Hz5<{M3;07Dh;u+TAa;%G@&N#^^cG=Y03Zcs zIsgI;;10aN06+|Yp@IX+He^% zo8ih}bOFP>-#T}H|MCPdZScN{3?<{Iw;;E90u!eZjs|mH00;mA0ALJ2ZFdnLoDryW z=SVaF0RRzB3`>~DZf*j~$u-FIv00Iyd4N=kg zwg1;ep8o^;+cw7iO0Mc3fB=9PRR>{iA^$INfXq#kY`_2z5dZ-JFaXf(v1zaP0uBm* z6P=5w`!HB4s}#?m1i*ly)ao~SjDAivbnXlRF@|af2?H~=H&}jEF#y)+Bo~!=3Qy-7 z{)C1}ARfc;4-)5gANS~&@KJXVXJip(GW(^J|Nodem~th~H%#CFTmU}-lOPfwFae-9 z{;gC-00`2j8;?N*G$1zCJVSTXckR2Ys5Sn{FL&?w3_S3>0W&}V00BV&ZYGEZuK;*3 d0003&06B@G0jt0pi~s-uK>!s(Xn<<)2IIzZS{MKT diff --git a/samples/h264SampleFrames/frame-0115.h264 b/samples/h264SampleFrames/frame-0115.h264 index 9d46d8c16353a62c66be363659a21b7f68d11019..aafa90658ea5fbd1dff8730705e5a9de6b6d6fac 100644 GIT binary patch literal 1015 zcmV$2tzw1Yju< z+6hFSwg(lsSV~Hjs0o0mLx5&(?vMX{d@fwpK?ME_^Rtobj|}DY89#3LP{Kua{7(1z z;n+Im4F;mnYQeUKxv<*(gJG*cGv%CA;6xD>qwd<`yl@aZh%wL%JH&!9UI0XXSIa;U z05B-q9zj8)EOj#y#wm<|0Zae{04DSRIMcxh8ogn>F}RnUJ=L_k1q5~SUj#7RY!sn{ zz?mE}R=mf<{r?XTKMsgz;$6T2016GlD2n&v%~P-L1;s}`)RNjoqW$9l?xUdyh~W{- zdtj0XD~%fALj<-DSkeI=1zNC9b{Fse;AasgB?D?i*fcFoCQ9(gU-}70UsPlJ!PZBmMSH3`9dcHgw1$%!7h}Ba7I7d=d ztlxB1@@}3Vfgr&@G={y0umEraE-+O3K8r0vtN1@PfCH1jKooD0RQUHS0Vmw-1Cs^- zC@!Yt06}7HWG^@oU_HhVB`!@~EBmMl??))wh(&|Fn88~LXF3QSD6XES>&gJ^0~8WQ zEEpnS3wQuhz~J(mic1y#x|WUG-vZy27@Bo1DG-t&L~ zf-DhaqE6l$-MKL}4R8Pm4L}B1u>1LeWOY$uicUeZ+`c5ZQ+0D}jgi7&Q2xh6!%UFq)1lSwGxD^ABF>T9SKPPY5Z8 z8^(%Bd0+*>`&1lYm$B;kf%Q570RdnD5E!YT08l7rviA0VCkXaiH{2 z_BbR@>&%2wx(M#l(&E2>gv&QY?pbDbMwg6$06+*z;sN71XBFaxLq7l+)k*^ij59*j zVYP`c1Gm8Ff-i&qFb075GYi}NJT+3SUkA;%kAwevKv@993Lz$nH0Mk>0v&(=00BV& lZYJ;suK;*30003&06B@g0jt0pi~s-uK>!s(ZvblW2IDGy%U1vZ literal 1022 zcmV7XbW2Z@!{98PB&Wg#{;c+}$VyiQYq zKng|%w1@2jS{Ypb-~^A@B1Fk>BpqSTrgESmO}7l2Rz1Oo!re7F}D(D?H1k~{>81S)8T$wFX-cY**2a4i+E1LQj>s18k8_JU(snX*ae7W#hVL__e8@82|xKF_tA}1eRtvFsTcqo z(w}{4pbCw_?UTZOg#`fL4H5EU-go=8A)(wQ4*t07Yuk z03iYv)l!+XZ>)l5@@k$Hz>md+86zS%1t^g}FYE{yTqr64hB1bZPsJWC5J&HZbSRy# zd#6gU01yNL=HRiPXaE8NfKsG&#$(vC!&a?6znk)7xi!jiU z0nqNL75Ehqz0?^;3$evQD7cW|r~}Y*tdjiTH(&~=Q*H0SV^FQ@&zI~3Ffk~c5bt^& zgod@ho)v);m@OU#4XLo4pa6gY0mZb_O}5)@G}CRh|NH=aFaSh&0ikh&QmH@H>AT}1 zVtH(40APB)I{^W53J-G^xxs)>+`0SZNC*Hbrfn@*J)K1TiSv>TQ*67D13fl;enSJ^*67o}V3d#2{4tKX?bhsI_*1i(U&K z>^Xoy1U6!Zt{V0Q0ED36i~*@*S!BVS8wODT22(G9hy?VFL$J~g0)b*Wrr%RzZ65i< z4gjK^PhPBibmc1WabR1AWO>>_I+&5@n1AK<6gpEFczPRf9TR6L!0C81cSe{I@B8Kk zyAS`@9ykiKl}dwe6o&z2dMQtQ@cbO{L9QP}dYKS4YDnn7BZ|PCFaQt(lYxc$ERc8m zLDPr;FbkAx7MGBy7~lj0=Nm0~`T)kj06-D7a0(NN)66q48O3VG5lC4%Ut;L73SuyJvnJn#S9{JwDziRK{BbiAC0l`uI355-xeepUd^0IYF%00;yD z(t%|k{&rAGbY&9T=zr6Nf_s&t+DrpD&=4FyDU5)LKiBjIc|tFf3U5L&B?QQpYXfaC zyQqQkf8yF_s8(1G3Jj!&@iM4?+3tUD!K@|mqLcUlp zp#dweI0GWEBSPJs6R-d!;0-_g31P89b0l?6E^#G=j1TY}995g|GC>D?)NS>Gwvw8jKz9GXf zjRYc;A$v%CeKwfI+b!dR-rfpa6zKJGlr# zJGlt||M&nt35py_#u&0~>GPXLkWb7|0DDhR z0)k?u7%4=SsBBhW9{@6{xER@w zz^SOZ9g<)jz7NpL?qFyOLad!Tqe7G>-WHd)gUt} zC3G$V&QmyzgcidO?ae&lQ*tL0sDUhIsK$8+XMZ=TZRBFr!EAiM?Wvp zD##JaI)PYTwX#Zh{}e$30r`OGXX@(*K!s(Z-8p>2IB*o Bv?2fi literal 1521 zcmVAIs7L8!~zZI0ciwz>Ld&lfKNyQhF#v*)vyieK;d_FcL5W83aQjS z7v=&O7?fTJIlc9Y@FDwu&HyHOxDmo~00ICYQ%o?!O*GRCFw;!`{s0u<01yoOpa2L1 zfRJF?GBK>wE4$f%;_HMU0N@YMs0$L&9ljiNN6z!r}Fr* z5VU+y$P0h~fK3xH`4!y`+~+uNx8L2bfCr;ITfXdy|Nm1E5)>%J*7A``G@rfq?N$c= z`aA$!Y=yadGP&<*w#0@fAc_X6!(mbGY3lHD_-ZgV1|WI`0CX|}f1TAKO1r7|=JwkK^r8Hmx0098t3kw4a zj1F~FtI$J#GXWFCMkh?Hs>+JK00RziqzHm_wnAPBA0ADpTo~XCjHKl^-~;FZxmdM( zEMO4h0A&mwz?96A2aptyVg)JU3_afe22eO6a<+l;qa5To%!|O--~oG=!@fY)#!xMA zfdHWqtHLqv==2Z(2nYtJA8n5|0w5EF4m$ui*5t$0pl{mXhqTFG?U{AC2(|PG2si*& zM6))DHk)>{1Iu^-7zKQ_Xutu03DaOC)0S_H06+q5SOyC@6AJvkqK0N5@S%ZnXgT1j z%L^PmTfnub)EY+uAG_p=V$|@Y4irU}vR>xw3SGb^03S_g6#wG=Cxu`~FX99EA&?>E ztvJ9C57VHB_gk+7q!tv^DT)_C1VdI~cE}%sPyi4F6K6>UMz*kL$ao9DTL8=_(Zu$V z?0bFW!u-!dr5+w{j7p{g(0`|)87NEt|G)?^!5zAaioW$i#BK5pfC`S70BFU~rgpvU z5CH%X4{0mjMp~c9e)~WG5EKHHBeF9d#hx0qY4!k9hpZH@Abyx_P6GfA!G+jg71;p2 zG7)edJfi{ePF@9t>d*b{zxN>Bh0002=1 z^+v(*$s_jkzdUra4Cs38c&WmC5#Ae$s7A)k%O}*`K8Vv80wABfik}!mEq>K3O~mNC|&Xv zF;he8kX9SJ+;%H5V_!FD1Q5p=kc1Owo+tNUZXIifEeMjK|G#tt7O0HOZoM>D_y`D< zp#%XC3_=huSB4Nyp^^-``~p!=Oz8H{@-BxM^Paza9sVb%(hmXW( diff --git a/samples/h264SampleFrames/frame-0117.h264 b/samples/h264SampleFrames/frame-0117.h264 index 9fad1050cca4f70eb00280d90993bf3602123753..95452fc02858b4e261db3cc0f1021b59de627649 100644 GIT binary patch literal 1149 zcmV-@1cLhj0003AFaQ7nL7D&>ybQx1p(oP z-~fOyMkCWt3;AI7MJ43lj48N)rzaX!1m8zcBmlM?P`MHX3+rF~zyTPTr*tr!mZeHh z0su~UZmV7$HjrYTE&vH|t+~Y|SSQ{8-obzXfE1dFcmPdJ4?{s1S@h(`o>8>|2oxDf?ptp>Qb z^Zdl1JP_hg-~z&uhiS(_V^$r+06^7idBOJ;oU|-5I2Zs30s@TYSqVl=Ujz&Sm_J+q zT|NL&!fT;QK+ljQ8@q}R46cDty>)q_AnHd*9ROH8FTiu;uzNfFzu5##5a0pp=^iT{9NqjtgJ+mH?m&7OFw#KwY880Kf(coi=S*uL6OCIv5BPc>Gy# z=?A@vg&<&y4(C46Gzt!vu*6Eqp+; z_XWL#035aJz!(N^b^Xi*fhJ0L7%)pw9+5pw8jX1xX4Trj|N8h~8Eo(5R;a6PN*1vE@1Rde@kYB8a zp{;OW?-SS*k_rP7|3X4B zK@jniBxA0xIut;0X)Xwq*|HM4X#c+DiI|Q4czy(@g5*HpFFXuMJh2Zf{=REHfB=A% zM8Gh)7ry_O!f0?cP+9~r{!&B(0XnF2QXxO@PIw3by0-}x^w|tP5-29XLI8mX6BiIX z7+2|{MLnHX4$ch>^6@c%g;f8Vkgr_sdFVCn2Ll6)Wlnfa?FUM5fb35#kRn9;{_uz) z49Y=FV=EP2AHTHNKrqAHjt3SxT(A%bKZyMNheu-2Fo16o&9o`}wjaJ=9C>gBKmsFO z)?=JRu)1MtbB-E(1PM)il>jIs3|e0S91L3#7a99+bMu4`1bRuEZjBq$6m*bc_Mcpj z5PT4liJz7xf7+7a7Yhh2vKIhc@azE$zyJUNK>%(hfCjGscrX9}0YLyciJ$?iz#EJJ P00BV&6+&nLYVZc*c1PGZ literal 1232 zcmV;>1TXsl0003AFaQ7nL7IRXybQTVa03z^r z$G9+|)Q{}9|F|7+01!?QDF7J{&s-|f{~!B+0L%aa0O2Da;H*?{ke5BA&G33r20-J2 zMK5k}M70XiC#uhS01y~VqZUA`wxzX(=aioWH8~g?SAeJuEh7IE%$@);fB~yHgT&x* z3}qLsFaQJ>zyLxh00bhy0*RRyF^w@pR&57;crei;R5#A+MirU~IHMXu@BwTY1Y=e~ z130Dd0ssO5!0gadYJ_x)nJblqU`z#ogn~$xAS(Q=TVDIX0i1!0_nH9+nZ}Kz67HW) zO*EXr7~%z!j_4L36#rJ&;f%;e`qC*eXQgfIQvYNSQ-nVNSXI#rx{$at_4NlGX#pKOPGs3RL*f?6+-1e3m*IDgfp&qRs^E{hTw)03IHnx03$Am0k8>J)&KwR#sJ&^aNVYy&6@&f;ZDo} z3?T=ec>*3ACQF}$tRa8^fCK;s2MdxtznzhczAy`f1K3CvhzX4F3-^W)$nwXA?@0+0d_ za?TvmW=p2RaHL5FZ!2ke)5u?S&NJ2QQ zefqcz37P{818ZwSGG{*p0C41B)9en-2DxFP;K~fCa55%qwt#Y00Bq^?23`vIplWG% zy{xzZ2m!xT3;=p*Vt;4q=M;teT7Tce;0RJcE0LuK#;y`+Nx%QpIt`30C5kWsHw;f8 z15<=*_y`-DNx%RI0RV(hW0Z<;Q%u=!{`V$hb2d?2TA9EA2nm1#a{-4O0T=RYgxR6* z{?LF002g{$vNjx#VOKlc_*@G4Pygcx%38nBn0VGgEaRDIo*$fb~ zm&;MRTmS!{XRfqerLWYE`@oy#ykbJgCw>8O%0b3f5;oAKhV;HLLt-N1JIax=ehvUX z20qAsVTn^ijQ7YdpAbwrorcMgH2kXy+rtQo1^4`ODzCN=`fdUqh|qF=Ol2q)QGKt^ u3BVA{0003&0B$Cr2Co2kFaQ7nK>#_4r~#|M8;k$|0YLy2LTUhN@CM^FvImL) diff --git a/samples/h264SampleFrames/frame-0118.h264 b/samples/h264SampleFrames/frame-0118.h264 index 6c2510a50d8e0765be43725837ab3fe84081f3fe..1ad12f23049ae2aaf30c6b2d342e47240d39faad 100644 GIT binary patch literal 1519 zcmVBZn<$;h}^`R%Xh(pVwcdh^mr$7RQ z3$~3}L!T1>BpFD7$3nkUNEoT$A%V$D-dD03LVYy`&kVqpU&rw*PiqQ3c{ery2Qm;}#cz;CyjtDE8k?O(lM1_% zKk1MGAQ;?RN*o^Xg<#7-H9>=N)kQ)CngJFDV3-hwcmx6_%Pxl1a0K)Z6%MR92clzc5cK`*W z^aC~!U*6dQKmu30raQ@YVu#FMx&yA_D^k z!D!C}Sy@xD=c6}xalu04llu5L{TPM=JTXndDxa#XU;rQ|lMVnNbfjn*GhrbvA2LN%OOz;8)AS9k5u~k5m%5`)Q@W49sDQ{W}0d*B+|MlPw zI{*NIHShv7Z+-T{w!i@3Fb{Ehv>+(a1{3PfEC2)#ldpg&t<1mxKmY^8irsGj06+)} zgUC|j?>qVw49gGtRcr$W(UN7dTCxOInI#%XU?bvuhXN1;7ga+n1;xsN+Xf%c5}@I# zZdgos&cZC~Iy7X4Rz?!@ImiG4HJ9#;0$%qp0DxH7NJ9Vi0w5ZMBCoH$zXiZs8PgmLYM3D4iyT zm%*utu510k3>>4RF5=#z#Y$NIDp_Lznn5P*@Qe_oE|Xe1%7356}T- z0W{YU$N-_S$`BB&H6R7s(m?# z03z@J8wjD=7h2zJ_Y++uDEW`_j10A7HNoKW*&51Wdtd+v1ONbn6o3RTgZmkv4~HOx zs#I&(Kg-~441zI?5R@)6#9&)NLL4+wECWayF;D;y4W@t&5#fB?IxYCM_z$)40^#9y zAVz9st(*UFFa!}mR7fM4hx z#iG$a{)gZNUppKC1ONcrWRYC39q_;hd&1ZVCDxtKLWS;jwW?sAC`7%@)d9bI2Nuim z9WQ{82H<}L0CWn9Vv{l0I8Zz$?Yn?b06z(qYEq@jEKfiGRM^y8O47Ztlqh?- zzyJ^^!~h?6+C6{(fMx&z0F1N)0pr{N*BTH5TpO^gM#<>V)6kurpuU9Kl>X%3Ed^H8 zK(`9s$s?SqmlO4(z}{95+sGC-zeqpZSN?c@0EVCd00BV&ZYGEZuK;*30003&06B@G V0jt0pi~s-uK>!s(Xn<<)2IJ0Ef-e97 literal 1536 zcmV+b2LJg00003AFaQ7nL7Jc%yakiQfp}0-00;;eCNny;$`A|n(LJ6a_yK}}qb})( zwYK1bRzikg0aq}Uj|eY0w^#wClBjF-aJTk389M832EH0ut~51OXHb2A%x2P2k6gkzQNj7#M&zuyN3k%#8r1 z#m|5YLWu%S;o##%ZOH`DfA@?G3L5U`AA;xR)(NW0@o>lhg9reDFb;3nDdPT6&&+)Q z3W|UbOlpz!09qhoYZkx3*{}on1q0(XKmb7e00az;sfA{gyF#>h0JaQ*F{>bfoKpA! z0098tc4#TJLOMmvmCC{}CIY}hK_p8M6@FH&uYKSE&OpWc%>aZ<<3`d6cTcA#nn3k{ zz~B{L%ZyayRz3gU^tBivBLM}#isK*Gi~|4#02rJRWXO03slbaxY&{S_YP*mC+xBn} zqW6F>lqU0yp1UG(t~4v=U4yujt>9?TL*dK%>mDEgAPcOLiT^$20R}aO@jyuvw;iAW zsA>;?pb-G&%2v}_H!tJVUaS+e3I1j8fdBUAgkVVMELzL?#^S+9r~oGkOJgRzWL^SL zq1xXVnJMhunQb?}I*dhL+hXD{K3Vav=P|y%+d2KHM`*1QU0C?jL1z-fJO09B003gBG z0F!(K5UPO=I3SZR9xxgFF@Pgjz|#RkqeX6oNn5}GVZ|oS{xZ^n{rf*ci(mi{x_BMY z=`v$Op1lJEpj;_rfROe6Gx9ax002NFbtoT;4Y*X}!m|<-ur~kylZ7NIqFVpo!9D;(mH>}N z)C-T_rPPmy|D*=Pv4vZe&$t2wY>*7W`%mcLq<`E10DvF_DuDzk6=24lvfusgMmKR0 zUhus>qqT1i?cmY5H zfu(Cd-P)VDop1{r0WAWG@-ZDZ%k*v@U}8+Ow^*WPYpUyuez@k!2S{s=)5H|EzA zBW};07lAa%L>1?lDy9|zW?&S!#{r?T0MLj1+H1Xcw8@c?&Mc3;prklR!tsk3i$BnM zja<$o>|$m&|Nr4y|cd0-#` zx+u;*05AfUh)@6s0Du61e1Io;`%f8oVspbnA&#;y`v330{{O*;#8H3%fE$no>S+X0Q+e^!xdCxeMua5coT()x4^^C3&0T60003& m0B$Cz2Co2kFaQ7nK>#_4ssXFO8;k$|0YLy2LTZ3&@CM`RTAQW- diff --git a/samples/h264SampleFrames/frame-0119.h264 b/samples/h264SampleFrames/frame-0119.h264 index 9d4a2113a8a29ecd8e83b1a869665c6cefcc43d9..2604b44faad69b23a984d250ac77edd0eac2a974 100644 GIT binary patch literal 1608 zcmV-O2DkYD0003AFaQ7nL7G4syaj>3{+uWn-~!13!RHlOKo13FGO_CP0l~Oz0|e%Q zf|6QEwMhn7wlG%26U*r)|;+JJ;NnDj)0bF168 zzyCu5A)hnnl3PX+fAD4i0Z;&70FYTTga9*u0w`7y#p(!!T{hqjb4_c!^*x`BRa|{9 zii(+*GF)==SXcm>?e%m0-u_C_fB=9>TVN{+|NW#sKy!LEr68j8AMk(?$OSQvMVF%7 zA^)|3P`7@BQ`_a=`xgKO;1&M`WWV!r#3t3jEhwdnWB=YS_agK?xw14g>A&az z8yNyB7Bv=_Tm}X}23*dgA@~D;JOZ1g|4_&$7Xh6B1`&<71Hft_zyD$6-LMOWEVpM_ zNdN$jn#D%gJj6Jo*07)<6y5?yK*lu`0b$OU{ysB*&*C%)M$u%5S1mE0|GW<{8T&{M zB45pbrsJ96_!5ui_P5&Dfbak$z{V?iZ=Kp;QC%~LXDF#SV(-28?obQ?cA`|^ggD#3 z{?q`%9r>_0I=x`=mjB!UEuaDg&&P#^8#NrXcl*I+aFMuKrOJ{f{M-Nn0ea9nO#4VV z&)jGP;p3R0DpP;|+*>pbAN_)HeDDAe1aw1y5FoRe^4fzBzyT24f+ODl zVT^m(FMxsr3JZX+1NdMzFjoKy0fG4J_6~~V)5!P#fPlg3?FS3=phXPYBVgIXB;#;^ zX>Xin2I|7SuYkrNQ~&P*fnR9;Wsc>B%tgQefCwK~Xt51TCs`>`GAn;X zq=uP*APoWjqMYChpM1cN4k13*E~YKhX#s**l#k!k07=9Y<$@KWBboZcmXRC`j6Nx- zyZ?lSr&xE|6k)|;h~n%FQD}zSDbe=;4X_9{`CiqieAy>EK{W}S$p@KT0`30)r!w(7 zp-0{opvPTFpbatUh%l%V3*=*DJIBK-0A`Mch7H@oJv=@b5}q0625j^ZmrOYWNKj^M z=aIy;e2>5YM8GlvUM}gcqJxR++cwSnfB*fU01y;Mq&dI^Jdp-J{2vD6$u!w0RBsXt zd>?^^dqgskHM8g1VN^SeS7`+h7=8Eu-}o@|c@uoZFr)y-v&fD4yZ`|J7kC7jaZ?TL zet{?7gyiURKN3$D^rVj>dxraR~W0syFp0MJRaeq+1t z-~zotX8(8nFMt1e5fG371O-rx<^TYIC;>V!4>78wkpBP%&69@29W{nOmLzs?eJ~8L zi&c?;07L1mvWLZSb#6wW0!h*;#=f93kpG{pHy-Iv3fh=_=cS+9Qp2QnZ4 zKFolI>~4-0H~W?VWg!5fOoegQkt&PyU6IV0mxLYGE(|96Nq@j72yjVurzHY8cO<28 z|NX!K2mt`Vf0eBY8D7KqT#x_W0mmsuBo*7iCx0t&6F=R+5oQf2$lL$?7=HvE$P%a8 z{HHI<{LmNx<>Y~m&blQ0ulEP?{sn=6cm;4=Iv8cc-9Q0kqP-eXhwe;w&bIu=+^SN$ zh=2iun-INwt%NK82aH(Y_j7;%AZdsI9e2Phhd>~}T1wXxVJ;DX5LWk8|QZ11lEpYH3Q0x_8Sa)GFz zmZteT|H51}Kr284!60>38vqQZ5okJ~0edYFzHm^=JN*GDeblFpQGj*Doh1r3kxIY% zu)uYRptiZ)jdK2=aNr!s0003&0B$Cb2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM G@CM^z+tf<{ literal 1593 zcmV-92FCdS0003AFaQ7nL7KoCyag{oVx+xFlN;p^__j)4-Qc4^+kK?}!=z z4wfxI2=gHQB?vj0#C*fqia2+I5fjb;3&v}k022qY0Khgu@HGJJ0OSM0IF}S-tdGr- z3;+QEU;u$5GTs0P1pql<9!N;jrwFeE2rVQ(f?^M_roM;8US12cw42Fdf))_Fay1SI6%C{7lI`ho6HkZoMN4q zt0@=3@O~3)UEq-EDG=;f|L|ao{xD}0zH*OQY!pLHLzm4oU}hv|R!s13EAq|%1JlA$ z*{E{4pvBD%ejEK#7{w;*Ca|n1VU<|@U=slvCrepU3HkRH z-NFC?06-$5Q$e?#Yt9!MKV0Z$6o-TrAU;j|vtpD0JS9S+6pB$2gr~qU1zo(+NcwDj zwbeO}tzUbd#D;R825dDJ*08)Vfi68(10>A)n?R3JkN<|^> z02aez808tlG==a200IEP)nSXGFN9jjOllzlU|131Zjx~5xe8VN_kawn5S?jYBjs&^ z=nZ#%ojIr;fM8G&Uc*XM#8NQ_{_yx4fmFga9s!G(HVueB{r4ahgM&$D$`d_auo%N* zGZsEN*i5o}-uwOl0RSL8Otj;9=Lf&f3&4}mSk~}E&Fsy$HYe}^NNz(jivLkcd)48X z1BNH)Ny3p@N(Ei(7zhYcGl9`nsMi^PyF=$=iUpCEv~*{ua2Z44@r2ND#c;e)|J?w< zFj{_>cBoShqkjMB5HK);&X{p9GD?0((U<#%0ssnL>i{w4a|S}E+P?q(cJZ(P5CQ*XAN8C;V2)`~U_J ziA3PnX{0rb5z}T5xD;M%71zW6aBfgl`Q_Suxr}(g06J|3MXs#b%tjP)_?y#Dy_eu0Sw0$kZUt0 z0)g&lZ}#vR#U@AqE@{p}E+olFAYu4e0B!=ygfQ3s7ACsPH~=BQuM`deN7o72w@0Mk1_KjSr|k0 z>zB0FfYfs7=a%}|w-#xXo2MoT{a9V6ZWv4hq6$|X`p=iRL$t`Ex(P>=5&!pufO78j zfFLM$L{3ngZ0e`pufPA`MHCsT;)KJlx2+OqVekYGc>u+G&(V9D@9zKzYPT~@1?NPqlW%=SL3!=4v` zG}sTIB6<=O00$Jq3>R6YC#;S};VcHg)@k@#1L2C$$IrYUjLrXa}R46~qS z_c^`+;jh8<8OdXrVkjZM_JCQA4H#|=L`(I*)V=~BF@b;(!3gnb_br+qjTaBbz03Ft z0A>mS4G9fP zhNRt5viae76Icj0^oN|#HmV0j`EDT&_xbOiS4AS^04T)YO zt=&Z7e);%JKmb4$R0#2a9{$u4ivbC+%(hum-OHcrX9}0YLyciL3#uz#EJJ00BV&6+&wOYVZc*aiXV4 diff --git a/samples/h264SampleFrames/frame-0120.h264 b/samples/h264SampleFrames/frame-0120.h264 index 0784fd132873464ab964930b8300a7ab70ebede6..4edf221f9a3fd27e1b6673a4e5c4c631624db92e 100644 GIT binary patch literal 1402 zcmV-=1%>(m0003AFaQ7nL7HG1yakiQf-ynP0K(PrvmgWj7$}++_k{{E#H`j~_<#T< z00pf86iH#Fty4Vy@Wke{!EC97)_CeHOX2u#HVV+r0-&7_c`pg7C4Zbl@pfnD&;S=6Q7y#bATSGu$ZFRts+>FR=l!b7%V;xOniGW-9BDnw@ zHiFw*3`&9e=_0~R01p?k3t}d(yZ|x=cmZCB%KR%NLLWR%pl5&p+>Fp;W^cR#hzDI1 zkmc=?#Yb~C|GYDi#A?cJaV%OhfB+Bxr*I-xk$4)Z3v?g$jsO@H)u^HR;l+P@z!m}~ zh-gyVxkN+ZO{=&jw1C5`#r5C-@&G8g%|b`>!TB@*0s`P8=0H>g?sKHUfq(!^0s~%5 zsjWQ+o-ak1{N;BhfO)5)1;M}`zyp%NzzP|v9MZB57@z_R7SaxT-GiS{!9zR2kwcI} zaIvMrHaq}?6$Y9@!XdHeoRWfakO0v56%&{f=_ylzvwC8Va(dXS&Ld_+4s#w6qdyY& zlfVE#0$l*0EZ5@0$7t_Bmnx9Iv;rO<7)jDM%40vaNt;nahU$Q^>-S(!%K&K6fItK^ zsU?6K1*b9LvJOQ?Z~&eT7iaY?9Sw+}03)tG)(z&00Sr=*00Ir*03crgnr3DsM27=~ zzyjg3-F+CRjZ5#`G2fh0bioj<3jo=ktO$T0qvrqU7l6cI4gKLk<+?5TB7gsCWN5() z%4^71zqp2uMB0`kp*oB%A`#2piSANv3ULIFfLEj&=PLSxe01`l@KpG{+B z|MVZsDB4hi6@~SHfJpNMQUVZa74LV9!;ZNChJ-hIT$Y)j08$Gg3UG)|&*hRWz={Hj zJa_-qi0-j)L(-!c`~u7vEo+1AByA(3KfD15HZZ-OKc7F*C>-z&PU1W&`NS2D)PMj1 z07ynqD&4?1V{{g}#tUZ-e7*nx1QUF~GrRC1I|-nr6aV|en!-#?z9GcJ0#N~g9GbF$ zj9Q3@{@#FcieO?Ek21n2x8OfRiB=ZGzM3j2a1{^%g6yyu!?~JfN4y_`fO5vh8&fhE zjVG%^#z^O0xTu78+Wf!}Agk4em_ZKv{0XK?C(k;pTnl#yUP+#i(J!6}aph&YgnRzL zDum)id{Le`75}~@R6V$Q-S9M}&du}%1Umiidr-@RfNnTyE=8nb#n1kiz(58-g8~pK zASoBi3(y=1=m_?o=mPuYPx5E?OJG1|vwVoZ3E*E8F@0wGLWI5m4|5d2bc7(Q`pdXk z3FaJ={@o2Fi%uT52l?UH2QmNv0YLz6CYT1V0C+F}00BV&Ifk literal 1200 zcmV;h1W)?_0003AFaQ7nL7Lziyag{oLnOUSkp=uB7vMu5Rs=p5y8)p91^5661Odc1 zdyzH%G_QZ?3cvtB01N;@D+EYYgeUYd1Nc600C|LDyi6ubOUkEs2y#U@r%s(!9QKmb92!0{&y zjg=WH**u@{!Xt$zRnT|@MxtJ!4^GRcx7a=a0fRP-!y>&{BFT0b2zsd0V$!Z}dSCf+ z;6~TK^l{1B|2^bIaJU-*INl6_?2eFx2rN4djuTTykOi*!-9NwF12CUQ6WT|y?ce}` zujimp7!ck?(E+H|4uA>($OM9K?EnezNM_+5!~j4601Yw8_+0097iQKq8+i_7@URQ@l;wfak)L<~2v89iFi)UMQz)|&q!F}EfC=03004s; z*w_2O1^@y9Vv`te^>)!B00RO6Kq;burW!gCYH4q{_)eLrF#6FA zTZRH;$Maw~GWC$!fWr&`ZXcmoAyiyY^>_dg1W;zF1cokLLez{>>KGL};PE43_=rc0 zm%+f0PnpyJ;8l&yfEH8xzv%z~fryN^nt%;*E0+}D00agBap0(YUOEW0DN2+5V*#;1 zk2r0XZAUx+zyq0M8)%;=^Fe-MI+xHP{7=9IU;q#SoB@ZJ@fU>8SF#j73jpi8w*rF2 z@kGZm4*&)Xr?6;l{B3Q3C>7B_3crv5Bjiwanl@{?sD4Z_5$t19f=w0WK$>PIA>sZL zfCHdnHsdesL(82Z|LwLPnB^+Z|GwcEb)^J!10ZlZQV!MT0QkDlIBC1U(afHW0Tn1B z)O^d`|MU_+5FX>RRl7IW-~HjL>Hwe$cb4*nfZxOL!{CZY;3Ni0%^Lvz0Z;wo4C1!x zUbWH+!UGOuN<=^CCL^X7u&iAwU+x$&%=?bDF48G4;P8;Dz>N=qV1xhK3ig0p+~5L% zP0&ET)bIt-#{@+Y3&5JdKmiRPfLJ(zz^J5(Tiy_!jxIUo!y-Tzc&DYU!#*+ZBMe6M z_MQ_lgBQC|bUJ_lLXSvb8uWlmzFGl#@<+T*x~wAL+uDtriLijWAmMatIe&ZrEH;*T zc@U@C!AiPp_W!C5>oxA>b#xec;dlo!0003&0B$C@2Co2kFaQ7nK>#_4t^upS8;k$| O0YLy2LTi9(@CM_y5dyLR diff --git a/samples/h264SampleFrames/frame-0121.h264 b/samples/h264SampleFrames/frame-0121.h264 index 86b29297378732bb0af1e6d7f1aabcdb0d2660d1..be079426f5ce622f4bf8e4dbd298606b9ee54491 100644 GIT binary patch literal 1593 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 KLTmtP@CM^alafvV diff --git a/samples/h264SampleFrames/frame-0122.h264 b/samples/h264SampleFrames/frame-0122.h264 index 7e24fea2d6ce8ea529913af6a9b266849170d4d0..e89b896d8611934c2fabfc90c56632232c4a1b7e 100644 GIT binary patch literal 1034 zcmV+l1ois>0003AFaQ7nL7Jc%yahiAhc*Z}+sA+j+7tP4&;*oSSZ5UQLJo6&Cd|_S z-+%%DFlQ+%qC?R%4rpd}S(pF^0or7+0U``8J z!-b|mQpIf3d;kQ=W@uVfUB3V@dl8+>*4ha$ZNJM`+GLq3=-f1xrAVvV~lf++5kcz2qKINq*X(2 zOM8D;iGT!xnn1x~`$3UAd>g0$2oHb&fh|w~2m^r__k#K`01z7h0Ri;JfC1pypP*|4g@V}3)9U_?~*v1xB;BP9j# zca_`FtQ8@Iid;vGCRWW1|EeyQ1O(PicuH;XaMOBpa5VL ztvoN$V1EC+41$Q>CDdd`|C0k0#9{~dngwYd02YCln4mBt45n}icmMDJ1Of4e1G!75 zX2Lzgao|524}*p}PKJCTa!L3a4gdfM67~ba#`V4lVhvm7_AvUmVx^}65+Wof9Q0=m zU&A@Uz_raPsF2dLR5=FFV+Q~WH@sje zU${9v&`ccR7%e$?(O0A&uOA~m)5Gv4!1x4^fOseh)TXeF_Sgi-B6fB2NB;cL^-8Cu z{_hOy+VMZnzYB5FZ!V?N@ zJ^&BZZeKs;tP?nX-^Wy-|Nh*=P5$BV10g7omBV6`|J_gD{~yN2`}zNnIpMeyi~L8j z0K>FeE*r}zmMVYX69@nR0YLz6Ca4Cl0C+F}00BV&If<$PtH2wK0003&02M-NfNJmt En+a literal 969 zcmV;)12+5s0003AFaQ7nL7N~Nyag{oLnOUSkq?0+Auu7F(;VDAKbHXx__?460F^;r zxZ)2vjuXaZ@M0)593Be6a8P6b8!XxuomDdM2nt{+JI|IbLkT+X`+x|%9GdqA5;~#& zmjCwyr2qj10aB0wko@(!txvK4xBv{m03Z$$Foxw~qkM$AEaq>4y%a#m9B@db{mqFM zsQ8e**8B7TKw&V9Spsg_mew1dQhW$(VlXzZ0dN{vML`ryTmWSN16Okgh_;3@Yu5k9 z004sc00>0@0EAcoQ8Qe-#u8%&tnhiq;KM|VQT_LUGpVaD=xzvPfCpe;13PKpHUUc- z!~eg=0Nem5ZqrU?%z;#}sb&C%5QEP(#{>8(#00iIwAWi@rf>Xk0ZU)0QO38^7;O~pdu6wk8eSdDxdpk z0Amp(Q(q8Vb3Xm1-~a!=`JaFP_y4pU@T>{N^IdTl2EkpC3z&vt8@2R}gLN1E@i<@- r_y7O_K>%(h$Of+fcrX9}0YLyciLwE!z#EJJ00BV&6+&!)YVZc*{cEMI diff --git a/samples/h264SampleFrames/frame-0123.h264 b/samples/h264SampleFrames/frame-0123.h264 index 61ba0f99992456ff1abd6807d0dc0652def4dfae..fb3ed988cd0009bf5e0f90fa119321e7812bf6a8 100644 GIT binary patch literal 1201 zcmV;i1Wx+^0003AFaQ7nL7KoCyagW;9OHw$p&LLZ$Cv*IfQS{~0OuP52|Aom4lXMp zdB6d*YHW*RO>hiyIvzjsaD@@eKs64`pm1iRkgI3-`o`7DU_i83$Te-hCI1E& z8S(~BGMh*Yq-SJ|KYS`?zQB+GWnh5@3gc~DJBf4r0OLg?sf&=T?X>^_4@i&}T?Pq& z4hRN)|8g8t10tt1grvUjkGJn{2f!g==RCHrfL9$6MgO$`z*klg!F7X2w)-bmFaV$s zLGkrZ*V03^vj;|9_5nTOSg0ca14jT5BuU(h2w6GdGlCvRG^C3#%7}mfh-dg11t4__ zObC?4nOKmmg4h5dn9y|Mzsf5~9>)giCAZr!VVk9Y{+R$10K#p*tT;X61z<*?30NR{ zcCg4;pE6Wggq_G#%CSbx+989iGIH; zM<$$}x6^C8^8M(^u@+*Zq6fx?J`Qm3VWTC@7?S^k0%E}k2oWd9!~hWlK?q_DF$4-h zMGy=@Ia)`62QLH9X@ee3A;b^-05|{$1K}J7a+glcgn5SJz-8pa047aP@iiIC z_eyz~%&R2vhFa31id;McLijgQnY9pqfufPBRflr1RTV3z{|GzqB zK~Z3K_kQ=*zMH?_;s7Q<5L}gVNn@h8G2}Sr1VvA4mY47f#xU$zk(*?~s|k(&AZ(+} z1Z1GTF7UfGP8a`p00ICc2*9l4i}OU;25=d19a!T<|GP1A#fUi6^uXvxDD-py>XB4twH`@wR&&? z;#J#!Wq`siR22mk;9K>%(hum-OHcrX9}0YLyciL3#uz#EJJ P00BV&6+&wOYVZc*%%u*q literal 1260 zcmVr z5MxOzJ1sci;%j01M`aoCbyWVZ|)GgjdOY;7|#J2xP#3 zXOIv85D|cP*y#{1EQvq%v={&>ZXSpks4f1|O|AeH7XSbt7yv1tEtD=$z>JAh^`HwdYi$B8scb*6V^3x+`bh@w*UYj6axVx z9dum%;CTI@LhV;@z!U%h0CFg>0t7%1;G&}#B7b-R;1mTK`B2dlroql3l(H;`-~&K) z=)-{o@ueJe$k|%}0O%-CbE`JT0AF-Lzj%NEKnMUheO;O$A#XmVLVu55v+PgWrV*;aBz<`nF#tWMQfd7_|_)P1U zwnA%!GZ`pAJb|_(u)UZtJ+B{}VKBxR_#7Qz;b1a}1?wD2gIp(#hhz!@V2}|*7c98z zkrZq=SP$ur0n7q=t#^(DO>6n`&^Z7AoDVPP2sp4(DgX(PN?#1ys_eW0I5-jSph9OO z@p`{|h(+*5=M=VyLm6Hq(;H|~-~X@o7};@1DT~Ast_Veg7hwm(SPQPKQLF!tvTpD| zQI8QE72u&eK^?CFol0XC6Ep-BvlaXR0D!oHzg*^|NU{{Sd3V2JB0&qIu` zGd*418=wFXQ~&`1_?ZD9*W3UAfOsB2wTOgMZC_7^zV&s1hH;0UP{L;yCw<@>njruI zzY`%L6bPsED+gI+6)!w-RGRPr1O&l!pmhEelcYr{4s@fy5Gh~-hBt`>S^^Z?dS(b7 zfCf&003a;j8!VuB7YUG5eL)6gLk1wz*jc2jrjOTj&IKO=j1UsUAf6#{90{fT1OOC3 z@C3Xf6o3v)e-Vo8J^&A{gXr9ACEsDqGnt?Zgnp<1y6@LR&wwvYp!DbZ5)MD3M$g;- zZ~xvHeB==Y*fjZ6B|f>Z764$)H}hTbW2&)t{cXSecr^oAsir%xfpIiA)n$MC`NhJ7 z*AZL3{_xHhJPo<-q#%X81`l_0Yxp4A%U`bcfny&4tO0dETv)k>2FQi(yCiJh?fkz6 zW?_1ScmbF;W<>01p6# zdXd+^u~z^8=9`{DaOr$qf8MY|FsrRDq?!JP(f~{#0003&0B$DG2Co2kFaQ7nK>#_4 Wv;nKY8;k$|0YLy2LTvzQ@CM_!?Ho4% diff --git a/samples/h264SampleFrames/frame-0124.h264 b/samples/h264SampleFrames/frame-0124.h264 index 7b59150b93f0e7065b252fbb2655239f4308ecd2..da07647ffcc7a73e2ec29feb87415ed7c8fc80ef 100644 GIT binary patch literal 1394 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 diff --git a/samples/h264SampleFrames/frame-0125.h264 b/samples/h264SampleFrames/frame-0125.h264 index ccf0b0f630e50151457705730ec25cd23d7da72b..88c8f4b384a3961a7520b6b352ecfb38f5582130 100644 GIT binary patch literal 1098 zcmV-Q1hxAB0003AFaQ7nL7M;?yakiQf-ynP0K(Prv;hDH3NFRGfT1=xmYK{w5C8t+hp!~OsK1}m0w)Dv=NK;YF}!6>Is{lc z%2d6)6Ybe?WVL_*fdsGs&l)+uU_lGM+{m1(J^i2rW24oxcaW=M*T4ZY^w-rw4qkuS zL4i!MrlZ>9Bah#Dh)jrKDGoxF!G`|h18Tptsqxeomj%x%TBNnK*dSAm zKaU)u^1v0qeL$f?$m8spx1Vm>009BO01zO_pa2j62ORJx8GwZlQ~oEQfN+Gjh*;XQ z%nd#UAS4*=TK-v%7_-ZF_&;(0)p3CYkWV}+#-@!JA$d)C3it3}C;%XZv(PyHRA1td zHSYY$L11=X@23G;05F#a1j;$(4~m1}9`52i5nb`PF8BXf8{hy+&X7ZMGku`wF`QUE zG`)@q6Z-QZ6t03fURqpd@DQ11=)KD<&j{M_kN^k)30y!tXDs5pP|RiE13IZdL+%rS z)nT=XFb8jeRSv!n{J=VZ_%jRJ{5&yI%J@EQynG+~+5$ua5GaJ2DAS%C2}g%>`S=q{ z|AF8OCJjIx45e}ab^t7QkP9~giO?8W9e}DcfD{EAzuTV>t&H!&Lk{P`DRqy+nP?O> zq4e7SPic%jyvYBKd4nqZXfS1+sSox)=KoV(7$AW#%brye&BB}icVH5`Co*k&%;7LD; z;oSki3usXA;B@#nFMvV;I(s^1|9w0Sf>mtde8v)f@}MN#A?o5POoJlG*+HiTgZbgu z6HDR-#<+uz4nq~-jfy|N=C%s=FTWGY6Dg(v2v+FSR5hms()uvN(|c&w0sr&r*+sy% z?RsS0-&d%HiUWneztnbs06+?WvNQrmyAS{WfE5q`TZMSKotHd6e5XuzfL^zK$SvSR zMd50J~>@zrVlx;OB>6IA8z(0YLz6Ccp--0C+F}00BV&If<|VtH2wK Q0003&02M-P0BZ0C<8XEFIRF3v literal 1046 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 GK=~gWUILi_ literal 1560 zcmV+z2Iu(z0003AFaQ7nL7Si&yaj20U|8Tn6czvmfC7L3zzQf6MIPb$X>F~@C}#_=XY$HL^|;J0 zjzf@_-as3Sal=io)B+0}wOQ|=3?o3|u}9QdAwc{92w^atxcvwx-Ftt*oT*d#!Fh+k z0-8%2{D{A8&<@H53xg4X>yr4JpxMIX2LJ_=l!T7?`G|kOC=g+CF?h{aU{nBT9h@wf}BlXuAcHDm;dsuM7!G;i$ma7y-Bx0nkzcg@mX# z2H!29VG^JAr!WGb&9EaAQycey03a?3pn#PYvhI}Ub)A?EHL?H!08j`6^;`ol3yH`8 z1ONmA09Z&kh=8XhDtisBr2ts+BO^$~)jEIR0ghqL8X2W`q@iPTNmu6vC_X|=sHCpj1Y$$Q&+#nFmTAq*aS$5bBL=KUJVKWUgY4exKkoM zDR6`Z85yu{J(KW&06-Wo@zz%8=>k!`U+5~L!Vo2Z0jK~whY$ov+$vPV?)!Kllv}b| zTi*YFzyYu@0EKM{4zDT^QcYh<;9#nkg(g7Wi5Vb!$Pd#10DxlvO(n8-xW!*{g8(l@ zOaOt{*Lc7HKm{N`C2U%CfM?A%y#PQ8`6vQ`TgZ*tE$RHzf(A`?o#Q#cAaJ;HdrgGi zaD1n$U=S6)P?WjE@SC0k5#ZQHIAOrb7}Yq`J|_)ej%k8+qUe4PSlCPk?g*0$DQ!jl z-~b>52!f4sr~P2P>sk|Im;r$TAtNQk5GiZ#05Af4g$Q8g*e7Q6$#%Q|8-Nf&s?5BE zQtKv#-v{9kgb^5}XLnUVa^L?_+t9Ke3XK!K8e8%0pdFbwZS&;vUxN`K)L2|VR48xp zjGz_&?*jg)?W}pB7u}Tc5o0NiF~W+vXCOSwmHtUjrCWP8Sdt831vp|NrNxfwyI33pnrw z6r{SixCIL?)nY8XVrM(!847h`I1xht1y;Z?CfjP){O9izAO-HDqyC+J;bQ;=j6r6O zBw zil|3Jc zq-VX6zokWF$M}eER%8k8S_xUR zl;`gco)`F_rG*Vmg$Sr1g6Rkk&kDeryn!G~;k0X)3iM2P!f@=P66L%&#pNs9a#(Cs z2L2-nS&*tKkoQXDWq%@dcl-pL0003&0B$De2Co2kFaQ7nK>#_4x&f=e8;k$|0YLy2 KLT-R+@CM_OAFlcU diff --git a/samples/h264SampleFrames/frame-0127.h264 b/samples/h264SampleFrames/frame-0127.h264 index 04b6a43f8b7ed399bf807d5b8009a3ab92a76483..f32f52488006c59ec2200e39cb03079f9ccf15d7 100644 GIT binary patch literal 2216 zcmV;Z2v_$20003AFaQ7nL7E^Myag99V}eJ|?;bEl7=rW>`>%6*Bmxt7&iDjIzQ10_ z^cD*@t^y`#-JgGuhN}Z?X?;d1zI_g?1N zBnW?5uCN2U?9st?+1ru*1%eROU~P>yQ}};`I3oDF?zg%^XTN&@Ei)=J7n{HHkMOy6 z`>rd;LI(myzj1%)3sfF6ksd$wt}8MF!*sLV-oe%e*iaB^u>bZj4;ij_2NQ2oC13vj zuH$A#SMZ;LUxDY!27Dgq7u5B)jO{gn2leYdB)fTj82k5J!gwTn{_*1kVTdn5AG-H9 zvOpm>jPHO%YwPvwe?efgdf*~vjoJ742x_o4#+CDTI2Em~1Jd2_JeDSV_qS*GT&{1# z*_vP*@Bly;5dK(>UXAMM_pb7AY=GPj0>U@OUfSLkHWeD zh}YNa*#3gSX7#{C)Hu)AggWA|%Z1w0Re`oN&Ti*;M%Mx9Y)tp>ZqM+!VE2l^G5Wv% z-u%Fbv_k-9_w)bT@tEhT54W5JL2IqHM$=lhCclWh(H zZQ1|fMhy>*gBVX>dG-D?!r@vT0Wxx!=zvcDn|sj@00RM*T4Fm^hZ*?T5q|Ld@#ugX zg&_>i>gTK82FWUDmiPa@c+2g+KiI|w>rL}>y56Ck$cgj()~aaaaFSO5Fpm=P9;U<}^=fBSwj9Q8r=^M`RvQf=XItq%a0IOYr*9~%ZM z_RpPqJ69AHgpXOjR$s({Ut>mkAQQjmW8Fo;cmNVIMq=Ntq!V$G`m@K5hp-w)^A+<53d#^7%Q!Q?Zw zUf;j}1L&j1;Qjr9`q$?H+4=+f*Z9Z_Xw8>2yZ_|V0^tS|H|zYV13+~?;{Kf)H{fe{ ze*4fv<}`iaf-{IwhQEY$x%x(}FX#8Z{paWp;{SX6W&tB#_rLm#c|pJ=Ql>zM(D`5c z0MM#S-}meOO*S3>q~N=pPyBw$`1un`UBT_quS59sG;YAw{OoKeaQi8*3%UTJAHU1A zo2ef_e|iu2&yWxVHNY2l@ww7Jvr0fB-(lXX@Av%wFH2;<{AL7iUgQ5Kee3rtuaAAf zdjtQd?mO5U?=H!|WBwYUg`@v__^1Spf8PCGphM_AO3&~BWLA_ z8&&`5?~l^bn!UlTd0Yf5_~<^y#0Ky+9z#1-?fd`mK8ioK(|PN!?2101KfV6}&cMV4 zkS+miS#Z={;SdbzyD(uz<#+{Q&2SXj4sHO_;Jf`{qz3>HB{=WAISU>o_RnZ4<8|fuIxyNIA;eu zlZYB0?^dmu!*_oD9w7e*FPEsX9U~K-&b^stL|4#%kCYSLX4ggma2m>Ku5%>xoz4u_+y)j3Be^gvK;LP5P`Cmgi z*fs$Q)NC$L&i3iQ!heDQp8`mQLZq^}NN@doznCKjA`B=Y7)TX%1B?@HhbP7n1wrEk z5X||RLU-Q)0`7*W+(;5vpC9l%$`gnDWoao@d&B?#;7%`r&#_4q5-SG8;k$|0YLy2LTG?$@CM^zGhFxp literal 1120 zcmV-m1fTl=0003AFaQ7nL7TuDyaiVl5{#Z}#eOnAs7gWQ@l**=B9;syoSQh`x@Nt- z4E&sBgDDBX0ImYVfB>*0%}kMKsL0Zk~E&U0A&CH07~v)Sjhx2 zmtxQUFaQJ_KmbCR00b$(0D@*XxrQ2R0$TJPWr2o?31jEHAMy`|TRuC4g-a;F)OcC^ zBxzc}O&THM0K-U9#V_b?2x2D;6`)W6tQY{!x+Dg|Axj#=|NF)O$^bZS(?+JufmCp* zW8h&361u)=;nHMz^h&}Q03Lt<;NfydxAUd(fLtIR!a%G*TxWn_2nP#M4Z>(p#O+O< zW4Hi(2pLK5ps1<#a`aesI{**>cSH~e@buf?yeUAzg4e6gbVkUhSEq;>Mp7(V!w$*x zB2BM`4VVpVCdh)8=3@go5fjE103XxHXr_Yn*3-`r@Bj!098gjx$G}T#Tk)t0KnOw0 zICDywE{np56sh~b!5rb_!FN>z=}TlnS%P1H1_U|b=*VG`@q@m0VLa*N5CsL9@B-h* zaq!q{0x57CTI*W46U#6lR5Y*1D60!U|<5+v*V!X01^T#$jG=34$Av>Xuv>tt#J0W_km5o z9+kiVK(J6cTl)jB7D`+oAa;Xbrb(UP2gbaOA>~axTnVN84gg`m&;>C;C;^dZqYWRl z02oJ-n`vw-rMU?G{chVyf`Qs)_5I)f`@<7}KmZ^*NC1R?NIXhs1Rbp2hNDOt?!qBQ zDEL_=w3hl0`AAzz|y&?v8edZIB8zQO&v^7*LIL=?^ zf)}L%TnOs_{GfUUyh(560fMcQ!f+;+@e2ch7DWXByj#?9oO{6V+yA@~t1yw82mAl= z0+@0&Qw}k+&%lk}FsnIFwdlBS0r4VA6~2=gaBAnd_Fj|ue=wI36cUCL00L0t0b(xtUjTtn;e~ zcR5;ci)pIA=CY8H5H}!nNUPTcz=Q+gmp(&4<~4TA6A4oUIHxfN{4!7u1Nadj0003& m0B$Dm2Co2kFaQ7nK>#_4yaB7g8;k$|0YLy2LT>*r z9hFSsvx0>)`zO|503Z?o2qBRa5Bumq)W|cA(M8$=WAP~9m^04p8#jxge}_`hiHz~F1D^b0RS)J04QfuB}JG? z+=)!W`~)$6Uc2SuSasC?55W6;;`*VDK=4g9?)* zP@TW{Fn!229Y81FVuyv_*LZd>s6oR!;AP{xVP!Z3@_<}(8g5k9dR;Q-S7*T5E&R~6S{j^9x?odX&!JQClBIp3#(avSAYQ6We&neMfA^{M+9Lnm}P#z z7{1E@$(9@c>nVrrpJcud{e!qY4x)7Jj|@n%p3lavsy+|>_?Q9|)4~2IbLZD%m>2{< zygL`w;DB?UAJ4#@15g-6hoqQC!J*H5WdJ9}&>jh34JO_G;@~uA!cP{c^?$$$=XW8` z_rE+p0&EQcUlbmX02KrG>FTE7NNKS%f*~Dxi55whfw*`UpnyMT`~S#C5n=$gOl;n2 z?05Y4QGuWgqDTci?^=6)4A`tmu?)}u|DFW!-*~$%-|gZ@1dv~x@azej6dbj-5f0B0 z@2wQtzu^zlB=2#@fghRO$28|44>2sYlQ6ze?0`WOuWSA8078>nfd3G9`{e=iEKB`Z zvmZYPQ5%3qD|%CZ^Ii(GOQe)*yTFM600BV&ZYGchuNTM?01vVahwLqcJ(ukGAOIjJ zUrqo50)PS81TWwI|E>@L2)L5~C=|emFyIc>0003&06B@I0jt0pi~s-uK>!s(X#i^Q F2IG?s`Un63 literal 1094 zcmV-M1iAYF0003AFaQ7nL7U(jyajI{QmCbPkS_|r0RaOKj83gG!~*?vPiM?r0AQea z+q!#KZV0DjC}#WsDtnnoEGejRngBMufFQc9mwF<2{t3$M=-e}DiG0^!C2DazFJEWkqqkS9%hV1PJ;ejxsFJ3fU`Ceec}KD02C&y$KX=NNLVib3cx||0)T+8S&LOj zuvqY09|JfDEFb=r*qNv)Kg=b$;ff7(O^Y)dCL|;)Y#2HLE2)aQnzH_YgNp?spa7Z@ zpTZ=nx_$z1P**$WqFOx@qu0_Ad=YuhOHFnQVOS#PkeL0w%*FGNQWxCxaDfy6hMeJH zD}>flr_uk#kdxqn#5Cx!|JYoRcE510jW2>xA@Gn0DeeoX zJOBWID5IKP6+u(&i|q!XU_{kHFmoBq}5500IDifEWRQdCc0E zr4qO`Ke-439N+=ML?1d9JO=gPEPy8`g>&#HK-2~iVMukC0LHuwAnW^P2EAwkHg~8# zPtZZc*dL)k*dOjLVgb&uW4vi#@ez-^?|>JwHR#e6@B8P4U`>Ib3*v%M5t7|Lg|HXi6x4p}9Gsb~6_N~c8rhE7hRS|9i zjTsgel$9bE{2mN4nB6lnHfQ_5i2wirK>%(h_y(^R$Y20zULj-;^mtvukGb#Jg8%^n zqW*O701zwy4rU1h58u{^zz6^Y1_CcCngGBkz(@=@1GRtv00BV&If=djtH2wK0003& M02M-SfNJmt<3w`ETL1t6 diff --git a/samples/h264SampleFrames/frame-0129.h264 b/samples/h264SampleFrames/frame-0129.h264 index 282a5051427a96d3cd178e6c8ac201053f32c6f0..7e580d26df90036962576a18355c565fe3a291f5 100644 GIT binary patch delta 1133 zcmV-z1d{vN3H}Iw000012`~Tv0YREz8oUK(FnHj04l*1hJU^R{R*b+l9>4)8#lZtf z(z7%;T8-t6KmZ^P00=T@5f$`^-K=E*0RTxrb7XS=Knk89z|6lVofY{7{mTXnA_l=4 zdo+Xp{sWxAjk-M01UMJ_gZ^&Fo z1aJVp$(arf3Fh!H01AKu00e@`oFD<501-m4jw^6PD(SxfbDC>i=c(-cYO3Sud{k7- zv7EUicme9|(+<1yLXOwI3iky;`!6QTh+~KnUyyF@&Pa@oo_R+Q6t= zz2sBd<=^{%Gyn!X2Y$gBFZ|rG3AJ!bN-3h&|L_nwczYAyF2JJ?pEkfV%gZ=igOD6W zFaHcX1e;?MtnmIW9+tw4DgX$K$cW6$h>Xks|KI@P6{H+PM!VIDEbFrPphkk=pc;k) z;{uofT$(gAypjL!fWe7h6!o*cJ%8XPfrpvFP3um7>wf;ycn75dc|%k#L+{!%0hQ2q zlJJG5L;rP_G>U>HEYH_~7;Zro<&*3=k0o3n2?i-%P+-D7Ue#~!00-c~5z(woltS4S z`=9{mH*k)xNKKNH@7#b-6#?XkY5|0C;Pp5-e5J+5JMZ$q0Zkf=U0b5?U_OLO5P(=K zgq8|_)j)y*W8i>D(EOr!D99iFZXt6&@gpz*ND?q%LTb3p>tiuF9C!}^2R9Y%nR{C? z6Cb>YD8N8T0#h+@p8Jo?!K;Bm1WCZ&2D*>3vG;c#SSKKm_M3eA8m(C#Y&BySntpEtc z08;Xyg*9->Y$0F~OR1VY%w_)Y|6M=uFae~etCs*f7uL6h=Fj)Lo*98M24FOb2}Xp( zKGL8&3$B(u1hjAg0q&?Fw{AfulQ5!xS!mPO&NOot{0TEKI-FGeK*(S7cyzsporjs>A1@F;0L~ED zbiv@5Dy5YHfdnZ$!ob0ZWjG6L3?c7PD`^1=fMKMmNkHhrU6cZh>;&v!>10E{s25Kl zRS+nb^RR!Dp#&R~umlVs|Ns5~++Y9z0YLyciKYRoz#EJJ00BV&6+&r%YVZc*jcWZj delta 1222 zcmV;%1UdWu2-yjL000012`~Tv0YRDo8oUL8{LJR=0f+ISKmb618SDZ@a)C8Fhh2wL z2-UzNiAe#H3QbdF&UU z9tE5oo|6m~PglIaM53+75nHV>oBkNBdAw5v^;8@!$05t+nlLjGGh-%f4de37`UU2} zJqqnn6Yd5-XeK3T)NZg#RU1jB3d;@%6?QrUPzceMr6b`V|K|d{n=O-%-|xTyil%uk zUcDlmf8D}=0097?5m76kUFTc-#KtfF(8PI#f)AJrnIj_+DWCz+m5#`BImAkqzW^}@ zUH#dqrB@Mswz(Jph`m9YXxJ54wc}t60k$I#Z<7Kd#(|td9Wa5y-C>ev`#@m)j!_Cl z(@hs(CcF^ye~fqV)I3Xu68<^rNW_KnMbq!^c)Nl&~A5C94&bcn#!%QFz1 zVC^_R00vDO009M8ZlnMK2Y>(&akv1aJ#_y!`rbr>!X5w!00ID@3>{bNlBDh+9ds>~ z${xT|fTn}U6oaNi2dD}I@cV!;6c}w2w!ser3i~oJU;u|j3NaokJGv<4T!4qz&N=C_ z#OL{cyrHfc004j>KrUhtR>+kZAoaWVjCvu!06@d4_W%hIoXDx`^AQw^OgpWs-~b2! zhALG!5=NX$n$cY|7`NkJ-D2B#f9?&+1#gR9d(Y`^JP-p6mgGPUiE%@j40sxV|DXUu z0->rpKQ_Pm=(FG8{q37(Y{OMm55NFG3@U?vu(=Tbo4CMcCds;B00;+w0D!0fcy?I4 z(f$B~f}jNFV(LE37YeGyGw=a0ASiV_3O9O$At)L;aDFfl2&e`U24`w+u>7im0et|( z9u?2PoL|7~29P%awL&3G05#Qa^*^9ifMZq2p?}+NbO0mP zAPfcW4Q%y$=i&e`0{($!+I#B!#!=dxUp?^={K5hOP9lubcDA;b401{SoS3ZdfrsXJ zF!fgT#dZ)ur3-PJ04sd}GaKaJ`+YFdX5$lgp~gP@Juvgaup&SJ00BV&ZYF?#2Co!f z13(ykLIFSlq+~oXw$MrXcrcsnRmkuB7&kT_@mJ08cL4TXBL*I~gcOYE5Ge=m-tZf& zOYJCxYZ>7m0!2&+2vz_D@_>MuIKKx#0h9<61|Nz*ECU0JPcVQ0$OH(369UC#Ouzwv zkG`l()Wm_D?@~mNn;{XI1EU=q*+2u=osh(d60`g59622bGB=JO%`<1Hb*>MSK?EO@ kPy`Ddz#EJJ00BV&IfK^u|Mr00+V! z4kg?klE%m992k4Y-Ell{UGJda!#o~7xUU!igLfg!=KuLN6z~AezvX=R01tq73bJQ` zj&;tkghvFR07NwbnLQwtQnhr!e{ezDbU@@AFV~4LFM=3Nh(sI0TbCB`@8@Ingk3$ zkj4v|EchDZ10+BQSOi+^-vM|(_kdwYNY3!COpA^QY^RBVjnl$BXar5T&7j^o8ZQ72 zHiR&nu@_%|ggzWgxipqGKh7S42Z>&fzrMhW#CT>ahE*N$(b2cB7o;znk5C;04Z)T~ zd57Lu7&%ShpZg3G&0qlJ@DK$XY}X}KN3+6@7G3_xlb@Cv#D zg3(zjog*3Q!o?)Kuma%yyc}?svF`bS_U)hm5EcLd0j!z;1_I7_ z5%~(hBcmOnD~!w-W2v1wFC)P9aeiS0FyQ|m@!0qvRERoD3SMw`&_EUF|B9eY)86WnDR<@|AF`b0RRBT zxhM)1r;hP?5g%+31}V~0oqK2gw*1LKV0K>RrcO8m8epMvjrBt(!2Sc>+`@%dI)gAx z>jwA$O0JNl=1%)Vp@_mkKSP+&pr5ZYA(ha=Bgsn&-UMXfbo9bczJ6Xb00eBq0z~kC z&I?Zt1AYKyRd6x0A3;@7m6Bi`z7NpL;QyEn0ccf|r*vpig%|(;5D$mUODh6x zfrqlfgb@&0XA|p2P*w&F1iSH@G^0O%rq}1^g#leeksoih^X6Ml?*K_?wvl}9Va}m2 zh>(YKE)%cYcvo|X)BXmU$UsGJ%TJ<0vCj{{ivR!tK>%(hpa!oJUjqObc$`Rh5>H$DNaD}+=Xe09v+aW{xHawcvo+ zhxZ;b3X_2YC6kZ?24BRg1CSU;5*W^%X9tz z1OMtLhLcSMC6izT5|dyA5+V8g{(b<+U;qFCK>#_4r~#|M8;k$|0YLy2LTUhN@CM^l C(FP0v delta 1073 zcmV-11kU^Q36BYX000012`~Tv0YRD|8oULOe;fylNF9X)r8fWs01P-V-yV%uz_ch^ zCAXje5CH%TYij{8=J_?Gsh}%&_yAZ22oPkRI(UIpzUQ%{h;E8bS|?>x)V{z(3j=^c z7z>Pm0tN&c#|))hM7+rzDX#zl0VpUENN=r_u#8$Vp_X-j2%8KTQ_zHr8t?ze#6Ts2 zBqf1TLPEVafDv2(z^*g(@?eL?b;lS2009Js2ALuO(6rh`BnHQC1~CGFhE|jnS9r!a zvNMM9fd|3>1q2`76S@{ z8Y)p>W1&3Qcm{BQ7%?oiV@S0Y-JAt3Kmh8H00aYy2C;Gg$f++M{_r6R5XP*bB^)8; zno7E8`~$9dPd}f5HUQ77mctSuiP$FZVzyJ6eHni9}o<=G{oP}MlGAMqstZ{JHQRtx$;3!rJEl<3?55D*`M400BV&ZYGEZuM%Ga02p|i5)=SY(q^O4ERCqA zhY(@1&ni6wm>`>{6)zM7)()WaA__qi9`i~fV81VdI3gA#P=*nKF&9*;$;1Ez0Fr=o z`1%|GIpol6R$`@p1x$$%g9zlv=_ve!V1T24-=a$PKgiodir9KNC)qGbWpZnK> z_fObLWzT^SqUDzF57+06{`(Q7`@#V+oD5v{Td)59K5Lfn1&suAnda8!B$FiZc5i?Q zVQqhvh@dLRp^`7|TmB%TVKaf}*c~Snl3$`AXw`s_9C_6Z#&kR<_c!0qz64`cC;ssN rJS&rt1V)q21O^@O215V<0YLyciJ}3kz#EJJ00BV&6+&o$YVZc*q@TWh diff --git a/samples/h264SampleFrames/frame-0131.h264 b/samples/h264SampleFrames/frame-0131.h264 index dfcd5be4917f77facfa47a575a9b0df44930efe4..08ff54681251f909b0084af2d1178111673d8daa 100644 GIT binary patch literal 1264 zcmVZ?2ZP`SD-hJ^%eEl`r>XnEJ`F{qGz?nuSnuV?0stYi z6g6FVg%Y z12xdZ0HL)gFxP|N69qi@Zfb)nwcGeG0Diy@N)QGJ)eb+f{`X7)BuNz z@(y{+GSDN(tMC8kZw?NWS0|{2UO@1lDv~|`ZvX`>fS_rP#YPO=u(db@1Mn1Xe*USV zZh<5dhz8)C0SI&!TM{xE8fm+*)RDo&6y<^yq9d91!&W-lKwyz#Qhx6n46J3 zpWXz*{uDMAiaY=r@ez$~BRi*n#CdM`gA%{>lPn@( zd9S?y0qp=t^uhHCBku|T3_e27fB--S2(f~vugUk%t?WMT;2gZs6^yWc%{m#t2t3O3 zP5@+;A_gv1EhnWjXQLNKjQQZf2+ggs8=?R049(r%`}@uNHrs9ZVd5SB+YuQAQwHu@ z|I_~7`!wD3)_?PWL$&~dx+aqJJ(2@6vR6Xz6b6axY72887vaZvPi30E%Oc%fnLnU%jj%(hs0ObPfV2isFafk89DonMr>Vbm0At@+`2BPgpCreHck^%rB^c2bJRQfv zzyHa`s)zpx!#O(vihUsLg;5u_QWy)I+)rb82kX}@ynQ@_;zxKF9PF?|zy#r~H3J>!PIho@@U`xx-_ zuDB0Rep1GGf3YHikbX%IWih^rfO0PMp8!ZNmNipyR1EF?0GqoRP)Je-_to+L{K?_p z0&4OFtS=z1rva~%{dj>BJ_g<|7ytstY6BIgh=;Ry2eh8?6$>jgLf&IyZ`_J aK>#_4ssXFO8;k$|0YLy2LTZ3&@CM`mC^wP- literal 1332 zcmV-41$lz*VviT}jSFy< zpROAx@E8E5_}2VU2rL|J0)Q2QF@(`sxeWEJ-vFQiIWPhPYDSqPPbnJzxWJrKhKQi2 zqBtgNH|_v@BQ4A0QY2%e`<^VETt?XaEoafr1w! z+D6Dka^hC5yg3CWv6&A&{luL!9X+<%Uqg27>`vyPkOBb;ZYT}i9%zWF{tf^R zGy*G<9y7~fMrF1YEzuAF2oZGSP#0Kut{-WP1Vm7@Gu*YDUj6`Mi{ThiH7RDYl>h$* z02#OZuasxuy_Q$^=Ujr6IMFUMe!%s3KJLFWid795T9CEy0RRxnGmixBdnO`+0}B{z z#yLhPC>8?05Y&bb)p_z@%F-n*Spss6@!AxXUP*iUccY~5C8{>mWVfp z1PPr>ZwX9T05}W`fn9AX9U?4H{LGX8-Czh2J*0_~J5ftN|C&YeVT>ul{lNhUtE?W)s|ux$|NrrCGuZm8^D>HW*(asH@Q?rA00;vefNVrfTh^c`Dm}%s z<~u8KlncZK-EeM zclVx2B)|XK9fYJ7P}CNe#14g_aRG6k8JG>-$_}E2-E|NTzziu#c5!eD7G0{uS$M?G zcg8XlUF3KXLjVq~pioW66|MQt-c0~6bsY)%b@zpc02VO@nh;3BryUojav{1yTgzo+n)7|T!oz>>5a|DVzNAMWUT=RQwpd@KFcis-GQj-TroY; zR6qCc0M9Vll?&GVJNyU?0TVDN0Eq(d8cY|!901aZ4FN!cVSKh^{(b~#0003&0B$Cb z2Coo+v<6Tx0kk3%fCr}TEX+vn_J9S=(KpGT|M$=qoe8GYJQI6>AVh^b2$=8}XoqBw z-Op5|RVgKp6_OF>1B-9ac0%F{oN>&AYCHSUmau0J|7im+Z&=&~It!VBFmL}JX2*VT zyvi4cfOx0e(0{Ptfc>_}@nPC$U%T$idzJpYQtj>UdYc zn!JNFBn#H#oG$A>;siwe2HqD>AXyA_fp}P;s1PUu)lU%wk6;2EtcTW!oMe0`K>O%? qWhr}RIS~-%gAM@2-~a#tK>#_4qyekI8;k$|0YLy2LTLbM@CM@vUsJ{a diff --git a/samples/h264SampleFrames/frame-0132.h264 b/samples/h264SampleFrames/frame-0132.h264 index 0252ac71da55e8224c114119e09b2339a3bdee07..da32cfc15967958b2814bcf950f6b1608f7a21f2 100644 GIT binary patch delta 1190 zcmV;X1X=sF35E-Q000012`~Tv0YRF;8oUK(Va=wC#&N`|4Ff>OikNExs=;ZiOe-X* z0|EQN2s_L0MiGKAkSYa(JOB^@gE>iE5*~@5b0ZV7&&CU75FARerO;%Gd_WQaJ%bDz zCQ!5u>!1I?0T@Imspd15^s$TJKm@`;KCSpF$0I6uxBv-%@UOY$EtoAY|LID3MznV~yz)Ai-8ACnX2b^WjXEkZp1o=srARQzKFwT_#1}*U&1~e+nR=frE z%apX|9~F;-z}i{kXS^H%WL5wlpa};FP2o!wvrO~=1k%jWDVs$20fNYk?q0WilLp)U z!oUgu@vNl_Xucu;?mz*60|!>yKD}Fkph)JX9H4N2ker%u`#*aMf{+w4*#t*NMxi-X zl4i6yN4eiX+yaZ;VN1TN0vA2v2*VJh7$b@hL56?<$P(h5z5% z^V?yUz2E}5gkY9o1`t8JKnO$u1W|!>il}Y*Z*S`H&;g)Q1`8M4B6g>%+L;;v0D$-a z2ocqP004j}5s!2NHXZ@?5XcAs2o8V%fdAM49u52M1)$MN0O4Y)Q;GPlygfhRumj?8 zzyi#HXdRdUF9}Q@2i!#hC^>>OU3uW#+4X+9~ zoFnocP~@>j#0*3K5=;OaHcbtT9X-Mm34C(P7W%z*v1+I?5Mud%<7Y-rp7$H9n)C`XXBj20Eax;`@tsDU}kKtcQ zm`5f7)I2u=L;wH*K>%(hum-OXz{m#@Az_XIwyfE10a4C~j3IBn4j>f(0^wj%d}2&5 zf+MHFfKTvE#y~Zrlrysot+eF3Uz0HcCX+w{24K$uz#2_}P#Zaoy)aGS1PqPJUm8k4 zf!qN8*AJk7QOWLhfBzUBXGI9a5diE8AZQX&K>(^>d2QVP(}8JMu6tS53VSQ@u;+@3 zluzN!dh>TLHzXn?s6a@=Lk@%AJTsF410jv% zg4jvEN}5P&{{|R%m~WF&1V)n(0|*}Y0)c=400BV&If<+RtH2wK0003&02M-O0BZ0C E;{<8(RsaA1 literal 1205 zcmZQzU|{4l01}R~5~TL9wyU?SVz8LcI)_Y?kO@`j!USnRk%NQc2+~= z3_EiM7O4gnre>j~vDcN%Zax3d$56q*!qBjwQRJI@5Vy)Bk?hcltO5oBHAzno&hALN z+a(_T57-#e`W4$x+VC=cnVrs*>ToRl2Mdz|w_8X@Z-L^ut9&*L5_YWSDWYmj2{s=k z))q+oV7$PfaMDed=RC`F1MmM2r@3eC-rs0F=|D!nFL|B)#~-u_H83_aFmWjH9+WtB z=#EG3JPEA>k@HvW(ctd=a$w3jh8~5!siDkW3^Q!DPg`)U=G8R@CWgqg0EPmt1uGIX zoj#j5v57MjlIW%r(RqzN#aBH3LShW558}8G4ADm^MzN*D3_iShV{|h|8(CABWdeF~4 zVXIU{TLU8_(=3h2-Se$hDlX~1zT^R8Lt;#KF+Af2L~9XE^zK|%4CW#v6=R7jqvTT zl$71?|C0coHzx2Z?GfA-cY?@z>K$`X5s# z$^Q=H(*31k;4Z~HCo{~>dV}D<7oM&T7g+Lk9~Vp4-CrOjvgFpc6H!1`l^3L{Y z`NQnenmSo`ll}MlW0KViqfd1)m|mH1E^$`fJqDeiuPgierP#LJyV)tm^!F}j)2{=C zs~T9C{cRHX7)1WCr~ZCizJF`Q#hj1S^9Cq5I`n6>{AidUB3JCYyxgiTZsS6i_xv2u zt1f>I?f?I2odDN$)<(YljkCXIzn{M%=KFLj<| ze`+`X_RSl#POLaPDfoL#JiEb<8U9oWYj~XfVRSeEPQR9&%NSQ5knRCJ&7Hzi<=*tUv}VA8JJ%@YG%~$SDt5 z$Do1fF2Y)X06+kEM1a!hEJOe#A`Kh<#A;v$>dgQM018eD9q@mkL+DcV(lY{Cg-;+v z-@FiFK=V%%&CYHk;(?g(0L%ac0ZahiqSywD3E?zFm!OP6?Z^3fX`G zqksq!B<@9oES&I}LkU9POD&dNL_h#UEBqJ*Aax2%2$aEzSct8P$N)Kz!~QGML0(Aq zJH|B$xgq089Z7<-Fm+?+o4qYJipk2d8Td1&Q+`D6!*kiGxdt}U8 zi~v*s1Oev{0l_KH*RLo6C;}~@a=1u+Q@*m`7zKEpptY^xrC%xmZ)tf3gZ3B7e?P$C z@Bm~7At+GeeRzXmbszrV10a1wuw4X3! z4+a`CSkZ|u_z(~ijfeswcq}h~17^vgu?J3JgoXgjFal)N4;4+EzjU9N##LD-j55ZP z6i(w2P9kyYnY20o|7ZZg$jKIjCZaLZoxN!qVtl0T+%Vy`vfw}df960?V0QO@_5Jku z{r(^VWB~-pS0t7?D}x?Gj$mX|_PJ?q0IXvU#hDqlOe(OL*YXC+Jm5x33*zq!vsfbw zzyJ^dAVvjgK{vZ=-eEytTjmV!$N%(hxCXBfC&ch4JPSZ^Fk%2ZBjO`! z*aBM6`@ErZ*5D9NKc)XN7ZyNapTxpb--D65F!s;!{x3FfcEE{am~Bw-bQ#DjA^Gm9 z2uMTnX%$W|BLU>2Qh_LFiN%IbB*JdK?^p5AH!ysHH!ff-A&)q}Lk2 ze*zFo3f|k%1OjkKnQ;*B%i$rwipIQFY zD*yg64KSPl%B1x-djfBgjSc;u%jjwf$&L{YGRpy&HQbC2WGlz;;<1vEBRm)tl5Fo_?P7~`u*8yJ)7#qN-{_o*@Im*3Nf~itF|NbTy h3;{eq0003&06B@S0jt0pi~s-uK>!s(Yk+F-2IHxu=^+3B literal 1077 zcmV-51j_pW0003AFaQ7nL7IRXyakiQfp}0-00;;eCNny;N)Qb7(JkJ10Kq`fw{-Tl z{1HyjP|f%NdzeZ=X-h$rECIJt0D|VBZXgf<2m#;gumFG&OO9^A@cIOaoJrKt08Bzm zz6BXVf_GfiBfnxk^9PEf2(vP&4hcV!&uN07>3ra+rEOo}u=_ z_VWM%0R$ie0G!!-qA*WHVh$L@EQ>&&CD~69{lEYqFeeT{OO)FKNXc#9U=;ubwaHk} z6F!VvkCvE5Y z3{sv>ieydToZtf@`vZTa@>3n)02o4oLa1=sNLxbf$@lI91qQBF8+E%SWO$cJ~mA;Em29D>d5I!CgdL zqm%!?+}Ro%3PSUqju0Y%5YrqqDR7#~boxK}JBz*WK;jyFU_*Lz%uj3g3h2`vr$9>C zir;_$5D^ea2rQPgctT2A0|P_*Mh*pVQq)53CcFFg0FWd@r;kD9mVbl550G{^f1LP| z{@?pJ00!VO&nHJGLgdW_H~avhf)0)@tn?_l;^#PY`wjbt4G+#$3>^XibA;S7g&MpK~)VcJ*`fbvoJ z5+jiep!ju?uKJPrl=HxvUjo1!UV9uAfJDqo-RJ;QOS24ti8uVzNwv1Ym0iu6smL(k z?K6T=w(Ia_zz6^%0P^W^5UF{QSOajERg9 z!z3dA$R9sgTv}B9N1kHD2cNl`G^{Dtti&Noe*a7%_0vBe^?7a}NvWMJoi_jfSWqj~ z276Q@Jul%c2?7vDfCDy!%5wGyhOHbP)&-x6@*zq1GzxnWNWAi009qx zfCC@|;qHVa%4sw03@dFZE0jS=(LcSxFl|0u2ZZ#4fS9;5fBRSfA{+vg2aDwRK)1Ko z{P#8>rwzpHRH5fecmM(bLVE(Op`sb9FpwsH4*~js8AvLi5qbsTbvzRId@K$@03;B= zkP!R~25-sBP&Mg`s;A6qrFAKKoyu3!WHV4t#Ysmy_u%*eWd{X)Gs_nkv{GaSZ-dV> zWV|$hdHcm*lWmzj_y99xB;_w*IVtIUP$NNbPz^%?@tc4J#L;C~V0|%MG&+||F{{GVN2d4oNU`ocyefvgWGOGn7vO^Y`PyO0h<49C7PBuUI0YSNj zVofbB6~t5L5CTAkDIyIIE9{=Ee|P{Ng9T556-VBsnj8P%06qqUAZOc@Wj4)E5CmN4 z2Pvuoi|PK*e4HMF=C2n^NIxt96w^p;)s>w?;(|?>U=j`GCBt>lU_k7o0>;2&BOVBW zP^Z2&XDEsG6DeC3`P*U<-Yid z00Jlhs-OiJ0*eng-(VSqis94N|I2;iKp+kq4bbCb3$8H+Cart`7aOk)Awz6+Y38+IG8pYQMO#0V-TbZj%u_x~E`130r2!g+81xIiE!u*vf@UNYZc z!sy0X;fCFa9!(tAc!wLG*G{pHxs@@%l3T_wx zexn6d7_Z~-AAlj)0003&0B$D02Co9S{QiCf)qyAtCJR6YR zI01i4+b4DgGCSBpKfjNF;t|N12L!{ZFnI(gCS$@QkeS58zu2JQ1?gQRt@r9a226b# z00ba?C^!HXkP5XtI|6Ey3IK5)9Elr}Z?tHMd#B&P>;p4*Tp;n7yn+D-{nA4Dg9F4e zLdt}!g2AuirouA^gBIDK0sqLnK4!lL2jG>kH9$biYcoUsf9#ll><{`+_yT!=0003& Z06B@U0jt0pi~s-uK>!s(YyfKT2IEBIB+CE* literal 1312 zcmV+*1>gDr0003AFaQ7nL7Jc%yaj>$z9iTnK!h3$3IGBC0DvKmR|m%4bBd}P;RW*y zfF=FSN(zl|{qO(;2Y`Wn;E?tn+?^0pj!Hs5frE%qsi<04DyU0h|8CqnT^Z8&5HJ%n z%1a)t7<=g5RSc%JlWv}wzyIiAzySad0H>%rULaO&bZs@VfFQyUXq9~P$Sz%%o?pR$ z9XttcK3&j7!$Ai)J|+NQ;8>Yhj(kkr9O)66JTS(1JS2WviX6-a&;M7Y{6;tw#z0P* z+B8E&OdhNN4iy4EoeC+xf4%?=gck#AhxEtIGD{!<<{&*DKrGk%9Ow^^R0d3V^IJ0csd~`5(qw6E@Xt1M4|v;D;1F9 zYFL#uegI+)yZf_ILT)1aZE`RH5xRpk@vtVbYsY{v2DpqhzDyk=Gz?Z0M8^&m^DL4- z+5-pWa)?qd8fe=YpiM9SQAR8P5DXBoMwLPjvZ52e?eGj_qm$OQH58UEY2t7dU9P0? zF&C_A8zB7xyZ`|J00ROCNyfEuYakoFx`rI%zzi5F5{c4gi4nX2Fl*3I zVy1P$Ia#=?g+Ayn%jW}VO)w~k2Ln6;7-mRTkni4)yi?(r+XfkE0E24LB`@PR;gCas z0ssJj7y}R&eZ)t{1Zo{Q(hdR8Rh>#B?+q@i@OO$)B%%Aj0>(hyBF?I466l<@_Sz&t zlnPCf1+pTwPXHD`03ZYy7dR5PMviwl4ar(C(1L&ffHxx;fCoS{f-d*d5fhO~gl@J= z-~b2#f*EMM2_sG=&1kNfj9c+8ztJm<8xo(KVkOK>0t#JHi(hCB^` zf6xFS0Z`Q)9h+bMbY1W8e)i3?Hesr&hu{Dp0t&F~E<``(?l2jNvTm3F0s-IvASM7F zAC?&<_yP_JfD@gIsQWNnDytOFzy!d6q15mw-Rcm8plIpA_`pCSpcqIQovFIR@~Q|0 z^Z_?O0003&0B$Cz2Co9S{QiCf*b;!!VbB0tZ<3qRU=6?6AOFRnuhy~qKqyCh^@tMU z%~@Qh&-#ME7N!0AwHo($4uGK20Tnd`)&1fG3)Wyr(i3+(0Jk2VE<2stzjOQi@T>{5 z9AHy{9=+ZM-=hCEE|2N{>yFKs1P%Yb1B(F~3vuKe0SqN1!~l&ZIP)F=LkdYViG@S# zP*5IeEQo?u`|^fxFCiRMt2%%Jumx_T@#p{u1waDnPYS@AUx}9F6chlGuCPRRpLvbt zFxGH@W_j9l#_4 WssXFO8;k$|0YLy2LTZ3&@CM^1FEW|{ diff --git a/samples/h264SampleFrames/frame-0135.h264 b/samples/h264SampleFrames/frame-0135.h264 index 077a45f2043ec95e5a05533f606cb0d9ad3b4be2..b8e4165f5ee6094745b107ef33ed23e9454cd2d8 100644 GIT binary patch literal 1064 zcmV+@1lRij0003AFaQ7nL7N~NyakiQf-ynP0Uo~E0DuDp7h>K(P@^16Oy(Yl00K|| zTF?PRmKs{sL(lIRCLQJrWlJWr#?e||1Tfs}6rr1eD2^E_aTAT7x&Z`kROV1O@>jbN~b&Kmb4ydEi3fEk=lfv^1&mzyKlm0>BIufK;tKjR@(y zJ-2`FAc$ZHDicv|3M{LRIJN)%Zngp00IP702$*^)WEVA zb@`E%Z@;txjC6XgZy{R5xAy=9&(mMk2sw5CX$A)>#hQ<6jExY!^&v7LjD#5qR|X&4 zz}a!Zju!ovaa9~E*+1T(mRvr0R`n&Vt%M43$MNHmURVKeKW_qs3n7n^X2;(|fB-;n z00am!XaEEN0mnQE#<2n*Adm4d09b;i;ex!$JhVd(f~1e1pMU}kb}f_|c1-p3iw_6x zKsQ`qVI-5!39YLmMhIS0-a8*=1L0#viE-AD?kPk;NY1@ zJfZP0egoayM}jN9LAfqMz~2A@R&<9qGdJ1~gBitxQA60^kx#EO5lZMImF12y%B1Fo{qw5z1{@U{sjO$;7$XGp-=`ht?=b~ z2745WUS?o_{!{=1Ty)3=@FX(c^!n=(CY9S}MBV=EGU&wikMR(X0&pBehXH?tms>0Q zyznZ4lKE`&`@oZujg4ggqhMLln+zf*OaR~yNvA0+!2Ze?$-RJ@U+c&=2F)1zBDX6) z|J9Oc+s1^jC;`MEFbp(p@dEr1i~oLSOK_8ab5maH8CCbQ>TQ@4H~pX3-nbFKsFbDr zK}3-dBj5wd+bqAM`B9^2G*AM-lO%Gf1TKhY(@f%0266Lsf6M6oY@oiROgwSFJR5ym i103)KQvd(~K>#_4vH`2W8;k$|0YLy2LTrF)@CM_FgUccS literal 1040 zcmV+r1n>I*0003AFaQ7nL7KoCyakUO6ks#~DE%fwzyqfP<26hC6YwF5@BnZ?C_s)V zq)8L#jN2di{`kNEfRF&<77386AD_`g58(I!EW$96FqsWANx9%4q>6D)ojRMxJY-Lc z4Tpfv2nIj_0#%B}gI}=z6Dw00aX^Jpce89C1;G2+UZ6F}2Z}zytvZSc60!MOG2M55On@ z0sw(2HcTB6&g|mOhA<4)5$SM6%ZrC!cpw1`4hwni28f6~Ee`U43>fls8WH3G0WwGb zVAx;?0Kftt0LNXXbl43af!pu_i^4&GZAsV)UgIDqhg8{M3FZBP0}F)*<;GP2A%rl{ zlzds^Aq2koYC*sNV6Om9P+jy20CV6Z6b9!39f~zb2^JdI>10Yb|FQKC!i!1Q|N56r zj<;|`7y!H=DAhhE3xW?Gz4(Vg_`>uGTtJ>D1g$0~0W=CSi!oo|lmG+)1liI-QLU^R zavlQk7W~AnAek5Scq1gqV)v5^^FJLZ@JW#T0D}w>+o-Ce?^G;C-wi-600n7Ius-UL zF>h1=RCK@s#x8{uweNK4RsaG3z%1N6XW9S&fS?qq9g&#!Eb!H_ghH6?C4O+dy(0K5#BO2f@`(I*%d z0LD@O0YqgsObERelXl1WFeaDqC;{gJa2!PnfDUslZKv||7vVTvB8VU_Z?IqhAQiyp zyC82Jh#QDp`%nGOBu_+Q?<2ZKzyE_@{B@(;##}|>B6t&k;v^|y-ZC#HF0B38xJV7= z3vRh`qyP0{k;FmqQ&9i?Lx2d8GPDT52#n;wLIbf$kqSGV)Dp)c8CcAA0%?EzgJ395 zz^(NwlMyU8|LWZ>PLBu-dnqad?_BsSQc3>np8jm2|5TtMgqS6Y8T`+M$-E%+<^Fgt z+Vc?Ft;{?IfWx9v`-}*l;U54GN1(68DK~#0g}tye1%Pe{nHv;Jr~$R~W#_4tO2XQ8;k$|0YLy2 KLTdnO@CM@qu)Vqf diff --git a/samples/h264SampleFrames/frame-0136.h264 b/samples/h264SampleFrames/frame-0136.h264 index d1cb7785c65bfbb599408b9b0862f228d6c00c96..92e16c90ab78425ff2fce0a91eb3de46f474ad3e 100644 GIT binary patch literal 1275 zcmV$-^SKs3}ABr1OQ;pQddNWqG%k@%NUeFW(s8Q_0tqoFvLC7yWfBQfn11WTNsAyKWRdm;PlQAJ&^?OV(0lE|<71i{o z0fGPT#Mv`1gaIH#Fc3iysLlXM1lbg&?56fn;1hMmY3I9Bu>m4|7i--YVx!5uSNJ&eb-kN_w!jJhOF{N|NMjRSBB zFLi}3`m7%F-T*gX7|OIvo)-mddw?VyB^bi+S?Kz2|K1>sF$zI~IH3d>XaE-sK8OGW z06<}vglP`Yp^LxW_uJXF+mKESa4o~xE#cSlE5N~rfCYD%nEmVh|E7)~GwE?N6@Wc} z2PJ`kI8LZ@M%&$kpHRU9`@xYjcw&GEJX=UP=L;HKBjewJ5CjoM1=1>^x8=RRtI!5E zC@pc?`Le>_h?)bUj&gd)RplM%66I1C_mjW?KmuI=pd{Dg!^dt+nu;7ZL36YB^-NQA z2_T$6Hx2-T3Zu;-VG!8!&Pc&YOM}cPuAW|rg*E-g>~z{dFle!=KX;AICUFU2%s{y; zdM>$@Su;W5fT#)dNYNy2H*i^_lyNRnj-}U z3>{zJn4U=#fAK#IR-Of}X;nmqmKvbQIQyBP5XV)}<(^@HQ2K%Y5FsKHuN_Na2X%{r z9+nip;J^?NgJTQf;Tmp3YbYD|5XA^m($k43g)zwn9^6D^4UvJpDP?t6{{QrIHS;F_ z^ne)cfCvUp3Wz2N{4(f|ur16#!(1tjN@+Hs78Q;0)gJ zD>+>7KK+l?7N7kF-&$n#^>`dVKK&&-Kl{E17Nkpy3Pyjc=Z4@-FV{XKIReUTp{_(~ z2&fT_RC;)KFO7&kA}Bc-DFwoEq+@IySjoJW>FAfU_8 zK5p~}#-OAxcxQfjiDx0g<`z|8OI#zU=+~fye62^YZZWg1^hM59(Ln l|KI;=55PN60003&06B@Y0jt0pi~s-uK>!s(Z2)TU2IH4FKD7V< literal 1439 zcmV;Q1z`FB0003AFaQ7nL7LziyakDU0RSKcAh3K;!GTOT@BqLNFdFPW$hACv!Y}*) z2LS*9fMk_^re*?tKxDV8#sC5U)BpqlM5+w@F8H#ctU1Vw;CVm*Kxjwb2?*ENjD4n- zCHMda8aM^CNE&t^HlykY-3Y)0fdNIDAjrI#e;SCBA?`2$AO#vk9_f8&;}wT)G@3vl z01ywmEEEAuV3;ukur+=AzzqNZKnM(C!JJ0*vCJm%2VhF`03E{~B-j9ha1{`&pq!F$ zgi-^C1dL5`CNy_E1QgSTUf%dFME6oI7t{fN%wcfrZ8gI;vIVA-|b`iQ*#@rdCyDMPC2`hd5FML0a1(F9eT|X0$E_I0GXo zIZgNg`T%ZLE?#m0QJt>=0*hl#v%u~G&>;en@dgi9zr!dT6&Yhd>0zF-8fr!0Y;XX* z%i-T3Yhx%D$~YhtA~kUMlkMp6KmZ^h9*lXmJpnYo)(B)Q09arEAOJz20U;3+)dmt9 z6OaTLA;ZYFp~JumfRpY%0jy+~#D@@G7!nUg6ZilE0^z_mrN2<>kc2-kfWhPe1O#~| zm;@0j5J*b>yMYGXSS*$4f${-QkpZJZ04Nu`o&gHeB#A}KSO<)ncTso`=$FIfz83`SFhD7=kk5bsAQqqvgGq#N8dY)d znUxMudiyl>>WbD&x zOxOG$fEl<45yG0s!!XZUXG1#~26p$i=0096Md;x*C-d5cq z58fs~1?q6>^wAgI3m5<%F-M*lSVMM5-qSch?5XrUxblEwsxLkS%KCzy9&1pe{BUB0 z-yxy5BtDfOvde4iSh1~|{NM;7jyoX;f^74|{?ObyTMk+kWkmh`z%gqG%*cMdG)MR_ z1l<4t0YLz6Cb$N#0qlQ2pMf<2P!AwT1DHf9z$M-1zVn2>VZa59y5up>vVhk8*Of(k zw4?3dbYSK3Bbg$^UI&izr+~^BxmYlOfh-I1;uZX1R2B395>^KLgNMS(cx^Mn90J;% z;FLwIJ!$O6KT!C4{sXnIMlV_aw(vFsUG-j0KR^A?fv{SM*G+}7PxXB8tO=$1=fs5| zPf?+V0c%Z!YB`8lqyU2&fYIq7BD#22FO7&hh>8jXYr7~$`0Qn~ghPYgC6fXiI|KeZ z_0I~xn*u-`M};A7t-+8x96E}OPx?YTSAqamNS;X4-`Bxpi@cWj|Lds5>aqVcP#R`g z*(80xfANJE0|7UB_tON>pZpL(C{Yqc;5}rXk-gh200^z67k@#)!39V;UfSRf3g_gp z5(@v^Z~zGE$5i3S6KvbG_igy>0cX=_e;@!s(Yk+F-2IEZUYYYGY diff --git a/samples/h264SampleFrames/frame-0137.h264 b/samples/h264SampleFrames/frame-0137.h264 index ca5785ce5d23e86b56513a505cf387dff41f385c..03a8cab5726fb64bd9b40cec784edfeed775aade 100644 GIT binary patch literal 904 zcmV;319$uY0003AFaQ7nL7QM2yakisVJKLGkj%Vo02zJ^!Z2nCflx3QZU6`X!JLGy zo*(l-)5Vue<6whZ_y1G?7TW+| z;G(Dy9}{=L8*K^{@;^Ao|E+-JZ~$OJ5KC;8fSb%%a$8&gqW&ZZ`x+>a0O40+708aK zWdTO+)|;S>!ckZN9$)}K96ufRirf$oq#^(NKmZT}0fV=$)LmhmCzv5EK>cAr06>q) z+yKYlxCInJ!fld25_DBv>lHIv9HZRtpl$)h?y#lbRe=j0@dROrQVbEr2q42i0KR}o zI7%^v;IrPV|MmwB%TND*Z_jOp9{?51BMoK{aSk_V0SJH~iZCvbRSmx_?fqUR0N_#v z3l-W7iQ4Az$N&fsfB=CmPyh%6ff)CL+AshR9RL9V|Ih$D8~5L!(aHd!VyaV#_^!M? zKkou_#RGyA1cT}d7Bttm^(PQJbztxqBIU{egPDRLXvl#1Kw-^<3-xft5N7xYkr5#< z=c71!{ur%13tZBwi47|?Ly&C@5P$;B?-&YsG)4*x7&^ba2x5dOX=%iiLYU;dKYwYk zfMJKZ91bja!EiWm1Umo#0YLz6CfEkA0HUAI=ip6&Km<90oB&kGUx6EAw|6D;jwJMl z2*yM33`$!#d_PblHs7BN1jRGd9Ramq0W=XbQgzTaIllkBe7+T%LJU8MWy%1?0NfN_ zMMgwGir=7`RIt_fH+Tw)&JGYK*c-{y$%reSzhFoMc}M&Wq5pN~Lg()Pz?&(B3;=Gc zc72W=Ovl^zfBVs~WHkJOf$MmVfF9-P)Zn%=P+~1{Douc9K{EOZi1;1aCL0bT;6wws zkkA|9m3%^6x9fgl0T=1bkC@4jbmXsSm`?l6BnZfSp`$7qPp{kXCZa5Y@N4N|E9W-% zpmcE{_zxigf*13E@Hz37H1LHH)`1Qt_?Qxlv+dxI0S-AtoG;vi<3UU#fp5?HGaU%v z1%5*OrW{tl4IN@BmgU~9Fi-0cGBhN97?PO{M?JS6#wjHa1O7v>of{sNYx=+c`^NkO e6#xJMK>#_4wgIca8;k$|0YLy2LT!L*@CM`dorG)v literal 1214 zcmV;v1VQ@%0003AFaQ7nL7M;?yagu`5I(>})q%gl9p(hBhJI@RuwW7I_YD6C!^pMI zD?msX_kvf3j1mq64uQH8;$fzlcxXKcfdN_#=m}8S@pAwHF|_D34nTlRJK-A=6l_*j z(7=O$C179<_?t!m3I?kd0AcF+u4n=P30w|qV~!H{5_Ko#@M0)5 z93Be6a8O|Y0kqAbCRbEX;2ngh~^G6x(IDSLBbC8%zYz1F+r03b2-B0!tA zrL~5ql)tzyLxh00bgH0?C^) z<}jBSHIHE7{tO`11BH3uLE{S1h)No?l?efy`otmdz-X%{*BR#M81;%1K+XsTkv_ng zuLic%0Bhko3F%I)fPf=l;bN%XL0n{M)w4Gm4IR6D$s`c2Y6g8{gt#ZCF;Sp}AOI@} zY)KPvDXWSi0T`X5t$e=%LK}jVDgYIO01=l@0kDWlrm+A2@qjXb4jZ)7nUi2u94XoO zFoX$RR2X=4nJ#@4u!aB!umCtXRFUoc;QXpG_`og@4`Co$ASN@wFboF^Q4PX~5Jb%l z-ekA{d-^W)$nwXOKn1t0_< z<(xUB%$H5!L<-dX;9;CV@?fiqf^?;_AvDD|zykva`E+P7$%w({OF*J@@(2Th%kTkj zz@PA)zAU#33YB zKK)z<1kC}40kyTE8Z(FiKpZ#$H$VUY0YLz6Ccp--0HUAI=ip6&Km<93MzVk!z`;Gb z3QuBM+wxyH;!j9$sYVDPX#eI7X9+w~kkhzIt( z4bcA9gx9&R`vNz^zp{?gXNO&6#=)Id1b{b`d`7S~`oDrt7q0)0&(Htk0bnM|VM73n z5}4=v#v=A=V7Zq%pZ~+Kmc}f4;Y0w_*9Iuw2?=5^PO3xll%cFCt@nc5ygFncicZK+ zCAbK7iG;(5_z?i^Bq5>k-kI1z7m2s=CCCaCxZv-a7@LcA$^L;@0AeV!r$UDQ`7w$9 z1h7zFcvP`yL6+Ya=mgY7kWK`zIHv(PR6oqO!27Pmi98@M1m;2d@)%oqrGu;_H`HPu z&F0ZsX6|nV)6)`^$FtzS+dxQQl)HeuPqYOX!UH4s{J!A^6sStTzz1f;X#5oC`q%(n zv~3mzNA;(j$fw-!HhGo=0Tl3l>@%D;8NF?H`3}N&W~0@5_T>Nn{$HcVt2x%|0L4H6 c00BV&If<|VtH2wK0003&02M-P0BZ0C<3Knc#sB~S diff --git a/samples/h264SampleFrames/frame-0138.h264 b/samples/h264SampleFrames/frame-0138.h264 index 9f0d36c322f1208fda88788a99697c907ef9d79b..326b01bc9e9b6bbc0f39d27f09f23769e3139d60 100644 GIT binary patch literal 1321 zcmV+^1=jii0003AFaQ7nL7RXYyakbe@Q4V3L9PG}aj+0*p0Ma>*xaO}fB`a=X&Vz& zbo2%s#8Dw>)PYMYvK}G%H;My++>XH#4NNvDt~fn6wk35 z1CD_LM5Lem2k8>CJz%K706-?KLxM=_`+%SWcz^~x55*>*d?6ddIfXEnif2g?S+%3dC4iZ~a1b$I zG)W?w=Vf_V*dz;|`~ao^0s&(Kv&B#!A{fGUk3T^Og6yGKe+Vw8wgLwURmO!~3OWV= zupjRU`EOl1>|7^?S3#zT8af65@5XL4D%c*q=o0aTa9ct;*W;xSL#RIr&_?#DlmG>T zGG{txfiDF9I>4h(ygZeoc!1bmePp<-bN~o!Vru6h(fogeYza=}2nU9B$H7WdMgP|b zM!~Wh0d5F0j2VW?1ex&l&ln_lJOl!^U;rQnjsOT6G)E&sw@!E_aAB!o6|zL*tR?^g zEZ^W@3P4qhR1TQMxv1FHn)m=X%rR-kB_L@`>e|9WHq696E+eHMoY zyfb(VO8`rO!FwM@2j%&Zlv#wH0H$GH06@a>?o`}YCRoY0{tv(#o8y9-I{i#o_CdE7 ziAqvdI8)L~zzPA!x4o=MQ3w(#qyGg!3V~IJkg_iS3yE8X29O5E&4!C9KVH0`0Vn{A zcn)6+1z8gLrvShdvHMA^VIY$vi~u?A7lf{JQVLnCcoPqR0L%v|Xkb8%=@EWryZ_t( zGXv@+!|1LlE-m`}tqx_5M_Err$aeTbSp+5<0sF|ry^E0Sc0fS<$YFRWfTRXboHlse z#5m{}0)RK;HyRae4@#mRMCAfrFs=)4nbv@T_Z?tF366p^*bsKZ2ZnL)TqPO^6S(U7O`57D<(%aO?c*f2NO~Chm$L$Oc%>an~kM-x%VCQC>qt>yw5BEbT zVQ4j^A0?P2Y|LGYt~!*W6ij5`fK`UZgJWo%#r#Mo@lXT=b^rkYi}q+6%#*OR^=KF? zg%T=_%o$enpG%B>~PM3fHAPPXv1ZiQCUb+8p=-3c=z+$IV3||(gF$)5}{<205Z;z3$ zga0rNpcezIy%DhCM2>&}0Rwn{ek=eGajuW(xz=v|L3S;N@bCmX0003&0B$DW2Co3h zAJ6CW@Fu{32XKgT60??|7zLcFp9$~c2wT7PcxWOS{{j1`Klq3me&7EIfHq9f#OmpH zrN^1t0kL*zf5;f~Tj{_2k*;ti-K7El{&+*uf(c&gdiOc+_UH=;YXDgbTQ&K$o$vkY z{%jl=z))TxNMDz3Wk@WpQpf#ivHyKQ f6Sx2X0YLyciMRo)z#EJJ00BV&6+&(RYVZc*+@3{- literal 1106 zcmV-Y1g-l30003AFaQ7nL7N~Nyait%QdT$I^guZHJNCB!Q~=?? z00;yC6tFFSRDnZ<1sNBc-ePiyz9qp$*Vl0Iz4?M7vmimWVF^$R+|X9LKFV4 z_hu!|!jQb@qk=KO2x-I%30x?$oj#BL8AITK#5CxzhV<#!p4aXb(WUT8Bt8=d0E89> zMtlK)0DwEF1|(Uym=G4fwu=FaOgI#aI|$Xm=-<6SAVaDK5F{+CWCYE;jsvK$GKoG& zFrERN3CD_fsiClfdvfXz{lEYS0-OdAx@v-_+ZfsnLck9{_W*-{#JDIzLU^u$*%*r# zco@PJE{_JhMC}^h3m*6Y0stqf}1!tn*Gk^eqTb$Ft1OXe1AMXGFKs;Lr3rf6c0)psguW$zW9v}?h03cnQIo99+ zMFUWvEh*APaxDWr40lvYyAn*?+kuQRK_<%#7VYmNVn&bcU0Vh3^%Wk{x0|Of| z{6q>!FVg#>-~2HC1Mtd?1l}YlRMusZY6+QIh(`AtzEi@vf0v;_P5~7MyHX96b*n#y!z3x0U<9me zmPLEtZ~x;dG)p$lI8em@=sDq76IX}{TXo=lIz9^p=3B3*?@dR9Q|!n8BoI3ZElssQ zcdr@1nqsQEB)2;3^Kc(+Ex$Z2JIK8tfB)TqH!}?v{D{B%Mk)>Y?>qg{N131b)|P@J z^6sa;_5UyOUM2t!H!I&)|Nr0tE+DLL(t5mwuo}0wO;fA!F{-?O^C6gi0Xu*I00BV& YIf=3XtH2wK0003&02M-PfNJmt<8QUt+5i9m diff --git a/samples/h264SampleFrames/frame-0139.h264 b/samples/h264SampleFrames/frame-0139.h264 index 0e5ad83bba8023ae3da5959b220b62301e2ab28b..36250ccf35fee62b4b6ac50b00b77104add4bfc2 100644 GIT binary patch literal 1304 zcmV+z1?Tzz0003AFaQ7nL7Si&yaj>3{v19tfD6PTc-EXLS5`e98PRkg@Bl(&JG)5O zDhxR&a$5udALc7Vnz3H;H=qIv_^V2}&G7(BK~nb>ODy4jOTmOhv=Z2raNLd&1tvcd z85gQEsH!av55PV+DLg_ZY7|>!9ffB~!s6+Q@6A9C_I?W>~ zx@vX+pE?1`YJj6S{h;)4atofkUM*+&U;w6#BNtM3ejmgn*@gii-cndOTMP-0h6Nq~ z2s|-*;zZ-sdBUu@FaQJq00RI(AOHk0zyLupG5|gklxMK=y~EUDbs@|Z3j>e8W)1*I ziMR+7YICGtAlS2?;J^VB5f~ia3-kd9fE?3i&=Hrp@7@0xCn&@MWy;vAW{Zk=Vspu8 zgN|7i{v@)#2YJv0ow*h;BDSEs0RXu+do<(jga0ye02l@?>sTo@9kM|XOrjL#D)>K{ zh~!N!W8cUj#n&-NQ?BWkcP4@H0Kr7gET?!O_Kh5a03qufftA_wk&u)Vj~~_is%3W04R_Kk6a6sG?(7* zzGt!bcX?o0@Bjz|!CE+UN{*jgXoz?KHf)?WAnB|z|5`?vpD7jDVc39{;eZFSc3ufi z&i!zH0Eb`z00BV&ZYJmkuK@BN&*$JxgMc`gEd-3s=r~{?ugU=j*4fAUwm~C}0SjIQ zd%zECr@{WEL;3zlChve}tF6H4zr9QV5w^p{#`F|`D{Z&PINvZLJfhI_C+K%2c8mXb5RI0=+oQA3;20BM zLWltBR&aSh1er=N;PDdV!lXcvDc3?@X><;cO=QPqE zV;r1$ya0Yk&R1{m`}u@~BvG&)&;tj9>onQG1e6Fr;*}-#_4x&f=e8;k$| O0YLy2LT-R+@CM@`n?0!j literal 1585 zcmV-12G02a0003AFaQ7nL7PAtyakDUfnfz8xD>_(fC0b(U;tnS6bPb^ko7dO*5ni( z0-y*I$^a9xY|aHoFkup4aDxu2RRt>m7Vz6eU$vtI6amSdYy)AVvpYro$N~aYFaQJq z^l2x69|4?W5B`||0R?aXpa39600HnAgnQjMFkqtD1uBsM4Oq>D&chv*U;rSHpaOsZ zfdzmB0AxRc+s(iPAXgxhmk9DvWTX2pYyiQ>sqjTD-c9bZ-H^}#2noOdPysd%3fo|> zduYM{Du5$0urKaJT=*jZ8N-zy;$FmLzlSp$os1ADq8-7J^Tb8B-as3Oal(zSzYjkk zYD3J>I6yA(EXYr=0<`H`Ulu_Tkakgp0Y*{9w*sTN5DMRH-RS@T zfFKc3DS+F~b>|Ztzr(}A6sLt3BtA|1vtp0{@Rf?lQz=a3IeY^!8^q?zPt#-VuE!$) zWKHo}Shzls3&()KCB$KE_ra2OgDHk&#|k{hyh;AxFkX~m9Io7HV&Epe%vb;>KrjFh z01^1?f;JTn0Z<4bfFO(@1AqamfCXpRAbfmKM(}4DgxU3xj z)=&VT9VPf?-((Uv&;V!E|0%ctdzR@QpZ2T{++Y2sK#KO&H73*m_(VPcVB2NmDph}f zgK_`~eg64}8{`hU*#GwWatI#+&H&&b`H)c7@ZkZ!p$1iEjFRnml6Am&TmXD>zqU3~ zEC1{%10eFfR;|Nq|CQib3WI-RAyW zZB3eMVRJkyIUDW_3B~h?JCUk diff --git a/samples/h264SampleFrames/frame-0140.h264 b/samples/h264SampleFrames/frame-0140.h264 index 02625d467abc141f591cc57e97d4266a6a56ab7d..44b6d96a50b0117568ae8046ee95284b6c285c74 100644 GIT binary patch literal 966 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 literal 1435 zcmV;M1!VdF0003AFaQ7nL7RXYyaj+xKmb4l3TcKIX{MTCh8k&~|G)yA00IG@bN~SW za1sm~Mn*N7g?D=}99?jP02~4UWsm`<)-bKWH0TEAk=yV9DgXikfCmdo36bEV>{oVQ z;20r-NV34QZar7q=h^rKBcO$Y@5tkWt8mvRGXS>~KfX79@Bo2#L8rGexn+mt3d;md;(<)KnCuKq?|M!3qKmma=PBj;mR?-YBG01rd;lfG7EfB&h#kWs`Yub7HaW&Q6jtLqWp z`0xNGaRiPo@{)F&*|$XGyWn+LW*tc>`n(7^d^H#w0{}MyfI1lgK#(O+x)HwJNb+XC z?MIXiBEK47QizJ^l?3;dmi6;Fuya)l{MoJR@ z|L_6~Fh_2pqOZMBu^W7YpaP?&02(oLDV?u-LIea1^_29)r>OD!_u2pefS?qq9g&#! zEb!Hp2!91n3I6<S&z{WUE7Z4X409e#2SL+v~iRHEu55NW-=Ce5X0*9M!$u{0G z5T`B?n6iJAkRn9@0RR?#0YS14D{7F3?+H*E?xd9^cvklXgahe?*(_M{;z-{5nB_pM z%|lz~w4fO3zDSyHP*d*E^HeBQ@KS|ed)~0xk{@&ySZ?jlm{%4zvR~Q)2yq5vAqC0j zpZl;k3boUh$de)ezjOwCfio$(^zk3yWv;LA1l<4t0YLz6Cg29I08nlR5MT$Ba7gw$ zCISScz!VR{k!^l9lZ2peg)_?nXioqH5lTW3r71{46r}(D02IRm5msm=a>AG?UqHx9 zAmF3~N_+;rXaRk$T*vYEAlCy1hxgUq+_+8gaClp$Of*aVH$NmfYqtU&ee(M86;Z6U z^z%FgRreLWfwa;Tdgy<u@)eW~Fd3;^mRDMk za!>=v#}p<6Y8knAzzk2)VkDFGhT^xc0HCMVl6rSL2I%|$r~Sa427q}H)D#5eIA+(^ zFk1L7iqA;e{p~>jTeVqKM;wl7NXDGqJD(%BPON;rr2z=%gl*eQ(%DfQUph pWZUOc|KMOE{B8uu0003&06B@c0jt0pi~s-uK>!s(ZUAcV2IH?nfK31Z diff --git a/samples/h264SampleFrames/frame-0142.h264 b/samples/h264SampleFrames/frame-0142.h264 index 0565398f8c70f7581259b3eee0b9a84376d5cafc..bcba8e23f107a9e0704b96a367163ff8d19b9aba 100644 GIT binary patch literal 1186 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 literal 1172 zcmb`F`A?H~0LH&>FG|5$X*tFrEfFZ=Xo<**0v52qf-sl~E5k{-6a=A+p&-{=TMC{STJx`Qgd)<0qdy00798`M!c0 z5!-%jwL*{|9fLp+8Z&e%wmujtIp};(5eRtFw5NTA@mb-rH2TSH@M&Q^mm3oO`VsK` z1rEwR_8ANVHqr16jDhq8f6Y7YmWI|o$AUU$*-<>M00l7S9j?>4jds?;6Pw5D0N(T> zZ&s)$8d@KZ16CFQY$|9LWNbDQ>^IcHW%Q3C!t;%qq25zEB&Q~xg~$` zf&mDKQGW$0iCg*$P=*sj_!LGl_odIn#?oAPzn(!hQbAb)4RKZL@GRXtY zm-mx{Q9Y}jJSJa`G^bB_t;*lb0s*nbhAr-D6_b5lvWQJc`Mxm%!#IOxk#|v+j>S0O zU3NZj8`SEcMZELWOkqj3iTj!ccN+Z#;@O5^?a;vEq@KuEd1sc#gme^f07 zgG(g93KwdFhvAuitQeIAe|Rd$a?#=1!Plpjb*@3|y^$KHmDb;Sn+88QWE)LFGsi_! zbwXH1$grMF;(upiA>xx%_Ugcmb@FMJ8xk6;&Y#Ky^yCDErFvb7vrHDH>+J#>y+E75Bz0#g4G+OMJ?`dLkZ=BX4IvB6o! z0Zux}jw={Qm!#lm3*3a+>!!|cOJspT3D0jTd~u4wJ}fxbQ67yJvPhq|qnF$%l^Sw_ zr%CJB9Nb-Okyu&6(i#6-c51~@Yz*+QYEqAR8p67FRzgyus2r0NbQS)Aq_$}uzd>l0 zPbhO7tA8395`|aOlS&IMfTH#+U(z#oAJSe`X_q&)cS;XS{>P!i-uh_BGB_KY*5O|L E3!?2YaR2}S diff --git a/samples/h264SampleFrames/frame-0144.h264 b/samples/h264SampleFrames/frame-0144.h264 index 9899cbc039664ae4418f4726075de1b3e1da81d9..bb98dc28ead553cff11923c586c8d4a2bdacdaef 100644 GIT binary patch delta 1269 zcmVSTvcz0a^k$_7lbO3x}UL;0{@%T6dni z+4$AfZ>8~3Q!>VK^h_22R=!V!I)0H^7yt+cwfGfaE zNDRm>3V@IxG%#lX3ocS6j_G8-z5-|r9%lj{<_P=#{?cp#?Z8hsC1Yg1{i7J^{v@)= z4q_#LzxQC6+DAbaw`YF<820sV&e8x#85BEBeG@w)yMO`1009JGD1zF3L|!d>v;Y_g zcMnAUDd7%C8T!#NKUm{ylF$8voNB4=@BUZ-Jkh9a`4yjoO}MG0_mf~r_u)A@9M8m($@tjRKMFvIu>hw8(vTwY1=hvJfcc1wfBq|f zpa2K}qCgrwa5hlV-+R9Kp2ywQ<$-6w03Z_uXyNfHI*pKE!?OSe&69@29XZAm^`vQu z@{v`%I}j4wFaY)|F0{&ack6@j1Umo#0YLz6CXfcN0Axq=`S=r@4j_n0f|vmLH1$1f z2qwSy-~V1nvSN+EbSbSAO*|WquuJoQwgPx&1lRxo0YLyciKGFm{N4Z=w%-)om%%_E zL=@o+aA@H$7go(APk;d0i8JtoE&s9J%*NnM*Tos+yZnO=3TqQ!lJt%9@Nm8cQ-OsZ z)%yq#OMn3=%=us#3VVL{=y>zQh_EJk8PR6v>u_Pm*Yo5TOx&000012`~Tv0YRJK8oUL8zEJ;%%>V|&0F1gM4c@0WfwMZvX@WfE=(7BqV9$gja$D7LqT)FvOWUL7^sp_o|g#01(^+8Cpu?DOFhx ziHUip00IE`qyPZ`02BmGVIm)7{_06r<@O{-0!{)fWB?NYoZ+kqycj1kZF%S8F0TFK z3;_f__+*VPW@Na4R0n(zaX{d7fri={4g*If{19cj&MyU*9lVr>lkl}`1N9O^k5uz$qT@3&72YEcUxA*(t11SunsW#M{ zDgSq<00aR5iiu4I-gU1$c)Oksm{Oh;T#)%U?#+sSKm)>7DCI(4Q$r>{MaKJzT zOWj}wJkDUqRQp%o|IXev00IC&8HF4Rv*Y+N>OTWp-{$}FBp7qR0RRBNFhtv(-*)DJ zD7YmdkN^P=oCXSxlNZnEWl__fW>HQ1B=om`{uTfGhCl!y03a?VrIUkyx)!p2^B#y$ z01zPRy`Ti0xLJDq#6;xV4(nw800Rg_qG(%k(i*j&(=!L$3O6;1s_Fl@H7Gjt^6fs_ z#XKMkA{mo_*}sw57#j(IP2d2G0MLpOFD8BS3nEVge)i3?He*#)55NHcW3UZ~iJN+V z)dfXIxi(Ay0RXT75DNej6_x}K@CYbm0eMxjk8)(k*~S^@0$_o{sL^KMv76ybhj3sE z0s<-no({^iwLz%`4geE$0003&0B$Du2Co2QNAvmk6QGC>CLMqai1Id(wWuHoE%zV$ z-;yktpsE0T3TwflJoH!R2fPh3B*^8Sa9JV=cIB0SR&>|L+@!G{Mq1|mZu_8tHx zc0v_dlvh&=C;SpXB~1FZn)aftAOU~?AR5pF7kZNs1SgXq1POm2S8tfQ7BNxJ%j7O` z@gV@E5a6%0&CIVn4oR2=K=}_qQFs|+i5YllHs~1!5$qE;&ZEeCO_Y zydyB)00@xt%phTyL0Rj*20N4N`E^QblB^)QV zO5GK2&&C)<0LTRqV*&<((UiXcTx?`d;rRrA|Jz1vOHz{|B7e664ki%}vw;Qc0+YZ6 TIu76f00BV&6+&--YVZc*CP5>B diff --git a/samples/h264SampleFrames/frame-0145.h264 b/samples/h264SampleFrames/frame-0145.h264 index eb89e09f6d83cf3fd940ce77c3134d983ee03c8b..d5ce5685a2a8093a0ebf16de84f00a2657165bd5 100644 GIT binary patch literal 1865 zcmZQzU|{4l01}R~5~TL9%8N-^FhusW%UJsq{%Kaery|%=!*Jl!K5M_@3=RwqEHb(M zDibbFtD4pEMC6zQ!xaYZDh4i-4^C|B!?O=dvP>%Y9(HMsi1783H3El=Hw3k1GA!xl z_wZV5-aY?i662afizTW)PjujHoFaKF$orA&NA150n3yJ9y7OdDmDkqng7X`smQ842 z$YlTj@B0Eq(`I&^h-9_i>EeHnv3WEIY>@5QT+RC6|2@W5#boP4KaKP(R5#6C#@xp8 z*<|7T-zE%J4EmcJj`Mi!aytHpF|&c8L2e#ngNSxZ?OuZ?2UzYGeh^wC!{okZ^F)Tk zqTag8>5bgZ*&LBhI*MTza-_N}R_uJ`x#tMO+Xe~8&4nr&Yd$cWF)%R*yhjP8O3;togH7S3nT3S(}VdMoQUmz-Li>IfGvXo`BY1NIWCU#H#h;nayz3?dL!$u$hh)kH1`bZf=Qf(_#yGmhBws3^x@+8xTNH+ zd4*h&YZcrpIPxxksZYJ0-tw{H1Op2b+c^zhj<VpO|Gqg08E^zRdf6m2&ph}*@c~B}D7iA^ zsm)+p&yeT-`GdLxSirJ#8RP2T<_(hHex18f!T0E}e1l@p#tA=P74%=8{wn0!*RA55 zwV%(&Z8orezjd4af6~A|4u((KKUjRzgdbks>?@@4gZKHShB*Nn9^_xszi+?o@&Ek$ z-~YEi*&}EnB!8u1_F0L2ml>BA3F+HbFgYBvd>Heu-hTf1=bwN6p(5j>W9J5C^^W#u zM$07_#1}Z8UT>oMNARG;1XnYLr!E}YeH1<(j@%wcqRx$GP#Hk$w2x~`8ra=lD U4PHE11YGKfI%PIwePDYG0H#oGy#N3J literal 884 zcmV-)1B?6s0003AFaQ7nL7D&>yakbe2!;3%#srQ74WZ2sfOp`D;5SnMKEMD#Fa;Ry za!mL9^8Npm37rP#oA6)|U^J3~l9nNeqMj-vfy;mc#u1Q6*i4rlrB8SS9I=HI=!-qk zGQn$ptXSYPf&q{L!7JxMsEzjt!*ak7U>+h{WN|s1ZIppAv&Q1TZQ^pA0RStoJ%qbR z9>B`y{{SR@!4f7*fk5jHe0RS-z7+=XC!6a1k({LX4J`?kzu|0|SSA(t2WF^mwHG^Z`yDuyZ`1zBu~@ zwf#_4paHAK_%87*FO@aVCiV1sw zVzHR?kQoN`!?yxG_G4~lmpzmKx6eRYgNXL)`2P3d-xss}2Z3*7;DBj6{}C4eOl|-^^L`PW-Cp?^)lv9AfjIDvegyOI4+H=J0YLy2 KLTCVL@CM@tV}j2B diff --git a/samples/h264SampleFrames/frame-0146.h264 b/samples/h264SampleFrames/frame-0146.h264 index f4ad47ebc0b1013abd94582be7ba4a570f8dcf94..118746d05b04a13d602dbd03f8caf7942b34fa81 100644 GIT binary patch literal 1660 zcmV-?27~zk0003AFaQ7nL7IRXyaj>3|AY{QAOMkpfW~Ht6ZK&RjNPp8kN7G8;1#Uw z3z>eKzA8YZ3Mpp50nRo84HMQK4ICSkly`xL<|aU7<0-hHMMJ*Cj32%iWWEAG06+xn z2pD+Iy5>QBPM_@<#Wvn1{haY+A8G&r06?^f0Q0FdTmT*z1-<`qiClzG*l;!?ORoR! z`1^Y{-sCvu21ZY5O-X&g5b#K(RsQf0xeJva_&keS=xBwh807|N`G`Xl%q62Or748`2Jl{A+#ZLd5anugLW{98BfB~^M3K{8Tr-1vf z`@nf2LjCPM9LIftuFL=g1Ob9ll5?QE%b@%KGn;?_fG~=(R?rIi3W-HOAO|St0usc1 zvI?eG;6f^)42zDlPY-|$c6%FZcby|2|NX!l0Ah>22+xh=;NxH0AP@s4CGP?(i8_A! zmjERE3SsK4X7~xK1_1a`c3=P?7R3Mo06=J9&SC@7hd%%Z3}jEICh*KOvcK<)zyLr9 zt&k`lS&B?cJ?2C;u!%SmsGXaF%Y|fqOhV$n|8N8tPFKnoiez3YO@Fu$57z2i8Pyi4IoID2v zqd#7_4R{<9yeWm#Oi{KU+yelw6SNq`kQ`KjPz-xqTsjC3-82Xi=sqtX(0-gRkp6f8 zWCtNAP~&}Ygj)-!4*abgoaD_fng^qQ1wcO;u*YLW_RE$J$^cve7SIr`5+79etb_Bg z0OYVR2Mg5>X<2))bLtp4UwASoZwycY1&e71JmF!b!Ztm?20;7Lp)^L+hZ6lo<+8}x zlh*6n>iffATyQ``Id3u`rYPc~=dmlwJJ2V}tY6+w0096AbOL~rpNkJ0*)wV^2MyH$ zW4`{IS3uBCFx)r-2s)1~$r%lgKID`XlsG)Yis|L-m{VWeZUt$YKrm|_!Tb7*W|K68 zu;w6KQ_*|>1JDR~d}GeBep4C!ya3Fk26$yNs*O6%f!GFhiwiNEzV@k9)Ec100IO603b=W00IEOLOtL(0H%-w7!+y*j}pP+ zfo%c>jPa36cc0z_!z3`He~A(R2q25{%pmo!=a#XH1|Q)lpb@Fk!e->(*2zIngD~Wr z^&VB;kYT_700I$+gE>VaDNaUEVdg|d1_xMg*}04(s>>2UPs_J>y`5|7ZfF27DOn>@ zl~z_fCELORBLW?gE@stc$7Uw+H}%FRgWe!Zp_Z+IVgR z*@`GM#eppIO%->3paIX4;fhB;M%t>s{RU%`zyQ~v0)6meumF9W06;5Wb%+hQc7$CiE{_n$D`_<#T40gUVKTfTM&Hu4+(?*kDOeS_(q|4;;m3tmqR z_!DtrgFx;`Tpd`T#qYcs#zTt{#`o@mljDEvcEqU)Rj_4Kn5v?`8kG6RN2*ROIXBPO znD2y507WT|Iz=Jh@aQ_wJ^7+)=j-+YS5}Z4z2qTJ_yJa_4I>@@?XgZ(zW2YV%eS!Q zV8EOv8~A{?WCLJi&QUysQOEqh_9tJZRp9yW;>g1M3CEAmz@B~qkbnRH0YLy2LTUhN G@CM^>((dvA literal 1457 zcmV;i1y1?^0003AFaQ7nL7E^Myaj+y00cH>cV>5HcXt2y0QLZ6I0P&p?g$w<`I*`( z=o2vkDhmJufCMoh_iZdu01tc&%%|rC5l0K%Z(kYek@vO?2Wr#fe>hK16z~8MU^oQz z!r_%on=AyvzzzOj^QeV!wW6?U+VcPb0IWa^1m?=u=Z9v5+suYi9|u>UT`aCR01z;3 zn1WS%D+zk`o#aCieUB>ABWZ6u7FWeM7+(TDJ4~DY@cg?)A^2%SN09rOA>pn$4e^vyFIfskn zbRqBi+F86H0sx@h6Qe>+(0&Xk-WS|%k+7*$#me;z08?a9kD@D|^4`dS6S0UA(AeZr z7W#NOd^H#w0{}MyfI1lgLc&!aLhqJRFo{q52QUFpX4pE@TNm#D06<(FfdNV@W!&k` z={qtSV9)>v1Assus^}STTv9*)5C9Me0bwBGA_AP0sq8kklmTPNjEAzfRQvw`408@} z(9JA8CkvaJO8&SpKq@kW6yE?B@IN9FuQ>s66{`Y|7nu^x2S}tDf)L}&YWMiY4jCC+ z0ErP!aTQ|g!J$A4+?*BH3S>v6E)amDBQ_1kvVIT%2m=NFI?CMvH;O+11%zSl3M>l` zZGK{O@0l5iQ07(_l)i^C7&PdUTV1nwWDHPLV?0%#&yC}N01yi>C;(Av<^M!%lne?^ zBLD!f1_cyMpd=ZShVi79z1m^H*btPxcDkE8_5k||rVHa8I9+%C!HRhdFsS0_&j*Zf zB2t@#0Gt7Xcx-B0Am7o0_w4`xKok@blOld$K1>8WaA%+g1Zd^qw3B{BzNdlmL|_A5 ze2EkDsq7faD6-sevPrvr-~b2&g|-DpVv%XnzX@=gg0STs%$1gK|0v`D0swrV0RTCS z=@3j})uM0xF~Wdk)6#AD02_e}Yiv?7Ciy|k{|A4-03dt-0s(O{4GJ620HC)L01N@I zXbUhHU;v0t2()v;6((b^8-Kt-UI3$r!H6IOuXRIEXdfg3G=>IYf-Hib2l_w&AWmaZ zN#Gj9RU&g{2F?i61kokXa$f@&SWXuZ7a0Ip)L;Ke=qPR1Tfz7Ng&}OtE&)QzwOoTQ z7@5xa#zTv|uL3Aw0IJ#s1YB`i-<%(hhz73!crX9}0YLyciJ}3k{N5Pc;(Sj6 zbRY)vaGRO{B#x}f-D)PU|MoCgu%u`nt;eHI{-@t{kN@Amxp!aB|M`L4lUY4C z?o;q2A}-bU{;VeuF$s{jaKF%-{h|UhgtwEzz69JzprAU$gisu=APipnz}@Ev@VSZ! z@7JgM7d68_V2t1vqVov^8cpBkpK4hegxyh=ipC20LVZ900BV& L6+&o$YVZc*j)-|s diff --git a/samples/h264SampleFrames/frame-0147.h264 b/samples/h264SampleFrames/frame-0147.h264 index fc8b8c365eb1accb12cced7e848fe50132b4c514..40a458cb84a97e10cf6fc05ad0bee35362654bf8 100644 GIT binary patch literal 839 zcmV-N1GxME0003AFaQ7nL7Jc%yakiN2szF8n=?!UL9PG@0AOO2w&7sZ#Dvxt+1E1w z0Pr2+rGN<#F#MJz`BDa#ccm7<5E58n#!mlpSH45NH8Zn903TBdOkaas?jC~#Z6<(00ajvOaO!Ie*6A!D1Bdw;Ar>=L_$nL z1skhio4yQIi5=yJ`?w0NK0}lyjj0R(EZ(TVD3Yp=8Xh(#zkm=!94V|z#1v^OTh#FV z{g+b!K!Izcu#ur7X2FL5L$Ck<0YLz6Ca4Cl0C+F}00BV&If<$PtH7dvKc9g*7z4?I zlwbl2%HFO1k>3Q|*TUExGvQkY%+Nu8`j`L&0k8pGY9<@} zFb7fLu0W##7XVmipGQ;w-@fn{CPs~uBsFe4-Fg6t1-S46;@)FI7rBTC03oDGM+^WU zf|N`GbBM9{Y{EIKS%6Rw*Y!s(YJh6+2ID(wTDkxL literal 997 zcmVtn%ZfNtH{hy?%=s5xumj}^~1=l@IK z#87BBJQafApvV9=S(*|>b!1-vfZ_xZ;WF@H(b7ZhQ+x%eU;rQqfB--Q42bDrJ>^T| z0JuOsgn?LqnBM?k3<8I!hXJH0V)qA+@>~EP0Ra}Teh!WZw3{NqsMY`o03Fa!3-GhQ z-|$+2fdd$^&Xos>r(?&2Do9eSYeU3kd=)C^!GW`Yx5I7#=sf4~M2%aE{$6Tm_X6FdNbQRM{_AtNPBEmG)) zLV569aHl93%tIn&;T6qKj0t!M&kA;Z?DC8)jt^t6VpcHTlv9&1q)Km@tWaY)b zfF|ew00BV&ZYGchuK;*30003&06B@I0jt2Ge?OmrIv4}VhhPDP;;h;xn^Y7djxDb| zS%7TWN&xN(Da*qj52$yZJU{?I1pw55MrpQ0r@rlAC`wQ`vb`Z2vA8v6*P?5`TGHvoC*_`Tk1zM+vGp*bL<;Z#amK)5;`_s~^TX2f4gdzy z%%fszrEfqmrz(pLPNfZ5pOWzp$*fQg13eysr5{F8QC2{ss*>2Yvu-+@$X1A-;4oft z?9>1P0Kw@} z0I?kqD*H_O;Y1axM;BYWXTRd!-rH{vfDl+LVr!$^1~5wXSN`Py7y_A`Vga>- z!x#R=nOI-|AOZkkg5lQ>*VaJoA`lA_u5R&g{#c+f(SHD%0Qq`xf>=K8%E`Yjb7u@z z4~Nu=e4P;KH_ISkW)GM->O}dh&)B~R&lWTa9YKe10fXseM7XXHFf4!J_+Kxm?Yv7B zvj71Ab|?T4JRnyygAxZk5efz#rV(RhM3C{Q00>!sfWQi1b`MMi&f?@kLOp2401gYM#&p1av0vP91^`mRdZXIH zfu{+Y06Fe25zsm(gzJguH^bln7=u*qxKLK~$`G5h|Mvg`Fc;M>38J{PyvOT&%R`xC zlh$hXxrc9#mIHyq8W`DhiU0%V(AoJ5kW?qQ_Nw8K!B7}bXy}pi!Y8Lc;QZL+0R)W& z;t#v1;0&NB32>Y+hI1DVLUsQYhb?h~0@1k1kKri;%m{c{bc_%OUHR+bJi+S513~YP z!>BwT)S>wK|M58ZxZrJs1IS=zFhoZ#y+9fj#D~BnUIAquAfbpdz-d4V00IGE#0d6| zi_!NSmr7&6%f!Ke21M2egj#b-WDWjC7>u(EA2n>!4CniZrjv^D#hmdfh z2-PEtt-Y(jD-0lZu=rORHoD_spXZIjgYE$h)-NRUERoC=rQiSv1&|PcXBZzV^VEET zgV0&y0LM?T2xk_k5{03!|5%XDx97;0!T*>8r~=?B%-KBzi>7^c*!?S&-uOT8pNW6~ zfBuK;*30003&06B@Q0jt1J zpU>yuPK5ySEHS_VHE)u?t^i{ip!pm5U^`{C5^gKpf4q<%&yAW9i-lE^Y6pGq5e8ZS z$pkzH<8WGmxM$!U-qd6-yRZB(2NJ;>yJ1rtr)PupEg84ha1;-kq){b%2e4NGI#LeX zZ%Yd>M-#z+b@Z*;2+k|NI#s03-@DF~9(Tb|6m5J{-C#lS0_^PPYLd=sgDx4`7Vm zD$eKqJUX1P17KCtQGbQF1k%PTTf=d2f`9X+J{cWhweNr6R)@3M$H#x(5Cf>}0sCuS z?tnaPe3812!`p!PcPb@|UH`oG{)bV3Dt<%2ZG@lWq7W72%S}}N!s(YXEBS2IGt+P!s?F literal 1104 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 diff --git a/samples/h264SampleFrames/frame-0150.h264 b/samples/h264SampleFrames/frame-0150.h264 index c9adb9432f72ba7a6b9b52c3ded4601fbcbe3b6f..8eea12d90e4b41caab89210401e407b4d3fc2cb0 100644 GIT binary patch literal 1226 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 literal 1778 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 l|Jrd<!s(Xn<<)2IKlxlj8sY literal 1016 zcmVu~DDXwAh@UftU!QlXd z2HC&>&?p)Jz9`_vo{$8gmGC5sl_})1e*qnCk3bLt>K&<$AhVR=K4xDAB7;G};H(z~ z20#M{v_&&yLwE!Za3MR-Q?YUwNw<6ei@`~aU|~b)K>tf{I#2)*P!%Wu84u4}snYu& z`+xw%0Jp{v;Ive4ke5B2(eQdGgCKE%BA50yBwCE(Libzm&;Wo#>SRa}a@4l4-13v) zLt~LawIBt+X<--mo@DR?C;$imRw0AL;B5?L7p*V=1Q);nLLdMHBESMknB~~QOkmZ$ z2RnuuBx={4;7a18ST_}fXbc0ubW9lNEq*e>7#<&;asgSk0ZfGD38a;W1H--(jEuL@ zU68?2zzi{<@D`MVEWe?=90|Nj^RZ~&pbO*xw~1yRDC zm;x|`9wk&7cyy5-eiN{P0096f01gfpBzu24Ul;|#0qi6OF#&O&0f1mQT8M5FLV_l0 zZ0{w&1K>caSG@$q540E}!?D-^fCI89fH#Mt-u=N~AYirX^PLg0N!IPWK-@(lMyxRG zpF#xM_+Zt5*1~LvDQ;#kGocYYVPFA$Jcf#BFHNmH@ecq1fN{kIB7A%Vwza<+fTRF~ z9J7ZsnUg8JD1l0p9tIhN4<-t@s3}ZcA`;9~d;l;Z&ksgJ43~@^bF&I3PauFeG|zw* z{yYQ^185b8sa^np;>a8%*vqs+6m6c}n*1&)7zBxyPaXm_CY42P4xqpQAPM(I#oUDP zkiM?C3<;V833#CpNOx=&OY9vE;*k%2Kp|!IdsJ}*VG;J`FUjq(SU3*ClS_VoyEqC2wH2ehNF@{h mP=&HdW$*9iygQpVX6*(9GkT}}nxMKnmL$Yw%$Pxi90B4K5WF^4U zoluZK%#UNg8R3iw)QD$q8xj`Ar%UpI5-;-H00J0hK;g5Xmo_{Q358AYC&h7GU<;@T zU;^R5gYvxi&N@2R07p#@-$;dLr}S5``5rt307nQ;UO4Ii95)~X99RqLh3p|%Y-+B17A@&004lP0F`418C}Ixw2Z2%u;FvP^#Xvo-bvfDO=LgoxW~Tq}7)`~c=gCsIB_ zv!>Jl2wLd_$@ynM4I2UO|FIg7H&$CW$#>oN|K8pYfR6<+uUdEt(`Lwj?Lc66RXc)b z1&n3&&ar?T1~k~pWAo}qYGfW!%eMpmV#cPd4!-Dek2GFR(Bv_>v8k&AsKDAFpJIl{ z4$US26^DJHM+t8ZFPLiL(G9jy5%hoz2=k4X3sX2rz|9>jg`5BIKLiKsfQG{}%$TXq zIDhD0CL1Bk9~vMTqoJXLcJPk?uD}r#fE1CI&mxca16~dqoGoQhOu?qVdByN{cX)ycEnYz#xYCzDLO;Tzrc^2jDetia8=HpPCKGd4-b= z*$Qy}`|uJ33ME|S2EI|J?5+QBR08pur(;iF78&~7Ubk2gZyI0KyFf7%Eh;TmSH2N8~C2j*NA{U*oY*>&*ZMBm#-7{3YTVW8HaIjfm=JfnXfaxWlV%gVCz}$bL*P0Xk~}$5(4QFBbC{ zM`e~IfRC4M@r#BdoFaIZOxm1J|Jncy3RXzep;eWRiFOPkx32U5-|x9zZRhygMIkD|muD{TJ+aT<^}R$CL~yWkfvKxA>?PVMbzc*pVuX&!JQClBIp3#(av zmw*7+We&mzMfA^nM+AW{m@~g%3}0n{WJ?bJ^_0i$i?Uw_{=wWHhfz9q$A% z8gVc`)huVHlIdw*{h-RP!~f1tdQ{Ue41rSW7qz0z8ZzeOa0VE%?06z6g8O-*=La==%fa}=20#9d>FNA-e Y&x)w*d;h?l0003&02M-M0BZ0C<5R>s{{R30 literal 1130 zcmV-w1eN;$0003AFaQ7nL7M;?yakiQfp}0-00;;eCNVm+$`T9p!9AWK_yK}}qc3TP zwRYr+R)U6L0aq}ThlDvCpub_uW`<7Xj%<>>3VPg2nmH?)Ir*Ze%9aWfE+jg0RVskmIbTnkSK7VqeByW z%uZ1g#JDKB`tc`t0096c4lof?R;Phw;wU45GHZqi0*FWA59t%L=v5v?w*UYj3 zaltc|!9%7)X9_!p0YCr{19cJrgJ1w48};Qg0F(Q`9s+^IHbf-pqX4$>noT~3;0J+I zqKge7g$ToT1`1jL4hI|(+Ng5A;P$ztynq0J1q-Wl_!P01>z9B9U?BJbKtNZlwW_pO zEO;%Cft&^s523AgCTa=9G|0C+F+r}0v1Vgr#Ds-yg9k-Q>)=l>=mf6M}-Z-#HTz=$#(Eke}ln7$RD0v8{!1k4VLT{=eMVl^lYQoad{A2%rQs!Ucq` z6Io85PyY?a!2^hC(P0hg)3H6T+$*C?;FL&wCJccXfXL5)FaQt-bpXW+GZR7r*Y>es zF>t}aq*>V{df@eMfIx>-3?N8ZR>%pPc^n5>U}Ze{Ai{VCD2p!90;Y#TDeensKlcCt zAPR68Lg=arpKM=fGYbGb|J(!|2PwfqGBd?>4@iVKyTOccq5sgw$ef{D!E^rr06HSWqY#p)>aafB+B&dJqWcnjb74urdt!QEFda0~X#_y8Hf~E(Gc0 zf}8+Yo@?qO>VM1tSR5^6d}fdM(!qepkF)IR7601>5|wSe|MwOF3=4g1js3Mgnqo31 zhmOR)7a=|%PDCyyQ4_BH^tYRvYqx{{N<|C@=Y@EXHjD~j6cN|h7<>j5C5HOj4aW{| zn1OI|00+8J^*8roo@Id7j6eGMyf_oCAh!&g13@ve4S3dB10SE@C5|F#D!*j^*LYzh z^QV$WyZyU}AhfekZ3nxSt0bD+y8f$PJLUi)uwD29*$BTicKfsz8(F%_NB{pSAV`s6tdr{;&>L===rBb*5*gt_f0003&02M-P0BZ0C<8GhgNB{r; diff --git a/samples/h264SampleFrames/frame-0154.h264 b/samples/h264SampleFrames/frame-0154.h264 index 9298a8c69a90b06ae2179836bc9febd6d9529133..e13114f06508362e8ec63cae4e475738d6f0fffc 100644 GIT binary patch literal 1247 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 K=ipC209p`DfeUp2 diff --git a/samples/h264SampleFrames/frame-0155.h264 b/samples/h264SampleFrames/frame-0155.h264 index 39106d59a5b6156eb04f5380a674812915477586..44d7405b0d33c4c7ffc5f7e34c62831b93072b67 100644 GIT binary patch literal 1084 zcmZQzU|{4l01}R~8l?8Hs%s?F#OA2S+;n0&dPntr%N{xDW+p#>jvMj~>*A$26n+1H z%F%qlIJ^GT&kqbN3>C~1j81mSSMS@}x@dtde3wZ%U;oc>eQfQDE$B4CkBpbEG#-1)#-dQh2ys*7%4DIG0xb%{XiMt-v>OJ z+_L|~PhPyRVB0liKgoo=d3w@^+@&%b8u_KQ1)Lu|z~sMUhtM1e)}HV@1qO$$ zR-bvFH_9>QDR)UN5{>U}UMjNomGOE*hOz?!4>o-)_-K59=L3Ug2|Ke-nYKyVot_K1 zQ(6nQH8sRD3rMroFuEUZKD%VrzxSXuD%Y4nw8+kBf?Egt{) zcv4^ZZa*JG82j4*jet!SKQ(grI=3(|F&|)1aJ<~WpuoT<`M}RiqrqzR!0u%7P8n`sJ4!)-p(VH#eo)d}=@Hu#frf9rq^feU3ZyzBcY-U|aK&#n{;V z7JswkvF3~3Hy%v%UvDJn^+I{()1}Ai89Arrb>G=^=S}Z=aIj20!hEdgoc2+kwm1gk zRa02(9$LtTNk>d(u&&`+q4dN4F+&D_v%%i|hnqvSF6YlSZ*Kly?GVXughy4a%i?)E zgYyPZQfJ6hTfnxSp#q%l87w!knd zbdDYo{k|jPGRXgNB`ss%b$sfm#KM?`O0 pU*Tg|YoExF(ECVo4u|m(js5>g1pnf%pAc2v-~Yhh#)mP(0RWMc_u~Kn literal 1007 zcmV?<7}cW}qLY@1*;O?!un_{l z;1Gra;~)cr0}X42Qog2Uq>hr;fB-;B2n7-w>tyUB7L6z+d_faog9>^E4MF?nh9ZG2 z5g|#UO9v%r^ zNYQ=3avQ*q7Wz$uAVDzf6Bbsd1f&kT=XC!6a16qI3OBs3aW4P{fGxl&;8{ZwB6JcH zwd ztf>+e%#*#_kOja1Kn3z)8UyaRL)i5I3XYfnEFp9$h}XT+(yRak0{}eS7CY?#06=I3 zGQzSy9|lMd-Msq&5b}h89~I<;0HF1Y|MvjE0oV|2#&uni57#kwdkRpxCkjCwk~@MN z15gAC5{(rourJV_Ouq08QUEYwd2GIsY8|^c3S58z-ar5l4k#MM$O9t8yubUvhA2}S zvV@dyhn8t7>7(!j-2eaqK>%(h&<3vncrX9}0YLyciL?Q$z!VAm{(c1LL=7e#0E_jd zumF5*RKw&WzgtT5OTjmAe!N+vq+oh8YX5)Vo(4Tg1|^d`A^o4!4K6I9gj$v&zw6tf zo6RwV3k&p^>5wa~Fbva3*UfA&Cp)pkN#G<}MhD3OtC#yS!9PD{HC0pp{`Fs}+YUGb zTV@ZQaB;O@0AD~0Z>NPrm-McOg)lo-nmf1u|Nr=9N&D>I?{5daBNyoXXfZc;oy4LF ziiELPO-5JX@DYn*VDKXt#K0#&0003&02M-Q07ChEA_je#vG@jx!3vUr3-zbEHTz&k z*d1w={_px-iYc-Tf!ok8oz5O+{yZ@ca?|*2i#|}W;NlgwZxMezZxh26bO9Scp~GF8 zgiHWRcOyjyG4;*SRV0*>|A6@grE;I3NB`#s03XO2qeKY=*@egyOI1p#(gsQmx{ diff --git a/samples/h264SampleFrames/frame-0156.h264 b/samples/h264SampleFrames/frame-0156.h264 index 31d693fa6d837400778420eff00099f9d21a5dc6..7d2bfeb354e5a0d6d640fa287f085eb81b2e0e23 100644 GIT binary patch literal 1358 zcmV-U1+n@70003AFaQ7nL7Jc%yaj|H#RWJ3B+MqxOdTW6VX~Wc7?B}67MhoObRt(v%1I@ z1`xHc$Ofn*)N}%mHv*wz>KkEnO!YVa*kizzoijsj8$cr2$7K+WZRAJ+1wsH5<2SfY z(IY^9Mj!-C<%O~Yv!NA2I|U)xhH~$|ICp>m2nq&0j|VO(ae)BS+289xx^@qABB|a% zz#(B?|IE+bVZ_j|0Kig4IH^{n>3mczEJ#FW0B*H;%^dKk2QH1n=bHlI7>v@C%XP>CecP6xmP9mpj<6_-XJU{0sJ0jLuT zS7-`i@?cK*IRFp<$J}5`V1gJI19IiSgak{ZTXgZg9|Ea>0fYqR0|*4@4B#t-eTto|{eT(3;v`>XVpvKv7Jvud(Jai7v)}<) zo6uQbP5{cHg9cU(t)7nv*00D?8!c_6FZEp@N0?gCb_|#Q+E_TSz(Q3mRNuW8L@v|L|eK(MJ^*J&9gX-hy1JLjC|} zfB=95x&c5*uf>7}@=ThF95)RGk6*jfMBM{HIKyy4fFOdX(@0oEHazo^Fj7+B^9n0x zm!e@!e{s8AHkJbfiyF6o#xas-5SARo3zEm8@BR-!A>r|lI>q@+Z}#v5GLRYNgw~7L zMx+db4@n@1*|5eUfB^sd-T^QGA+_L9rk;}{DuI`YfF}>y94K3y$(ua>@wfm84*&px zCD;H60|5y4fZzo*z!1QrkRW)L4#*VHFj&6X6t~as0%3m&8w*7q01Wg*VXZ?mx_k_0 zo=4Rjw!%_)W(H%Hcpv}1|1lKGG5->8002M*-T|guRKt78od5vQFbxS@3zWE*-d!*Y zYs&)9fB--y3em%&RCN0J^v_}Ua)5I4MhOBw%{m#t1V-%2%%A=M$cm8xkC9DEbo$Mn zj9)xw&jtuXd#dzzL;u6>z_3D5ul0YLy2 zLTZ4^@VFR8ZwB**;PYrGTAMg{bNT|v`5ro-s_z0~az>T0%Zu@iJ zzc0O(HY|Ys6l4+zB3ul0(_)KWGMt&Fd={28gJ=UxB$T3+&+kqHVRCk-Ly8bkF2~mr z{4yXSAi@eez>({HU`_e0rWnzlpG?}09ncbr8poJxN4M?xszoA6K}`9DU$ssnpnT3Z QX~mhDw)_kU$A@4GLd>LBi~s-t literal 1585 zcmb`G`#;lr9LGQ3ZMNA)8)5F`R!NPdEgcOVhfZ^L2y-d7aywSzQ0|+1?n^4=RFrb* zvXi7Kmzjue>L9w=R3drUQ0}&){)6*)oc9l}$NTl$>+yQLo&W$yk+drIWdT}E3LIA| zpu$k(nP)pc6n$5T7!tt9s8WUacFt{xEpD#U3kIOTM*?ssfJ(AT_nZnQ{~>s%jIRNy}FX-6Wn zVFl@SbauUIX?W{hsVXo)yWes)i%G2Bbbp=<$b*O=^)=|l`KX#J&51F)0Zidht`>(T zPHnR5#lbhOH?g=}r#-UTNT%X2!`tIVs7<|Gjs%(wq797(g{PM53fVh8V(F|Czil@O zOK9@ndn|V0uUJRtJBDly3=qc%Sv|AKR-23A*N9d`r|W4MQRWf=sJrnM@X~qDP^U{f zvc;8(_oxiCvvE!kjMv@YDB<7%UKtgVR<@7r+*r&Xbd-5j(YD2btz65L8LFWw`9)uv z4-n8XyhB$vMw{!U%i|lMotbDPviyQo79?XjrD@&FWhEi$YR}BYf1_;T_PV{3Pk=yJ z@YX@K4XM&s=O^j}7(uyrWcjU={gY$w0N{|Ys#^%sK5ZFdAmi#LpaX}vwvrlq>zf6N zJ$qVLdI8=l@u{}y;%y>ZZk_kBU85@pAOHmLjwY(9#^D{58)^Wx>PdLdBV|TQfs<^u zd|tZ*BT{dgW50eIUfR*BC6n0r_R3iR`ZEqcmp5sGgQ;n5yU)*rLiYa1%$s*z7i zBPN?Vqk3qk&DhTl^~i@-cM|BSo5{~!Zb8B=ZGLJces$!4)KHH}pl(KCy)s&Db0Zm%dL8IH8)CvXp?AF!LM#=$AIWdeLKo@b+{ z;#}#Z8JXfqua^(6C7gWm67@>I3==^R;PjCjk>Ztob-)x(QLS$_mzK45QpK{;~$0 zlEC zEY9!wQl&a$fPd87FgVeKg|K{}NiR%`oatFf<;ULCsb9A@Tec#``3P+{mhot6G6WKo zm48PY95x+9@<7}V&H*K-0lFqo&smnGAjS^jf`po^MnLRm#60n807u`2BorGnqt*1M zq-Q#GTyTC-q`dc#LIfg;A)C=aCFyEuQ4uOfW|jOHPzJ9vcVm|qK3e3_KmL!~{&JbW z3Pb04Dl0qNg<;v}uy6;5wltnNds6FN)06{$EMh@Y%}7F-GP3eb7gPdV#Si0Bz2e_5-0OZp+U=I9`bGRF*WoicNxEGJ(_z}%7Um;R zxJS#-YcW+DvqILdr&HGrj1gLXeGp`}bfx@6inAV8d9CD$$#6{Y^*5iW_I$%V9!f(I zU1tJ|&zN5Y diff --git a/samples/h264SampleFrames/frame-0157.h264 b/samples/h264SampleFrames/frame-0157.h264 index 8fb1b3d62efde2410e22553ec371e4be933e3fcd..d9cdda43bd876e0937c8db9bc349c9f135024099 100644 GIT binary patch delta 1435 zcmV;M1!Vfn4vi9j000012`~Tv0YRF;8oUJ`2nMj`H@FA{P3M2}Gx!CHkUWDTctebc zWuO4m2{#DyfzSjrfT6}o$bKC|FXIioKt_XrZvcY{xk73Ra0dH^rNz7ugPgwvVHhI` z0-#tkzySaZ3__ONEE<@QnzHLU*Wrm3bO&4XAeVaJ0283(-SZkp4^bce>;?b=0+KHhR0rp5VI4w4 z&bJ4g0R-BxaLuK_04V?r0sw;KgXTlk?|ujE;NzNBDVSqV06n2V0Rc-vh^Js6agva7 zym}C=qXd_K4{JdHM}iB`CWN6I1ONQHGBeLL;5EWA@e9|1GtmD%=pD}eqg)6_vEwvj zL(NfV7))v9;9dX(v>3PtxLuSVjH({#61V7We>))q2l!Wsy(AX3pn=mtf;JzF)jR~- zIQZ%CvDzRdSSEh;_vjck#Y!yY5aF}}gh}KY_#)_kUNXl7ega<94Q&chuK{IfH+TY3tWpW3tabz5rP!O2y@I7NymTyKtF&I1r1g(%p4^Y zE?@o(qM0qz|LgYlZMGOM02i3dVA^p<6j8f>KnNoML6&fRQwj(Wp8ivC?eUNVfoTB) z$NJF4`_Jscp&Wn!fk*%d8`S^+fXE8RvjMY6HoSTe5TgJA0B`_qVQ>tJ+y;C=(4_z< zEOlzpkG8T=L;nnw+6V%GH{&wVf=OV!WM3Zzmj)}rM}T|g#Hfl7xa-3a!FpFZy3vt; zfw6ei-ni(; zy+3j};e!cy04I#bNw#`pjt`87zfj0@;thxxhyEvk17^vgv4f`&AyB|v!KfS*OwELF zb%Kg`96zliOiz@K?4gI7${$yRDFFz7h)IY*qjhW(cfpSFBfPNRcL7zW$Z~|ywIGB5 z7H?Ew6iHP_jSm|WU)};3;Z0&*AfriI-lvD-{>!L=1O>2;!bXHmnhb;pdS(nSN)utP zJOK{C0003&0B$C*2Co2kFaQ7nK>#_4tO2XQ843LUegxb2umTT%{J$d-ix?27-=RDAP4uvj6BMFeNi+dcR0q9G2bN( z-~YqJTI;~PS-=bjPyPHJ%^n3w>%<^;gV5--^(xU2Q^ZES#e?Onk=kxiK zJ_JX9{1CAM0LpU1Da&W}e+e>uoou}N$*Z3KwV%P*fkY5IDBKG}I2~>K1b{?d*W+zU zJlinzPo<@{U`&um0XWYe(L@i9;3zi)EU8FTsQ_vbJRk@f17_`)rIBCzcnNm2A6~fz p@3Qva|L^%Xq97z9<}I0j>^l1Y96G)pe?OnIlmxc|lVAjE0pJu+bvOV3 delta 968 zcmV;(12_DQ63h;N000012`~Tv0YRI98oULECxog1IG+MZf)E6YmgF9QAOKEKDQ|=b zbzwO;-N-eTBr%2^1%$M7KppaDP_00;sKj0%Bx zAqcE9!iMm{+5u-#UARyk3UFTp0w-^32^A~ghP(7^peNf952b>)%b?w5gzyZ z3}fEU2y@S#2z2s05Bnq4gG}}aY)x&M%~xs z00ar8fB>UnBzK+wfa1v-B-p!hVR|;M#_4xB;uc843LUegxFQv$!Jh@mUCdN*Q10 z;lRX*yq3Y2{+mzL*>naP8{h~@H=rY?wB}70r->d>U{VyCbGH9~hIJaLox}?CJhp?A zfdnLzkOT{V`F~g?`pQ5yeO?UaHCg#mB!4fHrG=Qw)E1D<4T!vBmH+w2xSzTx1QbxQ)1ojP^%6c~fD z{B-vZv+)HR1Cw9{3IXstQmJqN diff --git a/samples/h264SampleFrames/frame-0158.h264 b/samples/h264SampleFrames/frame-0158.h264 index 620671743c644bc798405fca006f6efd22e5238a..b343beb679ace5dc565ec84145581ddfed60e37e 100644 GIT binary patch literal 1140 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 UQ(3zNF9T{?MhR~d4Tb=VAlb6ES^xk5 literal 939 zcmV;c162F~0003AFaQ7nL7U(jyakbef_?-sK`sCY1OtW(=8{DaL`fn0!CmhL0R{t! zC@Cpo8HwqlvM3z506bwG1dEi(aoSY(fI-U`Np6X;-4hHJxAMbb;4^{&kN`kR_^2ci zzTtRoS^|K8G(@(jVsl92DFLywV{u!$(Kk*2fF0Nx(jT-AXkByvfD%1mi4!J3kadSI zlOm^p03aq5P5>HV$pd94tw6LRkR2=lAO<0$4;Cbv?JImSF91*g1Oo$Be7F}D(D?T5 zl05{B1qGDRO|lQ7FWv|MF~Fer$nrc)RD|Rf=>P07&3ZYxS{+NBvvmH^&~9li&4I`|H2} zlmY+=q!xGt)1w)15j`q=A@Cgm#z+l*>b17-|NdfdnrO-_#V6pD00aXC+4BL=j^<5z z1i<_PznGQ86C)^Bg0e`iFL^M(6Yc3ogU*NG0t5&Z>&UFB5*5soz1xrlzyLr6@?jPO za=Am)^#BTvm;fvxbSa3}z0%UG00aVnEZiCq_W%GOGy<7nkjO?p4G=)S zypVtt9%(h_y(^4crX9}0YLyciM|1=z#EJJ00BV&6+&--YVau^&*$Jyf{-nkApjT4bqU2m z|6Bn#>v8-nbKZ0oA^qn=iGZq>2Lwj_OxdXjQC34Izl}-eNu-DouD}+*frkGe7w@P!ZW=0^dQ2Fk3nCa12qo5@D0Kf2HtJ1wJN(iGtn- z`Hu$g!I&dbAw%2mhd@9~q0Aij&)@cAh`FiTb+oM*fZ N3z34o^TMHkBFG#QjmZE2 diff --git a/samples/h264SampleFrames/frame-0161.h264 b/samples/h264SampleFrames/frame-0161.h264 index 9a7c57d7dd383f34be6377b6befb357d0683e3f9..77ef38cbb2ced7335be682f095d91fc46866744c 100644 GIT binary patch literal 1431 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 diff --git a/samples/h264SampleFrames/frame-0162.h264 b/samples/h264SampleFrames/frame-0162.h264 index 66b77cc41a6977ff7a75a5ef2f01c779fac86403..14fe305f2cf8ca8d39a075b1c26cf4a0ba835aad 100644 GIT binary patch literal 864 zcmV-m1E2f=0003AFaQ7nL7QM2yakisY0K~@gka1c0-#_pHNXJ?3=C41+AJEFkeagl zI@jTeRqg`|R(86KmsdyvU<23`Ak9jp&2GE@xBwxT#}$0y5VBh5H-LZ!<3awtP#bTt z<$hcM0(2a^v@x#X>L>rbfWQDiT1Dzhfc)+Yp{PiEvkg506Yx>+UfxLn0c6+!fWSd? z2?a`@@BzNi;l&e*B42HQazcOrfDjO*7VGu`d4CcFeT@}>1;XVa3Q;@tyr3w`2oawCQ)h{Q z2mlPy0tbY8gF_M!;K%?33P1or)~Emk20%_e@N#_4wgIca8;k$| z0YLy2LT!L*@DykB@FySOqzfhsKm%xuHMmYnc>oXemImP%PpYxW#y22jun5>dgf0aU~z(x5{Adtzqy z>>K_6|I_0%zyLrBXaKA0Q9uAdTL1!ylSr@$T@MN60+*_XTATQDWmcM zhY+>kg)gGUj%naRI=@yke{b--uAcsHcEy+T*4LaB;t9Q=li)Egj3)pP&HZ0?2a2aO qHoyN7Ixk26_W;9+y%0D01A+x4zO9js)Ca%g?(o|hfb-w~0PaB2sCeN3 literal 960 zcmV;x13&x#0003AFaQ7nL7E^MyakUG6fih&PT&m&2=w&hp!d*x2_`%OK_X^@T+jpn z1ON(9D4xSjIz!46P@KLDMFxX|!B{Q|3@`vTn>0j>%!vE~2RJ!f*HN)|u#;{00TzKt zuW(@_=|KNXa5~@sAfO^r05S+qoGQ})ANzm+!~n7*AKa`|agdiqoYC-lD1#tzfg+dp zHY8e%;zIXZ?~nk1$JB`eZd#Sn8lF-9@FB6tz}b)j;54v~f+(3Z0A&CJM{@^>xQv?h zzw}@L2rz&Egg^iYMSukpG0U-pn4znB4z|IBi5jx^yb0V^20j;t1#=LrLj1o1LK}h; z5&#v002$j)0kVivrm+A2@qjk~3Kz7~sk0ze94XoO7{neWR2q16nJ#@3u!aBv01yBi z94bim{&c=D3xosMNEnC-jPM2lfWb;3xKRQanW3}1cK{E811Vng6%{?sV2cLEm;gWl z-7r8K!3bOLye&Y1LfEOsl!l2XTepN)866^270$CY`|+_HbfM+GZ-1rh@LR8 z0KT3>MKl+t)}DBWfB--^;)0PrJ_1`>-;F?0074E~!x~h{blwy|tx69A1YrZog03nF z(-%mDvjpD&1_Tg^RA?~4c){;WFrsww2m^x5_yKR@xcF=~fmnQ%;0O*Zk-|-lzeIXe zvFOpK!s3yDNU3D;;3HCLR94$T004p^p(5j?K^#^-`&jl1wY8xcGoONhIB)`P zfB*miK>%(hhz73!crX9}0YLyciJ}3kz#EJJ00BV&6+&o$YVZ_i^YAAh;G_#C9RLP; zAe?`kDNlNU0^#_`pM$Jo&He2SD?WO0To9Vw>Vd>qfo5^Okk6^whzKCG5CpAlCY}0$ zM;1_TU({&ze(+*?Yet{_;3Nc8WG<3Q)3yR9I(Mx$7!ywj@g*D-ls5nzUA$xlHGK9m zw$8qg#D4FK!3dwP->?1O3bGCW2^a;hy-kDw1PYJ<1Ov;Yxc`FV$h6F1uNZCs3i7||_!k*b!$Ow5n37e}BJ+0PaAD{-1gP diff --git a/samples/h264SampleFrames/frame-0163.h264 b/samples/h264SampleFrames/frame-0163.h264 index 0cb2db2bb88d1cd2308621c54bc2989924a5884b..74e3527351f7eea2ef6efeaffe22c640d2f0871d 100644 GIT binary patch literal 1411 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 diff --git a/samples/h264SampleFrames/frame-0164.h264 b/samples/h264SampleFrames/frame-0164.h264 index d890729a37b49d1a24361b35cdceb394a21f1dfd..9ab4db48ab3f678c68a0ad3582a61bb3ae279cc9 100644 GIT binary patch literal 1398 zcmV-+1&R6q0003AFaQ7nL7Si&yaj>3{v0SPfD2+7JbT1EyX+pXaZ}BY{5)7gAOHjn z002WA00btPcmSk400IPS<~#rdDZBsz2j{EbcC!51`@A4#_rL*G1VAtj+WlDQS7woi zfC3=OVVJW^ONAi1sCdN;I1SIEIfx$ww9r1741jPSwYssuuPq}CIe-9k00aU606-KD zCU8J2z%zw3zO!&H43RzH4i-GA)82ZX$7`yoN7DGHshMLg<;fO>hXAy@X?TwF|434^ zfCcH=6Xn0}X$?dk?j>HW#+lH4@IXhXC8QPAS;;cSzxNmcaC@|&SX>g3Hmv{vfCAhD znz#{a|86D_PtBuC6tX1V|L_w{|M21Pp8yDg+(j|;Pc%e9SM-FzC;(N805~D8TTd7O z0RcKx?=S|(1{_oU#RNp6M}`hdFhBqx0-KD`bC^HgBYFT3QsS*{;-BFL*%Op}q`Ip_ zP-DQuDqatKYS?m57{ar!h=VitW-5;3R8W2Z_;4Y7LMQ48Gr|wXyEuo)4_RRixOB`D zhfncv{s03OoNDDNP6=PcwjVeFUFax=+dce+pN`~VU&5gAT(Ac$Jg zFNy?cE(!stU_LW&0Jw~Xg>IyU|Gv@;CMKx2l#g03{iOiF^Eeny4i!Nke{nVdX}APP zqOfR1SK2Vbtvp$$nhJ8KKlf;uakeT5*1I440HDfXj#=iUfru))93TM@Fs^060)^;H z?$7st0BeH+C*f+PL%G)iT)qGS@EQ<+kH1LDq(mjK0T(*}<~@KY{=aBGM~@(0_VV%V z2jzeR%^E?qQY$)v_>f7l0svSW(o6!D&^Qwx1Okr$1P=s1$TV&cxk3irAus?00RR9% zKmY_jKmb9}G5|XX$`F?eQs@&|=GKQWR4fEO{g^laz>J&*4G@kwp-PkY-2H)o0DuBw zD*=w+|3DB#0CU8~cqy`6OZPA10&<2R374;fEr>07;{gbgNjMx^-*s_jm+&3p@I-Gp zx)c~+U~VA*ewndqUC!`-=1m{~U3Ikv83f-VR&g8(7xJWS{2@Bjn>N>~F;lw{NU%g`kGcp?|z=TjO} z7vp0neiVTbA%Nlw+LA6%vuf1#mf?U0n|mrzJ-nCykbVG% zU;qFCK>%(h=mxI`KR3-Em^SW&Tnm)HGbHQ?iRm4E48Q9lB6IdMX( zXAG>bKJ*0B!h5lOg@BjNns5pe2e9Ml5^9Q*+o zfd{yw30^wL1}j#*`4bKNzm!QfJTxC_?gRhWZ~*UQoC@#p(pjzp{rUU}rrUWEE&qGK z(sR0|CqXJ+|F+hFsDOSA@^%Es6Hg80`bbFDP=IJ2Vb0Z2ahN~Dia){OXJ$FypMFe2 z(r7<3;PpyXq4W3t6m@!&`|4@Aus^8EabZ!`jH_!fF3H`7<%u4^_XdN;qB9{E>X*tO zffXbq6aZ0%MyZ4NZElo`2cVdxbuLuQ!hiqp0q_s8CZppY|1=lIjf;>!?4^BiL?nOU z3C8;W@c384D!q4~{{MgC0tOHVL&&HGoXhDm7D+FPyKis;g|RX E?ioa2?*IS* literal 1647 zcmV-#29Wsx0003AFaQ7nL7HG1yakDUfnZ2!0)S5#761nT1%Ls76i_0HK11}<+e?sA za1a6yZ2$?`CMN=;m@tVjE)Zc=N}z>c0^S>FtM<6T1psoVT>$84?9S1Da58`ZfFM!; zHyu<8i-gfvB0GD)06}H;Z~zd2009Ua01oeXWB>;#5&&bsdYo?tL_o$_%CG-%5^4m~e|DRAm z1$)~}Km|YqW)=m1$cvu@U;{XE2rMmIcpw+QlP~egqhy1QG z5mhOm+s?P=3ymHA{2ef)JSe##@^9Un6o3ba$TmWmN++Q!@C?9h7n&_JCdb=dZA<_J z0twWCG_fwEO8?$?3YwX8>0%QSz z0Dw@d(3l@16cepCl3F+bFaQt-2#K&T^!O#f(E7Z3Uj%F_90H&aLjXY-KnDN;099}R zcYrx?ysiHo7puK?HB_pBh97{q2L=2gjl?;i8b5Z8CJ#$IAY#G@PRf9Kqi(X zSWM6}SS)w|FaS?MKtLZK;rfC zUpnr*fQAje7ttYvymR{$)sa}pg#Zv0096n1|Tl`h>y+*Q#x~$9smKH0ftxJ zL<+D&Ttf`Hi}b++B2r8s(oZC|z6=17kT*<=HkrUnqH@=pM1)g=zR3dDK6KAKVgQ8# z=K_}K(az@q$tuPh5KsUR2IN2kpc+9I&)<^xFAxMUz$6L>jx*+9AZL))1nCyH(nNS* z03Z$=NSjjhv)WGNo$CJZ&H$h+`aKaNWFp^|*^rUu00IF+gjMPa)q?a4PKsgR01yFz z-f3f}YCF50wl@6O>sc%iV>oF6QCfwRV+j@m_y`PefPSRw!q{0*OoA03lmke@KGXp; z8oKd-3@irF0it=V(=bMoq+XB!D?k81Iivs^7}0+%1`Z78$SNS`W~JuJzwN*P2mk>D z6l8qnrEpYE2jXx(+zciupdmc}!2+@es{ZkS0DzzXiVO#xANGYS5Qe(p7y&mx0003& z0B$Cj2Co2kFaQ7nK>#_4rU9$K8;k$|0YLy2LTP|%@Cq6J4?vP((Wl4&yi!uDGOl;- zZpjJS6z_vDdIXVXG#eZ=jU}g#z)-?}A@U_GMkc420g1cS|9q0Fnpfj3SKig-6RF4( znB#avCF?v0P3vB40%_xY4huk!cpqtjl>t~M%i=2U%>Vsh6i=C=6+usZWX1>osjtWS z?-2=Xak-(v+7_{QYwx5$l#WXy5D)R3eN;>?9KV!FHasi~w7aIC{_=noNi3-q-{0Q_ zM3TBmWk3HffU<1a_>mg_{|A7abpKMX2&sGi-BktbFkONZYnaK9CY~4eFf0yDGHwM2 zK`S~|LhBxXx$HEKf7sfu|^{g`~r6%R|&)&%#4}ycYpu= t_<_@emxgik{!>5)CPV5JAn8Aw>tm; diff --git a/samples/h264SampleFrames/frame-0165.h264 b/samples/h264SampleFrames/frame-0165.h264 index d22c0400628f0b1dba96249cf62adc15a50e6953..bf275f731ceb50186afa60f84eed791453d24dee 100644 GIT binary patch literal 1175 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 diff --git a/samples/h264SampleFrames/frame-0167.h264 b/samples/h264SampleFrames/frame-0167.h264 index c71d49d1b1189e310df37581380b0ef83df7b38b..d179cfd3f10470b2ff9d6343dfd6be0e615a6663 100644 GIT binary patch literal 1098 zcmV-Q1hxAB0003AFaQ7nL7D&>yak6a?leJ9f#gZC*OrwJuOq*XUxToW8G@ix3-l#J;)o>Epg@sWpy3Hn%`)n_;0c8S%G-*W zz@x!1lm?&wbA%Z%fxQTzpPAeJ%m$ze^abG=*f0aB;+Jq4$QrDWa7f_uGb2Y|xDqYK z00W8sRRTdhG_UV?0U#Re;y@@cZ-K8-c@sm}se3AQs<+DL|Ngu%0hCee2YaUy()`Ti z{_+ikBqS5RnlW%&At&CfE2RVuEQC-LL4*Lmi~s@vfaK)A$g2+mok8D-B)a$R1Tdot z0xTlexrV3vpdfK?iT(f#(gFvBdV@m}5aJ*JAW{GV2Khh$ATk1R_uA-S03Z?o4a_b9 zkz1eWHgkX+5<0bP13#@~qL5%tcrHRS0h7S?@EFo1Sh!KA{@%gn00IM5A|M7IL$m&0 z38BE%L1+-i`6PrmMWsSdP^Evoj(7q9H+Au&5na&3^pOxufFXb=S_Q{No(3Gh64>Gz zS!hBiU|+4`F@VQpuf*)K85OslgI?ei1_Mp!UMy1ff%1xA9jWArV&z5O_ktkB5tO5x zLpzn8AHTBdURuK;*30003&06B@E0jt0pi~s-u zK>!s(XaH*P45|G7egxQ)psa z*OVF=%hcZtE4Y2e15ov|-DItQcxmO0jv{C4%5YLiCAeyS{;vbuB4t^_{df~g_<+9% zikGb|ZV12$0e`3(7WN#L;xyNZ6T1KW1izgJb@RsRrxF-lY48wlu;JT*q7X0GJ?$FZUT#rB8$X QdmCM|V|7=0-VMNXz-9F0UjP6A literal 974 zcmV;<12Oyn0003AFaQ7nL7KoCyakisNeP4p4_fhQz#(hpJpe!fD}bi9I74o8&!qgm z3`GWmgTYuX3=ALuHd&e?jC~P!1O+%0t>>&6A%q=w{lEe(2QEFqg%6-3YH$B=K2QJ< zP!TBr84u5!snYu&`+xw<00IEvBOlIU{xF`*nlB~AoI;2Q^RD)^XQ#~2mlBHKmbs1xg*hJ));n6p#p7uFeP9$(3>I(TbYau=tNH#SO9-dA)=fL(_1dQ zL%;wa9C1NkK0X3FTHlR8QUF2@Sce)^$#mQl`AU=?1{sbXOcixdPL#GnC734o0AOPt z8jS^+F&I4QW)x1IAb=<|&j1$wJP(G$XcY&^UI2hmWR4PSZOS1EM$azIeisyq0!2$F zj^P@EN}{HZAP@iuAUs&eyMUfE7uDARfipm1fNgDmjG52DNE|o;H$VUY0YLz6Ca?yt z0C+F}00BV&If<+RtH2wK0003&02M-O0BZ0Isr>$a1n3k&NTP7kEMVN9*=8JI3pS8H z#STf-(0W*anb6>dA#1P=3(EGS%>{n|NcHW5&cooyJ^6xq@=?JPXSK82@C_+b|A|ru z)ePR-_rL$=X$e+ds&bm{4uFmhO&=ZrFaSU%BmiB>l-UCW^7p(LBa%pPt!@794U^4q z8#abwRPu!vc+{ zIm}QKN-C?O$Q86BAtWKOK1R9-%%AK4ce=Xk!GSbHC$&-GOC=u&JtoJV*>TvVxPXG! zxbZ1#zv$r`eAyZQzxUP^ECYZw=mgM*ukkUS0Ad#r52Ecr1H`MgxAYM&|5!1SJr5#t w8qC=J*jNBK03`twtfdCEuo(gm+`sG%#g%~RfR447egFUf diff --git a/samples/h264SampleFrames/frame-0168.h264 b/samples/h264SampleFrames/frame-0168.h264 index 5479a1e7f619be201521236c2f4d85a6484fa5f6..8f9fd03b1a87248431dcc77363230996f293f3ec 100644 GIT binary patch literal 1240 zcmV;}1Sk6d0003AFaQ7nL7E^Myah)nV;pm!$;}!D8VUj(9)>Ue5djb@zyZe_0f&q4 z4#&?AOUyU`D<(Y`p(>R(05GQ_iw{nv4Pkzgc!%as90GvPPhhz>CJfZ#xKY)~Y+E$G z3y2|sB?FL7G6W*0F(OW#;{m{@lm-)D!c5UGAk%^{1bS$|JWQ~gWg--Z-~cy>02uHW zicMdjEepdHM3`H~H>HcL`^;(p0RUk1sQ_4xpDO`_&=9x%$Z^C6Vv)5#cm`5M&I~;O zg7`Vx`FVinAgHPX*8RXhLcly(Lc3{gX{h)v4qyBLrT_u~;Q+1qbb@5T3?c-2ItWG^ zWeUMPAlnFR1TLpZdYvL34g`dDU;rQv#Q*{agbL030zL2CtlzoFgiiA>hj4ET4VA$1hm1G5`d`4u2m- z!NKngOQVTk4R|~|arDqeXP{gJAeaz_d;owMdM+*4-N}FgzX9yn!SD`O%SP!DuTfVAI`wh$f{7e7@0E3Tw zE3+rukp7Dd7;pqT0003&0B$CT2Co2kFaQ7nK>#_4q5-SG8;k$|0YLy2LTG?$@DC~d zfyM+7Aebd^;^@E{u{6jI!F1b8@Fl>O1dxyxLW0Bqt+Yh|Q;;mD7ep(?wtsM9k>CJm zU^j3c%nnmAhpNBpGZs*orLPA=oa^EHPwE*~LrftrwqU=MGC2xY@6Q5h;e5Ug;!Hqh zkVG^A|4JWV`hwZ0A3cZMw}K2?6laVpB$RFr0s-USJaulQ@`f=`?ZSk23zC z|FN&|eO_gRf-dtbb&t?s8p0vPfBCH`lIAxh5aFJ200ah6rk+4fFO)9D+=KgfU&4`U zjlhBgd*$JgC74)_@8h5|6L$^jAs~zRiS3JMP@!c38NRvy@Au)k5)q#E1@W}51QMQm z4}ww-?_2O3#pM$R^~F6e>>x(W5i}8H5VA!S|6c$Yp41vU?cigCP7Ty4OcDuam*J4} zV|}Lst(qtvp3e>h^86Y-P=KF+nV6S5b~`h)JEi~`Z5(SoM12eeu7zvoX Cz5@XO literal 1183 zcmV;Q1Yr9B0003AFaQ7nL7LziyakiQfp}0#00;;S7a5548ia;Ed|Pq^UH~vC3m+w> zAKBZYN?i>dfCXAGN@3|uLzXN6ajK944XVQM5C8-KEB$r=3IWwR>P7~EYy=5>;7|#J z2xP#3Z-@i{1O#Xw_BupMi(*gx?nVF#TY^yn^#!OcB-JAkgg4&dYkQm0C9-?Se~(~j^*&GJ@5bm z0RS)-G1o=U-UmFa&*G!F-H2?+*5FF~rbiUwUY(dWu00;p92M?>WL=Rl)8)l#Y+yW1P3IhX@ zvsSASVBn#Keg-H*pmiOsH9cHfEvi$&;Ku?;jkR`jbj8I+uYmy*rPfZq1nycQjAV?z zpdjMGNT>iNf>Zcr)n8@c3BkaQf5awoe;26>=?M1-+~O9|C|Q=ku*;MoC;qSZHYGxk zQk%#vTp&jP5b+5<8o*(7VvS$?-PW_u!2w1*L~vJ%gzW@&+y-?Cd=iNdgu##_5E&Wp z0{{U4@+booH0)0d4azSgkR@?}$Q+FoM6cL0ulv*j1`#O`C|G%S2@9Wj90RDZ5rv;6 z2v5KTFG&E(*cg0{!Uyvx}kUfB+yG4@Q7-aa9coe{qag|HJ`@0099-v><9E zZ5mQTGXjt8002NA@Bx4d0m2%$H%>2ndVg^Q0fi(6of9G=8xjFUpan1jZh!y)0YLz6 zCb$N#0C+F}00BV&If7VO zFTj@qSQ0`&Sqcjf03v_ljLYy7IDko9a(pv=7#!on+~C4g$KV5?fbU!d^k5HBl;YLb z59>1*1@Nb@0;$e*&>4laqpiUA*qyM&iP?cZw1+63q^I8SCY}|`;I1TbDFi}*5WiU< zYDe)h*X`I3N3d>D=SCJ-I00dtM$E&TkW>C*j*iN=4lMS&JJ!Gg5y(%@CKV2oM;;RJ zO}o3T|NZ~ycImxRaX8J|8wgK2?g7#@b_haAfA^yL9By#3p`4;gK}N3fU;rWjVjyaK z0XV);yBBf~$(hM#e}Y63Qc^7dK&Soh1tpO%;FQnZyk$CRuDnxNnEIdF4(0=kXi%Vm za^wi<+~wVV4xhYDj1$-W0K(XCNsCx?%=g$xfJLSS5p?ySX@&O;plYTa>3?AYHeiXM zZ1H9`Byi*Y_yB#*Wdp45Bm4Xa&A@-)0OrBk5d~;UeGf#&r++CxweszvzptQR@F$nx x(dvW*d;!SJN{2GAyruL!elQA5$ssNMv;Cbx((9IY`}hC0%6UP6uRxpNCSa^T?fU=# diff --git a/samples/h264SampleFrames/frame-0169.h264 b/samples/h264SampleFrames/frame-0169.h264 index 93d025d54a1ad5e86fbb52e2087d962d6e6bfb32..2b032ec62c02999b5a2d5e7c5a1306b3fdfd1231 100644 GIT binary patch literal 1175 zcmV;I1ZevJ0003AFaQ7nL7G4syaj>3{+uWh-~z%R1pttjsJ;SWBvTcSSD*_4oDF~q z4Al`ckqp*sJ)zBy{z4g+)O&SD3_Ei?~dPy&;B;2gL6 z6i3UuHD2AfxeNwT3Asr2Sxk}d{{~vca4p(Ut}Y4jHZA}G00qD~X@k38`M8WA-&;nODQ}Z||G-T= zH=EkuYhnXH0FwY=gjXL{IjuZ!{|s@9MOiBxNz*1j{mB3r0O`oL6bxYkCjb4Y02m zBZKF;#u;RS#J}nyL?mdEzrQ%PZ2$hjINo>w2niI7I1D^AqTLW#1`pr>gma8jmU-(a zVoR=+z7hj63xc2|2n`GwuwVgXr!!brYbE{g6F@L5&IS|r3i%&@aXbLia2X|p;QDC`}=5PwX7yDN}vl{ICFJkkb{bnOWRFQVF&o zKnnwUO@LC`7!w{Q#^qx*n+*ppn5YpD;CAr>NH3{yZBO6;LQqu-oxfQoofbTQO`96` zTUCGm{8|730wymotpRPSKuiC_Oz<*=lj-tsWOEY_d>?>d#gY*F2He_3$voQK#w6_! zEWpF>zTdsP7y-m^F8ImI6bd00<4i z+6WGWYV3E<*%(hkOr>+crX9}0YLyciKGFmz#EJJ00BV&6+&qMYVZ#+{Qm-oF(|A7K-_U9Z^=SO zX@Hz~yuJmHQpBO8jty`LKy-2{FbJ)m1Pf`L3@ZeU&$^4cA`=m$Aq0rc%!Bal7VM_o3iMA&H#qp(Z1H?}YMEjyR8}kPO1;lppXQCon97n-E`ZT(CTJ_*H9WMg}2n p%k2&?_3a2JN2DAY+~XryPW+dM+5>OcusMw$2k1O%qqE)q0%BHA{-*!{ literal 1208 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 diff --git a/samples/h264SampleFrames/frame-0173.h264 b/samples/h264SampleFrames/frame-0173.h264 index 2af8a2f32477e99d98c73dc31365c26d9da72519..833f01757f962d9c0657349c182e53803ea51fe8 100644 GIT binary patch literal 1186 zcmV;T1YP?80003AFaQ7nL7KoCyakbe@Q4V3L5=_pIM@t4UwC#tczRx8zyO+-Wf_U8 zmAwGMoQfnpI+itM`cuMxB6y%U4CML>lX78_oKgiHT!zK7O}OfBAzC7TfWdjokO-Wn zNnpCdAN7eCKYl*MzQB+G5Cb^@fdUI^y#;5xi67tvhRz~=i_U7lvrqsC0|%v80#B$w z*Z>+F2R;9C4irIJq;YmTwR`@*GugJxJ^(>rv5Bsaa2UZW)nEIR0ALDcafk-i4-8-X zR(V)301yEHFu`#9kKa)Pw1_|~BbRRh3#k%bq)3N}VzyuaAP&U<0tbW&=5S&_=YbHQ zK$S3y87d@)jX(fG%lrlaQvAb~2pImpo6ncLF(!^BfHmMicH{A&jL$MuS%jUy6wDg<0Rs)&@Y>spCCnW<_;jZ_r6jV_%y1)PL0-yq*W#QzknG|r?mAGIe zfEOD&2^mU$y?H}dXaLu^yhlLjo)fMopkeR; z3_+@QTqrAgWe82$fBS#|m><I2T8DKb@fDix>5yKP# z$Wv_Ks3MLWhe!W-m@ojyn!xajPH9c^USWa}mT1yLD6Zszn}#EbLim?V+Z<2-+5iRz zGpu@&t4qg)I{*L!0tbH#$|-9P|Ihw$WJ$+5*_&{WEVL3KROmPs7ggk?V z5JssST~6&@0a#%Jxrf5I(Y4nb41YWug@@b%8?0VQ=2;_{D@(ut5DPFN0M0NvSLdkt z1jm54#sQ9i8FVX=Z70S>?b00BV&ZYHn>uK;*30003&06B@Q0jt0pi~s-uK>!s( zYXEBS1af~r0(t!bq%t7mgB$=n?z@qkQe<=g)&L=E9U~O%0zbR}>kLmwa!al7G z0gbL%f2jX`RR0qo#T3EI;Aakjq!73aElKv5D72q%QzTTZpF2aolco0;H^uc#O??Rv9UDmm$IkRwM6(KB-GGFDb$ykYqZuz4-}A1Z z(oYKOoJeB~=v3)Q3BBl4>i`ej0T#1#tCeM zee1yvea}{Z|2{XMKi+>~IbA2knG3Kw!H z4k;D1YiyU!1pt^ZhD-(|o6@XW`=QcDg2EKH;FaQt}3cK*%Af2sg*+yDT8 zKmkbt*Y!vgI8afsdA;UCD2u{a6kUFJll%YxfD(ro38yVn(6a#)5e0( z;&y!sqsX`500;sAk_`~!f@f`lXH16f6!>5i0096OQ6LC900IHOUQ;j$KfD3pC>&E{ zLQfko3vLNyljtCR0C*L8Ah6On(2KWVVxgb_;8B4tEQc#@4{MrR!~g^UC|z5hz?F=@ zT*Lq?1OI?17!-w=wN#4*js>ysGk}6Y|La+anu2i+GCj`>-~x{mV${az2?+{Z1`fba zFX#w3uu>`j385)`BWkXhcm&{}&Uep5w0H&%tW+nuMZ|$PcV$%l#k!MrAaC$fIfIx>-3?N8ZR>%pPaTpy>0w|MYg9+XP6h)V4 zfiqDX2&cF%pzr_!0H*;2E{dS3_Qm&uP_P5f{lG!Ma-0++Av{}9?1)2)ybNIpnMZ>k zB65Xq1&@3H0Ra$oI2SRtuM`s$iN}%1X!KxMdxFCGi3(S$C7FN>d@+Hj9j&w|d{K$8 zlXb%27@%)G9%(h;0CV%crX9}0YLyc ziMRo)z#EJJ00BV&6+&(RYVZVde?J0w{Q;yhAmf6Z03186^khOw6B6J401iJ@FzJYY zz%%WD1DXsS>qr>zu%ifK4xfuE8pxxS_BMAQ%DxWdQkP3V=4lVh-cg`{{(zvi-4rj{bO) z3c=(d0EY*6d%l%R-}llYs{Pp~&wYr34!oQCqEFxGr|wJh$LpL(Q^GreanURpx6n7@ z*MI&zz#0fd;kCd diff --git a/samples/h264SampleFrames/frame-0174.h264 b/samples/h264SampleFrames/frame-0174.h264 index 2484017e35e32fcf9dc4b8434b11f9b68f10c3c9..12e4f775e3db6a8996c58e995509b1991b55a5e5 100644 GIT binary patch literal 1528 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 diff --git a/samples/h264SampleFrames/frame-0175.h264 b/samples/h264SampleFrames/frame-0175.h264 index b18e5ed86c83c2dafa1dda2c34b87fad8f1f6ddf..5ba32d1b9300fde7e1816b496fa7303f821e961b 100644 GIT binary patch literal 1142 zcmV-+1d00q0003AFaQ7nL7M;?yakiQf-ymk0AP7v9hkrn01yKMkHDsy5FBf`g|KFQ|7y%Iz|NZYE0Euuw zLk0pGHh9Rt?l2h;0Sy4mW)0rK*gL=&QWiV@Gm~SXA#JQgoHqfw0Sl=TUZhBa2j|=B z1A-&am;g7x@AMRKr?Bck)3f}*fi`sG2YAx}0RWvm0RRde%0EcXIWPcC_Y1(bVDJ_a zvd%;ShRQYjjh+G)f@=s_Vr?aNP;>xYkuWfQ%No0w%F1GeWT>)F0GNT5ae@&hq=2Z= zQAnaBWyqtPi(3@lVgNf}0t!AO3P(%Nc$)wL07-NMfLOLL^ntyaBQYF^raOhS6awfN zfYdYK0_9*F0$F*>^f)HWibb&rg2djxb$8wX0Dvt49s;!0#Awjf30Q%ehYkP$fTTnL z$(7&rfdK{dliete)8EJe3_6zYnck;)4KKg|BNbUM@z6rg&JY*{5m*xxhZ*d&pw;Ri zjL0zz%MES;!d*I-DaPNCBhEr(#n9HOb&^%009EP01!OuzyJ^)0fRgV#$X{t6#s?1f&g$sU*xni+_k{t@nJEb z3^^}qW!PY2g`V&5eq?|Qu7e7E;{EZm9GMR15R@>I%p?E7_y7U`fQQKmKyb}|f0+aX z=N4q3usbhu@4?_H*8>a6eL}+|VEh51l%Wd(FVrATO_s13&;SGhD-|G78HwL$9|H)( zBRlbxm=GWO@rjNqc!HdfJxPu52yW4LBiVF}@U5>6fCxq)z!DeRxU&czg%(hzy_}XcrX9}0YLyciLe2yz#EJJ00BV&6+&zPYVZXVe?TN)fJuT-0e=az zi>gw_fws^tvd}4z?SZr+INSren&5)K76qgT1HdH((grW^`k}T?4hO5rB$TSDAm|LC z5<(mVJ$Xj||5w5Qsv(y>@XB5qC~+0N{%2O1tn*Bn>HwARkNxlyPYmo#j8I?%4uUuu zcu%@YfEYfPkN_$bn=s%2N(ZsT!y(l~iV9E=7cAM54yn(y4BK35NH+iKForllrCuPY zkql)!e^PUf%njrHc@u1?v&0&pk!m;-nMNFn)4_f*hE2>w6H;Sd8zq(m(Bcfbz= z!(7L?%$ I|APmC67lx*Q2+n{ literal 999 zcmV*< zp`hEWKZMIbP#_696{;AT&MLm(*z;pji+0oea0mmt0$BHHBN!7@-{2IEgL&|10DugB zg@|a8yZ`|J@xuW_Ig!>(+w1oHmCfrY{Xpa^3aSW12@@sNUFd^I580AQqm zCn+xK1%Ng15(-0OK#s){07$Ub$4cT+xAjfKTvOw#-}P4RU*G^r0st2%B;XfE=%Z1? zl2^h!01SW_HNj6=Ql7nk|I6T51TZ8RDvUGc05Blj5w~m09Fg z;M}?04gdlMzyKh5xnuwf156L#03Z+U3Flkl>fjo<00aQ!Bmf9;Yyc9!LAXuLi~nE_ z0TAyN!Ue~tYkuG`0IFaZd^5&3pK3U3EdRZVQS<>eN*~I{?Qbv!0A>ONXR#_4yaB7g8;k$|0YLy2LT>$tMl7Z<*q!`+RA-%G#{*>4C4H=3WN zQE&&|e~{hW_V^-qat1?pyTiX^Duci)H+1cO{}^7M3%2rC5cU0F3F9YV0N(%tSQPKd zqrxzc4g2tf1?bgxE;jzY09XS+mrH#hsF%Ob?6X&st@gkF|G@-W?FLVGz>EK6B_r)I Vkd28jJ1v9t#h8*7P$3C&gMff|fCS|BASy10${9gKh_VYrjs%b+BCH%DAP9({ zQBVOnM2-YR1Qn4(VO=HRP(g%*%S1?+7j@ltKfSeXZPok5uCAV`nyz_%{qO%X-8}#R zK!l}$)i%JIuKE&!Rrmm>3JHk-fB*pf+#FFcJc9lF{OD8j*wxDsN<8E&2(lM&fSmqZ z=)YRR1`q%9`p`-WK%qT4jBWA?0s=sD4_Xw|35ETo0PI2^)LREk4t$~>CqpwJ;ccnSb$c7!`Uv|0M z5i?g+4ebv#u=pr`(*nQaHt1$JC$gem7RBjbLbO7#uFxZuuMzb~XXffFD+0xPngKg@)*&j`x-N`DH4!@B%8w7p!pwZ;v4>`iP7 z9BBqp8!yYAPx+Yb7;e^lOE<|kd6yRw8+;Z6o-l(YI#d#UEGv#%;}4WCMhtDLdD;Hp zGfcI}ZDmuY4aZL0Ir<;vT0q8a>--P;IsNIn{KzByt1T2laeS7sHU?aU$i zKhGy^%dcf2nc5RU=RES;+ajYa<&g0M+FS59JQwK zbHe25a~T@MJkOb}aYMU$4aT;J;IkKy?L6gxO@N>+i!_tuQJO}OjsBgs{;^6E%)Tzp;YXWPfh=LSmB z0A)je7p$P~-g+tj?km!e}@pb*T8`B{^x=iuB2!XBzf~ z4HtqY7>_ik%Hoshzy~>boq~5O;cqfDPAPCsK9^|!W#`AI_8Jv*-E*8Kr2SagsRU+5 zuXklfGbycD_{IeU+XvIU)X^!ryXzC-lFJq4`E=r@n#J^@ui~bioJ=CnPr=DD`bMWF z#q*ROPcc{tX%~%S1vXJ~3D2JFtG$!aRc!r5DI-)l)zYmajqSn_=b|-Y@%K*lYzCPfMb1k9xS$R!v@L`tYg}ZM%TD;^9da z?%?-)I6%o2Ik?n>C?xH6VBEFRRuAe0oA8FR0d*0%wKuKLMmMwUd&Qg-9M;CedD;u? z;AUkvXh%|GR+8>xXb<^nXG-6lAVt}+T?-lI#>cj7BZIHaN^5Oib(&|jP-j{ZS46D_ zRMSp0UU(SahaA!wyeVdoTB0`Gxum)rt*L~E2q(xcw5hdb=bRB3cIXc@OWLZNkmQ{{ za=#5{2nYi}>}HsT1N6{wS&ZZ55CTyG=39^#D-?2ZE^uVUbqPJJA_CoBi?=Ur|LBO9 zutM;*d`2{>gr|u|Xo|UBfER#{2f8<0rf*m`*hvf=^B?~!+Zn3?m2(nm5`(ovDIJUX zZg-26{Y%phZ2ff)2|R(0MH|MGa&4k2Dw-TrW^XBm4zWFUppV(ELOBqg3MzJ#sCD6E z#?v-s5&cT;?h1HJqM#dNi+zLk*+e2xC|a_jvniZlQ*|WESs+$cS^3%*ph7U%cQiV% zFw<0~{NiDGPT4Q0uWav1r6M=itaI7@BstUdxp`3Ht2%Q&jK)VKcVtZ9kDWFKGo|l zD!g5YW!hzOq89Sv^9+@^P866d>nsZowyBD+E0n1>xu?r=Vlova zre=tNUkJ~y^PEtyGLjN+y({`{OcZim)yeH9J&r0@K69@71GCp`ql%-K%U9_RS)Z0r zD8&Inuq56)^k>uy_6+d%*#KZ2$tWR&WmGr^J;Xd2iVOmnFSdJfpP1 zAs`uY>~Sg~!eA+Pt$q-(^S88sKxsoivkyZ9gh|{%o+TG2x1(53a8vVD!NM%~u@ZOb zmv3`$=e2O5wIcd+oMu%UBQ1ASsE{K2T7PTZLZJ8RXlM2yZ|jL#tmI>Kow_RyIj0%- z*;RB?$EQK?m*LFkvOlBd_AFg#gsG(JBXA_swwZ$}q7HuE<(@T$EgLE4qSPkH(|x17 zzncCjG_J^F(7renrpg`-d|P~zdSTO?$(=6cU=8*|+Y{++2Y%j3r8!Mt4{f{MFmkOh z-D+YK7v``bt~fWJwanX5__ zpBVXOU!s>X<(&Fn4%qS%{R)0n%DG?Y+~%*jl(OooRgj4b*l{U?5$9{CgD3jv3MQtn z3XDA66ry;mX=}|J(-)&Fq<4B`U;&iOn)$fISt@1DUG#y z=ts!m5{umkIE>=YEa?ezR7e;BqW)O@4!b`W-b_ab4vivqU7z32xG@8WHD_AL5-a_j zP*5ka_F_O9ml69BiER(Wvq=kQI|L6d!?Nu5^(Xg#6JPtDjxk zy_k9=rX;)fERA0Icoor@we8vO?6`(yqWA{K;J8--{O2)6(Ds@n<6sWo#0eHQi#s^7 zMd6)qnVC>Cau+8~D~^$>G8?(K1&pmH=yA>g9-tJpK2l?LJ+k<#T0QoQd||+FU$)Nb(gK#s zj@)Mx+d}mp96$dGvtVUB3@bs9q#8RW?Uz@|;CWM`Ie1vZ#M-lP^%WA&Vlwf#NB2sc zc)CZ(xffg+?;xo?ltJ1OEHy%yv9-GB-GHCY#CuIY@-*JmU?)^}m=G;Qc)&`s1w$%m zTW?!VmdIB;p=_4~@5I22aAf9HxZjan7jPI5_t2hh7Xp9g^SzD(p~v?m2Bkcq25Ecq zXa?-OX+V39suR<0!ItRG9j&@8jd;(=c}wOdKiQ0n6-at^b#?#L6*xM~)dL)N_>JX0 zb)K^Jx>mY|=a3FK6#CjvJZefs5|P{d(KgE+*P{V#turziI^b!^5|p8op1~0HL-O2y z`oT-Zp?Y#fjM#x>A4I|KyE%-HDhqA(2CD`UHZ-MZ+5~y=p=(ezuT`5DmD2F>!pUb4EhrCW zTsqfKBGfIIPCM#8=gb)nPjb@AKa#V7Ns2^ZI<+lGU*h_M*rZN$uV?ZfJ{hOAC&)3?mzA%)ZGAGhJc2K9U+)GiVlaN|VJJo7_R*`&8^R5z=o+S1hZe6Pq0e;ZXYRsYt# zsqd)E-_!ZK-u$EUp9(a6K3)SM7*wn;2=XlC0Jvy$!M|EA{qy7X_pC=hqWn+LSAYzTv#o`TAvJc&ul%*$0cqI6eiQd=whgHkHEtF$V1yReh3;>u+vY7&Nm1=X zF4QvtQrE87leit17t6t=g88UWC{FQy-A4>XeA- z?sRFRyz^o9@lNRG1+^%_B45(xf?Qq%(#EG5aGk-oQbk3?%l2Z4;tW@=z_Q5p zLGY3*kmw`X{OR3cEy>APqt{mHn8c!KEhA;`qhdnIXLEkbUH?X9Be3@kI_2%_?KdW4 ukRL{j>tnDT0MgT`JM(CA<-MfKE1el<=>WuIWS&iaFT(%Zi_agXA^r#Ir51<) literal 1733 zcmV;$20Hlw0003AFaQ7nL7U(jyaj1}LBI_r0{Niar!OgjZIOJ&c3(wT&v{q8I` z07{?&fdZ9&8wbii+!}+Q$dZNRdM96f!T82=kNR0YvflDq8o_yozyY3!v9Cr&`?3R; zP!a=R+q;o11 zMc?=r`$yrUDnH;9EJ{t%`52S?#DX?s83_y!#5;f)MkZvHY+G6>&5)q9C5`L<`?vuC zfd{Sp2_jA3Bz?UH>M#N-VM8mEn z3s_KP^xt>$`~|TiTrvtoy?*!sVJpoHaant)3Ie2K{I83QssG++8?^a1g*+x1Dx2CBxwp(Hf*cw|E_hNA;uU*6cVWX8+^8rgi3$foL~Z= z&9HT*wm0tp06<(7fdMKjY0T-)Ydta=YiIxj0l+X1#c&L|E-4@Y5C9Me0bwBGA_AP0 zsq8kklmTPNjEy4~R8&>)0LL)G28L-}=_p*>(pB}riUCoS7^ZjtuYvgpm3hbth|Ope zAf7ZSxDJs>BLpGG6xHwXj2tpDwgD0%oZ>3Q*MmZU7r8hqt`x|RN?aiUMn-HKk7WEH z01yTX{B@POIzW_f|FjrT`~VRKQ5?jYYFsPItL}yXU%(~l`hcE3JiqU1RXfhDQLI%jjg6(^f0}3p#+B4z?ixDSk+W^;f8TE#R8A6^RD~< z!Ka~QEDstdkA{})Z_p0RxNY;Ic`w0;kZLS0ASx6$K>Rf*1%LZMzN$NG9(UOV=LC3` zrlah>@CGS{x+!TK^WPyWgZMTI0sNKhF--_9cNHM~16VPYK_eW`iVpbx2M`7T;%TXA zD?j&sfFX0MS~`d$`#;~{6fz2wZC-6e#sBsLebH`F)rog;hCy*pi9xJsUH`RD4no9O zVt=+Z<0yCvqojQIo&W%VxFDl}jt~;FWpFd;eq zmj(gYZDCAcujLp>cCHUODM;=Biwo_>S!G)dCj=QSL$I*7DE|7!l~s5D0M$whbN7jR z$$$T}G{RF0C~6B!;A092!r}tsAPX}Axm2L)C~enM!2STjl$K`~0HKB2tVx%QOy_)I zF>T&bKuRzG5Emp|03Za6aa!M<_>6!O{YO$$j^6OGfCr4@O&mzVrym!la-izX=C{vr zKxa2cfLcnRuefNuhCcA*A8pV2##oCgL(?0ZPQ_!!_DcJJgdxRLBcbwHX8yq3bfy@d zM3E2u`@k~98#1A`)YHGi6aY=o0003&0B$Du2Co2kFaQ7nK>#_4z5%Pi8;k$|0YLy2 zLT`X-@C6osfutf}gaMRtLsS*O0QtJC4~V6|^>24`G6XOGdILxyIRYlZFPobIU63|U zJC>opNC28&Ig%fF)~bO2`Qfkt1muUBPXw4U%x;HY$Nj>7Re4Y;tbl)~kpk%sPlr{D45O*}7`#Dp1y3IlX-TYw%%aU;HfL(A}Nhw6j7$J~J? z1uTEhz8((X6jPvBTUwxdR*Y;7rq2KAO+uj7D~zgL+W{N^Wk@BX&6y0Mwv({x&iRJ@^0! z0JhcO;O+=38Xy1OrSkI~!Y~C6?=6hKH}y#*-k#n6<^(>WxOvqMJ?Jn2>U)Z2wt;pE bWdVPd4134`QC5D6=K06p{OTSjiT(sQ_hkRw diff --git a/samples/h264SampleFrames/frame-0177.h264 b/samples/h264SampleFrames/frame-0177.h264 index 44c20956095256f15a87d2ccdc7f4efc02b031d5..edb72b58e12f59d0bf4e4b8a50102ecec499277a 100644 GIT binary patch literal 2354 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 GkO)vF!HyjO diff --git a/samples/h264SampleFrames/frame-0178.h264 b/samples/h264SampleFrames/frame-0178.h264 index 10dcccb0f8d6edfcf346e88142b9bb79c6398ad6..f82fb6e6ced9affc8ca443f4c10c97e5ed6764da 100644 GIT binary patch literal 1381 zcmV-r1)BN*0003AFaQ7nL7G4syagvHU^fmnz&XPe!aQ^>)xj^$zdAIsoCWZQ2${n` zX8gacaIf@oSQGC8evh<(nZc#Y56ZMpyb1aj4j)|DO2hsIf$M}ki^}6ibh5m72mo1d z2wuM5VqO5?+`tADxc&Mooux(vuP6)eV+;umQEfF$*!G*?rfs>4;(nBd5*&`3%3Yo94 zBmfy$AVGq-+gA?aT>k(#(MalIrZwg2Sb^u0G04ZawpGW`R2K){lydi5YnrDQ(^Fs&7x*z~3J5;!_EY}wfg8@6H zfg*iOl?Guacqy1)fFQ^D{!(PHmx_~b;QRwpd{Cr{uKsuvkV(blVY^f)r2D`q3IRp0 zy{Pgfo+pKW`@v8J=X{H+|E z<#oQlSG>P^GBzj3bacV-p^t-}JQ!@rb4BET;QS?acO)1G2mO@9phVUK)_;hMh4{FB zAkO|H4xlXLcaPq+pn}3$E(gbO>!N`?UV%FR0mJA4g#gw5J}@5F0f0J?0V~=oa6xc< zB5Qqh1f%{YFc5}1f?Qd=00V!I%S|GN7vm29$qC#I`blmdTvi-`z#D`+j8Q2VtOz}E zQJ5a)VcA;mc4h_|B7J*+1Cjy7-Y5%vmbm$9VdE1vncye^PYsMd#^@G}VmG1qm@ojy zn!xajE@@5kUSWnKG|{Am&|%2~Hw;Ga?%Mm9P*xUsgFEs7F}>CRsG11>^^!6B;-=TZ z|CkP-Ed^OxcEUswGP~LM)ULO||Gz8%A;hvTl7-o`=gTl*z!2;J00BV&ZYGchuK;*3 z0003&06B@I0jt0pi~s-uK>!s(X#i^Q1sZ>W-YhZ0jaC3^(bB}A1-VRrp|4i`^((6_ zz~dG~^@<=3O%wyc&w=|&73U2ZKA(Nd^+SGB*TA(HSfh*tyfM3ABQ>;gG}Qq#@V;L# znqd@&2OtsNS-2RF^8hQEqH*cb%|l<_Z;!X&pm zs!RBYcQ1kDNE}T?DDda;8^~VoaRlG{dF>e(mp_Ao^AEZ9cURT_lYkFpDX;U!;oy-8 z-#iJYhj$f(1A>7eqKWkMF*6;btp~iyXg7h!lp*rT&i}peNB)NL6e;hgwEo<)=W2E= zxK0KtpbZ01HlzV`cUtEx0pLQ&W%ci;(-0Dmkjz#t{J z4k;C^YiyU!1pt^ZhD-T>@ zLXMg+3vUTzv*_4czz+kjL>3xH8WDEvOjNZ14hI+#+RUx6J+5i*yg&dz0)^GN{0dmh z^~=Blun>Fzpdc&OTGdi47CaWmz|H~*2hi5L6Ey`Q8f06Z7@*fg*tIdTVnRZ;!Gofu zb?_&b^aLDODHQ+(iA!-4RaDEsP6`U=eDuptqI7!tLN9_ZImub>v1}`hdc-gPulF+} zLt#i>bJ4;CPy!lZ1435`tfx<-|BFG-!2^hC(SZ%=(=k1--YcU^;FL&wCJccXfXL5) zU;rQv>H&!sZYBf;ukE71V$%)jfFMJvh7cqyt7HU?IF19Turi)$MHm0? z0g58awDD6>9SEnmE}-xL0syB0gf5DpsrJS9gHW&o&;7t4;5kkT5s{rMsCGml#oi2I z37P(eK1Agj-U}Z100IIa>~Jn)ZQm#)DHD$)kkP=vut@=7d_+YH)e_9W1~(YM&<@sE z6h0`#;6=L7sI3Ee==GAy^NrvD2m^xAU^tkHMbCLF0C+F} z00BV&IfKO$BEk$JqC$`r-$*MR@Npji9>U62Bh%S;3%X1y z+d#`G3^MgcxYbDl1ZF7Wi~+~?5O{nj5PeB=2_TY<_wf*}UlJx@M`< z7@zx{JT@sDMZedBfh=Rq%FE0pYn}hz7Q6t|Pll&@>kx&&Zi4m9^a5$&UB+PmrrM?( z3dl)KeVzf7t~|(<-}mnZ*Ox#UQ2qX(tYwR{<%hlRf(L!9D(ZWFZ0+58m0fH|kYa;eZF?>QgjVd}i;s0Ai+g>aH@PZ`*t8fnpK8 H0~iost(@iG diff --git a/samples/h264SampleFrames/frame-0179.h264 b/samples/h264SampleFrames/frame-0179.h264 index c80ea334094677f411819a69a23319fda6dd0200..25d46df0efc3107560862f49e33c7a65f6862025 100644 GIT binary patch literal 1474 zcmV;z1wHxz0003AFaQ7nL7HG1yagW!2C;!~&^LezWbuj!R-CL63_~n&d2~2W%8*VF z>;yb!g+R*3f*-7rt38sqz3m(z2q4n^z((Hz?)>z4Z#N#T8GvXtfC3~kC>RMlOVn7n zN3}Y}NB{%`Kmb4>GOHU2r8YNf2*>~k2ulDI`3yV21hVo20IipyVqsLuvHGS10f$Ir zPd5u>2zmpGAgCicIz${ua{q(=G0=~199WdGrP1(V%9+2v%-w}J03r;g8H+TuxKazM zhm26efZX~sn1S$1O#r|EIsgIz001Bg2NO6T72p}dnqOJC7Y0b4@COSXRO#~zf?7#^ zRlJiZWB+piTnl!TD-D8tU5h{fAONrhFX--<{%$4+C*;B9h-2j5|M!aHBL)QU0Zg7T zK?{(1YXn1lvB3L|*uouHA$adlfV(Q>MvvD=o{BtAU?}+h&@;YQ2zc1Vr~)g%06PH= z<@nAr1^~b~6Sp5K`U#=L5Y>1#5)3Bg{hmLnPiTa0=A_)=IyIz6zZni95)X%A3~R^s zK-sy(dODKv*Y(9h27aa;8W70TxBy+jFB#)NK9(P<8_4MTW@(NDSB2al!*soY|Cszg z0mp)4Fc5An=7@tW528bB&r#vLTr_3OSXG5U0SVoio!!})-M|0-01gmRP8hN!N}}QC z3YC||0yGx|0Msxa3Iz|0KmZpLA)#BTBmduN3??S9x0HmZul>aUz_UCUPuz(=Bkv|) z1J-Z|u>|1InynaNSNvJ0nhJ7fKlf;uakMH3w!5GF0H9?Mhb&6@NyL>`+#mrkVI0ds z1q)D?-JkCO0M`ZtPr}wlhjXq3d3*o?03HKElo9u78BOsCaR5cmfGLEq1s&u4p!pm= zgXgy!&1evbd?6cA1Q>M|6aX1AGDB|WR&^N^r%ZA%dV5cQ6; zIr+Q*0RU2#0Mlg|G}L*2q4MxVFTu{HG_Fs^#!&nz*dh#5q^COXPyKEE1cD1-ttld< z3p(N~HU45FAODKr00IE0m;oUxf%4N2{oB4iXPDL9-dG6=fB+yT254YZZlbqrywpAb z4Vxy0#txj}3H@mrVtk}mWrtz{n20C=@{a=Q#5rv2ABH+MPz`7Re-&S(yfE(g0vvz< z00BV&ZYG!puK;*30003&06B@K0jt0pi~s-uK>!s(X@F|*1ss21AVL6fiwtl9TjB2! zIsaZ57Z3ztPzpy2{v!Wl)Uj&HQD6SRd4Iq}hy#d$a7COA;R>MB=YwGY3I>n{pa_Yz z{t6-!1))B7B0sPg4l83qmHF?qx_ZjWP!>i`)9!EZb`MHp#bpXn?f4NdP7f+$=K(bE zu7nFrNNCCpRU#|^c=S^SXywMgV_pG1Ev|USJOqe#-#r(~P&qkNA>arJTZLpv>fiQ( z$39l-kskhyqw$_S9fA*ZadG4h1jm@?k`#}46Hg8NARG}_kkd7rV>TmK9Q5UVPE9RL6T literal 1169 zcmV;C1aA8P0003AFaQ7nL7G4syaj>$%;xR^hw-6606>5l>;gq{fi*jaU58T$)xaZ( zNdb}yO;cp!yv_gifD8di&=^0lj0gRXsk>kMfMh*D0Dl1f++`qDS6tN8 zr2{3C)$TA61zV0IFWO?izrz);H;Q1ss)L2NMrk+{=F*k3@J z@Q*k700scVumDIGz@VV150UO*DkJ}B+`2)Dd8Cy4z@Y#DqK8O~4P3J^3C0f7gYW=k z(VzejRd(t?01$Wp0S6m^3PaaV^M9@6NGu`X0Du4>3IM^?ez_`6;sMt}*<7LQ1vm<5 zJb_3$WH5Swpg#||0|7yX(K~Dq@G!5lBL)BnbWo!a;-kBwj#bDAeT?Itn=DR$o5~vD zkN^k*1OnzE6>N!7k`G(Ic*mj~00ay=uW$g78O(~FzcCRxHp9BvFMt3b0vM@O;7J;B zE^9?}%xCTbkKJb5dVlT>$^~zUUVG2!PCO6;42I-D42bYUoeXvx0RO-MLIR;3QPKIe z_t!D(9sV+_;|5(Z~#Zn*rahr;>*o1g#y0YLz6 zCXfcN0C+F}00BV&IfP##wvKFNO z{tdyK09CAz0HHwZXk&hR)LasK$fA-Qzu+On0mMMK8#d9J08S1w`|wsU4M#`-63`5Z zwf+f$BNz_>s~6~9{=i8Jk!>b8ug|`FKyNo$SxNw;Hd#6{%i`%sR-70|>QM)}<>~g1!|7UNyboVXF^=Bc9vm zTtq9t@`eRB4*??Y4Rj`cRsU!c2bBsX$Mhj<;3CsWuTE?@@FSS?$Q%HI%nDRF01&Ww zCo>QLAh82iv)%;L!oLUw0IEeV*24?`v>PS<`2FD&-`}79{a}oK#afkB`R@w~&1OXp z_BX)*Eh0<%MLj+ctvWyX;PDlfSt$7QxI&b6#r{rC-~a1z3}0egTrd$g77rza@8Pfj z2n9+92OTrcff>Jh!D1?uJPtsIMOS6|D4LMvKlinXHYQd8+(?|Ktlf)$0DXGzmZS#RtklYBKE^?e*OFZ-h%=JFSh;- diff --git a/samples/h264SampleFrames/frame-0180.h264 b/samples/h264SampleFrames/frame-0180.h264 index 226a52ee147c7840f6e46c61a7ffc616b8d97c09..c72b142b6dddd66c627f639cfbbe079367295897 100644 GIT binary patch literal 1192 zcmV;Z1Xue20003AFaQ7nL7IRXyakcJ{!L*(#{dl5{#Va{03ZXv9D$ZhNc-LOtSuG6 zxBwjnpc$PY)zrmw;lI7X0=H(g0fi}}zvDSNHWL-~y*$90#)VndopynG}y=AqAreI)lp_gU}l03n59-Lret z?;)h{00_laO1;=Z&+q$$3<8L(35i3D^;%G7^oSul80=w+V~`kc?if{WG-HKK;o^>{ z;Hr^7-l?lNx z5C+|{009D^01!UuzyJ^)0f#kxSO+)xc?1TGA9sh)QY{%CY*7%B{CJ*nKmd#|7l5AR zZmpAC#-<6p$p9O!7*ppL?~T35knV9FhZ0GS|L}eQ0DvGN@%(hpa!o1crX9}0YLyciKqdqz#EJJ00BV& z6+&tNYVZXfe^?$w3k_HX0ya^dmV!~802{t+6*t+?FTnaBX92+wmP-Kfu#X8d2(8X^ zKX|ag3UxSH2+)*!VT6E9F_c@T_(HH}C=`nnt!w z8v<$JU0hI*!A*y~DN79i=qN6i2m@LX2%u2b-gvCmI{x?14CY(84L3HlzJzlY&-K!b% zyk;G3Vh!*ozaxlnlr7F1yT$%6q GFyQ{(F8?S1 literal 1012 zcmV=NKmv-Pe1@5 z0st7+)&gP8@@q*`KvwVY0I&=YAjv#*@dBxR&tpdr-4vX(PRgmNeSnA-2LOaH7a0Hq z3wL&OX4UrF~GjGqTd+};7MEQHV}aX z!>~+QTAUJ)I`5s+`~AQ(3G^t*X^Zm>` zp&$pvc_9EOJ!1d;z%T%J1Q~IiS7d|r%vs*TlrEZsAeDt3!7c%)0tE?1ij-Iv=uakJ zcm^o|7%@DyUr4nM-JAt3KmhL`00;*Z4PxX0kz!t7{oq3sDUDe|N;pHyG?jGG_yTT# z0003&0B$Cj2Co2kFaQ7nK>#_4rU9$K8;k$|0YLy2LTP|%@C6=!SROv~-|KILG ifB|waZi6ztX{vw!Ht?e&4~BCzh<9#OLO=fo93Q}J&7X4s diff --git a/samples/h264SampleFrames/frame-0181.h264 b/samples/h264SampleFrames/frame-0181.h264 index d4ae273e0d6b646373ec7cd5c0a8de66292fd114..6b84643987072e300cf0421bbacbf078ffae366e 100644 GIT binary patch literal 1454 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 NHn+dW{QrKcVEV~~Mil@6 diff --git a/samples/h264SampleFrames/frame-0182.h264 b/samples/h264SampleFrames/frame-0182.h264 index b8c463b15787feef1a8279bfc4f9fa7fa6e9b27a..9164b0b3d58650db91da26f6f65687b7fde48839 100644 GIT binary patch literal 887 zcmV--1BmE58n#!m$G00A;g%?T%U zL|*_fJ&NC9B(3zAaQpr&04M;pti}&=2Xzeq0Kfo12pL;^XS#ohkb$g`1E4r~BPSjd zHhb7A4q$LZfh0nPW^(DR+GZyCN4drH44@7Z+QQc&%R*Q^;sjuYF+v>k1rl-K01yq} z1c5_UjI#!bMGKYxga5DF*|ykYL>>SyGX!ATaYqzUyFdsd06~^;eNzeu5T5>1cZq-p z0-HcU@Q+YvV*PlafB=C=00|C6M4Jo&V+%eWIK|xry%=oju*3No2(8R? zD4vygVdnCO)x!!90f>l5gdlPHwhO=D$9T}6tvTiJad?#uP{tTw0b?ytfH<=2g^z@u zlP}-|2qD9q#Jovo6t+EY55#?!Q3DDMVI9SeiXA!z2t8fE5bOW|0YLz6Ca?yt0C+F} z00BV&If<+RtH2wK0003&02M-O0BZ0BB7cGOBrr9`zyrVq`kO+EyKDe+)-2Mci~m>^ z)>&jECV&Eyd`fMkYYNwzAk>j3?d?-6zyst=z#u2K9%gSFs;b1pgZ6_DbO(^Y_>vun z^UMN*IK+30$6;GvEB@91#7U&U`3!|IO8olB4Sz};mv_z&Q(+3WPuGB()0t?}GKYYH z3JLaN&~O9op2rWl)*+sbeSGWfejESb38#knVnW79$J{v`P&17I8KsTMYQSb`$k+35 zDdBzs1Sljm;p$kvF8Lt@bPybLvJX8n)Qn-5&~4A8J=k=#91PO}{C}}W#(cgKJ)4cT1_-l?ewVNogn2EgtNs7L zJCSS#05+Zmozej-N_YbnD80v{HjeuRsm;^h|N4vnH~c^LZ~M662e2xsg3|y1 literal 909 zcmV;819JQT0003AFaQ7nL7Jc%yak6RgsK2Ip8`pOPzFa+(3R){01K2Hw8t1Ftsvi> zn`(erm_9cE1R8(@0)rBzUDqNu+UM|&0C)fd0Dz!@6!u3_3nbzcYgKq^Z~zb{8A(V9 zi&;L~bV!fj1^{M{A&1F44FdF=X98tF##i_R0w4=UREUjmAPn7%IR?pQ^kl3XOEYl&S!XAdZz)1Bw8cJhzsh)_m&L00ID+W>5fd3XrH^DMIr! zLIxKA0tbJPfdU+{_6b^c14A6UykQVhS_@H3BG^#hLP4DI22%*6l1f-}2_>Eotsuf0 zExxEhM%z=sV2Z$5RzgJ;zdvAJUGD~HJiSyR6K-rv|Nekr03ZZ&0v7~$JcX#!#54d1 z2o%vooLu?UNev`ky(a(+0}Ny)to=}w;mqwIpWFMu0|OlJN;n#AW%5|o} znM}n!N#vjK1l<4t0YLz6Ca4Cl0C+F}00BV&If<$PtH2wK0003&02M-NfNJmsB7ZM| z#6TWG0?9)HoB~I$KUKg6#OLs3J!&6;-Rcz){?@Ft8Ey1{Fs;9Uk?0TimjJ9ZuOYx4 zCK3l=LS_PRSt=Z%r?=RDd;j;g(!HeGpEMx%& zHH3;ti<`r@BT2a0&_g^Yz(9org*+&bsTSdV`appWf&vOVlA+ao4dj)WV{j8s3hsp% zcv2%Y^8y0@OkECxAO6=+KGboL*ni1tUI=#pN2)d+7H@Dv8uWF2;kXsUz@*#|{QSQK zB?t;wM}QE83KhtXZs2itAs24A3Y$j!90IQRY<~iw3W}K~flibgd*i)DY2im+^!U`O j>+9FoOrQe6@?9QIWk2n$UijPd^Qb=!8ROfpl7;YU>=v29asI-AH=h@apvUUKAr0w*bwST3-K{bEKB-;c2` zup|Hk0M0;QK!Vz@L0RtNNB99@vxuK!^O~>h)Bpki!Rb-}u^kXA0dv50-}fNlL=~z> z7hAh$zvABB+iwqm5Lhf?Yopu-FiQ1T{^bA|0-2m*0kwm}7yiYWSYQAk0svux;nxq> z)5p#t+dIA9c z+rUuwOpKz;B<}??3its758Lp{*^4F29Xdom05>wArk)XBsyHW%MB?!%sYLTjJtTlo z0)QxMz1sy95=^eI|NFqG0H_&wc`GJG95y9x7zrQ+#?FF9QlGD0Pyk8*5w8HobijSF zU)^wj1^`mR`lFh{fyWA)06p$65zs$R3D*g*#RiTEh#e3+IsXO( zE~c-kDSIiU4@=J>vC$L3VPwDovoS7q5Y_U31S%hig8&SPtPcsa=9I`9^B7_>%@#;q z72LjJ;e>HWUlQq^VFdsEpa5WVGRLVZw7hszx2+J(9gI&Gf zzWepHH^1QgAR;(0oSP*kw1`haK0(5WD^!jyruMG@tT2Jx!{JuS9{?9#CVth2mk_)A`{t@?MVMch73K`KoINz00BV&ZYH<} zuK;*30003&06B@S0jt0pi~s-uK>!s4LTiANi~=ivUN|+t3=85JyS##5mjQy$CM)<~ zi+zItA9w!*=d$7OJz$go3TptZd+oqNh6ENeG5{0|pBKXIkN}hz??1-bFoZ$Q2yN7C zk6Z6Kx&wa20D%n%g?5j1swnf9@xSa{E7c zkktU!Z^Q-Wr0ZD&w76p2)H&^d7wh0X%dfRnKfL%8PYv>%cw@uzdSnHBd>0R_0cWfd;q~f z(YJKN+PiQ?J3%ur0QWGIg3^|QE!Y9Kq01yMe*I)qvB9|Q9gW>cE6F8Hp zq5znLnS2T|g#_-osz-jredZ4pMiFLZQXCSR&Hw;F2vK2wThM+^!Lr4G&};ycyu{@& z^m{!+?S<{;00IICKn4LhviC$_o`}R8F^E|ffj&#Jo+0~y06<_)9DGD9ypC zo-HH(>vYrbCi54EwNziuCl(4t5C9tqOW_lBUB3XF6cx_->6VW~X!Y(P7r`5xLRM?7 zrWL|2c?muJf4QDJscoK03oJ0Xj0)dl~Q}%@g@Dg_HY0Vz+;|Hj!uQinhJ0D0Yd~G99>!HQFX;;s=K3f00IdB03a(9AV_=e z002OLEFM9sIyQ?+c5E^4o2(2Y3N+FMK3P}qyauL-zyUVC#*F>+{1t+vk_eWXAc_q< z0098-`amK*9FvcT&==)5fI-Os5GAZ0MUYyPXFP*f00!Rx0Dyyl`CrF_V~;6sP=YEU zg1obqNrV6sbN~PWK>%(hum-OHcrX9}0YLx}If<+RtH2wK0003&02M-O0F!(JD}P;% z3T^-~dB#9tE&g}}XI_#9P4Md}zsSp*Y&!5J00z6f@&tAKm~pTSBLD){0DI5D;2}c- z3y$VL695wfpSpw|(E!#WzCXdPc_DK^$K3?(^)nZK-Z?L{2LJD%5Fw%%Ng(?J|H<|M zoW`d#5p=`#*J6Q2OpZPSaL&xig@4sf{_g=EWK4YyOs+5!PYUWXaUmj504Q<5JP|=I z$w&-x&qZDm*ablostb0#oEdU>EIesVDTXJ}bgtV&2@m%gaOwmM|I54Pj-{q=^Te_mA9 z>Hjx@!moSakW1Lwm++Q^fe0hO0gaHEMO~nUHLB3|usx>|bUD9pDG;x*7M%b0SLatC zhq@{6cf7y=5F-Eq1b_e#T>unJ;s9V>QIzmNSUpKj8Km$5H;~v~oO+zqFyH_*-~b>f zKt4gZ#0xvp_^7FwV?IuR@Bw*ibe|iu^o1%Y08~xTzb*fJh-*v(jl`?=IMa9>J_H7O zg4#h{RlJidYyWcqR10>MBMpL5Ce+XX2mmdBIe!Or|86D_Ps@YL5XZ@o|L_xw_(T-~ z5JoHtBm4nifkXT8FaQu@i~uqK5lz|{vumi&xENRJ(pM%`$9-GY379gdrZU%D2^v%CWVly@Bjn>0uw+*JUI5+3oHc2kRu17 zngx}hLD0wi9h851W&(#l^Y(xS05E3xUj$O$8E5bB(FhP^pvCc}&|Y2t|G*Y-C`2QK zutf^AVSxLMr)y{c1SK6~_NeXn7ykGOg9*v1HRT~I>;C~V0fArM8l1-&_%V#fA9iX&F`V33|W;T<8Os_5g$Y{h;|CJcIYIm(N%~EC3laG|t^j?Cu|` z3ASK>76$a20Hw4rC3bP?kEenlR4V`k8v%ez_T2*vh*!a~&c|t_%t;gg1Of@0qS^BS zGchhH6@}z4ApV>7=I{Un0ZLc`O_XHQ`^)eo`FJ81;OA2sS104()htvE-vS~- z0mK)zBwV3p+{Kom=S;*#KmQfb00aS1FaknX17!^@_p$zGm}>6h%K;%!00ac!%?t^R z)7NaDnPB(;Hf)+37&>!=C-tOhiSm(MmK}%+ZWsW5NWiM04qqRD`~eQY0003&0B$D0 z2Co2kFaQ7nK>#_4umP*U8;k$|0YLy2LTmtP@C1nA5D_4N!At@@K1~BvCWdM(un=H? zSs)I0#Jx;P8myy0!f_}Lf$Q_;8Nlehf?8fRslW655C(87(=Y+>CZEgTAVUgpfn$RZ z0d{dxW(H%n021`050Hg^94ilFmOTq5$5cMxFyJu(wH-!8B*FY&HZuV5spTb~en740 zZb7B+=I!nM_F7-8;?6W67SQaAGsU#O_eppTR=sR*0Mrvabcb$G&-42k+a5L%>iBwr z2f7ffd*FKgf`dw;FWv;x!+T;$2nLRTfD0H7CaVE{A+Y3DukZtWhRwx#_<|F}xlMwY zB=+9~M3%iQ&(|->w{c+~4(a!X2mt5GY)J2?rT9V$1P`IX2%!iqNyLVpnTujR46gNf zurBneLV`RE*Ymc>O8Pe1Ti qi4Y))00Djkq)-n4yI_f*g+Y>0Vx0?8@9jtb*8lbwPmDIkqTueMw|MLT literal 1389 zcmV-z1(Nyz0003AFaQ7nL7Lziyaj>$z9iTnK!h3$3jhKD0TAw>xVx-j6+(O=^r9dZ z-e#1KfnQtr00IJlgZHC=b~NZ0Hzp2|jy?=I#2qCCO5{@-(2twGKN=#X@E~AJ%_G#* zScBh0y?L%@x_V~+|DlHf1OR{>)CEh9KQ=Zhin%}s3}+H~ED*;PBCAX*;J_E~HF)th zLhKhAEr-Ow7;tH@iLG%USS6t7vEu-PXe40FkH~Q(6gTx$m+=_jQyBp|*QSWmNIX~o zanMG?5aqx3x4;3Ag~9W)cvGd7a^M2Yzz$0QV1api;R1Q;_m~kW${~)a){u>m5#l)G z!v*=YJ~eYM!+ zzyLrXi`X`nCJ(4e00IEP5@~H+ z^t=(ZdL>-vfH1=$D3@%Lj@|%ar$dLTS44!=(1|R2Y965I+C` z00=;g{rNEwId&1c**|~)!VxH(8tpWOv4VVT!S@1-&0{s!!-H1^UY=d2+gQhh0R%%Z za2q%BJ0k;OFbTQ<5r7gALPg}yo>>ul`~VOBE#`Y4RpIymAPjZ^@jeQ-tx!}{dyibe z01yiR0RYeeAz5H&_yiO(0KBT%N4YX%?Bfjd0Wd(}RA{wt=*{q@!?-X7fdLf(&j)8( zUYOK^hX4t>0003&0B$C@2Co2kFaQ7nK>#_4t^upS8;k$|0YLy2LTi9(@C1m!M8HIX z0|YPw3cVh;xKy-^gANF?un=H?Spauj)YpxW9RVJ!Ge#eQfLsxbWZ$kC3yuNM=iuK< z&%0B9=lCEB?WawR;7vc5#0C;LLB|Cg06uw&R7G&EdH@M}NWl4oTl1~1(T9*#miq0}ch4cClO|9w@(mhR}+D0-&(ob)M0h4g|6Vd~C_k9d&jem%<})BE*dd1+X2D z3oF$NZ%MyiTz*B~1dAZMD=lg=i`7faQI`k(o0SK$$zi^VKJj4Ej%5-EIdXe diff --git a/samples/h264SampleFrames/frame-0185.h264 b/samples/h264SampleFrames/frame-0185.h264 index edf07319d3ca309a8857ea7eb145185ff99a7636..46d26967c3f083ef0c9c25d1da3d1983eba9415f 100644 GIT binary patch literal 1248 zcmV<61RwhV0003AFaQ7nL7N~Nyaitr7U8xZw!eai#q=vOuMDkf0p(AcOyuD{G%2Yd z2!2|ZT(^k?VIKet+x}O_&)>iR5C;Ln@G-W<0!ubp-sBs?zyNaq0RW`*00aR-#*82# zD|N318HSoTxi`4mhX(mcFM=3ub_!6>p)=x|kwZU?pSUUl9WjqbI&+_(Cwu@*12`C= zRO>ceiVSD&00Mv%N7q3OqGe^tYu*`dpsC8JU;-l%zifa362L%XM}r$aB6L=@;{eSN z0Ed7(TZ8$)FaQ6*3>3$OB7xkAkcNi0v3h_r27U?re4g+ObP5GP7MA$A218IN+r#N6 zVdy|W;D$ya4-dr7l5m8;M90Xmp-3PporO?Pey2$}WecF=aW9YY+rvW%aAja1r-A}R za}6tVFc+Esq5v8I7y!YW<$MuKd}W`%zeFHGl7knDs$L&$vAvyi#0Mt>%MbA=A<{$@b0K$%&i6KR2yqf?4010#gfUyhV;R72qMr0cz zn63`m3ITKsKx!HA11M=@4Ns306GR}8HJ{A2?u{AIyzx6 z01zyI0gDSXW&{X-OZ%cxntS^|2*Rl>*}dv#xuoy_5gl7!)r2Iv|G0sGr)&g>LwxmC zL{{|>jEFNa1u2X`Vg1GfBIALD5hsR-Hlu}9iT?EhSx`PC%X=2qY59T0INq5g!t%fb z-~dnhpeP_9o@k1Pn6p00abp@ty?ZScwo&Lx(TiAnm$v!e<3EJ_H00;yPh$syR>AYBtoR9v% z3}5wyH#lyGs?+u&U;+NH6%!s(Y=CO;1c-ltg#-e_ z8~}Nz(oU&e_V55!w(Ek0Ilt;5jS(fE8VYaPehm;`J)n39Fi10i72sb(kgNIPplqwV zI|-ECUVqL3;G#oo=|H-E`K(4gu4n$KGaLS>6J6iA6pxCtg9+WwcehnQfBY4+Qn2g% z|Ggdrfqav6dfcLa>8a?>VfQ@&-&tk zS!weh-I&@Af3K1~yT@Q5XpI{HQJ1tc4w7RZca_DZhXez%`yzQy_tC!o2m6s@Q^NcS Kr-tz!Bk*@zU?G

    !`ip5iP$03Kp88hltrnWay72q_{QQ)f=5@x%*=@nP^l z25>+!01gtYbQ#y~KZL{k0D}ONVLG9Stm4cr62@%Cac@>{hX8;(uqA{$NEpDHhQ9zL zTEZmwGyp&aze2<^Nbmpz14lgo03aN3ai&R3*n=^($&$bb0uYf#h!FbhBYX*X3IG6r zAWBY^2SjtbH?yIP14RUK;g>Ep9bMpn1TYX3^V|&)5PDi1n-RlkhWu z06-7{fCN4Pj=N0huo^!Dx8MU8h(Z9`k+2fI#z0RFsk*=u%liTb7YYyCFhDeb5W*N( zN`5Hukb+-)H6Y*sFjs(nQdRT{0CV6X6b9yj9f~CYkzuWlmBgcO>YIkRqSE#6`lU8H z-Qb8Y0dU8JnWx0za7F9q!WcRXFF>Y53FLH2+e}UZXcT1@V%Nba00;sJv!w!~TUWH= zJO$t^`H5UZ=r`5ijFKmd-b^pd{8XdCCByIn3@}G-qN!s(YyfKT1c-ltg#-e^n}7#~i=>iuCvUz02gz*bASgRo{bU$u znzP2rqJ`~GXW0T&_fU8UFi10i3)TTe&~;jGjesvv{J2x3eo-M4UVQIfV??>P8SSL;3@+Z}Hg@C-Spuo$y47lAbJzp;U3HJY#`TmkfdO%fS- z;qMmTtH*zM8eL+}g49r#{{Yn+Bxr`p|J8SLQUbn2a9llpS>g^ao+Ab3ZSX=PmG_DX z-~fui9_)Y&kLXcdAD~1W1<(RoL(TmWBa3x$BprY&w+X=3$N`I$-^SKs3_xQ51ON;KDUE&_4^&`fX`Q{0zyJ^c z0ZSPz03+*tW1uJiDh>%F50DI2si3r396$Y_1ON!;;LGs1Gkh$OH8k-lNXIU(aKV59 z5m4ZeFUgeRn@-~bpKyEP*JGK8If|J%d|sXzt@DM{&e zkt*IGk}xBMJ!Ob6aNckL7;_kFQVQ8{#14&H_kaeVHVgJH7(rY}pXV3I03ZM`*~-R9 zfrT(Q0SKMIAb@2NGEA7$yPuDE0CKz$!=GfYH3AP(B%Irf0tfn$CV7B>V!#0e0N~+U z=&>SN!Y3}N6(&$32W|PO-$C0V=?U6fC7PrBIvQZNQW6$%>yU{g!Ztt$gk1rl-K01yofK7;|nh+Yw- zyJH7B|9{u*?AvdM5kNsgC>m0`B64||;85@YOx|Nx_NxD8<@ujPrNqy`9bf?D@E8HX z8zJ2}2fG7{xFB#(xHK>$yK(>o7AD$3yl}A6;fs%c0x$#_X9v|Vpn)0Rr8Rm0VKIU2 zh3oF?k5U#s2SprS+3fY^4!r_&j;0<>fB=9bx&gp6TNrvo-xf1&I4~~_hea>l;#sV2 zfuMklEyjKTf)1fArP7e-Xp8dDAvbV5!AEpkxwkCkDFea^UXZX%?XSeZydSg_I3e6SnGkE@&;SrB009GyumBJk0Z9A6Z~&%|0R$Kj zfiq=TJ%Cz3KuAx>G&LjFfidBLAP`;z0C@oW3k`#Rgg5{G9K+=guL=nHBtlF=2OrB| zyYS!vV=YjCII`=7kA$9+FYnEGCXO6Aeg-?ng#BsHFN2H3sB(rMtjGZd9ZJx%#T;;D zfc?-1{$OLm7r%(HqzjoU+ z+lY+NqX5ovQ~xjh?)w@uEy#_4v;nKY8;k$|0YLy2LTvzQ@C1r~FM-YiBoqa~Fp)tJ z)&Vcc7}^iwK5^$ks9rJpup%0DJ-o zm%vE0npOe{hoFe}9@!b`XMr^E-d_)i42XDmcw#XOXqgTY_$?BZB5n8icv-r%Fy#Uc zxk5khx0tBg$9 GzX22ODMPIQ literal 1358 zcmV-U1+n@70003AFaQ7nL7N~NyakDU0RSKcAh3K;!GUad00aPm0j%|N*;$j4ZEt`9 zz<>h*l0})3h!xrbg#2DG01yJ80Opba)`8|lYN)cOgVYf|jb)uWdAPfKu02)Hifbf(oKo;R)SOB=#w|uCa{rylRQA|8vDG-8R z_kaZt<1t6pF>YJ;`}WTFfXc57gQ^l!&~o@{Fg6ANZUq2zG6IE!sy2q-Eu>)*pZ1P0 z0Z?Ymff$UE!tfXi;8o|HJSD6T|u}sGP0w7}-2RYq}4BAbm;;bNh)VNhSFO zVJU?}QP-vLF^&_3#0ADc9DHB@^VC4wva$jA0}4`ETwDT$muj&VUNJMB@r1;;c^(8% zzyVdT3<$R3wf{N$#K-}As8oN^8{QTm09eEpXh9=MoP1u{$b+h<@ukfmF;TVfeR`ma zygZhnMcCoV5pB#FFrj5gdLv%f*r8)vCHbHs3Sn6t&$CN6_h8HhQ^6D6Bt!px=nV4> zl}pzB5&i}Mo1g#y0YLz6CddY_0C+F}00BV&If=3XtH2wK0003&02M-PfNJmrihnPF zi-3s*5KJUcL@9tB^TnJxh8;^W4(b76r-A025iRtI7!ALqUBOido(~-<@O^(sqA9OJ%+c^~QuB3|yg`3cdQyu1BfdByjwE!@gd;&!BCQJm7#mI1c z=4H;1W*TLkaL?v;><=8woOQ%O455O}niCyDi1)zOQk2Fz9Ql3>!Z2nCflx3QP5=l1 z7zk4u+%z7jz{=Ardne(ISdxH2iq9EY(`)en5dZ?%3KVX&b0{3)cmMDJLotPWP(es} zYjF+W5CCKz2ces!5r5#CZVP|_5CC)vUD_PdkP@=L``88m0t1#mlw1QdkR3-*s7<2{ zI2gG4Fk62ATgP zN2?$FTie;QHW+*WUSko3Xr&rSLw0}=BLE=lJQG~fqGaM+Df7Hc00;|63=0eS2L~ke z;)nnU7k~hQ9$)|n5`g@D;HN_X0RXT7KQOogqjx{hXj6a=3kb1a078c5Rxt(y=ZXgb zB7isst_KE(3DL{h*x%(h*aoivcrX9}0YLyciM9c&z#EJJ00BV& z6+&%*YVZ%d1c)#&j5jCXAq=-${atPX6c`H~n1!PhL%{S*HyVNO%p(xIqK&yd`VF#V zV9-x`oBv)JRYiM+Ue+`LQi<rky_V4gnZYG+7mR6Hg80@Jb;>gw8x58i06h#R|8+o^U_alL1qMj`Cr-YHQ%V zFBWA4Io|WZ4$e*RSod!Qi&r&={7#-5;37dlL^Lb_3N8Qv0B{U7fIF0cNEF^Y7<=CQ z0Cz!3S0gz17w5zTgm5c+0rlH-CO5mmjs(-gd&CML${ZVm6LZ)JZ`mUdfq*!Cu+#&E zK+*yHbJhM5mOT?pN$1c#Pzkv}6!2pEVDMC@D5+cUV0#LPVpvf$6HvAs2ch61AbPTm AvH$=8 literal 1046 zcmV+x1nK(#0003AFaQ7nL7PAtyakUK6w)Zd!68s#hTrPZOYkHixFLj~0^q;|Wz)cH0+uuX|KE%N+yHRhrku^00;u6m!~qyW4?NNY zJUUF5K8e{w0096D016HjB!7Q6K8rKFFqj|=zAy`f1NcZ4hzX4F3u|F7VHUI2juB$LhYlu`}Lh)>;Xl3 zur?-jQv>6=tTMH}uk44{2M!4W7Y(jUXr2Io06xbg|(D5^zeD3lA`y^rzC?Ns% zLUXwwpn+LT0Cs}A(0&dCfnv(h-6CHC9UuV-u+S`s_pia=2}dQQweP`$_*6iFHcZK+ QC4wu|G<&1aKm&XPM7hhXLjV8( diff --git a/samples/h264SampleFrames/frame-0188.h264 b/samples/h264SampleFrames/frame-0188.h264 index 023d2b3116f0fd4a2e38d0334b244ae7831f6415..3a9e999b3e05db4913beea245eba210a117560a0 100644 GIT binary patch literal 1181 zcmV;O1Y-LD0003AFaQ7nL7RXYyag99?ih;r5HJ1_0T3ux00$gw1|BcGJ0CnfFEHQ$ zZ7kGmNmbi`7*ml%hpSRXtgp#5L$h81z*ncxT${U-21-#}DB7gDF`8cm#1O!e3BkxA z83GYgn4(Tw#shHq*3Nu8!i*5+O5$U4<@iM}Vm55RwfB@bw0As*zDK&n8v@Z-* z5^--F-xe;z?lGtU1ObE6qyb_&e5?i!KtkX5A;%CMibmA|;2B95I56}A3*g6Z<>mui zf}*GoTlawh3jon%%I&4Ku$hm7;OGFR00IG_0M7Yz0%ZXVLIip`1R{;HhFFe}Wn{Jj z7g8j>NRbZ*0Dx2xfB=9i6aWYb2o=oW#EH)YLV3TfdN`lEtagf1@oskzVbb}2Y=%eXE@63S;P_-P{1{MR=#YWo6VspYU`{XMK|hLs zAR%}GmCq(Obt&d`Jz53|P~yeY$%Cuu&R_rGfdvgg);vc;(UZO@{@?&$6hqMx?&|*; zKbTxY2M6XSD2w7q_8#I1bUBa|8tlE_zWM9wZ$H8VBZCOZvQleb3Ft@2I8g;^k;T&9 z)!-F|5IdNBD~%gnaj?hp#c;6ufI@YP$vn#>a|P{q00IGI1aLEq50&}aK0!g~E%AV3 zr_=;Di&O|g(AWR0NM~E|ay9UO<^bve@D+w=o`QwbKD%swmCEmYANY?6fB=91DEGp; zGJUxp=&-?utGEIkfB*miK>%(h;0CV%crX9}0YLyciMRo)z#EJJ00BV&6+&(RYVZ%a z{sKfA7%2ce2(eRBupQ@s0co5hsHZ5$ZNOV6)7>sc|I+vfa9{#t83ka6?%GtXM|_ojeJrhI0JUA)*Eh3~&;Jj5Y%%3|TC7{nica ziq=8*$)T=;opCD;gC3R#08eCJuiy6gm}f8D+;E`4AHSx2ME~2|EmQywYO~~!$utEM zV}f#kP_$G4Wc;J|*YHWbnTU(y|My@`JTtghNK8;*FV-~oIMenPom&Qa6qsG`Ss09!==;YW1+ vgA06Rx7#=0VeU;n+n!*F;J^;{m{tC3BmbHc@79Z3X5aW26Hg51@g4#qp~VGn literal 1196 zcmV;d1XKF}0003AFaQ7nL7QM2yakbe2ZQk-QWO#hz90txj$P|>efz!uKp+B}xG-zP z@AqJ_J-`g$DXYb|5(XiSrT?gDf>RF&dJLdL1SEjO5EM9x_1*XaG5`Ykq33~tjo7iv zFCi7`UpN#3V8R(NAQ=H*5C9MrfOpvG5iTr=Kli;300%9>D1lo7zwIR2-~m&>01ynI z0-6F>LZu7|D0JxLN8<_3BG6ldj<3WE6Z8NA0Llsw468L?;PVk&8$k6p+X4XN6GT{^ zv8#^d@TxuV00IF3FcLAxMUUPGPuheI)pra5KmZU4B8vbZL;(&eDl!5m_kc73KvAxh z4iP$V9pV_vBDgR=02%|Y#vBPJjX2|`CdyiX0fK}Ey0RTHz!%#PbHo4w00094!*1-+ z1J*i5*{A?F0E6HHfWYJ|)vm-^I4EJCft&^!2T|I~Gu6eS+NC@m3{Wlcmafk1n7F9b z;2gr5yyFuJWqul}v| z-T!^~ASlO)jtcNlouG=_fX<;Wf>9yxm@))n10y~FU;rQi79}N>|Mvi5inDGKGI%N%QF>`f|F{4F z0FgqRWi`R^MWuP-SatwG|F{GS0gG^Oq@+#8VKk^yi@XdVrO&6~fD?2800BV&ZYJ0UuK;*30003&06B@a0jt0p zi~s-uK>!s(ZGdX<54rrm;3nWCL7{>W0bqjFMD9#{8~@+{Ego=9J1FfdcL0-br>QFt z-}+wx4h#THgCPujVKZ0&eP>(+fnHVn4S>pXg0NEL3etK56lWPe&?Z`5#S7W3@lBx< zHSm7;)fInw-+31=`~-+H2ytRlhU_{*OC5iH|NF=dY~B}-4Z+{7;85#WyR+Ni38a=* z9$1`GLc;=S;atB5QX!%S3<_QVWO5X9vyzKaD2L1L;BoMU>4_hFng;2II^g5^f!G5L zUi=&$Sd-m-y`MZQm-%imP*ZRE&xPCW)IWLG01h{JxuOk~kR|>PfT2nNaD8q88&|*h zBwzc*F&`;K0%_r1$UG$gs=2K+nuoa<$>O*n&%L$cr##$r*dK?$?Xtn?g+Z_XXXXDa zR9p>k;dlM{2zY3ww*1AYZVppWI|i@w&>2cmO%0 zdw-C~bCd8nJ8BzN_Mf|XnBqIo+us#dFK~(s0Cc_S6l+-8q2GS1gk5_$nV4l)eg*{7 K!g!An;36PP5%?$o diff --git a/samples/h264SampleFrames/frame-0189.h264 b/samples/h264SampleFrames/frame-0189.h264 index e00595d937944c46e360a0aca7cbf36f47d33c75..b7b695f26856a1528ab4a9b8e923a751ddc26f1b 100644 GIT binary patch literal 1303 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 Kn0!4390s&?_+~c% diff --git a/samples/h264SampleFrames/frame-0190.h264 b/samples/h264SampleFrames/frame-0190.h264 index 66e5f4600218fc65aaf7daf586312d7b474bef34..b7ed87d920481ef121d1bc1c2f62d900af64dcc5 100644 GIT binary patch literal 1427 zcmV;E1#J2N0003AFaQ7nL7TuDyai7Lfoyb2&r8SkeE2X@55O_t2a)1I7_R^f+x}P2 zfB+y80*2sYZVH5z?6kegIE7#UrT_u~5j_9_05GwmC)jQ{@kkN^=Z3=U}UTZhDs39sBR8KM9X@CR#e-vGQH`@jYq#)Tq* z{D_f;hPSbLfZYaF_#=lb<)HtJrV@ND5d{b8MERu< zA*H0j{t0^V4s>pKi~j>03ZrJ6escDw?|z_#zXOw0098qmHWgDXB-T@Cmca$*Ecb2&o2>Q?fRTqIq5u~7n!@0=}Yq~AY z8Q$qXtF{1Sg%w*UrTx$V9kT!!AXTg?h#9<1fB=9-x&Yt{7|uVEIkQAJLXjLrxG}r_ zf`DBE5E_Pj04gd1!o8wFP3D6QiKSZ*kUdPf_x6Ag!C10BZ+eLH9$x?eAOK>i60a)^XuE&fATR|P za^sNaO_rG+zVw7a5yTP9IfM|P!#;VThi2o#h!;DeMhLTTF6JKpeqa*Hfc&vjPv6!y zRTyakM0ok9mxQV1Mg(vH`&BhLA^1 zgB(wAW=);RWl0VYLHUvZ8C?PnCL!Ip zF-geT>Nv%r#hP&+{ttiv5C{SZOL{mFx8!=2L|?}h*ZGoy!0f%>Pr=|6MBqT}C)BJF zD+k~PigSiM1YhYuydODW8PEU(1GAN2D6K~Cv;N&+mVzIgJ7He07{hdH^d%;&JH0=-j*tUS?{*06-W4+{WI= z+`Y=@4BS=O??unqK8Us%J;aaygia_SpkQOdO^kpryk{C38EUm5Ko(1OpgP z;G<2nIN~VZ=Z1JU0i%ws&vlH@fMs=w|C_7{hlG5hf{j9%IP`Jb4|pQDIm!6t96%~7 zjJVP|9KI0_^9eArX#BoI4Qx>D`jZFvJOkFeLa3GdaKMAxAZTy89UvSW26!i4R3O3x z1aLt7oq!h#m4(=sWKq0=N3e(>03ZXvFf4;%AFK?6gx~O5DYk|!vtn5L73X)&0qom&RBy)h$6cP z-vjsy004j>N{y2TM02_~v!RRwH3W0vmn0ibuJC{aFc22=+zgNqdRiUj02nCApwctI z023tq{2T!Q7yv;qIP12~nE`{)IUoQSyd)R~)SZBp?lb~;b0Ue4Z0I^}MZk9x&Z|fgMXfbM6?|UE{ zjil+W9ZlefFaa>Pgqo+!;c)xcuY_O&AR&4MG9*tUf>zpJ0?;FYAiS+1z`;TFM2$vEfX)42rt>LULbwYpufuH~g9(Gp%0|3aO8y)}x0RfjinvDzj5J%+T z5{YuOf&&BNorE%rVjAQ3^?(%=00aat3;`6+n#_4x&f=e8;k$|0YLy2 zLT-R+@C{T1NH8~m3t}^%RJg)RVe0h1;3Gl62oQ8EC;+K#T(!V1Y5+|-hg!la#Hhl; zatjiF%JHhIH@*Sw0z*Zh>MSMHvH%b8J^&$*$7ny7`~>(o0WJ;&#{>g`0764ms19M} z=1w~dY5%{&iI8koV81*GDlsQKqNqbA}4Nh{U~{Fh;%s4|2!M^4B!n&9c_NkL5>Ij zgeph3t)75PJa32;5EvPelM;Ov=QeV@AF%1a3UKK_OwBZ9q2yf-Uz-wej3NDQ5AZ*M z+uGf!Ky5IfWc$}*dfYI2V)BS-0@b_Vx_}LuF#setz6UV?@h~I^a3@{rjSwIrNF&(o zlK>|Hcya~$lDaTYK%CrG<8VL#Kt%uw9|#ED46A1#2%(?;0!iT<>V?MOWAi{DgmE2J qqU!6e{~H>O@Imw>Zh%1tUeIik2`t{Jzx*)!{shCs=kXpRz-quPYsjkr diff --git a/samples/h264SampleFrames/frame-0191.h264 b/samples/h264SampleFrames/frame-0191.h264 index 09ebf039ca0a67d8b58e3548c980eff8f3213bb4..ca876ab6dae3c51a6eacf9b74980f3e62ff92066 100644 GIT binary patch literal 1704 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 literal 974 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 XL_p8?>-Yb^|Nq+1FeaWC&%iEF;MPbz literal 1299 zcmV+u1?>6&0003AFaQ7nL7E^Myaj>2Q2&R`00zSVjJhNbA}C2?ayFj`=l~rqTL1__ z&@V}XPiAo+F!o}O9pFI`C@264)@!=}41wIB6^6(@2H*v70SW^{IG7h?vW7><#sC0; z001Cp{I`Gt0H6U)03^WBit-j}XGFJ>ufT{9)33@BTu%EZSGWKnxC9EVrI4Do7DK|q z{xNU^($E3HA!`g2;+C)Bs!~e7FR>yp5^xb?AOMU2iYb~0-VYawttI!(&RD#EMfyw;90@R*)Yju^?S?&N-A7&8EI*Z z-VcG$HrmNR;8d`jDH}ih7$X0MD_(CD!F^Q+3vtMD`KF8v#EjU;$H)4V%J=&RqvR;= z-g3FX$3}u;PF+sx1hrALnqXg8a6qfA&=P<~jJ2sBK|jzNw3{z7bNAnX26GAIxpvfw zdH;8$00IF(BP!QGyVke&ml`|z_;?{oED&_ST)`PAkxT$O30SO$GL%HAYw!aQb=}RH zniF{!+iQ`42#eGirjLO&3tnsk0BwlFTjaoqv7lnGhg=|Fr&(l~{?HgdBa}jsxYI`1 z39ke^-pt!`Vt)VxLvjd@c|OA!Ni6VU2bxtVNP(!eMg!z}#sLA#Zn6`4%{xP{_i%h! zLtX;Q(Jl&+pl}S}xGoeihqC%ocmF^bU@*f(L=ZvPipa4^M+yFsF^9MuXZu|f5`Qh*e1bJqJW=2nwf1^Me-YfeI2gQJs72p7X2S8$C zNI;rAgSu`Y0cP4x9XJ@FHrVgF;Gs_I3ZOWjfEFMENH+3F;2`371Of*LtI`*v1?U%@6vw~-AOi!u(#KBRcXvH-Y5A~qp%#l6 z%ogydtwOpXgo=efz(8XJ0UDCA3u0sbWDzL-pc-ZovVaMY)z^#w!oY2S94VsBvjk}> zMd|>SfB=AVNPq)lJ6&)vaA!L5q7L|L35mk5`+xut00JBs*!kTG;HZ=j#K3*H7;Zzr zLU;cH1uvba`^EqQ0zd*NC>nHs+7#@F0C+F}00BV&IfCrSKErPyr$Z4-vr*isTIDGXD-G1O-64)sDba-~y~4T7_K9XZ@H7a3};g z3Wf5~mpL?2M!iiMLvEy2b=i}RGTMJFT{s@44r<;QmEUhzF#7y|{}23u8)T)#l~3Rz z0%_r02?$CsDF^-mSk|$Q8{hXH3N}=qyv1FeaWA)d@K8lmImIxy!mA1=dKq_Kv{Z9Dqxr$H~Xd zybS{SMMZCL%=_x`TfU;;7uYqq`-uJEVN3^2t^M-g$I_*y00ih|zze1c>%;@1UHVPA z-7%^Aj?EAP(miBO5&iiD0$I(qTI_y$!|mZFD?6HA>lCPOgaIvVgkaD2^KHN1zyAyg Jr-bwH3zQbsJgxu$ diff --git a/samples/h264SampleFrames/frame-0195.h264 b/samples/h264SampleFrames/frame-0195.h264 index 7ca5b5a776d6f95e994d036be93ebed981b73a0c..49f0a509cd02aa86041ab755d8f2f51583f4d58d 100644 GIT binary patch literal 1152 zcmV-`1b_Pg0003AFaQ7nL7HG1yahKwV^`Faz4uZV@c|r2BQ*v92mk^BASiAIHsGj9 zUdv0|qli`j3Sa;r5fjh=5CaPuGJu4w*6?8zX`_pidyKqrca&22ejA;Fv@?JMh(zHt zYM&95n@9B6f&5g&U+0_#KnZ|n0SXmOvt`Jjwf^7$C6da9TJ ziNtT-KmbIrFgc^aZXXgjD}AN`nE(iQ1GTt6d;-1y`~bmBXi`2qkrFV_*7h$@2M^S= zAM$8*T~3wByEX^r*wu}7Iz$9t!V6zXVhlfwm;eX{?63j=3<>EP z5^)zJ0Xu6;P!imU0Kmo7hb&+WK2f?aec%xE7kNVr7kNvONRMm)$qFkrQBC`x0Cvm( zK!H}Us3K$a#Ob009646-b>_tTCeP|8Ri76lGvsYCPw<(<8T}A_$Hkj$zCp${WD` zXkpd3@PY;P+OfG7|iUm8&& za30*ufB-|*Iv|Y&dT_Zg!i^E_75r{AZh4$tw!Uw@u*a3_Fu*YW&*h+tq*h#?mdk3!s(X@F|*7!VX7STVQ&tjJ>15KCBY)W6^*z@P$T3PQpV0IfIP zkpc5?Ua8_JXYKEYzKASM{N4e~z zoMcFK+V~qYThLA>rT%XMY2khDC@>mIH#M8gIDtO?61NJY#oWZ(^LV`jIj`7dJSY`; zeO4@#|3ZSmvXUgJVmsHs?3+cJi~YtFZ%q(~@aYJ}rd~5zKL$iVO*}851rjV!SVsOk zU&9M4#)gIlM$&fofxOE|VWffuJ+_mB@e==*CM=-6r#`9w|1Z%Q$srL0ZTMs>W)VbI z_rM^B*;4;&K@(E>fdCd64_nwq)L(yC2p}A0I1kna!8sufX4iPcf(hur=q=U;tSSKmb5RKo9>n&GN-| SeO5YuDD%Hzf5pM&fN$V&m+S2S literal 1076 zcmV-41k3vX0003AFaQ7nL7G4syakbe2!;3%#srmt9G_q~0CxZZ0KgPexydmL?)!fK z*kg0xDS$yh;wg#BScW2cXsC(@E&vu`7)aPummQ^C@DOsv5?i7yc|^+vt$MLzfX)a8 zKmh`G#bKa}_Y1?a&=d><#7k<1M)QrbkeeGeW(F@yx07QPn zEKC^!LDn4o%!*zB0Dy>5cmQFB@0%w*Y6YPk`O?4w0Ady>K{8DF>pSDa6z~fG0Dxd> z&zAz?+8-X>(#L?2V272_4U-R|FT4-{V}U{MkmP)rp$WJv(f|os@qG%>iy#0A&w33` zKnMU}0K()Xg$&f$=uFl*lYjyzf?$9Xa<~K7zSs_7*$^%PJuq+=3JQQA!w6ies2U)2 zG^HQM{vGUl&Bmc0@hPoW+cYFF>Hagwl zj4%MWVF9OWbv|Smenk93pmZE>fQH5k#RGYtTg7ytp765P)N21w!o22oTE2GJK7>c|5}001BW z0CJK50s&7ofB{T)3Byjz-}?YO0w|9f(nms+y}xh_02NLFf@VHvc$&Ex)Z6~{DMRQ1 zHd+Yfp;{*KfEWNq1BK_hFI>RMgZg{{)B_MP#QfA|46KmY&%K>%(hkOr>+crX9}0YLyciKGFmz#EJJ z00BV&6+&qMYVa5k6d+hP4#B~I4m`zTo-ksMG_QSPgn*d>kg%ix8&><#5Dml+^mzsa z8oN37L<zO@lI zAFq5sca~5;?j8iw!n=1A6arVSGwVyMY-fo98j~d0(i?V!`q&F#$*BR3ioe7KSZmP$ z|7+p@K&(NK|60De1q6X&(!z5|13;dbY@14txLcA z{);#~i48>JE)0Pcs-iX3-R1_+lhf~sf0bw=Y_roS0njlYDA|T9ET4Zt6JUEJHK$>W z(cjj$f0YpbuYe8_PD5)rSw(01h{Y<6pqR`}ku|-4d>9i?3gSK{AXkOb`j~cZJ__(= u@HK+aK6=y+01F#{0D%es0)NlpSgy}xM%V^{=Tk4#?fcm0xwS>AAPxMHH@=ww diff --git a/samples/h264SampleFrames/frame-0196.h264 b/samples/h264SampleFrames/frame-0196.h264 index 77c81fcdee547e69fa5c6f810edcda4762efef32..c25f2bec68395dc6bca0b56410f9685a59c2f1c3 100644 GIT binary patch literal 1856 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 diff --git a/samples/h264SampleFrames/frame-0197.h264 b/samples/h264SampleFrames/frame-0197.h264 index eeed87ed1d94d1b0e4e96cdfbd7c5a53a3c9e8ec..1a865fa9db805b5c13d805764272a543fb83c6f8 100644 GIT binary patch literal 934 zcmV;X16lk40003AFaQ7nL7Jc%yahKwV^`Faz4uZ)5QCiGiL*4oKY#)N0|19PufxFg z$A{M(-`q0*06-uGG<2{5Ab`R95LA_VhM%LwXP5xbzpU+`0ssRL{0PsDfgIs@p@5J8 zAxjhaq%|e-`lZL;xWK>wKnc#Y2?T7v697a1>CH ziE_w-A_MvSPbW;o-zfJu{(xry3JFIrwoSf3C9~cTjyOUbc%n}pV4+|D5Jlhsm=qq| zWw;PE6)t!F5B@FYdmmNdjZ=UN%wjn07_-YPZqNb(5D-fQgRGuZT&!c2W`WB8{7e8i z1rk6o5+6ke0yOpDx{v?}9Do3Vk469hfyf6;@HyNV00;|!0Dx}ckOJW;?)?KH#{|ynOE3NPbA|ROzU{JneM&Ix-q>l{#^WRBQ(FMy*6IzzH9(X5c$gZwwfB--UZdt16-~bWeT}K2*fC#N$+248e;%Ee20Wk2+ zBjpl2Fb0D@Mt-cR!fbP@1MS0U2ly9UmqkDI&$YlAnN1Dn0@+3qK)+A>5tt+35}D>8 z;PB`Q0Gd8z11^~kv!9hbS-HS~|A`#V2CXfF=4S>H|F@fFKi&GBN>#&tdXSNk`*<)W Io)dr|_=Zf3)&Kwi literal 983 zcmV;|11S6e0003AFaQ7nL7IRXyakisNeP65@ZfvH_ylaXE%X5Z61X{Qjwnl9^L}<; z1|ow&!QiYH1qMI?vSw&WJE}7H2o50P`L82`r7)oqJOCr`IkoN%Fe{^5)_?oJ>wo}) z;K@n=1E9oK>0YudegFZ80J32Oc`+LaG8O2$pS}-85M~7m4H=Q(_^Fy3q%U=@{Qv|5 z3zTB$A0c{YSSJ(I`~(vmj0Du62!L^MMI2{7cmQVr0RU>`Ff3*V(8^tlGXMZVyZ{6# z002Uq00<^*%a~!VFeR^G^DTo75g{yncoWO|8-f`i0caQiLNx7-EI8x{eYFm?zi67SbR9APpb@2mpbDrNpRv;!b zz!(Dnp~@k^Wdazzx$FFw00+Rpt5?4VM+BM8kzm?u00;mI>53o(peYUi?*xosV7-$`MGh>;wqQcqmoRg9B#)Z-(3yR{ZQDJ*5^rV2}VhSIT(80ov_x=ZJU! z1Ovn2Y&^}D*(~6 zY2(ORyz0Eg&&Ut}2q_*KIu<1iqkyK1xCR1efI+}2#?+(daZoq`lYkR+0003&0B$Cr z2Co2kFaQ7nK>#_4r~#|M8;k$|0YLy2LTUhN@HrpgCP1(f3SbrcLx>ClI9E3ayMO{C z^4^#G2JC{{g&dF=pV%K6*npk?U&Z_Pj=)ZVV1E_^03`-e08*Z7EC5gq{$Tr#LHISa zKRlqX+_1YPxFrwvSJJM^P!tp^UB5#28DHT11j0_tqibhXD1b(VeJl^d{edv>j-uf~ zMt}!POWvbLSV3c#1W~7uDO28qqLfksQ29q!Uea)RU-9Ru4lnEjL z_rpUJUhYMd9`HvQ=rf=!FyAkTjm!2&*pQ^K8>~r|KERvH-V<(`w2ieJ#7^k4bBPNp^cDk`hVDr!5)Bs9Wk+!cvJzb0G=B8 z1GiejEzf_Gm|e!k=>Lfv&!Dc|#f@@2aUY&$W;N$8aH(4VjQO{yOvWewg92&e^Z1Sc FgJ3|vm%9J} diff --git a/samples/h264SampleFrames/frame-0198.h264 b/samples/h264SampleFrames/frame-0198.h264 index f1aae0335c8c719afd11638e82cbeb34308c1005..b2aaf9115df0ae2f3190ac27a02121cd55675765 100644 GIT binary patch literal 1393 zcma)5do+}J0R4UQX}&Spc^Ne`$Ye6>QA@Hd(Hab5lp!T8nKW(kC@Ps$%y`XsM%z1^ zrpLyT$0p>6(FmuNIEm~DpV-yN=2LoD%xv4){d3Rh{&CMe=l*l=IrjnpAbq=!>Lxat<&+cRmOb%IbUp61cv^{z5Qk{{FQK07X7v+8(5Z2RUTxSpjS z42Y>q*~IeQfq6)X;Zwz)9rdBD;i3(IpqH&g@XUd1f#>1SVpQ*eyQ1b!eP*fULmpr= z7Ux#Mp6~drxGOxHskwrsRQ zkK81oQ6lDiE^WmF9K?q6jq%~ha~1HJLIRQ%;W}`*c_NBD>#(lkn(x@)MfgojR9i!# z`7(>_0V$AvM+bTkq)c;CkbO-s4&8uNd-~w_UbNW`KuAfEir^xm>Xg#iMG$KNd1S@` zUYj*JoN`7Hz4D?J+9mAUE@&Vm)#aRJo225hG)6wllCfPIiT*8z5I4bup)#aPT(U;r zS!#98RjP;AA6Q>q-w=acbZACUIQ|=!#mRopxPq?Lf{YQzvLNO4yx%UOvhl z?zOF5uA72{V1m#{34HK_|E9cMna~Ol6T@doU)PNfSpq{T>{5kyZj&Xp?R7-)z-pvf zlv$%%F?&!2551RUj0U*a?g;kqLr_2f3R+#lC@d)tAqLpK0x%_PmYy?kX}jXf5eb?sitZZ1{XZ$IrX|FkS48!#Wt&kQdHf+$!d$Zw<$iXV%G((#ob6 z{eb~oyrntkY`D}O|AEfdUn)J~o$HYFMLqE=zyrK690QEqtep`X`;%n68s0HK2C(N= zEiq0Qv_9$lR+egXLE^Ks_k5CYDw8sHs+Ywds=u0|?FI}|;r_*GSju_Gtzu|uc%iAbv}&GB4JFukcltauH+@=J;21BDDtywX9r!pc zhEXT)T;jTVHDox6SzvztkWf)QXL~2+lK5dGfWRAwh-*YcpCFnA$5fYt;5ecUR1C6Ii29dODjhsspOxt|;(_h=A>ZBTj3cwEX7I!aCCnre7Rm)CPDqD5V- zT*(^Y$N?q+-jjZ%!-)EHklzsZ9G40mW8Mr$V;wxI5@-cKPM@GM)bEPX>{kshCx0ng zbf>g()mk#*@++sMr$2_J`(Ly$N4{OjLu<;aZMc9unVzUH?=0D%K11q{m@W-0!o~p< z1Pt)k((nLE-~oyOND?SAUN7kDr`Cw1Si1+P^BXm_X^z}%Omy24{R+L?8L7~iX>|FV zE!P~5-lz0+@APsW&pbFguT60+el-5(a|Fgu&Y2GNOjiSrFsbCxp$l?m*WKAs0efGE z7g&8IxI=h+CifYlQxP5?=<6wd>q8#gKeOZQo*dhjWGUd`g&A3eBbWpn!r*S<0lhr+ zoTwLK7j1lQ`{!N_G+r0Icuw$we}kH@B6vhb2zryXCCW)!cUeNyX;ro28RMC9|5z?F kZQ-_C*`Qqa&ZKn3$}CySBjV?!|F0pMtL3yNgR|_v0bh5Dc>n+a literal 1284 zcmZQzU|{4l01}R~7D(-3oqVLRA|Qx?gF`~i*lNou0q&0%ZSU1E9CWz2z2xw%Tc13w z9i0srzRmD*OyqT(_J-lsN(RT`VDp9s1_!?Xu?;K?T`|RF{OuQ1yq_~Q_((Xbu`t^> zI50LFaDL}`)^_y4^?lQo8MwUJ{>ZN=e_Q%*1>@lY1|~)ZRu%5}s}&0mHTClNzBjaV z@fSL<==JL(^B*vcD6s zH2;y>-eCO=b3{bX{d_T_-zDSwOOE{#FPc@C?Yfn)POzv&<@?uv&yr%Eh_pVpjZtuA zP)rjr(JYvCs^pjb&(d$zH3AlGb0q}sEwom?_4m*&lYN{n?S~Rh2zK!F{9pqHoZbSF ziD{2A9HRc+(q+>#D9~Q>YI@a!ulWrQ?IAo09+6=uIA<41$htO)cz$whdCxe9v#qOQ z<%+%*;oH*#DuDhBZfFvB4G8(&bo=0p2*&6C9taf3OlR%zI4^d^T3O)Hdp5&kO@R-N zpO~{a`e5>ZU|_q*_OYJH-Tjp1s8ZmQA}L!5F*%2bctb^}uP&1f82j4{OqjQBW98>E zv=GeOq0O2hecpZbwD?;UK*uUMXu@BU%&~$cGvj8l0j`q^<0kO9UpY>HiIi zwm%F9co^AD(&Bo&9^Cl%M1iA_fw`r_u0*SX_w|8D2DKNUl**8&wt{UvLj^e5GFW!5 zVqASdx(6&H>Xg-x^}*wSPh*B>Ys(JC^7~7UAIV_+=J?H-@8JVoF4ur~uV$$W2D0;n zx|{l)Kg?OUrJj$2VSxkd63%PuKbZA$d}ErR{`~uaov$}4&HZlw!8Y@prRDE4o2IZt zWf`TZx;}jH?8En@*2&?2!~0+U#|a+veEfHuRoV5Sl_Uf6?<2>xc{cC6!*=5EHP-yo zT9c+sv9Bm@U~s*`z`=CMvBiO*G=PDHje+Ib`i|D3znq*+B?%25mOW}{`($`x`SZWG zxLltlEa7@w{k_1v@Zps->-4|>A2&&@6}8!b36+;tP2AeR0|j%SZrhvPn-Pu@xKaDW(A`~ zzS}P}-jX@IaJ%{c38ydp64X4B+{utS;mD?l@1as=oG-Ye>#s5$OZz`BUdJMO>Vb;J ql1;1c*VVs&_aT&1*!#ir)?(s31NHC+w|c=x_8r7{A6X59n*jj!8evla diff --git a/samples/h264SampleFrames/frame-0199.h264 b/samples/h264SampleFrames/frame-0199.h264 index 2d3bb1b79793204e8700ceaa03286fc403f29d76..8337fb1febe132cf0acbc8f3f03a48b783fbb67e 100644 GIT binary patch delta 1688 zcmV;J250%I4e#C^03tI56^!DeTBzS9 z073q~0I@10ho-+v>LSY6!(au22=?75|DVa1+aUj6#t=y5uc{lg4)nRSPk-lz6yMft zt-grgoB;qCr~VhB4OK(0-f{q8O1QEdvu((k0xFQ|(Sjm>rj}FmY0aPjH4XVy5mRv= zxG*IE1PET{Xbq#U4n4p0z6c>GOjv9PK^_1MWgCGD1Mt}p!oInNw`vp-^BVZ$2U<(rX z0Bzza2kGN~TvOTU*Z>FurvL#0Nhk!!84TTB33Ei;mQZqMQiQaAtz z0HWt;B_}`sXoGQsNa~kO&pby%bQusH0sw`$7D+~VQad(yQ~z;*1;AUiv79Cf?fXff z01ya!fD}&T)+_zEj0hQdv@KVjMA>iudX|I!O^)k-snWSMMu7a<8=^29VxfB&(cbf5Qt(fYTg|I+#ooGt_bhY~QD004k3 zMPMi3i-Qaz8ka^awB2m zCc=uB3rK1{@c4583PdR?o1&`IqhlQuF2)7pK+KM^e(nIqfTN}tsW3^pfElI$tNLFk zD+D1S08kBs@t!yXA@>6oP@OEg8qftG5o-~D1h027m}y)gM_m+0obmu4 z{V|K&pAvWZx@&2pGs3%ORKNj%UF!w9I?$xTC(4I&-~VedJC1n8B&nCBfHYLCDN5~l zFa#xQY3cXh^7x=eg5aPOh6Cd-qeKJ%@RbV3Cvhov`|TiLoV>%yIZJA<{lY*P4>Q1j z!>J(?YAf#(U;x_X0A-9nB15e-GlIP+JWFhfB$c=R?F*h0L!d{JS3mp06>c!5k8f%e zQI^u+fXX;>9V9q(wuwId2pD< zOkG6({BB?XAO- ze}1zY|L(r)XwUwR^5@r^{krr!?J@8CMwk4)V+2Dg2&4K97&LgD(iD?V{100=13QEA ziH0lvyZ|Saw~)73@CM;i#N`zNKJ*c<0Ad~wQWub-uIs3JLjTeMqUs$hS~A25;YL$( zmlxh+@j!3{Gbvlc2>5g1%tT{<!s(Yk+F-NGHqq3GgxinF6&0 zLjWOio?2Nu2_p#)AK&;8DPn51_CM?|i;Mu}kn4C15|xTRvXo$H|DPJFTf^c3BMkYC zT%~bW>v~r8h8~zDVe#RB0OU_PMwm)gd!!l6c}j5=A6EnXUqdw#3=ub`A#ze-|8IL( zkeQoWBZQaiIXjFrX5HYRm?k z^k&V$74HAHwR{7?eyI~@YrzSr%}gSlpfoK~!+XKBOZUm)oWF@7MUZ$zEHfFJC-1d_ zw#;q|0!7_`?0Be1C9eK6@BaV&=+GPi37BSZ3Kz5P_cVqN_!O(bmNf)A;O$gO|IgpI z&kK`*1|^dp1_(R&BtN_&QX0!w<)B^2F7~a6-oxSq1Q&V(XW&l#PCw7`?*JrSMjveN i`w|Zq#RSI>ckX_@Gl$*(JbsfP1|E}-1`Y)L0YJdoE%6Ef delta 1626 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 diff --git a/samples/h264SampleFrames/frame-0201.h264 b/samples/h264SampleFrames/frame-0201.h264 index f3c1462459323f1b523a6ebddebaf259020ca01b..a3b523d1f79be6122e4f0da4397d7636c130cf20 100644 GIT binary patch literal 6653 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 BTIm1) literal 1039 zcmV+q1n~O+0003AFaQ7nL7N~NyajI*7LFtANDSic4*1Hlu7c1Fm4IHr(>0(aUIx16 zA4d)#SolP8G62Q`>pY_t){lD~@Fa_p7$t!x=bZsS7f@HH99f7_suTKO1|ow&!QiYH z1_nR@vfD(g+9$w3r3E8-@`T*SnQ#5T3HVpmuv3P7XCy!Upxgii4-TpT0RgZKf^Agi zcZ+?%0hj;|EK|D^o(FM}W~`My4+uqIqJ{`s*tz1ED^RV{&w2nr#?;B+2Z^yEq$4n( z_#rV}fi-9u1B##fok|`6+yD|Y6fEonA%*4YOaK7{@Bk2U009PY0R+W>LJ2^6z`+xG zFe$hk=R65q7Fy8)7R~V?q&{BYuK=5x`0T(ubS!c;*^G`SkaiQ{3O5=6Gr#~QI3EwN zBH+OCgIeYN4Z#eM0Qg`8Wz#^|L~4b<|M7rs08pKy`I9OO{|XhL2*h!wlEa1yyhD!9 zRX6|!pa4)ni>9`P()hqG5D(!XRv;!bz+f;qLTG9@f-qf?dyIDgJ_r#>?;(@nT*WA` zYij@?0aXkK@Wf62`@)nEaqgA<$OaHfpHC2OB0A3~2o-;$gjx7us{t#Fs&P9Kks(LJ zx0tX4|MC`af!b+Vw~@dAAV3H}?wJ4yF$w0HLLL0WM>($V@4N0JST?Kd zNVnlrjX<-ZDPy?QpzNTtZV&(n89Zo+v(e1-W$L&L6Eq4WA5TxBC9^Qx2^;{Mpa1{? zK>%(h$Of+fcrX9}0YLyciLwE!z!gdXG6sMXU}y-1I0kw2KoR|QYUbK{14oxo<29^{iviqObj2{U?;%PKZgi7hC&bx1ByRuV;gfxiWjGt_%YfKbbNjzQVI?w!Y~Cu-zrbxh93g3H$KVNvkI(Ac5)cK6VQ_Rs zVtv*~(0{xSn8=2rGJ?#%{h-0#%peBD5eI$Xc49J#%0des|MxUrA`#2>(+Nl?D( zkG*505;{(dkN&(83Y$I$dnr9apvnTt27n3zB5lwqfCF-dC6{wQ-U4CaT>p?@Pz?-x z$mL8MM7G%e)rBt=&|MdnO6F>j}0YLy2LTrF)@J=Vh J_@5KN8a#(Py*B^= diff --git a/samples/h264SampleFrames/frame-0203.h264 b/samples/h264SampleFrames/frame-0203.h264 index 3a1239c297d4723f3f48b843f298e969eec91eb5..85b495b5e7944475a80bd705284ac92b031d80f8 100644 GIT binary patch literal 1742 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 F2IIS9=J@~s diff --git a/samples/h264SampleFrames/frame-0204.h264 b/samples/h264SampleFrames/frame-0204.h264 index ea62cdf28c5d4e746390a5873683ac2218109f7a..fb810f86bf3d904f8d8eb854487c1741f9f6d3ef 100644 GIT binary patch literal 1205 zcmV;m1WNk=0003AFaQ7nL7HG1yai7vV02P17@qm2G(am0^FnN2ucc>(b8+g?m9SHXE#feKAT^|M)zPn~0rzy%?>3mdF%&~;VKL8i5+^5Fu{UJ)u03W94PnQ3@1jADR z;_)i|ZZyt=>2M$;)E43j>TKMZV_*B20^nP;saR|hkv1*>0RSbyDZdAGzw>bzK|d}J zBvRid_y2&JcyAXC8FLmDVNd`Wc9E4xh)ak9eCz|9_5h>&f3zRL!{|SIak$op<$wb% z86exK9g5-cK{93t0bqAYunJp2fidD@Mve^+gbpenn{f-7|A`rZ0w5C*2ow=;gOc)L zNetQ_0jvNJWgOScNu-l;7ak!ANE{}qbgd~VMvh+%$JCD$R=y_n6(CIjIC-!_Cf`Bt zjSxTq7+`(|?;`bRip8}oL;yq9I?U(h@Bjn>N>~F;lw{M< zJg^cK002Nv4$#1;-9>Kb(F8mI8#YZ1j2%3I34#azT1J?kDHYja*npe=|3G#0yGg3Rd4VxRlI*KPUDF3pw009620EPfP#2ljF4mtE=fIR~;x$1lC zSeOZrGz3LJIIuE{_$cST0A>2xdF!6QcA@-25E$>=0I3hd5zsiFfNIIYN<*FWA71^v zn=@d*ns{#!?MlQ2j&IwUnC1ddh^z2q2dD(ZAlLA89Haszf=xz$XZK7y5TxCS4_ zg#ZBp0B5iX70LwE?j3d=Oe0qSjwK`pNGUZCsL_CBWVf9?U0 z^#B3<1N(85fmf2Z{`7JjfDY!uP646Zo!N$}D~=~xIcEdWj~h{pYES&X0R|%h2STs_ zbP#+Et)JrvoMfiJ0?a^aJ`6TDJt!G1p09a<5{j|}B}vz+a{u9q*PF#KUsXZE+;SYg zX`=%%BRH}#(bHdRhrd9)e2+rA&_w%zg-3#7PF+VT1vOQ)jW91P6yS@o&>Db7jJHxQ zGynYHM&xX~xc&b802#<9lI82xG3Wi>kN^k;0E($y0`FSq-dt%H2Zic@(PS!4fR({M@HrEygmN*KX1*>m3AoSv<9j2zUS>00;trFm+$9N|U&Nb!|njUP+_!A+XOreE9}U@fC3#9D8zWE?&zbHasnS?IOnFz6QAbthPY$^0sw&k zxrjwuB2;99*6-di=!XCS0}iX)03=3pBB!s+L{3ex?zXRh03ZSgWU6p`^x~Yx3F(-{ zzZ(AQHe1vGaBfg5d`k1)e@c1afEZ-AA^>DZf*j~$u-FIv00Iyd4N=kgwg1;e-v15n zy|Zj@)zw#r-~b>76+zfrh=0r6U^5eB+b{qG1V8{lOaL@HEM92;071b}0&}r-A7%>$ zRbrX+0GJRII-N%EQIE;SuARYvCNRxF;UH#qrt1&NrXUy41l<4t0YLz6CfEkA0C+F} z00BV&If=FbtH2Ok1xOwYZU7ZQ)^}!BA^KAPfT06`2{1Sd9RM+gn8}@XN=Y*_5rp(a zDGczYupEIcgad*uMtQg)(-i-P+Pns}z@zHExXl~d;5hpMP6mvn=r{zSl;S76bjLa( z;l-XOq!-L{_z9T zj|xXDhED6w|8W?l?TJ=B;SFI!@$V0N-WxV>5kwLL+O@Mwz}>Wf88VEr0$;6jbdC1yF{+IY;5O9d75>}Ns20%NLSEIfF5nSL%jZ5d zT!2m?b_in7CEvg;Su(&g3RCx3HTHn%JPD_TaURsHKtN$NyIi7xX=ox$t$%@9KePrz xoM!$8qe$?;2up+f_J0@s(1A8`ZKw!mJO8+C0Dbd;(f|MfK>!s(ZGdX<2IJ#h9L@j$ diff --git a/samples/h264SampleFrames/frame-0205.h264 b/samples/h264SampleFrames/frame-0205.h264 index 71ef6ed0dcc7a658e8f0a474f829576375a32f7e..e42f807bf390a81b0fcef00d74ab691049f85826 100644 GIT binary patch literal 1293 zcmV+o1@ig;0003AFaQ7nL7IRXyagX1V>CyDi8xP$OyQt0@rkqm69xy(LLU|-V-#=y zlUP&012+Ga^WXpo0PqJOWs?#<_kC*%MR0Ba2SKO?XGk@5F&Gdn1 znD^F4NJB|2@E90YGO05F(pi%Dd$&_W%Nba~f-iOT$)O z%zMT=C|}BmPy|LIzVZMFmIehZU?H=IO$o2uU@}AiLqIzhgSWtM|Nnq6r8IZ^X6DC2 zV%unmI2<3#4dK)_UkUS}AX()BoG}NynS=1+T>cY{mLJ9dd~!d=fb+{U7`_O&%hNi1 zRfS>$N6$GLhwbEgmjLT-yk?>Re0+GwpDm~ z>S4o_02M$P1?F7Eo5Meb!yg)803Z{mfFJ=wxku~MZcG3ZeZt^1m^=psY_pL7Ah|}U zxY^(#XeO|QmL}4dbq7JHql%55q?^q^2W)@{F!+pUoG$FuOQ0MA#W9DZ4Q$aF zkTN2Ow+m<}1<)}8sAs?hPQW-1W#=={;F~fj7Q`eAQ*!;)-*^B50Q3ZS48s!0S}TA zpy9gu|1u~E_6UO*=_$^=v;SLuWT3D+FLKlH&;VeU0}IN1Lc=6r`~jkrp$h^p)F4g` zn6Mep00aRm6(Ccy6TSjN;9*!~Z+)_}2gm-rVq=P)Af+r%Qe%7q8?;@>_FW@9D{I3* z0uhKX1cmnQEW!uDSJ(lI=~!d4hU_6f$m}HGE#ASdqpySiFag#9@H0)}GzSVSbN~Pd z55xHW5CJ401TZkw2plMQXlOhFbyz3x7rFlN!mTJU1UUcz0YLz6CZGnd0C+F}00BV& zIf^8Sc9Q|$q66qb|eMfsl2+R9GJ6}Pg#zOy1yCU@WSN3r58*O6(fxmtS{jclm zzpr_=&ie<@@m$~{@|$;Hf0fcTi&b|k{rh+=SnNscGfR)p zuPMP$f77}n&A-3oQ4H={poKr@fiUonU!*F;oKRwWz|2qs1IHGi+QXW8H7%KepZ(yE z>M&Gh6mMuie#peTeJ}pvMEm<|+`N73O9E)R8uM_c{`JtM{R{C%@DlsAk%6FX8r(-8 ztgZh54~?>+{g?Kv4c4Torl;3b;VUStgM>gKoA1NJS(~vVmHX#`Fz}uu_<*oIow8(O z;W5RU26r>^5oTptnD4|&7!U;i+$45y$iJl$5xIl-6ORk$;BEGZ1U@*f9zm1x3iXC&<(aaxCCXhbKrHOrjh!zI`gfJHw z00bBiOB^nRaS}6l$qaY^5G4)_A}!9zRYD;X{gH7Awh$nPAp(V;zWof$0H+OdSP^va zmj&Pn+yH^xXX)IdofF3VU=RQZ94I84pgIth-d=(;w}vx>0-07sMNOi3;wYXH!|?zB zfS3ja=W+{os)QMtixqU^U=3K@biG9Xe(?YRfM8(Ymls@Qf%oghdE9m6T#-99?*t(S9IhxKCZ6JqZ~-?!0003&0B$DW2Co2kFaQ7nK>#_4xB;ucH?R|6 za262Y5_Tx7=vfiJAN6GOM^h|M>9$#m%qV z;$tLl_u;uY@G4r*{ri^^f6lEtuW$YW4>1O(x=ThM{orvRkl7a)(O$NA6Av4tFi1pD zN@=hLBS3IWacT@?d?!V(m>J$SVZzh@{siw$6ByQEgD!x&<=+_$kN@d@ugWCL)#v+X z-~?pp2D|b!_x{^l@QI*3tug>p5alH)9v#2?nY;iPkw~>ECZoiD_yActmm5b^XZpYf za^Bj;M33|SU#%+=SD+z!0*HHEd@}*^%wbV%h>!dkbt4W0!^Yx1;sQY!T-qjx2d%7z zh%k*W_)cVXmAKc0p6Kxqg{}g9e9jm9oBuC=Bv7OM*gt_d@Sc7LNB{r!s(ZUAcV F2IB|E%5MMw diff --git a/samples/h264SampleFrames/frame-0206.h264 b/samples/h264SampleFrames/frame-0206.h264 index 417c680b17dd8a031526f835070e20f3b3127a2a..7ab7847dbdc796acb6bd93269f7903a1a2d3ba6a 100644 GIT binary patch literal 1609 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 diff --git a/samples/h264SampleFrames/frame-0207.h264 b/samples/h264SampleFrames/frame-0207.h264 index 9e815eb2edf1a6fe22d8fd8ed61b1c7e4306d16c..97e718b652ca7e4172deb9e91358b47de59dab68 100644 GIT binary patch literal 943 zcmV;g15o?`0003AFaQ7nL7KoCyak6KLxd~|y-x%n=QrYP%`goJ-~fODfQ2!y!$Ind z46QS_vSt7PfB*_u$zTFP1`El;giMkU@B7nrfC&2ESnU8H07o|lUxmS&;be(`kN`&t zd+dNRovS3ozWv4w02z$58Ugz6!oi_`|J2jOr6U}=yjegVRDlbr(q5-XhnNi_umF8v z0%{xYsE1Um=|BHE^&9=io<-7o1V-baD zr5Z^?c7PBg03ho;6I{}wWa3;Y^Sn#|Bn38rz|gG^`aVb7df5C;fI^RzgG+?0Ae8#kj4cI_B33NfrTV^ zZ}*=1ObRg;q0Apc7+e4>Wv&;;|a%ORtu|EL8>8V0d%k&3wh9Xyzl0>0FC>R$ESt#=;MPB|A<&(XJj38 zBBfndqbLGjRc!aD3+?!K0b!!IZBVYlvw#)M(sAo-AtSAKSd;zlfiUpSe|99I0@ys_ zvm>*;t?)N-hbCG%2R$_m1wCG4JUR%&Pw}PkD3l?XcL#U_nZUYmj<_d44&bN+Bqn_$ z06j_1SbiPwBZIDX1UQce@0cqUz1H%tt!e%&Lp}kzth2lE9RJvu!}a5N;7vRupU=P| RFaQ7nK>!s(YXEBS2IEa|l~(`& literal 915 zcmV;E18n>N0003AFaQ7nL7TuDyak6RgsK2Ip8`pOPzYIWLFftq61XWX;{>(OHiN&W z+MpI@4~@V92A}}|pv0+Hb;ymjx%?x59smIVASfV3J(1Lc$vA}?)m|E$00aq!Qc?n9 z)=#$G5+nElfElC6Ve(G{K)oi}z?o1nmHq($hyu}-A|qS~bG1W{00s|%P1yxWfS3l8%o6|jWs%yh@8C-0$}pf40{#-501E+>9Pofl1C%C1L@)99 zL>mO40pMT&!XiW)f-#kaxKPh{V5NMGNXq1njr%VfB^%)$UuP(So;L6I{~4NUEVN=DJ=!4rV(r?Z=oO{ zejv(W6p~3x4q+s_!WE<#Lq)gM2q@cXcnlF(3o6J+qPOSl3(LLW%?FpNghFl2iGTml z3;+ZGj$lIIj|Y&o8hD0)0RaMy_5}Y}mq!aspcmQBy zo(V?-O}wlj;_0`ydcXicx=UaH2mpn|YrFt}QKbYDdiCjW^)rXk^X~z1_yR)i68pF@ z{B^B!!(@Cg+*p9(D0xn_*fS}Zr>Q)X{s5bx0003&0B$Dm2Co2kFaQ7nK>#_4yaB7g zEywcs36MDep##Ox;HLmtJM0fLkO<3hVa{+L;ypg14)NFiy=0tmCO|?Rpuiz(>3a%x zId&05GBpw-d60HK0!$AAAYmBR9nuC`!aM(kV*#jSK>x!rHow744>8UK5WhtCz$g^< zVrqK-ybVUQ$&hSxe%`=Lf!I!yhyQ#ChqGee)nC501p@BAb-&j@c>*>+@${N=|83w( z7AU=h(H4>KKfp{pE1&ZT2?M|YKw5wU>0v+s5Cq^4{a_h5BP>=9UA&s~$9xOlzTd+0 z!g_RZ!AMP82zViHy2wi4M{em|ki;O*`@3hpw+yK=s&9ZO8&@KkI~~XzfCgZr8Zxx@ zvoJ_T#5QY}@B9geg>(C{B@hzuG_56|W&XgWC!NmfclYdA phJ68@)@y5(Ml<^=)f@H$z?yj6{(b=wfB*miK>!s(ZvblW2IGubg^2(F diff --git a/samples/h264SampleFrames/frame-0208.h264 b/samples/h264SampleFrames/frame-0208.h264 index a3aaa6e123eda8afdfa1c18947cfa29b37cea9fd..377f2d2900b1543558f3c69064e5907d208adacb 100644 GIT binary patch literal 1196 zcmV;d1XKF}0003AFaQ7nL7LziyagvHP%wzj*^x@(xF&pGod#&*zN`q4{I|Dp0{OUh zN_E9}@IBN54HYAo{|JDH6ixsRIM@t4UwC#tczRx8zyVoik+C&Ww)6uEawxFXW>CeK z`7a6Vn#BO1Gt=lQO~}qlQCukMq&6+8ZO2o23egk%1`EzyfJEgoO9j>t|Ex&C`|q(ZZ8swlutC1(pUumCeBNct@c?CBF8JO z>fWyo-xCJl-`++gK;ZEMP zLr%|}&g|ib3}qR2kNf@n$O;X1_kR2D*3{nrgYbZe;KFijl$z2ZJqY;+3LvdgIJ%qK zyaKSo2XhaFaieRlHW>bR+!P;h2u`tiCz)i9V7;#Z06;8&gabIh`Cp!+$b<~T(0-Q|Gx=<0Du4}Nf54# zpKeF`EHEPu0Eb`z00BV&ZYH<}uK;*30003&06B@S0jt0y5ECGD2!Wx*%8pSaMsHtn7cN0cCy5nt^=#?w|jEXjN5zX)#!z_pMZ9 z9|&W9pQegPbznsoMCfBp-Xq;aPD*g;bgBk}&hgRWA%WJrBd zZ|i^W{J+U2-~+u`={y8dg%dw1&#)UF_Rgq|EB{|Gx4#4b{sL*?eExm`V1NJs0YLy2 KLTi9(@CM_`G#={! literal 1017 zcmV;NDSrN=j5_a( zUjm4sK|8K$k>9aDd4t7KgjtzXhJ>c8fB+Bz6j)aDACj(Yv0ySA03z=(IZQns&rthe zdwGBWfPxSKfL?69(H1A7F$WmT9E(uDCHYSf{lEYqASVt%OO)FKNXc#7U=RR(T#=0d zHR;31Zwo1LP6H2u0l$e>CJ#Uwit~qrF{esU?z?~B5CAztjySg>k|Y;okANYB?Y#d% zid4zbOi8>GoB(8BU~lxkN@KhL0|-z^RSp|T3us-rKK;O8pw-Hwa*W&>nc~tv;fh=S z1m0rUaLQQ-zno4i6pA1KHWHV@CaSxB0XQfto%7Qz9*NcK=?K0UT;dYbU2QN|81;x# z-`D$_66aw^UUSvL1W*DNVFN-}2`r~ir~i|jyuSnvA*V%zH>Xa-_P=nhjWO6xfP%JS zx8MK-1jG^o3ni@{5t5dGz|cWx!N9HxT8Lf5*KdBH5(ISd=n|T%+#UdYgR#T>=fs!x z|JlF*Hvx`$IypKQCTJUlI za!x)YKwp&J0S6=iK$ft17C~xFobnA^02_P&0s;;L<$oRxjy$EkLI|ja3i8fbCJ+Ek z&;S4dK>%(h_y(^4crX9}0YLyciM|1=z$6e8Aan?YAOcLDNuvRiJzYHRHMk(9%ej)ilC_vzL5Q8(PIja5j@kIz{DZ9`cwZ~veVwL|` zOEonSo~Yr3&a4lAM}zD4bpL#K6Hf~3p&?8R8O*4ofMb#&0L*R#eIin%XIzQlUIJte zfe@fYvw+elZ|}T*0}&5_7g1lxPzE%9ZFc+(|M_?mPYUay0V-7ccmu%Xy%d)#AL;;n z%hRTsff_e=bbtT;;Jdkcl1z4jf7Yrp9spV-TPkm`PyjuGKUH31qCwHQufQV397z7T zsG0xpaJDS@Q+;Y6E;BNDza0*TDaEYa5<#n`PjCPChg^;TJEWNIPmML`g3%G&T;LlI nGua7Fa%8`#&F%m1|Nmf3JSU&ez$_2|00BV&6+&--YVZc*^=Py9 diff --git a/samples/h264SampleFrames/frame-0209.h264 b/samples/h264SampleFrames/frame-0209.h264 index e10f3e1094867d5c6904d0b71013baf4e3ccbbe4..f7a35c21d6b1df206031e5258fa425548bb81f88 100644 GIT binary patch literal 1435 zcmV;M1!VdF0003AFaQ7nL7M;?yahKwV&5#`<^?K#JHlrlEw~sNhVbaaPz$O0o}Ea< z3KPHr!VC0;ZCmt)Fa1M~hiC!<&#dqqzH5w$j1_~ZOn>T{J#aT6C2!n!=XF2C1D)%U zjypR6Wp!Om3@YEXQG@m_$$bB<@9TZ}?G40FMf6nV|IY)3R@HP2NiJ>rU&2}v1R#$9 z1~x(?in~Edd)1)wTnlOCh=;%T0zzwSXS7%UuYE1ZA@+Rg5GMcu1z-RWZvYD> zaDW&eRCN*x4g(bxVd75!6L|*0^x3H*q$ydz0a15DP-Fi05Nkvp{;5=2<4)jk_z(#82arjARos^_d;f8O3xV#^ zrD5<|McA4E0RTt96x7g*RsWlbf()FvJh6=;T$lfVh1BUUQ>5kmCJO-wBN7D>{s6E* z;J%_R00I+{fCAj0g+K5ihu34i-~eIUYk5%Oq*ZF4?gT*ECMgBYbc?`DAqOx2aR2~- zBMJnt6)Dma0rQV^PyOvP2pnNuPXa6*C0*bE2n7Z%fa-W4LwyF;10$##gV4zX%TO>x z!5@ND@9#{&Q0M-BFaW>-0UPyD45`L5X7BIdhzJo#IbCs-nS^*h04z{AWFv&IRVuh? zp!A2qA^*S$9HSIM#ILl7B)aHufC3;euWjK&25C)h-}it3AO^S?89xqLDqcjE zn)Ubq0syK3p$ZH{jU!5t6qdjQRCWNT65t#sckKtr@U;Z@x0}y+7`(6mWYLlhyP4Ro zAE^Y}5HJUTzY=5_yoLnFf*@2V@Bl%O1Oer3+X79BTE*ip$7$u5lE~lyARuhs7Dwic zY`ErDAC$g_GE{AK_w2#^NCbxfL84K|G(E8No6Ow63;+ZI35ulvqbLr*QUV5@v~z^S zl5I@{_O}24fB*pHBG4?U0%8UO;mNfTZ@3VHegB{{z5&2M?UO?RV%CD6C2#})1!TQkhGH7~gbLfD0umy3qzhVcl~=cb z03ZMiGT-$NjL3%dJ1#N@2ztj^l>FWR0DwtL03_K4O+6l7fg|PML@&UiDvvLl@vvnN z!jYmr1Vn-lXw9i3W(+>|EHw{0W+E~F_^yBeAQFv$2?=Zk${cI&b?xSPhNUT9SP2e* z03b65XdpTfsk90W>9i z4HD6}<@^@*8ToISqqo-(K_gUpzCSx)c`n zL^BbfX>>#%_sjt+Ey2Pu)@%VZ@W03u4@%4{fa#;|8@_x<0PigW)t(S1z$_m-TK0}1D)=>yXG3Q=FFgDUC@ p4*%-F)8pg01~Tl!D|>L*fcy!khI8-@ga7~mK>!s(YyfKT2IDDHZE^qr literal 1357 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 VN1uRyU;qFCK>!s(Y=CO;2IDZ|i}(Nl literal 1017 zcmV+ z(Hp=35Dgsk004k-#l{#VF=7nH*G6jq5Cn2g1rQ*LtRs9dXTU4~0sw(2I#eAH%0MK8Z*EE6D0q(4Fdo`1^^IDjyml# zra)-)4#)roF9`+#wI^UDdyN2|9dl)XCztjF3@#KE07D32p(*&Y#zF~w@Z5ud0KrKB z{G_|66adlyA`^z@fQrQufJm_3w`$^1xAkwK{8Qt(@A|O=uYw@J1;XAEYM(QOffuh| z2*3tFLi7q`K%OTAt+d48CV@s#W-I&>fB=9Xn>t7;HMM(ABhX+1&zP0OK7;*U2+1OO zz2w6D&&NtU7F<67Aj1T9>ME-H)e8}~!vGfm2Wd{QKI)J)PN)E=>3{`|T?!{F-s#e; z00aSmS-31`+5iB6pcJVcahUcj@YSnNupT_40r5^=1%>L*{q4YD0oX9R3gWvY7oI{+ z;8KsI@lf@I7qiX-;1F@iy_dWh$^4dm;4_2)!VF0C+F}00BV&IfLS@1v_e;v{}4uAUq+|oB{MsM5&XRo@? z|8L+EC_B-PyIjJT0W|Qgsw_}Ztb|t}A0%Hd+Q17G1BM-?)Jy?(0mlqiLzE0c>oF^v zjS~v>;)Z-M1=*2&efots#X`Q~^Uy)cta2(Rf?&WPw%ZH|hmGO~5O4t+GGuX!yDLlO7&-0$ zqJQ6p1fbc{r7#wSGPibkK;H=~kvJ3ev5Vgye>UUZz5d8nPsPaVpY1FIp$&V6AlHDy zSNp$GK0Ck%>iDBH{y+mF|)zlhz}q&Fk1KjvwPOwc>|qDRV@6TW=zx8YMS%3l{N`>R6n2r9ta}|m6o&dl=-8%9nIDLIC2Pp;D=;m3j zu-)DY{-a1XI*(9*S+T&jUEcknp7HdF^r{)PxwQiiaGN~&aGOQIsT|K5RA6(V9Tb=v z5RKEfM*})sGE8LER!5YehvXo6qgkwPgB+w7ulr_?51qMl7>wcI>u-ESl$40UN-g4U z%Vcgr+UHsw(LI|cfCCdJ^%CBC&))f7@4UGwji=n(67N63%LUXu0o#&N)HoF3nVZeT z>X)ei!@FJoEZNCm^8l)9fsf^bQ2u$5KI=_jJuZtlqU|59N!J#Gu!sKFy{)3!`!+Zp z8U{uPQ(qBjHy3Ye(qo$o5YQ1#(l^EHN+)rqNq~>ZXZ&U#;TxB_aR~EZ&XF)AY*??c zm=TY_Xh3-{MA6&@a1^XS`2J^U28&qId@UzheBjBp5dPc(WKqHLsw-jeXXMMlHOe2h_PjI|k=?THw})p}DG?X>xuyqRL@;v|RH?&_!*Do!lV(=se9 z17h#m#!GCw{Fsrcjl30~V#A-8g zS7v7jNKX+Xv;`{1anxR1)6#*8Y`cam5(h>@)!5+BEY(17c}))qdqpV*u=wwJ8estE z5>73NjRC=;00^|njH<`-AY^kXC$(F)?{%IIQ+d;Pw&lx6l&E4JWj&-i4v9e*3u+q!dSSWe?}z zrbiBzcXCmLLNP95I5IRH+*x5{Jau$nDSlI&}}57)~yTiOi3q$I71F8dW+M-&6L{(sgwvjMLmw24(a=%VSl;s6-;G zFI%0>aT~Ja8-xNy{st%1@|{dIavm{}{qqyxphX|P25`Qd23VhQ6Z4Ct1eZ?LG^K?) z%a5O%2{~S$PNm2_s?vTXKZX=ucB9~lA@iuPkX%2yWI_aptv$c_gGw4%TP2{WupT0Ka%8) z&awrhOmgTBkdz@I?d91nWBTu(2^s6sbwgGBO*awW{-ohS<^Gfo2sjyc0 z!&3Jtx9QP3f+@~CIKpC!`&oguPv(Azur)Z;CfDoU3WAI6rQV5|MddQr?JGfGrlbgo z_T=VH3HeRq`y>1oopvlHrCX8CdY{BI397!u{1Afjj#X8=MmI%3H1CI-P}|I+*UmG= zZK3bjIRGD&RQ%~;s~p@3+)`Mzq`))}KB^YAsp`CqHHr>HsFK#@vYwxwHzqo5^lJI; zA}~oD^gH(Z^GYgpso(Q-TPo*&$i6@;SFi0Ib@BQN_`f>IiJf0Y)%7?4Vn5)={sNrQ B-X{P6 delta 1476 zcmV;#1v~nX4BiWW000012`~Tv0YRET8oULGeE|R<1t73|P{DyrIPd`g5HK3=TNbCU zSxASkfC0cj0AL+N-I221{;7|M1iMgz`Y+pM(9Mq1AzfW#L)&t$ zg=GZflY}CW3LFwKHNc?J-0%=nP8EB5pt%$MNjP6nFi;EuG?FC@97eGKTZM&S0?^eH zzUYd6{-_dv3Mhod;*m-$pS%Dr4Ny*LHpey2H|@WFx8MnZlGBhYA!im03SSLI2EfD* zK%fqWKu}mEK)MmWUr<9eANHph04fH3f!M1W-@E_;0q}PR2PnPQ^sN-lXAZueN7Ropv6e2Zn_>=AE@IU|{ARdf)wmktfzt#w3EC4)U03ZNF zo&XYm5fMF3VIi>|fFQvP8b!4Z9spDXpK$ICV;A0#o3y2GhfGlbk)9Dk$h~>6_5)Z%z3S!-eJ^-P{+q6xmj3N|N(;bU`p-BQL zFaQt%X22L5edTRZ5dGmQ0$kOWq^^kG@L0eASi~MAv4IWQBYyx4V63m_+3p}1>W$BV zGQOat;pVjpKgR|rUGf?mazSb@A+qah>{zj_n*7iRA&xUC2qwg?&+fsDD%TEwS`lVL z|9u>#vcy&vdNsLH;%+4eX; z|NsC0|NsC0|NsC0|NsB|86JHcAi|=8OHIH}F!hL_W18SC|G?=vGKKgaV0mmC|AWQM z06q}F1p;4P6#xMnU?oDGhq#DOek3J^*gCxVkn{fCjG!XKVTXg{-G9&;zJOv}3@>Mg z$w`1Mhq{Cbnu=~%Dj5t6@Sc;w1sZ?;ehiQA42U48HRx;&Ci2gD)MJNX0f27o&t;Hr z`S=36S!74UzyEj(sdU%1&kdGR+1Gmcm+~9$cDef8BY+3u{T5~WcK3h*^q$dKjVJ$L z23NDzHH%;W{T+Y?Z@7jd?@?I!SqkW{KVre({>J!#0vF_rfxlkxqD==^Un&RRf9(0< e^ZAp%1sW9aWPd*ZNzecQ0YLy2LTLbM@CM@r>U#D7 diff --git a/samples/h264SampleFrames/frame-0212.h264 b/samples/h264SampleFrames/frame-0212.h264 index cf93bd95fee048001e3e2f5202c5790543f64d5e..a94164a68816767250a154b092bb67c166b4e59c 100644 GIT binary patch literal 1054 zcmZQzU|{4l01}R~6QuUAnmZDD9m z4GxSGGUVFwCb<4@%B)z&z~I1mL9;re*yF*}ssHaCFkldnnfPnb1M#^Zuat7L>@vuF zA+Ucj%l5zZlN=Zn7&>U&sI3@t~V%S2D+@1AIvhKyisB52<)1x z`pTt4|B*xg#zh+#9_;i;p5me&*Yb}o;@OwnN1TtZGBC6r5D?Q&{h6_Cq6z!drL{mu z=rA^{`}~u0m&n0_rE9h_)X&gh;LupI?*QZa{RONt3I#uf4t?lk+zp#*{df1=NP zvs-Lol zvK|y<6wH;`JGYP9ioW^6hhx=QhBt^jqZk&2;7E1FE zB%bDF4VtXzl)%4PTJap$!yW?$G0ES}3?i!UmpdmZCA0p0z`|p3&@a&Wyhyf`cbt4v z{0!BA2FC}_COuH{iu3W1s3=^x>4?cK0nYV%j!)1yAn*i~gc$PFZm_LqDA^#CP{Gk= z+{^ZtL1&-r%~rwk0EPvZGfyvUn!o?r#E`x7((1Qd-I)3CgV2Hs`NM~e6+R2=v}PpU z+{{|Rn7FOdK>GQ4oo}z#YfRXc`Mv%B`~M3VmTfheuN(X0Xu13Sj4ZHKmYv%eS09`) zU%z1@Baez}z`_X(Z+~gm+FpobRA=fo`1DxYw2Gba=?DF$B{>#x8SEPNEZgUHU(^g} zc=O1U`D2UYwd{n~#}y2sWJg{c3)$_x%%QK#I7tPgCD0q9cX AjsO4v delta 1029 zcmV+g1p51)2%rdm000012`~Tv0YREz8oULMAXA!r2_`%M%X(W)*PsXh2mv`jQ9Xtl zbeEPUk$HR=iVX(`g0Nf^7+?TxW@t$}^kwi6Il!fFJx0ae!cM!u1X>DBdxD7_NdC)z z`+?U00R-U^fB}&F^}?+W@&C9048Q;&4iYqn1)`&TWV!8sCXa!>E+EVbI3!Z`=LAbn zX$#$JzCZ#4A5ts|yJ}llYI#Zh;6q~(fwg!GfYQP$2%=)}11JCp09JDXMPO|VWf!e5 z00bC7074)D1R}r!iJLO!FqarLk6`A!7-<%;_*vji=AB|GltVATkcQxoB%rp z05dL$0kDXFQpUgk_`n;04jZ)7nUi2$94XoOFoYf@R2U#SOqV{1*+T#U00;mI4i_eS zZ#rKX1;PRBBnrd?#&`w+fZ=K(uu%dCouRwTmjDle11Vkf6%;4z@P5uqa^q#-0&KK*V1fipm1fNgDPMoi)WPzMeGP0#=U z0YLz6CYT1V0CcbtV0Z|HF}Q@Zhyh`W^$?VC^gxSyi_C0Z z9|0-{f&4rSMnZrjjbSZ40if96b?)dn|DgbXZJ#h3=zk2mwy!9VLPni;=l}oj&;SGg zGFH;hJ$;5Ib=UX)8h`)*0YLyciKYRo!I+_jhPyuKIDhBN)*^P1yKr1XQ@Tb4` z!B5x#2m^p;Q^e`WE8-JEo0@|vhfxNQ!gQS648t1#_QBo7;spz_(r54L{idTv8ZH%o zXYi4+xn0f+M$CT)6Bn1jNPvQrNUTUu06O%Yur4nq|1o)|UH&nE0X{4=7$MRKQ=0$; z00INheSi)3umCHhvo?j5bfVml0fA&q_P_uC|NsC0|NsC0|NsC0{tV9w;yzKK0H%lO z0$24_U3c}UJRSgFOBPB$`DhxuqG{1x|GnZ0;*c9vehsM-X(9Is=A)xTM$3+ge^tUg zzz4Z*R_Ejubs`$83j@!S^nReG^gCr@Q`T>JiIZE{R19C33 z;bH60<6rP|!a4l@f0NJy7YFcWe?LM#f0NJy8WMj$08lUh00BV&6+&r%YVZc*KRv&; diff --git a/samples/h264SampleFrames/frame-0213.h264 b/samples/h264SampleFrames/frame-0213.h264 index 9fb5086cddacbc33e0c0afd98579aed0521c0c74..06dd6607bd705d693988bfe4ae65486df0c0c290 100644 GIT binary patch literal 1191 zcmV;Y1X%k30003AFaQ7nL7RXYyahKwV%OC4Nq_K&2!UPz4md;sg2(xXfl?z%%Etf$ zX=6yLMygie0}dlnRND10a}4~m!ha%M;0ghrpTL=SBNbA&lsNk3x;?621;h}*q8kSw zgk%UsPGUrzJHrn|iCA$@I688fsaGC|K*V<@2V9vKaJ*Kb{eS_MFaR*Hol;A_IX;KM zj>1kfkcarew+N7HPyh%90@ADi(S4CG0Jx9_&Hr)^6kt14jxGVf45f~o7M?%>RJ!^Hao7QO61iV1M_HZhPs_TYTKKr>fQtZpskny2nDe~06-8H8Z(%H^r6oJ zF~C68u&bLgFqh5107Luy0{|SrRsfGL<0@BsmW_D&mPv2^L- zHfclf0l1rw63J_#xJYLhrNZ!>b*fO)M(uY10)QM6NB?lcBTE_BkN>;{Km(|C;DVM+ zntE(&954wW17l(!)CZNnKJh>RoB$c+fH~eY3%)f;*8ng9%?eS3dU77|3Fd)&@av;x}KDz(^3>k=5dH%ZJ@@PFn2I>0^yu?b00BV&ZYJOcuK;S$5+Ha8hBzhJv9JlZ*lOJeshq?l5;*O{jUj+q z)SG?$*ZcP1B|z{qgNR3IV00q1wpQBE!N`o#!{Q@LehdJbO-Mc7gVO(ikptFK%6VeE z7AYcm^O?V(J+nyiTksQ43F_j6g@6Ta@6d{0h5iQp4u;5~JA4_aKn##cbg zUx1MV;6O3pzW$rz1ISbQ~==X;aCx-WXEUjGE!1f@XP=J z0YLyciMRo)!JwZL=mfYN5P*PS0A8S5+;JMi{_0BoC*%MA!k@dl&qyZVM;NmKBLC{} z4%+6qrO@zuPuNx<&(s)OuAkM0z~-!aX| zXc3fPWEahW+Jl6&V-*H>|NsC0|NsC0|NsC0|NsB+YItW6;y(agPyhe{K>!s(ZUAcV F2IE>T7BBz+ literal 1067 zcmV+`1l0Qg0003AFaQ7nL7IRXyag{oVx+xFkp=u755$2;RBYe@Kt+AilkeX60RaHy z?HmkQ@f_16{_q=vlA20kG6?0f>KejQ9x>R;2*77B83+q5iS^y~0Gj|8NghZnZ@hAi z*F@F{eBe+Cg9v26fMf^+03bz!JHt6)K{$KID@FhU0b{67K^g_T)LZF*GA;lBKnMf8 z8lNWN0>lp<3zptwVVI~oh7(U*d9V}!3yvTvjD;?O3r^v57Nxjh0H-~mp?S{EQWb%? zhTs4M004pJl2CDq;nOApwyFDu1ponA4*|tM0FM^GmxTAOL_IZC8&$YL<4XNCCJL_yPzO>nTd5 z6$uy~zVKxN9sp~5G4Q%arnijjcx3=_XHA_8(Idx1YzK_MO6pot{(ysv1tOpT*h*g; zOV>~AB?=v^>4=h!&EcLRA=qQ&5i2c=Yhhy+u^j)^{^rS{vBpkwdxQ}{F(o+g6~J3k zOL70ez`P(+juv!>U)a(%dOW>49d?pNm7=XynfM5VtP#BQ~Vo=~ZF<(9e4>05% znpI1+a9TbB2vk6a91uyDj~8(mI-U%Nmn48Vki_d;BJ&(!)6Iq(1k0>hz!vlCj`Bj@K} zZYc@gj20f@7n4L zBd7yd0XIMZ00BV&ZYH1xuK;S$5+Ha8g}8Pt3<E%r44A<{C48m{l5uuJ{|L=Ra?W^d=i z_2BTyy!pfvusWI}$_+dO)53bVp&?)a+V9YvyMW0r1}y;@vE zFThBF@E{oQUwt|Ew@#UWFv%zlKt_l(sQLx%TnZ;p1B0)HVH)O2a6g#JN=hCXfB*mi zK>#_4r~#|Npq~@y1h^a!fPi2CUZ7jta|*-$>Q~t(vH$;JPu<<;tUDKom~o~8&Hd}Z zUTt$)WWWFL^n0H?FA#3cEYt`2$JjswtdW0!Gvd*}4ub!O3L^u#&?5RAatgW9?=ghn z14;3mu%3XW7$8&J9iT3X;kc$}|NsC0|NsC0|NsC0|NsB|8lD-%c#r4v`TYKWKcCO% l^ZES#e?Onk=kxje{(nE8&*$I^MgRZ-K>!s(Y5;2R2IG0I*+>8Y diff --git a/samples/h264SampleFrames/frame-0214.h264 b/samples/h264SampleFrames/frame-0214.h264 index 0f50938f1bf7674763edd571a52d0cfa7df54725..bb9ed80ab52908fe828f1dc198315563bc4b1362 100644 GIT binary patch literal 1312 zcmV+*1>gDr0003AFaQ7nL7Si&yahKwgICm)=KuI`phtiUVFX$QqTwdWxO%kj*C@9lL`d}FVa1GlZU`VgG5r!PV z01yEH0RZ3t5Dfu@&IALJ0IwF(`p!T^A0{B+3Pi?^ojbhs+heq@?zhtTsHvG_BfhM? z64e+0eqT4F+~1$1DOtb)(RV{oYyS5TZ$t@qQmQR+$8cqlp}>GbSQ?v^7HEiqujvVbPyl?z01gaumeC`C03c6V-R1yna3Eoi_Y@ZwiyxY~6;S|w zX9`?V1q}PdZy*4HORCn9#S`HIe2v;@El;xH6q@iDGbE5SnDwyewlTGW4}^sgH~q=- zNIgaezz4&D%<3XDoH@!5$N#o)pO_xH!U(u@%oB%C@o@eC0DuUzLG6^WcrCOFWIvby zsxJi)?4=G=JDi}#yMkEZo$izRzW@Y`#70w{NHP|*OX7hV3xa@Z7!QopjQ{|+nGKFk z=7s;h(hN5)u<}e&R*U~>AQ%fX!Nt(wbd&e@lVAa*$^n)z%p4V6p_DsPgHIB;htjbB z-J)RQY*ZPqav%Hvpl1-G7A1Y8K_%Hkga9G~3ijR zaj#E+03ZjzBq>2jk+f-2Vv^zjBIjTVaV`PEc0bw=;CNc1bKA}0S_mJO01TNAXKv

    T3Fumy@xod>|^sNc z$lh}z8XRG0+(G~^OxX3VL%bjO$)W%O01yKodE^By!CWYSj2p1R3UjZ){LEPsVVLn> zAVI?KxU3RDmf8O)7zg5j7#t>ZeSFCz-V}5g0S{Q~GM}5k01yc&U<8{e>!MNR*b+Wo z1Va1@CaCh+KOY9UVx|N_K?k&M)RD6W9eWHAL(D{D|H3Pv00;!5U;;v00dj{L``vqa zo?)p%(h=mxIJPJ2}F!XOaS{Mm17< zwqNiOpm+f$2Y`ow6MdpQhtNNP?@j#V2!?sV{NMu#OcFICv)lb@SV10~Jjc1b7WZ7l z=5=g0Y{Wn#&=XG!^4MY`7lIj3YK4{OhI0RcK0Gnt_vh0S&AeB+GML7|05kX#PYnEc zVS$26Y!n)JgKfBndQIb1L+3&D2Hz~1y_bZa^9~ohm-}@W`Uyt?4FC)tlqO-@u@V(H z&Q=ybL$KnbKq0=0Kz@8EvSUBF@Dd4>gcLPL*g2b2XMgk41{i<<00BV&If=RftHH3J W6XJLSIe-8F0YLy2LT-R+@CM_R;3mWX literal 1361 zcmV-X1+Mx40003AFaQ7nL7Jc%yag{ogCxC7lb6^Q4je$36UIORzyiPl05E{h(drhW zlGoXXM*#pqtM~-$lM>+pggcyITp+@tkwcS!8sM`epS8vi;24Q^Kzt-03ee6sXS9@^U@wUnsNK!VV$L;JC?`#P{AnH4wuD7f*f~Zs~izW`RZrTYop^ zmjhHt+FuqRL{b6_WCa;TJo_GhMgcxaO$xsU;DliZ5W$T$RHDrjbTkA24u}l^Tf@*& z!jWp=0cJo7^#R5Lg0&sVs?FR}jYa%^%|M7-VNyZ@5 zlEa2!Xma_cj10t#)0yDbFE0Q2gVSPDiG0O#gE}Y=BW0e|0V~jJF2b;(1yv*U0N4>C zbhVce|L4J)@@t>ppMVUcB8sHi{KKF3aR2~-05T#|L+?7*Tmm2^gm8}>Md6YT+LjTZ z07#67u}Gyekfrb$fwc7DlFK<~nr5Z|0sxJB1kz6$gV+A^z`#q0qEqdHq|F9X2&s-Z z6sJ7%{h-6=Vj10dx0_%lzRXwvCO}{SLpKG3Elmbh7F$&|0e}LCA_*}p71&Z^OmbfY zY$_ZApb$d_9b0RZ{X-nq9*SkAXV=) zhJXc8O@IJ^xDPL217XJ$0u$#pM=QehV}=AlNF+T#(3t@|*aN%&JJ4kSn2~j1;lhl% z`DM%?01yRikN^q*t)j2m0!@gZ);}eheIhrn004k6h89}O`(QTI zxH`bI8oH~y&j1fL6AcUbAcl=xvU+Hd4Z^lw9;q^9cmT8j5W#VSRLS73Btur~F~&Fm z2ofSd06??=6oeO_za{WqAP8ZANE8noDf3{0Er~#!b!_FP_`m?gED~IAxod8c&GBXjyZkZB(d^dGA5X@jv z20>Suv>mj-e*_3YKn=5{K-^!k2@2BqP(2WbtNQyQouE7q2_Nd z2aM}ta}IAp7ULj*hX74HFUw(!A#5(GF1$oDuO1lkc5FxMkJrT0DL?=@3t8>C0%_r& zj|>#pB<8_DzmULM7KX=zN% z33To|3A#`tQBX9tvLwfSudoQH&QTBzxu0O>W~u)Fy6|C$0003&06B@O0jt5VpA+JE T137>I00BV&6+&u&YVZc**Nj2< diff --git a/samples/h264SampleFrames/frame-0215.h264 b/samples/h264SampleFrames/frame-0215.h264 index 65e11d9cf2c5bd536c6839d8ab12a7d39f0c848a..12d51957e120e773da15d746c6b4eb69e9583c93 100644 GIT binary patch literal 1190 zcmV;X1X=q40003AFaQ7nL7TuDyai7|W6>`X2*r2+X5aF@d;kFekQ6rq8*o%4uVtm~ zQN$|%1uy^*2#M$b2mytS89+i(>v%AVG||P$y~bWRJIX115W{n@Qigs6&yU1J>4fp~ z{U`)K#yuQIW9wi(zye@1fQ1UDS;H@+wtnCMC)nl z@&E!Qfq~5)3vl?6!8Q9v0hs^@cmuVVKYRkc|NH=9%y?(eJCPDF(Ax4ZQX8N%^(_bd znjKeCC30@ff%&#IV_i;>1_}A3GyVVw00ID`;X;2M`*d~GjATC-zu1yOhuVH!#ZTsxeQ z#=D~2;hpZ2`nzBTNKsX?ieKFT0oyPEf(2T_sDYcr*Z>FwYoHDQv5e#SBbzisbSV+U zTZ0?F=qLryF#)J&zyhZr2LRVdJ)eSu4T+^Y5fB5`@&DU>-~b2(@CZl+Y08V)vHDX{ zbA+)R009B&fE<~z&+7sK2TIHCi9$5@_J9yztZ5%Jy+wIXFMt3L05MdFSGx>on}6I9 zz!X(rWO5woy7L3Kq$3E9AdX?obC@(C4X-pX>fCri0_Su&xt^76nx02$4~}~v01!3+0R+yx009F43?Bazq1Luw zLF!uio|luMy5uY+;LIEnGe}Vd3;Z-d1_A{Szhcm7BAe+(Vm=Rq0AMI>W=);RWl0VY zLHUvZ8C?PnCL!IpF-geT>Nv%r#hP&+{ttiv5C{SZOL{mFx8!=2L|?}h*ZGoy!0f%> zPr=|6MBqT}C)BJFD+k~PigSiM1YhYuydODW8PEU(1GAN2D6K~CvbOI%m6w-55SH;rBVqQTtQD~<5yK52mbn?0W=^22rzoZ1e8A1Foys` zumAu7K>%(h@CL5{R}TR$0sz5C06ZP-uF4PMm}mF^UA+bJ2l9{Rwc<>e;ILno>7rhG^{kE^`Qj`Ev&en$*_v^ym+!CO2fJguc0L=jPJrGHb02#pm$N(U^$HszQu--PX2p|$vc8FqIDd%EIX7e!5`9t_<5DKaum$O1x zHc&_J04Q|?^I)(B0LOo;2oO8~0RVAL-~c$HVoJX$Rv(G1OBMitMtQ-GHT2f~@IQe- z0AZ*y_#$g!;R@f82u!e{ONLCixMsV;0Ad1%xbEVQoN`JN-vB3D%b?K~005RD|J#Fr zAPfM;z;i6p_*@JcgVx{$j}ZX?2hp?ztzm#GhfJwh30+M|##aW1Kmhg!kCx3Lgn9k8 zj3q3>ums;P>8D-prduvmpcN*1ZVIaz>GNJ00-m&*(w`SIA{P3XaRs=6l+%` zeVvLIpWXmKAXWqrY^oUfQ_`{*=O_YhfB*miK>%(hum-OHR}TR$0sz5C08n?bSc(s# z7H{|f9^dFFsDV;P*BK=e1{{;?`d{!7pm+fy2Z3Z>f3QXlu|ENTydk%&EMfa<{u<3Yl5HjsOo>fLXIM6t4ffAd9!o(?9-gg&_5! zq+1^rUJE;K*RB=z*lp1m&(`vL4i%-kV$1s&0Sp74WpG9XMWhF6+dF0R3lcfRM-zn1 z{(vr=MnkU5aToswXq54FH4LNwe0TvAueO=b`#^Hv{lrNJ-Neg^_+;haZ^ f@WcQB0YLyciL3#uz#EJJ00BV&6+&wOYVZc*v<;!r diff --git a/samples/h264SampleFrames/frame-0216.h264 b/samples/h264SampleFrames/frame-0216.h264 index 9fcb26451f19b01b84a2f2311b49d43afa1dc67d..36d0428f7480cea677ca5ad266f4564ec3922115 100644 GIT binary patch literal 1685 zcmV;G25R{L0003AFaQ7nL7U(jyahKwV%OA^;W)4WKmZU10C4ifix)0jxnjkOmo5MN z0D24n1Ou3`05k}P#iwx>)#@lLpTZ`MDhKnqi^1VzxX}?E2pGEpA*F0zq5b>XJPScf%D!Sd zs{$t4+yDSV0H%f(Z24&VUlj{W5)m1|{uk2MijMdh00G6ZH79rM3xW``R<}c=KVN_V zU{37SiAH4zI{*K-h#sW?5Fn+eh1~f!aDgOXM+hNBh%j(`01P=yHR%OxxMBx}t^2?O za2o{sR}6hzNT25ymH-F<3^sDHav)(`P5?qCa0nn7L`;z;H15aa-M}2LQ&1rFI!n}v zG++_M76O`Z0JR$dg;t4E#((##4p_hdAP4|WBYBkjQVJ9R3;^241Rdw-0)tQhh{;$q zM#$#T5?O%GD^@Uyc{wluP4^3cwqWoc6ubm4s0%+}r3NXJOnKS))2D9+Dh)A z?*IXaVPF8y1Y7BOb1*6{PW@n;004kJZ^#--V;8_EKnmIw)6LtW3`zGGf7Sy!004kR zVx$fuFFPuaod5AOq6xfzxqoN03!|g||V=6y1FXsM$1L!-5VP;<%*OB)U~TOg#Y+QF3b)$|v( zi3%EE*G0eOHDpcUQ#P!I)MLbNP*4=+iS!jLRkgyrez_T$ayeH^9!N}px*|904Q2+kmFDnHRG-7Z6dFgR&AOO<<;tvY` z$#LrTSDGM`p@?^YL-BDCEK7F6TgwZooB$Y}p~;A;o^NOXNthPD{0#@fhzN$pfre@j zL;k;uAWQg&bKHiuAdeN<=$lK83-j?X0lovj&~Q*&_;)xc4t@v#2p0eVf)>~S2oeDI zKL5Y~9NItv3OFqShYNvuKq!&}14Dm7vDsb^%e@#7dYZnZrR3~to)M5=#tHxcfGxdL z015&j(H0v}id=^>A|-*vd-f|+A?Fe3VI`PHzqmXHI^bb>PpDXAi~xWDfFL3ALR1_x zUti`y5l?_LQk)@RMf!vZ!LtE?1&6>vSY&T~va z_FW@9D`-Dp1}~*yj?Npfg#ROlVJ87@_6>C%edYiZX9mLbSaQXEnMG$Kka93@Ooz4Kpue@G*U zBYUvUKXvNR0a0003&0B$Du2Co23 zFc4sHFhc+a$jsp~IeRkbITmppI`jpx_plM5coraPQB=IzdLR6LJ5U{2U@P*J0$)uB zE8ZJvanYj6`!4DK9+2ZkZh zo&+fdpF7}c{|QPYscRk!&&VUffk*!Tjtn3H@-m(|??K?(FPskj{18i(Do#Z)`}W3^ zSe$X(jUrB(pVt%RaP0gNKQrTM2=Iu20MET6ISF1+nLqlR?kKi=)i#M{m>o6aRZ3qr z0E5k~f#t9tji)WQx5k|g_kYgA>!tJ6hW-37X98*AoJa8kEG}B9xo=fBEHr4wt1G|W f250~P0YLyciM|1=z#EJJ00BV&6+&--YVZc*c8Srm literal 1455 zcmV;g1yK3`0003AFaQ7nL7Lziyag{oLnOUSlLX-q06+u^X@(eSrkY`f8fl;Zzyh2A z0s)_N0097S5)2zgMm3s+cY81#U2uc|90CAkkO8OGFs;Be=mzGI+wcG?00IJl2MbCG zk>I23S9V|E7$Jg4vcR)$Jy+Z3+4uw_poN3)$m4^naMvd@0JjuBzBhjG0D*Twr^+)v zG$2S!=mq{ziIvNn3b&US63X#fNO z1OtF9EDSC%In`3HK@I%O1WyqdoiehkD=PQ^7;z0CL=~;F67WR$@^3`oV}LR;la$|p z51pl*UqzK^(AW5xW{|umTRAr3=rG|RQX{i^1vA_cNFNb`A zt&E^sDByrlh}Fa5Pq(AN004l1dNJnM^aRrWAU}c`3+1gizz_@5q0a5McuL11+drl# zT?7#gS%upmehEMTKoCuxBo!Lk!Ji@EF9B==FrP;g+DEbN_md0rJqna~dA>0!mMAPx)e8}~$T|QjI$!~#7eblZ_q0F+06;yYuX!12eJW?2gf9j+tU2;(#$iV8KpJsLnU)w%E{S>zPEgUxF=UqDiYUm^csb*T?4L(w1R*6b^a-tB*G z0D>4nnFvG|CY~qu2I1DYa?pt?pZoWKXV@opLv`!IKfs^~x&QzHK>%(hxCXBPO)wB( za4_ru8zVD8GC5p?E&;{dLNDH+OO3sNjRU~50V6nknQBtm-%po*z~xj#9a-@hlb#D#0L!PR7@@$z5)aUKnRc!RuK%33V2P+o=@FA0^l8y7#&b9 z9X2Kh<0D}%J}HxxKl`A2L<*vW!8Q;^Te&^29t5V?u}&G}J-+}m0LDRp0ibTQ1k=L1 zhamysNIL2~0uEr6@4f@&ZK8WfmJ+-jjQm1A8w1S#_Spa!kiC)+r_aAY1AMBU244OI z1c}nBRrxRdKif&!;LG5j3ta?E01(DcA`RmZzEDic z@3`&qLf`R}jL1pfC|OoxB`T})1ORj@sNo0_mq2RJW>=S4AO4sOwtW%Qe_J$!$bBI~ zA*$fRfi&>0Blv+B2Lf?3D{mf{)>tIB*^OQGx8P@h0003&06B@S0jt0pi~s-uK>!s( JYk+F-2IGSfbuIt^ diff --git a/samples/h264SampleFrames/frame-0217.h264 b/samples/h264SampleFrames/frame-0217.h264 index 71a4735b2aa8a8fe18e8ecde21a8542832d19741..4be96f7c98402ee526125f811c1e0ef5f17afcc7 100644 GIT binary patch literal 1174 zcmV;H1Zn#K0003AFaQ7nL7D&>yahKwV^`Gl{KEOVd=DisM9<^a?Lxx}fzySs$ z9$QdRih1uKr|<*-1W=K^DW5`;UxrijTmS%oAy7HHYIDj!YfJy{UG@4))60)vk;6+#KP@Br@6pa38s z0+^FXnTnrM(0|FX-E|^YCaBOKn?rOp)aelLa0QW;2}~bgH~?EF00@D=w!{iBc248q z046Qn(1{h*k@x@@51}9Z6vAvcNM$eK;9KA)@Tds@*EBoec32-Cz3eFh?5vM2y zP9DA|>VQ*h1Oh|opx{QL96t+NVrLU>!c{&@B;JFBycx>Q|eupR}xRN;W|EH`v-~b>I zIhYJDVVm#yd?tqjRRy3!AM{9!3LP9u#*0wZ_=orq4%R27$}Z_#7=A)VK^4JG1_+{T zE?)2$IsOt%G_JRt7laQEw>&2}0}izJmwF+kWHv7F0H8ceOOT11+5=HuC?#}t zrCh~%8~*SRg&b#71tg*t$0_0XA^R6`fkpyZOL3tQkr5GWFo%|aA=m%_0YLz6CV&R7 z07Fm^AaF2_01u^^5txbGsjOIl5g>RLItNMm^}R0)ylgp{mS9E&Pe?7?tLeV`^7s+6 zM6OFIHI3ku#;Zyn8#Dzt;L_`74xMA*~rjzyFPmFgNl6fi&>GBj1P#d*gx7AsGij8JGBhAcrB}sSt_( ocoF|h;7&YVeg1z@-^Fn|EsZJ}(h^Dh8^rveqc^VMgAWaoCC{Q(5WoOH0ssPo1xX&?&X>jkaDaaa0h~Zg zXMkWB4i=&tg%BZ$+M7JdZ~*uaGSlBdF;m>;2=Hun03ZNYQ-J>-gj>%GP#{pH>hq-$ zqDj^5;s)a>7A;|iWV#R}*TI8U16>KSAf>sOz|Mq3@r8f~^zxc1z^yg3>&SQj1OtvJ zE9b|+M`K&@s0u&`Amxa8rAwDh;Y12m{ounefuzA#RRrlvWI}0zUw{S%IpL_#VS@34 z&URr$>EsXx2ASXj-^X$A*lhx!`7^)}99biTn;UwF{IPSYFAq|&IZ z$LJsc5JWV1xakl{77xE%1_aFkh5@y;p&2uuf`B-10&ai+00BV&ZYID6uK+_(5Fl_d zFzwI)2B@agXKT{lzs3ZP_!Hlf?j1~>qx!p>U6 zcOt+74mfkhs`0fEkY&HxBJ4PWM!Oh1J^rqcu9@H1FcD~cn>VMng|zo-#LY}_|U ze)+r?J=jYMkAL$`K!6I6QFMTscvmmRN!akET;CEVIy=**0Xh|vz1!|;92a$iz?cs> zNR@);O+zur|M2xT_G}lZw+M)UIoAdcc|wnUVC-18f$hkM{`CM6xAdPr z1b{zMwyI^nUf*B~Sv{R(&+@mu@Bcsjxy+?lAOGMC38#f|9{fP>1n(P>!-xbKkZ}P7 yW&Xs0r!jq9Ok*4Oi|u~`ap%v#%>V!aK>#_4umP*U8;k$|0YLy2LTmtP@CM_91BRvm diff --git a/samples/h264SampleFrames/frame-0218.h264 b/samples/h264SampleFrames/frame-0218.h264 index 0074c904311fdfb0301e6934324530baaf9c723d..84e1459dcc96daea149394061e00e39e5b7e20a1 100644 GIT binary patch literal 1234 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 diff --git a/samples/h264SampleFrames/frame-0219.h264 b/samples/h264SampleFrames/frame-0219.h264 index 5422ff1a4a511562301ed81df496214288352836..351cfd794f090cfc4374e4365e5794659fa340b1 100644 GIT binary patch literal 1412 zcmV-~1$+7c0003AFaQ7nL7G4syahKwV^`Gl=KuO|q4)r>i~!&Z4Ixa31cMmfG#;-& z6AsbV1&r*7!T82|mOl{Y$NyVGrW&V!0ssMk1|1hu0r(uwOu$X!s}E5C0Dv^q0yIYy z;7xw%x_4%f8Nc8Ff*bv1IjcjOwUqC|Im9T2i)U#NQMT0Z$p$O|yGk>d;K;*WGuSEs z3T^2?3~4lCsB}r{xhd_;-ypyl#xCU{uaR89$Nz&c00aQQ06B@4J`@8;M6%{iqWVq|`rZUO`4gn0b-jiVgMu-3X%WM4E|NVmjeDDAe8Yu`A0tBBdzhqcJhu{E& zD_momC7!53Mp;ml%vbXGNDRm>3V@IxG%#0~kN`NG;v(rQ>za%F0;Bp-<`q$0*nTA z0+2A9V>hw=-~b2$*f0S^v<@uB)hz|(la7D@APN9LjT>YmB^eVVI4kv`avk3s8_a1* z{e#>ZN~)jl^1uNk$Y_NpaT2BYKdJ=Ch6DgC0(?!NCnAU9c01P02t7+*Q_}KuH&22L z)@-yKy8OZl13QQqQJzb|HNSuX2|?I0wnp?-TQDro%*@8>RkdH)#Lxf;6cGHwyaL}` zu($t!dqLGn?_SWQXBM5eWthc>Sp( z=MNDjiyjXxn25*!*scHoAR5hp286Z)>Bpb@w_e*D^(vI5c`ykMfB+y%0)2uOTu|7Z|)DvKoINz00BV&ZYGch zuK>QlMS&)J2*GmzKmia3(gC<~B z*(De8;L!Ya3G8sQx84vNjw2Dijk##P{{@`>xsHJbyZda=fc_bIn>cSkR!@ccK0mwN zcxCRUJR&j=*uxLCOcCqQD7`ZU2Y2#_4qyekI S8;k$|0YLy2LTLbM@CM^J?tl>h literal 1325 zcmV+|1=9Ke0003AFaQ7nL7PAtyaj>2Q2&R`00zSVjJhNbA}C2?ayFj`=l~rqTL1__ z&@V}XPiAo+F!o}O9pFI`C@264)@!=}41wIB6^6(@2H*v70SW^{IG7h?vW7><#sC0; z001Cp{I`Gt0H6U)03^WBit-j}XGFJ>ufT{9)33@BTu%EZSGWKnxC9EVrI4Do7DK|q z{xNU^($E3HA!`g2;+C)Bs!~e7FR>yp5^xb?AOMU2iYeX)<_{N{cakL;8u&jh{9%9) zWD1o9OI7Y6Po^A!@IL?s5d!dR?CzNP#mQ^{SjGpZ;Io61(qV$h>i3ukoK=ux&u%M(U!F%<3In-1Z@*#wa4%G-~i5HJhm>{ zu}?ql;Q#=DPzcJE&@T0@{o`X_+c-KS%p?$Wz+A~0D3MG6!d58|;%ZoxEq(xF4!ira zRZ4Cm`z>({07PD(%`|+8s9N!`3<0(y4S$mYBF2G=!ic&+;cl?OBmJN-en%jMBXOpU zu)Uy7cp>KYX4{(+_y8gskVJdQ_87uRXM+$t(y2m34MnOjA0yT<2o76ykek+N+8uwp zgW}2>@D^T)a8!*0fM*54aH4cL5VjIVAN|k<06nIv*2v-~WHl4}dTu%QPc0GJKo;8UWVuU(NsINHFJs0ssJj zC<6yo`sArQhzDH@WpaQ3A<;sNM~aT_iaA#xA@(zldTg;d{%b<}ML}xNB>+=y4lWaS!lK21u0AY%hP6Uys6y~&FjK+T8ar>-h z+jwwpP%C^|^WJ|ddEkH;WVa#!Y)gt9=wq`_-}pfn`3^Z zS9K4-06+{X!?3py|C_kLW+utDU;qdRfB=A)0C;v-ywUyugMy$0=VIzU%ohr(#WUyt zm=F{`oks6age2ofPT;^37-pbwkTW||b;spYJ{Qmg-2eaqK>%(h&<3vnzQ9F+;8;Td zan<|Y1a4M-WCS69^RPBxFaQZC0b<}-0ssO8R)7GUD;X(p45WZof=Q*H_W=>H;wqRf zD)X%=SP33^{$ppNk$N!rPA^$R7v5kTtPy(t4ZsxDY>G+}`s8 zUCh=YOF#N}D^f2u1W(_%Dh^m=3o;P<-=R2E0267Z(@Cb6|M)HgVgjh4c2$F);7mWH z6J#C~nRv*-Yybiv9g<_1w zg5OV0T%!?Q(|-GTw%h)gCI9$%C-H$kg#?`ybt_QAfiV6f+K6HTQr6~S)$9c)qrhA$ z%>B>!pygJb7l1a0Ww3}U)j|=tw+nuJQpiEE+gP=Tg8WIOC=Y>J?Efre;1nO03b6PS jj|u1C5J&(30YLyciL?Q$z#EJJ00BV&6+&$QYVZc*0fk4I diff --git a/samples/h264SampleFrames/frame-0220.h264 b/samples/h264SampleFrames/frame-0220.h264 index 4107345dadf6201e166ce6a283e015f8d87f8877..97f683ce5158189299a94729c1de72797f38b0d5 100644 GIT binary patch literal 1235 zcmV;^1T6ai0003AFaQ7nL7HG1yahKwV%OA^OT>aPUH}=l{I8z?06-iC4Zz0S6bUNZ zX?u`y3jhI300aW2^Z*0^!p01sep2IjFo-nK#mT+K-aI?HDSQyabFfl|XdeWQhoT~U zqHx*%fCLxfpWNZrTY&%p;25HkYMW;akwJ_7-~dnuIv#liERahKkjDo1Q2*6Xzyw5R z|M$Fr0TSRqA)~>L2nd}Q{pJChFaZw$cC!cXfL;#(Fy}leA0OD6C}?eY7pMjd{Y^pt zCWlqj>0Fz$V18|lSl3b{L7Gs{=c7Oapa4pUPy`rBYw;`}{~0g<5DnR21OONn(ljL^ zPDTQD)|Q}qawG!77gijxfDmk>bX@zuA?Pmfh8iyN*CL@F*a4ChRcxY{_do!4%m844 zR-~n@x0)T6zh;QJa!%}Hh z!ekFqHuU>%yZ`|Jx&a9QtvNAzwm(X0E^@cSfB+yl6973=XTSY{0R{Az-4>41-`W5{ zg0WfB}lEm3y$pi>Lj;3L53$TxuNYy7ME~q(KSTK^()FLzEbQG%)Pk zXh8!fbV#ulZUxlC-|x%kSIrwnsIqxAAlPA;2a197|N7LoC|Jd zAOH{;0098(PJjjihd;#Vb-fr6dYZnZrR3~tLwX>m{1$x401U2y2NMwP+!&fnQ=B27 zBL7MS^m zm&(@+^TS{Pip3lOA^yFSP{5cr`v44drJ#Z{hioxAB(@T87VltBB*pN5<^UZa2jE8^ z(y0WDt{|tg@vEwjgYpaDhhzXIAOZ+5dc_2kIpNJf5bOW|0YLz6CYT1V0GB}a2SH;n z0=2f4ul~R=9T6fmnr)S=&wVZdwg^7V<#=>W%i#b69!O(Xo7H9^Pk=ci18OTNWMWCf z?yL#W5Fl_AJAe;+Spf^Ah*gwnSV_%QrlLop<3N?HGuIP+)PFFo%{(+tMo#$Y%wuw^e zX8wk0!%Rnp*4iIOt)PBNIF|qh1o9JwKmiTe+1;I)+1bDUzYYOXJbl1yQ zOld@l3PU~`F0l8YQ*KZUqyr!Q=rBDn>lDm@1-Pa-^dk#8>-N^r)c@U5{NJ(ef)gW# zAP?)%Q}KyePTl_ZfiUy(vS5Q{y2+|3|M`Aj*;2;^vw6I*XYBt>lO7P+F@K%}`#fIr zh+;^8$PuS{z~p<&Jb))T)UUy?0!k*M{B@@0 x=*RyK>E20=K%1B_;7&X*pMX^00003&06B@K0jt0pi~s-uK>!s(X@F|*2IKkS8?pcZ literal 1081 zcmV-91jhRS0003AFaQ7nL7QM2yakbe2!?nN!XYjI4h#)qOcnJXIPOU|rWoA+1_1>F zh^Q$mUKolgqM|4rH~=~@jDkkWWVqcb`@kUOj3l?j+47NwOIz_`!T@Ik10Vq5E9XIo z-*B5ZFYEyV0Pzyqp^41nY@{h>cy23h+ImBPAP05_w1?><+81E|-~^9YB1Oq?BpqSP z+{mTi00;?%7oY|ha{01z_TX9)NDfv25CaggLJ5&)&spCG;1&P@0Km1ME(S%kK0Ugn zj{zdUg_Y4wvX7!Kybu6m0YUGO{b0(V0RRjD7+i#q zp_-dL37W?;Z~#Q`h#&>rt^oEgwgZ@UL<>MqH-$e*!;m1Db_tIwQ-ahDdhean`~AQ( z3G^t*XOmBtq%C|82ANUjfgFuxP!=|_Xlhu{JP94pt6RbnJ7nJIUtAPRs0 zfD7cpGzR5zf)aXw1xHK(5)ir-1S{U@X;uIN0e}lP29Enc01z4hPO!|6$HAf__isMH zL_DD&2gP|I04P0T|NX!)0Cxl#ah+FWgZ0c=-olhFnu8#fg&n~z0jLHF5{(rourJV_ zY`*XeQUEYwd2GIsY8|^c3S58z-ar5l4k#MM$O9t8yubUvhA2}SvV@dyhn8s}I&{(a z0&ai+00BV&ZYJ0UuK<@o_6I>?umZK2#I^t22m_-mX15D%_N?C*2Sf`(l)$^Qkg#OW ztvy5l0svv=PARSD^=2VYz#Nf-CkjR^?n!tU6QCeK;3#(hELoxg7fBQ&-oPXrh}Xu; zD|dtY0CW);pw^xa#E1^WLpgbfq|dxta|n`RfKlhZeP1#Q5QKhU;{{9K-=I(O_?Xw@ z_);SS@=z#CzxM*_61{Vrr@i!Wduw^0f&YK_5(-VDSe8?M=DC=d{ci_m=CSsz1+i%G zl7OQZzd~@B03o|OJF~MpJ2(IM50E=9NDD}T{u3}CfiV7<#8Kf%ea7GuW6wFf%m7Mb zfZ&7YSzQ>16;c&fL3jb;UIohFfr*+>sC}h@zjQrWb$<8uMU+UOgjE0-0$l+mCFp7Z zFv=x{yf}72biQGb<2tqg3ppDr$XWRz&!#Dm+LI4&;Hl){>rovEdJwi}Lh;KPA9@UDIVQ-A;f0YLyciM9c&z#EJJ00BV&6+&%*YVZc*S#jAz diff --git a/samples/h264SampleFrames/frame-0221.h264 b/samples/h264SampleFrames/frame-0221.h264 index b46a74c7116528a4e434e4a969f2e73a333b29f5..547396d4966fe597e50f3a61bff289b6747a512b 100644 GIT binary patch literal 1830 zcmV+>2if=l0003AFaQ7nL7IRXyahKwV^`Gl=KuZ>LM8wS3^*~&T&QJ95!Zz#q+SGD zY!blmDRsAoZ(pYGij{Q~p%?%-;SdH3AMPH7NR4Z2UEnY(2yB2Vag|Fn9cW|Nh-Y57 ztcJb?2+ z`uM4vKfy9@z!ND7BGTsK8l;AHnN@ z<)lIZ;#jBm{A>Ua0s=3ViEPVwIs+k405~y$6s0N=V$uoFC@FhE3Yo$Mc{cLX$(UW& z=G=7yu$iJK^e_&ESZTzivIPJxQU7=dim|~{arjRlj{G~jfB}XZVoT1!S)B*q0Ajm9 z3VN@d!~s-bWN11000*dXf*VyHR;b@~KA=GzP{JzXtV<#A05Iew&$gB0B1o!#_kbAy z3?X^L1-6jAZVI3JzytshaW+|CGSF1rIXD0$UIK`B)W56mQqX_NvE6kdS0<>?ADcsT zHPq=c!GJy#eTD!BQ@{oUM2_;82&|5N01g8Lb*<>V;nscDzwd_N12?mThua{Ua<5R# zh-+aIaJqrHv=TlJMJ*FV(m(rn0D!?eCk?T9G@u9|1EXjRIs$dk3*oZPn_d7i ziMY`%mbxp2262jkfS>|^91=(UXwxGL7~F^dxLy;S=A;zydtHtg1dsu-u@Gtl%HN-G z22}u17DgD+HeC!BZT-Lu0CPir!3}AEQS%3Y0v_{Fr-h&x1Al}7P)c4*@Vr9tsGb+E zD~EspAOavt-Peo_=CO1sM85;K%$W`%qm^g=W|z$a(Z7JG0Cfaj2`Pn1r-#M^@jw8a z02$?gIo>o2zBNhEel)-UKo(B`zyUyx5cbTo-GK7$1OfpxF>okT-hj%0A@w@(A5H~M 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 JYJh6+2IHGK%D4ak literal 978 zcmV;@11eAh)J2p1zyKJ43nmaplM%3!Azq89f$$>XaE@SbpwXEg4~m(d(ighde1HJ} z!f6*kM1|?Cpp;Ej{op}4%HaBv0Wb}&C!>ug&j1;~06-GEoDwqw=wmL$nScNw+5iF+ zzyKjq01qZ?%a~!VFeR^G`;YK2(NaB+g93SfLvTYR04oLn8P^1WTp}2`+&};PUJxG1IR*hG6uEO@~n0CcaE@q`1l+T+g<@Bj!3 z3Q)2lWS|n<;!HmPlmLPSG(jepI(1S*Nf)n4;4o(p8eAVBus2p?D;Ca^d;k~-ArooH zdBaeEhqcgY6TE@|P$d6=3nPyqVF)OIgcc@v0s+UC5>5FTDq(7;L~;|qg5#BdXvwtk zA@UhUbAY~i{GjQ)5~G`#-NQf&2~tB0$jM z1P>rY&P{#G7zE!@7;7<$w45gY?}4!sVTmY`P$z$>_y4^E0H0tG7bSQUx`3K^S74sv zf|`-W3~#QALT?N*OaMZ_w8hf}0KOE*AJDr&f4)3c0vJe!r`w20|Ge^E$qsc+g>|t- zgJT|#jztBK{`tuO0M~#x?NdOI5c5@KF1!B!04?j)&HweGval7GQynWO|6nGb5zFsh zLBND$jWVXs|Mf5dqBWBQ`;iaZcoW8DnKae@|EFXK7y`}d)3pbm)00rUs11GIPQ5r# z1{RPZfH)qP>N;Evq1-?Yg(HquJa86P^-;N2EzW>Yc70-Ldbz*q!9+xbpXZsoem~z~ zg+pZ&klw$}*ZbT5{`>q1r-gI*_y@)S00BV&If=RftH2wK0003&02M-RfNJmt;||iI AnE(I) diff --git a/samples/h264SampleFrames/frame-0223.h264 b/samples/h264SampleFrames/frame-0223.h264 index 985b4cd96e857e4545d54a3f79ff778ad741eb10..caa68b125dbf5e3b18dc4c152c93b30e78b83bbb 100644 GIT binary patch literal 1165 zcmV;81akWT0003AFaQ7nL7KoCyakbe@Q4V3L2dvJI79)0$N7hWQX@*r#{dIVSkgaY zRV#V`!-&+CHqA{4QO)W+BK?xb0N@qq^dB(fXEivb3=`coueVLO>Te-hBL4w_P(tJZ zRg9`ppz9)g5e)0s3z&=S2><~AkyIey!#goaXs*kX`~aCqQ5Kgs5Y;6a$N&Tb0cn;1 zXuimozyV<>7WW|GMjfh07h}6$zvA9!vGrab03h^eLae9#0$C{~W&gQA0e}?l;TjX3 z1cVs=#h9fO13~4=&R;)YYk=jXLIL7fr}ka1`j&wQsnTAjNQa4HwqO7t7R3Mo06=J9 z&SC@7hdcx+SzfWzHR^lAD`eD0OAc`N>G)aCAN})rNbxyAY%~+w}?wbHMUKZ z@MUmIFUz7FW4=a9s;(!4-05i(~W4ve=d}fo50AK@}8}YZ9xC$HqHdvk%jh?;0SgA00BV&ZYHn>uK^%m`~(Od3=)6?fmq7|i-cA}1_FP831QfQjWk35Rb*Ug z8JdpP2hcbUCIIF2rGo?L3I%n$8iqhU4Xr^yKU)Ai0!yb|bq|YlF!J~vz~Q@uIA5t} zo`P0#Rr0N~%cZMeGTlM2pHMXC=*&!i{J>2-FPFeXfw)2LAW&Jof>>}M&WB)A(pVr? zfyJ7@KVD`xMa!uvCl%nrZ+6H3y3nJV7@pA#eGicgTqI<9!y@C0L;M8O!u#?BfZCUe zO6CgvalJf-^rD;afjFPmj}cB6X8>-OGlVYLhxhrwFb^Y`Aixa(P~xqAQx4=202e)7 zHD>$30P!Mpc_yK}}qi*Sk zwYK1jR)U6L0alnwL17I;lvn|^;NDHQsb+zd_RFAUpN#3V8R(N zAQ|EU00a!cE8H`i8W)3J`d*Fz1to)i4$wRHw*OQB<=_Aa1W*E&1+VImC~&Z|V)K77 zIZSp6z@sba0#5n>0RSZqFcVHzr=exyC?tV8Z?*^mh)3cCGl|*sD~{sd001Bi1_p?6 z!84Y@LzY8#3OmLDKmZT}brT>6IsgIzzhYA`2|NMdC>%>z9B9V1Muh0RdjJ*1C~c zvB0(d25=BqKmBX5Gf++;rbW5oiVbv4ixV59BqS?v7&-wwzn~!E!APh8CWNK%jjFDn zfSeQ+&iUz^VLwbblk8Ae|=@R%Q5+4bJfIYiVL1W3}NNgfyqd$|Mw!WRe)+9>fpeJf>-_E z00;+*VF77Zji6Fp4E62+-y_5UiU0_u9(C9N5&5WC6M%Bm00IEu7y-a>oOEthq)yz` znnD|jA;T|5sagMk3Az9P0YLz6Ch!KY0U%%e1PC4s5P$*zydug9HW6tl9t(gP!>kA; zmIwVSBIrGp-W~7oK7qh-FbK=*w}ux$C>_z=^+Q6D?pg9YKbPrG*C)NQ8T@E=X}-=Krmd60PPfK1V72% z@9`iT04#-B0l+eV7D1GLQx5O}bLq*eH{JjPiA#-guUNq!|7dE~CsT!&nqK{26i$qr zoj|7kg94x(Nz6KfUW)plFM0e4r-gI*_yRzH0003&06B@g0jt0pi~s-uK>!s(ZvblW F2ID=BrP2TZ diff --git a/samples/h264SampleFrames/frame-0224.h264 b/samples/h264SampleFrames/frame-0224.h264 index bb0a987e9efa3cd6f57dc211a8e7639e8cefbbb0..80c069235b736627726e7b0bed4d4b8cd1ac3d7c 100644 GIT binary patch literal 1677 zcmV;826FiT0003AFaQ7nL7Lziyaj^93ot?e2wllL7^PxjOLE z+y6`9Xi5_n8v+nVfCCwjBNQt2Mlh0Dz5a1IeBs0|94PDvF640UFx?R+a!Z@f3sf@vbTC^wR(V z09N1tAW0VK^h;@g3uUHqPmS69Af+RK0DuZEZvs+t|MrL*j2cf= zx^H-a9Usw*3UCkvEx?jVGs=<4v%+8di~ueI?X8UAFjsHbMt}f7A#ekU+?>SU`M8V_ zGWzgZuQ-{qpZ@hV0uNFoy-1TNWJnZ676gh0yMeUUWYl+k0Z6VYy5B+Np3y!3{`kb| zVzBDIYLuRbFQECt;6fO2BME>22m#bq1APj)Tyz2tf>E4)BjUeUEsxk_F*uxp5~i)L z!0=nZdZE#8`mX@c8-!98BU8I31^D0~R!9aS$xfzB92p>$|NrnVZ~_bm%`S<;m0~?o z55520JOP*huL$V!J$g52D&$7P?7t<7mkWq$JU$el0+9(yrwFLD;MmUuD#91Wfted* z{=5Sk0*;!3vmyvNPy;l;6y@@Q@In$01pwGT8Rmd&I*kN2Ncsi@(r&x~Ev^lRX-e<< z(8#!VDOxMW{(IhmvhoKd=kb5BjZ}ZXkBK|=b5mO;O`fF>MpFO=0e37G*_4H_$w?IK zUjOSxCvndhr57^yO8{v8wWTY(@L&i-Yia5C-}3mNMuOm=6ov!iH_@hJM2A{%X9sFfc$ZleNh~eD z_Jz+0u((6XDG&begCwi+Fxm05W29#WyIP zh4?QL0&R>407wM-n?O!S2jX-(-i!!6O(2Ow_C;ef%2DE2Y}5rjK9^1b6a zlIV>R^8f(=e&9G(USuXOmlt6_{|(px2mydn=B&Xua#Kq$et!UTp@^k-np#Ux@7x$R z*`4U=G?PS;|K12BcB<4mU*D|6Vx1>2|M@Uw&wg+8Z$XxUI6X*SLdqfTnunxE z0(T(GS|ipGmJ~%cu{C|;ABqEjA(={^8b`yw4q_u8ANSw@1Orj90Fw)R2GSmL|8?fs zn=sVpJH)^e9RL78mIYkkDjBi2<1aJ-_y9I$CB-1euaGftYyPxDPD1B1l#dR?1u#Pl z03DKtM!)7YcOQccv;hvl0003&0B$C@2Co7Oz~%;n1fT(YPjSQuqNDr30p`fE-dMvD z^RyqaZ@j4h24Du+T61QC3lch@le z-W)kQ`vU{`U>j>o2a>?#L!%XyU-JBF!UBN+xC-8+8b~b-i8MOWCK!M426x<_p8y@G zV#V4t_Ml#DAOHXV|NsC0{0Iky^aqeQAtM6Z0Y#EyNb!KCIN>mGKNpFt_s#$h!x!oY z6vGBRKM*2>W0=4k!eYN(^k2lEIu(J_y>`TYC=K)?V10YLyc XiLL>wz#EJJ00BV&6+&x(YVZc*faUsm literal 1618 zcmV-Y2Cex30003AFaQ7nL7U(jyaj@YA%zIw1J#eQBbAJRArD|G{K|m7mkB7Q{n_xu zc-B9sPAc%8iIMd$;w&masKI~$fpuq!BNKl+Ea8n}ioT>*2(sV3Al!6uDd#PIW3Uiv zzP=Y#RI5+_^49D)gTd!k9q)jYVa6SF*1{a!`$88U$13hd3QDuTV9mk7;<@f)|9bc! zG(;*EU}PmUxD^@g^n%EbzmVWYSBR*`vDeZV+C0ChEF05~ebXEask?1iHD;4l}4D#!7WvO!fAnB4h#{MpPUAu5uz<> zMaF;soDTANZEx@QzylRb(%ijz#XSGJga85oKqD$sK)cqr_l1Eo!P5?5AcN(C<_O6| zN?-xdor=gSJuFI=zW`zmyZy6MLT)1aZE`RH5jums(efs-YsSDZ2Dpqh{!9pq8U`y0 zB54B!xXT33_JG0pT!IzXO*CzQn(#+4cmV1SQ8fu_J^fPnHVG7fkRTBh6d(!!H^KtQ z2q;4sd(h4-iGTNj01>JW5?!3qz*C!(0zB6BC;pF=Z0o4P!(A^RNIg4t51bQ>Y^Uoe>FLM#d*%|M-?)Kn0GoZGYoNV}VK8Ix1{XtE|4UI)jG#KI0Ob{c1AqX42muHSuHqx}f;A4D?f?GB z7Q93$7>s@I4gd}^Kx&h~wnYxMEjK3nZo?>gg3C3pzj$N=5ED2xiisZDcon~B$C%&% zAc%>$009M%01zmY5Bt*iFAxMUz$6L>jx*z6AZC!(1nCyH(nNS*03Z$=NSjjBwBAnS zrTYHx&H$h+|N0_Az(vO`vk@EE00;yQ5m%@yMhnm{IxCNW06+!@d8Lk>sP66j*wgc3 zxDDcXA&lW~3W`*$q8Lc9KLG)bH~@Z&h=p-7|1t=aeozfD1ZOCyScEm!h=2*Y0003&0B$Du2Co7Oz~%;n z1Rw!z6Zqi_miPC71I9{=KP(_(-|2vBbFJq{SoU%ZCIDA&R}c8U2S~--j~>rqzz5t% z@OTwaolFIyjkFhIp$#Bmnb@9Op{>>&3R!=!e+&ToX(t~2EEZ%JxoCQ?`F=HF0YHFU z1#glD(hos1Hm4VsiGzQ?13T9z=fDRv#U3|NqI;q{uz&ym|NsC0|L`Cl70cjx1Chx* zSiq+MMe#n51T{pMc&A(&H5Lhy=gt5KB#BG%1^|gLO9R350tU()qGCc214Ywed&Gup3V3sdi+}(?30*)7duMVln=Jw}eBKtXG$}*$3GT}#H~);$;7B=bDqOit54-)v!ED>3$e*ywuaoy>`TYKV0H9z100BV&If=djtH2wK Q0003&02M-SfNJmt>BJLe3 zqgnfa04M;Wk!?l3n2%nltK1B?P;{dr8~{{8fB(I*0096ZTm%D%2^w@%TtI&rZWseJ zU;%}LR#yT!>Jk6{@BqQYB4IRzZFX7<1QKZdNNmJpAP5tA3o)rhk%RN?Jcz(JA`-;F z0lovj@F-x{@bXma*Z-IZ6X!-Kykx)tKsRN85C9-2q-aURoQwqRtuKI<|9uq_ zAw+0rYyim$D>hM0`=9_jW&kiit5{VKGkBW-0RWA30l*e9oPQ*9W{7TuA~=h1wt|3N z0}vX9d;l(T0B{dylDR-CAUv&IhVO*@ zKX=EAXa(kADj+ArhM+(Y0m06H)X@L3+Ytxg^Z>!jd(&ib!Nd&`@AvtV02y5Z4kjVp zxG_n{+3GmOp~aeUAN~)301yZQ2}^o75x3-el|*0171#Nag23#syXp8m0*IUl9i;k| zf+b-50MSlx$AF9dC>Mk0ECV_K0DyLKtOXUQ-S&X^1Q~}yeD$^26bgNK!XU3&3Neot z^&Ia2L6M_wU-J1{;hkO^01Q?rKt#W%(hzy_}Z2%lha0}zqJg4cjHv^1}~0Ej*Y zY#G=dT-cD!P(*q1U;zNofYR!y03ZM$AfN}@Q82z=14teOi3D~acv=82FBc>&e0IGZ zVD3mVy`aJia|Bb3`uBkxmB$8dP{h)PhU$1*-{^gq2s9QF;p5o=Qhkw0Z=EU0e`)2Q+O55`Ih5I`#cQ_$=K?g&IEbjT$@y8B!79k3>(sm z|4*?ZLxM$#;lM9$WRpA*rizRP8lJi^k`M+_%BRd2xRyTmrjUw|Aq z-gXToB1tBz{|8kC*^(bpU>y>`TYKW lKcCO%^Y8_u0003&06B@U0jt0pi~s-uK>!s(YyfKT2IGy;LHz&# literal 1122 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 diff --git a/samples/h264SampleFrames/frame-0227.h264 b/samples/h264SampleFrames/frame-0227.h264 index 641966d003025f9f7e65113a2505ca6b7e5cf97b..b6e02846e85d19770c11417ff3838689836e1b2b 100644 GIT binary patch literal 2754 zcmbtWdpMNa8vkZwj9ja&M#{LBE*g?sXvWShC2W-xjY}bN+uLQ(_`ZpBn|8Dd-3%#; zB0G|dnQ`x=T%w4Wk$sX}X5=!MnQt9+&U2o9{yyuE_gU*%@AJOD_xJm)=UEU0VH8c4 zg8faMwQTt{CVP<^Y<=HB6DLJB-9+ug7)m=4Xi&4vguRd>Gn80>iyS0)9=)C2^>q3?$ z@wugVdbyag`_9QPYDeT<4P2)z!|T^;bgZW+eOo;IGLRZiURXSB{(hHKxpAOQQZJ{| zvonDXyA4rMvmf;)&VR?%sUWbMDf|IxnO#V7opa?Q!gp-e7ZL)%!W8n(9*l<)8%2P0 zpUJVcJPc?28(5ldl~`NS*s50L>y7BgiHKm=ajntyvG_!{?i>peb0XqbP)zeOF(akV z)Xs987Au52K3;h(cb(sB3-Wt1WwowF<&8CEr0GNBYT~x73|1P=p&<(L@{5jYNnd3` z99c0-ob)L{k{{2NXFCBJ5&ne=(ri2P$iB{^vAVZEdCn->H$LWBn(X;12S(}oLto8b zZ~T9GcNCy!mma3wwUHpxwg9T8XqA32$e1zTbRm}q{6UCS?n_F_qoVy-hsOgWvk-Zx}AQQ zZiu_2MY^Fl2(XG8{DOqM*KQw)Y@O{YzZE6)%nWLvYP3gzvTC8tHT5UgYwRPedRU9> z6Wnjz%;(9R&!#OW|Pq zGGfc{^X%S{9WkZTVBQ*LwMIP*YC&j|ptE6+Tz55?1ACthNguzGTdgG}~=6Uj!mVgM?*h?d?aF_(^uQrQGJNK<= zJ?cvzc(539%p=ulMJ*5h^Tw8`3=E%7-8Fgt^03T&rr@Z|ALgbHCr)kSD=$K%{ChHs zKV@KV%x<%UqcE4y_hOyQD(04-0`X0X-K-FdLi+AGaT})SgJo0KYntVCrD#Yb6cSZR z2QgKTnr@$f+k)2GF#2*qvhgs90zOj@ND?ri_N6|-05n2 zCB>r^tGg~If|BOHYgpU69rI(7)ME*A+W|QZwp~DY$(GhtUSxV(h#AB zG@8%7-M3lSoX`DK{U7^Fk`Ppz$egUpPzv+9N3~r$%`NXlusu~&%Q*T>0W~5<9Pfv> zJU_?-A?0b8TOBCgr$hItCCWFJ@gl{5u$h>lCQ`~q9fhEeQ2Q1JbK0fY0B!S>r=XZ= zd@^ts#{jBUpQYB=T86LK^*7)KIBZNCPyo~`<|0hz5BAG zBvr*F_qg=9Kb{S|0XicS-DiE5UN*V~v{>MY=x=PSojK8ZOqAl2R2bXu`u{j^LjG8{~ZP;0Va={G@D?C zsO_oRZb&WzS0F6b@L|T~bEl*fRhKdsDhoxyKQxTJQibEGqaV+Js(QchQ5Z}Q8wm|& zt11~LIgKT*L=Dl(lwvUP?#QTH73XJi5xvrkd$87{+?&hZ!?T`eA8&Q;Y0_Hk*(i~rNqOWC@o1jbhxD(Alq9L+si%b%k46&O z`V%arY>gDTl@7(7hF4_M0Ur0dSqEtM?jEIttaAXcu;$X?I|~yh7USxet~x8vSD~qE|DqORtPb$Jmv+afDJVW9oMnIliCb5j}l6mz(%*}@dVn;ELwNe$tG;LLzbC<@N6mZIFpX-() zz5n&c{TD9%k)424)sN6$^^1sKV2H1+)hakC2d(3E7#y;)<`J^Dw2+_y(K6?Dyg}X` z(GL29^YE)}d?SY5_-$ zQ_0v(OgpZ2*u+iOh~2xatHDkYkHhWYK@_)@hSF(8ZP{XRo+fsou zWz$!=&uO&m4^Ei}oX?o~pU9|BsHGV(-z&lzN1%u&UpGF*O%2p_s~Zm7^r4aVQ14uA zx0iK~&A*DO^5!SMK5fbZKNdq-R0@+>?IY6*QuN10pq%~#iS>oMm=c~A^T$Es=TIa} Hgd6@BHtu_= literal 1009 zcmV0_F@D*BsAPcBg{9}nR3^hi};KWd9I6M`C;K0ZL zHn!0zn?(Ew6rjZKJx0Xbx0z>vC!yaO!HyR|zR7?4f!6>51H-BS06=U5Ae&V>UE}|7 z0A>IJjTG+0r-9sLIjdz)gVKmL3Ls#Gt&5#0LbVFrEcT!T3~e3&Xo~V0LK6B9&jckg z7(T57Aazsklet5H8-NCkY5asUAaa0AWaz##;rJz!v_^k7p^ zDUNs&_)0(k3mMS-U=?2(BMl5a!wG&IU;2ZfF`jx^F(aKSgoaoOs~U;t_W4hj)?-rjSz!CbyD3xoss zNEL_)jPMu;1PDzHhY&^!voCRu-~-^n6rOe&JQdDTiw3ta0ss||;C~E6-|xIBK?fe$ zU)+FU1nKhe2I3>6@_>Oixi~?eh8nOExXQ;9u_qD~d^>rI06+gBX9yjpm794S00IO6 zgbwMEa4V^uu&4~c2!g!9N+L{}Ego>0R=gNxFk9ia6b(?5-5$wO`~bm>XkX-b(U2%9 z#cmxi3!w)hl*W*$JO+?Fn6*$-nIue#UjY=@#f4?E^nqBwlK|9f_QH0b>F0(R)SDTAy3|NsC0{{k7|9R7blpU>y>`TYKWKcCOQ f84Lgb0YLyciKGFmz#EJJ00BV&6+&qMYVZc*E6k!1 diff --git a/samples/h264SampleFrames/frame-0228.h264 b/samples/h264SampleFrames/frame-0228.h264 index 7ad901c69b11773a1bea7aa30109a0b015422045..71b9ceeadcc4413c8111e57001618a9c0008fa56 100644 GIT binary patch literal 1219 zcmV;!1U&ly0003AFaQ7nL7G4syagvHSU!R=m~ehwCBZ)rBGAxl!qbrQ)yzaD2#e(9 zxj_dr$AEwc;TI=x{QyYZfDCb<0+WqktJH6jYFP7A+0j%m7x6iMMjo-NB)+ zffLpM0s>$LtzM`hI)8v1Z00M7yyc_&H2?sBAX-F#Y1Eu901pfTzW=!nIf0Rr z+GA30cgNe=w(xub4+M%uU+)1ckhxL+x&SZ=R$+())(#3^`(@=}fB`@lP?%+x@3q0p zSr|M@kp2h!QDb0RQa*ezx+lR7qyPZAhfk1*^Osy9XyM*G`@q(V4FUJfKL#P9=7_p7TB5fJLBH`T$ z>4SR5N!wALf^8g9z49`@8*C}nG z6?_Kj0)yFvF^1J#QNj;2FfK*WfB--@WV*XJ=M>@4Fdw^c9y7zXWT>+VJHbrC`~ZQ4 z<=m;5u1v9$Bz_OTH!|agGOxL|1jY;4$QvXk}e$^a682)BSj`dBK+m+ZI(0HlxFjbjM}nkZxe|8aQ( zK)pC>6iNeX1MmPd0m@n!6eD^>koscNfCfNaRJeT;#ihkRRb``*qbID?+g#ofqt0L6 zj7!M*j>RJf#zBSPqC&<`95!^^$NU%(JDLqSiZcTZ5k9@Z2_yoEto$kB8spu0XN{)Q zJPH8jg~lISbRLaD7a{pDzy#^63ms*w=)PynVI7uOvI2fxyQVG}j&O?^Vihge}n`^1Un_jNo;&~C%l7&Fc}#r z(;AZa1!D*it2#e@8d-6GpYz3VSbe}kb)Jx%%P!tY((nKT0Z0hoMwS^T>!0@z4TJv} z3{>iYjN;PNL9I5opE6@bikZv^@RUTvNTCjZ<#Q#$$}4x`c?L--oN zz(0_HK^Xwt@_dy4a=8%A+_S&1T{p-pkJV&LUf&S?I108WN zwBDnl+E>T>kS3SF(gqIZ6}B1DXw^)D9z7B&V22Kbr}+d|i4qR;Ii6=iG?aP)`l`@$xYk01Z?F{*+8>4^X#4Zo~YojL^m3=j;wQ~&@0K>%(hkOr>;AfFTB hcmsQY0003&06B@I0jt0pi~s-uK>!s(X#i^Q2IHwSDJTE{ literal 1037 zcmV+o1oHa;0003AFaQ7nL7HG1yag{oVx+xFm(`^Om7bW32D&IJINFosMB26%x02oZqJ@XlCNP9E{f(SQJeXzCNtMuBfN7TRD8 zi+}(S1OTrFr|G!yhlCaqm)>Myn5Zg-6Hgp@uoM6n96(hW3Oxi?okG|wOM77er#+y7 zdCtyK6@j>i-~b2!14wzL6dYo>aLItJs(%a$00Oce1B!qF9xZ<$6@PdKfkDJJ=))z7 zhc=FG=8*gY!Bb`g340%+4HlHBY5-wG4QW(3TToL}ubvKkvoc-jg3-PL2vtCb91uyTj~HnfI-U%Nmf|13?gJ<$8gQq|3ydbPC;9)l00TG> z!rn*%!3_xQ4@W>h|J(!=3`0i-TbL)HUg+l+cw!h>Z}cJ8jD1s~6Q2M8KrA{K8xb|_ z5OI5^yjQeR)x`i$#Mt0IFoH(4_gM@Bjn= z!qdR#&AeDwl~u)GJb{V;4nqY3WyYZA$jFiZ_J9EI06+)=3}(ca^Kk<6`;h^RU;##k zI%s$*2&@oQ*Vxhl4M&Fdxyj5SzJluPBf~s$Kk>ssH@H zfH1JQxN7gw)o9~iTkHv?@HBygxrKB3$)|UB5;H&`q0k#LFd@)785gCRR`qz1dA$z0 zyRYwAQ{&Pb-U<@>fWD3vo6O%3>ZZ_f6X_ChA!gC+yu5{8ktn>!+Q@OTMoig1bZkjq zFfNlzynB*DWDXLwgYSZ$!4SfsgfI!BA$?g`z`>jLVMeGmHV0~K40nNNTyO3827{0YLyciKYRoz#EJJ00BV&6+&r% HYVZc*n^m@G diff --git a/samples/h264SampleFrames/frame-0229.h264 b/samples/h264SampleFrames/frame-0229.h264 index 29c89c8ee283bc81a609a19f6ee63c8af5c68831..cbb406dcb9e20e72d3feceaafd86e9b217417815 100644 GIT binary patch literal 1441 zcmV;S1z!390003AFaQ7nL7HG1yagW!hB2X^I3Py=#?>mox#585H`Le7I*C95W#Jyf z9MW<|S$nNu7zgC`XcyFp@SZXhX%hUS83F-0NIw^704Fb$Gifof4EI2rLGUeW9zTxy zygq|r(WS)HwtfhzhH6A~`8h-j_{wqT`?${^U7xhlRT2lNcQj#Op9%yMO>cl0gAw zXXCpBP&EK%GB@`a6&HX2dU$7>h+NP7PXGi!6Bq;z3%o_yxq!@`dj-G~zySj|Q^}Z< z$tL2aJVF|f6fUuZuBkCfmLC|x`a;GQvx)77Nfbm59&8Yax6pgw!GHoVz+M7-k-D}` za~hZ?03quRvpM;^0097!mHU;!E1&=f1fyUALR$echZ_6XZR2{SQk0{~fJk%z0RgxX zQvuM8U5@Bs-~ic}mpce*`-Cg?q8fI5=67d@Vggu*U;$>{%9e!pp?|nP1$Gkx_mmpI zn0x|30|*uj6W|E?`UCIl>_~t&fq+;_0379wWSN+EgCl!s7GJ)QW*mpiYu6X4VURfpeJ-r%(hmJTB7 zKq$ZsNuq}V6xqN5CCkKe*tkhRcuwZ_&#A;Q_OS{$GRDe$k5iVV{$GHD5rBiCSO7dB_oM^kSodMwa4%G@B=9fwhpA* zeBodFga85nfJH>6gKIk9oIW(8yl>&)g(2ZZ$q$o$?AWXT!gMQQkxD12Dew%yZ5Mhi zKTVFdy4;Kby7!9G#liH5UU&=wTt*hZeHkZcGMHveaHGn5#Gma01;lb3gk3C=HUewG z4={fq0Kgbl01OwwLk8UO4rGVJUhAEg3>002Qopadb!{2z#uSrbWGO_^b^%q5CZ@NI&c^&I!s?bp_NBYd6`8w?32>p_*eh#82|u)0D!of zmQD@+=vvA9%z7a}06>GP_J9(0;bNz+%tTI2CLPw-@BkP>B@=^PrjXV!M@-Bga45Xi zE3b$C;MAb2)62B`a~SY|Ac$rT1E&5*WMFJ20WUxTFats;NW7W%+ahm&ga3)V&tvMm zKL7*)j=(-A!B+LE3W|?$>X-lm0bl?i762qKEC?Uq5Kzbh@~dSY8M>jNb}exIY*W5l|fPc6FtxjYuYJ0dj$a3kC`BB;UvENPstifLKU$c7QpoHIW&I z^WzD7CCq3xf?GfuOo1{}}})nh z#CBcTAN}kC`W%&6J*hqdY2ked7(R)OpqP~wzW^fGkxoeU$L$N#5cPOH5yzPd zemsSAPT+MzC|H;Xb$EjJle+~RzljrqIS*wH1*S#|VseC+AZGhA3TR56s$T<06*N~9 z=|Gkn|4-4NwOjxEF;Eu+90)DnUJ8%t&?tuwo!;*PVc{JV;zWuH0cX&h&ro$br4a?B z2=9*t#^F>^5WC%M8{j?t|EzF8ToyY&k0|MX)^w+hO0XQK;FjXEhX1>qfyxnLW?_C7 z02BZM*b1dD_?v`q0%6P2C!fER2^Mq{YbV#RkNu_K2DXISi(>3a{+@u$^pH+~L`;|f z-Zvg*&-$O$P#X{)X2tk)TVE@x91)^M2?uZY|L*_Z1kn+AkBIzK0003&0B$Cr2Co2k eFaQ7nK>#_4r~#|M8;k$|0YLy2LTUhN@CM_}_~)kp diff --git a/samples/h264SampleFrames/frame-0230.h264 b/samples/h264SampleFrames/frame-0230.h264 index c9d41639664b740d409b1fb415f4bb33dfdcc213..01ef825f34cf1d5e2fb950ffb9de9882707b5ba1 100644 GIT binary patch literal 1496 zcmV;}1t|l ztD6j>=@>w+0#5}O002q=DgzF75Q-Qn((RQ#Zbm*3<)Mj~H>^1U7NA^m8~^0i9Pj|m zw)suZfB+y1zz$GG7Z?^_vtDU*a{_<>ItHK&?yxPjv3@*%?=l1q{lkNlB7fx#KD~Zl z1Tfs}6rrDiGvo0QI$=C~|3CsC;)zE%bEv@kFalsPMI_a_&6gsB8T)_$pbm4-Af=WG zS&|s{2KG?@*$}`4L}&l^ynq0SU|@4cg4{kNaDQdEU>TwS5by_UFW&&XAN#-zIgJcQ z$8sh{8XDfk>H~Zq!9Nco(9mnb(~$Dt7eEow0<|}RDg(_ReZmp3tI!C_-~}A%4GZ|4 zgfVmFafH22p9sdruOJ}IywN(i_CE!^07fo6k&`Xb;F**V9^Yu8vMBo4oh2cw%1}~yTA037a zHQ~08kBmp79jsn%V$I>7`wVU{^@cl8Ct&3ENs<1KW`x92>f@<%|Hs zc4N_@qY}E*8*G3!q{HP|tt`ML<|r)JQ4B&|$eWr(zNZsk?vcZ@d5j0KNf<0IfMu zdp18xYAkTK#{d9<)UW^q0SyJ7|K)6;MG@sZ-T(kV0L4-z zUhFZVY5#D5z!YWRTyh-evhySNq(Fp65JxcPIE4lu+%W9?ctHau_&~832EeMrTR!Ii zODY4Qq9&id(+!u1EP+BiB5~#67}(Y11P}{=0hP7DI1nCRDp4YUFcq}SfB-<)00a{{ z@Bjo1fGp_fWUlw3;ELcCyfgh259Stp}BJ3El}!Q zEWL0;LB{|Hpl81El!&r5eYBHjTNw90ETc2z<+iVv!z%!v9hl+Km#kFLBzy6w+3lAhR;#P zEd&;6#DDk)zyJsY0R*MJ8VK9+9ZI4t?ST+6#971Id|Ch?w4D#^U0AjI10ww)>CZT~SYxV#b=}SRGXAan6bV=+a;62{J zo=I!q|I7e7Ko7u(K6&&!4c)5h!!AXYI#A&3B9^}^NF!hh@$43uM4ZNMQB-;5s#_NfTsbpja`QR)0yoF51@9OZ5^c{f0kNwmH)5ATOcw!8##-;!e9lN9BAyXfI`5!zG zWm3!rXGnbF`{%ax-{cPfGF0=%9o0NDz`_N9h+-@q0D_GGGPV2*0lU6T#Ei)O-l4z` zR^}!YG1cFF=5HI-D!aI^_Skv@0%_r%AcPUZ0`o`HrYonr_B=?0AaGUZ!fZG^4+bTY zlp&!1cy`1`D?NBPPlE3Mv=;D^QXm0Z2p^nG%-Of$s-?2oLCg$<{WzNY|6c>*re-?O y=ut}i7+_g|0003&0B$Cr2Co2kFaQ7nK>#_4r~#|M8;k$|0YLy2LTUhN@CM^kc9%Q= literal 1094 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 literal 1406 zcmV-^1%dhi0003AFaQ7nL7KoCyaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`I*VZW+TCi2mk|s0Du4iU?kr_!!6@@m;tG57`6vg3JF#cq4#;)_l5{?x6@cb z=ZamSA|PA97yv2h34H^JL4aZ6;0k~K16(lPJ2x%Ay}R%V00ICGWB?!=QufJ%Iaovf z@qmgrqHq~WU&ZoN_KW~E4DVSSOsinPpbVL9G1s~9pEMy!H_aVzft06;_#p#zxsR%b?{I)~t-3A#X72uLJ} zVgj$p)w%D05C9Mk2WEnsRDVdhlDODI{#U0>HFy9skTHJqKp_)2(bR%k0KiZRuVtnx zaw{H#|9Q3nJcS4b2B4lYh5`OiS!|%Olhy9%-2ec9Fbfke5%AO-{sh;ArYry)0|Asf?xi6#?+pphO27Tn z00+lLoYsnf1AqX47zisj&5`}E_dmb? z{0+(lZ;M`gzwK@`%wpe-e|MWL>HoL@2tZUdCr9Sj-(hfB?+64cwzxI>R#jV2|B1F{ z%r$pjV>sug%M-unGUxyA0096ns}924L;ha_0hpT}-;8=8zyLtAs`mg16`Z(gh5!J7 zcmN0qfCq==ya5LVKnc#p)P0yP6;+C7!x*+-;t)b`j0|G2;~umbY#s>E3|CHNIlu@p zh*C{>Ng~l2VaM_HS;2vXMzCZ6bqYK{#}V*u|KR)u0jrz~cAM`k(@FpKK}-^ubv<2r zUl2MLg~SEMd}C0)pGcl0M=r3C#C!l@%v-Ssz!W&!c8WCdiJVl^8HsM8NdhF`03ZUd zpfEc7t6QXh_lU>$A_wLZ7GwqhF~BwkzFGzRJ#k=8JMtH?>Dl}WSFdvy{>v)^2o!=J zfg`4$`D9WPzv)jrZy9>||NdYxYjUG{HhKR#K>IV5_~X3aGdF(T1k=K~f7qNzQiR?o zsb^mFQqnaabsPw{?1~t+(*QUd5b$9uSPbl+i4<=TEpn`j1mgYE!n*N+NJ1MYC!fE+ zi8I!B?3oD3*Z&5H0AT4kz!aYpb9cY{fxIH_WpcASe73}>kXT*mzt_04Huk*l;7vR$ zqM=3}6oH`G4+K8f0ft4MyRooF&&Grmq&U|1f&*JUv5lDA0I6(c%`%(~NB{3l@%{c^ z7Rn%38P~tZfgbVj@Gpp%*Th6E{~L-jxdC7Wz&D3}UzKtKVIPrvaDTEm0|S&bK{lZq zT_F6c0HQg?M#@BJmjeQ6;avWH1(*N;0YLz6Ca?yt0C+F}00BV&If<+RtH2wK0003& M02M-O0BZ0C<9vv3vH$=8 diff --git a/samples/h264SampleFrames/frame-0232.h264 b/samples/h264SampleFrames/frame-0232.h264 index 15a78300f9b248fd36d9a3bd657090fcfe68d8ab..24b272ca8459ab4c4d37ae87aee4bf32ffb347e7 100644 GIT binary patch literal 1096 zcmV-O1h@MD0003AFaQ7nL7KoCyahKwV%OC4{Kt%qdGZ+apd$bq!3a0Y@MaN$FhmN0 zfX@H~00sdLb6yHnvIlj1l3~a=h0SB*KWv9=#!T=%w1LzJKdd;JV2yn~)_y8cp zW6Np^F+`s73V#4V07M=F)Xvflll(NBn&1Eg0SbZ7+f#`tL9H+Uy?_`12oy+9DCh%p zlL;WqdKqlM*+64s=;81#c@h8t07PU!0Kjk*brQglqu+u5_!Jy*c&a>`&%gt_Lx2E) zfDB>{B45Z%wLC63E0YCsiKm=Dvg;3I#Cxc=wW&zj$;7AdY z4-y?}^8rv4K!J&3$pRp^0v*sKq0f<5RN!P9C)Hn9$=wh z01!ps0GJdS%w@R{H5D>{{tVWW2LJzyd7j7Bcwz7Xd5lLLqZWB(joJV}gai_?AnPZU z7b_U$S)d~||M-{yQUOh{5FQ^z2Le?52q-ZC0D;H=2q^Xd0D;H{W9fw4scM9N#Wh%HGWnht^aJd6PcscY(bekk$qo{m;Rj%h)IkW_ka*E;{`cI4?Iz< zaZ7l9BjyQQAP{&tw73Y8my;5M4@6-`74aNAhTzZ{)YS%oz(KGufnW+?P#1s@%9wST z&p-gXjmZH8EaU&RrE@JrcrE$_Xm{qQhwt=E0E!6Nq%sfX{{tu#fW8F*WDti85kx&e zLu(OqxI1~oBuz-0AB(?W4l$iNga|z%KqL2)CG_z z0b~n8f*b*TnE-;VC{>{V0U>k&E9*nfA)&JJ=EN~28OAhGE%3k@`v0BV#=rpgPYOqX z1TS}Y-@t~5X~$L#u$R?I${XaaU^;49VO$4YP@) z!gOF`r{EJ*pm72L1;Kl{v>AtPy&HMeKgxmvfkt}>%Tz=fKLM7vQLoOz0Z-5Fgb0lt zz<6b-{h(Zm858h=AI$LTB{!*r6eQZNc0Ca z*%bl8h>CrHd&~@*cYk;Q9+dM(_JAEf_V@e%MM@3;mf&5yg4C*t z+o$gT>9i%+^tt3k|M(aaPYdEaN8l#_4tO2XQ8;k$| O0YLy2LTdnO@CM^9MbD)G literal 938 zcmV;b16BM00003AFaQ7nL7Lziyak6RgsK2Ip8`pOPzYIWLFftq61XWX;{>(OHiN&W z+MpI@4~@V92A}}|pv0+Hb;ymjx%?x59smIVASfV3J(1Lc$vA}?)m|E$00aq!Qc?n9 z)=#$G5+nElfElC6Ve(G{K)oi}z?o1nmHq($hyu}-A|qS~bG1W{00s|%P1yxWfS3l8%o6|jWs%yh@8C<|ih_{KV_HK0AA~`$N&qYj00<%^LAb^i z7U4sCcwnmmW`3&hpei@h0#c{~7(*Hsss|PUFnMnsVYK$Q;ix3<|4=L80 z24yo8^(T^lz-q8CfnW+?P#1s&KbDgYkdOQTLILw(i#$R9+PsR=BL$D#^^A`)3Ze_I z^d<&y0U88Mfv=bR44_g1_!I@eKoA^*2tkeiAQ7HS5cyMu4N(7K$R@)~u0fu202WwE z&<26GdCe5)5cc2Gf9Loh3GgHgDIV{-NOnpUEBkm8P!>R-1&}QY2vdL;n>@A4r25K3&kxv>qL&W-U9KE9yO=utc=761^v-QRzK4G`0ixy7;4Y5J}1YMFEKsO98huC6%BwkH8ps_z9){TF5R1 z!@A2_93gwtGj*cBjHn}_2<=2AIpyVG2YM zP=b%vcvU)cp&q^so?Pu$-;ELyUn&wm|GWk92ur9XeF?ovNJqed{`_e;_ydO-6>snh z`GC!K@BM%R)>+%PfBLWhGBiaUe@N(m`Y;2(_n*E2BTwVfgMcNnfVyqL2~yoht5?P6 zx2f6$?bTUWu@Jxi0|IH`97l-!1w;S<0YLz6Cb$N#0C+F}00BV&IfyRT2;RgKZNa)}R0o3yr|E(BgY6XnyOW-O19Rsff6tZN~)1#Q- zfJp!w8xaPeJgxcniU0)Q0M9G|&hemK@tRIJ0e}j4Z`dWRFbO_X=m6iiULknYPYc(T z&}o4D0096I0#@$4U~d(RAxb6vzyM+kzao))Gs{s1zgy-^hY?ZA>b)cNcy_1%%kwfD zI+$8R(6k^v83qf$qX7XjQZf=kDd7_!b=XM!_tR*Fok)GL1azaiZ}o500DsKb%wDjxZHeWx2+J< zkh#p|BZeF>n`=#b|9|h+zs!K3*Kcy~z8%LiNGL;vAZw1Y_4R@uK)l*JitPLuQ(SqLHd6|@T4Ai zz!+8g0O$3Jfymw;|MiIsU7MulBKSY^03Bc-fQ>t4bQ(CAkN^M>MThs{7yt+Y1BR0h z@aUV8v}!WJhX$}Lfk0XE0ze7sX2Of3Dg)>m2BHc803PSz+tN;2lD%YWC@vu4=~Y@n*&N4#IM~!Fw!%%!>Z) zcpS{q7iU2WettFI*ko-qVsqFBdhruaqP!CJ)580PK(YlPL21wdP5=l3T2KW(fMpns z(*sNin|MXkk`$_OPkmqy1D8iqj2s_OFhET_FVP5XjrbV_O1`dUQB&V;{{#Ft3%(hxCXBPcrX9}0YLyciLL>wz#EJJ00BV&6+&x(YVZc* D0_h9v literal 1058 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 literal 1382 zcmV-s1)2H)0003AFaQ7nL7N~Nyaj>$z9iTnL9kpfC;$im0sw{;J|>%;E###qd=UO& zkOjY)sXS7+ncBKYAP6&%BmFDzx%xp@}oKrz(`Pw22IyFd$}wLPzCju`n4wps;_^{v#X;V<0`J zqeyvC0qGb39CR7<=uu7k{qO){2rdTK59zO*T$aEEn1Iyy7Hn>MP%v9PUh@GGikApN zlfP8eY%uW@flR`0@ZaA52u(~z2^g-&|N6iDF;??i_sV00e>8 zbN~VZQA$$)+nx~9Vh7QY&j&v-q=?gi5X9jq1pd=tasI16?EpYB8c+=!k2eSGAPB!- zCyd|?o9a9b4p7gGAups)`hfMz+p69G0Du4i1Ek|xxiydt-rYkEao`3F6$wP?GX$T! z05ECLP-3Qa!8u8|vxPB=W%GfwCYTgN1A(3b7-n9qA>WXS9x3sDn8AjI@B|rViY=X& z?GC@>5a0md03ZecLIZEOi1^@*GpBlg|L{Hv)3Ov--5OnBcZyLZL-&9MjDVdZPO4}U z=$x(g+!ktcgOg-|ZHTQ?zzYxtC>J;qw?>Y4I1R}fFwla40Dw0m7=Q;rG=eSn>4=HQ zq{25_SHJ)e0Sr{Ca3qa5r!}H_W-)KZzq`%0`2XAu$^~zWUVG2!Z#)nK43^|T4T*6> zoeXvx0Q;Z-LIR08Vx;qwK+Os;pB#022ZNhf~0#cc?-VfupAf;{gDQfMFnJcBbnO z%BUb3iUJtFfiwvKQ362G0Uik3?*N9>n9<$307Q2w^7?{|Mx@m7iscR*+M=5}804`C9_4TOGGkrn`0 z0PCfFFpd2{z0>Zu_x%ACySqRC?SKW#R>toAz)d_WtB4X58VqAsAu}J+0y&t5efo>} zivgSrG}nNcnKClo3|9L;OCA)?Sb}M`LORYB%w}iwFaB?UL8e2sO+|WniSq2-SRVQS znVEr>go-A-&-MRdGm#5`|6v2wM3NqWx6@z%NvO7!Be4HG@Z@NMlaCAV7kT)o4Pid8 zA1BL%D4)6EzI%Sb)i|BJ<+P{(KawO5#RS9N`AV;Q8@v45hMsQQ_7C7qJS(4o_<#Ta o0YLz6CddY_0C+F}00BV&If=3XtH2wK0003&02M-PfNJmt;|RN8>;M1& diff --git a/samples/h264SampleFrames/frame-0235.h264 b/samples/h264SampleFrames/frame-0235.h264 index d2d3f38ca0a73351d84060d877e0641c3f80cc84..45872e2b9deebd42171e0cc055b596ee9643be95 100644 GIT binary patch literal 1204 zcmV;l1WWq>0003AFaQ7nL7N~NyahKwV^`FaM>b#pHJA8*5(ve310&Vz>*NUlAOIi^ z0*2^oZVH5!ZMD71IE7#UrT_u~5j_9_05GwmCFVbfj8rks^qW`?WW{3boz#Xl@+~603zy=)0g(Ks;5hV=` zZzA;oVF&7J1RkVGdXXXv|B3=YDvXIbU&fdK2nFfj1ZV&$NxlFA2Ot}AFcY@4umk`z z+z5bt0jYL4zyKg15h&aM1R1~t2J^rWemu5#M4iC*q-}rzL!beG0f6TK>tcNbpbGAq zjV4bZ5X1omp?4loG)ZD4UM9c*Kq6fLRDb}3B5`>z01yYWL}LH}0RR9H1H~=?!1cll zK|n5nFdmHf09@n%;2!BGv+z)5u{5hfAqUI1|F-kM01ykH5ReMfl^3&P^roWcD{dSB z0RiZk0m_>_|Lh0|Kdin)N;^+~Xax)vi+A7k5#>C;+yDT80g9}Zd01ma)Be!`fGDb& z9EUn=yvX(Uq$3H~;yH#mf*3PE*?U6{&&PxiGH*l-5rAw8tTnUmm;zZ)9SspQ{rxc6 zc!J(2M~|F&d0-!a8rt9r1Of}?N+M1U-I)LYfv^AwB_j9$1Pp*I=YwbzK#(uMCiQbz z&%)1#xXq>rDUfB+x_1_-h!P*jFQxUK22;1A4@0Lthv;$j@% zgA`mtN2uc#f(ta_zx*En03ZwuB`omZPT!F3RS|z3F2Br_76)bS`hE`pq9+HA(tS$7 z60m*%Xr~mTKt=wP3(51A0i6HP%k; z{$K&p0Dc5<{VI@1%Hj%pKN`BI_&@MN!T=LO03d@0s7OgM?EwTis5OB^34*jx0~0kh zv!GTB67l{wg+81B0xsYIfaI2}paJ3QZIFrJ?aIpIF}tg*f7k!*?*~!_;y<*oCk@)) zl-w1?-{ADvd!B)A@Fj~Ssm7_d0sx=Dotw=f&jd#EAOk`|2@ZDNAHX^wt?)oOYW;iI zfBC>k{WaeBDhTyTqWVt&9uwOtRCM?LfCb&NVPN)A|NL1JM(PN|A3t$|U{)D30pXGb z4gUMVfO&yH(6_(+>*C%b5f5hY;7t(;^$-&9qkU^1{QvNbg0~MEQKkgj5p@}&>RSH) z+(ajcf(r8RIo;qX(B-4m9C}~x!&HJ`{sBgS0003&0B$D82Co2kFaQ7nK>#_4vH`2W S8;k$|0YLy2LTrF)@CM_7%>2{< literal 1009 zcmV5-mZJ zd>Q~C0^gx#8YFlC0s*6*fB+BeJ14Kk0mWO#j1}idh4H@JB0Wwef23!C@ z1^^KF20HCCra*A~4#)roF9`+#wIg69dyN2|9dmVHCi51-L#Vq*zpx--aG;_9A&g<6 zDfpwtLJ0ln+=GAtf|3B7pu4CP0N21oC=HDP6^bPQkzuWF*2JT4>f52NDdF7r{Z^4` z_z?yGF9-@XPnp8tgU7FYBLEu$7obxj1oAp1ZKfvyGzv0{F-iC(0096&Hgup=YikC4 zhk(2V-!Utg3qk&_gk+gK9`a#+XQ5J$1ep)O5MhElbrn>7>V=5g<)8|H1GY+bf%jB_ zsycuQj+g*g#n7U5z3!bVzyLrP1)GA#eV_mc3IR%y*BOsu&kb9$`vK$1Fdr1<;8Na)|o?*eoRAWRjFm+%mVX*IK; zUpz{oQwc!EjX(gK!hisP01leeK|mG{e{6zf(Jjlx<~1t6|IB{t-@U!y!T0|lkKzB} zgE=j^Xxe!N&IzzNMUXAQfGk<9sc4(37PbWtAPN5r&EuIrGjHz+tQ`#ug8BD}fHRl? z1Ob3GC4n}?ipqcicw+znfKUf3p#Yu(Y&IAWQ#j~)jMLlS)FJ&=5BKx~F0=b>fBS!j zfDfzl@HhV?2_H$Xop9(Q-*}w*1UEH?03U%pUfv}tKVAS9R#jCp0_lhU@uW(Rs{|ok zae`n942akWS766KVFcU|I5RHG(;oRKtr~kxDJ258IV;1*OsLNskoKkRh}xQIdt0Z`%(h&<3vn fcrX9}0YLyciL?Q$z#EJJ00BV&6+&$QYVZc*CtR9( diff --git a/samples/h264SampleFrames/frame-0236.h264 b/samples/h264SampleFrames/frame-0236.h264 index adfc0698db91bb3317445d6c389d8a6d8812c545..89a97f5da0e2127700c9e0f53f39c8b6de17e47c 100644 GIT binary patch literal 1440 zcmV;R1z-9A0003AFaQ7nL7PAtyahKwV%OC4=Y{is8(EAo0c-#e02l;0&3+ySt~@@t z=KkPd00;yCrjC|?8Ta*_peO(p0)tAy62O(KoesxPmH+Jk5C9m5;6{9G2-_IjXo->K9|Kp(!_*9nOp{XCZ~=oZ`A;JwYMj{z@7pa^4iiMh|kyH01O1=WwdH@ zFkp-S{@x%SrvL;DF=^?SlQRA&2?z{8!d7UrO@Z(L3>@bk^?@BW2tY(3_uc>vz!Qd{ ztb$1^i7`I$e1HJ}0DvG(Wn<+)No+&_KN+|J3<4~f^5#NBHxh-tfE=Qy)U*gaPLlOH zO!EN%#Wa8c1ORY2cN(rxuF%o*+Q?590bZHOY3u~Fsmu-On$hfLJ)D36Kw!pg9vAhD zAp0pf0h|DE^luAn+vEZpec%8ykN`o{uBS3$F@Iqf00h9G_G2x;fvBlbAN#@)#|T4@ z6iMUE6f6J&2%(4OAOnJoW)rlLu#=2`?|W^tHpkUhhy-v95IUfOw;LOp%=ZnE4*&$r z*xgFDtFNQ0U*?7%Gw76K@CBv-0syjj1^@~V;SX%fJ=hN};6NZghAsrj`_LIs20o`= zchiAUYVe^k@4z7e1guCp(bYxD#yM7Kc>o3p!~rBhd(q{P$714OB?TcvvtJ9`t*Zl#3*hoVFTBB@wl&QJi~{orsB;03o(4haY>i5Yw7 z+ zfslNl3S@v_EE7Qo0(Bf1?FP^!fdE&43#ZmBI$gH_AN@m92iqzs?ZgOzI_*g^127$u z1n?jT<1)69iR$x$U;!u^WrILa0Wdmb3xv#RmIRO?1ULZ!pLtcho^SeeH2SmS%r}T2 zJ7v7z(1*S-O?P)&zxZ!+PJ!R0bYVqBQwGRS4qo#B8W5Km|akOxb_G$M}A|9`)j zd_S)Y2>B5RjD|2MU$LWP;lKjMTH$~=(=3Mt4oFJZ_s*G#;F>sa<9-Gdk>S7Id+9JJ zz*>hed-Fy#1TZSqp`u2J5DY(b0M&5-f=V-Vi?yT&QsST(CLQyTFa!XD2gV!Gpq;!e z)S3e@1Ox~ukquD;4G>z`LcxbPwf@{hWDt%7=Q+z7u8BA zEf~y0>AYGfRy+rUW=tT2HYdW7NXQ-*S9lXo3+lxfcv1rmw8^#2=nx^hK<=azpFg?- z9Bmm455@(E)hb-k{%;0--K%Z?{pO73iuL{%yW2_=Ep(+n{V;_9nO2wY{uU#8Hyn_$ z;6n{8$UJ-Nf7au$5RQ`q00C{4G-d)}_iHbN)SHwP)y*2%A2s3Z;(4balm7f4z?^tj uKLDdZ0003&0B$DG2Co2kFaQ7nK>#_4v;nKY8;k$|0YLy2LTvzQ@CM^?_+v%@ literal 1393 zcmV-%1&;av0003AFaQ7nL7QM2yakDU0RSKcAh3K;!GTOT@Bsi2FdFY$7N@USNQbY0 z0l+{2U>!u=nV5i|kQpuV@qhq;M*sl;Q7MBz3%x6-X%2ED_&vY?Kxjwb2?*ENjD4n- zCGY?S8-QCxfv0D{y&phE=tRH+fdNIt(FR52%lTDEnIA9!Kpbn}_e5I|5gj0n`xjCcp$6fS`qC1mu&1 zB9ICk5-~NvpwZm$5K~SSdwZa{6a7gzUr;bm3;{HfB@7%!u>f0z1z-bV74iuWYmfPx z0YDWo1-kU|@!y~P00iDZkfQ35=eW;i^;1c3HA@VGv&?zw@X%l~_-ZgV1^{ja0CX|} zg25_<(2jQMf*7d(wH)AS75a-&A60MO004ma6~TeZEp_cHMDp6#h+MJY1BV6do}o$- z(waa40098t3kw4Zj1F~FtI$J#GXWFGjE0$6RTUL{01P?8kRl4!*%^2we0esZa52Cc z89~Z#zz5I+a=~)*kPD2>XbKiv8g-usNLma)q>v=WuYZP6I4Uy6fzrc0WHi)^z}Vmc zdzZt$K-R`kEtGITC`4-E@h98S;D7)?Ks^}qYi04uUw{k&$HMj~_NsUQ_JC+WXwX0f0{3&kAxdPE1)+o!pkN3=%Q$linJ$~c zh!m+o@Bx7eXkY9o!I;U{TR^II;MstB0J(}BghV|K%)Gte03p@^fyWl(IN_v}nGASq z!^EHfARunYI5yd8Uhe||(2!EVJY>_lj6i=x!XBmYxFunN0X>9WOec`i ztB-`NsImj_Ky&~KjSMmYm?+oK^9_{n=RjlDILGM*Yv9*A)&Ph!agsBDd;zElK4^Ja z8YUAp>>q$Jr1HRF;8g82V`Y(n)nx6{Fcb!^aC@}wB(lwa|GFAsD36srMWygDjuVB% z1;#)YH4EwViPD5}+X)BY0}f){h&}+J=G?SVr;H*LRMQ=cexXSMC}02}0YV7_o$9WIx~Z zNBFQi0lWzyKo#Hu)NWX?>vr4##;Og>IkuruvnU9|KbQ-y{wX@P4#@&|5CmBY-N{96IrJ*p$olya}g;b;u+s0F~s8*D8PkEFVf40a3)t1Y2_tQg~NY zD4?O9t%>qHNQEiL90v)l5dp#>5y*4!#1Ux8A1+sT6Hf~2#Ta->F$~F(_3whsZavh4 zlh5xDx)b zp}0oNj)BcuMnLm_`v0u4*aXwjH~0Vq*rvJ48Bcq*i@FghvYZcph7HqWg>MgaOT0c( zzk~P_j|spi@Bjb-K>%(h*aoivcrX9}0YLyciM9c&z#EJJ00BV&6+&%*YVZc*B~w}3 diff --git a/samples/h264SampleFrames/frame-0237.h264 b/samples/h264SampleFrames/frame-0237.h264 index 6a6700f654566a4dc3f0e332edbd957c7eea6bbc..6225aa9f49573c0d6cc692c3ac129d10eb005ede 100644 GIT binary patch literal 1118 zcmV-k1flx?0003AFaQ7nL7QM2yahKwV^`FaOW&7z8=ZejW#|JU+PQ`r-I7s}f)Y9=&mvpFYlz0Ehq!pb$9qn`cBgW&hj& z5MnXqwFDHWp3;hc06+jl2_4e9bSWk9X*VUn00;sd1E02sJcI_czy9+8FaQuJke*SH z2InRcL74P1>A-BX1~xu~I}7h3KmZ^Jh?oE%90eRiuq0^r;D7oB2OeH3k0#^r0QQFf z0RaFM#2Q4uy-h*80!R=5mIMK1;6+OV#$bDqOC16T5C!qr1x^40 z04)HT)DT99YH{@c*^GhUtGfCIFI~&u=H|mtbhHruQcmPPU&MhQV?|&Aa7ro^wYf>s zP>{F`F|BHE^$JKabnWMl3<}n<0j9KNDH)sI? z2nZ#DLDo+yE>@Bn7WTDz(fJEstSAV!GH z;3}x(!#Mx}0CE77E2+L-r8rng00oXs?C^#Z{OmWWf=NT9Tm8ynEQqmpf3L0rz&*N906MHL6(RV3Two4H$k5a0*>wRV92|I(0N3lMItQU3L_*3!mfAr-o(Isa ztQH6*&;K9?H4xPkx@0LrO_0)Z6w1H=syHFQvoG_;?vU^^_te$(C45Gw4e{iX0s}%X zQYP_0;E)FZ)xhA;;W{~cI~*2~-aG+;pCvc|!OGy&Dri)E=ooW*7=2%gjMIQI5QxYl z1ef+WB9Fjf%MAq5lOsl853?H~&I=qfo0=NOg@GDS$bErZG_h0EXgIVDa5k__o@i3o&Wgq|m0YLz6 kCfEkA0C+F}00BV&If=FbtH2wK0003&02M-QfNJmt<4cOnr~m)} literal 1097 zcmV-P1h)GC0003AFaQ7nL7RXYyakUSQ<{7UCOiRvbWC}dhT?!A03ZP61BvV~!{j`% zHHpjM#87BBJQafApu+$I%Vva=zsRov1Dpz0_0;TKh7xVR03z^mYg`ym`cOaf8V$ez zK|n;H0Bk=#ZmUcDd+q=O5CX`Ie}d6bzCv8~lQ+TfaRxw9!6KKoHX>SkQ9WAkNB|%) z_#_FtYFk)pc}e-;hQ}iVYVa2UrKDftiIac^PyjV&FnF72<0idd{9phGFMt4qKmZ6u zfCUpaWz1nNFl!#coiK!60WAPX-5F*UhvZzMwCe4n>@60}%qIY0K2gkoInM zsW-k%**IW)#1F||uoS-nLK}hoB)g%0F1hL4U|IFHHZKIm;)#P;k!*an=%Da z!lj>s2tbwB^8^P;lIPJYC=dV;0)PPE;c`d!^QG~CTp%98K(s(iXMkWB4i=&tg%BW# znj5^yZ~*uaGL_#!QA6zJ2=Hxo03ZNYOjCg09*zI+3s4|XrRwvg5u!;}?cxUFAr>uR zhh+K?Cf~t>Rs&rLvLL0on8412MDc}y2lVn9A;7IQvg^b=00IHW6czL1;3KuI_|yd; z1R&*{Ii$>&P2ofe)S&P%MmTveUBy8YJ;s8(w4hHZcg8@Q#04s=_oa(}Ie>j1xAS1&!IRslAJ4-*{ z01yu#0We~1{=F}&vtx(=9vWneWm6a{^Y)pwFd|LBtqJ?Fge*kICN{nP{~H(~>Z6Xk zoPYUzx`pS6F8}kC?nDRy&ba9ySXt|~0OIP4ojN)Z(twf<4iOSy3pb}nIuAiGMK%mm z8ro4lyceJ)CIZ01rXK(&ISo=(n16d86Igf_wC?r@v#)3OF@B;`7h`1nU$JoI402J zb%~h#N+-SWJiPN301d3#B#eDBfEqMN-7erCFn)};sZRVq|LQ@3BZQb{EM(7{>ZJup zV6sh3kOPqb!S@UWCH(g1#y;3@=|!}^R%(h;0CV%crX9}0YLyciMRo)z#EJJ P00BV&6+&(RYVZc*F#FTY diff --git a/samples/h264SampleFrames/frame-0238.h264 b/samples/h264SampleFrames/frame-0238.h264 index 5234bd91745bca3c034ee9302fd872d865f43cee..dd6f49a0d005d00d5358c79a4be7b79589227a5b 100644 GIT binary patch literal 1159 zcmV;21bF)Z0003AFaQ7nL7RXYyagvHOH4Ppu1-FOzAiN#&}=LtZLeI}fdElbIe+ko z2!M}(1B1d~anMB!C<0}IJDZm=m50CqGLsu;QyaLb^Z+m@N2u7pv$lCs9a(TA_@6ic zPyq@}5FHbD(897_S;52qu*}QZd=w!J3Lw-Rf)RuSd%&-j@BkPAL!@ZYsxq1Y8>Dvl zR>4GI03ar>*ijKJe{d2223SAu0RfKyX!6E3*7Fn4 zzz~9W{{Sg~0Dzca71S9>HeeUTC`YHDLn!?)b_?l8T1#(I&~CxZ2q56rzzfxzutFdL z2H1eU{0{;MI32)B!08;yfD9AZ-~fq01eVAj85`WoN~VACAcKI19sCXu2OI#I)`^lb z1XVQ(+##pCh}~`Q1Oj3?on9%}ctOF4>O_~R5+J{>C5qU<06;B@00IDj(7~L<2W1X; z5e@?ct)^D#P=YF00N@}3F$RS4i9)SE`%rGx+B1y^$F0h>oQbXgq^??%pbr40|fM**z8?8 zcuksLgYW^AO~;9Bwb5K8HH=i@cup$SC~2bhtH1$34jxCnXu~5=EN5b00Z;(y2)qzd z%9T$}j$?)aBmit|L>hqdx98p{026=%Jg^2k#({UnX*%Er04d?WV3#z&B>7XI1AgIn zh2v2?FJ4zb!|(tE07MB}y77U$RxE`mm-hexh%Wq!MeNTlL>m2XnKB$jM=PrIkJav` z|M`Aqj3-kU5OggF4~9X4@F>7YOqhs-l#0jx3>zL7;z7W`v=7xc8&L0`_=mz^vW1D7 z$6+s?7u8sxwobcFlmE~SPp2bHl80^!;t^B=0Wd-UK4XV>9=Vv>a)k9QeNRM}@gSeU zJOKcQ-~z9oR40Y1<|3xe0|S^i;nj9{N4q|<|NjgG92S%9AXh<2OUaCXxBvzKqX|S~ z+^a@DCY|5G3xn~5=NV`$uW+9vpP`UhkQ5s1y~}tNp0=poe}n=nfdypgi8-XhyA<*V z4lqWk9bKe$&j2P+z^-Bh!@1SQ7zm$dfiHq$a0ntaZp-dlCz&rxzyJ^rFc6?C&IQd- zexJ~MDF>f01{Hq5Io)Eg15ms>u_24IbehCp2mW9KtOM{7r);i+M-vhN00RODu=@A^ zekK3{0D$48L%cd9!s(ZUAcV2IF`6=o$b3 literal 1077 zcmV-51j_pW0003AFaQ7nL7Si&yakbe2ZQKzP)HEBx_~GIa_)*xzkA>Wz<>&V;K7d+ zzuki5_W&8dQ(KE}EDA$iOaD-FnM^z}s58JifB+y6GRz9Apj-Zl;4lC^04#tA0mtVB z1-@28>n6*51PB02Ucmq$f2qJtXc7+~=P#TJ0We_17!VAAum}JM2+%wHbch!gM8CV< zjsOFe;pu^Tg47n0U2p)YzyJsa019XcWeSuqD52xSkuBp1&La4?2OVdK7Axog1Ob#d zKr*z=e}l|LaBTzB|7IXtiJ~k|NY%e`_*EYG0097i7zr5bqUWyzr|m))YP-V?02+jo zh#Z7d77hv+XW%hH9Rp}>WtrOI z(S1^$4+ba}L}ja!nPfZ>Cf5JAAN4NkBoZJ=IOKST}(fPuG&H`fET0vI?Q zK;lbB`N@H;a>C#MPXr4h5Da3aA7AdJ*Zc?|;32?v+ylk|$AbO#&|SaC3|fsSFK|n| zW^TJW6afGcj8PZ=9{w(vC@`l9;fNnP1CdF90P_BEIIvPH=7MwhWYt|F`vlt!t#Tvi(`7Z~8 z1B`f>;I9P=8Hnw8jOtSOB@!PAgCIsAGBe-|00aZbpbS{ku{xVnZ!zqZCJ(D?u`-~b>b#-Jo>ByAefLo)(?fB+y5_y9lxfN}jBo2eMS zJwLe!0}4P4I4DF!G$aChKnfskcu$E30|Jq%dzK%;@4;eZ76TLA{(SJRs!>5sEvGc@ zlYf=uLk5B%?##NEscF+IY2jEWl vh)w~OfB*miK>%(h=mxIPi zXW;~4-~fbkh*1p|&e9;GZK>gs3|IqplxH!)k%qcw(S=Y*cHc4S!JniNh8(~E5CZ@K z0YCr{9{{pv0s!TJ6oJn-&Flxj=}{j5C5gjFPM!aKcFaFcQN)@Wh&Q7KlhrPpo_YLV@#%e!0sw@#5>ZBZSP|*7 z!koYbzqt97q6o?4X@rZ)?Jk0V1XeRdB|tx4zWMBonBTE4IV5 zu2Q}5f2~4ZoU0rw-@%8lqzE9uL@stfD}k-?CDZ38%kB7UzIKobN4)9QsxILrT*jVV_BdEb0qnke%m6kNVS|bPRvjIVh|b=M)ffYJ zI8x%tDtF=<^Z^8~Dp#p#WPA`4OJ5vBc!krTrGS%F^nd(Pw{xlxOB`DhfneF{r~`g82C`1$9~-%bt731 z)_?-2yb3Ukr4L*?oRG%5qTJz~?vwhz00f5QF&tLm1R=DDtHNLD-M%_z-10dnZY@p%OwIUi;e|P`_ z0WX1osh|?VRX&TaJn!%T1Oe0mp^OA7R?($PjZcUGM?#PRMJj+<&Cm9O^#_HjFTMQ! zE#diK0LhSOhbJhWgrq-G1VqFH03-svQJ^Oxh7HU3g~}+g!~jqL1PP6h0J7|GvS6^t z6PfRz@lx6a%U%BN?(shQs)Dm{yP1ml{qGK7%HTUf9{PSsTKMbcU`9A0k` z)YbJReeQ}!!UBr`1O|Y^aG) zk+Kg0LP3IF5u#|9tXzcx7$E%VfAbL-|NK`#01ypkzyeZR0rH2Q``vlAX3RAyPV!(9 z9RL78mIYkkDjBf2;~OL%01cUmaY!-i_AHdFu(%FMY6Zy5=xu< zgYwXBA{W?^BjN&^oC8wFDq^z`cJ}xwWViGw z00IH7jsyA%{XyYLM>XPK$N;b>lWML<>DXp(c1Q^f?PmS^-tU8ng+l=GzyJUNK>%(h j=mxIzyLrC004jx0fvKVrSurAn_kF) z$>0?LFl(s*FNE5Np9GL9jPN)>!PQKl=3oJ&0!th}Yeon-0L8_B1ZHAGyQTf02mru@ z06Ps`7zf3$-&K?hU;rS~Km`K;0dNj?oBOweFeng0pi{#whbdxVV0j_sSO5qtC;`D% z01Nqx*vMCXZMk#segqJMhAe?X zgwLLEq4J@WGyo2S7Xxc&c*o8vOCSL8hzn1_X2&P+lnj>MZx{%aRk%V_o_eP$A3y*g z7#ddCIAi z$L$2fth%0731+KdGGMNS1_-+k&I3>gNbQ`IeKG(3a37@Ed6S>M`~VoLSC-}5Rw?KG z+#moD3IQ2Xx&_{~zq~w3FA=3yPE!J5kf4Bz$`5cES8;vw?fy4+P zKr!G0Ck%p-4QI7L-2u*E24H?&Djq-ehzO$&GyquV2#Wn{S`M_js<_9a{En^ ze`|Q-P6XgnN`c5aFu^~B3cW^tz2MwjslY*L#BAH~jqB0B_z>cxX`0-EiJK2OpTbYG z761v51^@y9La#z#e2h>|wBAW*-~hk?KpY|_z{AtvmjgrU@#%aKu&8hffI$oa1YrOi z00aS5zyaO><-+o}{B&Nf_1M)?ssJ|M3zwLM{1inF!us03Z}N>b)U)FkXp? z(M&u50st^O%`9}?M)h;n#^0Y6*cHnJF_%0SV{62o=71r|%d52nYZOprCQkhTa_fNHy08 z$7nb&;uk2Q#8?1803ci@AZ)rI)n)?06gM;T^c{Lk&=Q~f{KWNcJEzM8Y?~64#1$v2 z-zM8Q4CNfKBe!!=&$yExLjV+ZlM5->|5s5)Sdl>5Oc{YhCgT6EP~N@9=j-6yT#{@Lu3iMu5U#|D8xR!Y18I&_hawPm_V{3> z!Pa~J?}9Yxm{rJA^8$5%UqT=NJAi)uVJw0+0u6uwfN7xu_L==bxKdHgB>(!s(ZvblW2ICJ&yF35@ diff --git a/samples/h264SampleFrames/frame-0240.h264 b/samples/h264SampleFrames/frame-0240.h264 index a7743a8e902c66114f70cf0bf9079330133dc044..b10aba88c6504caab56efbc5b2e4fa526affeb58 100644 GIT binary patch literal 1111 zcmV-d1gQG}0003AFaQ7nL7TuDyaeOH$S^QU0V487oCJJkhC^>K&1-OK3kVIKad$1ek5kUm{F)*m> z^@s3}4Mizg2RLF8w%1n!>?=Wg*g6xrO{Fj50yvOHYXSfS0099I1qbLc;sfA{?lLKM zV8#sq0Y(4<0+APh0D!18G$w$ix|O^J48d)d6JDDHDV-PovR?!+-0T#ggunsG9S=lA z`9$Hf{R|NQk4F$+oZkU*fCK=}1}IfJ&6y&D7yG~fpbm6A@(NiXmKh2C!FVfu z)#Qu7LDrkd1Q1FL{Z5kgIz$*J=8(_$03ZMe0gr_V{CDlq*HSf*{A9oYKsRN85CC9T zNYIpsxfluCT3P^>~t&~#!=l~AcfD8~S))fRy-X_2RKqFlMa0QHKAITiqq8sNT zIfZazcl`wbx&|OM4EO+CcAoyw0vIcrN6r6HUQ^5900aOGRb;Em!x}E1 z_XH?wRe^D+bEeD8k6w_BCv%AA9LEr$ng{lV9iNX1AY|T%7$X4K6%?ld3j(*022X1CS03c`p0tubC00IU;7IVS5;e5Uu zC?gvPA`c5lMMrIL5cf-Ss9ovHxoQPr=|6MBqT}C)BJFEeGHRigScC z1YhYuyq`H>8PEU(12dIiD6K|sv{J;aG0Q?B! z`c)v2mBbYGel>Mb@PFWk$^a8cKm-tA^@<571{~BJ2!-(!s(ZvblW2II?%*NXrE literal 944 zcmV;h15f+_0003AFaQ7nL7U(jyaeOH$S^QM0zt);+z=2(ZD!0*tuOdH1_0C;3nbH_ z21b~j{0L(q z;1GYNagd3xK|Vqby>H9;0Z#%LM}&+Y-~c2b01yKQ49eLAG7&&-Kzo<$mC(3g03ZMc z0C5ZiNY;ON|s`11OpIXD~)j9Y9BGefs!Jq;FE$S9w zqDO!LAR0OR00IGqml|M{#fUQ-+?cEYKoQFjXn_P*VH@F^cm)6eKoBJ+$%CRf-5goa z#sQkbJuV2laj@&}2mnI?0dGCP(E$hLq24e7f{eKak(>Yo$-nP`zz_j|1QR2UyG-ej z8b1TF00E1_L4a+^*a}|bKq-e@*x3(A5efIMJC%_06&CnWx06=&~6Xl-qu9x-%3@#KE z07D32W7F|x41^N<;kgH(0Kr}WoS>`e6ad%2L?{iM0y`8+kP<94vC_DdZU1BF%|V|X z-u{zL9YgSlFadDKgqf$z;b2AU*TOIXupxQ{E+A7Qf>zpJ0?;FYAiJn&>Fk| z0swN700lU;fC^s@gK(RZ769N84)JUtTzZzb?gIb{rU8N_JY#A0qlS{t`+-V6fF_AU z`&j*~^8jE5P#{KnqV1du7CEQDKY)%D(m-~wV;WH+u#LOrejp=oprhgM-4keo-St#RLb190mDuM;@FPPp2?Kr|*O!`589fcp3`L zcCvU^|GkVmy$_zRP(Tn*(vyj&)r<%wkR6NEyzkH9>T0003&0B$Du2Co2kFaQ7nK>#_4z5%Pi S8;k$|0YLy2LT`X-@CM_r+K3DQ diff --git a/samples/h264SampleFrames/frame-0241.h264 b/samples/h264SampleFrames/frame-0241.h264 index 20221a23d915ebfa82ec1400c93a9630a0a0c9f5..f046d58e21073a2580fe6b5088c71210300adc8a 100644 GIT binary patch literal 1789 zcmV>7=pp@5W~Yq$UgbO zXn;^<@C%z$WI&HB5F@4c=)0Sr-X9WKv;%+b0i>VbHPtisJQpnn+|Veex8WU4Us6+q z<3Irb06-`J;Il@J8#Zj&qehLJHUInoc^m))1)Q(|5Df$1z|=<<{a%~CGA1XMhF}4k zZStF(fhfj+Eb<%JSl9wpam)AQRzLy(0Ra*&bzlo9h;wTo01yQL1__l=G}!}v?*ITm z4ge`fbift0Z}3!Rkz?lvx3L@Br*#L{@;v(Et60P$^YN&oLo0vOX;(jcnO*WdsK0&+82H943pMgRYA5D!y; z0tObfblb_9BV-8-3_!wGXtRz7zyL5)oFyHITCBn%L-)Pl0Mr3EY8uESlDQKT?I8L2^a`999CFZ~(O%0mW9CQ-*){s}5Me03Zke zO(S`f`%(%N01N=y#{?bc=mLXK0LaT&JVwaq(GppJ&MQ_h(|;oX$lTM^1-~Nz9thq5 zf~~+jc7uf4$00BSGMK^O2rU9{C~4!Qn8{U&@Bjh;VFoe*jEzb9%tibp36#HB2#5dz z1GTA;4>2&c@Cpb3DL4>_@;b46{QvN~{;&ow00^bIFp}9xZ@d5j0ZtX5q*3|UcpA~E zyN((G0+OeZoM!}#y#D-EB}%Hygylh1$sw)=9+;FqCyHveYyZCDz%OY(<@1PyPca64 z=)}B*$aX6rcm@SbMJ2OcQT8yZ{6Fu|0^}YwiU0xufLd@sM2r3O0w^q6p@|Vz{)2!Q z1SZh3BisqVb4E%d!BM1(9ogX*?w~p60S_RWFiy5Ww4@?j8IL^z@D;X#6aD%?YM2YZ z<*U#G>!<;ATmWzc0Qod-L9tvsKjhBP01&dkdeMs7zy6ow*c2p=8S#weAN-f^lGddm z_y7U`zz0z9XT34L5wX*e(4q=F2aE*~gN5|?La7@-(?BKEfLI8tF@yZSd1AaG0096t zKmvpf5yGU2)6H%+K?&E+Q=9-n)Fu)t5cH5G%;f&n?f?M7C4tM2wWg%?01r9=%m2X8 zeimSibuysfu1X49*_c9Y*$i{d5O3oIEFn7h=_kQbN6*i~5COgb@B9S=frT*oGFS!_ zw=e(@MgRc@FVFxGQUH3-x&ie-03ZprzyQI61kp4qbTA6#04RxoU=|LjgW=( zF~7xZ10N5Z;t{Ya2I%MsG9SRy<`BN!v6$1+0LG&xM>1wdkU+r!uIF%_zxWEqt!xu; z=HK874!=o|G$u89Iyc(FkDur&%p1|oMO;HW}NT;aCij~I1oEY{VN1Y+yDT8KoCk>(V&gLA=IiO-tYrO zIl~$PFZ7^ZPn-+@;P?a`heCYurP&k;eOLx`0098(Mk&&xm%>;M1(K>%(h_y(^4 fcrX9}0YLyciM|1=z#EJJ00BV&6+&--YVZc*RKp4d literal 1428 zcmV;F1#9{M0003AFaQ7nL7D&>yaeLGh$b-T0IZGD1apx6`v(^hTL{}$E4kH!5Ks$2 zP~%|>BmmbGkf(|WZ|DG+1LQd!H1L#=`eNKgtT94z>E1s_4ORH2rrF3a_BDeLSUv#T zWy42AzWFhFAO!;{fpcNhOh{_(&mk|YCsegj0xx9PRn`?rE6=r&Ox zvB$UIkWLc-1ON~eOAIi}EV9E4GRq(Tzyh2A0s?xY z1AssbvH&#t#uc~*odDd@JAMEKKmb5c0O4stGCUN0itfw&0|YQh7FZT-$Ey2$`#%7L zbP%w8`5bU{ZW`p~U>4$s_r~wu01z(dH2Fqn#)Jt8odCbe5i+@RVOI37fCw>KWlB6G z?5IT_{_p}Q05B#=#-j47+DH>M_qJ_~zzhMIt-)e11Of&YB-dyJuoW3`z!2_OLdxOI zvJIzS2hS#igml4}i2wJ10{{bk8MX>1HqRz4A)v$_pUdLJLecSqATIy_fJm8!$gkjb z=XvnoU$19Zzy+gXPWe$e`}&7a^aUJ3V$jZ{8c*K!+?{*B?~ed*`WYNsLXzg2_WD{& zz6PqpAgW1(p05|TFNUK7U|=v{Nmuc!jL+0YifJPf(o!aZMlqKmb5E0>Z$;qXV5)D)bQF%)mtQBO#_% zRYgT#00RziqzHm_wnAPBA0ADpUJi}`$jS~|z5qUe8AZueN7Ropv6e2Zn_>=AE@IU|{ARdf) zwmk!tC@}^?piSV~m)%c{DBB2FNB}1=0fFeKFq^n$6yYxJt_JBHAQM_(;N%qTXqZ>% zK%j^~P>5Ev`k5JWX* z7i_`!B>({cK{j-dRBLMne20L%1;30Z(Zu$V?0bFW!u-!dr5+w{j7p{g(0`|)87NEt z|G)?^!5zAaioW$i#BK5pfC`S70BFU~rgpvU2oMl6)>G3Go}MV-%N}FYgDvoHw*J$>2)a1ZbD1mZq!%kLlY#I-LNt;lOz-#h0)eZX z3v!*$EYnH<_M1#65v(Ozy)S``aGWk6E);+)Y85H;iNb{L+eioC0}gW8oP7a9&9`Wy zZx~EbQ%-g?pFvBj5}Tka=rVL_Q`!1ix^sO7M+G1%w0bhFK_BLw1PY`WOO% z)t}7`J%j@lSIHAB@=7-C4<%;{{1lN_-uJ9Fq(12nL^n4+Vz{xr+Wz1W#yISyA`6qx z6Z->jt6Vu~M3oQy`@k9U4V{qvYH+Xc!yrr`W^602_dsU(4YD+O9jF z01UOZrn^DLzQa^zV;;H$IuN~l8m)jh0k{(MT2ZreF6;m7DsG@we}E$>0003&0B$CL i2Co2kFaQ7nK>#_4paHAE8;k$|0YLy2LTCVL@CM_VyKYJV diff --git a/samples/h264SampleFrames/frame-0242.h264 b/samples/h264SampleFrames/frame-0242.h264 index 2d991a2e71557a78e8aa978f82637a182976b0ae..5f276768c45eb32ff4be79795bc243d12caecf4e 100644 GIT binary patch literal 1312 zcmV+*1>gDr0003AFaQ7nL7D&>ya~MC04y-U#Yg$b!O>gySJoQ@g2*gZ1~LKzjhy6R zj+2#wI6weEO-T3v1PK5DKtv0B-og!vyq=%)?vMWhVdC}-K|o}Kg3tiM@~!o%01-k*bf%pONd6j4&3FI;0EIy2-Kc_Kqz1IVum%7E1ritPHUQluf=DwShCDb8 zmVk!BXyL8z{zQNPKoJ=*06;hjIEi3H&F$cQeFB4zFBQj>ZGa9)Pyi4R0Zc)pOWV}6 z93B_a8q6dp4Jih~N{l17gT{u&FhL~x_klou1B3M>N8hTn8|F71V6k7Nl34z`lft@= zoJd+BfMz%Vz*-4KM`R3~x1%ry8!Cn8zysYB+&pJY*8Q9Lr-k7TV3ZR)W*vZ&!N3+m zB!C6vzycsB63Br@Pf1*S00d&(uEc4|=+D3bfcg>t(QGEOgoaZ7Ky(ClI1mj0*La1v?6QQ9FkpS=mgTS2MBsyj9U@iiR5HBuSAV5HUKZ)fD zd>Dd&Qo)ca0u(9q0fhl?{`$WgqT261XSTx{;L1~83N%_ zsEL7u6`2}Z*5CmKbSt2=GwnZhFNtMdBaNY3e5V1u7!?8^{s%w>DhxVGb^vOwN2K6m zEuN4ejenn<2lHSf4t@uS62|ar*6qC$mB{}eRe;CO6Bo!5GP)ZLaa_E?QfwYqg5)9@ zL3B=qMS91dX_#A!4IaqM>XOL)sl52jr5WmVhDH0003&0B$CL2Co2kFaQ7nK>#_4 WpaHAE8;k$|0YLy2LTCVL@CM`JwkgySJoK>!%(pp3o%jyjh*Br zDI(I=o+AJ`eZC+tA*PV*4q66F_io>ESp@@Fau+1E9~RO-{IS4QBvh zdff5k5CQ-M?guTg#|v}FK9L!G7>W%C2ZFF%6c|7Ndd~PE+EJX zI3!Z`=EO@+X$#$Jzd!^AKBh#0S8Ypc4Nqx42y9|7He>*(4J;y{iY86~HvjKQ&5Q5YLFFYKc71A2aBqSIl4TfRG zUGE1@M<9wQS#{UE2vPn4!2LL}pUdA!^7$kl2HB+AkNAJj3FxslYg98N z%tE7AUW8@^1h3Ne_yB+8n}ddV*Z2Ck{r~ekD+w3$H-QLnN&!e8Du4j23;;8?2>`f6 zHDkDc|MsRa&1u2UEhe&w++0TWqA^K$&u#elKwh00aRb00;nqgQdi{^Mg?1 z+yQ0rfLtIR!a!#b6B*zP0f12T5a2R_3|`>z_Detm;9y0o-h<;G&o3VG->pvEu}Q z0n)xx#t;tIYmYobzyKg9DMHAJl7LHdi7@;EPyz@P(FB}a>D0&!BwoE2fr2@~Wx?_b z165`+v2^J_zyW~55jLF%oHGard))?+JIEjh0#5hA!_rg^A_3!00IgJg^z`a11R7qqOJjenV=AG3bC~)`P5Vn z0A%2Dcu!#g!b~6`g5-umb^f`phDKfk*Gw)CDfbk+uDbnBV*k9ZeB@F@}p@5y{i zD)AUf+{;X~$N&>9fq=;t`+=wc5o&>f5M%5BW9>9U=+}V5(U^S@Ng)4MkO!<9ha};y zAJKmC0$AP+-F`$`W(dZAfrK(=o>&4gfB*miK>%(hhz73!crX9}0YLyciJ}3kz#EJJ P00BV&6+&o$YVZc*WVpEf diff --git a/samples/h264SampleFrames/frame-0243.h264 b/samples/h264SampleFrames/frame-0243.h264 index 258d30e09b3b41eceac93c76fa3b01bdf9fc0fe6..144ac0a22584dee9e0137efdcf9dbfff303093d6 100644 GIT binary patch literal 1208 zcmV;p1V{S-0003AFaQ7nL7E^Mya}%bV1UCgMc_X0fJM6O@jbr1MTp_QfxmN~!@i*> zWxpwK0af3V@QJ~P#|@GHv*1l&q&C>?LAQ%}_fHnI_=?wH8i-nssPNn- zv}H%9h2bLq;Sdo5f}8*xIAj1oNN4zb9VR`qvTy)3M8=uagsv*R02nCFQE?vST;i{B zS>YXKPaFW?3`%H#iPs|)lGm6NGwQ3!yI2d<3_%!D2UgWA^Lz#Xz1?603S}%Y3P0&2 z&=OEaxq3)0UjO5PAOIi=QUCyeFmQh=DMHu)Vw?|50E{b*7|Lb}px~d%Q+?t90Rij+ zpgI7#KHeCNXpjxuKo8oW03bxRA;1`Az`y*U&`OugdSBl_2pu3Ou2Obj4}J&27z4)r z;1CQf875@j`$@BeQf3E0;o&F%6rc+FPp}J}0$7HLHFN?D;Wc2EjPYVGEwP30MaR(d zUo`;cj2su_tFibDBtl)mEw#HJWf7b@B-Q$f-c0FJP7GR&$^gKt>6H2xq_q03-ZtU$Bhnz*mTS zpCG?Gz!(bT5EdeWiuu`wJpcc)6M%K84bTMUx848*fCUdtcSMC>@59(z?bE=A1-vOe z(AG-uM@`D79uRN@)_@xe6X+boP?G5YCIA5dZvYOOfha^&S%3^bZ~=fE+yYe##fJig zI&M-wxLy%J06=xDl@b5~10VwRhG4_+00aX-FnuGTR?T`+ghOeitH1!kgW^J4@iqb@ ztM26@AGpIJfDlvw1z%`XH zE~f4Pz)=MRn)7Q%Kirb&E({^yO2pn!&VdQfOpkxK0096H1BDofNgmdx42zp z7)2C@sPhs))D~R`a{mS@3j!lPV`7-DGx4`d;Y|M{Rk&3*U)5dILy$HpjVk7>Njaexfo004lv zf|eG@PNvJNF0;2$=%3>QcM32Py18Xm34+%Vy2L{bx3mBP06+jB#UKM~;QqmsfIo(i zc@-+5uV7{W1U?af0Dw>w5@Z?hkh}9$E40CfH2_1f0003&0B$CT2Co2kFaQ7nK>#_4 Wq5-SG8;k$|0YLy2LTG?$@CM_%iv&0T literal 1070 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%0Ap^KYhcKzDJ)q|47P?J`e~nc2CIIh5+qz{SqTk6 zFJCjknKI~r8wY#!^h5vz1P}lySpf(v00am!004kGZz?cEBe@kR;0SunAOV}b6wPft z#j&7|Ka_+Hr+~dc67)CjQyAUmTy%>L$~~%1_%QS|J+Q0-WB$n#|L4z$a6BOKG!Pis zy_vS=#N^-rh;BgEkK=Vqa2@o|FsK9)WSim4TZPr3>S*K`q{_YQpC~Lr3 zdL_Y9G!6lr7X`wJ(BMMYNf>|kKo|i5Dxog*aQ0tHPXFiw3h4@jL6CIZ}eybTg882fVi*{V!Qwx0ni!pM+=bz z9pf?Z0C?Fa4xA21n`}P!Tofp~ar!l%fEFMIuwCep!14H36o8GV#$YT{fB=FZ>IX#- zhH$i7ZI{7_pdp3Fw4mz(;UaS|QUUX9*004jt4)Y5gJ8`{S^}(m*k8&&!#&EI%qO}U> zh7v3X@DLcm07j&&Lb#cJnS@F|EC!jVkCXsR2Cuwe10Dlt0MSg%(hmRa*i&Y7xNj0fU@Ka%l?MTgL;zWcxc5E0-E zSOU00p&Pgt>0=-eEwJDK2o+Ss0CM6de`^5)rDma3YDS*^&;kYpb4vNYMHS~3Z-4+G z3?l!s_TeZXOSa&L1-*G63rDSZVtgrjCNRk33`2x@B)Ax4LFPe&v+$6@$3*T-xhsOe zUEq@+e4qrfpdAezHPZf=HeN7ELq&X4NfPmJ55NOkN&rwe8gDwWlE8M;F#rI8AOHvt zVz>Ya2M&FM9R~q|0&%?%Q~nD+WIzDU=om1_$M@*vM-bWS6d~#;^TZ+l;P?Om0N^n7 zx8WkY(I@2EBc59SGEi6@m%IOg;0h|RC@Unm=|NejKL8D!R+uCqPCG!hBy6k!i@*j_ z+?YvRq&M0Dr~(COh;QGx!$TpjuNX!gmZ0GtM2ajD|9~n8uM5f4Xo!s(X@F|*2IDo5`LzH5 literal 1083 zcmV-B1jPFQ0003AFaQ7nL7IRXya}RwzQh7hfP8UKL@9tC$(b0SZUN4RU=1n@KL882 zQ%J}Eps)bVB6TQj_zSeu{6Ee?pVEFGu!Qma9f&W2m_MTD;7K7ZL{ay5;J;5{QIh}K zquuNc>q)7*76oE?l9gEYycUkrMw)-zv7^c)(R>Fh^gx)|6QB%{h=1?6Kuth|EC@n^ zumQFDt;hUQ!z2)aFQ8^ah+AE?2ls2liJ`Mgh)EayUYTI`uJlrP6C+}jxWlc;-}l5z zp#r255;LmOd~&xcx26c0u^klK01y%r8!L>>X&b71T_N(*uLYVN#c^EWf>g*HU;qV+ z_dx9|FeXS}!XbVHF_a#CpeO()U;rQ$08vioB*ZVf=y}5%pWwhCz;Pu69){yNab3*H%`~Z>b1W1}L1p};k`_Spmwx0svwbC_yqz`RhC2OTa7u0s%p*I$R8kXMB5gOCAD6f)-aqHp)JV zzVJW+4h090A;|eLN9N$KNB|{UV)&^U-~b8GALroQ0RRjD7+i#qp_-dL37W?;Z~#Q` zm|zRJTmj5qYzHxHh!%m@AWjRWr#ByYhx%CJ zCO_E)CA;1ON4I({A<>6)Y1Y^MeM3MA&00~lsg9`w{2v$ecBX)2G*iy#|Va)fxASCWWrFrVHKlf0PDyrZA@(1;FB>1Nb z*)Q?^{|^eh(kSHf|M9%xBL2XEg~Eb}0D}xEa_XRHfzZ-)KOdEP00spl0KK5g=^6l8 z5E~5vJ3vPvM!*Rk3T%9`F$n*vHir1((*5uHsc`CV1Ym#y;e-Yqt;|8tpn!?^hd}5! z-2n}Z7RW$a`dIPLvI`Xz7jS|scy9{|tWW?D zLI42;Ps-o`AS4Bc#5Ioq06+i)11>3C06;0`tNd32m_XY0{}1r1h#%^gla@~|8M{x1P5>+qvp~6 z%@cD|AM&5y;0d|_00BV&ZYH1xuK;*30003&06B@M0jt0pi~s-uK>!s(Y5;2R2IKxw B#4Z2; diff --git a/samples/h264SampleFrames/frame-0246.h264 b/samples/h264SampleFrames/frame-0246.h264 index 926b1b5a6b8c56ae5ab24e863a508834fbb0c54e..977c3cf7f8dbc895dad71cf6fe2af3af59765b72 100644 GIT binary patch literal 1813 zcmV+w2kQ6$0003AFaQ7nL7IRXya~ndM-UJ=U?3zS7QhQL*+l~ztU`g#=+5Bh(<=sx}*#6v?ZvC3{P+5!aGs&A5YA^@6OMDafTYot*; z4c#)>x;wv~9%fK#6b$--ez#3+{+7r=;$!w|s`veXO*}8?NKg#70pS}1sW?CT;`(H3 z7$uNuT=5J5iD^~ZAqK@f?^1LB_hR4h@1*drv4LnR&PWxo3Onzjflf^v3MzchzvI*c zZ4AJ8FKRAq#Jxh31^w3u|KHR}JX1yQ|12Hm>RS4qoZtV#2t>dEA%_MzisS&MhYrF;pK@E@vPBN)xgRKmE z5e)0s6_D4!NB{@~ilGMv8QF?UMRr`D?HFN1)i-na*O*E6pa2jI1*TX5qWmIW0dXJ} zcm3l8u45=S3KxbF2N{3Y?d;oQI<{ z01Q`X0Z&!)xPU5*42=grAOQ6aFhgpi%GDe0r_=}|su)FFb%|s?00ta{x%Se$WJwiI z{_q1J0fa9&V7Ag1t-(|OSO96>RJv@3+4X&cu)#m zYrg;Hfu^Z0)P+#rf4l|JvePD-pa1y3jmCd(J*H-$GyhfyChBWFZ@WdzZ=3WH;5UDu z0kys&doh3BHCbd4S3lq6&Qb%y8Z}ja_?Q4$ev)5(#6RDtdrQpN-@VwBDB654lHI`L zdE+^#w;_MQElh2j^D zMDV?NTs!~)01*OK?z~`cHH)E2CHNh_WXN$99IHR`G`?sajr;{b1E?bKNlYqDJU%cV ziU0)Q0M9G|&hemK@v2UP@umO*0J3-n015<5={AP@cbkWus9cn=mm=X>56WFpnwSnhX6o8R}Xz} zoPr?Xl2gzYie7`n1q?(ahL1!S^`~dUBxXbaU=lPELHoRHnoQvYToud{h@`J4KlwTK zy#Np`8yslrms#z1_V55>djgeg?d(rMdlnN09*GbTilt$LIY0w{_k#f*09$nc;E;mI zk(a)XKVHM_YyJtK1z03aYor145S^cqcnlxQ$Q{1b%$ zBa^lV#cJAS{^+mZVj6hFcS~ zlEbMm^r7GTeQi^E00Dqgy2DtNTy8!w+rj~rz=E=L#GKM$y^6yCOrU_SY6Qdi)y5bI zpLqj^70U8Hu;a0ntSe$4J$Cz>-zB8v3apZ@=Nz!+8g0O$3JfymtmfBVC+A&awg zoWx&wfDW(^z($?2x(ysmN#V_AG?F;r9Bz0^;Ek|_v&K}gIb$5e=OCh> z9if&{u;Hu}joZF$?c@Du5B3E_nW%9O-tpxh~f7+?VG zlsY!=DXX~s;g*0Q*Z=?lK>%(hpa!o1crX9}0YLyciKqdqz#EJJ00BV&6+&tNYVZc* D7GD|Q literal 1474 zcmV;z1wHxz0003AFaQ7nL7Jc%ya~neFql9x7!)KT6u=8H?4m$peK-~yz<>**Vcaz= zp+0~CdxAPaedJ2rM{YT&Y`{oQkh=Xs-V{gA`M2&L?e3I6n10kNT$^Z3w ziR~*gM`?IG10yPQaDw^)IyAOK{Hu5xWq0sPeM$)5@Doo8`VtZYEx|{MJJUQT>|jy`<9QPr*aL-k=)eQK-dY4s zr?3CrdsrJm94&kvCZbJ-OVtMcV>5HcXt2y z0QLZ6I0P&p?g$w<`I*`(=o2vkDhdDtfB^(F4I_zSi2xQv1?TZuz?o=pPivZ_cdSeTI=6ShWiBbeVg3#L zO0ie{;R6EIVOkmt-nH`FnS@#Z)K{E5A&ojxhjrWk0Q>hk{OC`iRcR<6mdy6+?AR(44_u*Y;rh8?(i~~!%=~-FavNX1EG)<5)D)) zgm1UhJeiOCQ;Yx=0zSa(O^k2e004ma6~V!(t#$n?MKapgh+5A8956Fv^$JiHl+pkM z00aYoEi4Q!Fgev)uR#s`%mhyn7@ab*yDBR902p(GBt#RfvJ&t}`0{N);A4O?GLx3y zfDfPsi76%1A?P0XdNsw)37rA^p zMLqD^gkCxb8{fzh3HcF~`R%tL`vU-A!3RfIR(cd&aao#< z2phr1{3b~)(Q=F;D1P7o1Omb28l$6Vw5Mjn9{Ib-0B~o8Hx8_+IvD!i19L03aS8Tpb>cMaRT{7v)C(+F~Wd$o|At70Ne&S!0PkN}tNI}*Gjdx2vB1M&|N zP_TyW5xw=X%E48WsA+2m20E{jCRx;!ZQLGfSfPCZNfmwX`onHR*G5`mhb--(A0* z>VO2(-N+O;s{YwfUYHK~(Bpl(7aN+q0yF->jf!$H8+=21T6%lurXXDGw9Dxl*GT*1 zI$5CL$SzJ-o@r1DkGE68Xtx68shJIF*iT3Om4rX#dUVrJdo5-w0(le>-x%?k6O7uj zVB91R@1GCa+eO~i@GA!(@jSww`@o!Eo1RfPf6Oz39a^nm09@w)0RSKfpD1Qgu$U0V z&!$^3Cr70`E0@A~#5mxHP#o#D3}k7)c*ua^L;{9cd-wwDnWXPK0xTBM0|g)F6TpmD z_nWD!>PjWxgdFDlO_`L&U?P-Xvj6} z3@D9I(02@Tfba+edw9PyoJ2KetHTV3Ds}&%Pe618Ht~i!h@#lw2cRg)s{9XROi%m?d3GEoBMNFB z{Qd!9!@1qZ9~!N{|8KYfk?L(f^1ux#J~>Jjh#dFczlWw%X8+aw|NlS#dI)kBHBO#j zG>RkuEYg6=JOsWhX`v~J2fzSEBvO@(*-Grs-~ccWpoCME8se=GFcVkcs0M&8S4#*R zH38fp1|sfFi=%czz+Zp2Z8yZK&VNVm;&G&VA1*0NrNJ>JX;&g zlQB2SJB8@RuA9x{%6w+QKVM0QkC|Ce@zyOE^1Ko_f0)i0nJ3sh8 z_?u>I!&h|-V>kf3We7m4kZ6-l8?*p`Lj#Opz%KBT!-ix1Z1jM>y|4HtfCV506F?XQ zgDN2SVzYyT2mk~LzyLs(761;1wD*GCg8%^nFaQuA>^1-q4b1-_83iN;jhc|XfD@^e zL?I|K^ax!|Us6-{bU9e3gMc9rfJ+T%9O(qaoKFlW`~6|kfB=ByqqqeK&`*8;HRDAOPUtwvhnSgeXKrVv?hG z{on!v1sXNWFer&fl~uJthA6H7_wxkq7z`9N;#`GFjS7l@%s2uafB*miK>%(hs0Ob9 fcrX9}0YLyciK+psz#EJJ00BV&6+&u&YVZc*n}L_T literal 933 zcmV;W16uq50003AFaQ7nL7KoCya~|Az=%=+J~EC?+rR(t0dD6ad6E16tOIyk>$UM- zr~r0f{0bcA{h42@D1RL$vMs7H)0x|9IVe&B=IEMC;E#Ex~fVjPCPi|}(M&oF5 z#RrDsn`mR19-y zhRjH&CHpovJS&&paSk{l6b9U$!x;&8?->LK3LqFV%iIFs2=Q&I`pO&$;qN~qywN-e z&tJSG_!3Qo-Wy;9fC*F;>*9?$P7~&TOW?#%XgE9-g5aRY05-PJk}9eq@CXWUF)gqm<_k5wV3W4}O2u>^gNhU3QZh;NR``Py!=zjmP?20A#eC2VA81Ff;%6SCg#r zM*r#i|KdKm1dI9`f*BwISPTFRMbV%QltF8VPGZKulpc0|3BqwGh}QfecL4-R4Vx z2f%@rpLz+3p64$`gIllx00O$42Ke+%{`-^W)$nv90*j1t0_<;9;2IymSIHg%(hum-OHcrX9}0YLyciL3#uz#EJJ00BV&6+&wO HYVZc*cRiwo diff --git a/samples/h264SampleFrames/frame-0248.h264 b/samples/h264SampleFrames/frame-0248.h264 index 854a461da2ac7ca8972f7efa1e3c3f336d118249..f89cd11217904a3f2e650a0e5387c042afec13c9 100644 GIT binary patch literal 1229 zcmV;;1Ty;o0003AFaQ7nL7KoCya~{W0wG8N+}~J#|K9*Ee3$tD|H=ScwpU$5e_L<@ zUZdbef2RVDhdqsX{p&HRs-OAxAAP>YuJCgDn2U(%5rkQvNVfO?ki-~8t)vw1_i3BX zJpJ$RzF5_w2?sbYqr3Q+1MVdYe((HCAAm1>lJwq#1)qMFMU(&jK!Hs)l1~r&>(7<| z!OC;cCvOg!mVjd)Ob=+$GZyQ>PF4{R5XG$l4r&Ys;20$(1?-I_pgsUT|072MJKKEl zu3y^a6cjmnda2|>-G#q;;2Aq*JOACwkaQfi>XR!ygdNq^```p7vfd*ps6WAki~oc` zL<;Z#aN&>v0U@8^@N}5=&dI<4nMsW^sR>-<^Z;O^HAX~xopXx4#b< zw%MCw>Z%_A2o{8tW!2H(J);u$AN!O51^^UQtmg)4iBVR+w3zEkC8ltAiDLoWFCjqyPRVl4lArsY2Rg`uM+CE5_276cN0NhRwHbR=G!zdfTn)k5M6H{= zr{C~!5*k7E-|>bp03~!dSvu$+!!jjMQ5XHl%sh!Eo)7kPAZUyLWiT?vWEgAy=l~^R z55T51Hq3w0meeSTuJgl$o+XOdzyLr*hX4Tp;4~6Hpr}@)=YWJ*L3Xsu-8vFdgU|pG zTK@oG0OEwIbtrc08vEIha_y`D5Ew%sUvQ@W(Brj2n8AB zQ)IFHco<8eOQZ;>6&6Y+VJB3Wc@BknfKc)KjVnj`&w`%?mzym1TgpG98 zQ)Dy~$TM)fCmpPm5_rC{0YCvj0)xt;i2)Bt89BjE|9AyJ0PG6P6k`jSS46@Z&~O1P z02dq;0?-Pj{r8Fh0RRU80RSRR01!{l0a8H@i`)P(08u8dliUBnfjGd$1VsA$0gxiL5r_gpSOING z93aXBC%Tl=~;(_kK004rY@WHm%lU{%O{rS@C{K-&j zx4D1cQ|oF*VfY{n!~>4dnd%Vopsz;0faN$qu39?Fi1m;J&I|;5P%;hgSD9!qD9;Ie z3lqQ<46O_4{>!HKCw1Te2n&cYL5vU>h;n1!gjyT{cZ>jG+wK9x`HFzlWP;!Ru#l&I zxa`Ef5By*N>i~WOv_}i@6cb2N000CO;m(x*_#yC&00aU6;FBQFghk$&sa>W9Va-4g r>;M1(K>%(hum-OHcrX9}0YLyciL3#uz#EJJ00BV&6+&wOYVZc*%tI!a literal 1072 zcmV-01kd{b0003AFaQ7nL7Lziya~{W0wG8N+Hb5s|L=egk4ygF-}tZvKAWoQA^Y~= z1ii<=ivBn_F#jdt{#j8~RX_PJ-+hfw*d3{eBZQ11$I^e_xB3)8gj(9^BfQgZIP=^8 z#Q%XfBnu8;Uq^q6g7zUeTQmO>!g>{+>2Lk$FhggqcVGXs28w8s$vuz%H~?VSzFvYq zJH!^W0gRIlsEvz9fSjx%AR&ud0vyyB1MmzIl7jX|lKcR_v^=v_R-Nuj-d6J`6sqpa0GPT5@fOoRkaTVJC?K@TqtJARuA! ziPk1ifM2eOZ1dm-3I~k4rXJSYf+^Vw8Gr>`!cq%JY8p02P3Pzz7f&g_gBeiv^AbF}xYTL16#&uEfnjIsRcS&kRs&;%r)&*&!hzTVT1+ z9m4Vy5D2ZTSIGSwXZ~jP9wR;CVL{V0y!{jhi>QImz$> zLqYX}=f)M_6@?2X4)_IA49L}JD3AYKW*$V7PY3!h5eOKD0bt)YdiTN?!2UAW|&qcdiXr{qP77>Vbp_3o6+G zGj1aTt>8rxY>;s~fM*8d#XMBd=tVujbqD_700aR}0|;FeK~wFFZ3dxW2cP?ZgMj5Y zEJ8wfuA%7=ix+q?jx-XF20lRD3jPZp_y7U|Anb51V{P9kBq~! z06-y38V;TaMRX95tdILZ01yNG0Kg0b&Suob7?ruH{m6i0hyWZULGz(wz-?Xv$N@J% q0003&0B$C@2Co2kFaQ7nK>#_4t^upS8;k$|0YLy2LTi9(@CM`a`Oh%` diff --git a/samples/h264SampleFrames/frame-0249.h264 b/samples/h264SampleFrames/frame-0249.h264 index a65a5baa1c6c1fbab83be54da08ec858952489a8..8ad66ce943a5114febcefc7f0fd059ec5aa6a587 100644 GIT binary patch literal 1672 zcmV;326y=Y0003AFaQ7nL7Lziya~npqC;|=P*R8lm+{^|0-1qpoIN$b8r5x=iWgY- zMadB+xC%frVUVF1A|vjz(k>!^8U;T9Ocm;`SO2|GsU^R|xS8LkG|M}tRrcRfg_>h7Xben|i ze{L6e!o^q*FX1@!nuDqLx~g;)twZU%m4%cr~n87c)kHQ{}?wq0yHFi?E2zB z3^s!8G+Ha>93(gZt)MeyUD))IvLR%z|NEZ^bD1dlL#-4bZUT`MbTSi(<3Rzmae;bN z3&nAeZ(Ta5a6lXY$-;bm4kw@_kOmlo^hJmkV!#0lxu;0kZ+0oB&l)BC=dU?J|iqxaxdlb(?K^MQhiy#0Ot`j&4W?f`%W zd<)GNyc|7Ng#Y&-0f#bb$|0xOOqx6puSgwrp@9`sOE|QIoZJ8afD3~!vT7=(;y>`+ z=s;l#*4DUIL@0>}@BJ@@p(spPYzRRf01Q6H5oMFC5#-bNfYGX87TX-r(n%ix#y}#J zgAh!lC^W**^f8eZkt79CN!cTF%m4uc@Bk2c009e701ygH@c;$^=iEArj0gr6R{%nq z08QdKf}(i$7+DQR01MUt1S}DlPYjIr-j~HiOv@S9!&g%9Fb4pJTFy!C?|<|_wIM(N zKrLH%7PH^?v_RZ2EWfFBNFY$IhU^f00suou2bf{hE?;789e?gH04@P{R_7pm8QD9C z&;SSsJ{Y_Pa{yh9(es&}J zo>+q!m9GykWLEt8aW&!HQ&paDq>XNfgm^ciu( zgcLF)3L=XDMPN1TNKHApJs$iK+;(=8K(hq2UOV{0cQMEnnu1ux^f`S8&KCj@!-)zL z000mPsN?~YL#}UM0E6(HF#>5EW)jU%BIcN!ZZ>)hTOQkBcoy&rSQ!`5)pRfo0A&os zG-s=qL?89QAS7=ZLjA{bA~ z0T1VoMXbJIFExta1;ssH4}zQkIZ*WL^pdN@%!|4dB_PM~;4@)YMDFkd2|$515OXSX zq7{G}tN=|PW%7dXLJ|-K0N6hn=0SLu2|W3MT$ejhy6^&fN(RAKQ<(p)21UV0V>EIG z{(Ig)WL{uXUM~vX^^H|u`~ObzfBKqf8Ejn_p5-xSDL4)rdQ?yG)PmR|(q$3L-~VM) zj&S10F(yxth5#W_wyiBW;J^e|Y1wR_jUkuC0yGx|0HiP<3U{~|0nn9-K~<@BF8_U^ z0|Ftr!&PJ5N0y%}MMC z{lS5@#A7W^4Pd~l3@V`}@xABq5=1~(~LAcB7gd^w1We1G4701y>o zU;xuiCINJkM8Ef5ZH@bj>swwX08Bps0WcwPAsLm#gOo7v08ETzd~*aB+h~&_dOrR} zLMthbg%j4L!?6KP!vF_j(dbR|Iqlf|7+?r?0003&0B$C@2Co2kFaQ7nK>#_4t^upS S8;k$|0YLy2LTi9(@CM_Yz~Bu4 literal 1506 zcmV<81s(bT0003AFaQ7nL7M;?ya~nqi3D?;P)lGS0J5DT+C&^iQ@{ajNwV;v{IK4V z;z)_E1|SAukl|V;GXDG?EI^2ALgNod|95K3$otLz+6D_LAcWb|M*(=v_0$5e(cq{*jXf}q@e zcmq8jE%V$g5(l_>3!0kG`~so_N6Q@}e%*!`%0t)LQ#Swout7u+!iDew>c`lT%Emwt zhp-iXWk6p`gp^Z$?D%3lYai366?jiX$oiM@78M{=V88%Cy0gU*iNBqeaK^DkUs5ZC zS#REuZaO%W^OnCc*a$UWUkj?LRj2>?Yjzw#;Pa~v_rOXp;||(uX%24vp$m^=m3Jcr zC0XCFX5iphu6Yc9?_UH4h=oGT41}ha0;4^?kXaG;^06-=_JI%&KL_^Kqhs&100VGj ztnlhgqBA5l+a2UMRC#Ov{@fWuEvqab9%!cbZpvB+J;I1%+JloM|KGp_806p0!+FF% z&X?oFM2`hAkUO;Gb5ZZW34jg}G7I2qB@!)v-uM792rmZL59zO*T$Vrun84Kh7;tiW zOfXqJUgH4}Rk-4^{pTxti2-+IC!j41G=6(gdY8Td!T9{py5tA;mhWlFf$S}LnCYqx%v11%n$MNJqqtZ4*kH#?FGc0I*rr`YO7&1 zz`Tb93cC-^1RxNR+m^4TAO4&O+>MrL$M5Ip0i42omc`pvDbL;LfCw{^p5$)zt$pOi zFCD?t3SnS_<^twO$wZ1^0nnX_$a5*gN}9g_F$Z1V;i;uJKKpHQFaZ@i#%ZHqO=8!L zfM5-A7<+t}5f(HI;t=VC4i@VSlRw%62jp@HQZ|}s+XJ%y`3?`6PHtoW>A(R0E0eHr z|34VN)<5`<#2LKn%3Z=T-?zi{h4Z)o5O&WIfD4`9Pe%LzUVoAQM4gQ4s(F9_EQhI- z4{AWzaD%}d#oz;|IYiVYsQ2|t;MgQm0ziO7P*8v<0N)4;ARwU(VedmYvL*lC1OP^; zJV|zQO94)9ObHI&TSExm(MCrFe=6}OILib$HvvsAJGSCWZ@d5j0Af%85CZ^sG@dUy zC@L14gdV&I=p>MydfvC(1KFjU|2as6ug1kE;{W)TUqI|KgA^Yb@ST7Swu=j01?)>mgCBq} zx*Es&T8flq0o70kzyZJjKnwwj4X)xN^MW+aoaz7nz=9Mx<&Z2P!e`$wWSAL;00$Wy zXGqd_Xfe~*Y(I0sgwIG#Z~l`epZ?*91_`W?ThszHpB0pM2BvX906-}OkF9V3Tmd(6 zAJX_Q5Cky5Bnk(PGvi<&N4cyYq}uOE5#YcSv%s-Z)N|fW;MD;2MDXu7pn#67@ZWyzyKfv1H975P26vHJ#1H%{2t6Dn;l31Lyz<2Q+{K zXJq{@1`Z78-c&)}&0#S%RsV1R0ssJE1sNYXpp~549S*SYtx(VGsV{ob$|eF&Fkk zM42d5RuV`4^aBH;DKMenFkj>DAsRcTH;KW>bL+{aj#)$>zee=l{9^If5Q4U;t>p#a{Eri~$5p!W0fc zz1NP@(9jAv4mb1$|BUdSu0cTwnQaMO)oKCw7~7QxvxU`_Uhm)m#V^2r?uVf!r7dUu z)f1M0QS;=m`AfolY^17p3|ftIY!O26X5xvRbQ=QC34e!iAdFXlk#(J(*a83o0pJu9 zpqE}64K3Y$CCn1T&;UHZ06;n?pa38m2?-xSR%%7O3=zUvBy`D7K2S)Xw9@z?hUZ|V z4B#kCTq~_p<`#qJ=wJvx;V9yl=XC|d0GI&)fh3Km`<=YAMvjc=a`2 z@XPfFN;09q1x_I!Y#;OPS#2&yH$VFu#(4r-5`Fw&bOA?2eF!{!lPVYpa zO{=zS*Y(!8nSfYxmKVDikg=flTriD)%pXYrfuM)wv<#9$6r?Qwm)^!Y9dH7VQ|xi^ zz(t8k6}_Yj4DJI(g-zGRT)*lGqL&1jqF?y$t?%C3|D)sohyVNmu0B2F9|-beWnJNc zm_I(=)Eoq3T$lhiz&^i#prDdi{WK!=|Kfk`angdbP<{X!IIS>9LY#JqY)INz0~de}rMWPonMm)n15gAC(GcIi zafZf2pI$JGIW0lL68RKZB#(e92(Jst)M$yi@xFLA00uLdC^mQU894;S;E(J83@TPg z5MHqU2dPZ9!7_j?-@vq_)$o7g00X7~egZsCOsE<>z_RVL@YJri!TePJ`|>~lnnC~= zVZmvXI#?Mt903l%0003&0B$D02Co2kFaQ7nK>#_4umP*U8;k$|0YLy2LTmtP@CM^n C)hIat literal 1029 zcmV+g1p4~`0003AFaQ7nL7N~Nya~vnVG%(pzzY#s^{ApXcm?;oZ{Rff@H%Cs&~-#O z0Pu?*Py*NxlF0@4{2acmD~P}rB?KL1KOjY>1kDM@H2KTVE#U)g0+gXP@$P^edK-z+ z1Hk@>LZSU=gpXg6256rAhpca;9OT`(zyJT&hdl_}Q79}s-+T!`P8Ker1^BCkyYB}b zG|`aX{?Hy>GFdKFZ*K}TY}i7N{x|_Rz8i@dRw^ZDkS^F@;0QBuh!Aid%|IW{#aBiC{{S(sTf@QVES8n-BmHhPlc8FniL9cl?o!5h)aU%*{u}}T zuE3SO+CavH)i?M7BGeft(VzkVE&3K=qBnp5AR0O70098wN{lc@X2cndu1uByAP7Rl z8X)p3tc~#400+P*00IDkDmqLZ5YFi0&W11y)(G^tBJ6`(>W&0K zfD6I`O;hG@xFGfO-w0s*VR{8JAWsvbR@z?zz#)Mk!IWX2Fari3f;7eEaJYuMN$fAf zC65s_m0{1R!MSs)8~_9j002Pivd91y23QB+01yZcsq55OU%-MsCjgL3k)#k99~|r< zq+36xKYwEYsNet~C3s*7SO5t@jgQ}W7$QbEII=2%5T19wF0BEpzyKfzDIfq-OIQGv z@aQ)Qd9Yvy0El;sVFKX^+TXYg04f{?9}Mx0r`nDhOF!-kar6N+N*~JtGf49QUcCcp}Q6jLB%m4%cUVsDu;1qjTWxtBv8o%5C5C#QsVK+=8 z?SITmN&mnJx&QzHK>%(h$Of+fcrX9}0YLyciLwE!z#EJJ00BV&6+&!)YVZc*l>f2M diff --git a/samples/h264SampleFrames/frame-0251.h264 b/samples/h264SampleFrames/frame-0251.h264 index abe8da300325d54e6e4e56970721fe7913510729..a4a6f8a009643c8fd03ff79773fc97c482b5df9d 100644 GIT binary patch literal 6533 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 F|2Lf~QeXf8 diff --git a/samples/h264SampleFrames/frame-0252.h264 b/samples/h264SampleFrames/frame-0252.h264 index e4c2a03e09369477bf78c7fbaa970af74acd922c..60738326213929736664ea6ed625c5a439ba07bb 100644 GIT binary patch literal 2665 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 OObq=lkS+=}x&H^;V|t7L literal 2812 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 diff --git a/samples/h264SampleFrames/frame-0254.h264 b/samples/h264SampleFrames/frame-0254.h264 index e462ab253dadd3580d1f96df686fce99f08d81b0..1e5242e70782174d0fe66a514a7d43d5205a9a60 100644 GIT binary patch delta 1420 zcmV;71#|l237-pp000012`~Tv0YREz8oUY55E(GbZ~_RiEXAZhYF`~02=IWXy@mjK zDLAB4$3mfKbch!qK-ESK6C)Tr95akO%jKHXMWft48N~TnNS#}_6`8( z>_I$5W-7VA(BbUChP(e%OfnvEBf{PajWLCv;Ksz4?)U=xAawIF)KLq39v`5Y9^-J2 z|61}+LE+EmiNC)9J|~+O+m1&TlOD3sCv1tLkd{l9Q>gmZ)_{h4XRh(U=Dd zU;v2*CWH-tx0;zr4~IS1tTey?Z~_li!BZ9Dqjs z{r+a`DZl{;=MbVAEuEx6M%z=vBp9#;?I_M;gCh-pbi)7uKnwr`1poj*d;-aw2m_V? zQU^TWH?SWAr9^xHmM0AzI(Pl`+c5n(PEy}X;-aQyjO+g~xot23Y_!fv@w-2WDahae zAOfqM!Ra;s`$P@K4JWEyH@rZOhUhRUz(5eU0!bv#Dn};I34iV|0JsabwljpmUB6)( z0097hg}@Fca&r@Z=Hf6w$?Ku3ka;tuzy0cJ4w4NH43ERy2MBNi0W)=}Tg`jE8~1}M zFyQxsA+7$$?~l`g`%{`j=WX6!279fbb0m{6usJXECFJ?NU$V*o;9~2=9dPfZtjN#Z;1i zY+f>$_#Koos6FTuK|UWKK!c;eD#pc54Z(qEIUW_x_))+C1X7TMDN0fhg(*M({s0aH z1rk8P21MENpov2^a`>P|g5aPUh6CY1vFO1-0Jw~UW0_n^PX7By7$O&#B^9;4>i^s% z0f6&73_6FRbwz#TYycWupafXsupmBv(}OrWQiH_0$f7A>ZU3|-JSKwi4|zy`@B%`u z#uU-4?Lvw&+FT$2L;?;&q=ycjr$5tw-T(lAJK!J{RDxGZr?GYCo&Ep-fI5IAF@egJ zv}sb~Q{n&-@kjuol|U@!=lenWgTvJq-u`|T@X36z0Age`LYtItQc@qJfihx$0ss;L zJ|@r;kwXV%@liK%1q&XG^T5M^4J`nR4toCsmH_%lU?>Pc769WMkR*^nMZfHqV($`4 ziAVqZ#sB_JL7czc0Ej`)o(ba3foL~;R<|Dp;M}%TWjg`L)CHOy^h+NP7NX!5c03sL$1p*|Ay%4Mr zOd^;O0dN37#Vks(gxO75!c&KcK`BAQ?3_+PS=zNS_+=044+u4L5go^h7eo#oY!HdJ z(0kyZ0ETc2z<+iXv!z%!v9h26P1M8WBcGeV01yp1-~vsYDso3zUiuGzoj}TJKtWZ) z%;x-jRG>G)o&gv!#7V^w7q zg1L?CCd{RHRYjA{Er~%MADCT3w zK-%-r>6qVf&<;UM#=ipzuppq%o7IDt5sRqt*bTHPLeavhwzSopmx-aLO5NAM$auKi!Q8qAeRog>zipz%c$aC;$i$13kbZ0=G8o=Ttl(a3TD zJDUqQ28VEWW*VrjIGt$aoET?DJY|eyQh(+62r(Fc2s#yj0}zAYZEXIU`Nqjy06l?F z1D4i z@zXf&)H__@WA=jLR$WHw1hZAJnqaPioE3H-oCrW8MCr)*L;ur(UPqQ`$M5&(0L4>0 zmo9aG>lF9SNB{%^fJahj7n;`oL-b=+pYM(im??yU4wws>Ate$ifD|QSvK-1$lE$yV z3_y#&yEPOh*WYcXpK*3J3$s_%sFn(7c zg(GRFkGGSJq5kY>MGAuS&kH{fHI&9D(E?)sPZ?ufv}m-vi8kchw`@_8c; zBQDXn1tTMZ*pnuIIU%E}G$}AUMSNcafWQoN!=y1^m;+Z;LF5WS(;wyND=T(V3nG5d)%!e8biL3L^kI skYQuk9uMb0mINq*t5^M#h#O@@gozmt{r@vd_A`(BEVsZBjFWf;Czl-_RsaA1 diff --git a/samples/h264SampleFrames/frame-0255.h264 b/samples/h264SampleFrames/frame-0255.h264 index d70e3635a81f49caa3be03bff1103021bb76e92e..12c5c347e0c7ac1b55302f89cf87c27dbe3cb791 100644 GIT binary patch delta 1067 zcmV+`1l0S$2f+w`000012`~Tv0YRF88oUX@ei8&B5knNzQ@{&<>#@h_r8Ak)+Z{OI zoD8ONc2|)xa3>e=kRb>M@xg8aJ@6mzwg4`5d(ty{2|tRn+OZPkLf?ly^aN0+@0xGj zI3NF>djurC#0hKyY{q3h_vrrWE5i-G4GUi{<^Q_~2r74f2v82|mmFYM%<2W_AaVkR z`R@fK-Paqn`CAwE`T~FkL)~rh^Iv}{NIypo;h;;R7QUyX>RaWz9msG0lUQ@W12)^` zH$DIWfG+?!K^RqzJb;NKnzhyIc~FNNT9ZU@Bkpm$;< zVWG9`V4w~U>RJx6gfU>q1Qcoq8h}FwL9c756MZIs02me0G$f)f zMgn%$m%#SqNCyV)tT|%-~m&R1Au#^h;QJa!%}%p z#3m1uHcEZB-T(lAT>ylDRvehUn+S5Mw>VJafB-=9SO5Y5hJyG1Fd!iQvrveXcAoyw z3K%OEN8X|c^B!OB002M$#Zo6;>>;9U|8PQohPhZ78izV=w8-`9AcXE9j&aN&g$5Z? zdqV|hEQrELWb=#2&NHsgHUzKxWWzl2K2-dbMEbt83}oR zh;DqO*r*Mr&H#GrOECR6f6QozkQk!)Q29HC(6ql`Jp5ON&=ky{YH#xyS23|fLQC=E zdVm5Mz%K#)*jCP!VBW^cyvYCzu7L*=5boR=q~aSrM;NpaS*H>I;P?Om0DvHrx1&KD zenY8LMZLfy1~`d0q9XR+`TP3U`I3Tv!0f%>Pr=|6MBqT}C)BJFD+k~PigSiM4!_cY zc|LN$GoSzn2xlt5L3)kfXb*tHFz82~w7Vi#rJ7I~@C$N)%_j>|)C9i}3FaYTQKLR)+{*_21 lWpM>PpN(Bqd>{BB>VOHM01!cg)+i*Q_gHgK1Ur+N11DQq(YgQt delta 937 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 HlSTz6geaCN delta 1344 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 a|J2@oAOHW)z&tPj00BV&ZYHpk$zNj3os zEyz6qKmu0qAOr;j2&b|- zkXa`Xqgt!OQ-A=0Fv?0mOj^nI+oD8&05AhIc?>>D;Aj`5+c*;{1~R|EAQ1psGNeRn zfev=4ao_-d!SE@&AgM4D0q2OtYk7rfzC1A2aJHi5{XCxzE6Xc`~+x10)6 z{~v^ZK@ds+EDQh`K@e^TMiv&~L36_eSP3)rSA>C4u9y-PKoNvFp{k&9U=;_Ka?~2n zmf!#o1j{mj0)SNo#xTUngLC@xG(rX!00IYpkbwdmvGxgCb^}8kyS!l#Qd$d9Od{A& z-$FvuUl3(5it|nOV7Lo$KVNn z3%E<};K%XSwa*Qa@WXLp1BjvJI@4gxredC?@=yPpdBC9MF?j{TAR9;pfeyTX@`eG8 zlPABMW(W!c5wala6`8kDYb@4#wKiWpdWhd*#VFqyPs bNG}cq@T4bzZvWKYejoq;`S=HhlWznkMaj7w diff --git a/samples/h264SampleFrames/frame-0258.h264 b/samples/h264SampleFrames/frame-0258.h264 index 233cb6d5ae2ae50413cb938e3bd35ecaddf27ed7..9fbc3c20265d43ec3290b253e9bf605a9a75c8db 100644 GIT binary patch delta 1259 zcmV>%26#XK5Ck3_vS|CyLTFwF6~~HY zGR07EPvt3pywm^!0)X_(01F@KGjIn5z!*3E$Q(F89m+>n0C)l9(5c2rNrC7A1Ed8N z%1+Dy@4)y&0C?ZL0s)1CB#fKmX*Mv4%)sOv021H;Qvf6BKEN(;31bCy1b3*2Y$TCw?0mt!L2%^s>GElT2DuPdV6^;qXW&i>K zY)}Ay5CjH>4CWv`D09G!P%v8>P0p7XOXlDJA^H9RfDUjg0#bzRu&%U}1ufaY0mB%B z*Tf}a8p`I%cLO_uX=yG(9=&4c{W1UrMgBh^XatUXl8|Dr$fHzcV8V)W^gX3qk|okYK0<8VLy!k&zM+SpUI;m(Z!G z7d4N5J`Vu`ZMO&PIbgZz^w~d;x)v442pwQZL^>p$@~DXS^nYr9`tCYkVuBC}d$_K( zhJzQL0TR@})XP>7osSb3>46yEt1Xd#Mv_Sz{PF68)iLIU%^ngqAP9-zuu)h5CPp$k z9Ki+m8YI|Y2`HcusnWt`v9N0E1=6kq?^004j( z0*b`UwJVZ#C>-tNWFoSd=utgt@WX};w!E72|KIQXU*<}SUA^D^>vgpwJRgF80L(x* z-3gwd4=M}vXXp-7gbL-OthA3?08HS(N3{bW&h>egg92>u3R?`s@Ct@jh4k-b(|d!s z@Bjn_#2BE)2nnxVqXXTFaULcKLOe! zh4=~yq$ypq5AjmfuJ}J9Q~&Q`!Y}|33Il>ngFX@$dS<0|m@wew`2w(9j_1T{|M>l@ zhze*XAyZvK)akub4@r0TKJWG5wGoa*x9_ww3weOxruhzrNFER6sEh!$E3;ua!!2;@ VkBA3Crw!noL;Cy=@i3E@11h!YD|i3^ delta 935 zcmV;Y16cfn3c&||000012`~Tv0YRGJ8oUJb5d#roxJBW+0l|6%Dj&Qap%;(>iZ_*1jc7pi9$hsx+k;G05DKAZQT8>zXVgX6El7Q z6>|wpEGejR+F%CXum~=yX7CUI2m#;gumFG&OO9^A@cIOQiJVE)(EvJ{*f8Y=RIYW*#w<3}xmt>!SA%yL`|3QjW$cBF=BK~nWuu>=>01bqt@QJ#v-++`970&tTmY+oG_3j}T;|rWZT6?jrg2FCQ%ZL7N zb1^P|b`+)OJscoM03oLkG$mk~%4Hfq`F-L3e}V@P)1v|#)23p3U$|FBnC&_OR?JrX z004l9f?LMA{{(>4=l6%9sqoUvBUi5#FzH} z*}wod0gib(IXV|6Xeqzo1q={$adl^*Mb{O7nyT)N&;SS|004ljOo1WqxBvkFuz3ck z=-Le_*|5jHZm=+nDAPz3`GsG;@EV#S00Mn{j~Vmn_$viVNFrKjq9`!%00aZW=>UlI za!x)YKwp&J0S6=iK$ft17C~xFobnA^02_P&0s;;L<$oRxjy$EkLI|ja3i8fbCJ+aI zP(TaCO+b{^Qt_un!2r$Q(BZ5NPq_LvC+GJB3jeP+zTFHDUtk1t%T8_m8A_ucZ zu4BuoQV19)DTvS=m>+aY{718{1PH@Y&*6haiu>n*H;`O+-c0?Y_O2i)pqPb;ydI}Z z@7BZ8U45|kdw3y4W0_^YZuqkUg3_7zyXbr zMkrS5j$tIT!17%I?Qx40BtMD~FY$|L@Bd!>=*SRVnmD(c%m4uc5C9Nl009Wl0C_Wn z0AMb#M3oRW0yUNZu`hrI-Xf4HCyjAWW~TrEfGThR5F{W4&>NI!*WQ=KMNG>X8?mLd z=`}_GEyc`#>3RP5|AZE#Z~zbiMa|GkPJjO54d_79I+fFL2Z-RtMfea5TY+ShXO(|v zPYQqSU;^MS+SJYxu3x|Q6F>kU5awop-~RP22Q5KBISBXw z$adtLkM00qdcHdVNY}yrHZ>^61N*FZ@_mH}Q;<1-e0YGf7L<1gsaR}MF!B;;6CP1JUHG<`OWFU+w4FSu*1Oz3ZYrsvpRXMs04D03q07D&X zJX+@6%A%=OsYV!oFr1?gEGLAu5WX&A>%agIDgl&02VO!@ZlJ<(^H<zcoJq{D0BZG`Tzj{Pyi4J0+E7QP#bH1ys!#`&_)3P6oE|n2iSg{|Np=NA;35~ z5#wAw#mfsI5A}AO$+Q3h8y|QY+Tf-IH&sp&!vF+BatM!m{f05`VAFT}z9$I%4d)*BvgOzod-03%k9?G z@V|r~1Aw4}01z?&Kn0h_@D4sPdneA3hLq1NY?eZR0D!^wxOpF$4an$mH4j3Xh;s!% z8td=m244#TbHIY(31y-bFO!>i$Krv&2P-L4frfe)_z(mFMre-PxgcHTvmDxEzytxU zYPu$D(ea}|Y6UjjbZNT*3t#_#@&GYYK#>7zh|!^65cF+$Ib@rl0dzh>4;Zh*0mi5FDMOfs7d$#bZl58md)K z002NB1`NV!SahyMI<@)ms0U=-Og=&s{N4ZnfT*pYRA$4IqI}DF0z*-MbZ0-Xg1*ci z(fIf=Cb3WiK`=n_g7i%zc8!y!z>sx6U*;k)|M|KA0D!9z00Akaz&?;bm)`5mvA=V< z&MU;g35VbSCJ$UlN@a0>&NV>r08ETzbUA_x?leiik&ueYW1&P!)R<&#hzf2P06QfI zLvNwaZO7ol2PO7l1GXf8ehlW#HDCGpBe841QrY$G0kd|W1X;CgfuXf{J$lS&+4|@H z$}R-7fF^-*kd@Kb;9nvOQ@I=8u!e58=fVN9Ka1Pv7-1Sv14e_QYVI#**FaHK RP=Ee%AI}Ql9vG8u1t-fztpxx8 delta 1416 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 a0g`|K00BV&ZYIbEuK;*30004#e*+hKsqd}; delta 904 zcmV;319$w636=+c000012`~Tv0YRG}8oULOe}aAlFo;Wl0s#O}!Cg{JstF0A5d3Sv z9fp^o{xAR#0s$ZZVM_)|ScW2cc&v&CKme%1G9;0*sZKjeyaEbXqDyo|p6MB6t-n?q z4*{GI41fXxSI)yh8}1i|<)A1S2Z)y03{GboV<9#+c--QD-n32AfFK8U2Dpdq16mna z|KJ4!tPvvQ$Px~*=k8=s@Bjn^M;Cww7;-?_N$XH82;>J#01yHYu}6y%MVAx41pESk z03Z|^u@fL%TSN2Ps#x$6ED*AqDYjAYMfZXL3~(qt@*Izn6@G3Db$|j@woLj;1PaU zUf|KTfgoG?*eVAi$noKzakHSqfH3n*0hM!M1s}$+KKT)t8X9;`5#|U+o%%2A2pC)_ zD4qro!$MQ>XN!aq`{Ahv00Dx$1M-6Ipil!y0FX|98yo^V6iSd1EH$yx$dqmWTXbfF zK0BWOsPv0h;EXTzx>CQAoAm|vO4N<0#0{tv(iFu@(VimE>KLd0$E)B@lD zR+Q_11MaB<7WF^{M@#@LV(3#lUiVIwU;rQt0?ot5eV_mc3IR%y*%^mo&kb6#`vH;e zFdr3V=mNtPZ@=6I03Cx1u&yhz0eR#k?gc3NUlk8nLAyNQJ^=y_P3*nk&QIpM?*W`( z93d>VUpf2z_wXR(03GB20RVylDqXH}8zu`&RIngVfte#D$1Cj}5OL(=$v zc_1=(P%<%Dp%_-x4x35HPTafTL&x zoE1IL0L0VcH(u+itm6&;rNxd-1_bAlLxhdCz`%(h$Of;IaReQu;(UVu diff --git a/samples/h264SampleFrames/frame-0261.h264 b/samples/h264SampleFrames/frame-0261.h264 index 29d6028b88934bd26b5eb076870550cf44caddd6..110ad6891c7a52eabb079f59f7f35f63f7ec4744 100644 GIT binary patch literal 1540 zcmV+f2K)H{0003AFaQ7nL7PAtyagXHS@(TQUsKX`EoX)Ee;ZkhF#${f5C8-Kz!*{= zPR)<@Od4P!lwXVh0RW&5cx1EyFuhj#-T(kV5`f@Ym?mf*y|Ex(7DH$Mxc~?N1Of^t zgED}K#;g=goo^TBbBKnl^?QRH0a}z2HUWRd5=p~AasTjQn=ga`FhnpAK@h0RzzGBf zK|Bm7oFjP0ef|%C0kUk7wI^Ee01yetz;Fr>>V%8PZQu(G48X7L%#J)Uz`m)&F)Ip< zdfnNKVfBEF_69qY00p1|k31xm>gzt2#X{1=ghpNp;;BD;taHG90MJ>UsaCt}1=a!# zEr0bWDJoyV-~a*uU>OMQXj=0)aI63R-Vj{1fTKsPUOGup6nH>M3{2$FrCKC=3|Qqr(2Ngdb%lfM);-2}ba?O};=Oquu}koPY)$ zO6qeWBNz4%Z~#mS4`wpl2pWo+JO6k>IN=C!;)y(Yf`xzpK_oEz!~k$njKX%3HWG1v z{qJqIX4v|w@c@nif(KI&R^wxndLH0V@BmEP8>v>+b@X*>{L#baeH)B1z!sPQ2m;CA z7yuwYggvt^_h3A`fdGK|7`PKB??7ch82X)g-%bTZtHOlGzW_o430RPIlgf*gjB>2b z@&F7IhyqB0x1-Aej>W{lN(w@SX37xO%pH0G6(f{k;%oo}12xbCfD#hcG)f5dVU1Q; z91FvA0>ysx#Wz5b3B-c1;0Oo`;pA5N$RZ9HB|iaJrRY3BP{cw=X!JpUYIa>RMr1$+ z0V8A*_jufBnZgLTE0`wHNnTEW@^kHa03cd6xbTUWS?+)K@Bm|b0+n>_>`y_v77_*? zi4YKqrD20PKmz~wfxt(A7TrKNBp|XRW$&Yp*RcCq|AJ@<@E!Jnz<}~Ndl4rGKLh{- z4gdf_L-YUy4gfjNyaE6KdnCXE4itG3;s$~8fGMN`0brUaIuohj$7nc%03ew0(#`>u z&GMJjkzxrPY!bFTAR7i3xSvKg92jJkT7uj=*Tz$3%+Q^fI$VVS_vj(nJ{7dpaWIJ0fv}& zDjgxB0ra@+0|vvX5P^Uo0RjW(4)936{+jM(0q6n&0}e1#lu+}<8pe{)VaP3iw-Ffy zk~llsN>lRx-tVB%%GaW@zx^Nu29>}NEy+&Ewu7ut4rUcfwxQ)v2WT?R69fpfQ~Y-0 z=ZF4J19`{?{eZYjoT8ww`n&)zwIMsN_7C-*EsH83+|A(saHipa1F>jY6a5T(c0YJv z;J?en3V<=2eGXgq_N=0h-#*j;B_IL^)}Y%!7H|v~TDLaT+T+d7nWKNvFt5;o0!%1I zlx`PCRQL6D3&9pJFDPu70&;ACaD&4&%lR+RY9J>K~tJ3)m4XNP)7H-$oNB{MA zfa=w{ml6ek=m@yWV(6+n#deU`cMm=i=ZCuCA9uV&2Mz!;0GF%&gby7Z-~ol?t?6tU zT;^$oz0PJmh&T_<%oR_+e&9OW4FVMH4Zd5EL{T#g-)sI8h0GH(OaMxFm&Fo_CGZTC q0003&0B$DG2Co2kFaQ7nK>#_4v;nKY8;k$|0YLy2LTvzQ@CM_h6_8#4 delta 1432 zcmV;J1!ww%466%&000012`~Tv0YRHU8oULGeE|R<1t73|P{DyrIPd`g5HK3=TNbCU zSxASkfC0cj0AL+N-ID7cy+$h?_3yf; z6^Cv$8bBZb5D&X76ah?Nm@x#fHGTWQ4FCW@2n=GuoJRGr%qH;%U`q1l< z**!vZ1;tcg0RRC2;0p@_3ycnRR;$QEe=`9S#6~B7OsuNPioO5_9N|b21nX>!v=Tl% zn^3qI;0%nQXdTiAIy3UvL=X-Y8oVMJdpa;c03ak9jD5AA@Esl%&%#d!B_Kio78n2s z01+^MXaGn=MD;m*g2X@&V1^GS+J}S#QIqaH!K7rD#D@@G7!nUg6ZilE0^z_mrN2<> zkc2-kfWhPe1O#~|m;@0j5J*b>yMYGXXe^cKf%n3n${$(}WeE9=!H2)U^%yZiODsN! zjWQk+c!8W@2z;rrVK1xP$jyELFb5wC*rVEislWr<0g(ZtK>!pB-Om7pDUwVUh7eAH zfFTDg;mj&zx^D^~Ql$sL1_UXgf3TwlV<%m00;$`BW&!8|<|uLz5cE4T^7nuML#zV> zjxEM?Qm`?$vS3e0^P~->U0r&t^Y-x}T#YX;zm~6INGOE?1my*hiH2Z35DEiVI6c~TJhIIv z|JemFP9s$Hb?JNzV}#*x0db!g)Gw!h)+b33%d8+DfDAc}b#e3s4>skZjXYvvoVZ4E z+o)1Ni8ufV0JCTc4!rW#sUQ8~WB^{L4zEoSec+J509eExB%x!=i6eVV;RCX#(Dvg< z20EhoB4vF+OZ$V(>l}UHr3$|H{b98vKIw;XyS=ZmV#fDt^FSbm5N1+1yFAf1;V@Rh1L>_W;GLBQqiT^wA&SL=IrU2qrxMlK>r==qzJ{yW*5cfyTf@^?|xUJqlCT z8LqH5W`iox{3520@R$Mc01yVS3Yi1F%`jp^{!lUxV&K3XkKhP}nD-J#P^bJGvosN} zeguulQq)nc#FP7Y8cXk@0^m;yz?xs>;spf&CH;To{}d?% zUI_pakOKyypxZzeCgTf9Ah9Wj6bfK=V}3I!T}lK0bi6Ht@n z_yJ)ikct%)GmUr99$Q(E(mOtv(V>+*AYcbFVqVLUQ>G6a z6oG%)@N+yp6>!b>c~S!$3_xG<|DglNM|c2Xc`H3FxVIU^!EHh2G{y=aJnU5xzrFk4 m2U{>`7{WXke1eEucPaM|pZ>zG-MYa4&K@vw0g`}|-32F|UQ{Rm diff --git a/samples/h264SampleFrames/frame-0262.h264 b/samples/h264SampleFrames/frame-0262.h264 index 4c5a8b2f6869fdf4a2ef9b856faafc2357929f89..ce2bda04b32e7538641eec13bc719bbf0dbef51b 100644 GIT binary patch delta 1085 zcmV-D1j75Y2h#|D000012`~Tv0YRH!8oUJ`9u(OJP_y0?QW*7o5^Mt;6$!6|Il_bB zQDKUZ0X+dgQK0U{J`v&6EZ2dhh~Oo~y#TPqq0hlLNP{KTfiMuzcO@rNQoaHNNlTDG z_z~Ws1-!OjgOH3Ff`C*E1`~h+004jp0t!Rv(Xsx?gDeDpQj7QCVY3o&0|lp+t9(k| z-4Fmm0Q!cB3EjLPDbp|h-~fS);!S#t5yaa?MG@cx00IEY78l~Wcr!6X6HnD}00IF= zU~x5{5=~4Ud7u640AK(habc)Y@Btc2hLGnIf(?!VvVdVQ-5Mfq-~2*A0(WHqf#H%g zE`?`Lego@&=n4l4cMl}WxcmSQNGJe+m(U>1Z@jSQ#m3-HFb`{HY(Q*g02Bd%j@%Yy z77rv%)gAxSb{VN(3SF96@jpOfNC80OZi>FUVR?seBv(3>*OrYN2AN z5E)yT^u0`$Rs?`Lhs>~GTm|r%kQ2|waQ^>)cs2qFM&NABePcId|Ni3yAvrMeUd|AB zpm0H6U=3Uc0zpF5^8Oe+(3&gLS7;|9){ai89hu;8UF$_i- z!cL{H3a#)A6wpXMq`5kCpgPneMW6^E*xKL$V8yhE2Ad&5A|n))8?WyG5D+Ngj!|KM zL`poW&8qO#zyAJUmBRsohMP-}u~Dg6P%!>TZ4`A4fdhkf3<3Egi9m1%IUiR6DYjw` zH&ge2bv2&ri4Y<`aByBFlt0wK#Z*`TuK*ATH4_VmFS!H~BqBU41ZH2>u+Y6=J^z(% zbDR3Xf(Mpq@7^E(?D#?J9(;%PyihoQP?13U+JFVv0Rc6u=Y`-+g8(9g0?=>(U;scV z2nOI1P&%psL!9~p(Ke|ArV2;;4{v*D*@WJ=f;-eSvtx1#5q);NJMbrk_Y*-Nu`mFl zfEXTvUJylsfvaru+wR~Dg3cgCy#gllJIc=jZeS-NCCER)oiYH&QZqUKmp`mDARw^= z1cCIWZ7>ahHGm&M08*}xpdgn*kf0ZWm;a!u+{uA@egCT)LnDzwao+yjgZKpwlZ^u> D{!6^a delta 925 zcmV;O17iHs2($-(000012`~Tv0YRH!8oULT1d|Sc8Ge_iH=qar2mln|Iq!rFe5aHq zky(5giVX(`g0Nf^7+?TxX3-L3=!?K0DZr%jK3K^NB>QFzj+zz+^ z2q*}YfDDJ{&J^i?kNv;^VgOkYkM33~H^xhz(rEZ@nox>=K;r^MFYatey*-lkN4)?D z3?@;FAWh3sy2De-Pl6j5jt!{*Dg#SMs3M7zfDE7jYVKh1HqgdViof{401#mS0SJHq z5Q_i`CTff3F{UVM7s1Q?7)TnRinZWQ;X4$!I>i{!a{LJhZvqgA=*8BDtN<#y zzj#`K0)?+vohXeGPPcCmWf=&uYYaOl(1A9-7!t658rV&d1ue|R22>&^j936)Pa&e3 z3)5>(yoUe)Kse%pkv={GTN=m)fGGeW2P{L(DrCwp3LsXc2Z4exf#kt=6$I%^WFlFD zUw{S%IFQt6Fv)nq=Swi2bn*xTgG}%NkK@4jY&U^We3{?~4m6SCPK~`peptEa$*02N zk$^~lnPjotB~octRNFxS0D>W*BICp%BvwBCTm}Tq0fqs!wV@g_hyg$xI2^%n5KK3K z1=AtYcgQTO>R$%{Lk9pu8mL&T2~Kt#pSYYALNEtVXb&Wz*j4BUNNs3kpO`yum^K0l zM&P3}FiH0Rcf1MA7z6T04&V$&6DS?5k9K#2Xp!PM*k%e(-J zt3Ut~>Hr7^Ta-*H9KPfbNRWu|pb@ygS}${yNRHPQM3REqJRVf>X(GM zfk4&vCvUz0H~8DRhb zKoEF-$))c-3L)@eNHk+9m?!51{!W|iKmZ^p1;=1TZ+p3l}y9%03aAYrTX_`L`|c&YW@$v11Q^%8u`nn*l;J1X5n~FD_JNc zOZ{Eo04M<9^5~*KL((W1JGoDQTmTNB%)v%5xwUviDXj+p62Jj*!B8y#s$buDpa2j8 zZ~zd00wmA@1pM$7CO=i@01N;WNwi!o%`^lFn-c&9J?(fyp!G@z^UUZl`~U#}QG;6l zkPs!+gJ@NZ(Yycw01*e@k&1@!-!Vj<$E}N_ol33uMU+vfAajyhDTEih$RhD z1K`-;Q~?47gGFUT#YFc1@Forq3g`3ip??y83H(q~zyb<@0E+D@hjO)z1(n^v7!Gh? zlU?g<4AHZ!ZRF zuRy7rpmW~la86f=^+12qych$Ljmj@DKn7IEtY~S@-`VH{)D8fW4giWMMfNg(A=zUf z6b^?=AOH$bR8C5aY!*UA69`UBR? zxe;H~2a8Ky2jTF9?W`LLUp@y>_OVEE7z*Ef3*p4Dpq6dtfk2rl2%_TEn?W7{BKr0i zMZ}=TEr$c}u9m+HZE=Uw_>gTK^55{k37cS;&%ti;e*gJD{fPkGyOuwVKZgLJz>_2d ECtCIk-2eap delta 1077 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 diff --git a/samples/h264SampleFrames/frame-0265.h264 b/samples/h264SampleFrames/frame-0265.h264 index 6dca7e4ef0e36d0b55ab425ae04d1dc29e4d379a..7276a6ceb0a9825966a4fdf7d5224ba69be7952f 100644 GIT binary patch delta 1360 zcmV-W1+V(@2jmKW000012`~Tv0YRI<8oULQ#DXzFE&v&}-xSTa0Rc#hzyLs08X6NoQ(a2l0|sEW%L%Vdf)vh+|5-1B7;bh7P|bW3 z6$O$dm*N$(aex5>{9$TQgQoewbO4wEg$h`ezDEz4S!CKtn}Nfc@JzR3>M2 z=rzJr6_FEvhfx}|6XlU)DMmgffI}}673>EO!{6|Pf#_8k1<*s~$;*rY ztw?F}V=Q^o~_2_ka*C19K>UXpowYsaMk9S^xn63eUiB!*-+; zxOiFO#SObhka#n{T|NHpoCPE}cYLdf`=9^>0DYJM7!VUBjj^E{!c_nbSC9z@OF4}~ z!rL+tN?}#Wb6gnOy8Q(Jx&|OM4EO*Gj-Y5Vm12u^6%@QNpKKx!3sW{~(oOe(03a(s z40r*5+$m7K-wt=SlZsZ_8~_0WYPbL?v2)-4z-S ze*geLC`P3nd$5!kES41Aj^YI1U2OXI?&L z4Fc_>F#rI8Z~zD!VzvMVfpeFT&qr<9Klv}P8Ngk^nd0;(XBjT;E()Vbg{9Vh6{}(iA~Y_-o<-fZ$G1i69`kuC=Wen1+;p z_)rcSezi77vT?J)<3RjkKox1@1CEa&$6__yL9yx_5Kk0kw-o>IegFV~kPH(RJK=*| zR4epB37qM5{$!xAJ1=tAz|aGZtc(rGE<03aAqU_9*~MwYLlx)5OypMbzzlu>9ZY&* zrLvaaXai6J25_hX%wVN|wL%(EGHJA1{s2@NUK^1drIYE?0?OrQ_D^b(aEz7PCh03ZiU04f0F4Dq%B zVP!=C00RI(<{m0`|KNwB00LSw9uv>NoL}H`0uU5`K!p|* zfiu~400+9SF%a+T)r@jVo~`Hp*rv}XObwg-@D&IF{J-Gv5d+{vE_4(EV2O|}NK)nC zH*Lggo&qL~BNtXyRg~V^02%oTgbExU*f;{oLaDae@mub&|8CC$YzP2P6cFJd#{`*? z!?a+{jR>xpK*Bd5s$x=$@V}FPecnDB@5nV1N(lA=_x}(eNK=G?GB4qgE85Te8NiVO z09+Et;E5#dAo5ROU=X#3p^VrMa0K0uSnUiHbYXWs6u*18Kvb{x!5wRnmIi%&6zCD1?U)ynlT$pdjm?zg|+x3gy7iNwwTcm{B5Tq<6El4&=9QS&+_;ZYR4 S&;Q}Z3W~Py;5{Id%L6C&8c4MO delta 987 zcmV<110?+93i1bk000012`~Tv0YRI<8oULMVMyqVz*MFDfTw{BR}Lcn01^lQ1OUOq zGPe2|2p~5iJ?3>+ z;1mD>06>(RCJ%__ba7`x7lw)mRM88v4To2FKmr&D3VHrUhzLC`4sw7D7V>ol$e;iw zNPqk27~4R90st@o!envxX`MC$N1$^20ATQtU>j0)0++bR3E0hkA!#tG5}zI_XRy=N_zGG|1W`P5x|gOst_~4 z0fryKG{t6U=!Q60_7_k^x#vj+oH-S|V};JFPyi4%009H8%HRNC85TyzfB=BN%AUxf($LfcWQO45HYEnEm~L1xEk@0Sm(bN(+DiC^4~};9#CH!NpNf2?Z0q z@pWi_4O{>L067T&0-9R@1h3F)6LMnz*aLt>JH@bpaq3y$xC{U)90wl^^^K?5jv7lp z?gc3N0GcHa<%9OK%mIKIK!F+RgO+eCSl*ui{sK5tNddaSoM}XA!bdOw5CJU!2m!z- z_O8o)6udNlyZ|5!3ed7nm_sjX{$g560wnN%u6_jK{lK0CASZzdiwZ`LAOg-wZK}+3 z_gcns@_FWd{eWf-pOA+jXSeyVAj|)Q`v;9h#e#rL6-XyB3qL;@)qI{`fQh3~lVa$; z(|1@oe`>Ojb9-Rm3ndDN6V$L6ae+1j04Ita8fzh`jxz1fNcK3ts|m$Swl=$)Ldd$l#5=uz<;5?S+cuX@J6g;Oy4LRh|8SM_5aq89`6x z@Q=$TX`8fS^~c})@sYJN?qHT{I0_C@zRNX2J^*)bto#3QAjAaI>3}}`vOMkp9BQ%o z+^VQ?$Rc$3HS_s@#l4=*nZAUUe9#t<1aLRB;O#73Rc%*+sNdZ-YNH$3AjLS+lK20I J0qK)H1t)CztvUbz diff --git a/samples/h264SampleFrames/frame-0266.h264 b/samples/h264SampleFrames/frame-0266.h264 index 235958767ab8ffa5a483fb37b0442ce17f8b026c..256a7c9aed32453e056c747d9d9d635f4be12238 100644 GIT binary patch literal 1799 zcmV+i2l)5^0003AFaQ7nL7U(jyaj+xC;$)u1Ok8#3p8lavu4ejG-%ngU;n@dk-z{z zS<3(c0MI@R4McH&)#1B%9%NK^EUcmM$am;iGGVk1`bJ%13{{lEYq1s{j5(50M)sis0g@BPMM za`!L+ghr(eL;re#13GsHB*&vILxUAOBs)zI#MV*LOJ!s*1_5QKWW;<<(Re=;r?>L` zghK^61PuHF1bTyd{0&r#gks142fzT@HY9(dTJQmYDM=LWN@(eQDaP!dbH)4k_XG}w zM2ptO?8h_E2!(S4Ww-zUwg6G*1QNYnA4}q)X<|YnI2)WQo6^N+dN;h+8L!b6Jv>hbgS&0A`mBtSMLFf~CLr)zf#!9SLfB+B!2r-ZhWNK5^VlUw!N~QY1 zL_h!#9j#1&X~~5zfKVU+q~Jm$i0Z}j^Z&x{`oI{x03w#;!b@c*zVHA91vplMkw@oY z;A=+a?zm_O6qP)T<2WQ`*Y{&mRI2~~W=uwJ{

    g>yM~>+5i}ln8mT(yI38Mt-WD80{CBc~U+3$e8v@{fS zAUE0u>$HD~XHWvE@BzRS1LV-V2E|bDtz^t#tgs%mV)UK=OY!Uq5=RX9#&V9ICHLgL zt4MwT0Dv$7)I1sgEbWA7cHndDKoE|nR2UV>K})@`gxS&<=eY*>J^%s=Ko3X1)PMj$6DB|aV8NnDn-w|_lmMb=0|2mXL>~>-@L)pfYWk9$ z;D$jz3`hV>(d7V0Qfe#1auiJv=0rrWIIn)haSe-5p$}0g7cT~JxXP;>=P&lyZ926n!fRX0n-3K z0Ujr&R1F?rS>f1~IQwt-8sYx<9RCG)mEegMd;kZ)L<7BQ5yr>u?GZ3-rX~TaiJH)6 zRu-7_KLCzi%I`#bRR8s%kKK3w`~Pi-jOa*EcFW%j^vwP5pwUW~qmf_!kOG6%zz{9T zPRO={tXK|M!l_o&5-9)ypv^d35+>FweY^R`a(8#fKgbHl+@Gb~}H7hde8v&%l~rz<>o1AOR#mL?RT-C;(+MXlRaG zfC|k$rV1R_`~X{RP)~8f8~SVVAf^yI(3cwdnU3IQ5)+dNMk&InmYhH-OCTd)&Tc>1*!Nb<6id5qw2^aG=hxZ?|1!yhwK#+kx3w7z*4{f p00BV&ZYKB!uK;*30003&06B@i0jt0pi~s-uK>!s(Z-8p>2IG(278L*h delta 1432 zcmV;J1!ww)4yy})000012`~Tv0YRJK8oUL7PCx)a1PW<}7-^=OVTKxMpZ~xDoB#p= zpL75L0B{lv8%9Pon<966FdSWQga8}@0A-K?r`9m7z&Pjz=8@y@04e|i0)Ph%N(qtR zqwH69W8fGef=IH!vu-<6*#QRr0SM?Jp#1VU@Y=k$$;P99RkS~78^3q}K)ayRfHHEEl-d9X zPy=$YYV(i_jPG~~7F!y1o(D);1RzqLB*w3QgD4ykIa`3~QI4@2YDM5|Z~^<4f!!c; zqdzTwgh2q|QLDlsr?aC300II*sK?t`{{Wg_#0T**7weWy7y<$MbP)eruLPtP6x1n- z7eNF=R$+F?AA(Q-5CjuvNd-o>uxZG63&2|d%qP*r_L1y+edNOY&&NtU5@*ax;t7#| zSAsH3mM;Jx!vuEfDyaL_3lX=#IshsJW?2gf9j+tU2;(#$iV>YCAi z*)fQ3x5xkv1TM-8;G(@;Y$RC`9sn@sE!oG= z6cBB@MH_g+Vw|{Va$l%oKuHt;1OQooA3$JigR0u1A@G#}w(?10SA=hPBrpIxas;kW zu!iiCy~-Sj9aTTgdo+M!sxQ1;v&kucXnCp>e?Ve|UwhuL$;f@u3oJJ`zGAZ$HM3m+ zhA@LN5Q1#;&;8mPhg#vwLL{iKzx)A<7)ND8_3Oevz=i{0@UDM90%?B&02DxffCP~N z5QtNN5t@7&A@y(pk)F|kW50jE0{>-jMW}F}^KWQ{A&4Ro?@RjJZGY4qmJ*1-2}S%K z#vtnL0mS~VM&dZf=d&+UXRs4xEW2iu^ZwgxM>R2D*0=ZY6CehECapF(N=nD~ zFi8<4mvh3t1l2A;kQ!1vl>u=+65lLAf7EmWc@C#inciz8S%!G1d=xE1-M|+B8D6hb zZsR!N;^b~c005cj0A+#CALD`mI1mGn4pyj1z$!qBFVFilK(W{WS)nXC?)Wjn@DcY+ m&}c)p)}B^~YAmPTs6t#1EH~1vg9qLzNhJ@#`~@tN;07l*hHO6o diff --git a/samples/h264SampleFrames/frame-0267.h264 b/samples/h264SampleFrames/frame-0267.h264 index d19e2c1c502140b41d47e8ee4aab0c66e0241c62..296d3fa91d489c686e9932bccbf052a8a52f1e74 100644 GIT binary patch delta 1170 zcmV;D1a14D2d4>t000012`~Tv0YRDo8oULQ;CT`|0SjCJ{q*pC$$6W{`F;(;FlGsX zP%s#700;mA03Zk<52r@Q`z8#q5lS!LfriXjfa7WBs^1c~|3m-?zyKfzpb82SyLdoT zrl0-50RtJtno5p2g^T*iC%^~*1Ob#RE5&v2W@3mWqpI+K00aV#z~XB?B%Bt}*PHVI z3;+ZTq&L(e03%6Y(j4M&|AT;R^aBZ&=+PGU{}7M>nb|-fcw~tSp;^=0U^?r-P&iZA zdnj3_fC23e00IMm6yyjdcHUTfi;cjX@Nfl@^z@(r?3e%%s5l9HSldEV5)Z%tj7X&` z8M2kxi@*SXFa@yhr$#iZPZ$ZS{ouF;fG$^3$QwBU{37H40s)`^AUFfF#Y5?9S0OM= zQ>m~6fC7Qweq>4n&zHS`Tmy_4J347FU{ofHV~L7i1|Xmmuw)8=g&Fh!!9X;cH|@Lu z@FV+sk$=zv0V@zt7!;j-R1sL0fCNBL4;8B~UD#BAa2N%k1b_c~f&m*a;PpYa6rrrQ zm;tx|b65oFdguxO2rGsz;0!ASQmcgz2ZU=bj>;dn0%ueh0Mcvhhz5b}mXGgj00aOC z0M}tngThDpk2)iGgy?c0sJ&8A|E7x_i7%4>&ISQqSS)}WPk$oz`!2D+yg)JpJPQF` zQQgUZpr$hR&sGBIs2B_s>K+Oec%}daRbhYtK!5`ukrmJ2@Cqw{=kt#jPk!JKFmT6% zG)R|n$}xo9APrsOey9ON&;|p+l+b)LTMf|w0R(UW5MxIG0D_nU@$aF~U;rRS00INO zhCm0yQ$Nrd1tbTInvlJK6RDNNAs{d(JQxsvkOw~iJ_J~NUsPbr7u0wF2oVwy00~vI z2lDt$4hE?L&>@fU2@rr#b}3;6Q!=Of$Z=>012u~2^GuO47=A%BAdKKcfRSX6hs_=V zfyLyhkWqbP-yeoVqCM{fQ-BB+iT`B&F~w!M^I{b~uy`muPm+RIa`!Mb9Ff7SC$(#T zM(s;~_ke~tQy8a+D8iPa+r8LD3!Xj%*b)G$C?P>W0`^8u zA^8ka1#-oFOZ7-fmS7>0RPqRbGhJqXLO=GT9}f5A5JSB{4y(LM_`Lyw+*FjRzhJ}5 z`uLBSz1V;6=is$amynbrUckcLIi&o2{}UJz0J10ah_6@+!-;uJdB6x)g>m75So^@6 zi4_eZ%nJu#VFs`iOEQ888hSHJ=1%{Q`FesVKowep1Mr59uL9>4Vg!ov_y8t6frOUb0|j?lEa$cQP~yB;-+k2wuFb kPfOzf+9`6`jraHbaiQ5txkZ-=Ss#;Gy9Tf;K$Ca_CtE4+)&Kwi delta 904 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 diff --git a/samples/h264SampleFrames/frame-0269.h264 b/samples/h264SampleFrames/frame-0269.h264 index 91dec3eba8e2682364b04beb098b13dbe0f6e433..1002d2cc80664707ea7a0856a111e4edc4551ef6 100644 GIT binary patch delta 1235 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 Cr@^2A delta 904 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 Q{QiGGpU=P<43nS*8cNm^!~g&Q literal 1466 zcmV;r1x5M*0003AFaQ7nL7IRXyag{of~37llLX5zH-R@@g_Xw0v`+kYzm@9;sAgtCKEvd^`l^pD1 z^PC~zM{b4NM3(=-_z1!L-&z3ck&=S)AOipx;s_;(`>i6IdEf@j0YPu+;z$ubL_wD0 zwqHS*Sa~Cccwz&X)rJV{xV-@hBcOa?2oKI~EnQql-Z_37@BwJvOE!}~|EdOwNIXw> zQXbac^3HY;0s%oerT?-4zu}H2g?AgEOmvE3Wch{wDYQwCrtW|5@nRCOh!y5Q$f6~e zgO|fmfv_+Ga3}+yqy-BaU|JJ za6^1V7qswbPzCHy9Fat_ZDOtvfyG8^7mrIs00IC5dmUXX2S^imqVND%h z0|e-}q_st_Vn(JJ;yzx2ln z0or;^`~Vt*5VqORq3w_q&+vEr00IU803ZhwA>+pLz$lxE02l__pjiM+FaSt~8ED3g zP4b&?tNsEVpcrHDS{?)K^Y(z4K7<5FKt&XHIHi6M^#A~X`3+7#0qaEA*$^!YVr<@=0a>z|>Tx75&oafA8G`eT1x~ z+WwvX1^|T~1|T$;ZvY&{Z3({h7uFdN20$>25rWqP@TNE#hu}xD4&eY5)&aHq1>68q z@B%}@s(2lY$jC$Lr>BK;@Ft)v0gMX(VH_BND{vooSchy5y@8?I{HSff3lnIS*E|I#!Rt^haY+f(8m=ggfu=o*AA100BV&ZYH1xuL3&) zz#2>-AQ%9keglk7USU&1VBm5|B3au706AbVy0gPZ{ zfRJ2A9suFA4m8(_ZR`wK-)+q^(*O$1 zm*H?`_*o)gBmfb@p8FsSr)tSDFTZhv00v_%27rFM@UUoqU;p(q@hM2hF0U3)2bCZ~ z>O_~R5+UXTNUQ)KSOA)b1+Hi%gIDao00Lx8Zj6(R1E-` zSJdG$P(P@00096H01yfSE02!*N;sPdozfsW0l{F*oFFi4_m~$0h&UG}Q6SOL%+hxt zOvK+P_c*?PfXV=Hzup$fcH9`z?+C&eW0Wc68Ze{8002OjfCPcTE5=!a#iEtX|H1#o zyw7IaVU^i<0KCQ{3eie5l7{U7AVvT|)_5klr9{cZxKrnNm;ewI+5-Z@|7>zkf8IF& z0Rs>K5JSuW0Rm7Tk9aSkfB=AK03VoK0WrCs=o%D%PFNU_$C@`jUxw zI06wMjDCe6YVmlphyI?i;{X8w39P_D8wuZk&EQ|F@lwl2z!->xh(ZM)%V3+n40nwQ z`qQ3Y2N#J@^uekhCGPYc9A0003&0B$Cz2Co7%3;=By7~lqN z{bS$&^n69pjN&^;71jw(aYE*bTxnJ16mpuK)XdkqIxTx%oga zXQ}`KKY#%MQc5Nlfi*<|U=5?f&>2W+R3rX7;vyKU{$?oa{1*3t#q6IR40*@!EOl;w zN4$*oyagp%$!C;$4&c}1T%XY8+e^U=S)gVl7!RdW0Rm-@S2zeaUwaJE&naQ8oWJ!dNRyz$-%$b*b^-i_@% delta 944 zcmV;h15f;_2fzn^000012`~Tv0YRFe8oUKBL1QGnOpyOA3DbVW|`+x&5032ACb|*Xz`u_2@*FrfG$DTu-Ia2W%N-+Z0QTmakvG-oJTxCuh?)j#}T00<|50E3VK z2s3~lOtiZglN2pR!Ou{_L>^F&J>W^|J6}^(&7q(R%laFF86W}JFa~AAK)4Q6z90Sm zU>krGCx1qNWlDm-#)W7CF&tT?xWPiNzrRQ7p@0F%05~A{<6C*s_`og@4`CoyASN@w zU?4a`Xlyuw5MhyfjCTM&2oXu|A(P>3#YnJhb^t&EvMGT67>j%Ng(x87-7EXN8bLZ- zyg|8$)EuB7P3}$*XW@cY0#_MS;&vq>LXW3!7_b9>|Kb*Kfw}2f$C1DQAV3H}?wJ(vm5{(C!g%fKRfSMr;8B* zCN@XlLpJ7Nj<7K$zz2aS0L&iF%G&x?pl}08V~Y8pH-Em}l^?QT)!RNX^SYiFh=2e9 z0YLz6Ca4Cl0x^FB02;u+2RX(DI0Sn8Uca@^zamwYbCZ75a0jnDdiR?IA`#$dp$gx|3LmE z^$eBXufRv^116X5CB%pbiUK{(+yas*eeokC2^B(r4h%E16qbtYxj(=Ol!Xy# zb8!t)QJjDPKr#a3EC8{6k}m+LkP83))s&4<7UJsJ?JDgQv0 zN=aFN?oa?=1v|J#gy(@F20yW8DMbL#d2+Lt&)3@EIcX4pc$O*smuvo|ph4<%m#NZz zX@>I~yh{~-vj71AwkQAy0s}(^a}XYsIp9Vp2pYzfYi350`M3ZGe}8~r1Dp!Ll%Xp; zD{UnKLw1k=aK#GTD-y;L72ww3Bc+h3^+CKpYShPoGqS2o}C!S3<5|1*w~0Q0p)Mcyifoq00wzr z4tI?L?~KxMzzhI$!+yanX@E)c$AAZY?(qx8qIh1su7q15_y7U`A_T48c);!}7DALu z`+xv{#20==0=8$Ck`8{i%$W`%qm$KoO|Iy6r~k|L$YfP9@drZCfcRt>KLU&dgvp4= zNl2`J;J}5{we>v`U}i8xM;uq+41jg8(11iP0?HC7!Rb2CEUSP}01yuX6f4{ldqPh; zIF#R$@3r`tFaTstU@SW0x>Y21%rHW;PYE!8K9es>9JpZ$^BRK4o3|8i|Jncnfai6F zu`0OSd}FoSG5U8EKYSm<3AVJ?zxV$9;=2Db0)t(>%fI`5ZBt?RKq9yhR*smHoJ=>d zUm$Sf4%H*8wcWG836u~O%|MucI=I6D6YTJp!67&V5f(RP_brvonYG{m2nU!5Ko#eI z0_LbcPv|}rgTEL93cp|+{;^Ow8^izpu_24IbezOr2mW9KtOM{7r);i+M-vhN00ROD zu>Sl^00aR6!petua81cdH5p)F5a0+%@V%(hum-OJEDQi?Fs=ZP`m+A= z{w3vvM_>vq5w!d(Xwq;2XC!98zG;Df89=Ta=fQZiy<7RtKJ>>1g8K3fV1kn5AjL4 zV5fc=*a literal 1097 zcmV-P1h)GC0003AFaQ7nL7KoCyag{oVx+xFkp=t|4#a^-Rsaq_LAElr&|o9i4*HwG z0GcBkp^1trRHXO@2LfF$J-+IC7=bf_%WW{b9uVYmf-o7(1wsQ0Abod!0Gj|8NghZn zZ@hAi*F@F{eBe+Cg9v26fM{9u=V~7phLh7XJ$SbNbJ`UosSHl4lL=jp?act=#7B!m{sz)BQ5Tk{bm9-Ff-aS;45@(t-NmMw*Gi&=~R>;27#WPIx$^7 z1T8S&?6Rram@OOkz(ESA5aWUgGV$XNBZ1WLWIVZX58yI_VP^__ps2!Y0*{~jfB-Uq z3@nmB5(sEZXnHvSga2?4P&qCh8E#yjfor3jUEzpfA%D=99y9emgiZVa0RXU6Fg{{y zS|WV>M8hWfqnOZ~;`wS)obuP2d0s z0fnMK=gquWS9O-bUwnYa00t$3!7~FecjRVD|NB4yc7PxS0R}T>NBOvcdHu+M#V`Pa zLmf0c6$Eu4YXBxQ!ukCCOaK4@K>%(hum-OJEDQi?Fs=euyb2|y{7cISj=&UJBh&D# z(DFC{tE6CXLEAYnBRCcPbEC~YhYLX3t*0<>2VkYqFVFm92yk*E;W?C}@2<_T!oy$R zfH#(#W=6yNzryY6Rvah37S2P<1A<^e%qzY8#y`yy48WRS>gN;|j6s6S#k1fArC4YR zlJtXtFHpCz1BQ8csYxh)4tQ~eVahxHxkSR@&Ge`IK0Clt2t!zutpM>$Yy4^brOcU4 zr}yfhFaf?GPb)+`h0dGLu_^f>5zc>J@u&b0cu)Xv9~;1y@o6HK3Tgg$6HEDoc?<>0 z>}ajX`~K1tcfY8qZO8k(1(`0wpC3!0>$Kab5Bg6Y)90U_qlN`62l4bw@cZ|LOwqO7N0YLyciL3#uz#EJJ P00BV&6+&wOYVZc*f{NdP diff --git a/samples/h264SampleFrames/frame-0274.h264 b/samples/h264SampleFrames/frame-0274.h264 index 2249c243a4cf3c37203d66a5a0d70bc0c833b100..186cdec27b6c0fd58f5c322cff8754a2fbfff0b9 100644 GIT binary patch delta 1715 zcmV;k22A&L&&p?k*w zAOMdSn=f~SCE=U*oPZ2Dms(K`6I3-BLKUq8S}-EAX=f9E;U_kL03Zh7$;`;An~43u z*9Aa93f9)BRzztD34i@Bf(S|z78?Q(M}PuDRxpVzy1^b*KX4B<*ag<}M@eLV-~HK11Mlwep@S&K%rd?(6l@F1OUd64=}T+T)xEHI{(~Y07?OOTIV2a zm+3nQ&;SSsJ^&PNWJ42w=HU!MTeWCKl7yENRsZjQQ&1rFB1_bXGKN76QGNwrCG1H0 zb8;a)_z_MOov*-If|@hm|KAuz70p4WCBpoozK1WM`NH5r6mcU7fB*;u)OG=vLo#n) z0|A{0Ll7>SysuvobN0g%jmFOyw-VOA_Cap|`GL`Y`qxAG0A&PH9y8U;Vh{S@2nt1j zF*iq656TFk;Z@Bgx@M<{V*mZK*~LjXei zTD7$2g8&NYr;}^{yk=7Pphkk=pcIA!<2%t%?*dSjib2(>buWK?qznj#<_%Sjcly77 z_XvO(0?nWd6VoVJ?Z3Q6zyLr6u22D*6e|K^cU%lnXzxwBMbX6)!t?)NN-C3p~_` z;SLN9`XblXCdw?jXa8s*M0%}(l23laoB!&)bZNi+sGOYh-f#Kp`B3@zxURq1zHj+_ z#t4RRMIXR6FgK6wsYyId{0~{Y3e<_Vk%zVZ-T)bmvE12LJOE`5v=`KL3QU9*zkp*2 z7uqS}e8L~=urDf00|)dJ_Nk|TxGO~XSrW(AE}k&_P!0f7vXzhtDe#0a<{~li|6Tw9 zKvju=15GTL1=0u*|J`}EH|}>i#d$CSVfX+EgVz!gnOsOYLk|E1$i_#%(hxCXD2b_5%LH+UDK z=LFyo01yF&fXCnjMrM^!D8rzsBSMwou?VZQ8~^;g{|EXA#>exZ3;+QFbN~hmkOHxx zP`kiP@GSq?hTaaj7*z0L|C%PB{(y^}LBSN$+jtL6GC7N?b_Renlt>u8PS<~Z@-DFR z*7@H&YzdGv0mM*301o6O-8o5rbI<@yOv{<3H@9eO}JtKOJ|;^pa4_6P#k;!8Jh~~=%lJ5?bFbF&8N42r-fil#FGJa ztuo_9+Fc!T_<*D%5a9r(JpK@=syuuB&!VEDVDVpO1NAR?6A%9XFt=JKp9am?tT3DZ z;15j3-Yb9vfF<8}Cdk5GVwInLs7ELm02%39d{b(%ZL|dK{b67LYJdQM8~{Zi0`>+a zIS_x1p@;avGdX1cfnE+KApI}doAe>ngjpn#(ed1a{Ksd>fjs!5sV9GMd4E^BpYOMT JD5#S`1{yR}0_Fe! delta 1622 zcmV-c2C4bZ4ciQV000012`~Tv0YRGJ8oUKBK|>_HOp_>r7*O5-Jy`n^IatU75c&fz z%%lwMV3K-&ylDrgV!{MAN#980iq#Pvx6Z?sBje-tx7>;M_i3ukl;;R>8NSmQ{#pX+%4+Zv1jMNOd1JZUuw zU;D;?z!(E;RvzCb1VxPl6~#Jf0|mOn1rPTC;6EdfLXoudNB9XnN7vNW@Y^wX0O}4? zDGG9X`law}5-9;7Kq4q8KokJi2nir~u^E6m&=iXzZ~fqa2-OFPF3xG-C)L@3AvgAn z0vEJVk)cn@yh)AoK~cfD3uOi8HQ-5l@BjpV0SQ0=KnwtoVLV-QP*f{72t4=^@RsG_ zFe)h0Kl=ax5Ed{TBvwVFU@^)UR|`e}8UO+SAesUZHLI>%4jO^ML|f`cU{rq3B9}k^ zaRI0tBr2{8eJQLj-#rw#w})$@PgTLb$M*ktA!zi}sf!`);I=qG9(Di*0nWmI z1x8b-BLB5Wgs!4ullTAFmR~^ZGJ+sR2?xe}6R-fAyVqJRK^QVAbgpa94MZz4Rt3&a5oFbM*Iw^ne19gnED`LyP%%zzlc|umeRjS*DN4rF}Zg>hI;0ueADZUYU_XHY$HWUlcFudIyjC1hfkM%ST!O;eYD)BxFVCMwqAh$Yx{ZV z4jcR<2N2G%*<{}m%|f&x#7oM=g#l5E(FP{;7-#*UL=zJZx$E6kj#rZq3->A5Nj{zR})&{q?A)B9QYybiPkl+9yZlC}R diff --git a/samples/h264SampleFrames/frame-0275.h264 b/samples/h264SampleFrames/frame-0275.h264 index 70ef788da3536ad15dfbc17577831e213f6d9722..bfc340c6c5d3e46f1cc02998a26f143c8285a9f1 100644 GIT binary patch delta 1254 zcmVF0E{^5iVV>}!Bxd`ro zRRN;-Lx<3hBuWZ3!%mNYk-oRr~N~bWmJCcJkaX1|(oPkYdYH(_oed{_p@` z;t?#W0=Bt-Ed{~}G$2q1E~pdCAD?J#KyVQYVqgH@0Q&v{f`Un7^w5jf|Ck5~^Pvnc z4HN(^R={u`E7~;XBMwFZk-4Yv9{h{|XnyL!%NPJannvr8`@je-0&gg3DXdrZ~^dcot zjeEO)z+hK2q|W*vq?}p&004k6%k*{br349fpZ5efE$hJOT0LpQ6X8qIF@h-u6o&}% zNpLXFo@5w1zX=Q|d{)HElDIYk>rHFFm;jzs1EHg)x=8B{l|lrTFki*QkuNL*@BnM; zfE)w^4dqreSPvZY5C8}g004moCtv`OYJ%aBDD%W2|KRul z0RZ4I^|#?7yU{1)+9RGguD{Hb76)a8-(Lg36jfkQR!MQvg0oP502?^1Fi1k2c7bev zNZD8e7k~_Vye}tFq9*Ic z`QX?97|vjz+26=wFM?LnI zrKrduI=8n7|I@$&pURkIZ~2?WQH@SDR6pYUF!KE!-XaWW<&aTRX8a(H;*8hlD}T+x zL)gc&=io7|S&(@T?i(5)qf7@B@>&zG?P@22HX@_5OS%6)cp5Vu#JG!Rt6%@CTKE9- z7{efx!HG5he`N4~tO=$1<*^|lzZ|3kErTfV0O&B|%h3P^z@Ds1qal*{;XJ=6YanVQ zDFQ~1if%7IyQAOe#hIWG;=4c{5ZC5Ns`w+!Kc*y|y7h|N`%enMnqS>Z9u)8uvL5Py zi~Tg;+Q0$L_g&xr!?WGYN`x`{(8KPr_buYkRVU~36eFNbzz=J_(@z0`%Gx=K@yz0Y z0ayTi0$v9LB?H*k`u~n6kG*TJZ*OmH{_y){09YJE-5vfhUyl(8iPc$=-0u1VqTEd) QdZjD({0)F3xRc)l8VZItga7~l delta 998 zcmVe1qWDfJ`Dg60dLT=4H7&60RZvO-~bQ|IJnaUW-LLN-sH((0sw?8L81>L zs|eo~P96b301yNTQL|F;KV2mrtW9{|T)rgYd19)Z~a0L9@Tz&5081ut=s6T_}1xQbHq&r*m)H=V=Q$-fB=D@00h`zyL}NY-{UyFi#lp;;5RI2o3;-$^2OkXaji=d;8p}WL zVw8OVO_GQ5!TVc`0e}&K!ZXVDQs1`0*hbI;%1}ozK90>trWs-ap};07q~D00BV&If<|V UtH2wK0003&02M-P0BZ0C;{trHJOBUy diff --git a/samples/h264SampleFrames/frame-0276.h264 b/samples/h264SampleFrames/frame-0276.h264 index ae5455d8a57d0c239a2e6330acbe4b2041bf1514..48a0e04304444966d70edead1bbf949a006cdb69 100644 GIT binary patch literal 6330 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 J{{jKle*yJ_5rqH% literal 1645 zcmV-z29o&z0003AFaQ7nL7N~Nyaj1~#|eO;fSVK&00aO500Mw@XlulUA!{8kWg@cy zxMn#_dXMwI?f@_kC4d~+%c;PbkO0{%0fyiP016SI`Un_)q^MCj7yuv`VK6|`E_m<&FaSU> z!eC%`Cgb)n01N;S3^16mUSY5RXQC`?(UE@I0Oynq0kCpA@5|zDgC`4&2ml3>l!VH- zyv%>VU?9irT`SoAU{nA!4$c_DQ%&=G)NzVM6Kmhy|A5?DKf^>+_W@#3CrjjFPwylV zvlz%sV1+5%0LmdVB(q~)(N1r`r4ZER&N}!2fd>$J^za1p7}hT#_abN~BTSZ2K6b-O;nY)ID(f{=T@{s10~ z$eGh5Z{MgA6mt(3i0DBt``&09l6;%Ot-+Ro8vqnPgvGwt#kp_x{qH^hP!_82$U3~D zclgH` zn$Jvzn%V#X0B{Tg@mvEgi;7491ONmA09Z&kh=8XhDtisBr2ts+BO^$~)jEIR0ghqL z8X2W`q~T+8NnhrMC)h7;#J-wy%GN;Ner1 zv6(AA(%)q!@3ShhLATSO9rGb~T^qk~% zK%l4I0V4nafJuNSz$h?3+n}7g-z}9YnfVFdaO)!7J7Wv3SNskT~05WLM z00<+hUcdk#$N&NgH2@$8!}bL@6p%}gL6V^Z9|!~S;{d?H<l(}$cz}yKN6$Ur00;|$3OE|!0V_WL4CayoK&C3TAQ}O*91N(_lx= zkO(iPHn5@~m-7xR5b`Y#IXjWt07ZrN;w+M_hL?mHFGHZTwkZDm##JR(|Nrn0sX=aj z@g$N<|NW-c5|~sq8oe)pj3_4yhzpE>EZ7a*ToptQy6PYwfH0*km4(14VRow#W#bb$ z-UzHqf0f`R3;;SKU>Fl|#cO_d;$#55)OC7s+Kv(k0DR+32qa-skBj0=_;bH?HpMQU*X6RZLfNRYQ>)(ncZ7X%7cyUmF)r$h80NYCQB^e%ne6M;fdr) z6#w7623&(?R5se2clZ^LZAOoD4no4Od`0R;7B9MTkoz4SN#Df5m0`ssaxDf{=5l5wU%z=8C!G$S82?drgE{PK>)L)0uPo^G3Xlu0>lKfABTVuP?W&{g}AY5f&k+9d0A0kdSnE(Y$@OB zUJse$x7t6Pd{=AeKmUgQcwaBl1Y!d0BoPY$v9JMXg4@Vwr3?d+&;V!v0s&Mbp*CL6 zNCP9)%j?kSVwRA{Pkx{P=EuVNW4|6vi5QiP&o|Etz?xq;lRkt5ri||2K+Al&d2~_l z;KFvh$Yk|suZ(e3pBo$RrTn!~1pU7O^bVTK3bLdD*P@yodbQa=3lHn|%Lg>}GL<6r r@eKd;ksAFGnU&Zu4`cuU0YLyciLwE!z#EJJ00BV&6+&!)YVZc*Q*7Jn diff --git a/samples/h264SampleFrames/frame-0277.h264 b/samples/h264SampleFrames/frame-0277.h264 index e0dfab41a8b64dd959f6ee625aaf8ed5240ab7bc..aa402ee5d2eff622008f7e99b7376710d4e8eec2 100644 GIT binary patch literal 2486 zcmb`J=~t5n8pYoP$fE2bA}C=KDi$FH3KTF1mfA5ui&aF~6vdUj?2tDQ#(*+~3KkGq z6g4_50YwM|NWwCpD7b^NBoQ%0mIO#hLdg3L<9wMvV7@%(+~>nR=lR|H;Q;^ufpypz z`)`;TcWP{NSOln*Jm2=th2(MWs(nja(^aUCW&#dCq0CE zmrY!It{gl~$YMfL{n6m$gQEerWN_pUorEE7u1A*vIVxOB=+@Y&1F@Tx%}Pe}aWMg& zxnL58W459|zuIXJgbAGtD-_qiP*@XzJ-Md|nU;_QQ5GogD^}5wNqvVx&y3-|8cYQo zu7^{yql;p+7PZP^GeipT0aq`8~YBg*pv?Og$v1 zc+Pgt7R_ob&LwqcajyD)Q|i$D|H2uRqnq%*L>)=i&t3yBT>!kl%leSM!E4>OsGhDR=rnhR60)xoSZO{%C3 zoVtB{ZtoLgp=2LCe>RA!$PiOYZx?9}@w;rCHvo?r5|RliT6JM)c)h{rVy`TjJtAz` zFWP$f5=-Q65(fzxSAW99ChTMtv{jMc$J5VSVbXVYF4pwrrNqv-#k~&BsA$fwM$(N(~ZQ_^mk zy{Uen%7^&}Jqa;u`dz1dt}gK%YV;AMw}UM{7IYVRGmABz0D=gpBLNLHg~Y(U z$xe6XWOxyP(I7kMaY_6jBxCQ^mIg2PX9j?}!JF6`K*nVt`!#pySsy#4Pl}F*w>oag ztep_dYSy4PtN52nqdEUD6&ILacJr>K&Gtm+Al z1VC!k0A`dj0I429Fb$vAQjCvyU1GTWw|UgO2*AvABj}7l`HEn50g^bL6&S-ySOchs;5!N>IYnV*ulbA_4X0Gc0~ zwGPC?><_p#9%j6)Vgh9AUAHQ%6u<+#g{V53Yz<;Lxo2t2EBwm1qcu3;G1D&E->;9d zx3vXyRK&8TvEsTRSEMRPu25RS3;hh7VhZ(#%~<=$X?z#W!L!FsiSmQEr4Xih>5)HK z5^poHCGkC$_icm@xSr0Re_wTvmp>Vb$Sv#GN9t;-Tdd!@i(K0t~3i6 z>>-57k2ttXo0ui2YiM|T?ig$JL<|r)g&Lbr1@yOD-Scu>jh%#mPd^?wunNw_%4@}H z`ic)(+*i9uMJ5j*hu8L9ch3KD&upA9&>4aXF=-c{;xOgI7~3B@#c130l;YtxqWR6M zIDuT$P{EzHI+-6I6)`PmIyiWLX1?#5>%!OAkAYWmqU}}DJ(J|K^IRr8uo*Dms@7aq z;dI)~_jCKyjSCgwaDl-l5-pRp&dxWH9UXzcTpUHn=%uh9Z2r&`$e#=n!SaJDI5u=d zjdf0Io*B>3L6vU{f2s@DLE<=d^B3^2*eRa0th!iVAj>L~C!qSvioSihMrxi1)G@Y} zfbL%J6fRHnJa@A+u0M$eoU+h2#~6TiIWcnll#|Vze_EzV$S$7}2a2vaS)<^wH}G+& z(Qu!BI+4|h#KZ~k_WHs7c7-Q;m*6vRym}}>hfYS`rutjnZls8W=nt8k@uG}sdq2EH=vESA}q!ArBO!8oO$jyDo*qFH!{jiUjhj z0I|B;f8GKh#ySs02g;l9h&~;!ctb}-+9!k=stSKU#P%*>na#b1@YFqDUkp)%v@smK zTIE7OUeX2@Cwk#tEG3Y zMn*Qe%vFa5uZS7;c+h6Jr7E3ugu&Z!1Wud`)Rcj m<30;kwh@L!FWZ5$5nu7U<=;lsu}uoTiml$~$QQ(@>3;*Bjtpf0 literal 1036 zcmV+n1oQg<0003AFaQ7nL7PAtyajI*5Nvc-U>`Ebku;V%!`-vUXn-=GA55~wTJg&HHAXU+bX!HA&HaCj>P!GVwf zh%KTNSLlntASuA4^Il-NEF}B??f@dta%0>SKOQ~%r!lmG-21WG^#L-W@Pw7Hg;E_w)n-MQVI7RK#IRFR*6DYC-+_f*PH$0{N z;6r1Tfwg!FfYQQ0@l46U11JC*yO=ypv@(-oxBf5y1Q);nLMQ+PBESNPhyoG@sBkbd zALzhRa1=$}1fHYo>T0+~rtAw(Krq@1Aa->0477h%5E{@Om-IIVFq8m01^_dzi2<+* zRMsE;{xAkm0HM20Ih!&CQNo>=0vJLMG}j7vbeS%G6S9T?0st5Q92hQ4_TF&<8v+33 z@qk<)AHqPaKwM{lU>FV-qC15UAc>kAJjZYV_z*Ic-oa5r+~z2-YjXe)0C!V>{vL_H z-*{Vr0|l>Johc0xPOoneHyH?#YYRIk(19lY3>vr^*iDfIEzL#-bRs8=EC4D~%4nwo z^xD&}A>aTI4mhB%pC17ojbsB*6o3$emT<9PU;*-Q9R!$xG`dvu>Hs3kz=7jhuSOwXPw)PCocsx} zI04Ke6exlK9w@rM>9#BN`~W$38$vt(y;H{XX8TYGzbrT%j!HBgDkR?bzr4YRw-pd3 zkTxodbE@a{&Xy05g*ghU5AJ|}Sl|>sWXV^-;0@qh^*`nCh?#K)9v}?K3aJ<|bU-Wb zM{7?!2^^oCG)ZcK#{PT_+HvVdxA*(Zqs}+|XV7t}^TMzum+*%WC?FKMYJl0P_PH5< z)*|nuA$zaS|K|d$@hg~zeE#nbC4;-5DX72T3pb}DO;f_WL4qMjHiAA6xM27JVe2NU zq#xe^Fe*KWL+*VS&z!CD`Qca-SCDWLZR&Y!mVfm?1G}$^MKgcg@G#OkbG!ZZc!L7V zys5g)zq77DYDUP_7ykj^*HjRNe>wmK@gqG7_y4_y^gLF^Z?|ctCFInQ*}L0_C@q+^ zdrZT>f98OjMuK&96DQyL5qABD?f4nt4+QuIb^rhYK>#_4v;nKY8;k$|0YLy2LTvzQ G@CM^hj>T61 diff --git a/samples/h264SampleFrames/frame-0278.h264 b/samples/h264SampleFrames/frame-0278.h264 index 072756261eca3a55ecd423ccc4117cf510bb2938..f2cf1ec7d21045e8e8e38308d2c743794033d672 100644 GIT binary patch literal 1653 zcmV-*28#Ir0003AFaQ7nL7G4syagWx0b%d}yaKxb#sMs;d=vP22jEA*0{jAU-xqc` zz$K0e9)bM1`GUWKIM@sof<-_j&@)@h302hE)U>Lw9 zl{b$804hI3Qg)530B~h606~m~Z`pkAtUNOSN+_Y)P|7YvN2i&90D#Ehu$ZblP$<5} zg#d*4004mK05)%fUOe6yV#Sssu**xiFU;C5*7y(Z15urKYNI{S6S&C6W zG#*^6<@5FSxDHxGARZ-(e|RVG@(;j|fCcyj<-RWLaezx45@SZYJ+6zEqf&2I=)q;Pp812QupKDH0xg;TkE7aB_f$2XWh{^&(LGtaWSh@RqC-@v+{pKQK~e4u~h%p;)jn zFaU3Wb$UcdanAScd_Sx^JG40ur(uylc(2_FX{m(x&9XaC^*1ORnx z0f#_Nx}khFSBn3KnDf$quE7n^H8USpb!H8gaA-RJ9_-cYAnJ|@KZDV03a|= zN$rls(`SU(rT9Mp8;Q8_ER?z{god$-+%E~oTBQvvPSXIO0)QM6NBwBiBMTVZhyT0< zKm({E@JUQ6O*}p^ju-@x0kN?VY6HsOpLn1EP5=z@z!>iu1>YH@NlOe=Z za=iA`-(B5P|KSK@B^hK-XfMpjY^r1856eOU0C;2=Dgj1<0%XKwB!o6U@E|k>I3K@) zomeOP0gl{pitvFT@_>s$_XM><8UpUz>m5Gxa0OjUS05-{wth31e!BAaFH*nq(^ zX`TYW4lLYYi=Ci)R!T_2@i1Tj$eO@db?0=dMEBMV5UkU}OAn;OvWGk{g?WoXWKHXe zFaPZT0Kjv)!&sGEZay*C2g3=rwAa7){{3BlnE^q8+uXYMzb(|ygYbZ5a3HLmEhjjb zZ(^Q6;l>@RM^|IJUw~66AS;?CAI^?2z)1i4cyEG);1I~MyED0Lu4K)x002Ndz(N48 zI2ScR`hP+2q#gLc7*+cK=kSK}^^;yI>q#C3$60S-U_00BV&ZYGch zuK<~!fjxn!4j>@_<}4+E41ZJCJpaI1z*RxlQ$`fvSh<400=<9$KmcfocEI>SF67`6 z$k)$UlmZ|G2}Iyo?0a#uiC*^EJX{H-{0;zd1ArOC20|fd0b!J-X2S~;umGF#vD9Do zK0oL7ri=i6LpVi7o4cna(U{c|xd zmLyLaJYXU&R3#UeLl4+xQO|4Io9*&9EU=2OXxO0v#^Np#2(}UjF{!-Lcx`@@fUB2RqyN{{LltD4*l;3tehC!fkG;8 zYZ-7HjizE$=b~Yqh!TVZLcygn1_{75T8;OBKQ@=~{|rE7lfbc!RCOA^W;~X*TgPs@gCYSL7e1b5DU^N+bSR;^DKW}<5WMdG4z}jGs!ibl| z$@mrN1sC1V|M$5@BtYSx7bo%uwp{=fB+yBKnhqEucknu!orOVPJG1W z5qwL6jH{#xJ^}y$KnX*P1k{zO=vjD*2_Q_H?92f~f8r166SL@59!0(Y06-874-n&m zXDxzm_XqXOdEx*902D6m$KX=Np0Hj36@Y`_1pxs_S&LO@uvp+?{{uJ( zEFb>0n3%sG`;NF#qaPvvc-eQZa0C#=F&-^w@MTs*qSCkU z;Bx^1KSwc7eprFDC&dC2%I2TQ-}ho;pFC!Ji}LwmMB)Sw8Dfdl6NN+d>D{;)+)qcD zeD2?Ho2~zdRK&_3TX<$uK)LIk@ECh(@DB=vSBFl(0f!_2fKc|S;aC$(=rSNvu$b_q zB=G~3)Hl9;4gj(jz>h)e=%!_%tDi>xGZ^sofBOSCr-{xIP{67OX&G|Z5VuSfb55QW z%l(K5&JhYY60O?+6aWV2=mo#{0A%m#-T(RS$pfcyzZ?X)x$^~0jUNp0H*!;rT&`DR z=i6!nc%bKndu qT#N=mo$`Ihc>%BrbN~PWK>#_4wgIca8;k$|0YLy2LT!L*@CM_0i}JAm diff --git a/samples/h264SampleFrames/frame-0279.h264 b/samples/h264SampleFrames/frame-0279.h264 index 361c0171e1c9849749d1e429d4655aa924dd97a4..8b667ffe822417a4ea7639d01e9d7b6c1d5674d9 100644 GIT binary patch literal 1277 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 diff --git a/samples/h264SampleFrames/frame-0280.h264 b/samples/h264SampleFrames/frame-0280.h264 index 3636ccd9b3a1608cb64cd379d8a5da5004e9374a..619e1b2595d65c4592a01c7f03416579a3fc78fe 100644 GIT binary patch literal 1352 zcmV-O1-JSD0003AFaQ7nL7IRXyagXHS@-gkF$(^Tfi4l_;FQArFoEry4*@I{4}>|w zf%FwkF-C%uwIY)5R2|m~PYCdl$HO*oZ*_>vi_FlY!1|cL7vgyv;C{9BjF)6cs5`zp z$4dH;;2hwkL)-YSfX9FVLPiC&=K_!TpF}?`a5L@l8~^0i9Pj{#R^Ev=z5oD#dVm9n zF{eWTR-5-|i6PViAOIl>kSQqYVKjePJ<1;Wh(W2|&Iov|?yMXqUcWDb7;bh7P|x6) zs4S5zzYwjPjIaa>xWd$fCtdUoumWHP6e(huOpYHmvzzd_kQd{(Rzy>rR3UmrxYzk?xTLZuWfyE|yRR--L zH3x#}bT3vL<&Z#pBgerhg~Q>54{YFg31FyvA}srhI{}jasY4-bde4G6c}nxDcFR;@@C0Tw)?;U z5DTCXkP5?-7qejwRaWN;9B=>#9!mfKKoHPg|KeDE^kDP zKA^BJrcd`;0G42WXsN1)UuzmK7-<58_(apo%K#U^2EMogfdGQpQizlR0b83O01z|) z0R*I8004o21)Sg*5W1GWr>lxT85S6u*!%8p&TLT-Qvc-HfC3ny_#MX5`@UhL+n+G= z5&_npC@8qM_vGbA5ZJW}5cL#zmXiPQd;kD|a2RUa;E`SElk#aH-)saSf|Q#IDO=S4 z*5BTN`q%lAg23#(-(LrSD5}7qtdZlT1!kc905)-2V3374?E=`6vakj(02xbiVI^{s z-vJDd4+EdsGcj0q{s35+kd*gM^gna~^(}}z z?4AFt82A7P1MmjYoKVrhJOgo7olM1cQ~m}r3;t2p_-W~W2q1;Vlu$@aF&GDCrtH-H zUXV>e!aQ*APq28-FB5k8q6CN?1~o2E3iuOC{QRPVfYHDK;3oZe2fX|%i{{}0NxPh! zq}Hnuglg}|FssUcfh=*e|AB~{MkQ6+#*iXt!k=IOfcKt3gT(a6Ru1y@paG~(Em|{w zFMv?e7obE(?2VZW04_(5R7$Yz$M`uCIpbO<5HJ2dcvrxkWe^bYl8V+Pt^)iEKcGLr zn}dJh(SQIzTL1%#kbQ{A%Vpa3Jip%V#)^?dExa%m5C8xHK>#_4r~#|M8;k$|0YLy2 KLTUhN@CM@n6;tB? literal 1018 zcmVB!A|3L$8ozy9a| z1OPw-8rr~2IlfJ4DrgGb{s0yMf&>{Sj-DV@FS+b!;v1rqmWkO_H7~Fc0>I!9h63Xt z0D*yqwZkY^5ic@E%4@&?K-3TlBst#c*g`KEP|Es(B-miWo`eh>|KFjAfJ;P3Q$pl~ zg}N^QBDes6&NuaPSck@QzQ63KRr1w5X!HMlr>aoHvXQ z_<#UFTmgak-2>k8u@>i}h8;M}0Nstkq?Q-``@#Siz(8}%Fg!?5jkw=g2iq5z02&w3 z!UiC?KY+mtJDvhP%Yh*4mBmG_VgrcpM4#~JTd{SCNCfkEG8*4Wu!IOE9fD%Y)ZmnW zop;XZ{r=!0VLpW!Ei2qxzyY8Oa0+-9P{fFx1cdn%gYfx43<87CA|ZGg^gFe=C67WI`06+!uVHyK+xj_k? zKmwzt01XIT3W62ybhN7g0RVsxHwJ`#pa2LB0H#=0N8{kh0sFU~U?Lt+fHo@02mvAN z7B9F401n`TE;Fj^kbb#~JJ?c%(@L@5SJHQ?e zUm_8mhd-z?W|>XyzOU_oDOKVHov{!9STrC2AQQkCDqbjPfUbeKt@zd5MrM5m9?}>~ zN%8r94j|_qQ9&RQ?2HZH4K3InlZFqip&GwYK=GG2F0XhR=S$gyp8ug^2?x12*!?^w z;7u>o_b8x{8aMzNKoax8*VFbAclCrq12Z*p()`(wLIDn+5x5IVyr=vC5+T5G2WZ5s zt6pQs5fKb2^?(EiUN~E|iJmZZ8HK zJ3MRXh#=RX=Y@O;)=>cu6=YE`*Uj)Ie;{iV8t`lWC^P^90>}Uk>9^0bW@mT;j>V>P1|^Kh7^?fXk`X-~@d7{?Y8(Mx2|()g%aSdfU$0A0|!OG_2E z;AMc&S?ZNr_m~T;1Q=TX>QG7)&x6na1OUJ?5uVVM<5PzU|Lx%g%V-QVde!5kl|EMp z388?+1Q@f%h#U{V00;nqMR~OPEqfEFi-qXD-~cy&04D^c&4C41$f(b`Jg@)|1^@v7 z;M&TY0`kL+Mi2Oy-~-p34`jfKqsxSj8|fSr zTO#!$e16oY#{eJB2OkGoU&1+zoI>)*Ln2;)xMy|zL^8m8l$}m63fchpnNex5hD5%A zh!XXGB2K_z0G$Dx1#pkyBY*<7_JA?r&MG4S7K5MwH~)4HUI(wo1_460imvAOt7z33?^CNI0(ap1IAwP#=rTXZh@ejNG}>=06-85KxsCS z6oWA{2DZ?iIC=(#0)mqcC#eX-A2qEyWQ=IQ;gGCPlJ6TMWX=f3K;P0TB#u8`)t&Rd{A2)*0P6k&fxyCee;F)b@&Akf1PXuvK$9`J0BAnFCa0*sIb0U+9FJ{zs!u@UffrTkq8WJ}N%#2MXxaDB;+ zKMu3Puc@o*N^<@bHWrFJ02pe9AxB-HhBc`80|E^y*5zW!s|3+5Ignt*icL%p`~LjI zQz*y!2?+221OrZd0Mlm*oe|bozJLHA8qI(Ng}wu64>|Xvt?&T0^1vh)00Lmu&H|yE z8-5%%@x5_{J>>jI-p)euMh=->kB2}6D+H~u#Ve5`_E zp1}WbrU+qx1+q}a-R3=aA3w`L5bOW|0YLz6Ca9C;11x_bgicWoIFfE~AWY6`kpLdk zAZ-EhreE$Z1dW`7jMbWc=`l(SMkbJD{c|sS7CC~rt9;1lB0WJk^x{vC5N&*3(fc<8_#D!=rrjmc(|G9=-34i66iU|S^ z*(^b delta 1441 zcmV;S1z!5!4W@SI0<(fBCLXD={7nSU>R#C} zUuz!!ykH`ZD4YgTSMhw6J)?jPLpxg_DRFu@Ujr|^FN!!?er>X@?c;NSq`U=fH|JR|Gj#-^6_?a>eb2p1|SY5_Nb2Jrh#Fbt@m zl(vq@XIH;~1{5cSVP#geoZ8d>{1^ac+kB?vf;w07$~pY&kS#&NMLgV42moWCMjJob^vJqM4y<6vVH&au5yY>5yZ`|K5JH3wW8qny8i?v2f{-TZ z0bn5@k|l@=zb97bz5qY~KsX(m3T;vSBIZitVGsFUoix?p0M0D*}OKvVz7>SG%Kh00IEOEKIyd!%%Pd6J8RSumErj20-t=r3BKt zG$%bO|MyG)K*{ekY@6!LVgLNnFOv*kA|wD100aO*43tg;k*5^qv{V2b00aQQL0P_R zkL`!K{r~^qZcr~Se^elmp}h_00;qvSaufTAM*GZ48+*>{A1A$00IS_SGWLJ zoaMu0i~s=u@Bk1K01pq#cmfUzfD@gIsQWNnDytOFhEZkyAp|D~z=xL(G3r5<4S4&1 z#-JFP(`h^RfFQ;pUTi!hkw}a(*!ryCU_lYA7XTgo9w1+k_&0y>egc5i&JVVm?=;g% z|Mte56PS5Z&?$UC=vo&L7a8%5Li&9o_@O+u!U6aI!<@Hg8vs!APFg0@#uF4&(;dry zpzyLr6k@N)y-+5~^ggzr60eYN&I+D60(cxhL_)`nASg?le5xtfIfmxIM@gv|2 zRz~N*nO~4oL(Nd*`T~?L`44+TZb*GPL1mWV*sO((Y?YuPjB%L=K{9FQ{_PFIrEuh- z7F18)+yRSJ?97Ji(?oxU9srx50003&0B$Dm2Co1_2lMbIgzx}C6r>>vQj~;~F9jKY zLOxQM9ui5#42Blk6b7{*Oar1)_!i>i5lC$W&C!={NHOT1lil_3Vll?H<@>I9Rs`4B zprF{WHji)DoYZ6Wumn+;oJiM}x01i_|Nr27-{eLppY%^9;>&1t$|=f_M}FC{ry$2r~+!D80?CaCn_7nZDEMzTw>~o01GzsS1X>)&Sc(yQQMfB*m(0YLyciM#=;z#EJJ00BV&6+&+SYVZc*xQU6_ diff --git a/samples/h264SampleFrames/frame-0282.h264 b/samples/h264SampleFrames/frame-0282.h264 index ff3bf7ff10a08b7f20d0845ea478563a23f4d2c3..9c725478b0312e82df49e07fc0317537a354e528 100644 GIT binary patch literal 993 zcmV<710MVU0003AFaQ7nL7KoCyak68JA}=w+;S1)&6zme4=D-9;2`SYr=Tmr2oiGq z8H8Yr5dxrKGr$1=06+u*1R?b3*#Bg~mI5h7`|vQ?i4YuZJhfZ$S3c-~0SE(X8YCxn z@PMaHKl^|J1~Z8@>Nw^WEfp3=fDix(0w`ElitE_ay%0@DRlooU1swsz-g-ebv~A{p z_pkwg0D;AZp+~?3=`I^VoK7F`z-+Vw35Mj+7%zDV014fg0s;dBNSzA~Ui=6DpeP(E z+&q&k(*OgzLx2E)@CG>o3Y&mN?oeIgUJd}VD*y{*zyLr1z)%wSp{9hUWFG(l7?ZhB zjg+p;yZ{COwj7FfYl^f$uuWg@1;8``a=MmC*{BZT7a#x-4FCZF;2oVR2&b)VM1e6* zroayX3I~DO5h@ZsUiJZS3NUE&>7>DtNSZ8-<|&%cN)`Yg@Bk42pnI{GU|32XCu{!(Fu2Pfy|Zl1nAP1wEi&){c*+ogS0K?Q znm1?x0EPz`!GK-iC5H^h`q}9S&3j+*FaV?gqHF^J;L2z|8m!>yR6qbAk^lk>D8K*^ zRRDKaybGPczyLsu00am74S)ngcfZgX1tbTJn!kGhB~vPhLO?J;KrofHLts zR}Y~%(;&~)%4|TyKj=>Y1jOYbSXLMkjyPzDUlgR$kO3}1%`g$zy%3= z>Co7Sn8AMlAP_L)1vy0zJW;G^EqHzieqk$w0uKi^mjMz|@?uaRgPMRL*Z=?lK>%(h zum-OHO~>>3_!D4w1Bs2m1^PCViNpV~0!5Aqt&t5N&v{moBAJ1{*?R?=P=3CVjzp-!wAmM%d9OxuOaXYg6`&`5B5$h#Hsz zZ(QSz5e}8e5fjJ(ll8fOKn%Lp@p|-Cn=BA}gc0iGw?|KE#B>0aa3U z+x%qAZafLxMAqzvoL&VAOM5l1_uvHg;v^|i0Ycg&;|eiKoB@#(t4hr)fS89OL%Hf01zG( zNkAD8ta+}`fd{}C11xKpb>@K}2=nC5n;$_-~HYd-xK#T(;vO;3ib814hFtf#|$r9=Ifg&Is35 z3}{etMK{f`;gqrwe~-c;;FJI;0{{U4K~aHFF9abKhImlk7&|~L>MOSj1ED_HQkQ%N z7(yl4NK=56O2eMONfNr6zyLraEY1J|03ZyY=sh_|Wb|sqzP~d>AOUayAa^H`03aAe zjjZ*jU~o%^M~osIb%&&uKFHyIPXqA{$Ra)O_86zVUJ=eQPFd%yp~)_~UIPq_4<@+L z1uf0i6q9r2L^8Sv%uCXyCqQ5TLXn9xi*s3B;HI&qZ=(L%|6Qr9Y|D_yTT#0003&0B$Du2Co23 z$MgC46JR0$K$x5WHJS>pQndE0NP%GhMA@|hR8XVlAjCyx1{$M%{dvhwbed!O@o~`p zsS9`DMDc9-;avO)n-ml)btO&XJeW4XV_8wwszu+yp}F&0h5|GI2w?h9Yli_@% diff --git a/samples/h264SampleFrames/frame-0283.h264 b/samples/h264SampleFrames/frame-0283.h264 index ff79784a943ab8f1d453ff0854dc7ee543aef1ed..c60adf334399fb4fbedaad55e869f010a4d261df 100644 GIT binary patch literal 1187 zcmV;U1YG+70003AFaQ7nL7LziyahKwV%OC4y-!GA{2~G%SAYYK5ddJZ{$b!$h|;pL zzyO&`GDgJJO5T7l;yEQuuTuxK-^+MUUfE2(0KujPA-@>U4-N>xp2WW&i>KY)}9Y1O|o-<{&*NbHI#n2olB_Tct;k@#p{u ze{dgwKmZ^QC{P*DGpJy<^%(i5xvk5zuOvCU1fWdnww!0Tjo)c!5;QRo}Cga4i zTIi}08pbMcyeB!$NGYOryTAcJ4jxDUaML4DEMsC{0Z;(y2)qzd%9T$}jbnxZBmit| zL>hqdx98p{026=%Jg^2k#({UnX*l2p04d?WV3xGNB>7{&1AgInh2v2?FJ4zb!|(tE z07MB}y77U$RxE`mm-hexh%Wq!MeNTlL>m2XnKB$jM=PrIkJaJQr~kymjML_1GCG*} zgP~|Zd@>9b0HZ-6GGa0kLK`3WFd=m5`ChpY;Hc0Wxz7 z6ai->W&%ec3O~k1P3FV!&J27UJb}nCtiKuv1=Fm7E{4XRVE=T}L+alLhP3q8gdFq3 z3ti*m{7($$;7sC!00Xg-HS>S}Vb*$(8-5r$2T5XEcizkA2FM=1Ui^^*TbAj^6AXv4 ziV6TI#eTGvgTsk+xJsj5OoS3P@L;%5cx+BA!;zr^Tv8gU1H4@@65pr)`gDpD92O9% zBZ=?lteX|a#wPy2xwqI2nra8J~Lhq6>vb zjH#u&5x5AbsDQi%udSazpX3;M;c&uG0003&06B@S0jt0pi~s-uK>!s(Yk+F-2IDnE B0LuUX literal 959 zcmV;w13>%$0003AFaQ7nL7D&>yag{oVx+xFkp=t|4#a^-RsaZq1OxN}RH_XR@xz{| z00hYx-3)9|Ql%%rFenn~ndR2e;Is-G7F%`_vEdF!C?f!lU@8L(Ac6JG;0q7|edEam zjrWdGy6Bd{Gl@EyAPI;`tAQep7n$C^GKx)q;0_Nuh-VvGD+VpD0052-1A60Qsu?Iy z9tnUZ?=mrvS}k6IG@`Qe00983Knw-u%Gc+IXoTC0!V2j@>>;&ikK6zV7&gp73cZzt zzjsdN1OP3jU5f(evc^5QEU$`iFunwQc9|#q9)N0b$`UPYIaBUwxBdeF3@D;XYAAKZ zRewAJ5Y&mkbUiv)xPJmK2}%G?yutmlcY2xN0Amm|ciS?G6_B%HVf%rH4@{5hL0X5T zWTo%$44_HsJ4|2BCl(4tKmjx*FN~Y@+wc;F4A%72$wy}J%jyw)G4cuPEtb|6A?q<= z?r-RmLt~7b=A(oYfMUvEk*bb2B)0$jSR5V@a}E|DXVsN_DO0dR{V~{1fP%JS*MI;J z3os}EQEKJ?L~N7{iVf{B;Oq!WUb`Jlz52kg%$$PIX(hNG0Q(B23*#L)U3dP@00!V= z8vPWEh`va3Kfnwy!lR3$JRUK?iArn!009HQ01yj_kXTUOZ~y`Tpt1=;kv}k>CITKf zI>C&h3oXYBB%Al%2Be6<2HN=&C)ZN&Rve?blCsPjAVCL z;0idL7=i#g_f#|n-hec?00aS;50&^>CMe>E@IxvgM=-$_K}{ZjCg=bF0YLz6CV&R7 z09U8;`S=rHA^`qj+yGckocv6cOU_x$EKms?k)KjH=MD! zbhiKQ()sw>2d|R1iOdahosID@$a^TDpc0I?1z0RO?EK1vt~T`8K_~aT9Et;nnBa}` z(TE^RaY*r?Eu2bVC%;Sd*ne-q089tL`*=BlPR(;ffzZ4W24twG8T0Ta7v5gQ1ppbr zh6Gd~WT1Sl<}1i%ee3xME)6~{!YJqWSw<5^b2~~ayhpa2@lOL? zOb5bSo)PKbr(CjK|HuKi<)3=oAup0`Hjn=h1O3y}@wu>KFFP}j+KCs-`u6$={s9a; h@VH?p0003&06B@E0jt0pi~s-uK>!s(XaH*P2IFH#rAGh& diff --git a/samples/h264SampleFrames/frame-0284.h264 b/samples/h264SampleFrames/frame-0284.h264 index 2d049bb7f544da140b9600bd48482a0aa43f5d8a..8383547b6d6d12938a8f1489e32362a0e3ca3ffe 100644 GIT binary patch literal 1444 zcmV;V1zY+60003AFaQ7nL7M;?yahKwgICm)y-8A$h!ih?1%e$h%G$Q+4uATE9S_O? zfVd-uw0@`U} zAcubJC`7i(&qaUx*WXzL7igkSSG>Rg5Geow1wa50ZvYG?aR4wru<9%r9tJ7ugT$Ty zCh`r1>B87URMg-A5CcvC0s{mAv;<=lF!!bLQByL;e9Ht$$ zLM=b-#9;O_~R5_0|%1(1Fu4LTC(Avh2K9mT+o z5BLzn?6Lo705I#el2kaMm#V+Lz>Eo^Vvte#$L&$b6s-P1rWgPuW+F12>OqjT zp!Q!B2+&*<15m(xWvBpLMnhtgxv_umfS54cyu(Q`Nm?)b1f&6gvwR#~4;M*4e{nVd zG~5F$VVFEByX_32+LRi2mBbKA!~b@PhZ{qn&3PRE-~|IHg%Gi8?IH;-${Zj8Fd(mO z;X?+gO>W=!fB+y0xDXjM2CS7YB1=trd;kFeUI8IW3Pg>gN|O|y5CT4S0H+e*93x}> zp#BF1swX|X+$Ev;U;xRG(>Xht$nGDi1lllQ1c1L2WE#7M1TLnpsVUxoj41E`K-dHT zlD6&vM+I$S;iu!Y;>=oQ00995X6V;_`H_v44rL(dQu-XlQMK3Kvj_1Y5*z^riANmJ z_QTR|Gjjki01yTyDwF~YpgRC0fPts&9pN!V+fz|Zt-t^v001dSvtIvSxf9=S~J6nK=Lq2u#(e#gJdm6oO^LPLP z0VON|lVu$=N<6&+N6W#GzXFJ=Jic$p!Iwv=4H57n5(qt`cBGA%FzeW0f*k3Xh{ykg zR{#JI2}ZyKgth`@#-IDQUfwsVRd*}NfRN|_0t0X&rUPLryB*NOzyY%{E_M*r_Xt<( zL^SOA%#ss_aZ9_{4M-+BB8@B_y3eh^^+M(*za+IVL_0%P$(fJ7TU z%9<6A{rZ*)%WRZIcEIV8jGTOqQ+MHp1g>HczB~e2&>&gDo&CoKwkib9_0{+PBou*N z^rAlcG2IJ-Bl=u9_wk*u2?tNe1CVwQ;(Qb@Z>NTQCjbBeK>#_4umP*V+5rFp1P%Zs zMFoHZRyu%O7pU~9q^5TfC|e%bS|R~J?{Voy6EK01cUw`r`&*m3tp4G3fLn4 y;GvJ+=2cV%{(T4RUoBex`@qBh|NsC0|NsC0|Ns90WH0~#0YLy2LTmtP@CM_cvWAxc literal 1305 zcmV+!1?Kty0003AFaQ7nL7E^Myag{ogCxC7lO7q%;!T1C8wJAy004jhh*wbbnXFTy zkKl#U92&jmgp7kculv9N5D*MEcq{~CL*k|{f^WtD3@J`BNF55gh_(*-zt7DPq4*6j zO3io5m)3LJCbeI3f0wTR>=$irYT+Y5+LKVJ4EJj$va{S!DPF0O{fB zp_Il~Dj-*H?-l`v1(z8swl9+&+$d1v2qHs83S9MTlEa2!Xma_cj10t#(WZDci(h~I!gq;ICGxe- z4CtU1M#Fuo0#~5cPQ_uu3aUrz0caB^O3w`b>A_Y{O=IKr=mu6Iiloi2%n|dH00IC2 z%8!7X&UM#6E;PT{(S#`t98KYp4%(IxpaJ4!G{q-#ISO9@%mmRnqLJj(+Ul*N0096- z{RYxcfoVK>;9xbxVJX(ZQdWa0hE&HK2wR?c{?K7_vzgs=l0?`ErT@w(#ef5bGr};A znN1Exy_fgE%oMh0x-DVAG$>W1~{Vsumlas za1wfdI2%kRfBE;zf^ZtIP)ICdWjtahP914r5yEEP-T(*&86}j(TSJ3&tNABafMEqf z5hmFNnY;mnn+h1AEbvO?l))wP`M}x}ObQ|az|MjY&k=WWq1s{9?|sY-|M01q}B4GH-mhK<~^dTAj$ zg>1YMnNnnU0JH!IV3@(GT<}*CL91n$(T)HD1c;CT5G?=&AqFS!)Wk&OTL|53pTGdd zbo9`cWshRkcTJc+pyG2_rmdg*hGP!BG?`DXu}=sDG7|y;GTtMqFno3f9RLvkBqEOj zXo~Ba9{2b^__w#SW^6wI2nI6%n41i*r6BN#+a9Ta03Zqg0stTnAC?3U@DSk;56YEf zIglbW#xR#aCKxD3|FL7(ov?+gxG)8R21Erk6_rUkBG(c!08P*U00BV&ZYGEZuK;0( z^ZED_V0Z&rf=~cVh{otfM=P-(uP1<4l<)v>#WNT@VYpA4ydE+k z0dPd0Z~4o=7Q-sjg@|Q^qxA@ICEfj>IU0ag0DaZl$(#Q3{86|Ek7f8l^aBXjcW>VO z@Xme&$Krzk0^r%xE|9E$@6!%7k^%nC1tyGSQS+E@?+cO$bFm4(jtn;B5G>(W_ZSl? zRDy~JKNr)1r68>f_WY)Bv=@)qei3PDax2ynlIhpcBnqZQ4tSc|Jj6M z;rgn8+gbcDBSl%}#+m`ZmiGqxOaZ`4`*pbr5u8E*>?99jdm4Db=l~z5#Ek089obq#CDLvm{bl|8M{l z0nQ}y3RxhvnIVsOZ*>p-l?(txVmIxO01++*2Q+vw!{SE-JNFC&G(Z9#0L^X>=Rm*z z{{S#jni!9c494lkr&icxcgossWa$^)mr^pPt+RSO5$F z3=Hf&bc5@2jsxKIA^`%a2d~dIqjK;6{xV!*@R-CB4TOOw~7dTsR-~b2? zQ~>1SZ1?)6e>Lbi)d;kD|0EyIO?WGPhO~39C7y^u}3yw#f zHeO_U^oSu5gcZy=#1NsOApT@9?D}{?119uHu@wb@buxdyC^j;y?T!001Bm1QM3?Xd`dPbt;IrhKTvn>-@<r1jG6#DUmL0+^JV-_#!Ii3K6 zBSzf6%;~CqJqY`am7+aYG+JP%r>V_`H@$@6-dH_qLdhzukRBt*cc3RCvGC@XycZ^ZES# ie?Onk=kxje{(nE8&*$^-1)~4}0YLy2LTrF)@CM^c83+ad literal 887 zcmV--1BmS*7r}8Z!s2zzW_X1ON-8Yztbu09OWyTCfw#`vL|R3J;GaJfeUI#wd}0;RXqf zf8PaeH~=v10Gs(Xd`Jbl1xH~?phagAfV047MjC?x&+4BUp`R6A|EiY`rr?NR01yl2 z0*;YHG@xC}r@kWqY!UhjRN(B4ov_mrfSLsvMVPhlxBw8`67blbwahpS1Hd=?E~W*b zo=-+;LNfbIUXgge+8Rth06_#9QE6ihHb}GQ(9jBi4!LtI392p@qo@L+`~XO$koe7e z*tu8$2mk@*;i4Nj0098tQY2->;D;hEiq)|D8SWrHD9eGt3S<9!a4-X)Q56%!^6*BP zA9n>Pw*Dd-kwom%f$%V+6Kd^ne+Ked_kol^IMrv3+!brCeGI(-9pnH5FfA&%(hkOr>+YiINM_!CS2fQSRxf{+2{n*F8m|9}={ zf#-Dtx7AgUkNVWU0uT=-yN)LTE!+l~__06=g3<&~sc8l8OL4cg+w2@4StWot?Tt+H zPaM~Y{P4^v0003&06B@I0jt5%0T2hU5de1>7~n$74*~WK{FKc=4of0 zEB#g~AF@qSI9LHIPgypt7oq?Nj6enI-uj5z|NsC0|NsC0|NsC0@O80KAK2|z`v(m{ zOYKU9z(tD0PIr4>S)TH@To7OafYgIzid4VrjPuMozs7LgBtPi@zuJa<^#cG8pOaPX zKmJf0x4pc?b^hz>Ep7Er^u>bwZXY}|^ZES#e?Onk=kxje{(nE8&*$^`{QLoEzyJUN NK>!s(X#i^Q2IFZGk!%0} diff --git a/samples/h264SampleFrames/frame-0286.h264 b/samples/h264SampleFrames/frame-0286.h264 index a354825cb6435c34610c767d700c1d57b38a3691..2cf54a90ab43a969a1a06889e5ab0ae91647623d 100644 GIT binary patch literal 1455 zcmZWpdoKAC`v2LP*YMFDUWs@Tf6`4p1ptEbI-kh+;cvkb1nb?(x!hU_hN== zlhzvdwC#QQBA)le*n{9()R zy7)}bgft1DQxENIuUME~%F_(C<7yb#1$NQ0WbxKJ7Tzr-c5mrEnb1{$rF58nKK5Iv z1E!6sl0wy_W2#yKdAk+v%iULe7+^>x)%%Vc1!DN*6E9$6Vma04jA;_P_k&cYpr)Gq zbDquHjYV=8$_9u94%V71uRIZhFKMhg6)A~(vdxbrI{Hw%=3MW)h;_vlz@NV1YPNa* zf|Or-qKIWUl1dg^5Z97prT{C2P{y{#lA$%!Pfik;Aw4@rY-#P?Eay$)TaDTIb}voo z73}~p^6AR^kVn>T{mN$cF{Wl@Dq+>Ym->%z1|%Sq|Fnxn=!%Fp<^XDfL+ziznj0Rv zMW5omY822X31DFTAU=^Wr1RECG@xTIl}MTuv5A4nqX5>bd0Lo2p^{vQp+^*W3Es6E zdFEJF5Z_+Q+_>~x8k#_dK8t@GVSV*vu&^x(kM71_M? zosjn0#T4^j=9*NhK!YKSJ22jv2^eUIQ@`t8b0kYxgmTa~9JE#J^zKD*a^;y92Op8K zuxCb-YS^MEaHGC#pd#h&WsMr90e5NRXov5)oTTPkeC(3y1F=P-3lgtO2$Wgwjqhl0 z$=J^zX@(KWCO)l^FSFJzSLU?7KH@2+f=$rK8)sXZ^7|5fmedy@L;&0g@~;OF;x0<9 z_)uIKBrr2V1246Fx)y`+A8nx$&I1vWmmPBl;-cOv1|$JZNs?X?XNG-fr7A z#QdX`o(Yj9<96ia|ef;xq6`t>a0! z5l1$|1FqX?x|oGp_^Wy_!R@fN?W4!`Plc`*T%luOeI+R00wJ%b59c87W!%ah(>WM1 z@D@~~g5$JUOIDk3rzYNNCAN}25fdK${FX}GaWY!j*~y#c8>|b3NqYmUo{udH(Fw`4 zbh+<*747Mw4I65^k8V;GD0``8;j=VVYoVn8 z7G$0mM^#u=U{3rs?@P=HG_PiJMSu%LAT54;-e4>~jMvW@aH9 zR`NS|{hRlF*|V3v1}RHUEs~%O)^F;_KtR^cW>s7XI)K2O%=rW=0r(4_J-|ALZIrUwo|WZYC?GA$HScX7Mc%K6pM zk=4TkeP;6I@D->vhY=Rldsdww&+aBnTyy7-svF!i4GV*I`OQujqqN#X>@RtX^SkH9 z;`gucEhq&Xr>fKUAEyOVvlF;}M5UVNcA@+A^!$HC+G*v5ECO&*XFHG`)E_v}6OZuY ztvi&!O}h5xb-Ej2W@FFotdl{qfs>IboM6r1X2&i29B;QXD?MI%(u9%XOb)b=o9Jbr zY&%S~alU(0qaG=(zl?c2z_N)8NLQJ@o2s~{R5bs;`I|EbqyN0Xa6=r}ufUG|1z>-n A!2kdN literal 1402 zcmZuwdoqCR0*0+Ho?TGm){V^;m1PtXE1REzyveF^tD}_E?6t zC{oEbmCYm83?`2yLlKf}bZjD{IYo)tw!e1I+0P&M+;h)8=iYPA`2YYQEcG)mOM?xX z)pjz&Ojgn!)c{iJ|dd@2n--#d&dcQFJIl1q2R16acKaBGH0%I)ZOYmJ&2K( zm7vpUayd$$7Z)EysoW?QNGhDvOqLx?k6uL5DVW+u@#_Z-4Wog~Oo-u&>|*s^ai8S1 z^$FNFK|s{capc1bvpi!Kb&=EIjorEcaM3zp*K%e))!#NQ6=$ipI~DaNap=ib#0?07 zJy9mBE}2_WdJ1vA`o#!lMAmG*lGO2g|AYs6EwazN6rkI`5n6Cotx0^S+c8hk!ND#P?hX(7bGAk>>;{5%dpiI?V zJVVPSVHJ9s>^pD7%^;vWD};s>ZP2)0n)M#T#IT_S#W=|<_8w0QP7XEed%_Rn>NnbL zkI@?`a0?+Yei|r4wSRlqg#a)J=_u4~^k~;|=R{qwC5e5G zvj{A(R-?^ZMU+M34t)WVKX9=e5Hv`r-pojCH!ECDaO4ETh(}_E!(1izAP2fry=VUf)C^>e9v^c?G~BmUCUnmJ%s(m-R_ z1JMPIJW}k}+vk?Ju&xo+wC#Sl&dz4ClWuWz@#mRC6PS=yx91Fp>S#h|SbN@0!ZKL2 zGrCoZ21-a8v@czd{MqFTN+<(m>5tjV#z9L)jsy?|VAw~R!)?|++_mpmQ`C=Qe0V3p zv0NCPhCM_@lI1g_r(zL+B_xZ}bdQrCh{``fXSvn9PCnVD_`n&Nn(DB-zcbADwcgP` zajKi5T62>y&CptPhfK@+Ed{cW1EaQ2BQSf2;jFl*!M@cIgZ%UD+Rsef zRVl~uN)3_c{g_9sl5%X*KVJ@xZ7D(B0`V;6hvo0T2=wf$P>r-ZRk047q_SVY;H&;; z4cP4nl>|SQFY68JkvK!sMdP;i%;>4$3%V9w=&1P^@4Wi8@iv&WIcmS!`-y@4^kK_cGB!O3E{M?##(sQBkb1-R6{@lC2zq|Fy`AoL& zn|Pnr4Q_=h8#LPd=(Mm!&K-)nb1AtxV=dM3QvZzd!>9ieX?Mzvj&q)D1aYj_8K0VR z!jd&7Pavf?FGKZ`-9B{Fz57>-XcoJMLti|9m^F+zy%yS=`yXOcuQh}QK E8)b2D!vFvP diff --git a/samples/h264SampleFrames/frame-0287.h264 b/samples/h264SampleFrames/frame-0287.h264 index 68ce2c4d46251e79f6bca6469c7be7b175bd91d7..0aca2ef79f17f028ba4690f8b1a0f3e49ec57596 100644 GIT binary patch literal 998 zcmVTS5P&|Rq9S*12%sm+ zPygTmfsEo!dW<=Qi~5Quzz6^Y0T?VRwKeQ!Vu&WAs^9ohAcFbP0p~j0}nagu^muj0>JZzy!|90RaJmBrb(#FMa|4_zDLKcMl~C zIPd^Fv=jhPOUMvvwgPW4LrourC>>DZyV3jR(Hjo2~qaFYP5UdgC z00}A*%5{HS}|G|P|EPnRQvo>Q_bqs3w0K8=gK&y~wlT9160DwaSj9|bn z@RGxZWBqLOgl4_3_?Q4v08?xO0FY%g9}QOUa$x`ffk*%d6yg*B4Tt`CEao@>2oZn) zfbQY20Elj9`U4=Ofbp|e?_dP#Wl;!73<=K=4Tw+&05>QF1HggG+0cwif)dG7*Z@In zb^uBB@pcV~3&ySihc}cyub`m-7)-=u5rRvhjtHml7%8Eks#0WV%mMa;bUDFnX>h;- z!#{9f0))Nv=xjtxV84J62pDmKoT7)GDAqKVygvj#Vpj+R9u93T0wks6#G=qQ2bzE( z*Z=?lK>%(h*aoivcrX9}0YLyciM9c&!N{Kz;&>BaA^_?U3UC4At#SoPN_+l}03EAv z`2<_p{ony<>SXd7AMV@8U*wS7my0d3WPgVk7{mYHf#fKP9F@8Oe^h+ufKLDC@7D61 zA;FYXFV!_?+aNKH=?DKRgTOC0i6RK|-Wmp~St$7YunoKo!+Nl>{NlfB=Y?QRFNhvV z#>gZo3G6s-HvImBz+@SP4)M^w{Dw0?9snGKign^(Z9(|z2uX(mUf)j&`V%)vh(KzYuBpBfVDwc%mSUKtMB^~Nm5>{hNbsb^?V~TZq=llvD=fbdM* zXB++yLfNaw?@@{0kz_Ww3xcD#hYq90003AFaQ7nL7IRXyajh*Ba9UH#&bw)8AGt#*B2gu*lCdu!_a-ode|gn z!z8N%1N;dlECDx@aC?}cU<3dJ0Gyz4KZY72L&_6KtiB9I27`maSS|_-FaS2QXo_R# zi@+drflA(bv2qwmw}0FKMd0PfxG<5`1aD3M?gv}|1QUcxKn6q8*9x@|V*hvm7=RY| z#6RG)RBw=%MV!zNr3j=BI3!Z`=EO_X+C=?X=m0<92!$+b5C8ud11JFDy-hlsG6d1aou7e(AoI;2Q^Tal_2`|1umBJMkN_MQDoFP7 z`d=6Y!U60g25|u}r+{D>4i=&tg%BZ$+M7JdZ~*uaGS%+EF;m?J2(W8*03ZNXQ-J>- ziND`?T7d%vFISBz4U$T?j|k-%2$5?HJ15YIHoh1(U^UR20t#E2j11^RPZ(GLUr#Aw zoD0)yF1&|;06;k6g1&rw1a>u$4M0)=LJnEO8dTYIUKBv3Pu>O@jvh=EaZpZ_x%(hpa!o1crX9}0YLyciKqdq!N{Kz;&>BaA^_?U32*^p%i0h&&?x&wOBw&^cqA!Ryp~7*|L5RtHQ%~B@s$7Z^TKc@ zm&6Yw<8dKKSBC_*UxV~41`OhYJajKF8F1SGH~={b6uZLkXg?jp5>ddDx6{JDg#`eB zQ9e^6fb!#lOwuRGcT#Z1(fs~;6o$GxobY1<4kl47f9sIM&6_hp;7Xvom=1M`u40U!qwi5?P+0=GIJ3j#}#HD|?tz<|)%{JZR)KmNe+J~P_K@%?uo(9z$h zGsV-u50z01pw;FN`D!08yEfSD0A958_?f$S09rErqCJ1*Ko76>-eN!N>yXyJHHJ6R|s@x5K(04M<9^5~*KL((W2Ik|6uQ~(aZ%)v#l$+dVyC9MYl z62Jj*!B8y#s$buDpa2j6Z~zbjB+vl_eDD<}5bC|a0{{gQZ5Io3jR68?gn$7*dtMOe z6R6?-AkGGOegFV~IKi!d$p{ka!L%yIXq*56j6Xh#hV0+5MIQaP+a^KebiH15(tGQe zbgA3_m*!$}I*8ojRMj9p83O{S3KA?EDk&x^C%6BD0&#y53H($603fIU3ck>&Zwpw^ zU0vJ(faeAYHRiU?f4L?QTrdb62~e2?jPN}v*@5r(001BY0C0lQ2_w?f;h}Us;Es>cxJ9AJ7x=&o zJA8l~PnxI=Mo20D>j?@k-qQ1td>{D00oDNg2WXBL;3y`LrFP6e#YUXdkp0oF$zxI`~J0cOSj%Ym=CjeZO z0)r2F7JO<;;364bANCvq@!5@jA-nlJE9hWSF*o%0@BR}40!_Vd@?)Q`-X75)neG3( z`VIgd5|tNeEjf?iEdmQRW9fWJ1w0RceP+Vd^dpb=&kDes0UQUB;ZFign_JR8*uD2b zKzC2eBR9W~1)R34en77N&>zda7)n>Scve(KG$`bL-7t@ixSJ$K1%wWOPvpcgJ>Qmy_kWnB8ag) zBX=Fk;Y@kp00aU6U?gL&3!l6XAGHV_sqYLl09p`EAcF7&I4G#b2%Z3F0)V3%CLAJk z*g3#5mPK&<0Pq!hFwj9fX~$hMHdNFA7$`t%tD(~yfsK(5JRk@Jm8-Kv4_N6NW}pDv z0uKNXFgYtVYq2(s2^eR18NeXWI*!(wovtkw*DB!f#RABTwQ_f4#l=RifdLo^+)s{! z=7$^}^8SE>iv=U?N&o^tfdB;1PJal~s_eW0I5-i`ph{;a@tTmnh=uq@=Mc7uLfKwy zBV`C#|EvARVq8-SQuzg=f)QZF*h%o#0_&>O>i_2UvHnxwfTJEFI4#9Wc7i)?<2r=C z2}Fm&V8{`O42<{zfB=Ab6ak7Hb|;1g;=J)3JOCj7+yVsv z#k@FDRw&~znp7yo-Ubj-=hNWw1q3Nt^lVSy00;|#SU?vri?U_K#p5uh6M|Qvf#9-( z!5qd0Y*m!cKmiYiFcJWcZNZ^Zg*FE6R|R120e(U~Y~v_--~b2)gVCS}E-s;wFYU3D z6h443-~b>bwxA$tByAefLo)JyfB+y5_y9lxfN+Mb&D4xv9-rJn0AUCLhXlxohJ>I` zXaP(Bo1g#y0YLz6Ca4Cl0C+F}00BV&If<$PtH4Ab&*$JxFW@8q@&Z5)ZV?J#2eqC= z(t@T*8J|Q5p1}G22D*PCDPMXx1M6c4_o0LX0=?ykfiZnBKcKxEOcLUuT+Rs&|$ zpTBrIc4Jk9Cx0h}elRFr3B7GJx&P_^F^Pg9O5eZAGtxo8q$ol~x8D9Z>VQJcGF#>U z_W)3oz_apFX)0fEJu#}Vzp9A--udBJ6JR5N@;oWvNtrdOk>*18+$Uh`pO!{%e;yA8 z-qHC2iQ5Bfy)az6cTggWsIbtxcjf(ELOwOdy&8Zn00bagmx36v<4A1Wugm)TpuqqU rYLaL}uQzW1JwdJ2*oY}_>=G(od6~cZ0Q^7z00BV&6+&u&YVZc*_GRC{ diff --git a/samples/h264SampleFrames/frame-0289.h264 b/samples/h264SampleFrames/frame-0289.h264 index 4421cbd545a32567837c95f8ee6744685d8a9db2..6681e5e7d5e7805d5f16dfcc37a21351bc584bb7 100644 GIT binary patch literal 1373 zcmV-j1)}-@0003AFaQ7nL7Si&yaj>3{v19|04&T1^#!g-;WOlqSEk4Q9xNr000IcW z03rSW0vgP`08$MA06^X7abN%;$dCXCL7uOFau1tdcZ3Yy_y8(l6c8M@+<7Tl`b_uSO6oTNC2XhKrH6(+7IA(TB7^jhw(2A zp!r|`$jE7mMR7d|@c57uY(PK)Kqu7N0&*xYA$2W%Pfqw?QQ!c8&=_u3WUiLU;{vHv zOaK7@-~bRJ009+H01(JbfDXWlDTb65)>Jy-Vs1m2Di#7Ce=u+XfQHQuIyD@#LcL;A z&Tn8a01ysrMQ{iw!JdF1BLD>&{A)K)8BItCD!5sk-;auv2KZ7oLEuP8FiXNTO%nBskf1{ZADu7$Vj~j& z@m>G`Ks6fx2{5<7Z6W7B_g>pGW(`hqyi5Th&;SGpU{%fnp_?0iGV?%u02?zB;*ew4 z$QZxYh-t`N=5mqY*np-8VSoj)P{!TnJ$D}i^3Vi30003&0B$De2Co2kFaQ7nK>#_4 zx&f=eYoE{O;7wp80PX@%4$0z2RbkIpf$j_AdjoIao)>{Pi3%O}=X+%^)1Y7oclDwB`QcxV3qRSt z4+<$Th4mPz;dm2E|3_j1(IJ*f0nY(}@396lU~j?c5h80I=llPl=FHXle{SA0gP8vL zm+InxHW|_R)WfriZ70AQj8{+p`5*t>3j1MAiLv|V(ST_@^nMz0@kAZ}Si#TxC;|oP f9|7fq)UFOybphuez%?)c00BV&6+&)+YVZc*=B{AI literal 1507 zcmV<91swVS0003AFaQ7nL7KoCyakDUfnZ2!0)S5n1%Ls-0YCs?1`-IOkC6Q|w$|hn z8Uz4=EcgO;O_{*3<_scD|NRhQ(M+I)KwHCY6@Kk-%oG91opb|Xqq93j`~rq>01yNW zKnG#6fl+XlD&$3C>;ME7S7iVJ2oL}efv^DW?+kzdA7vJVal8=mt>^I8n9t z;Dho8ulbq>2nF6HnF;m)R-Gdb*?d@m5l9Fzg#kf|Xh|BK3f$mtjh*SE@O}aeP=X93 zV8M}gNE9_z80b9!5=tcR$;$5b!0J9oEl~4p830YJK4Da>t7zAoM$P}d~f350= z-~a>w05B5+cEFy-z>cwO{BHao_+qq^&|?PmbO;*Z2y*$Rj10t#CK(&R-aX})@FUL? z(b>G~_X9g90?7Gq^+;2mx7+ zfB=Iy1FtXu5Cb46Vc;I0nl>5xKDi562*J)Y3up)g3C!aV1DpRl&={c0e67hE4jy!o zGmDrY01y{0!~jqh(IOkP0*6Q@giOxF5hvkYJ>UQc1ON;WLC3W3PHY1zLl)8xhyi>G zfK4n&u$i!CuvqW_FaSjHKtLY|an6r~&9Izbph6DD0+F8quoME)*JvdDGHTttEf0v{ ztQdv3e%Ss$2fzUU06+`@gR1QERGrTNFwi?JlehpIfB=A#3Mg1VL4_0!BKPtAOz;SR z!@P>_q_+x{5&c-%hylhWgdtcN5vsDJPyheXFatPn@auoc)rj5u=M4Y>AOY+V>pTti zbT@GO#sRPjb3gz<3)oMDzyhEhQxfIyUML7*fJhV%94Yf)AV!ea1nCyL(gb)g1tjn+ zRJ9#9le;H=zq~Vma1wnUh>)@oZ_8}RM)Lpx0HC22AwhbuUWtj(Ond+W01zGKmO6Ih zd%5dlPs<&0Efg5c7VxO8Ldqe8iopH?0~{zHsXGv^7GLH;5|8QwNWv2;0GSS5c)$!S z2G9Ybnk>^$Mv|mnpbO9d5DsY&0BmDxtp*MZ=g2A`?`Eba3cu~(00;n3FoMjFoY1Zc ziNHc81OEdJ%6JG*J@7!K^YuS?zyLr<0A&UPP7nJ+orp(WXpA+W3Az9P0YLz6Ca?yt z0C+F}00BV&If<+RtH5iY&*$JxFMx;xcnLr}h!PfKg4_VV*V7*yPzXmX(l;PZ+abd; za8^%{Qg>hkd+k3;Lh7dR^GwwA!2eP|u}h&WM8*O{ZWTNSNl-;y*q?f_bHxXCGq8X^ zEK%+4aKW4rY4R`6)F?p^p9Rv&GC{llZt=UWsf%5&)RBKNJwCR#~L{fRte>PP3}!|9czR zg(ikf{lBvS4!s( JYXEBS2IIilaj5_R diff --git a/samples/h264SampleFrames/frame-0290.h264 b/samples/h264SampleFrames/frame-0290.h264 index f4a6fce924bb85566fa4e9052e343d62b361e603..cdaf5f35f40a1bd85e63ea16ba57ca4eaf4fd205 100644 GIT binary patch delta 1433 zcmV;K1!nr=2%igo000012`~Tv0YRI<8oULQ#DXzFE&v&}-xSTa0Rc#hzyLs08X6NoQ(a2l0|sEW%L%Vdf)vh+|5-1B7;bh7P|x6) zs4S5zzYwjPjIaa_nBv%ir&zYUA7TJJ0AqzM0#rr(K5a*Tx8MK>0YC>C1m97Qsw#mB zt2`O{a4ON24geh(hWyMx8CODwkvcj+WNcJ+^4u^32!JW@DRr~2)d8`9h!8kVf00a-Da;Z~?&lV_c+B}27o%-qT_jKSXA;Y`nTuSA=mk9h5!86$kW#mnMug7g^IENuK5T? zLHTkPItO?pW{{!^f5S!qPzW3wpT*!=QvB;uAtwzf@Sqed&1PNQ$%ae?ii7hK0oVM0 zP*IU@@6p;xWi*XzpofZ z9G0Nr9{Chld;S2ZBD^mrQKBa6#`)lX*Z>&LV4&IG$YkUb7lJRa05GXrz=HLc@I6Xp zwh5F0ZvF?b00BV&ZYJ;suK;*30003&06B@g0jt0y$MgC469RYuAc|5Dg(*stwE`M{ zf3G+400Ri}R`QzP?+7JijW?h*M}+C$*s1k(6{1rw4WC<5u%IKa8gf7m_jcid3E{(}X3Yn+?k;6HcWeSi2nikxVO zPv3))2dJ<+MAhXAJP-)s-Jk{l0svY9(*vLb5`YGfH-r!XUQM`_yun|@6(Q%uQjb(fsT_7yu9$0mLj3AzD8_qKF^C`+x(?W<$in zZ)urS_ke}%B>aQH}ksYiMf&epu0gwPdO7YN0b^8y0;WEGwKoWE-R53N2Rei!^ z-ZeS@6yHw)0Cr$ZSoduM7!y$30YUZ~&x1e(0Autl!$gk&06;WxH~_NET`)#s#2Jn5 zOqKv32<3=0K!?>~8{qr`fB+x}5|d=X@eJ5v*d1DD_f2ZVwE+LN#nwZ=eC z4!N?x5_*rN;AF==~LHICM(*M}Pw$1`Tji z)>NmjKmYRh76A+i1`4AEK41n6KLqKE%;9k@bd$^%;EQo0B9g2)irg`l6>-1-K+pgL z4!bOX0bpr?`~U(00hK+Pj0^Y>N5tR~iLx|;0|VoIgtU`_8e{kNpbCxv0sFY^0swM6019br0204Js7uX*|6m6IiX%m_;^Wk} zzi=1;=x`W(GuAeqW;kgq|F{(6=mKn%Kb4Q#k1z%RW fvQF8+v16J11NaQ#OehBH z263hmD+wIH06+x103ZhdquRMG^iuHA{_p@NfFLVE$vR;Sy|4L+X(+Tn6LbIo0YLz6 zCb$N#0C+F}00BV&If<^5-0*@|Sl_S$)Ob%{WVQeA0ZF3) zEMT+W`t*y>_v7O80zfEjX<1IA9k`%h)$mP+)p+|15ZMx9YGe{$+#XnnteyY{uoCYA zY91&Lu%q+*3Hp@ZXdC_5pTO(g#|@c(|JQ~Ms97&O z!}`&61rEqUv_B@E6@f6{59z{!zPJVVKqwjuAdiu1xA*`)#0Y{4>BeOtJq7TJ+L?{IeKRZ#-3)@&WjT^Ap0bCYQtrD4oZJ0Np!rfVs?f>4w|S zJcA4G>%eN;xyj#xdEYvJ|NH%@r_B)xJ_sa(l;AQ0|NpPwIeZ|Da1r2SOh*+K1qg9d zU_nR#t`zb@AE*FUZ-}|PWP;(OtP{rDbMJnC_Ag^>4a)W*1VKm_Kkb8WzQ)Y(3e*4q O0YLy2LTi9(@CM_th}o3@ diff --git a/samples/h264SampleFrames/frame-0291.h264 b/samples/h264SampleFrames/frame-0291.h264 index c1b5df4ff31ceebc54126fa3934e42df4c8e5a18..1f11ca0e71c374d382eead16ef18dae55de28661 100644 GIT binary patch delta 1797 zcmV+g2m1Ki3#AT!000012`~Tv0YRJK8oUL7PAC8n00aVn4huAB(X(dFnlxzHvtR$f z2a&)4Kv~NG0RYfG3=Kqaf7R)`<04{taaaImHr|qLIDk$NNHWtaZ88xCwlJOh@)oED z01~9dVvEvcLyZLqb);&6+9$6O%TM^QPN9gWH1H+Wv67sd`{7L zKNP38^8JKE1vvx^`~n1egL?c8REvaS$NvYw0NOSrf1+CO0e~q<6z)oB>3u22?4NVR z`}p?+4uwR2i`K^M$1~6fg>wUCxBvjQ08!@z61`m?OX8tvVnQQ0D~qJGu~_GV000w1 z@@j9qcmvo9gciCzN(oAr4?qAA0|3ZIdqP)?&KxWMw}clhpeW(&SB{cYMIDe67z|M3 z7I@JI1KTQ`4|R9=AM8x z`4|9y@Ivqe6>b6Jv>hbgS&0A`mBtSMLFf~CLr)zf#!9SLfB+B!2r-ZhWNK5^VlUw! zN~QY1L_h!#9j#1&X~~5zfKVU+q~Jm$i0Z}j^Z&x{`oI{x03w#;!b@c*zVHA91vplM zkw@oY;A=+a?zm_O6qP)T<2WQ`*Y{&mRI2}f|7JpRpsM7tE(RW$lszYkYPMlN-*`rC zC;Yx~5Q*j>&%GHN3Gy9^$Q^-!QxyqZc1QlB3a`Wd{QypbLwKM7AQT3ofQc9TxZng( zShX=CD&NrmKmnx$CiyO>v?l@086n`f)<=%$@Qd}-2bORc@(H5^>tqW`LM6eN^V#oz zfW5Rd6m%dr+6L>ie~D*M0;%u;z!U@I(7Oi3QUPAk=CD>+4_Y!S(yCvNU{I1cXT~#> zbonp8C9PUP`~U#}U<05e8TTx0glKl)awvkIpwPhQAQWd0geZ};7~m7?z*q>oG5>ux zpI1nL06-42PzMMaBT_``f7WT42+h!cBOKrY4x{3OLLQL>d7PhGy}$q%M7TMT_O#TV zpaJJVIe+*t{78Thj;2H$70E$LJ(xm$=?XL4LBEVKp$X5&NHl7XeEduR_yfQ290UUi z;rwK@zR&T10D&+72oq*C01XGj-^u_104=rv1`HY|fw5Dp9}xf)O@Lq)4yJ>D;kw=o z2whEIQd7J$AfJXL04`|qfFvn372&xGW~g%_B3K+(zhXFs#i&q+sH4QRm;bmP0HUh` zg0e@Blogu10098t5NuZ81d8uOpOZ+A`~Ws_T40ccIPC)260i&a91TDaDjFgi_sy`_ z&};g@7`y;wEy;wH%0qqN3W6(t!t!+*B5u5If%^ah3YEMFFIaxT3R5kIV3|NY-@w$Q z)%T154wwP>2=P5KplI^~&kkP_uIxmU0iX%sd;AsRSCS-I@BkkJa68ta9Bd?l!iroKy=Kv@)t^k2< zQg%hZI>rF(xrb7%s(6q98Vs|9!2)h#+nX8Y|JQ-PtpOeE1wu^Z6$O9S-~olPu{p1> ze~qC3)sSps*dOi`+%N#PN(?so9QNFN{{Ta<0003&0B$Du2Co2kFaQ7nK>#_4z5%Pi zE{6a9FhXnq5;GAQPIVxY8U!|fNoDA*pI)Ft)56>UU4qaCb%2lqiCE$QP5SvrvSGV zY&rkn=Y(KPFX$_XLV`d#PE4bA01d*)fWWnU4wI8G^GOgy1T$0b*dkj61jsM`pz*OO z3de4}u_Zo=VE-W^kdSeWw-YyjDt-nsz_@uYi8mLCG%#fWL^clzLv39kB)xmsl;aD; zAN&b{x=k1r0!1t(`+o0yA$uY%y|4S{gy2mth!8vC0)Zu}XFo_TYhoVC3HN}TX~tSK zMnEyUTV4Nw-3$lJDxLw>3=%GAERrFDu&uEdFl-ahFnX;GDd6V)2t$KO4l1+&7uszR nv>x5+4Zch1$`z-+B~nQeN)9F!3<4Jb00BV&6+&--YVZc*pHlsl delta 1448 zcmV;Z1y}l|4%-WV000012`~Tv0YRGp8oUL7PCx)a1PW<}7-^=OVTKxMpZ~xDoB#p= zpL75L0B{lv8%9Pon<966FdSWQga8}@0A-K?r`9m7z&Pjz=8@y@04e|i0)Ph%N(qtR zqwH69W8fGef=IH!vu-<6*#QRr0SM?Jp#1VU@Y=k$$;P99RkS~78^3q}K)ayREqnIpTF%+Xo z``z8r@Hg2{02DriM;}nHb6)dqiKTbI>amb@c~8~hpulDD)L?830Ne@y=wt;1gH;KU zJmu8{Ggbd;aexKD&#)1RwT=7001zJnxG*(U?!Bddc&2Mh0Slz?0l@*AC#X_@xT=r< zKmb5E0>Z$;;{%;lD)bQF%)mtQBO#_%RYgT#00RziqzHnwwnknEpPo&qTnumqMo@a2 z@B!2S+^kx>3KXTAJ zqz-g{XXUVnARH<+ctkYzbYOr0Ku9$h`)fbo6HEAj{w6~Ga?^|f0R1`$f34SoQVR-d z6vYdmf+4FgyJQc+C;$io3A3bvqgz-s874~?fDmDVJ9QOQed>jX+u$7l6&)~t0I`dqMD2UpAOZj&9@1C5jI}?I{q}$W zASeYYM`UI_i##=I)9e7J8sISAK>aYWzcrl1J_7et79-8L;Ai zZWWUlrk;l%@C6Sx-I8s*VGyFH816|vg(L`nkw5_I`U3-Rx~-Z*AG}6D0{>8|O7M+GgoXeG zjzQu|77*Q{H?+rCD>8KrZFB&~R9|?xXHZlA(Vvzz@L= za)E8(lC}dA1^=x3?|$>G4HO>h7I8p=e@hu4jyjeO7>{~yP2$YVMECGumR|@W@ghWN zU<0~v1qaNC`w!b}fvLyU_xP#{jY%~0P4v9-fzTQp|IiGM_L2ZWc@h1*_n6oSBE3NeIA(YJK|z zw!*?>7r&@HW+fq5?bo&>r{O^sieg1GW8A+JH-H%%KfJygY@85W`F7iWAt3a8m*LfrHd&X>SL& z=|VdMl9*>$0y1?FY&}19YkoUD8;W5cw6(Z@^;Uz4g+l;^4!{5a0YLy2LTmtP@CM`9 C_H$1F diff --git a/samples/h264SampleFrames/frame-0292.h264 b/samples/h264SampleFrames/frame-0292.h264 index 5f47998fb7b663a1c1682b23a3b534a672e4a6b2..3a63a8dc8e9372d9cc6b3299e8673f453b498891 100644 GIT binary patch literal 1289 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 literal 1112 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 A9RL6T literal 1315 zcmV+;1>E`o0003AFaQ7nL7QM2yaj>3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxL?*bVTf`9;>X1lNe$Q{Z7P#W+z04sn9P#PJ;z`G@sGCoQ$00amC z0Ru1VDzJeo&I)ciB38H41fEZy? zps8xT#3{7HkUn@HzyZ*L@NDe=7)0Xawg47m15@BxvAO9$$!zs|%mhj*+;Lfc(;2)U z1E6iSl7YafVK`DYfA}y({|r{V-YJ6msty+8kmd7D7#WEfp^=*dc>MeS<_q&+iaWIg zYn%*pXf7pXv~sXZHCsuh3(F1&6?QrUP!Xeg)QX0G|C|cxHd&L8-|xTyoWgl-UbP~g zf8C-00RW&8l)MGzwZFXiv8eAa;OU1jutC!Sa|C2!B`^aC*sOx9(#5H3@CG33zq>IM zCgLx)*CPNCQ>Zgd9|CF=yleviZHU8Ol3?i-pklCxOmN|Du*pOHpfG+%Aci9G=Z&xv zUK!^0X4{()J^%=YVJEG^$XM15s*>2gvn|0t1%aWG3~Rc86c?;P|qJ zyakt{Toofg;2FViTqvCm1TBP-hyQc|fDjU@67N?JW%Q)){(vyRVTOo^AcL{Wds=ty z-Y^9~0H*J_0D_I?4u{0u_y6DX!{7`E^34d$jGrd|Mu0tg{e}mN0VXTJ0l*yrA0!}L zof763!Jo7?C#E_qyP*PX0Q8;(h>4fEqz}l1Bjn2_`848&8a5Le>BR0Z&La zDugnHqT6h~3`GG9FbM*I1Cn?aDq4=4NnDe?U)~I$3IfD$ zwTT-c7W}r%gl}K~AP_i2-k_~mEkMNRu3i8DfD8`vN*z0K-Q4xDr{>A#n`oho!LJI6 z)GVSHNUS!Kz(8XJ1N9|h6~xMdW)Ud-pc+C5`A`JNYU|7Z!oY2S8Y!a9H3X?@Maltw z00IHcbO0Y1;_HJ41$*x#h-wC<1PP0003&0B$DO2Co2kFaQ7nK>#_4wgIca z5Q+T$egxA0;3NRjV1xi24Q`uf52X}e-~jShzX+beJ!zj@lI<8$`J?LrJO>f6WQr0< z$DBQp0swS^u0wg?&|m?05qSVRxv91idGAy>;RPsdI3;IO=YaHkCgTHex!N>?l$L|w zTg11ggkVizCIH@qjtW2#??}(|lLse!MS=VN%^6=K93d({!H1~^D`FlD=prFqghz-d z@StF$ZKNH*g`VHO71K=_h<pqgV`dwhU$WK6q9H(*0c4JSh_2fwTHDk5Cwt z`?x{(eV_jSI|qPl*2lw$>fk<&H2xp=^a5VfwYBgx+h00Vu)4fi|L93_QTAr9wXi@6 z&Q-`YD&Tg|1oEdXBlBBF04Jm`T7Uobp#m|+p}+-ey<1)WGd4PB9ohGmzDXbN*MK9h zc7Mm48-MN4BkwFsDWuURKkOL{26$Ek;`#7Ml?coV9KT=w!s(ZGdX<2IH3EKwAI+ diff --git a/samples/h264SampleFrames/frame-0295.h264 b/samples/h264SampleFrames/frame-0295.h264 index f4d6c7e6ce4799983526d656588dca43d67b9536..9841b7a8ba62d1258475857ee50bbb9f4304c3b9 100644 GIT binary patch literal 1126 zcmV-s1eyB)0003AFaQ7nL7HG1yahKwV%OC4y-!GA!~}65jMxAm00;wsp|}{^f`KJl zZ7*^TAz%P0fB=A0-hcpr7+ArS56awc1`!6DIJq~t+sB7@MK6LFZgvV#&HxTb=z1b2 z$|nt<=Kw?gJs3mts^GZ534qQ55GtK!%#lHC{onvl2Ra^k1uT$D43Ni$_fY@UP{0I6 zBYyM%2$u#2G;lG);wJ}hEu#R;fCM}N+RPum0bc+90Ab2_QYanRnHXqmdl#q!LHe43 z2dNTXq)3A_p`XJ>fCbc+p9I=29Y@>8u`@kXSF0zIgF7nqRp&r-)k`z{KqaXIb0Cvm(V1ZVuh#J59#Ml4` z1Z$uU0FjL2`6HV&Lv$$-#9M@I1pvARAT)9t?S z00aW)1|$NsvNfB+zs z*MI;ZWC3S92wh8GQ_&{$K~MNB`H}z`T>=g!A>Ft$NyIjKjxlO+W}HX=gYW{FM2S@?<5y$kZK_e@ODeU}e>Z9QN zg8S-#1kivOL1We=B$@XB!+;^!0003&0B$Cj2Co2kFaQ7nK>#_4rU9$K69N4GegxA0 zfS3bl3II5SLfimeKt~1q6q72YeE>2%ub-L^a^nXmLCrBRX%4zG00Rqe;tq3v?)dwA zHrod;fQAD|dKHAD_)cl357I_|!_oi`0)P;(FIusd(Ud5B*v2F%5b|C?{J&@a{2O~KOc=lc z;%Q(V#sf*z8GL+1E0@l2hE#$9Xy1*;Y%h%;>b?#UPo%0MbjZEn1^%R))Y4}>F9K

    fPh)I!$2Npt=jx+y@CxbmuIn#`HbEM*Kfw}W*O^n)GF{}@I; s96E#mUwbDEkNazX^rEA_U~6x(G$JGRgZLnT0003&02M-MfNJmt;}_iG<^TWy literal 989 zcmV<310wtY0003AFaQ7nL7RXYyag{oVx+xFkp=uB8Q?<|-~iEvlE*u$GD&;1t-N3X z0|0ZB7jm3pWBO+53Y-8e#8XX+6@}$DJP3E3DGZk`n?<-x+LkOJ25>+WfC33tIvNRj zqj1{5A%K#jbVCx^&pQ)Ld(DP>&KFaFfOTNiIl4fW4U`f10Yj)Kmj!?@20QgwK!M-@ z2m_oK00832h$!@>NFfth7Aye(%t?WdIrP;1@O}b-0K-sS@I=VVD-2GW5UJ& z594eLTEhTW4w+h@?E+6x+G75|fd>I_N-6+`F+`0=gcv3@|9lm=-~oqd1n0@K;y^9X zCOZlZ0xLL_1fByqFw__p|5k1{L6L9fS{+tT z`@x3M3<@TSV6gICwtr3st^fo9UEl$XDPRvvx3N@>eKF>u9pYH%55Gw*7Y^oUfQ_`|Gpb5GF00BV&ZYJOcuK;*30003&06B@c z0jt0h0sQ`c1k(PXCIH$3cn%>Dw*VKA5y5{2B+6-DKn#z|=jX`58-;vQ$}#WvHG!l$ zp$yC%ExbX_J@2>Ux3g`qI{^>|khEtC&cGZPqI(0>00)DB9FRL&u#8uTp*`og_Qt0H z{3ULfXQv+l`V@ucD~@Nq|FRUIL!x?S07?QLFYqOxS|@T+FCGiIOH~hC&k4Yr9K?kI z9@C^-PxJqD243<>1E>HEHkJVzM}TQR2Da@N&MYOgf*t_DoOv41gnj445NHi&Vp#Le zQz4s=sy*p7|9Rn96HE63PGSTC!z0`_6LV7G{;6J`s5}(2Nc9JN_S)3}|MI?7>}3_W zq$>DBN>Ar_5ABJ4r4X-j%miU5TzMOLU~)9_(LfD2r|GpJV31wQkPa;}8XHpqwoU_E z2In5n;5V4B diff --git a/samples/h264SampleFrames/frame-0296.h264 b/samples/h264SampleFrames/frame-0296.h264 index 0e9dff0105418703075f9cd2b1bcf6c11d321f53..ae15fb0f128234cbb97226a63fb1bf23e68b43df 100644 GIT binary patch delta 1800 zcmV+j2lx2R3!4sq000012`~Tv0YRF88oUKJL1S0cl)Xt&zyE{~o&X6L3;~2%q({=Y zFyZ-2j|BGEY5)`f&TpU-6n>k&DnO(PDPk}Hal#-7JYRTr5PV%vQ11f;=Pp1Zag@j` z6<9~uk%#Zku`hs-01yK?0f7PwYP|(#yNMs|7-OHW6Q9n1c(RYR004kMdQ^ZcM^BZ2 z!QeXY`^FNv44{}GMi^T%yZ*m#X3YLU!iXbOjxNV`zift!KE>xXU)Uc21Q72iQplAf_K!SNtK6Ui08=xJKsK;= zV*kO}1GJTY2oDJ6|9{571OWptm7d8}@LUXz00F}gGL)r8Rjz_x5fHt?JKQnMB>y;4 zB~JgFanugLW{98AzPtn>f)J^&0WlE&J|@ez26KlcDO z07H$m1!VymSP?n>vH<`Hn37%xSu*tf_bvbudIc~~C0}2_Lh5vvsnTNq;J_aWKE?n7 z0;CiGp|jyUg(r3AKL7^<49i=3cZONkSpU8mKnT37Gy_jPYlOM>WJ6mBlZK#lZUm2l zkqPO4sC{Su?*JfSyM7s4F=V-erpWjZ0;6aME(K|#7XqZ*c02&w%Y`)Xi~Ui-JYpbV zC;>nmHQw!lii##zSO5LR;!~8Bg?Z^EZWsw51;);TMpB=zTmia(a5dOl53b1Z7T??f zfE2KvsOGSsal)p+4||*`p;F{1QPr}JS-ip5phZaK5O|va0RV|~0l++KIDSa()-fu{ z2M6pvFF$`&#Wz6ELO!9u5Fl0ybxxRv!6L*aU}7M89w2a!je9pH-KQi*2-M9G1_M}o z$M5PkM#-EYpAN+v(&E*7{}*oP0SBUg>x&sOYBA0J-T)Y$p~{5+f!VB*981Pg!wK@0Q% z1PFk7p716B1+>5f6mVK44wogt3!uZ7%-iR$sl3ntFgclH)RkIZJSp440waS7$+A*wNQCqw@D+v- zJD7YcjT>EYu*dfx;Y1axM;B9ndsnywCs@3b%(6!?UeIL~t$Y7}?-&L;b$~;7wLpX| z4gdSYu_2Xj&ylaZz#Tw70~0`s-~b2+ z;fes{DV6Y46GsjMpk?lWKl1|~5WW0OjUabe=nOU+L5LUv0EP>UH-f`|b?B!z&=uXb zKT73yzW#_4sFNiGDt{P&S=G1zy>aLVy;X*F|I7&l#M&ZN zn*GOph8X$5l)KW=~;rN&oZVU=|P6WgPU<{xp0NyAmS|(-c z4SxcT0**;RfmR1OB>@j^t?H%m1M;j$+Iwy9$G7hp5Hy|-@-7E~q{H=h`5k|s5fh;X zj1m~QzJ~~LKY$KB7_QT#+a){0(YevTVfOVAg%K=-sdR zZM-YqJPL??@UQ>~gswl_BaNE_aK-}J>1e~^4gdthPyoHS!;nMg!>TkyBoE#x5B)J9 q1E9?HNb33FLUDA^-(L6C|NsC0|NsC0|NsC0|NsC0|NsC0;0%UwcQIc8 delta 1464 zcmV;p1xNau4$TXH000012`~Tv0YRIf8oUKBL1QGnOp^rRZ~#MQXLe_HXLoP^fDd2> zLx4iU4&Z^4pPKCAu7NWU5}?2UH~|RoOE#6M;0Sadl+BC@6jAw|=fZnQum9T&1zLZ_ z_Hdq_CEx&00YFaJCO(ma1i_K`1P})gI+zm+tr22Wx3B7jX{Eb}89 z9|cD7`GxlY1Q;gEL)B|59Bfv7c=Dh1*1y|H1eO!TjG^0PB&Gg7P2(02ty3C5Zd2BAa>O2Fw9LZ|UMl z5k5pgmgBa6UqP5yc_W5+Vgs1fh6wDqy#Wa$pnhP42j&^LwRLSHc;y>n04{8nb4j1S zssxHT1&PFTA?^FzTXrA>0)lf(|708=hB%%R%x-~E(kY3P<`@8{qL}(3x&QBEf+a&R zS&V~a5p?h~m%~wkurLE~C@mvBe2?$*P1ONm90I-l#rvcO$VxT=?eh%JAk)+9)G~a*> zQjB1+`c!uOAYxr2_TbI{2D*bODgXfi763XjdcS}Mn96Vg0Yv8M1%sqg7(*PPN^1A` zZVEboaHaz82ycjj_MQz20KJLhk|>rcL3A|DG04zin z;DSM+jV;9NqwZ!U#V2F23ee^w2AHBvMXuSrHV8oI#(1jzo|(r003Z%P-~tIxE%GAo zLBRo(U;q*TfPx8<0m3T_;@(Z_(;O9oke4cdr%_*iz&^(zfz)EdiLU?H7y}px8hc-S z3MHYE6dWK4z%WjWiAPjf@*;Bmpa2K}g$qG*t$OGh1=RhXfN;kH7YQJdvLV#G4O(OX zORbS7R$}0T5e|7QFiYQN`@jGY1s>QD9G;R(3h?&IxLg~G#!5*zUleix2g(2-1Sy<< zd^#mw$v^&>;Xpf12{-TnY7A1_XFi9vKvO@#-|zqk82|u)EKG-w8_xjiZX^I;8*YJQ zhB!C?@eDH2jTnoiHsM!%1Uo=5!Z2DM1MTznfS5jn1V}(d6n8kLeh>8k0D$=oPCo(b zMHftL!J~#*2jK>g=WG1F1~9OkE+8&{G63el-PObK0&1$B55O_V^;Q!B!b-7G_8wwK zJHr_q>cns&i~s}#NU#BbSeDeO@t@u%fF-($uTC=ign|G)AhJa`Q8LYl`e+mt6@0P5 z>>x9fqJqbw2yNUsc^De72td`?|D+NV%Zo@M*4~GQ64@*60x--Xp&1XCl3(pD8G)3r zPtKP_{r$jYm`cip+WwvX3;{Pl0003&0B$De2Co2kFaQ7nK>#_4x|4ndDt{J$81&kj zyZ~Fvk3{Qs1}N_A0CBD}2r;y5mgzT`{4hcH=sc10rv@_EO#w3>26MkU5Rbm~g4Uas zZ6+1R6*Uk4&%-|M=Xvc0Gj$)8a_PSR-QpFl!2f^op%R<{Wu0VVVLKa!4 z2xGN~lZ$`wbHXqtAQJ#(0e>(C@j)zf6udCA^zdj;;2oV@0EmXP=5OzDj0>`5r$-3swvsvmoSX9Hj z=n~E$pz3s)>={%9CO$%Ex3=Hh^FJATom{S-7lH@?00BV&6+&)+YJc!u0W=1Yfq(=6 zGU+@6e&`rmKD!V9&%tdc#j__~uxonSayM)K^HuDw0-_n>fB+Q zH?9-_0%3v#0sw3{AZKp;Dk$PavB%U0{+N&f$fkazeq3BooL`84FWa5}|NsC0|NsC0 S|NsC0|NsC0|NsBs3;~8gm437U diff --git a/samples/h264SampleFrames/frame-0297.h264 b/samples/h264SampleFrames/frame-0297.h264 index fd53bae75fbc69e5017e261d93c123991c88d96d..5ce426150b34495069b9de2417c8bcc51f5a5663 100644 GIT binary patch delta 977 zcmV;?11|jK2jK^Q000012`~Tv0YRFe8oUKJL1Nd`^u13=@InrAekRP*0R8|701N^g z=D!aE*B&2SbANEm0097i6w%Va1cCzx>_Jjh>KcBJ6`o)NKK`?|fCvB#L+~R$HUx8p z;)Vi10EH}1=8)8v%j%aOe&YiG0RSgD&?FJE{7eBszyH*K)521ihc2%MUO|;Q|J1Yy zJxG%EB2CO*7@w&;z-bg{06wq*H4Y10&`Sod*?s^7$e7(3Cv`+$02m8nyVyxgBBM_U zq42000Wz0$urzz90e1lKgEnK+jUeB+nIzyd%iqy`0r z{)2;(d>f(w0tMgzAcxoh0t8?`9`JF)0098706#E)xB_E!pXeJDPFN zU`}{A0udm*euW@wFBEzI)Yd$}06==9AOQmCCw>1nfqt*WMo1^j0f>l5gdkD;wh6o7 z$9T}6tvTi3ad?#uP{IsAga8&Y)d&NNF1T3uN$E2F@CYHpoW#6IXB4(QZx7$ubr3k9 z))Lr%Sm>eCpu>P6*Z=?lK>%(hs0Ob9crX9}0YLyciK+psz!&NK{(nCLWCXw%#RWJ3 zQ|0Poh|k>nT!=Pzw*Vi^!eu!u^(W^F(G{!G`Ho8BAPjr!yzA(h95cLQ4HlyI=*$@$b%s^xC7rSb4KKlFc(8Djgr)K^`-AwGA zKV<*?!5FyhmR0UV|H0{`A=-|eBlZ9PATH8bn1$-n9_*s%xG$5-68I;qr!DV4zIeDH zfB*miK>!s(YJh6+Sb$9dlmx&U#RY&51|@v@+2$n@q?jEPFZQKH8x@#mAmEo=)Y`R9ngzyJUL|NsC0|NsC0|NsC0|NsC0|G{KI z2rdWXmqpvvZT`+^>gL3WDZ~VtHjwu}E6sb+fZ*9^9-N$V6__R)fZP)@$Z;AN14}c- zfuwHu1{+ifK4;?Z;0ssqQTX`Ilsk5k7t;uvIHucX4kj6s!2=lSVQRzFW1$vvJ3S^WetG$r4#WQ+t#cIes=^AN6fkfIG6`5Ob3L$bTiBxs z#tcd_lUa2-jqEcXx18Mi;E-n1eVz>qvRdXn`Q|hI0UJ-UQ@tWks+6z!3V8~PZz_y;D0-PckEIaowu0A0C^3T6| zd!`hY0}@ABEf|7-mYfr||893(MOyoIgHSi;l#s|5>}OfsLd#V@%S?)KVYK`8=95@a zE@SFkfi89Lqkk{v|9kU+JvUk*^Sg5bL*@Y{6Rx!mhki>3ehAFzVzlTGuxHw{ZL-t< zy>&|eHVgdWklWLj_VRcB|2u;6vYSrry}AEGRi*$>+{^3g@&7-uluWzPdg_wc8;?Ev z6e3gnsy<9VXqpl%x3@s#V}Uc+528-_3|Su{8hjb2upE#&%G$usy8G3ygPkrb)z}ub ze!H^co`bs_O$ za!ZV=R_)z0f)YLq3xgQWX?W+(<4F}brBxXJxvuSx&cYh4YX=sspBKU2{vQkYp>vb< zz`sw4auP4fdVhI86!VQ}XyNOqo_5@Z;YPOjp{|qyE1#&nPyPP?`LyI^u8cdwq_m0+ z0_yeeSot5TpNP|Zdq7P4AIF}WVy(EmOKSgSxa2&Vxp#)Zqs038=bwN635pzij0Rl^ E0I2Q4NB{r; diff --git a/samples/h264SampleFrames/frame-0298.h264 b/samples/h264SampleFrames/frame-0298.h264 index a4ea8157f71fc08e88299e32f9ea3095c999be54..1cbd864e42bc9049891873c76db4338093aedb8d 100644 GIT binary patch literal 1272 zcmV?^HLpt@s<|6w7Kmb4_RR}mR&dgF;E3)MO047otMWxNeHAzNl z0098NTxEb7FR~@z77_thf82wG7vrAm;eX` zu|NPo5E>XWn1J-5&jK+(K-M&?TQW44&ATCppbXDdP611ppKP;F3T4Mwu8` z#^gW!;3@zeK^KAwVNz-7(Ts4wB!CT#h=WibR{Z=4$N1fMQ=0DIgo5WH$9h3m@b7=8c%fCzyrcb+giip7wn68_)-F$Ld|K&_eOq=TQW z^Cm-xsO0rtlWV#issHl*vKbvre8ck5!SKi!F9Hk%1c`{qNeHZe;J}5{we>v`U}AzI zId%90Aa8*}0FihHlz78Opxc15-~<2!1<)aY4ocf^MnSaj=oAY?2gJdE10rhyVV9lK zsU!bbFha9W2`oC34@w^J!W@#CgGig#6mS3900DsKb%wDjxXgTOwc9ZLIZjgFf5Qp3 zwAa7){`}&)|1wls?e1Oo&s$V)KfwTs;6YkGVoq@|-o-qD!;Cvrj;_b{&j2P+Kvy*a zVf^aj3{FM4zLfvMxC;{4IE5J000Og!~5|t01yHP4JsYs(KjV1)MbHy zLx3UJ0003&0B$C*2Co2kFaQ7nK>#_4tO2XQ8e;({1`rhhV-^&^4SDx32S5OfkOojr z?SirhY@b+4r0>Ah!G2&5XM!)-2>>*UJ_fTf6%r1!Mi9^xh9g-SZT|8cdE@i&MF0Q+ zK>!s(YXEBSR$stO0fYp=6~qQYA&3JQP=G|?wnV6MeBdm)SbgAAA8h?|@IB=489>6O zFmdb{&dWy3ZT(yOxLG_(PtW>z9~0OIfHt#1KYbGm;&>Aa=r;8*@WeePBD3i9Jy=JC zDh{V40s?jpVm#~xX!rmK4{!hw0n!b*fNJow5R8ffg8ut}54Wd4)Xt;x>hGUbUFyzc)4@C8ZvYcx3k literal 1126 zcmV-s1eyB)0003AFaQ7nL7U(jyag{oV*U9K`^=tlKH@(69y2; zfdJ1SfCL?YzVXUjR8Ai8%Jkp>5Dgtd`Uuc1=Azq70h53L5Cj142B)dG@nQlCiA!%X zF_@@31`|(Qd7c0OlyL!cBxv>!T6GJcu`TU{2RW?-49<3PkgN^FKL7xLk{)qI2NeOXt+ zwL1hq()cA39|?mXMj$dX;4lC?C=5V?@hET|7_OfJ7Z~InmR37c1*87>2q9Gh9B@G< zUOZvM!PM|%G`VpP+y+ogEa6X-7Z^=oPxt?D00vMYg_1}DK`jYw4@V#nf9?c07>17w zxiC*awb9Nl@XQEEZ*U>UjD1s~6Mp~zKrA{K8!N+NjMk@KD@BeMWTV6097hhXi|LA@Bjn=!_&Y+=3Xo-x~pQZzaSXk0OTzK zffEBzcjRVD|DXUJpa=m#L5$dv{&FH-e{vu(P5>y-w+xR3K^;gMzzMnl00BV&ZYKB! zuK;*30003&06B@i0jt0oV*w}z5ETGp78Jl5o$j^KKmcR`loLI$W`s3QtR+%+@K8j& zz#h*8Dbn}~04IQ;0(uGAPl6^2v(#!nmtZcNBax#d)5quFiU0rsK>!s(Z-8p>R$stO z0fYp=6~qQYA!q>k|A{*tRsb&Egs$Q}d?&OPY@h?RjNpp#DQfUOel~^*(R>G3fG`VD zK$0eY;s@(Qo8@h{{CrFBL+iW+!t(g2lksE60YCF^0?Va5)&(*4Z}!fxJ^Z}F1=9#y zs1a4N({5Ge>GBp=i<0;Mj0nW}fOr8m8DZ#{UlYKXUqQF2hlQbIiCE++Q_->r@P|Rw z1`t73u_h_+h{*!x4h#M;`2To(mn63h>HvGo=W>}?n{M>gv#cX zzPOYiA{JwOfB}W*c{l+EK2NpWxMqoD!;ias1cI8+u3%ry1r+0)*W{|HRIdHx1=ckP zV1wHSJTKr)h?C%!NtvcO-|GFSM8X2orW(1_d;m8_#QKe6c1Zt!#Q*_pEP*^0uLVJF sEV?iA5;JWNGqLkLZ_J26!MhiD76xNgl450+)=-;|#geu#H18P0u!*eB z5jEr^lXjC>=J=ePQDiDHqTMS-5mJYZe4F>Qoqx}D&Uya0ujhK6f1dlkpX&wyKt!95 zz${XkwBQ_>VS~!~*272TnhX^XDGUO3XXiwfrxZdPR+cbwN&c3i^<9!5cbw2d3`yp{ zpD9=KXd%&pb)GTP{I6}2*xoPtUO(N3ijDnv?7Iys=I7&JaH?eK8-3{Wvy+5s_gkKX>>~Ezr&SIJP&$tLvkuA6t7HX0cPsZwsl&yVJqu{x5;grgBlONz zI1wI&S{wIjru5QSm#0|XcWbQ&`R*XIL{4mpPL=Af5Y_jnc{ny#fcEohXLdCEK+WQMd^$Wc_WSwBNsRoguT2$(7WVcd{Iko5i|-c*Xe zzoPbPtKM%M%=5^rKfOB3)BXCA47lQqzF=;5LRUSsI`BU!Zx@THU$Rh=NQVzPrF#2m z%Yo$Xx{hED6lW9@9ZpPZKHnDsV2r6NPXD=m)cQZke5_@IuzIe$cqck@w3qt9?4UBs zHiM%)lB|*5%0K-qVvO4gdEKTr2SMYa2r-Jr95OknC>9&E2_`i8AXI*V1^`v_NFZ^^ zY&^b~kfL|t)f6#%mDA83nI-QCr>5V$Rj=tbj2(bk;#a}gWk~9g;1Sh$QdUEOwWolb zy;IpO5LoE7qiUiL2t}4F^Be*yzN}^}wy#zpyTQiM;}rLrjCZ(T(NJRdowCY~K9k%Q zXNnASN#nqc$?E#ap$9C@T7F{hZu6f@nh{2+)s*m!w_a>1J`$m;|MpPh9>L4i0Lxhm zzX-ZgWt|0<2dy*eAusrAIdjJg#VM0xgd>A2^2AHHK^dg zS9dKw?|(;9y*r?zH*F@Wj6s_*6STBHbdrvb4C~&C7us>TzGWAhs$jfpX5Q4+e^hOM zGC#5S@u##WNw}}5m-}wMJ)Shd`*ToABymnx#+dj^l`9B*W;-xs(Gm8e;UyQ}#Kdy$ z$dit4ogRSq&Jg*X)9-E9N#~PwWeAKMtG0v3d^v7!qE_;+sm8PvQPBOHJ)_7yk=23? zhhWWQXI>t=@aABd-9ZI_q3@9ESCZl+_k;HdP1hW4fG!r?c)?DKo3A`7?CR%(H#))vb%LW_PB`|L4ztXeAz%|^cmgl~hA4X5`2B|T}~gTR`!3|U1^VFXIy zm{oaG)Rw&VIlhta_^;$?LXU=7abQu~AGw{7Ojl8PSj&8LB$GkT&0U=Y7)UY%yn|0kq z*hU6DxBA>+hA}N&Gyb-eaQ4r*0d~B8t6{qcu(Qwj!u`$i#}D*Mq7Rjn*OZj%gLq>LHg@-WFW%}8PyI~; z;ie_WoT_&E`vT~_cBC@Pxt=@}5L_EQnJ{Yt83$(9NSg*%m(l-NDoGoLqZ!81(09)Q zw)0)xx%1jD`#GHlG8|JYZj|;Gv}CoB_7E}gn}2bQFm<~BgV^o$FzF%)w*nkSt3(vC zE05_hX}fo)YNy$p5v{DBoBCmpvas;sk-f_Z-&Y}h|4UR^P-9yAbp!1DRf>8sqYKZz zhx;sOMr`zCVs3d&&2uUF@6AV9(%oP$-%I>x3YYj$Uuf`s>SxkXGPn5kwglNo;qbd< z_e;y*n{BGPC4-)cR!{XAPqZPPZyU?{dobffYhL2r_2ksloag5JP7X#g;H(`GGvD@? zxU{@L_C-rTv8$;adOY0(?Pn*y)aYT-QPo2FjDkr{{P`S$FIw$$2=M_>g!Pk?{HcLJ qAG`c>V%TXk<$vG(i5o7|n>yfPgR8T(-22f0^8dm2-R9aU6 literal 1634 zcmai!dpOg39LK*uyJAXgZf7y$)LdJL>WD3*vNqMa=w?iAbwoFlgAJ<`QZ8Xm(M8cJ zMNwFDsc?phmLx4Y&$@8zxU0?YbZ-Bh=k)pG^L(D?{d}J1{d%7F^9BGw+SIR$UI@(U zP>blnm+IGMQ<6>m`+>);N$XfH2`j8{x_=+)D|fBREo2=H^1j^XxZWu968-sQwU2N$ z!GsEkTS|hn9)7H2!O`uH(Cqds!xNehdOkyuacQiaA#Aur;?ZiwOoDSWxQ$OkeF!sB zMmu)Xvo2!uNG~beHuseiWr7j=$*n2*vBL?^sm-Z+^RTJ;^R(9?1nZ3+s9yN=wuy5) zs|*nx4fkT|Z%y?AwBp?D#xf@hQS#4s`ZLW>I>5C@7w2`Kq3Clm<>D5({^%8(PlEJ&9g+NSQ>pOEqTLdfD5J1c=!f<+M6i}zI`4HF?hU0l^`rTo6t7a#rV+#YtoMn3Wq8xcTe70!qii z&*Z7+HZ6O+sOX}6J4(OHoG6L7h*)g3G^AZncQbAujQY|T6HqsNz{|L5$;`ef|2=q7 zRbk`p#-paW%TZEqW^SITrc2Pza=5P1@IaVl(cuNJlsZYT8vz73_=)z|lRT9{SB z=}%-fbFq%Ae-cfFKBPdYVzyVoS~5Fl8qIM%*`9Z*^zqA`r&2)3uHUz9&G$IH$Q=#2 zTImH!aM@M3QfzA`J}!#1X7&knhp%OePnVxDXF;9YVjlQ7XQPeI{`k+AReKF=AQFvC zq0sP%9UPPiC%Y2dSI8z0!F42D6{?7uVF&dEWVSZV2|h?!0+9H($TxF7dvu zU&O8Fl~SM&B7qLb8d!R_htF5Lx(q8$W;8QB=A3;84*@`1${%Dtsp&C(YtGhQ1 zRS;-%qMSjr!>}%x*T@LQ∾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 diff --git a/samples/h264SampleFrames/frame-0301.h264 b/samples/h264SampleFrames/frame-0301.h264 index bb680df7a7f7d8cfbf7b5fd7cff7f749b46488cf..81ce154ccc60fab94d4ad28a51133353a133efb8 100644 GIT binary patch literal 6553 zcmeI0XH-+!+Q)ZD2nnHtYADi+p$W)XPzYT_aOlNCuYxockYWOafC7qwfD}QB6B~rF zfC?l51V*`nBB0Wus33v?5s0*N!O=VKtaa~QulJq%e)3s+o%3Ozy`E?N_W!@n-Wvb_ zLu0|}Gr)u)`vPVpKEX{zp?Cp+1Fp4)pNzJj(OQ4tqaCExmtPtgSq(wWkBxxS=x={* z^c^_*pSSf0BS123cyxGZ{?4PgL1+mWzzjLk8WBo_{L}G{nFXG?>HxXf#BW<1U&?h{ zn~rsM7D>Qod5C!lI(3pGm8kPX10$e1OSZTnK4H*MN1*De_VZM5%MhT7dr7)EJ&U`P zm0Q;@KWKKAQrFyfy|JtB0Nbi%BSiD^#atn0y3Gy?784LyF~<3jEyk0rA{>1`yxXUH zE|Bd$h^XkF!JQ9ueigw#eCDee*t+ecZxI!Cb&==?tH z=1+ZbPiipG1kR0X{Gy_BLKIh>h$dyspstC?V_m6kn0F9@27J3|9wfMwylzng#iaK% z?k)aoBo@{|yvOJ!wwWh3j3MeV-R38aSqVh<$+YRFB{VbW^dH_>m$IM=xN2w&lsNQWLZYJ5! z7c>#Yd_Ja3s{|QRwTH^XbFOcyqWi%^pm~{q2s%I>681Sx-g#uM9O&ngrK2u~B>}|s z7|odE`g|@FX2W@Ty%M%Ob+cOIrKYyqox5R?9dLWDpJhi@mIV9w#*W;dQfqyvwI_WD zrq-&gS{{I=>}_#4FeIJ+yiD&F9&?z{!RtizZOYz*Fj8k_-z}@|<%|K-AyKRO*raD; z3IM^i{=?x5^J^MpLoC=BdYpv5~9RHT3BQA^q^rZD1JJwmAxSaeA zE+_t7w$BcLdydX|GodSf6I3A{dfgQa)h=On;}5$WmcRAT&A zw%=6%7^i5QC!u!R<$Aw+N|;$tbQj@qMG$tJ5zMP##J%k*to3*=UL4n%=7!S+BHe zR{#yxH-fYHFe6!y8&Y>GAClbfxAg|5d^$Ch*Pd(x0DV3gp~gJvBOj2zy>0uhy7@#G zJ>y`M>6@D#|sct@2zj6@M<6BdCQQuXX+w{JAgr1Mo5nc0@f27UM z4R$zfaNvzh0|_ZA;D3=)(s!jNe~s?)va{kT34xXz$f0?6My0sdk>lE>;bY>{V6v_) zLriS0XnW}OLTq@Tk3wWUfeu4-b952JQjygPRXLJCY{>Rf3U}; zE`actO|Ce=1AtKui1dY_u>MGMw@)%&%On;8Xa8HFD4GI^IDRY4asfFCq&|Q-b3F+Gaze%3$?><8UteO*ZjtO@eaGZ zK0jO^l(`t>zuydw(ZW?nPhBjk@oToyB=VfVR-B98xX_%GdH=-z%bkm};G<-8iV2~5 zq!C(#;2Vx|)0?3bn4^jSjqi9|i=lfqH(S9?$p2>0QIsbv1%96D6)?-zH%x1?ZTRIG zWnCdQfRG#%n5hA?owgdV!L<(ZpCOjZXgfM>T&R1!X@hT*ML@{Wuf)iGe-egKJnGN~ zs_ZJ~U%qf2Z8^y<=EGh^Zp%nXw>?6bduJ;S^p|{4gF`+p$!m;bsrn4<0*?tp_nV7Y z<87->`b^#Ebhb5@{4U@R*4X4+zsqeGs%C$mUgx#xtt`|=2`2LO%|7=sD#HU=d`+ZY|j?$;LV|(%VXN4CESBtFDXc`;v zVy4#Nt%URd57fX)an-T*)v!vYFU>ucWWlRjwKE6b{ z&yHbyg|#zPC^fishbQ%l$81EqzwK}2j7QJjJGELytlI|xSMYv1LoxbTraNDl*tN%O zel6W1x0J`6=Gt%CWG0Du-q*>x(XoD{xMCoVakW717Fn*e`g?X%#BL~+Daw-?(xj0x zY_M0>49O+NesZW)or5#3j%9^e34Kkmp=Gqq_4sz01>;vE^Kn zLiz6HM7|ak=e-1ngk%Yiz^aL!=)_;x6>+R$=)-a=RP6G6N+a0PTQ`h8ap)r?D9T;h zd5{ZVi`NK9X2Nm~m@}xAJ^cifk}4)n4zT*AjozIzjEtLg2Yd}@4MbwHw7p5_4Z0W` z9|PH5awA|`IbMb!B4inO0fV|Gqg|99v5$Z+QdnvVAVo`44J@7thq08g+ovc)TdWAf zbAllmyi3c4%Q2G27t9;c{VQxHso;Kmy|uQ6r_=+ckWl3cgW@fsu8Dp+?Aq$`Lj9gj zG)G+GAi^Xx;gtdWCH(N!7_^3)W=TZJ+?9oi{NAh<-$v-t3FA|ZYM6Ls#Q{gPygfp( zn+~(#c5n`pU3f`maRoLISvo6a>qbvzPM%5hC^k*hhG=i7RdqM$rQ z}!jX=+U=Xz*qQCgr%&YCmhZj z4mOvewfYwu%goHoJm|BxMU&-f_#K4P7a@vl7PO)+ySjrx#skx(%&v3uq{sJe&G8Xl z3U2kX{L}O+m9}gCl<|qUS9n>zLTbs91}xq0;2KcX9Y(DT4o{Jge2PE@R7ZaJW+I3uxnGfsPEaJ4n(Cm><&ww4NHwG|b)@;uyhWH- zZmF5p=#XO11&LvAs+k>ot_e9h`6U7Do15x}XPgqCDC<=>DR{tFPzECRW2pULn*4g- z$$Z%d0VulmdDi+iH9@;uh(Zp(rEJr>n1&7W!*i$CJTQL?`s#t8#&bI+b{*XH|e2xt(>x-z;F(2=R<# zf~)Sn|IWs4T>Rc4KfeDC0@Z5=b`Yu{54#FMQ=e>s*s+h1e`$QrX8Qkfy8kiu2Z8@B zftW9<-!0N|Y9V17+7 z`k|7cigIVPJXw&r$ii|Lhl3skq^K6-hkFR`x&Rh90Kf_+rot-R$ca~E4-P-?7&D4r zIY+Fv3L&P9LVTDQIuqo{d_Eu-f)Sz$2u47H6#xl<42+@#D5$b)fB-_sV6JBWZi&ON z3RHqV@XRS?0J(u5K2kr22LGJ^#}&q;coSkYj?g2t{di|E^&{neZKu{GUALn#F6LbH(Xg4JJH^p0nF2TY86h4GUKVmzZ z@js-}UGO!mWE~zuPgjNpYN#Ri*(k!V&DM2I5dLdP}T#?i{d=?49m_Q-&@B<1-An`Ig#5+| z3yA1X*(B^N0ylU-5JWQv0n>Z>sxUY%1F3+VE7Lr{G;k0Tf#kV}Q}7Z-(r*9=3LsAe z1`@3>*yQ9PJ#c;uHgiU>rst0*)KKscLOEVcG;7a9Nmhr|X9fsl?HT|A1#P?V0h9oc zRR7@9(6SZ|o=&i4?0f2fc4fv*8cvts#7H$37Z4Q+6FB+s+@KY|tpa+e{j7W5z+P}d zM71>?WOsluPBoEBNI?g_N*4$4Y!n0eE7)S15nkphQ@m`40jvd)@e41)5T2sO_uzt<@7 z==LO26aVXFT%l+x&XMu!JOBX!kU@t7Tp}fB+7QlJAS4Q6t6~A58$rO!ak(zP$%aaBIar9#U5$o$A86D9I$NairjbC8%~hILJS~@s(9QzrO(b zlosdj68R*SEj;is}!w%`ziII525e3n`Nur(cP zh9wA+A^*R44Eqh4kiBYg-{3!s(X#i^QJXGEQALIfQ|G|nnx|i$)P!>h-Kq*4=N@}O$|6B4R1$?yregwsUm;#B1 zKn7BJ4<$3d5NSpL0ssI9`7glZ`lav_09kPYRB@mOFWj*Idq4qari{O@5c$phKt8q* zBSsy9X`>9U&i~)Nc|@1kFkrSKR_^QLe|!EQ z-V)&-j)J`Z{}+Ej7>SDnJ)flvlK?EolIFB@xzGPg=pgJ~Bvu=fi~vAU43c#J)Vg2> z1Kfwcz3>xZ%M3J;Lr;nq@ol#M|NFYX#Jqx0B_D&-n^19~aEkAI@SF*#!Z86(0 zlTlDl|5+7HHj_Vp>>NMm{>xy@FE7c2>j%IG!Kr14;OGE60#X4eH}p!X!z!c_f;Kl4ki^00RzBia!P#w diff --git a/samples/h264SampleFrames/frame-0302.h264 b/samples/h264SampleFrames/frame-0302.h264 index a3d2c29422ddfe35b97ed3fdf469b130c76f29b2..fe8c747ca0227be4b739b860708728ff226f7514 100644 GIT binary patch literal 2801 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 diff --git a/samples/h264SampleFrames/frame-0303.h264 b/samples/h264SampleFrames/frame-0303.h264 index f22fac9b8e740401b73aeaf5e8b5069c36aa380e..191d3846e804169f693a2272287ed65d985693ec 100644 GIT binary patch literal 1563 zcmV+$2ITnw0003AFaQ7nL7G4syagWx0b%d}yaKxb#sMs;eM?_c(Hs;;o7C zvZnFiAO%P0icZnBfDR0%00=RV&HFE%)rW>)2}Kk;N*P7SsPywN01z1*HWL*`Y6TbA z(4Y{XAOH{@00zzQYsZ_z3|O+nRvBq`CM%y|jN6W;07A4x|G;2W5ZeG$<4TlhI>^4n zLlRzzLLv5ovRA4N_5>fB--+7MWlMi|mnj1_WSP z-}fNlMjfh07i+s`zvA9!vu12Q072-`g;`Jf1hP^}%l~qK0{|)A!Zas52?#O$i!n+l z27}9$oW6d(*8$5&gagE}Pwxc&9zpmK@BqI6oVUf@jxY&hf=8fmeZpF>PsT^$!2FdK z-=7oF4%~5$(df`$sT1KmWTUhefX4&(@KcR~f3O(s#lfLo5F{Q@5pRVj1PJg8FhG7h z0t>%%>CJsfv)~z20YFI@Ls};5p#mkIG#CZwx)1@ueCYO3TfEdM z;b;T^zu^EB5su!!G8&68le`qn{{RRK6ViKQv2@wtHYt7&zy{)OJWC}mis2!wVz&#z zan`9rOB1xfC;*@b1d;z*G|0lnHzEJ;0Z;(y2)q(g3X@L{jAMoYBmit|L>hqdx98p{ z026=%Jg^2k#({UnX*l2p04d?WV1~57B>8i|1ODN7h2v2?FJ4ywV-LUp5CIS+ZtKQ| z^H{nRVqe?<1|YlgDHpRmwGeCdzGTR86&$ZUwKvyyRR8!w7|BLi6WR;&G8-zG_=ED$ zfIuD@1`2>tpn#b%83`c`kNgM?0gean;HOpz{=j3m9Adm6NIak-(0#!z`A)!g*&So2 z*;fI8HvnHGGY6mk^Rd3;AOK7R8Ubiu#bNYGo-{4HlblR9u}>gy;||p$tFhg$z$ugv70nY5 z=SLV|B!B%pH^D-12xM5@ncTKlGG^C+03aS#_4qyekI8;k$|0YLy2LTLbM@EFJQ`S=rF0)PtQ zf}8*?F_9du#LoNR0f&EHwIH%*hBTZ${R25cWDS^DU4yYE6&=LBv2EZ8YeKM2Cy)2d z)d466NNmUi=h?9B-x$?a`w#N_?;t~jL9HNkgT7D4zW@&$*3Q*=kM>|SQ<~=||NgHF zUxfECxL$l1{{8d9x%d+xCjh1}EdUb~Ehp!RANl?|fY}oBS2TxJH}P$?|9Y_zyhEJ;8e%~ zH&(HfhJN1vBz6E8_5ELez(#HXXGj6FUi^qSmhd^~y)}0VsmF(8rB`jAzdqd9HJwPo N56(<(@8^YJ8<>f`v^@X- literal 1159 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 delta 1204 zcmV;l1WWsr3b+Y>000012`~Tv0YRFe8oUL8{MR>d3_pzu00IO6&u|helnJTaI_x@_ z#?Ap0N=OWlQfiwe9p-QUv;e>r{sRa0F@XQE^*4+Ea16rE0rv~rJCuQElBfRkavXpT z=EBYaq1+wWhN>%$Ct5jY1{u+h8DkjKpZR_Q3`PPDgti5@R-|)q2&El9Zs-WR+ISyYm(Sewen=)p=%bxS^-V5_# zIPTOH-f%FzpqP`VQM$oRRc$7i7nd9mD(rL!KqE%&O!&wDrvf)7%W22&_uv4|VLZ1l zUXf2f?%@D`0Dw>k%9Y?RGrj%d<3s)52TT;g!3RtROp%d@l)wYRb}J#w$Thv<45z zcAOu81160C0D`NxQUCyhzyJt1+yGJ@x__JfZz4fq4*&!J0RT`24y*OaQg;vzx)#di z4`3<4Q$gekLDM0F)CB?feZUwB3^s||V26Q)eVG_A07IgM7>^Yl-4t@JKtt?j9Q4^@ zbNt?aP}dBA06-8R7cmH{WJ-*XdfofRJrLjkAYs*efCPxnWK{L}h>6Iy9oETw0096H z#Y!g!zfLL5Xs(%zTk)iKS+?Gv`-5_UU*gxE^ZHxQ1OUS!xDW#(ToC6&9frU@@Bk2i zsA`Un&9DB#;Jd;5+cwPEja5`X0096ns}90{+(Z6u;{lkP9_fGpAR+()0$>5**<$lY z_yP_JfD@gIsQWNnDytOFzy!d6q15mw-Rcm8plIpA_`pCSpcqIQovFIR@~Q|0^Z_?O z0003&0B$Cz2Co2kFaQ7nK>#_4ssXFO8;k$|0YLy2LTZ3&@Ccw!00ao7F^p1_rZI|> zY6BL39ZQth2H@9KIDLrqSYAs(aEkU0pjOg~rY`shJCQGrPG9p+AD@9Vz5-wgW;~QQ zDZm5MjB*2D{&U%rR^{Ed$MG)OUjP=xi~T1wQwSV=#BH~lD}fIv_i^XmF- z=ZvqBk&l&tk;y&_YWz}1>%gW1BzPK4DBs9EvSNHx>%&FPTRuPl+QndTV@^8v&kDer zz)b;EY#A=lxc5Xpp*S;0;RIlUASXBQih^X~PRH&@d%` zq6VIa2;Q>6bGLm0zu6I;a0003AFaQ7nL7IRXyagW~6xjz*v)&X^nD-II7mp1yHhAN%E5MDo(Y-MK z!KN4Np0kkO|0b~KfCgi2=_b?Q00;%B0CR&d*g$!f?V0CLt^xo6AsxU5B2i#1_O*W! z750FD=dD&!7)(uX;t~f@R-X0K~oq?xT)8D1FQg;0~{ej z7De1TRYtS-fB;Yfih^yVr&AI0)YW)pyMv_}RNw-q5RbMX2&S(|jdgz9}^q#tst|+`AV#6|hsl9ec=x442 zKNZJ7550fnj}GRLb7zSgk%>2>Vu*s5z&vK40EQ@j2XVB%@0e)z=gd6FfB~J*Fkz98 z@6pPRA+yvdL)1~{h(rIu@BjhJ?9Os>H)fGyv^v?SH=f8ziHrT}yS9xJ9+4If}pceC-Usc(b$ssHdp)c^t{ zAOVIP7MW9}kAn_t??`B>z!2mB00BV&ZYH1xuK;*30003&06B@M0jt0pi~s-uK>!s( zY5;2R2%-G^3D6S&NeG2F0%IE_$B+gkl5V@e0obtBgi87J^$pn0E#rqb^fg&qQ{z?) z>+8Y%zA@2fge9Yr32fh<61vzz*H^EZzV^XVu65TF1c zEJy)m-k^3`0)tJLPt@?N39u7@NeBf1<_F7m(>U+{{CGS77OfQ#7<^xNJh`LSh`Z5= zx{?3Y3e;gbA(da?y+Z!s>5l1iCgC7lhOi#C1hmH(ard~feNX@p3BUxT0G_eQ!o?ZC zKm{+`gp4`9>>>0>pOC?-5El|4OaRdr(N!;A!vO6=z6r($6gUM!TCk_#g-ywb{wxyt OO7~N3xG?j=unSxyc#+ir literal 1099 zcmV-R1ho4A0003AFaQ7nL7KoCyakbe2m#v?2Vp@egKz*q0KFCXT3POdVdinqX z01yDiwy+ZpZ&U99 z5*3V-y~|JqzyLr6rV*e%>y!|i)c^{Pm;fw#=u|&m_e)B!01ylSvv5d9+yDT8&soF1iS{I z2oxm*XsJbkj)e1J;2FXIV8pW7jUv=rc5oEA00XK(01yr+8pX&1BBZ>3`@n=KLmIM# zlyHZZX)5WX@C4le00BV&ZYHn>uK;*30003&06B@Q0jt0pi~s-uK>!s(YXEBS2%-G^ z3D6TjNeG0v0umFs5#Nvj_T@7o8}r}+b6Q)So4(RMs!SN`=r<#@MNqNE_M^%wFaUfH zeFyURr5sF*+e7e}Xkc{Q%&G{$3OHvIL~xpm??g%yFb~^NSb9pa38jfC)$e{-Mdk)g1Rg z3U=`$4k2zZx*{WfLkMU zLJU!O03sk7cbF!~vIedb~gY%0OX0 zEkLnim!l#F|FjyYpUUZN^vVo)07qieIfD|$WDHe(+sO!?k9dI~3^fh_uLO14FRo%X z2jUojF&NsTDnSMM9x51Y6o+OR=9J~W8cDN^00a$yAbe6}IE2%Hk(l_x56EZ;p4AVX zjAi`LI0MR!6Ro|DQU0s}9_I)A|EvHNkO4-BFoi4C!=>?1w6P%(oB)fVbe8wd+KK_7 zvz02_<^t;h1{S(KN=ibR@OS_KfEWfsvtAOdPZ}!!|F?t}EnqO=>sODGRQW!L388>O zhZw`gp7s_;F8t}=Jrw}3EO=D4@|~}MJY(d zXTSk{30><6iBB#741YBg9qbmZ4(XrX!2y^AS}zzz3>180mTvLn7^5^8<$nW z9smGde)#pHaZXdF`A#t)(KCby=p2U)#8PL~&;1^5{kQ-iEeVz)$!eWok_i9a00Rt{2Qv7r zG$*LO#)bn72cjYXhGsJa5cL2DfA0c-jerD++yTL%W>P0TB#u8`)t&Rd{7e9j0P6k& zfxyCee;F)b@&Akf1PXuvK$9`J0BAnF;39wkKoTZE0ARtQXd4we4@m$dNCNVQBN`V*my-Ac#@dd_x}9d;q}1O1ZgMvTDf`%Z_kxXObUTWB)z*h^A4G z_>mp}0DyVV01|BBQ=&S`_22*m16i;DlM8$X(jI&NM_b?lZQ@`O9RL78mIYkkDjBi2 znAZMPa;mC^7-JK4&Hvx~Y(!?nh8=5cr}j_#d+cb&mdvTo{%`_^ zs({1Tl{uRO8)0-{XRIEU|gCo8Tq6v!L5BCXRh8O@@x3ab2l3JVlzso=n>;M1(K>%(hs0Ob9crX9}0YLyciK+ps zz#EJJ00BV&6+&u&YVZpg{QiCf#ekRs34#y+`K#L&aTfoy4Z4w;fX)!lzL&sH0VD+= z5>90tNC9`Uhz4-OiqHUf9rh%|$SE%=7v7RX|Il$LJVA4?b^*~qcfu8@KY`!f2mkED z1X+A193vAS4-hzL00_V_=qb%n0H@u5hN%1yraT4fW@N zewkqq01Kzc3jenLFcK86`F(w)kx$#-JSPHaeam+c6dAy~r5K?*c*yf;GQIGtc|&5J zz5_zM%0fXe|6XJVDBwng&Hw7eh%83~xghQo08dr|+weBvAA|~#k}co?Sa(mz7nR<} ZL2HrJS=a4r-r^Mz4pTqSaWJT05!e77zP$hd literal 1409 zcmV-{1%CPf0003AFaQ7nL7Lziyaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`L0eYF&+$9KmZ&71ONaF0Vete8E-4Zzzs{F$+SA4P)e|jq$BNBuM803Z>F%5 z?-aX2K>1GqU;wA2CG-v@1_6hQfGPj@4RFJF?A*3ddw1Xz013>11On<_*)U&g9{;>x zB917W22xk?e3d<;fDJ=CTOcWMdN^MLFT62YNxV}9^;8@!#{&)?pauX8-O>Z1Rbe@( zzkmS%1_K5*RT@soL@j}f(k~7{%Y0@*BGJY^HBVod>Fu`L^chLp*r1wWrvBf+OaOo( zPQ?J7(dwA8@8IA7<6sepSUe-^;l`$x_3hCR00?b$Y)o- zfCdyNg<)k@wVc}1|NIyLX4`zGyRx$!bLpXm7(hKeKFnF=5f^xBGiTc z00;nMphg=%+4RV|NDi!E$YC0?3K7JwyZ`|K5JH3wW8qny8i?v2f{-TZ0bn5@k|l@= zzb97bz5qY~KsX(m3T;vSBIZitVGsFUoix?p0M0HX*>6w%zyLx5p{Y7QHop4{g3owBAyu`(uiCPz+K2p2vo>L? zy7L*wJvLaK|2daG|9Aih0fkt07UCcB_!tbt*!KKm(GCCt1)W#809c&m!(@yA0RZp- z5EB3o56gH04hn!1or|dZFkC9D6wiiHW&R-qCkViYmku%NL6!}8`^KOW%||s0zz|~) zuQnbMNTfy?Y<*U6Fd&H53xE#(j}R}&d>g;`KL9{#=Lfq^;!BfFe#V>=n0ZssDSSZa zS{D!(8S#xm`h6n!p**(2LHGb+&TFv;z!W^&c8WIfghGm%V=-^uSAh~J00;oH=n4+L z^44hxe(@Oq3)JD%l+hZG3m5%(hxCXBPcrX9}0YLyciLL>wz#EJJ00BV&6+&x(YVZpg{QiCf z#ekRs34#y+`%BG>IEjDS2CkH5U^9d}@1^h)z)1l}1e2LZ5&%B@sR5KD?XUoN9sa~& zD;itRJAO(7{6Tq%@dD@g6(A1UI1czjuLte-pg;bw!SeV{I7TKu79cwWfHQ)_prWRXZIA#21b_@lLQnuE!~hHjPN*O0Sjos>jgVZnQMd?Re|V9<#|5_^jTZhb?&tAU ze-;Z85HTU-K|?}h2~z?&;{Z|=614u*f3 z(GcYW&X?cEQb?n_-#jM*X?@Fg5EK}|yR`^oZQ+yiXir}FFs*D+*sbmGE|;33Kudpt zhCp(`z>N#N`m>m^930d&g#Zp&!_EzD;0nXhc>|$cY;-AdJD#icvA4K{ PA_!w2|G?s5P{1Rw0yJe? diff --git a/samples/h264SampleFrames/frame-0307.h264 b/samples/h264SampleFrames/frame-0307.h264 index 6bbf43c96f9b2478c9403d6901bcc8aad125268a..ae07fef4cd900112256709027e5770b790623487 100644 GIT binary patch literal 1011 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 literal 1094 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 diff --git a/samples/h264SampleFrames/frame-0310.h264 b/samples/h264SampleFrames/frame-0310.h264 index 9b522308802db637995990e87e6b73da07781633..a9c4b96a57d4ea6d97c80ab6f66a461835504f1a 100644 GIT binary patch literal 1303 zcmV+y1?c(!0003AFaQ7nL7N~Nyagu`5W|T}L zA?N@eU;rQ;6VLz<4FrUbper>Z-UbNaE0j89m!BjgPugjG5W{n@QifmL4H2+2H*l<3{Zs#Q|{risx_au009690HTv^B|4aoUZ$(u8GfMY?5H3B zsDyw2dtv~Jnh+>~k*7rl1O@+jfHOn@2rL@1*b&oEmIr_a4s*c@q$^vp&{%&agbGFZ z0|I%N3(Wt#05$*t05AX$2m+Bx>H}?eoK^e#z)=_k1X2Yv&=ev;YDdA9xzt;HCvPRZbG^fCflVtl39D?tlP4W&j8nHvTpR4qhW*03ac{ zKn?(SOL);LBeNknSmt7kw*>W<`U(Mb3_xlb@Bl74gTWLk5?6?bfzf2kVKD*nXGu@K z`@jGY5uglM0=Pos_H-}S!uO$!+BMVmI2$F z5C8}g004moD_{ViZ0CVE)*?g{5aGjLa3DE5M*|o#Gm6HRJ_1n@^Yick1OfnH>?W0m zO6F6mU!Mwqeq=xZ&gd90$jA5SJ%aBDD%W2|KRul0RZ4I^|#?7yU{1)+9RGK zU4NMUp(d|`{}=!rFaw|n@m(^oX!`<-y`PO;OMD;2PyfD< z049)t1{io+WlokJ903l%0003&0B$D82Co2kFaQ7nK>#_4vH`2W8;k$|0YLy2LTrF) z@DJ<2NdprOzz7W6qIrSG;13`T$ONC35P+NpBKRK)frMIdct7aRe*v=&FyCo~iS7M^ zsIV@ip?&t?HTh#hu{`PH^YA8@z)S;C0%gYppaI}Zw`uF>um4a0o|Cp>5$`HUik>xB zzlnm_X-maWVZ>O@YH9EoFS#*H4tn$NatXSGJ0J%|?(Q9eJDcboJ0OujxKH+SA^+Fj zNw)O(0)_gSoluUdVs7hf2Dy;83g7vXKVV)55SOm*Tq;Bp?zH4RX*NYBfAE z46_+e`R^DzNw@pu{s1DL>OW-#=D*|iKf&>AbIi|pBD&SIV zjetrDu}1BG;!GlD00Y&)06>R;0ug3700fEv2S5y&egImrBP|a1pd;^Ifm#x&IR5|D Ngje*|-fD}0f`EJUBC7xZ literal 1007 zcmV92q9pJ8nA@^iXeXn?f@1sl<_c`4Kqo(;2@-kaZQ~%sRN!eBejRY z02#pm$N(TtvCv2&{fF?GXbJ=YCqlJD6IsPrT$>)*jOYB|`kVp)?7)?f{UmDwYMcB3 zk!lQ+;Lrg87X1q_(IdbB5Dgsk004k-#YPw-F=7nH*G5YK5Cn3>8X)p2u#ND30)PM@ z2oj^D!O%8w zzyttb0R+I~uG>0f29H4P_yEP>Aiy@HYy_`ykQBqNY^((G{=k8S!h)a(VGJ~SekkFP zf?s?$Am9KnSAZudF6u>qHSiJ%!*f7KXA*!&u-3;);!(f#ZPA$qEicc1)hV&o?*u`B z4TcaBYM(QO!3VEj2*3uwh3FK>fjmwLTWN{FO#+Of%u;>{Kmb4xO`Rwe8rs31A>c0o zcg#xW0?>b}p&2Gm2fUbHndnrb!6rlS0t_%mZlbEMy-=|md^rH902Q)P8VB7{2Bqo% zDmq{RV^>0n%J;f-s{jE2U>0r*8TNnxASeYYM`UI_i##=I)9eS2D8PJEmw{n=v;TW= z7yxw+F2cB;$pz<-leiS4={!_DV~pA70q_Vo#_4wgIca8;k$|0YLy2LT!L*@DJ<2NdprOzy-^5+>_K5a0ieEr2<#d$1oFs#9196 zO=1m`4Lp&%@Ed=?`~X-aD*nM)V*Vu-&rS(`jRuYDCxr9xCYQiW15pQ;928*y3k0*I zweoY{Pyp>G=0HQ~q$yKl{eKY_$BV<9;KR0p8MzDi3?kIZKny#doe)^RSNk9VN$abJ zP>$yM2TsT&P%abMl!$fu`{XZfZ~@4d@-cpAS2K3l8|Gr%D*yZZ5C|0_4HTz^U`;Q@ zb|gqZBp?RWC<;9ej}4y8Wh+~}Irgm6|1AQ309V)-bqp`f8&4hOiyMa!Xp%C}%B(Hx zfEEOEdQ)@ZpDO*3SdrF|0097cfDD7`fzGHg?&=C>z!pr(`eWkBsre`U&@Jvjml%sY zFM-brz?$(A1ON^DIioNgA8;JDM(`4XtVehLc#9AKE5HCihkyk?B7gu=H~=32W7Yl! d6AKY+3fG_`YnaxAs@#8QJ^sQfn(>r;1QcHvq&olr diff --git a/samples/h264SampleFrames/frame-0311.h264 b/samples/h264SampleFrames/frame-0311.h264 index a5a1ba82111f5d0d9e950eb7911afa903cf0e8b6..2c918fcdf6caf7197b9ccf83d542afbc472a39da 100644 GIT binary patch delta 1536 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 PbqX0*!H3d5c$f${kWsCF delta 1002 zcmVD!i2M2<%Tof2!0C{ZCl6UzP;2?8>O5VDii;%)ix8MX`4oz!=3Li=b{$oM7 z00<`tlmHBe=dKlLe~*2@0Ac`H5s&U#DmTbWp3Z3aJt#+iAaQ{Lm-jX#UWVkoQSBfA zfXCpFChe(hVX5UO=Ya`~Mh4V?7XhWDR1rkYzyl}%2mn=bhl#k35^L7~#sC0=2mlB~ z004wo08ukkPqB?LLs-5JIsk@<8lZ4J;7;b9VkwkEFTjw7;HDznbUk1N;J^lD)4*&Z z6sfQO{xAlAPyxdBnsYW}3!{ZQ5CkxU9(kk)AUa5wK8e{&00Yth1A~Q09^PL|;{doo zJ%oW+fSAt!z%U#wL^cW_K@&7Kd6M7(@E~O?zJj8M*~}5(*yaEr0PcuzAEVK4e(<#d z1qxoT8c`Y~oo?PBZXyw4));nAp%QI;FlxYSp*9466t^`P8PJHHF<=3GJcf#BFHNmF z@*DsG0ON`ZMELj#Y-=DI0Hgqf9J7ZsnUd+eD1lm(9tH@<4<-w^s3%NYArj0I`~Wa8 zkC#S+448}_bhHX5PauFeEYAQI{yUF`!*~^k$({iL#*#Qm(YL6NOBX#GH273fFbNYZ zmOF$=YE3H2nBaf_K?u;1ancZyEFXQ&0f93>VSsIIXhuxp08j@G08P*U00BV&ZYJmk zuK;*30003&06B@e0jt0pi~s-uK>!s(Zj*chGJgpcQ+@yy?zuVt6XPj*FgvWO>*0bw z{Q;S+jQnN-Zs&Zy0$>z?!j@RL9oXW?05wV8ix2<)-$20ChLXkYTfhHp;3o-=m8x`d zko*8BJttz}RVa(}@UDIY$IzgVM~VMJ49u?9x<9|p09|~CSlp*$ih=Lv(qlLM1ON?# z5`Tg3$@&0*+hGhe@Pq&`8@zgo=(qs@*+ESh_UtCNR67d54?+A%1qb1XY+#itSBB8i z5^6NfPC?>Hiu!cs-@N_+geA6|!Nio}iCcrg09!}^DPhwz0RXtVz~Fr~iWmqIxBLFj zN#o#5FY!J=fC-tCLnlL_3Y?HFC30Nc1Ahj8{2iO+Fzh3K@8mE-91ukEvRP$6|M&PH z1u|6eAh3P<3V-WEkMF!QJIyqE-y3{5YO59iB2!`lB!C9N%gl~kgjWQ3AMdOLRS`Eh z=++D5CFK$T4t|q0xR?F3M>o->r~TkTR9{Mo5a-UZ2_k7-%2WTH-(KF&ZT=5pgcpy{ Y1PQ_{@0@F{{+0Avh7Z6x|2*&za0vjVX8-^I diff --git a/samples/h264SampleFrames/frame-0313.h264 b/samples/h264SampleFrames/frame-0313.h264 index fd77bc50e6002f8bf8649e0e5787e54bfa3698c6..4da702c9e963a640eadada70ecc6645cddb8178e 100644 GIT binary patch literal 1268 zcmV6cpe9;lm&T0z*H;;OQ~#os)n8GLsr- zQWLq!=m5dRa*T-gD(2OHny(1HWU;^n0Af`{1Wvw;R!hk+AXn8_m2)qG;s{_#C^-aU zAR$>yIAP4Q<>7~eMYI%K{)7Z-o|<{+LjsfRoD7kl9(de(wf+DAKn(D}03ZlFKXlUf zp2ZNn7ml*<)C!9SCx`%nM~3ITD}02V*ehTskhz%g(8kT`IFJCu&D0Pq9Jp;Lno zKnNWmD6Ud=U=DrcPr*uVflMUDUh0f1N}e?dU4LC*mQvBlcsBtCQ`r3YXDBC-Ae zzyZYwRO)c$))n`&5aHuk03a}iK%e0)?Z>w0if;os!L-$za1>hki`5_lfdHcXRg%w- zybLD5<MChw07-CegGLp-Xv?MGMiz* zmNAos;W+JNpph>1mw*7E1B1(=i2)Btpk(IdJ^@ewI|DNX7{caN;SiRz8~{rI1;+(I zv;wJred2%sKmou2KnRmS1QGMVRG34m*8mIv6iKvPEzUFq37ZoD1pV!JL-FdA59gWi z(t!K`0RT~hTK|v`CDnsyRgBTN00S6)eH9Jazha6#`yXsw3z2c^^QM#ET*I|HfAajy zgE3r2;t4}kfcRoKI)H%!!LqWFVxoJG_%J6I@gSeYKo9~7fB>uQDTi{kjRlq6pcoEt zV3S^LZ0GwDVSoRI0Rn+46(FIX0ur5>9shU$0stTf2!UvXlI?16(7Gs;!KgnNMHGgp z^AbSR7F`H)ASgB2d%yR?*3}!&@IV=e2OFU?)FI_TevJJA%5Z^Pv~`w|>tG3-7z*~F zWE$&YRkXmSPqFad{exCayF zDg#lH3V-^-LW}pbyzaga{9pj<0Dc3sPYduA6i86FnTPnPYFm6CohkqK;FJJ@&6x&# zA};jJO3g4~z!2;J00BV&ZYJOcuK;*30003&06B@c0jt0pi~s-uK>!s(ZUAcV1eCx= z0uT@Yj95zm8rW2}eGT9Zzjko5{_D60DuJ; zCx6x`;3NQoU%=Kx0#zV_4YA<2_%}}}9kwvM%+Ig} z0T5fcC`8yWHh+dwj~XDr{9us-_F)z=@o5=9zbE)JKzZ?&Ht=Tuh#>L7f)DwAd6hQ4 z0)PmWEb-t8UVzO${qXqzeJi=5GF_`;)Z%UalwrN?#Q@QzB=}Thyj7u=I@-P;^zg6G zz?fg+a1sEVP*5B65{^d{75DEtjiW~x1h>)4dhf!;nzi7}@Zco#HsBu(*=M{0NaYA+nJS)$@ znqMWAaRDF}kw+9!hYHF60KN|oF~0-wQe^;j-~`bB|L8D)BTN=Y{6xPz)ivp6y(*M*P=2H(0Y7FoWpa2L246_2N=obH?cnkm!KnoxO0CD-j zL2s3i`pL520t5ghuULQ(Kh)qTvXC~PI3SIyJfMoy_uoB7@C}2@T=SLzxF*(Lx7U1Ko@dCv70097H z1qudLny>JAh^`HwdY<6K3vo0>iRl}-?q3R{+rR)22mz!C7~{g{?*qr}LKkYhFa>}B zKpcuJ0E6HFAYy|P8Gt1I@B=^;1{&E=;S;9;&H;?FE0;&FfDZ$&Mj8kujVR-$M#`Fi z0fLSVd1N|ca51_e=ZF9V00095ht=8q4_NUVW}pDv0uKNXFgYtVYq1uN2^VL03{Zza z>Kj^Sda$%xRI7u*oB$|D+gB$xOk7lM_&y^6JGl6if(OgQUJ{q{iN%7EUo;Y*!X)bY ze_)CZ1$+J_Gt>CJNd3ej{3G*-ThAjIerz*kN?bqldyK@mq#UN=30DLn!Hcky;j9JM zRw>i}%kK~K{16ml#770VsZP*EZNO(xm%%8I_)HlBF#(aE0AK(hB1HgV#~q2mfvH90 zas;jzIRlkqD3$vLb^m&RK*A*=1q%-@=^5$7d#aUslGF% z|J(oofH5i|J(uv0L8pCR#GPCFq%{-$KD1IV&~J~@+AZ*TJ&sB z-~b2;V~$tOzy0ss_XuJ>4jfRF+SOYkL<03~(_0R-M?EdPMpY)zo8avOa- zd z_#$89;adq%;5l0+#a$009fc002RJ^?Ra@gZZ`hctFkUxBx0(j1C4b zN1wze=!&He00bdgL4`bfy->3czQ=X z64G24CeA#T0CyId@=f0N@PTSVfB=A7E^h-?A^-b?474yTzbSP{BuK6=`1FVCz#s%P zfO&5xMY09dd%$2vNnj+nTKINj7)@xO z;UPv%r;wi{p*&bV05t~zj_M;bh`!W;l%M-&2)to*w9FH5>6j-DpX1^D0096o@S#7B z{kl5pMzSBR00mKa6k!=k9=LZoA&qxMxx+i%C-r^+2@S|%IIZ;%rnN`A{$CUb&|DM) zP{4dCU+qOe4-t@LITWVHU*Bm43Cqk9n%v)Yf9(ieaS%wUrLISeuaM3Wb1&-_7s=fQHQu zIyD@#LcL;A&Tn8a01ysrMQ{iw!JdF1BLD>&{A1eQVe?e0~h+y4LJ*(&Qd%(5EQ`-FaWkt=u6&H*KycCEdWEX0003&0B$De2Co2k zFaQ7nK>#_4x&f=e8;k$|0YLy2LT-R+@C1?*|Nnq6y1C!h{(nCLYy^OOA{KxYdalPF z{0aO~L91X&mjruWAQ)8HfFFMBd_h3ghC`%Ek{$p5V3aDBb^iSa=zsv2d7#Sx*abzJ zuqWgH9$-c(-|p-A`S3n>_OTl6;w4B*2KgTclB=d;zg`d5a#P>ch5g%VD@B3+bHgwu z^9C?R><#X8=Z1H9ptbIeh+xtY$jJB6_5g`FYaM6r`h%Vqfi-yo3V`qdVymS0Phtku`g_zxnN ZfBA$~>JLS_#=G5~_TRJFvu8Xn2GD>0UdI3c literal 1460 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 diff --git a/samples/h264SampleFrames/frame-0316.h264 b/samples/h264SampleFrames/frame-0316.h264 index 6f61d0d3e31a0f7d7d462847e53260fd7f1806bf..86945967dc393bcb6716d4c760ad147b8669c491 100644 GIT binary patch literal 1767 zcmVbR0RT_{V3}0|O^`R<@Bjn=-~yC)OaWU~`Cw+w00aYzvsGB;l>zclx!F(t z<6`BmKm;;$aY=vefd*vW3PEm5U;g-D-GM+aHk=O34L?4ti~s}xfC7Y0h@WVQ<>36O zm)SxghH?rSz)*mR;dZM!t!|DM|KRuluAWHRUVpp+faE0MIeNv);Vv(N{TJ`!@HJqi zjFA# zJpm#6-v9>S8-}5*f=MlrF;4M$U;rQh00RO5fi;zml>tTZ5CHUM;1EC+WKWke5+S&h zE$9H{6+We)LF#musnTe`BZ@2qG*AFqt$ z0DvF?_l}}d?}#-321i>!v0I~~WXfg(IIUR1DF-Jb0Xu6;KsC7%0l}NVA=1D+PGZCv z$0Ohh$Ram@L(pAi3^ZNku0=vT00E34P#CzS{@9v10Wrdd>jEYK0RZ~c$OM*{_3#P^ z0Pn${6#k3bH#6*g|5yfe0098(Z)5Ht^z z0YuOY1%hax=uV@99iT$$TKb-y;g&&v4A1}s1MHSy02Bs6L0$`>rfP>WA|-*vd-N-a zX!kh9pn}afkNssi5d14TK)8Ui!)pk72x z1^^BXKp@Cr(2qQ6c0~f8)&ZRW06;T2RsxFDZu@{Bh|#w%`FyQ#&Y`^a02t{@K?G+G z*jjW+;n+#QTfKoilNa1z0gwamBah)!f<_k+Zw%>|#H+gzRM&yMpaQ@Q_YTv`hmBvr z0q|}Ga*}r$7q4HR2K~7+U0SxGnOOM8N4yXsmZw)C&O`s&w!}t2l#BtKv^=T-+8HGq4jREq-MaX1SAl0BE36d~XDEU{ z?^l2r^&?kb?f;Fz-zy-Pr?5ZVDS{Ya0c?~oo4lv4!s(Z-8p>1uTF<1VBUtLLp7S8xJl&&*}j{2iWe|!}=A%sf|T7ox>@BpK{LLR;pzTZM3IDWyapz;L(ViLg7usDBk0|S1p z{q?F~J5)r)tQaA`>EV38H3B;fj|*Tuxc+^%z~HeD$ALE1fB--NKnG-!z#R93K7pVC z=!S#6`#k|z9V`)0LP_-l&kMksUnub$RCrs!+uVZ|r4m*8P1;~^ejR^Id?V&wnqmJ~ za6iFTL$?3JgGIo@JZQ+D;12)-ZBSCF%d6N012A@HjmzLx$GR0k|h?Nh9w z7($I2s)vs($yP<1W8fnR4p=7ojkqe84DDuMQ=9{(!FS#OLGHmOURF9-(BsBHYvmBK ztK`Qx=}&+|5v5f3jV}pNzxV{;0RrXt)cngODH1>LY}+#c0RTV%C+>hKYr+B!AmZDg zC2{ayegUqKR8B+vOC;#36FaY00U4}a~%p!V$!Q0dMd{~HDJ}_hl zfB--Y$bsbMpbg-jJU7?x%U8e!#>p|xiO=8F0z!&m;_+QbCI5TF^>!WpG2j4O$Rty# z2LAW;gZ37=E|7vpp6$WjCtyQtV zcmM(d;OqzqQEN_TQgd19fYVz*03Zqh0Dh~0ZP9T_004jhfItfg2N4hyRCy6o%irqVBOY_G|FwTcHmx`&3x(L1mO~3Z= z$TOO~v?Y0a9kP7r8nFryBuO?q&+rr}VU;*P0X`_i6RO8~Xz)*Eo^21MI0L4V-pGi~{+qiK&j0Wri6g{@T>KS1c zbUib=w?4&V#`bUffI<|)su9rpEVF-LYC2a8{^=qg`}cs$kZj6^>r;;Z3_P>}H$VUY z0YLz6CWr>F0C+F}00BV&If3J)il`wu#CEdm`AY21S!-pu~^IJLt7l64Y zDLg1OrJ-MbH}Ajxe>^J!Y7h|t98n=i6)A(F#1-h^0JnA!K|QesNBwA|FsGt$CAWa{ z425c}xnBSmI4lysELYv7-&C254E6j4ju?GBE0^Su1f7OQg|7YHkAD8Xw!q=z`2FBo z)xZE;0CqhYhxvG^jT1w_RjdV6VRqTWuYceohKqoMTS|n!vHtbRepWeQ@*(4o+2WBl-y5677iTe>B9fmi~amPiEka)BaS`wfd(FURt_MB#CgyF diff --git a/samples/h264SampleFrames/frame-0317.h264 b/samples/h264SampleFrames/frame-0317.h264 index 34b61a563a12b33f92039f1ff54777a553b0a8d8..b814ab621306aad0618f55fca324371261175a3f 100644 GIT binary patch literal 1199 zcmV;g1W@|`0003AFaQ7nL7D&>yakisV-gU@ftj&3;N;}C&hH=jegyE08H3Cv(N$%8BeQj7AhfrQLhfa7WBvcD3!_k;ilzyKfzpb85UyLdqXKAV64 z00azY5^L0Pj3i&wSsnmD03ZyZVO}ezgA)`1B^_4)03Z}}2NPN81XjVfng8Cv3;+ZU zEI-sD04GUs$_(OAL7{-zKp>cIj1h0&{DpuCos$ zrFLiF02l|*FI35S+M5s*pd)Ng)IKhLHrjrImLTI))n5FPy3IR(7K&S{&pFj*014*Zz z#RKexFUe1H%M7=nPnr0eXcg2a3P5d(lER;<5sVL`xP7Jw1|{q6_^Y{P@q23b;u z(%vuwC;)R*1o4~T3IGTzhA!X?D+E%jgpUV=Yc9^pAGicUstf>WHFiV;0QSo__q+fI zfDLvK*gPbCsPm#Xh=#{xIXaM}chg0m6}tcD0|2iy5wo}& zrT1_YcEj%b{$B~9z|}!$5Xbn0$UrDN6u^?HnNR)18t@PXYZcSxnIdNfACM$u8C(i* z5-x~99~M91sB>);Dn?|BH-{v6c|er|4H;~YfAIx#43GY@K|`GB?PeL?qD?> zk-^KSwQEN0OMmx(gg8>zr=C%TEw5NG{1E)XD}(|M2Q-%fB2w~lP}ss8)Bz5_0003& z0B$CL2Co2kFaQ7nK>#_4paHAE8;k$|0YLy2LTCVL@C7Pg@DL0H5RqX{00sLf(2v_d z1VPZ=VG>t>nApTJq5_aJz@4lKo)z?xqW zCXm_^6oDDkVo9s=|L_8>3C?4a3^F$qF3xK1`j}w@MdOB}RK3$8AzZ%+!m&|HR2QUnB^Hu-= literal 949 zcmV;m14{e=0003AFaQ7nL7G4syakisNeBc3D`{GEJA?8+1dF>6VgP^vD}l>=aE9LU z51>Y01|ow&!QiYH1qKiR8(FkP82Tdc2nuj1JkM4xLkT+X`+x|v9GdqA6h4rRsXzU| z=|BKMKvbjvY(G74r&IiY?*IcZ00;w*7>E28ijFdp=d+oE(u7h691#S0RZEQ3i$-1_aFkh5@y;p&2uuf`B-10&ai+00BV&ZYGch zuK;*30003&06B@I0jt0pi~s-uK>!s(X#i^Q1u9?g5DWwmkzpvV02e=OkkEqK9sn~6 z47mhrwE;1)h;>B=C?kPwtO$<_5uJeuJ3xU;;3Nltf(VX_V>kk0320Lbzw-$eBv-j$ z9qG@d^}g{lz`};@^Yu#mob`X70ZkBQ2H7}UoVxHrbI%yeiMaaqX&gB z1=K>ZWNg}oFU=9X_gkTi8X;SM%fxUaoB(hw6?<6?>ib_jD*|i;Ktv`K0jtt5o}j3y z@T*3kgg@5<4pw4}AbPwAs~rFggC;JkmL5K^G!@FrFp+-d5FHqbo7n(B832-mR)8HS>Xw=Y?SA!~}qW diff --git a/samples/h264SampleFrames/frame-0318.h264 b/samples/h264SampleFrames/frame-0318.h264 index d9632a8b952a2a24dcb2b501e36fd24cb98e6db6..df9a54adae5f1d07a13397aa1ee928b30da3e741 100644 GIT binary patch literal 1170 zcmV;D1a12O0003AFaQ7nL7E^Myakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|nB*vN4 zgzhRgpaTaP$ucM0>zq~oD?Aa_Wbwcb0Hh{}A3FC2Dy{D@C||W#lXGA(;KUJyKL9WX zq(I*+lz1gh?Em(OcmP1;?b=1h$L{{SVx0Hy#}(sh7j=o7>=NvohBju%#nXy2A1;+q&yC%gso z6|sN-fQb$O0s+8iB!59rtx3-T7~l{R*B5)ILJ84!00Jvt;0yp1P?b)n4&7p3c`*)M zwSWVI2vEP_E&ZY!bWKNi8OjZ&r2T-xm%KEcfJg~}2xq_n00w`A#I1$tS^<7w!$wfZuYfQLLJS3qrmDYsX|J&BLU01Ll85L4 zy{>ow0ssgAI4zdRj1Cd;!QgZK^T0tsl7m#`9cAQ$I;3kJd68fQ_J9wuo`BY)WncFe z01*HHKr_Gq>aZGwVNKWob^E{r01hU?`mlk)?1}nBV{)T1%xxfB=D503&!M z1|I+bASwVrZL~T-@8#*mw;o+R-~bpH8xoT023!q=*hyxBubCKRbQFLBfJa&|2$}1n zA*7dA?=Q@3QahOVfl$?Od@=?FKoB5UG*nVbR8MdJ1_a{&1pX=jfDlvw1z%`XJC&?v zF0T#%z)=MRoAX;|KiG=sE({=%9g_W`n+&HrGCls_00aO)1qv+?l3lG*8W+Vfm^5&H zFp4P+QRXCps4Th=<^Bv*76e9o#>FvQXYz|v+@Spc0Dw~r1!TKVbHF?+7Ty329Dw1% z0UWe-aHs&*Xb)Y%;f_k0@DgG05XeIl|MDREpZCB3hwz3zJ~2Z?drjtJi~wlx00afZ z6tKnubrxM&b)7nog#Q>DxKV(W)ypcdOcuC})*={fy`TUP0ssL9DF7Q^2l@>3fEU8Z zLF81r*ZvRw{38GX0H7!=$TQ&)cjjtVX@L-M1Umo#0YLz6CWr>F0C+F}00BV&Ifyeg*X5j>l}{8cmKKoAN77y-UEDcOl<<64nFT- ze;-D`2C_xQ;2A&`!5}|Fg@77^%)Z3Ehk#_u+I;`^cq!d+k)!>#0y)YAwbf6To>+m8c+hc@6uMWF5#T&gotZqHqcl*%rV-YyaQ? kiYZU5@0JGE*vy?lfAzH2RmHe>`_Fsc|Nk%K9PpeSKtu)O(f|Me literal 989 zcmV<310wtY0003AFaQ7nL7HG1yakiQfp~aQb~gY71Pl`yomypy272I@&prUbK+(5! z!`i!YMLR)5FaW8}MIf|=q0F^_8(u&VZB%)@0e}GjJN(|o6<|-e=QcJk2EFvT7ywdOH{k69ziV&xKn`1g01yZODIi+DnF5Cj3p6h` zykc^Qz9qp$*Vl>Gc2e z|J=9#ctGMDbXY@rgv?KCw~DCJ_$3k_34|0xGSf9@CY&00|*ipRk8wRnnnjvU_=smMH9d80g57vwDD6B9SEnmE}-xL0syB0 zg)WMqx%UP3gD|WE&;7t4;5jY|5s{rMpmszd#oh)mg-fHMkC8b>w}QvM004l9I+zQX z+gHkoiNvGGP^+dBE0gr|-Gy}Dkg%66cI1y~LD+Op9&UKQ@`;Yg4 z03Z?`i2=n#QY?GRE8@T2Krr9{AP}aF2TqT`-}p#YMg5=v2m$&4U!s( zX@F|*1t`EkKtl-@6yO2X$&NzO8UKC&n`tz9K(Awx8$r$Pf%om<{!0jNLa{&h^o;0TB0`PVE7pMA#(Q&rw&gJR-ApvIFV$PYy&IROmhN13EV zX}sr!;7u>jAl02kViNVobc~+uu$Ch!0*T5>PH~#2%r~Q8a*c#VYOJ>{s?`^le L|Ko5Dcuo$Wzn7p& diff --git a/samples/h264SampleFrames/frame-0319.h264 b/samples/h264SampleFrames/frame-0319.h264 index 5208db35770f92e348bb7c1db0553467f7f2261e..a35884cceed75bb3ddedb0c02c9b587dd443ed46 100644 GIT binary patch literal 1360 zcmV-W1+V%50003AFaQ7nL7G4syaj>3{+uWf-~z%h1Ar_vg)$%#3}blEdc6QlJ4aX+ zGqNKG;~DN){6m``{cQ@EYMuZH00saUbX`mb;Bz@M0XL4UJwyNk0Mk$i(Hv8OHT$ON z-I_pV|9}DrZ}pVstqy9|Q@;r35TY6_ouolV+f&0N7_bKID9&SpBMo%VV5k5ox1|6v zq|u6@(I=|pr?)eFg8*k3yOf5$MRNlm{tUnX5CZ@K0YCr{9{{pv0s!TJ6oJn-&Flxj z=}{j5C57Xo?u!4uyJjD!Dau>!@A-UGRLrrQ`>tpQ02h|Cl6-E@!U_?<06+yBv=Wn# z-tY?pS}l#u5NZFozyeSoZK`Jpf_r}AXaEEP7Nh`C zJCl~L{^BqoWcJXt-f=T!zy0c31RkeJdYvXbFPqxmYheJe03u)m1|5AS%yWArDBpuD zAhJu%Xko&lEkFIpfS@mSgwkMJ?G(5F_K*Mw0)d0KjL1lGnv5bCZ~edl#()w+@w_rF zGFDSQn7{qtBoU(_oIXYQrSkjZ4*&pwK3s!(L$~;8XYLsQ1Sr~NB$#5Vi;#cTM4>Vg zMu-3X%WM4E|NVmjeAoa83>1V40Rm4JTe2)5#=rnR00=_0#yO%{>VyWzyt47HdB6fhyV$I&cIRz6=Y`iJG=k^09ytCD3<}n z*xIF_ysmN300aR*2oa;Kgyf?lWM>6_v@T=22yEZlzmQ{hUnz0D(ad%sap>^~(!?_y@pc4uo{$h#aI-nT8wN;z6oC+sV7G*5k|pbxAw_|ha@mNCfBlN^00IH5*Z@g|z60qG z5dYnKY;V-+QoG53NOS-J0$3GufT(81-;6Nu0Bp=lib0QGAY%VoA*Ug8ncR;K#04-z z3;->ZIyLVx>$vP6mVhDH0003&0B$Cb2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM z@C7FU0TvYC0qEZ0eS)Nhd;mkKhgiiw0DNY^1CU|JU{AUqkl!!(9KYZtiUKk&2i71p zTxlX%-+;`an6^*=5D!rB#)#Oy^9Tq9fc5K`E^(g!@C4ZZyV;O(eeVQzDS~{;5`O6ljD*PH$P+yp zfE3gLLnFqT*NX3?+0P5Wn!rRvi3kOO!+1apxwrytyc+d*M-ivJ;HI}t)qBPz&kct< zd>!79aHb=A@K^1cP_O0%axhW{QHTxhu+kG2TpQ3ca1dxo3-jNgHlW~>bYS(|{^F28 z1U5>|rJW5Rh!SLKulQ5`+$G3}bV}Z_LR3xyR6tJ$R|TgGd{7ZCC1SDJc_D^#``8?d SY(cRL7X0AP=r6qRoE^ZbI8O8c literal 1251 zcmV<91RVPS0003AFaQ7nL7IRXyaj>3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxLL%|4%;s65indZO*!Tf+Q43K;cKsx|A0Pv0_#Te@&^JGH+06{P-(@^E}O&A%83UJA`4dr{wfA}xQ$m6?t-R6TA zv^Du{8l*LvP1sE^Rzijyb)TFFfQX$fBf}rL@MbNosr~-k05XuuDwA#T4L|PmfB--k z2*{MsZRc9^g@K=grWA*T86-YU`?F$@0PvNHh*K#{QWX9Hh$^k-i$~LI?XJfr00IF7 z>cOnBFnvN-j{$&7h{D(Jf~4&OIfi7$2t2pEN&e6<_>ATwu9ir<9H2?+J4o=)H?ua} z*op7}NNz(jivLkcd)48X1BNH)Ny3p@N(Ei(7zhYcGl9`nsMi^PyF=$=iUpCEv~*{u za2Z44@r2ND#c;e)|J?wcBoShqkjMB5HK);&X{p9GD?0((U<#%0ssnL>i{w4 za|S}E+P?q(cJZ(P5CQId( z01)ZGV5sRaeEx=29XaM@6yLH>OMl^C|F~oT0ssO6;%ZqqH~XP$C+{)ng#ZBp4y)P# zN!x{&ugpYFMX>I+zkmS35h$D%-86==hxFLb+zKx>nycaexHl*&{L<|yZDXDg1Q86$ zz;xfp?2HYBz$WkjMgT}f2^Et*`GtWega33jh)mmIM#*2q!s(Y5;2R1tzc%5n)aM z9*q49rX3_R-~n^xFzE$Z$W~bv4Af@Qgge(-mnBwiULor zz3~vPUl1!J1W_SuUbSH*O|M)DG7!hT^c<=16 zn(G>4Acw#1%lRInZGos5Z*5JpKc8>_dBR_o>m`5w{(%HrS^ZOyJwJZ11B%^C4-63Z N)(rlGa2|M04&dC}95es` diff --git a/samples/h264SampleFrames/frame-0320.h264 b/samples/h264SampleFrames/frame-0320.h264 index a403ee5cbd40d719215a0de7a8bb52f55f855897..2e4e859d34f94dd582b98e493e2fe10ff76dd065 100644 GIT binary patch literal 1131 zcmV-x1eEAFaQ7nL7HG1yak6a=;yjG;sQ93Mq@w$002NV0)p@m>%&2%o9|?~ zLRfkL3Sa;rArW{02nK>e0tg8zs2jk+6eV&;Op^1Z1d01iFM=3ub_!6=00<^39*ru$ zIKC4X01$toRDvI#U>X1>0L2JV>wUa7O-D2LfB;Yfih^yVr&AI0)YWih@`I%v5a0r$ z5&!+|hyp6;K*!9CyecjtCck-rF{6RagH=}oT51u%@BqQicp)@}ZE{)*1QKXKq+jrU zrl3LUM3<=&Ak8Re{*3?%-~b>9sD}VBL1we%wFV!qc8xiRyODroZfWWR z-;sa~58YTfV*nT?k-DTl@B|itHMiS_%Pl3_xlb@Bk_*gTWuvB)1V0_a&1(gv14@ zoh3d^_kaK(BfuE21#pEzH*hb~!u&wS;NSoV6;#9ka^f$4YXJhKrlC=4MxOrA0tN*k zr6zCDMtQ}bzyJsX48KQT>d-)!?f-B?g5JE2g(KFRvk)`AAsA$Fh9SZ{l3WZo^B}?8 zoGdt@(K{0^N}#Y8aTERdKnZ1FKRk5TNgXiRR4_?H1<)!Wk$GSO>;N_Vpa%f}!+BMW z76Z2#ga85rKmZ^?ir4@o968`Z>T3Fui8rDOf5B(WhyWSg0|prw{{0-N;u}3eggr$b zc!WRv9{>O#90ne?{3KU;B>bC1bIV`mN(%$B_kZv_0Yz2?1!R{UC@VDw-~qFW(*%Sm z$7mMBjg^2gcmT>3|&o zM~dl{gGbmDUF`g7>RaIaf~Wt%4^#jNp@0l9@U+UEEPW^A@8Ra42zCGf0YLz6CYT1V z0C+F}00BV&IfwORxo>a)UdCaeSmAQT5hrK6_5_x|1ol1tNhL~HfnN4LyXo%`Mkswau4&HZoL zhFO6VrjPxAtPP4okjM`IW{cdY0O|l5z}JCbpb6vYKm}1e;bN%|cmh|%is$^XU;B_z xnYjeuK4)&1fx51S-~oLX$B7r(p$e>ZRUK=a8#=6S;UBCpZSkr<|F!eNuz81!+Qa|= literal 909 zcmV;819JQT0003AFaQ7nL7Jc%yakbe2!;3%$AuF>hl?IyyZ|p?03Z+r5Y6sH$N18{ z|BSy300;;GK??-P)r2SXF$4HMZ~%FXs3c4#LyXF&yaW`HPbssfRe0x%i0xv>0h|yF zfC2^AI~onX!}$8Z5I_=iD^xKvlvRboW8OD8{}lgD0RVSkTL^a0F@ZHsegH_d2J`69 z0RR^L3lPyGzyJ^p9P|JHfN{mfnI$n|4952+O8_7UXN;w$B|S%v-@bq;!`2E{kUvZ|p>2PdoCMG)$}Gi8;FJIa z0R-97K~b%&8S)+i@D}*Qs$eY#`g#$Pgunm&aeszB8}PytcX00|hn6i(N@)1_Dd2m}E0a7fRz0099&DN;J)G3;64t9D;t zGCjrv;+(wzSYEC7`+&d$uwix=#dbh1OvIhQr5{P+q3Z}QXPgJXAVJBH%iav+LnYsM z4C4U731zDJ&)@IA!3UrK?;rpO1P}>Q@NhaHL&M;NAmf$A4oQbNlE?|t0Gpry00BV& zZYHP(uK;*30003&06B@O0jt0pi~s-uK>!s(YJh6+1tkFq780ib76R{YO(%0e0Y>a>Q7| ze)ur!SS^q?>iuj?32*KDB4v7m*mwooV8VV$zikLU0lZ)Uzz-~s??2FMHma0Zap3IIhm_KQF3fF84Ka77}-zbBossoq`4CZIktr`LfISAjSH je;3D*9o8~wmcyIALj~8~)syqF^o)v@08GM6x diff --git a/samples/h264SampleFrames/frame-0321.h264 b/samples/h264SampleFrames/frame-0321.h264 index ce5b1a3aac1b60c5a7999fb032cd3fdab174d990..e0a57fbc948203c37da4c2c53b3af48c198bf796 100644 GIT binary patch literal 1742 zcmV;<1~K^n0003AFaQ7nL7IRXyahKwV%OC4=KuZ>LM8wS3^*~&T&QJ95!Zz#q+SGD zY!blmDRsAoZ(pYGij{Q~p%?%-;SdH3AMPH7NR4Z2UEnY(2yB2Vag|Fn9cW|Nh-Y57 ztcJb?2+ z`uM4vKfy9@z!ND7BGTsK8l;AHnN@ z<)lIZ;#jBm{A>Ua0s=3ViEPVwIs+k405~y$6s0N=V$uoFC@FhE3Yo$Mc{cLX$(UW& z=G=7yu$iJK^e_&ESZTzivIPJxQU7=dim|~{arjRlj{G~jfB}XZVoT1!S)B*q0Ajm9 z3VN@d!~s-bWN11000*dXf*VyHR;b@~KA=GzP{JzXtV<#A05Iew&$gB0B1o!#_kbAy z3?X^L1-6jAZVI3JzytshaW+|CGSF1rIXD0$UIK`B)W56mQqUmvI!n~)GQog86n%yO z2UEZX1VoPVmk6wmegF;w1a+cvS<`F422nQ}C9>B=aG=gH zP%sn#Py>QU|E(HiVPhMR|Mv^RbDY$Io-b>$!vK;1HZ~#+KzUp9?f}Z53IfQ(8Yau3 zg3Z6U0e}u@Z`dKNFbY0k@Bl;JY83Fa0|0OEfC>pq$(|R8UNsZK_2qEz00aO;30u1H zfxOl(g(#QccKMSb#8h&u|IE_)pn5m(6#x#Pi@_x@sWkBTzZ(>(B`49HI{sU;rQ) zu7Df>ke0EcP)Dl_YO=uKUK^kmEBB@;x(0#(Bpw_A0Rdb+^}cclgN8{@Kw2q!4-gbF z5Rw`_5MS1vpA3<%gb{F8Fis+pyqy2!=i2lDK(uUeqpDqJwcp#o z0gdbmRkOFTJq7GoOc;73Ktd{&h79EZ4gcN@1b6{$)B}P-3nE5d`Z)c254ErOCV(FS z)wBu(2a&_bkvV*hU;rR+00IghIsgI(0374MMF0U!umHgVk0M+^&^}NF6F?vq2%>|b zI-U%6feWc?>Uwh|Fr#>JCjbNl2=tyQM}C7zukwus2w#G5pagPu!1%ReOyAuWd<;WR z7>^xVbGnT)|L_1HhF1_%j#XobR#0K)L`4P%SZ}6pkYI&oo)TDfCLWYK|8K3TZ$JPr z3U^p*6042J#yfaGGPn>{PMDLLOgFJuU%9s0Tb^aaN`cuBdfHI+3o=Z zMUUB?%VhILX#`PTn)CnP?-&CLzhE5xu~0c1p%4Ffb|f)&Zj+dc?=S(@0r&{hwpT%; ziHSTptj3Z@90QHd349V0)Eft?G=QOOGr*y@fB+yK1S&-#!8f!d^RtOf)956 z9cyf-_D}nJ>}bZ8%&E`*Z~}*_fWz37?e=)elm{amgy$foQU^mUqhZ5V!rQhp&HbmZ zJb?dTR7skL5dH5(0LMt&GxLAzJX;o2K`~pw{Gi+^f*4={?4g9c<~?^0$N6Xi9e@A; z0YLz6CZGnd0C+F}00BV&IfBf@bN(MR|-rmu$oA4i)(SZhv;h?t@@G!Mq8b z>f?#8%me^}pWzmDnqxoxw!xX<7!zU`kf7W$>*wFt4);$3>6felIz|WD0f!B)Cx;Ip z;7jyrEf4`QsCW!y6T+}2=pYta2#*8|g%LW8fR8>I*HC!RcD=Mx=im%LUJX(9(lJfN z@45s41ObU;6aetWADh5{0DwVlh5!KpkOC@gKqKA3mhcY4CLbrz_k1H-bdSD#O#=Yp k(8hGo(HgJ-wY6`dDgQ?Yn9An^b5NA3oNiwR4)enBdq6DdUH||9 literal 1367 zcmV-d1*rM}0003AFaQ7nL7KoCyaj+y00cH>cV>5HcXt2y0QLZ6I0P&p?g$w<`L4n$ z=o2vkDhmJufCMoh_iZdwz#jM+nZySL5l0K%Z(kYek@vO?2Wr#fe>hJ>3U~krup9z< z;c&{P&6WZ|UK2?6Q@#fD1-qO0%X@_w`s3DCQn7 zkcvSs``S)CAOirP-4dhxqTu`(QM@y_-2)*~stc9s7yzR(3n|oucQyMzlI3^6)mYe7 zc}+cD1((B7fv_+Ga3}+zkQ6K>QM5MqWdjJ5|Ft=Q3W6@d)|%MgyZ`|KP*ns3sI8YX zsX46d$Z4&h01yQLz&};MHt4vdfB--MKp+K#gNTRB;75$Q}K2o5?kVAyHw=)wR20AQcTnNj}$lhk&Tia!7b z!5Dj@ivq*jUznXc=0;*vIhBRwFQLpv4KYNTi(RvLWDHPLV?9-$&yLf801yi>C;(Av z<^M!;d)_N*BgDXuB`{fq*c> z3XQ6a@OZZZB`G*S3BVXPhQ_6`4gDBDe$W5}0YO12GAHH~=)gn27J2}1Mvh(^NjKz6 z>UbKGBLEufF~Wdk)6#AD02_gfYwTC(P4a`9{to|u06^#f1OsAZ8WuO6 z0%epG27&w#%7{_SFh!74 z!Tyi{2osppQg{Zj6-b=ffwO`%!8A#99GAex788ZU1;#)YH6Q=dYKj+jRzN=hVMX~XP8W^Znx-<@DRWgbN~PWK>%(hum-OHcrX9}0YLyc ziL3#uz#EJJ00BV&6+&wOYVZXjU+_Ex0Q?|WQ-BXinAH$+lD|L=A4!4x^cXaujyPMH zw@@Ez;nqk)fJUkC@XWc;@?flP1@l+K511Sk_}qix?|a>_%;XLbKg@U&9rDoPDt=%f z1Qh=S*yR0Esb8+?PagtoLlP7K-}^lcuV>#d3;U+d&j9FP&+`Jh0fhq@@er=?#7JA) zf+tLrSOkQGEe18=JTC%ie!5VAS>=a-IqpJ^&G?%$Oau4;AOHvffH0&!otq!* zm^8peD8FU^0Dw>jJTh1SkU%guqYM?bT=5!w*&x6Hh3dD~80P`t5D511erGs{YR^}O84gtI|5H#P z^&(5ui8mBj)jZ%w)652uM1TdFP#H&nm&J`VB{3lQ00_j2Qn8yUU77p<1_AUCigKe| zRiXw0YWx)d&;`orVFPBMJA@p706;VV1P6e1_^5p?t7Ik$3aS_Z-~qt!KQssx2{Q8l zTmy_6KRRhJWL77OV|kKhCizFX$N2!x01gdLFvi4DrYhs_1Tg}dOT>&QNK>T?01o&7 z5dffjv6o;_LLMh){|EmQY|WTz?xBol02hp*2o-V-5^1A$fDi~^af}!R-V#`F%zv$( zkQdjr{{+wgqyVBw0|1a^L>>&*aB^Y*0R(UW5M$`T01#CGe_je4xS#+aMgRf>z1RRm zH+%2&20=*yqb9H3zzNjK;t-G+`UEbfuc;~fIvlK1!N3rRKqZE>4s?QIPA7&Geg3fN zKmb5;(cA)rXeYk^o5~+o}^k2q4%t z01gfdX%G!KLWD#{DJnOA-T)vlQKMY50*I7(Ra;aTVv67Ye=thnfWbpq08zY;p&wSj22Z(9ufPHe)%|buF53yx`G$ThQwlHRM8%eG6md082f9go1c2ZX z0SvMH6|skn8IafIVQN`DR0cxL*6UGx0JJnVnAp zBJ3F{p#}Hs7-TpE9ykj+r|lU7F=`A4kUR94X8*vNWnhsBB_=2Sh#%q85t8QEU;mg8 zXlG7Igtn9?{;L22N0)zK1e4V$Qx u9BF)zm72X|6mS6!Y^)2H^JxT(%+}h=`~K1^AR-BOjL83f4F*Ohgy8zd{H?hF literal 1019 zcmVAUCav^f%Ik= zv;X4&071L}1Sx<3LYx2yCUnI67)y)^Yxp?aFi0N3^{)bXe?xFXBmg!H03jPhfNTR+ zJBR;&i~!023JdD0%=n16Og+B95W^HDmC|sKOu;_C7`T=I0svS51OPzDkCqeSRK73^ zgag<}6^ILr@CE?DFnWk^8A66HaC$+O-~jj-5lZ)<_~?^Csw_JizySaOT{KV&@T4vG z-WH%BAZr!+(xCA~>-g}6OOT5m(D5061q!+FU~IrG@Y{ll-<^a0i@%Le@emJtO0f3#L5O4{zwHWc#R1QF9-~`!s(Yk+F-1t4F*Ai@G6P5^!Q zp2!?3*Z^%`@|%DH8L#WK;BAPh^}&^xu}F6Rj0syj-9-~sZ{Ys{2smdBpdA@tJ7E?0 z9iAeA5_)XF+h#PK3|GwV0WSsinszn*eed`5i$(}-Q}+xapb`DW-+>C;CI9!IP!+&H z1PWU7%t-3}^K>XSNtkFFKq-sLC8R{`GBUh6I$@cwg48BXq5nsjl2wiBqX<~A(bzChf!*1vw0CrX{{SX(6lSES@`+;A+JFE+ zPz#Q*0FnNbHvni{2mSwg2Pwh@a?#dY|6ljE+cRu^RYTwb0??9-y1G0Ev|?W4|8jr; zzygZ3oZ!tdDk|6ZlO1VA0C*Z`%ubE_@3aR!HDdtrEMODfC5qU<06;{C0098tG!j3c zs8*!sfP`25s7)zl`qzI@L7D_2ZgK-9AsIv(>g-pZn03aAY zrTX_`L`|c&YW@$v11Q^sjda#iWHb}VGjO~o9jufRc)qd$KmkAkgUX_b0S`zSIl)i= zcm==!>N8Z5_4(FmGd*4(Q@8&w%xvU!5xK;vYCwJ(915TyK(Ya%vXWx5dw5_@ zFfl<9KED8D2(5%-0FagdTT({|GJy&K7a#-x1PD+NKsB`1|5EW@xHXGW_y60%Q9vV8 zrG(B%zpav@UsxCr&e3I01yyK-$^Qmmq@2|rRo;+czyD|e0svqND$_F5u1WZyd$0fi zAgBB=ZMEdrpZ@=Tbh`gCR2uE>U-#7d+L4%k2m>(y3&LCx9v$S{Kv(mrd?Y>%agI7Z6f|7$7kauK;*30003&06B@Q0jt0pi~s-uK>!s( zYXEBS1s?<8Kq3^t3N}*rYxrOk-UmWG*PsDo-6XmlOohAv2#*}!vUiA!pfk>v8i{sz z`~6ngdV#CET!tOXW9oBq-hqjX6VMV8Q?t2l>>5 z8Q|C88VZbf?Y{8I^N7j+!+@uSdW;J_x1w^e1_(d(256VljShK>J_KaBuOUDiJ215) zkk`5qLO}PvDyn<=;dm2ZcnA*)49(Mq1}?EgBl~OgBk%~1G8%iRG5N24>x{L#uPwwq zVvt-CP0!it5%2;aD8Af%{|LjVb&c=CfCFK`1W*$GUHCg2xPTQ0Z|AiHtuJ2xt=<27 wiGT;ONq(~XAODO53PCiL+?&P*KL2O~A`rLyJ2f4<&Aq+9-|3D21M|YLf2Q~qvj6}9 literal 1093 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 literal 1499 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 F`7fLud|dzl literal 1050 zcmV+#1m*hx0003AFaQ7nL7RXYyakUO6dDrtr46C}oB#yGv9W2cJ_{S*NeRabZ@~l9 z&;h^+R2}P%DASbV*d|{FB7;G};H(z~20#I8W`(zPMqUB}oC;3!<%_+9n|J-d1pFMD z_XQFxDX>YKG0=N$NiMygr@P;B2GA;z#kl z07G!xj37{&Jg^(s2nz!N9WKZXkJyO45mjA&xeLcc&xA>7hCu59up$ye6llUP!Wjpt ze?xFX2|xm{U;{eo;5HEoRMsE={xAmM1BUH1=48khM+$a+3?TwnRR#zSlO@lhRuI4d zKmq^)gN4Z+-_8y@{)PnG8wkcp-#egGH{=Z2#}hD=4zIoX91w~#;-8fSnDe;xt{VYCXvh3O28A4Zar?i~>bVCywDNlS-ndk02lb5I}gbk!JxkWG||&0|I7%!vM!s(ZUAcV1a|{K zEHFX<7v>bZDds2a03^N*#9~Qj-(x&mU6khrbNi?bK%nFtOa`)tc7U7)5@EypFn}na zm=*`Wf&dMW0JIC4W67c+3T+m?3_Y3#fJ6}E$d%~;?eWEy3-h*UCnomzAf=XAutXou z>=e6klM;{k6k|+5YKk;0{cSue0%?B`KEwot1p-dNnvK8S$BXO zQUh%;le7PxV}?ArxyFOol7!(O_{-;U+x~H-QQO1#6JTfr1PB1>MX6&84kVBIs)WRB zG99l51dnea#FerJ6Zf+S2ovCgSud8ZL;Kf*8(iXK_6UlQc{y#r$3V*fEQCMMumb=K zAgW*LJD`9EYjpL#|Na06(Kn=x=|9#9xeOT;gpxe`*a6Sy>?Thh^WFFTx3~Ym5=fYC UTpIaVeaTM#m;CUrfjs;Okem{@!~g&Q diff --git a/samples/h264SampleFrames/frame-0328.h264 b/samples/h264SampleFrames/frame-0328.h264 index 49fb569173fb7a2987003fd5739051a23d513bc9..f4cceeb180a75b7d43de29500aadca0ebebe3239 100644 GIT binary patch literal 1457 zcmV;i1y1?^0003AFaQ7nL7G4syagX9Sb4gDSRUU5k-(SaR%-Yox0palL~_TQs0D%U z@!%i=G5P@utL^qq&;h{8U;&0Q8NX%oy0GxiGhhf{9HH7!$}UAuoMQk2k{c0JwxUsu zjS4;mryu|j9RLRH&})x3h8VG>pIBwJo0zVBb@OgIo5)s(pZ)^}K?{%tRx+tZgRG3~ zL^H2ke1yKhkN^+~6+#XSHM11fitM>RzzYnHBK^(8HA_co0098NT4jJ5FR~@z7ZQPI zf82wG7OKw@2l|md6UbWI z0h(Wm%z1?HZ2<>YL;ShRhS0n<)QKlGg&!KI3G&W*!7Rbi1p5>#1%)O64e$=H;BY8B zjvmAb#-D4~|Ck6H=Ry`#0PX`G6#Q5=K+Xh@gON+=s3yDr@O}aSIyL~qpeJ1rz8fs* zv>r;9F2X3RlorvzNd0?yjDt*a1|7`kvp@*-0UVb|8rjW#NVnh&ssNxYj3KQPZP0-t zZyF2&^j!!5(7tqgD6O7q6!5eL0H5Ii6cUc!zcLz&Fq6C#%s&7K3>VUSYq50M;Wlah z55NXdHy$Oj*F|uU)-g+k;W(>Qp{9%4pcDX51Ba3S+%(9-#y2DX?*UK%>Il3NQp%N2 z4~=7n0VDuyY(yG>^0(*SC;$_H13a(>JH~-`#%Va<1^_9czhIWMz$p21zysd*c!lE8 zJTIPCL5IKq2mpu@w|V0Od8}BJOY{HS00tnt@+lXyJhc#O^}b}taTOe{tI|JLs-OQ8 z7)1uqFEc}DQXde0S`Y{?83P4CD9}m)GGa0kQX3dE_sRxvAoVqUNlVGl3}A^QGXo6~ zKDjUiOahOE=8!=mn`Q0TfWb3qo&vxQEZks=ouGPFN=U=;Fkk@4n!s3f*L12x@74?u ztkc3v52VAghdeNad5b}0P3wv;|Lp((z;n98Se0CEJ~7w_!wI&u*T47v{at^V0YR?b z<=6ebwyCiEAQ@Z;DthiZ}4*zVWh1j-l{%s`lTI=I6D6YTIM@Jvnt z42v7HJC@4kOxo}O1OvE z|1bg80r&{hwpT%;iHQIJ0|5kBaZvar@h|`o1P2Qy9ofMrC23P-gAX+GUwTJFK>#7h z0003&0B$Cb2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM@DE$SoD2*iRsaEv#6ui+ z+YTVp*|!dZf~g@nU{NpX!G|vdMj((bWvfCnH)>YJND0t10^vfq0=sf?=o@*~;EIL6 z=+60>CaqbHEaRXOx2)&knhR0hK!^Ki0VQvt0wW|@pZOTdkbdy?LL@~MA*qvJ6>JE! zQXI7|;C{9(zQKpKU^D`u`z3$|x)cGxx|_bw0LvjxI@(XyY~A<&{QZHx*x5}R^KhI=_m2l((YPQ0AQ3PM z>6wnW0+`t*90%qF&;SW`0XMT#vLv`*D#CmHq{FC{bmq7I*7u!-h(aIwKjQq)G4)js Lc!$Ko;eeEYMfQkP literal 1199 zcmV;g1W@|`0003AFaQ7nL7Si&yakiQfp}0-00;;eCNny;N)QY2(LLTUxB$UG(U-LL zw!9Kb&`izv095B9kXTbt<+}hjynrCOshhw+03Zi%uD}8SMJ_tK0s-_168XTO69y2; zfdJnS5C9-%0Y2fJ*wC~Z_tMb70+PYM2WlPrTYstma9jWYfItCB0$253C~%;oLlb+< zPEi-nU{Q7T;!l8}03ZaR#sX=|)bK38MFfy0OK`yeQ6Kn&`b6yd6~}RHzyJsW0D$oh zI3{w~CUnSd;YWDDEC2!kBtbF&gJ1w48|CFQ0E@sL0)fP~L@4Q_0Jh+oNj`%E@B=_q z=z_yYVL~q5fr^%(0f!tE;>dEo;P$z%JU{?I0)^GM{0dmp^~=Blus`qu1O*{wsdb{U zW5H~111JbAAO5wNnW!fa(<0pP&HyOUHZ08Sn2?aAz+mjDPX+KNa^(OEP;&l&gNp?s zpa7Z)Ucx4-yM6&UC^Mh)ku4sG(d+35z8L7kC1<+DuvZxUh+qF-?q)`VVMtzaDB%Jq z0Sz#Lp-Y6;Q>W4Y%f`n~{17;Y9T-3R3z834?-kLd@Jb{;69zzxKxAjY7yt+Zx`0we z8Hu3*Tl;9R7`Va6JFMz=t_@fH@B|2TK*9utmTZ8TrjdcxSP?{;K}7HSfM)_>;+`sK zY$BfAx`Y3400ID~0fZ`wpt<)2_k%F71JC`yLBJs{3lNc=E2wrxBE{YeLyZKZp>L5n zLbrm)z5oD#h&r4LnA=y%35rCcxa2f?FfBZQu)ZQ9h3ZKrU;`f*z>p5s*c3h}#Nb7` z!C+#6y!Tlwzq!8f00aU-V6YraMH1(|u(nHm@&Lks0DwYRfuPyZ_#2>vg=Ad-06-7$ z0{}1&Ih#`SVpj&I_aXs~AOLWY2hN3$0ljbwAOzh200BV&ZYJmkuK;*30003&06B@e z0jt0pi~s-uK>!s(Zh&g=4_m;T3=C`l5)If!B=_qFD9Y%0cWqf>kPZ)$kCDX@o5wybs#ne*eJ3+`woB zL-2$EGMoWGyqEs~^nvm$DDqkxyZS(ZgfKY6(1srVnn*?V2yagr8>qlfv*Z43d<`n>CRpyB@vq=C11QDL| zVL%9FSpW`7s%Tq(`r$e?Fh7}Bi4&fm#9?R}>9D$FXFLAwqr{kqfCCs*VAO+R){ou* z5T~fbVJEC2`v^Jz{l^I;;Vb|zfP3C}0woGlH#ua8&vj-);0Pnhy?<*8?4|$y4scSc z9RFX>2*8@2garY|#2!nDm>AwH@z}%T%8;!mO_$G>#ad1=lu0Q}F9e^*} zW@0b{V`j-1I2R{?l>h)h8*~9H`f(cZ5jVvE?G69%7{jPasg&OT+MaB1*hVS;!{4)b N*Qr(2Ly3h$0V&ku5XJxi diff --git a/samples/h264SampleFrames/frame-0329.h264 b/samples/h264SampleFrames/frame-0329.h264 index aaa8c5e8435b2a9c83fdfe9e83467c742c83c3c6..87e131ebb12b98a9cb3ae2cd043d4d120e7dc7b1 100644 GIT binary patch literal 1254 zcmVd}}73t#|=1}20Jx0;zr4~IS1 ztTey?Z~_li!BZ9Dqjs{r+a`DZl{;=MbVAEuEx6 zM%z=vBp9#;?I_M;gCh-e!vFw43;+ZL002OI0?C{R1C{_%2Rz?5upa}ZM0^02Ck-7s zcm4I-F#S1BQr}DBqNZhx<<4;C04>Hh5G2aexKDd)29&E(z`XmVf|2A?|<*Cva;O|J+6d48FP+ zxd)RvTmRmrp#PS@c22sTCF*pT@V0YAhSKrW zmG}3FumEj$03$~ofdST<8A0BZ9woL#5=z_uc7@LkvCt#QDG&YtNL9GPnmwMVQAS-$ zf&(Do$ZU||)0H9`R)2T^0s!uSz*SNST`Hc%*PeIy00IF#0U?Y8Dpt{@OO8*d07pZR z0c28W1)JUPgZLaCsJ=_kP8RUVe6RpXG8luuGp3I7)Ew2qh>u zeUpjED?3)EUksuBVc`a@Vk5ZmLg<0R&4Lj&`VV{*01(arcn|Kvwsflo_BK=iDY}?^ zgmd$F00IH$JOD|vg-%H8E8ju$s2NR23M#l+oZpX%lm_@yz#|4Yi8!Jn_TTyY{K7$k z-al$c`NPCXV#kB#A~FB?uK)lb8jXMim|NgBkn^AWuWgO`ok~)?OaUR#00aqORn7vT zn;U*I^FVw68#5B(kYm@#7{AttX~!s(X@F|*4^e->;0gfD3PM}FR~DEtWr z&FnfU6+ipD39ADzBrzZdL1Td?0$2?_0(w6J2=d{|Z>fCY4yZ_g0K*@s(E1Lq|I%y6 zRekBE5m%fmRyMsDDnZBq%8b#r&zIl`OPGsp_=rz0klHGV3jr+9O6wr=>0i%_=euBQ zVM(GnMJUI=Sxwk5%RD>{2pCe>$qsa)Ug~&W1jppSfXF4o;>g$z2R<7y$J7Ddtbz01Mg9qkG-zi_McXn!QQbm}+?d3t*u$ zIs&g3LWlrcBaMKVamjg}v9DwyIuWcuOv6Qd!~Fm21|E1`1nNQ}76YJgw?NR~Ynyg? QvHyRbP+%h96@2~zR>uw~Gynhq literal 1163 zcmV;61a$iV0003AFaQ7nL7TuDyaj>$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6nU;xA*xF1_Prap0USpXI>0jTgS;N zV6u9>!vPTI7{aps<}-WzF02>-u^&X6#N|!lL-VJFc&aJN+eSN4++RtLy7BRRJQm5h&u1@4NWPz_uFfb zzyw6v4D(0Gn#Hdh0Kgk!F!uQ{A}nYzSVN|`V7C}#nf}li7nFq%q+T@9wmCqW@XF2p zKmmX->;Mu4@F*xML*#py3W)#OH!hH3UTGyh@F+k4D526L16M4}LUDt%;QRm?G-v<> z670Zsy%4vH zfdILPMOz|NWP{f4-ZAKh009FItK0x2Msp&kugpYFMX>I+OW*(q0fHH5ya^*tCCzBA znT%WUukN#Ly+8K`I*s0;2ua3{oxy-6FwH>WAZB)^>yOH)d@rC0x&QzHK>%(h@CL5{ zcrX9}0YLyciM#=;z#EJJ00BV&6+&+SYVZ$J1Ar(4FfbMp-~#5>SWw`?e?P$s#~=o3 z--t&-<)Pj%@G=7db3g!W2|%a`0R-S7KH=V^zb)@M*AIUJ8ha-=5U1_z3xJ@b_$)eS zh0Sum-~ad%Rt8`|Vn780u)yHU#)IlIg0v2T6wtQ4^Zt5YI6+x4A^-!6htZ+-3a{VO zj(FW)*aYB;>M10=CTNcsAnL*8ZL(Kq|K#3)2yL(IYrY~8%i{+UV1hzIfGcn(ujC7U zw)`7$=eNL?;8P@GoO6!<*Im5c!9bL|-{}Sgr7g?UI>-#a^zf_+k063zdNj$|+TPR{ zb*Gdd6v7wkyvt}1?tKDAQkST72!H+93hPa)qyP8-SvHPqPEMh_HF*jA&|CPo=5pBB0byG-wNQN60If5llzaC3i4)^8G3NU0 zOaO*$_ebyl{xk(aqR_Uf`O5qcM7qCX3O|_F#PT8nLK(a42xKAA7@4Bd|Mi0pJSzfq dArKu92k0C%)O_GEPd>-`+in^R{)U7f0WHn33ZVc1 diff --git a/samples/h264SampleFrames/frame-0330.h264 b/samples/h264SampleFrames/frame-0330.h264 index af1fce08f3e581bc77489ca083187ec9261c7d8f..2db6604f1923d04d851ccf1ba5567e322222ea80 100644 GIT binary patch literal 1457 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 Ov^aSlE;sq&;5ne(qR1rx literal 1413 zcmV;01$z1b0003AFaQ7nL7D&>yaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`L0eYF&+$9KmZ&71ONaF0Vete8E-4Zzzs{F$+SA4P)e|jq$BNBuM803Z>F%5 z?-aX2K>1GqU;wA2CG-v@1_6hQfGPj@4RFJF?A*3ddw1Xz013>11On<_*)U&g9{;>x zB917W22xk?e3d<;fDJ=CTOcWMdN^MLFT62YNxV}9^;8@!#{&)?pauX8-O>Z1Rbe@( zzkmS%1_K5*RT@soL@j}f(k~7{%Y0@*BGJY^HBVod>Fu`L^chLp*r1wWrvBf+OaOo( zPQ?J7(dwA8@8IA7<6sepSUe-^;l`$x_3hCR00?b$Y)o- zfCdyNg<)k@wVc}1|NIyLX4`zGyRx$!bLpXm7(hKeKFnF=5f^xBGiTc z00;nMphg=%+4RV|NDi!E$YC0?3K7JwyZ`|K5JH3wW8qny8i?v2f{-TZ0bn5@k|l@= zzb97bz5qY~KsX(m3T;vSBIZitVGsFUoix?p0M0|Ndzg$%ZeH5&#GQ0stU}N+$wH(~5IiDgX`u0svqjtlu_A_QTx%|Nrne zC>6dfdG7zUxYIFzVZA1Ph*_$xc z-Fb}To|`OA|D4O8|GWSM0K%+03vmzmd<+I+Y&;j%^m0DyP^ z2nm1(hvmEh2L(V0&c)Pym@XAnif6+pvi}f*6NF$x%ZC{CAj<~4edACGW}}*g;0Q5@ zSDOzBBvK;`wmz#k7!X8j1;7V?M~D~XJ`LaeAAle=bA#QdaV5#7zhh1b%si>+6uuyI zEenVXjQGZ(eLj(VP@Y?1A-wPa!<^S*4}d6nw(S&c;|PTnG{$1zysrT$U;rQj$oc|< zue!CWLLU*30KHBfNlg)`@UegZvB(n1V#k*fM)v4(AXZoN&wJefW2Q$b+noTEd>9RM7H zDiHjXaG;AVME0!DDSigtcu7p5xaN2sqT|ShJ{Sbz|FNv05&#Nrrg)LhtjkDiAQ#34 z+(I(OzWIZIA~hi#sUC<(jRPW0R(0MX0AbH>z9X=ic;5eEQ~MQO^4~@@Q1GXLx*F-} zlvXwWUj?7HJybY$`**jbjRBVl=43*fus(LnHVuS#`3QIf00aP512m_FU`;Qe)JJ2& zkaE%Gov&}Wm}A_QOnb&N8xFxwyd6_l-2K3Ug1A5zIfXe~thF3qSxsI$i+OuwVcUp|H2Sul-n@ TJINLY1$i(3;hMGo&l3U7LJDOk diff --git a/samples/h264SampleFrames/frame-0332.h264 b/samples/h264SampleFrames/frame-0332.h264 index eb4611cd6fdc8331304fd4dc3ab09ea08f8040aa..ec66ae4e5e524116135d79b6deda7df7e7491288 100644 GIT binary patch literal 1034 zcmV+l1ois>0003AFaQ7nL7KoCyagvHKn!>v%{|+2XuMAk!*qHS(DJBMCK33e@uA?= zi3|Yv@fnki(DIO+egY1z3VH&*29lH^k1O>>Dx)vQhya(6N6b=;b9!ZvI-~f9;Km`Q6fd*>q1owl0 zEQ-Ja*)RYi0YLY~jkG5*Aou_X#GT5-Y^8Q(-~ccWp~$C3xVr=m1l9iVTmwKCE2(6S znt=Whd;kD|XaEQg0POKlMLjEGCJG98*a6%CI35S+ff9iu)#d=W1sF7Xbkab`s7)5f z6C}-Oa*uQR0L}mo4Now}#8IX!+3y4~0-8(2j3`J`r3(NL_y7oiP(9eouq-7H6Se1cPcI_-3{p;vfJJDF6Wid_sT$(EN9Tj)MRJ0x$p&AM7#!5e?k`Kr#yO8a8f1 z_5ezzRS<-rz?^JA$Nxf0fC6H2kgO{V2}c|>L@)%(3n>CaPfBbxL?XDAJP6~QA5uZYaCMEAA%p4C2)X2;O5fcB1&LPN-fV1H2_1f0003& z0B$C*2Co2kFaQ7nK>#_4tO2XQ8;k$|0YLy2LTdnO@C>@ZummFvfDh}h?fkt3uRADc z{)`I%KpZ20T~ah40MAcL{(?hAbT)_ffWu zMcl$2z<=KkgKaqLe)M#I48Q$f3ae0^QPtL71SU(fiIM;DfCAbSmyIOArQQZmBv)-n zRtnGWRzZaqs6)yrWjle!`A>fECYSo>6d?hJ>kOtL!6pL{gLeR6LR7?X20$2eN(9Hl z#t*gY1|0C7UlJ3jj7Ufnq_m(d&AY?y46FeIYgdN^K0&OZ=sn{zi6XoARp3o8|3n)D zW@JkpPD=m({l(5D`Ft12RR|6QIHXD@BOhM+0hYrnz_5Xzm-xhgrW3c-Ld}rpegQLqJpO(I Eo_%kiqyPW_ literal 834 zcmV-I1HJqJ0003AFaQ7nL7E^Myak6RgsK2Ip8`pOPzYIWLFftq61XWX;{>(OHiN&W z+MpI@4~@V92A}}|pv0+Hb;ymjx%?x59smIVASfV3J(1Lc$vA}?)m|E$00aq!Qc?n9 z)=#$G5+nElfElC6Ve(G{K)oi}z?o1nmHq($hyu}-A|qS~bG1W{00s|%P1yxWfS3l8%o6|jWs%yh@8C}_@%Tg$1fT(6U;sf8gW%i{j4Lg|hInAB z0VaN`@SrL+(*jbc0vJOc8mb2t0Z@5&En%$rx<=*gSgUi)IAvWg3zyIh400ICt@ecTxSI@Y=2vOXAYEI@G-Jf~W08I;UZ z)SgNI08P*U00BV&ZYGEZuK;*30003&06B@G0jt0pi~s-uK>!s(Xn<<)47$Lu1S1N7 z3+B>qOFgs{jnfo%bFG132m^(13bL5_AO!pSs_=lyaiMc38o=nHx@0ggu-D=U4TjG7 z#;U!)0^kq_#fFOI+`u6F?|#ZaRO)HK@NBcl%0?7(X z#+Sgw-Ud)4S4l`#3h(b$L4_M3w}&3sQp!5Qp=o*!YN$RC%3*Ql(< ztM`F4zy3k6HeyLjcS&CUu$sx_z8$Wi0l-FCNDIh>3Sa&Y3SzTFrOy3eqe$o(L_c3$ zhNFTzZ9#_sHwG6k@!lS8=mbJ)2;u$gBlVJP;ZPlb1DFl4WnO_{2hW%F>?f4^Nf8P^ Md;S~==kxF!@E9~;h5!Hn diff --git a/samples/h264SampleFrames/frame-0333.h264 b/samples/h264SampleFrames/frame-0333.h264 index 46673f75942ff23bbf3098647794d0d8cd1853af..cd104835048daaabc5ccbb53f9d90e2d7bf21d76 100644 GIT binary patch literal 1314 zcmV+-1>O1p0003AFaQ7nL7LziyakUiQHkiK|H2?51$Y2BaL53Fkk9b=I!t?KWZ(cy zqGL?zLRUFG02nCFQIQ_!T-vYkS>YGRo;U%(6omc<&c2LRTgfmeXVq7ecQ1nC2w+Jl zIRs-MLM1tgQg%0n3kHj5EVum#2-Q6_>(GV;C)zj}BR)LoxbR{11dM2aWr{AP6iOBxL6L$+Lt~W(OeP0Hy!}17Ls^^qpWAI0W$x z5^CrK5rS&LO&j9G+*4pDm-WQ4TNnTc2$0|aARGpQNAwj6)SU1Ug$yp{n_&|nq`n~l z0Ts=o;0OQ&1Z7GAh=AXEHw9&3in>4mI536@?ULVId#;G6?*kPlS?NCDFs1V{6(9qF z0HXR$a?h8%3?<;@&<~~*7D_2ZV{ry#sIv(>fGL=M00aXE^uJ#0NQty|?O(z80A(9+ zk*}P}Y=(k)296hm;abT-Cy(nd00BS;2bV|W1U({wlbe+I1wa7m3d|H^3z=7hLR!#p z0W1I)92El43Zwn^iU0usCjbEeB254gN6!ILK@N-@05AYiCed)WG|&(xWJmxK_qE{; zfjW*K;tb$thu{DR1B@Ei{E&eztQ$hCW{JQ67=!P~sBX>k6iA2dzS%MlBc0TDj1_y8tGGCCZ=1@{^x z*kB1Lpb@Fk!e-=O*2zIHtPBihXtL*ms!s(Yk+F-3ORr9CjlVA2mq!u6D*dwjlKX5eA4p}E<3jndihPfX8=(D z|JW3Oh%A9n`A&*RbaVg+$P6ZXRPij4Reb(*2U>}r_JCS3GOk{xtGo(a`ujik{Ck`% zvuT5c(fkb&kfy*KBK8Ts`ngI!3rAwrXgqTXec(f)9=z05Z$m86TVgKbJAq zF<1FN?~S!RUU?)*^~@M>U~R-PlSlpx*Z@ERFbgi15eoen%)tPlcx2YD1KWwMs6F6* z@k?;*v5)`#P&dlx44mK?Y4k+Kh_x=ka#%CjO6on>po-#jd*_80quv}6l*fq5 z)lp&asS^BANqXStgiiD>jjk6z*td@<32C1<-D zV6G8zj!Zq<+{}#)g&}x{ql5^c1T5kOg)S3WPM=5rA0^=MK;jy7U_*Lz%ug%#3aHZ^ zgy;w>W-ERG06;`RARw|@(%~5?XbcSx?HD)}!3$9fw2JNT)&f9~>EqCOCcVMn2go}d zKhAtfe{cPq00VFs=aZw8p>k$|oBjY{f)0)@tn?_l;S1CvA3);HSJS#Zu zya~ndECB(KLGi<&13r}88#dqp{c{~-6@QUiakmbt`%+0iZw4GNJ0XmmU)BuR01yC- z0?VbuLcc~cFhD3IGD@I&qzAP12e3c!Pf&JP$N&DQE#*MTP63CnA^670?7f06ux0X< z-1lOFD~-|bo)v*LfnW&&VE~{4*B_7w0)OCt`+Q)Himu`K0C~uk-WyVpkJf-xQ-+@x zBcKP(HYLdDse`lhwhNd-k6_JCVpsZ`85S??<%k7}KJRce#9S+VSqc09e>~MfHYbyr}18vBuy39{7fPo`~q)AH^mPC diff --git a/samples/h264SampleFrames/frame-0334.h264 b/samples/h264SampleFrames/frame-0334.h264 index 1c0a29c810e0815bd9c6d30626ad4675321a0b95..ff44a87a9ee700db184cfd7dfdc6dc14553b8d85 100644 GIT binary patch literal 1448 zcmV;Z1y}k20003AFaQ7nL7M;?yaj@hh!it`1A+>kLbk3+(j5QxtN4C^5D9nJKQEf& zB4Y%2WC(-oM$ft&4B-Tviluw}=QKCk0O4P5pJzS)J3(hUyh77XQ%hu`T=0}ru;S!C-3c{Kgt zJl8-zt}&yaqBuw+U*U^r@Bd!>b96v~euXOY`^*3V1MmP4dH?|nPyi4LOyK|q0sMiK zTwp*kv$z5j-T)fBM<8@c4*sPF-DzyO5@<`cssJ@=*YQByL;Mp;(BX^g9IVweHk zSuxqS^WOdtEl5xR5DQh!;A+G_|8Rkph6R`9F1ZAW6~+GyitrEu8bCb54*KPGCfVoy z;{XCs54QI?17N<%+D1SCARy@g1snMg#eVk)z<|j{;P%QAWJPEHfSg~Tm@a`dNFK-d z0>BUs2coE400d7X00Iq!YU@&^CC)W$@Bjn_KmkEA+W81L$wy2#Vk6K9I0nrj@?5kP zMiYi$#XJE69?*NhMX7~(unY|>rr>XYU;>MoFv;(wChc&v29u%>()7FUW&j8hU?qS9 zreG*@{~y`_0RS)n5C{U1O6mh`cbrxG`}h%nKt&)^K0u2EWgZW}0U^LRG7;lkKE=xm zd>`uVIg@Ar1U5eKHMPM^3T~>LC58Y9hU5_*_xlWE-oQ$o|1XLJXf6r?s9-)azs(f@ zIufx+Dzz@9-|w_QU_>`KTCIDi^8eZ-0ALF?fG|&N8ST%%yhdOEAOe>-0FMk6fiXMH z1}L<5rrRRu@@Zdx?$DHYRbx<5C77rG03p+uDVfS{QdYkf<9 zyZ`|J*FZ1`s)5WWT7-R&o7aE<5D!oR7~pc|?HW|rQhvk$1T8H<*Oy2TBf zP1M8WAy3WV00;_-+66{!Jvu9_w{Rpi7e;gY2rKNt?H`Ydi2=S8fe=g(JfOW3NZq4k z>98anPuKZ~jDP-afB+yW#6SSlvS1fTAVcqU=Gfo3zO}95Uc%#z#Y#Aim>7oB0_Ctfo2?M6F4NM%aL+;eZ9QLD1fwVJ+C~AAlj)0003&0B$D0 z2Co2kFaQ7nK>#_4umP*U8;k$|0YLy2LTmtP@Cq})pah{oP5>-kNPjVy6yMMQ@4H6# z*d$lm+uy-~d5xJ*gS!Hd5(Gj<$5N8^>{!n^;AzGnBTjOC;7|fEP6WHWINd#`RsZrI z>bMFuKnI@n6Av$xk%s^@_iG?APZPqhCYQjZ1jLxuBw$(qvoZ!V(0)#-h`ybR11f`; z9{XxX0Uv$W|M&dzr3r-H&lx!~f%k8o7t8#&5GW~$5k`yJ8Xy252!Ic{KrNu5Hz+^8 z02tf4?f?J#8FOZ4^G^!kO-M#SfFLKD`=v)az!ermmBB<`?~uW3wN)R(n)rc+4u+`h zS!IwLW&X?LM2`mj;sl7m8M)*}@c|t}J&8P0P{kitv%h8z1hqf?L5H3ffjItt0Xcv( CKXJzZ literal 1316 zcmV+<1>5=n0003AFaQ7nL7HG1yaj>$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIxr{s|A^?akBraluGO@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAj1@BwS4o4E>(9PXMhX< zR-ip~HppG$Lq_-h@TfW9c!@}kj4a%pX%ZPYU_i|VgpbP6Vqh|VL16!-{6;tw#z1>d zMv(HN1H`}pUQCgN_k*CPNC8>ll+8v<($(5|0Vt&@ zfNjqRX|V(7$mfHfnbt&UzzAY+lmdTgusHu!pZ0(t5e+a0jz^n=_D}?0uam}b2F=wT z28O6(#t@g%C;dQr{r4m#>cmP<)3DPv`rhzVr%HM6mLZvu4 zHdq$Oiq$>Swm0fkcToHQ1OURQI}4Ey`FsopVr-jc004k^00;?y0z%(hmjdhjR# z7$E{*UL02L2Cu$C{dGaNv+@JC0JGJUvCglQrW^rJ-J$`G+w}0P38nBU0Wl^ui5L`s zATzMAL+Qwb@?jJ_>{tx01ui}9=k%-XgLQqs<>;jZK{s>3*;yVeDSPLIa{n#F3JPTe zDADB6VgLdF(SRS#0Tvb}Qi7fE0LHHF=l}ZimwPj*PYU=GRM`Rm<5}A!J#T>sn6!w- zwEuf}8Wm}@iB7`5<)sijoh*Y!ACt;fCGMYI!m=V~_Q9XtAV`b>o1R2&U=igEz92R! au|*DlRrL9oFxJEW+y)+aRs`eu_yp#s<3v#a diff --git a/samples/h264SampleFrames/frame-0335.h264 b/samples/h264SampleFrames/frame-0335.h264 index bd56ad43224cf7fa77014c9297902b49e31f4705..fdc175008939ac2d38d8ddbfacabffc47580d8a6 100644 GIT binary patch literal 1564 zcmV+%2IKhv0003AFaQ7nL7N~NyahKfNu~mhfkkotNaZ46y8$f&bOn=^GE(~HlocNj zo8cb9E*2Z56##D%2*N%96Uy7tn}$^C_X97~3bkcH00X8O|NZ7+ z0A)=K8c68t;{$?%|GZ!ZG+-F$61w;k(_p>_fCB=GMDnT)-a>8<1+wT~tbb2J$RIvW zaES1A@jW^XI?xAbigK4MdD{sZHJU_Y#*asxj+EQ zbITtCstz!l3l8y5TKpy$0LWLa@ z=3p-~@ZJC$004kU00;&Eq}0m*W#2Q7zkhfN5P=6RBN_4p+9xRRei|qMEmpuN1`c|S zS=d3yU<|L%6M@t*EDnk8tQ@d_0Rw3qu4C^25H166C~$z9Zz)s4zW@SZL&YM7?<{NO zD;*{e^jgT~OvnHPKR)mp+TiC0J5|IJbl@o=!jbZ%6Zb#>2mt%A05BjXOB+K%H-xGH z8m}M{50!Hog~fJcB9y|bl0#e*+SlkP1<)}8sAs?cE;@mr%2kT3)KpUR#(&VG5FaLP z&01c(009A703qN8c&0-5csbtMOetG%Z~z1is^9>o#m|5HU<3}fiPj}OLsxsdz%V&a zGv`u@F(Q>`fB+B*8Gf$6)u4f7ZU1mVLFF$2GU)fOEJaT*NFfMP4mku2K}9??C?Cv6 z0=xLIQK45iDrBYswgGa{t@q6U6Ux9U9u-#9O{NW%K?6)4Gvgx)mxB5VfFbm^KrUba zYxzJ20Dvs^RpA3LY|XUBKmZUf009GSR{#LeE^~k(+jdX>OJ)cJY*SDWKH)g|H&k3+ z8jhZOI}W?V$Z-J;JzN;96~A1C;gqQ^IFuv=2%iJ~rd|M# z5rD77%4-lJ0uP59^B_Pudx8W!UjH@@s&$Bw2>JQ=00IGk7!`$7uvErn`ny0#I2&Wk zOaiq$U?Av09y<`O;th*X;DUIgEx4!ugWv!J1b|?cJK=*oR4w#D5vPH#Ag;g6lokhN zh09+9Kn^;xFgGN)?NOM7AAkdA73U2MSDz3wkxR<}G57!?nDoPo1CTSu*ad}^6aWAN0RxzLsoVd8 zA0z+-NeloWK$FTB5HbcFTYN?uL--!7EOh`4z!2mB00BV&ZYIbEuK;*30003&06B@W z0jt0pi~s-uK>!s(Y=CO;9>xCxKokIo1p#451)U}=01ITdZV3)@f2`g0542~1o63!l zXyZfv0r?SuHh`D}_-FrS3Q|>G2QT;#0F(rPBn#Tjhv1eJq3iG_L_irgA;AUT-{C+h z>2Mu`4?Gwi=82~I1>eaGMm6r*Z~Z?60bBvhhDTE!2s##|1_alL7APSspaYjE+>9knsRGA@}@ve8VF@k>LX|7)(#_XMu!?C4yHxfI&A# zDINl8e~j`8iUu$UIHtq3Q!aAHzc0jMM2!*<6ayxj+UJ9xt<3lF;OtM}W(q^USR=cv z#gE+gw4`Karqp%>y=>BgLJdHufx$qn3g4<<;zA}8h43q=6__gk^#q^rD1vo7ILJ6j z*MJDN$Kome Oy9NZ|5RN1H_y#6Z^>&H? literal 1046 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 R)EK_>vr!^R0sQgs4$KQ(Md<(l diff --git a/samples/h264SampleFrames/frame-0337.h264 b/samples/h264SampleFrames/frame-0337.h264 index 388f3ee2d19f6ab6f8359c8c0f4acb7303d4a84a..c10512b9d8affa40a089a44fd6444a1b23053054 100644 GIT binary patch literal 1070 zcmV+}1kw8d0003AFaQ7nL7QM2yakisX%aXr%IU&P?fNzCIerYnFlGpWP%s#700;mA z03Zk<52r@Q`z8#q5Xvu)@GzN+5FBkhwO8_1{^VFST{-W@3mWqpIKl1Okr0;%{Cgn%Xw=fBV<~zyLtn!+k;^ z0(6%RAuUb0W)Vpb0VQE zuBRquv^ht)vHbvIf#*}qF|ibBi#B_~3_zxm@goWn6zM|11HJ$RKqwyUW!MxDhl$z$ z!T-eDGiDmQsA2E{c*+ogS0vFUnm1?x0Spc?g8;jtOAZ;2^|R9J+W(1w1t1D0fG{2n zsDt5}-VRL=00<+10D~GZ00b1kAN}tIx(omW2*3b9f3Vm9L^m`20kEWi(X&_Y-~_5= zQ3y&52whEIQc*7y4hT>O05>QH1HggG+0l$jf)dG7zy<*gkqQB#tYYLB5SojK0f#q% zey^aR02qiwWD$Z(p^gZr@ECH#K~$v3(U=45#>jL6=wn;}EHn2804Ph}PKLxp#tZwv z2pDmKoT7)GDAqKVygz?1mBIlBgPTi$ktumOC~Sl{0v&(=00BV&ZYJ0UuK;*30003& z06B@a0jt0pi~s-uK>!s(ZGdX<6pI2t6O1Ywl-vRP3P*<<)Sdq2@O%Y;a0O(s!ngqZ zn>!1Vspb#@0mM3xg?<7eSOL5W4YI@6>R6nX2`aPt0BLuQoWmDq$nEDc-kv045X^eK z9KH?!pbvnc;{*@;Zl05nyR0Zl)w1FM{$_KhI|DsIKn_AUPCm`pkT1VAYX2?2u&{Y=IcFq++1 zbHHd;!iRkrPv^_VzX8GSbx_d3Yo9DtC;9|*KtDw~i0l?m|Hb+NH4vEusvUaLHw9S_ z%e&vp;zjOwKu{Xt|M3f4F$eDm73l)Zb-=7h-54tRyi>|#VSIcm2OW%C2ZFF%6c}Itd2G;2V+A4&)QV?nq82qy@X z01Suct`%v2kA1)ZVgOkYkM3G3H^@t#&S>~OC`TZ1fdZHJHY8q#i{!a{LJhZVF;8$3xZtUJL+cT|5TDAxfJ6 z|Kk8<030uAr!!_ix;Rs@07D2t=bAu*1Eh&_=$(|X06ic8I5()nJxey0tQmM=qf0EoWULqj$i@+4(Nvg`aKr+?+Z{MP^Iee zr4gb@*6rd3;vp6-VTWY;5hmBe2CN3U6JSA0b5Vhv2#Mns02kB9Xr_Yn+S9KgzyJ^q zIH06YkARlOvH_q9KnOw0ICDvvE}O!L6{$hsV2p6`V7rQfbj7j}EWt0p0|N;8bZ9Wi zh{5MeK%#W=2m^x5@Bwe*xcF>0fmnQ*;1C>XBZQqBdWiI~bJ4R;g+(I(kuu3+xJIPX ztf`I&00ap0003&0B$C*2Co2kFaQ7n zK>#_4tO2XQ8;k$|0YLy2LTdnO@Dz&zKog8ASwIE6DIOGUQuq6p!SEIVz!j2l!ngqa zHg*?kr1{ewtAim^0>Y+3)}CKC=L;6wtDkboRv z$@Sb}(3*REcIkj|OFSqkG$9lJE3dy`TsgS==1e$k=fSFv0G2`vw$V~k5u>Hk?sx>$ zLSz%*ghNwyhox^;;<8^7FLS~J0ONnx5$Qt^&wSvu1(hX3Sz_0#)%l080K|};_0etwA;06%>U;%AJf%s4*2|aQfYevKGC?A0A wpa38vWB@q49T*zmq%hsL{OkGcvj_Z*gz!S&!c5as|G}r(^b diff --git a/samples/h264SampleFrames/frame-0338.h264 b/samples/h264SampleFrames/frame-0338.h264 index b6a1685f93dcd031b60b6dca64c2008b23e72e1c..c35ff54d772f2889320e47a20ed5fd50a671fed8 100644 GIT binary patch literal 1165 zcmV;81akWT0003AFaQ7nL7RXYyakbe@Q4V3K`sCe4+(+CK@>2c36==%Zd?Efif&fU zrX_JvN~ zPY;|3gU|qg>j0xWP>nzhBLTp&04i_X0RUm3M7gv4Z7$4mcmm)qfA9iI00IDK05KH^ zv;;(lSjVX~^a2EM+PGtf{LykuYy@8OMS$^70#U_mFaYRi0YfLknF>zpj(7-Wh8=Uw zl=!Ja^q+tLj)(XGfB=99!D^pU3dnIXkxxN0=MVruVUB^n!kzg79eiD9fW=seueIj` z1~ZtHsQ?ZJ0SA1$rk@{p7$(p|DFW*T#`5~HSVAhyhN8?Q?gFM@{{R92z`vb`$RiS> z?+D0Ohu{Ft6Zo;@L@C$PV9r7F*;-##WuU4%5 zVZY)pfgtVxK#I`ciQgrwZIk*h002O2Vao(ENOmpJpN>(;CILT&02nJ$KnEA*t^uh_ z2S5E`AxHb#PjWAV{}=!rAOoNVaIPEh5E)8Zw~fWydfK+%2mMW3|GxyF0u4TV37{%E zMt-%H*cgL=A=m%_0YLz6Cg29I0C+F}00BV&If=LdtH2wK0003&02M-R0BZ0mK!62< z1R#;Iu0anQQ5$$0W~;@K7{7#Cdr!q|1poua@)P;G=40X4l)iZfrs~Mb%AmuBqmjdR z_y`HSWs?x1pO^{Uq+lS%0T!gm;azy}r?fVit3Cj+?TW0OQ(~xe2nfsBA+3Vj_wQ4^ zDjCm!IpJ6nOaJ2ni4fGjNcKme(#aQAJGh4RhzJ&RAB0pRFBW_RRXMmz|H>efnPF(y zZJ-^`azUOFFaRK&OKqd+?1gSLJ1`JO68d&)$^ZYK00#gq=q=q%5nZMJ5dO4injG+~ f38FuU=Le%I(P(-2U@9tAvuD`(PyQqM_yQ_`NSN># literal 1014 zcmV90003AFaQ7nL7Lziyakbe2ZQKzP)HEBx_}%4JTB?U_y6AjAP@mh+!!(9 zm%FfBp5O*>6xPz)ivp6y(*M*P=2H(0Y7FoWpa2L246_2N=obH?cnkm!KnoxO0CD-j zL2s3i`pL520t5ghuULQ(Kh)qTvXC~PI3SIyJfMoy_uoB7@C}2@T=SLzxF*(Lx7U1Ko@dCv70097H z1qudLny>JAh^`HwdY<6K3vo0>iRl}-?q3R{+rR)22mz!C7~{g{?*qr}LKkYhFa>}B zKpcuJ0E6HFAYy|P8Gt1I@B=^;1{&E=;S;9;&H;?FE0;&FfDZ$&Mj8kujVR-$M#`Fi z0fLSVd1N|ca51_e=ZF9V00095ht=8q4_NUVW}pDv0uKNXFgYtVYq1uN2^VL03{Zza z>Kj^Sda$%xRI7u*oB$|D+gB$xOk7lM_&y^6JinYyEEJ0Qpp^a*Cs)(^1W<4*-|;D) zpT+7&?jaZ9ADlwoc^J#{VVf#a;s2Z5W+lZSVZ zfTJEFI4#9Wc7iKz13HAh2}Fm&V8{`O42<{#0099KC<7Ka>`n{~N-rajC2+yW9IFvT zuh=uM`_uvk5h)NTSb29z3m$O{dCj93S@KcF?g5H2%(zIo;HX_q@trUJ-~a>x#Rzef z*9XN`mFS5f-~kW*;1DPVE#acFkvBPn(xFB^@GyfHKA#7XC?QJMqhfym06<(0!T_0s z-I6XaFB*kVoDw|@4+W4OAJklC!C6f301HWw+7(xJH!9pS-p(qpD08;=a=l}o#K>%(hxCXBPcrX9}0YLyciLL>wz#EJJ00BV& z6+&x(YVayN2mn|xLIllclygm+*b}i{ERLB&lc&LizySaUN3!Av?PT%rinqo|lyUOXx7dz!`?|L~YnD_asRqOby9u>m(`V?Pi)k9NFS_*I&>6;-2=xW7NZ~W&k5{J0{vIqP zkN^S*zyKls00J7!yZ}-S002PU=y6~GA;^#b2tl5&e{v6-Uw4EI-uM72VH6M?x7>Pi zXW;~4-~fbkh*1p|&e9;GZK>gs3|IqplxH!)k%qcw(S=ZdNOs>b>A|0*5r!PV01yKJ z0Rcb&5FY@tX957_fE0nxH_hw^!0AyR040gTM^2speRj-0PE(Y(()g&UnPVk{{dRZ& zwpwmU@w-1n7Nl?h5CKK)4^hwiz)Ty24I`>u7d-JD4bWsjcnAU(;7KJJ0Qiq#kc zcQ{hw$tri^8uS4KuPRrmX=Hp56Xbr?Nva~*0_r_~;4mYkuo7G?d^<6WCbUoRkfSEk z$WM|`o-7{#8iRnxbrG4wUur zG(bRq0^uqZg+}`!JNxY*V2E8|<(#FpSN_o;3Q53MW|JWB56-&Y%Nl5SD1ch6SDWh5Hg%oA9xIh4i3^@*x96ENS|1N)c z00IE-fPiGs30*3mMc1D9_y7U{Dge;N0uv{HNz!G;r{n-5p-2F-DhZ$#b9aOF2ZyLP zJ^cPH;rUumPU3nK;rfshCLmw}z$e7n0&*x|Lh4%jo}KdwJ3s+pj3JXl_UW`G z2e{4e=H=S?88c|YNVO3pY0(Jbgq8>Z#n7-AY} z;|7>zieAYGH}(&x=mbYInNUb5&gr;<02iioEo+qT2mUd9fD{U5w7Nx`aL$T^B8==f zqX={SAN4=;F=S01WB(u^Q2X{R29ha%zLaKT!2D1FfT6RQHg_eJBsfGE0H*3;@)6I? z-~b2)obUlA&J{T$tE-SCeCh^MQUZ#u7H2o)Vx>XYs2d>gA`%Q1@%vIo&K@F57Catw zzxjxaNB_lm0098@YydRE-vRW8od4Z>Y;V-+Qk~?$Bsu^9fh-ESz*IA1Z^ku$K=1%; z%u9+vk6$2S|5_oZA#<6^M~7kpn}z@$$p#aDl=a*{0r&zPfB*miK>%(h=mxI05zHwE18_#tOiamYzb*4Oj1A~67RvK z)daWeLInsH!u$XQC;$i$2?xs%|3FBNTHc}*8c&bkbB3p@lOY8yfB*k*a0Ve>0Udf_ z|N4j<FazR*-FU^_!f^gz+StU$7f5dag_HQ{2vYaPaWGy>y4TMsE93127< z65a4;^j+YK+7KHEi2ZI2h2Ur=YJ?Y?lrWQT@Eev>uN=*O@HjiEv%Gz3lOP5ck_ZWZ*?%#( z@j)O|z2=4ZAei$*O`G!3dIrSc(f}WzT~2w5)MJFfx%3EjnLAHUrT>V_2mLc58ujmu z+y*Qj_yGB@Ba=hY^NThBFXSxe>}MD?2j2h%-i4PUTx}))>rvc-Vg~>iLcjXD9K_1odIB#z#_*w z1u?hZ19<~dS_xpL&EErr9kC=BTG(F%v>IIMyZdUh5pwZHHuCLD@`yd+BM`t!L#nV8 zIDxX^At{_E@-hBmfdNj?q#?>Ue=kx*p*BJ@B6x8ysB@F?1xAtx3mFI+i5?_3PV7?)vKWn9vbbxVv}z6`NjO3TS*U1m!x(QP}C!gmH8t)p6}IC3(0=nO$TVUMbA zwi6R1g}*tbmf%z-t^WAh4LVVQ7O_^DC7Fy@MQ@QZAd^xr!s=;Xo|AS@=qE3o0HL$Mu~v*;NwLMeN>7??HB0pC8`9({6_{3Xo5aK4ZQDKB zYsd|BP`5!#Jk?uiS>xkghkYJh7+<9sDA4z#>5Apf6a1%q?w7#MAQ8%~uG!}%raKrLBJJxxMceNscI5)TGBYd+Ew!;=2yt z@D4FpdDre-YO*&aIT`5Bwx^$*onbGo&v^qG#dmq!6vp2;`i~;ru(_eGGwC8mv2wAI zk(y}*GU3D$ABY(#{5Tm7kwe!W)qQO*TZubqg{UQ_+AcJiG#)umSW!pnU1Z)Fjq+I% zE6p*QM7iB*Jor1_{w}0S^Fp`8j_^q;mcky~3Ybc)L=Do^LDAo9Uhnn->ITvYH9P9& za&n8Ven8&t@tkx%?vK(0G$R^}14rp5FoqN?v z1gU=e(a_B2;*PM^v+)lsIqs*1xdUm~TLBpdoQ=>_WY3KL zEAk&Gn~}>2V3IV6-pW4V&+d*^dKOZJ1P#4yg^zz}00kYyF(T+qKN_leN%mMP#xJ!X zLKs`VGph9Z?z~8|SFL40KRlWgMFpa$?Lz?e4~K*aR!l{ojJS8X8r_ z%RmM}yu^2AH0RZ?H*#F<%m`VvCsnO8jK!)A^03MeymeumW6*)Tzu2HOd3Zfijk{W* zyQ@mQLQ(wFQYWx|$H3OlQxZcP_P=l$)2;xH-Y^H22epIgdO8EGwW)VYi_6U9%>W!A z^BnRQC9L)@cr*_psfB&ik8nRTC!$zhu3PEe;D@1HuHLDXQO%d`jxRh8-9qfKKmHXQ zH6f@Cknrd80*6c~a-H}n`_Bx^Jr-hKW7!npp%&1}7L`4<-qawqYdkC1QvWcJkp*~M z8_DM;x%q`Vg{Iv(2*`0@+GwHN5L}!a?753;8~9!FA+yVMDdqD2%huWnc6tJGO;(_< zf`xWHz){>%BKDGtRoSL5NtaZ%F9_Y_^;lCT6GMLTiRA_a4=gU?ErSm`?-?TTKPYVe zWj^XnxO7!EA-t11^iB>tU(pzxUVOK@p5j{m!GcFA)-4Ne z9LM0u^kp~eXXi^@ri+D*PAVLz)&AKi>!zLI(`tJKEh$CTPvX<~1jZXlqbGZqnQ;D~d;KBQYWf?40H*q?@@~|`r8T-=wrtSC zFjn8Pv?8nn8!^pd#%W&V?pCcf`PfdH;_Pu6qmI93S(xGCn~{){*X}S!gyG7f2Ui`8 zT$X%8tE_e~?}Yff{j<)d@O`O(+@q;lnV6BuDK*G1Au&ue7#|YLUz|-pEbPCk!aVUm DFv#k8 diff --git a/samples/h264SampleFrames/frame-0340.h264 b/samples/h264SampleFrames/frame-0340.h264 index 06d00201c3b8d8031c99a602d34f52f94211a90a..1cdb5aa57fa1b8031c04467c36d40840ddd9b2dc 100644 GIT binary patch literal 1192 zcmV;Z1Xue20003AFaQ7nL7TuDyakiQf-ylZ02#L56x?85004l90)zAz@d5BfcNrAB zFk=RQ0HXi_0Z5C$06(dER2E2< zUx-%C##jOeOku3zr&yN11MFY~zy>%{#H@)NK5b{S_kaK(1ppjm6MaTLsHy}itng?1 zfmV#DC;(*Q8}l&$WnBs$MCj=Ok+D(O^4u^38-S<4wU)r1n+5PYzyQI-B6)QN?IAY@ zLfLFDRtCW^CvtJ{8eR=k1pLw;_yFJlARZrt5l%l#_AXUnYeVqSKmlsD0YETs)N0R1 z+=c+k{P8*;LlVH~rs~1V2mla1k;8UDz_0)OVcU$5ijtD3`rQjxAA2#8bq21&r5QQM)kU+!~Q^3Gsq4|j5?oSpBFe>Kd zjTFE(z%KM_ef*#TeMkbK;S+5{^@hrzfu;``@sWi~%K>u$1Aj^YI1U2N=UzT!2WFXs z00IU803d0q-~bo}&Uh0!3VIYEG$dw_q6&Y*L;z3(2Lf`8NdX1Tb**T$#5AYEfN<0G zsj@wjjh+u02jda|t4|mlba@Ut5w7A5k5J%(c%v=2r~iZS00abpV3@Jr3>xC0U!n+1 z=S#2iB?W=mdzQWifE;yXU~Wlq+M_WDKL7^KD^401uRbDYBDaSl(zdo zH2^SXih`(6b(aT$Pp=Hd3R_emq&`hHiGRQfgDb;wBb=G9me20+WB>sG1G$5NF+MD@ zEuM}+$JhV}0f$=20}a*);4Mm~HVKpg_kMy>qnE+|i~s}x>3{`59D$xTz$`4Npa1{} z9K*#<-~Ij&01+fG0K%(h@CL5{crX9}0YLyciM#=;z#EJJ z00BV&6+&+SYW9GD1%Pk`;D}QIBb8>+G57_yk}$73gfy@20C)a^C~KGv=I@dw9 zRDb`^e<}O@_k*#b4G{uWtPLCtU=7TOIrBgIlu7^R24nyg1JWv#7c0jRy>It$oM@(- zeg`{uj~sD$6@4-of4-3L03HHXYcQ7g#KN#9m+zW_0Z6eF#q~iD09pZjLK;6c>PVJz zdHL%#e$)aF**^(Hb<0zbVLt%pmyqD_kJB2E5 zn~nuAgi@cA&sBT>{>c<9MZgOHWJ_M;9~pt*vV8ARzi79TBp>;w`bjJN-X3^X1mpSm G0(^i3mhA%o literal 1261 zcmZQzU|{4l01}R~6{PmC_9uG0=t*!~s{g_NK%4dfMn;CkErpIs8A`Q+vlDsGvoUe7 z2>LiVZK`3xOelmH=N^OJHW{DT9##b z{DyzRI*crgYKKalg(Htf#HiVBTzPbF=DvAM3~vt1*!b=en}OQO9ZarkjQkfnurNe_ z(K+nW&%oedQ+$DeiLqT=Dxv3Shp}|bOdSRX!P5d6jV$4b(hvSHH83b}2rW)Icv0rv zIh_}a8O|p3dpGIb$+7xuzud)pTqmlplgFBcQ3>cac zDzCqsYsTEZpv-~6pu)$1cl8gZ@Es>OA6_?$c)MNygL<*s(dC|+^$8A#9y$iF7_>_X z&F{8JQJ8+8*TaH=M`QxaQ`Wl<3)uECDLUj7aJ&iBa`4!2ZF{y-;Qqh)i;Z}GysQ4V zNLuzDM>B&sPle~K8b5KCxV<&X4AM;E3xbtcK3b^eF8!dxBq78j=_dJ^!65O6vQOM{ zu8!<2^Ah&+OtWzb3Qga)ob73Ahy??O6az!!wWkvpba*z{H!w6DI5qFA8|xnq7zL7+5W~HgLu-xT5y#;QtNm3?1d&$;aGR=GQ$iV7&6c!ex0+uHBh}OOgKzG~G9_ z+|*E>+JCFxfQ=!Ii6woN-pvCWlV{a1@8EdotHPemX1G*Ho8!&_1_#y`3lrG*$&SIYa}(q01JXTU8BwR4 zhOBQ54Xh0XtPeVZ83bar%{uonrFR!am2+f<-(gw2ppVsu``Mj|27k3eLsr%Q|L=dP zx^Dlw!_$v-m>+S}O-ML2LAs~IK2`p%$mIVP#tIBODv1bw1Ic^R0a82>mVWV&y=*Slup z$;w}k?x)*mPyh8)L`1NvSM@-jp8FHnA(Ngf><>TGru@gBMHn0UrbxOQ~m~f$E1qY lvwvsi7b-a!U;H!4{m&ko59_GxWKb9=QavER1~w>50094SdSn0q diff --git a/samples/h264SampleFrames/frame-0341.h264 b/samples/h264SampleFrames/frame-0341.h264 index 96dc7a69cf2755835ccfeeed8f6595b8e2c5cb79..18a4bc418a471c86af4f7e9a3ec188ab6dae91a2 100644 GIT binary patch literal 1921 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 W@B{?|*pK3qF$FV|Km{WM@CBpCQk<&* diff --git a/samples/h264SampleFrames/frame-0343.h264 b/samples/h264SampleFrames/frame-0343.h264 index 4bb9b3ff692fe3904a3936afa7d1a1eebd83d3c7..e849d722d60f22336cfcf2099328ebbfdfda9b6f 100644 GIT binary patch literal 1237 zcmb7@`BM`I9L2wzY{G&B(#Zx(h7>AvJs&m zj$o+@NSz2eTA^C2g|txEfZ|bW962n95Xx9QAytr|i7E9z==^0i(kVw#VWhnb_&H?ljIxiEnOv|`#|6`*oE_%9_Rb$u73tWy zdkzW;@dO4zYprOYjlmf~b#gKkNRm~H>kg_)@9sdS)ll0=0Q(aG1#$@sEqm&LfA4P) z@@O_cpTC`LQm*lmL&$bBP{>Uz?s?X$Uiay1>?Z>%kPwA)#_{2lydO#~P0;-n4O6GH z@R;cm+j8(^+xeW^AeP7s?a2#aMo}>YqfB42_=C(xSAlVkV zF6RQ}%n&eXt7GFg9`Jo+%1z;r+=dez4P*QYfE)o@K|*%rgJ&+hz)+WADT>>QR|H1) zrv&?44!$~E-GZ9QWnqp*LUlBXIkC8S1(!2m)u|ZL= zKFS3ozMso_lILGq-%Jubg+kQQ->08;`*ltcLRWim_6nt_yUbhm!2l@89oUHix8}qe zU(X}%M25k<36GgycTY)=PRJH?J0EgAYU(Up9+&>QGjE>^Iq1T7DN+@R8?8ixp zaQn1Hv7h&xN*K^iMi})fI|3h=X&Pjs4MOJO!(vuW`Dn=bNf#q*3cB@`@5PCSxkZIo z1l95WA7{WAh)$$9Q(W5S6LW2ca~8VtKek|}sF-;LazBCw{w1|YJ%!^qqG{J6nSCO< zrffpxL6=`u9rRf3l2^Pdu93bovf5m0#BMjfW?^G-3$xL`Eb*$5B;@h>{l%af+sLo_ zQ8}T1-5|1t{q51wySs)%&`@P?``O;RQZc?KAZsMtbyVc_VEI%F<8D)ej5$2q z(_zV(TD#pc;vRJ*>bt#)eo*ub&1Sz-*faC)0DDnu6ZV|=v}@N%GcqBncbgYwX;LqH zD@*_V>z1CE6* literal 1054 zcmb7?`A?Gv9LB$GU&;$DwDf?23<``=HZDnFz#y~)1hohlIfBXPI7E>E3WS1=y{*SI z1_xu<5xI4Nu5-d*v>d^fqrgyx;siP3Yop>&ggJ-^p&j!-*z?2l+mn2rW#9_D82&0SX50-T=PE*hv$7Tt6 zrV_DBq)1UfV0B{_gw6-A=IPdq$mO$myu~>*Q;TI+azS{P_|<4|N5}Die|{Xt0Q(`? zYBM~3X>NX{fOHWDgb0=~ws(FKHV?`xsIjY@x)-0CNfL_JWgeSA0C#IYn?tFsvSI_@ zT^4fkoSzx}+hOzsvvWDoDM}5%MTw-yAiQ=$Qaj<&R}(e_O@KnL1&G>#ZuRy-Ef%$d z(+EOCy(^>WK6bPq*1b{W3j(u4m%Id51+FWz9Aysp-H=~Tv`$`ddMsGFw7ZY*Rfo$C z+L!61kVK?meAF^xB2^V7A0=@%?X@DVY2%mSd!k_Dm)^IjxVZywL|IYIV6ZimdT2q(h( zcj88YODo;Wy@+_ybNVmEh(c~opKcl4Gu@hgCQXyPPod*iZi*d=^b~vhH8K$4O%td2 zSo(2cs&USn?Cpmi7A(8Xn5)V+5wuu1h+L@2#cI`6+Tu{EJXXPp!zPiTkx=o&=m^g@ zl(tX+%u_3(w6uM~{kc)FYzw6(4dO`ld>X-Ejug>i&ZqQg^>k&Ibnjaa{-f6^CN0oy zEcJxmcCoB*DMQhr5#l8ri8`V44+={UM80nsnnCj!5I$>5D)S))0gCk83k9K#R%u)V zgf!BQb*c1Io<0}L-a&qq0VaWH_IRj150LU4TLgFfZI>vB3=+qTj~r^0Om#puU4AN( z9>TtHq~C-ii~o5Fc|4qa8>Ankh2YB?f=bI`u?S6r8WP{2%WO63EwL%DB)jjb@NJ%T zMyV>WMKJT+4r}I(g+>dc%qts-85atWuT^R55L$R^@R-iGzhtp{c5A~_ov*PD?h4Bq z*Ev(u5AfL5-3d>H`oITEqeO*0=Z^53M{6F58`UE9y8&8s{-QX?^aYjNI5=k9p7g@# zMb{9+&V;LoO1AYEqBa{UiCa&FQl0$@r<4YWZ(2Rsk~(ZV^)3x{1{(CQ;w+bQU0DcA zOD{~3i|>{XKydinzBtpbKwHlzW?@?{+YeLvQ29~j+zC?yTju}aJUb!}a@OULBIBON z%!lE?=T7@+nb}6ukcdE1^e?XH&PtxgWH|@AIrr_%?(9#Rr+vS=Fn@;lzSZ3{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIFEqv06+jR0K=mCU_S$yNtg+|bzkZr01yV6fL4g=oC>Yo zHxBI5nZMuy(1%wEL82^@X!UylNaqlu8ZDiqK}OqC!z3862JI-$V}m0NbkAT^02JHu zfEdzf#ZdU0)pAMg%-O{NU;qdKfB=A?00<9&Su=qEa=;2e=bPsC z1K@P1kANMC!$(e^`|Gx0`f`=aeck^rii(+*GBPl<{&bR}ICunQrsTHn_y343NZ11L2y(AfdQd{yu^S30&&Pi#x1D1sIVm<0{~gH0fKvE&u)GF;V%LDYeC;6 zD*}R7S`6S)R>5zPba_OtzxQY*78O|DD3ea-{{Rn7q{rHK=Wsw05IG77WW#?*b8q{= z01ykXFaX0|15LHHYoYnPN8kVi0>An8>!yae?R|mG5`SsLknyyumzQL&_n;h_zd9kJ`z@M9-n3? zm_Gn87)s_0kQYgR4Am$@*XrUoU;s&`lK|R50$=;DZH@bn>snqW08B3c0Wf;vLNhCg2PiWS00hX!M?;t( zzS~5b`56eTraBZvtx1Ps0-J^a4#`2#+vs5}*!&n^2zCGf0YLz6CXfcN0C+F}00BV& zIf!zzzb;yzovn zzXoi#$M3$!s(X#i^UC&c)k0NY?GQ-ZAk literal 1325 zcmV+|1=9Ke0003AFaQ7nL7Si&yaj>3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxL?*bVTf`9;>X1lNe$Q{Z7P#W+z04sn9P#PJ;z`G@sGCoQ$00amC z0Ru1VDzJeo&I)ciB35u>Of!!GH*h)ETFbfi;VG*aiSih{M{FU_@BZF<3zpTrgXVGEDz)4g>Nz1SuPhG;e^K z@XO8Y&9^opd;k#*$Ra)D`wU?uv%!cSX;h&i2BOs%50UE_1P3j;$W7}s?GC@)!SQ7c zcndE?xGF}0z%zp2xKTPB2wMpw5B}%_03an)CEl(c%jrqq{QzNr!wnG-K?h@$_O$Qa zykH7|0Zrd<0R;$1|0AJKmZU00AT9B zT$Lwr0PCS_u2293Iw(&v*SP&jbL&CAkm-Vq8$>LmmdeKkxt$fXHf&kIk?C!r;TezV^+tHe*#+0r&t2 z0fkt07UCcB_!tbt*!Ii-0RZp-5EB3o56c&tKfn-hQ~;dpT}Ro1;Z<0seE=c?0*6zm z-Rcm8oM`FX7y`gRBOn+^8J(%R3+MuFfB*miK>%(h=mxIU~KM;+?9}^tz!O~GZ5Cp_uzgC=@t$^xt4Fg zo&LZUmG;o@hJZjze+MtaMEHV+14h%b+R)vH5*P?j56%Hdec0x{5?ynP|GzY+WxEs# z0Nf!7AjliQ2tOt%ee%XGGs6O}-`F51L>^n~%j9~tKmY##y9+3RpD)TMqn-k2P89$M zt=-*szz5LDRMF_CKmSG|5+o&0!GTRK8o$xt+wcN8N)8GXeeN(R058`BY_~`6z~p?m zfCMC9$z7m&6{m#sBve?Cr)X)qz;gsP6cFF~0L_StNGHPN^iWN}SIC~%NW^$6&+q{t zl>ri~{47itXtHhh`<4P};av$6hzWK~t-$e|hy7m&8Y&T?|J(;8d`2Zv^GdswrT}7@ zz*Y+o{KQ0lEC38B00;@_0knaD07*ar^ajj;1N}?vFp&HDXhc)BJxa-M44|to_#Ps{ jJQ5>JM3~IYhlxKA0&D;P0YLy2LT-R+^e4plo&eim!PY%j diff --git a/samples/h264SampleFrames/frame-0345.h264 b/samples/h264SampleFrames/frame-0345.h264 index 9b3300c27e85ca0a877acfac65fc682591bd1b5c..1826683e0718e2664430ff91031119ad13ca60f2 100644 GIT binary patch literal 1227 zcmV;+1T^~q0003AFaQ7nL7HG1yakiQf-yl(02#L5DY(GA0098d3JbtPuMGy4Z@rS` z31R2}DS!ZgghikLAQ}k>2p}Y?pl<^NP?gCYGE2^s5-066z6fEt*eOFlf?}cQ(yQ}} z;W35+5BN%uL4GsUz`KM1m;)3cLKOS9bgE5f?*IUx2NeX{NlvCC=c%gj%l8LQWkY}p zj6yzUKmZ^BYk`2`0!E$`77!Qx!vJD%Ik0NV;7dJ1I33^tfkb@5X$sclv=$%9p#qR# zi`3K~au$Kj-w{HT8qyRKJUVYL5lsqEZ3&=E@aeGzX+uATj6eXq00aRQ5TFJKEarT+ zkN<{>02ZrYI1Lu<8gnssBLK+U)6@sQBLEs7y0CJ_01zgTy5v6a0t-N!${Kj-CbCsR zy|4hu3OhDY&HJDL58Z$Q1`WT3fm64L*Z>F!Zjb|j9unR(N{H;pPF6XXqbe?glpZv2pAR3E9U(aXPim?004k6i}Ypw!q7mMZNUx;dhj|F zk6P};K+g1pVUfichYIpYa4^QqyvQ(iempp#@mmuvO90yeccNSGoB*Fz0`o^zbdhTt zDuxLtV6TdaBwkn%zyYtW08kJNH=S6~XdStjfB-;{00amzI{*ZOhdc?!^g&PfEcuZD z13RE#!y_Nxqm>*(XQ)tzsH4vihyR1%00aYo!`9z~itj|9lW2~4Yy8PUV0K>b{s(|4 zs=%PElH;WXW}y54HgQ^DkcBwy0@#tVum謠uC32A8Xa=AN6`~=(eB%v`2EM#u z7;;*JgnQ&sV2AtxP(^rNPNPIk*NyYRumCZf!9laXkj2O*F9cs;0AW_Qfdy+1;Cgh* z>=P&g-TVteO|< z;0SgA00BV&ZYG!puK;*30003&06B@K0jt0fiopOI3_1W5{b0WM_U_u-y5*mLa`+|# zKrjPQ(nE~^55+V8f*|rrfA9b-QmQJ}WeH~XvRg*+2BHmm1h8%zwM-~WKJg#`7@zYyhu;zUhJuu5D{pMU-CC)ip$TNxrr2E z5RZc9AO+C(7Z8^)y+-Px0>p@opN>sE@Q4H8h5Wn)6-&ufwc?ELgV%`6a>FJ`fBkq9 zbU=(T3%;%P@5}nqLIRS^@qZ0fc}6SxWxp=L3*GjA|Ln#QHj}I}hJX7(z~o1VZ6{QJ zehwfDWdi80^KsmCfQvx1As+zbF}5K!sQ>>!0DT6N%C~C&zi!s(X@F|*2IJuN8L0pO literal 1030 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 JZ-8p>2IDtzh{FH? diff --git a/samples/h264SampleFrames/frame-0347.h264 b/samples/h264SampleFrames/frame-0347.h264 index de0d032f3eca1d751bf878dfa37630408758206b..eeaa042b6f972a777bbd0a27de29b14f452c91c6 100644 GIT binary patch literal 953 zcmV;q14jG+0003AFaQ7nL7Jc%yakiN2szF8n=?!Ug*X5p00;qqFr+@6n;-0$G{8kD zzh(dcfKUfKGFSkRKrlC>3>CFp@fv*DAix2I>bKV903ZMm2q>Nm$^s)Auu(R4fB+x} zIpfiq!AY@|3i2<%c)(x)AQ({^p`h*<=KDTxQb07fKIm5kX+?9bo;Fb|-FQ zLiPYkrdJRIpumOH)%7JmXG4{WcsK$P2n4X!fzFUjNyPBNkH6L(C;$i!T04MHjRg1K z^Laz+{C83KgF6zX5}u2?x}dB}#M$8U#qR0R$Ti02~|^(jXdeg$Rg@ zQdDmLyZ}I8qei)A1raFnssVb#6OdpHkwdTpBV0DC{^|&} z;0Hj+LW2KZyc()V|LwdIz?+ZI3V<7b0k8g@5jlrRPYLLTixd?TG^+mYsBl|akh`Au)9S!H@``nRm$~N5}|IBf~6bmx^ z1k*+UsBq2$jIADK4y~B$zXQ<+cmU=~EOo?n*8(|62g0tHIQP6BVyakisNeP65(C!ClO^O0K++xra07~HGuZ$Ac5N!v4 zOW?#%XgE9-g5aRY05(j`5hEI-FMxpJk1v|?Hab%Z5hK6?Ed!Tc;6Y(s8s4-2+y_bk z0tV3yfQqCryx`uJYr7yt+YKmZT{0|&~9apz0p0JuOsgn?Lq zxZeO^3<8I!hT)VbV)qA+@>~EP0|KpH^dB4%={7}!W3T{#0IrH41^7x9_wNO$7!Wm! z9O+PaqINuZM<~igk6?I=w}Pcy_%Jqb7Wi$kMQ_f+1Il4z#ufkz>E$$Y!P;+i_lS4^ z1O)^rSus*j32kvF9{@}MK?0f}lS`dCsUf6`*QD?mGl&Z=1YcMht1*>}XGy*Q3#Qcf4~M2$B?ju6Tm_W(>wrxapeS)enLi=UY*GVjQ8NURuK;*30003&06B@E0jt0=FAM>|!5{`aKFs6$5TgbGKsnEZ#tkhCf8T?=BnJT; z0{O8TaBBb`1|JIm_c{OrhyxuUWzG*u+5i4*EC&FG0)B#vDxe>Z_udPQoWns9$KF6F z5mK8E(F~hWU%q^F)0%tZy6;@@@Bl+sJ4`QJ^~>M z3;lX@?~A9S{Grb`Bw34;ZZPAGXOC2XC94|NpSyGln$1FTiqS zFiAJyVP&IYJ>XjC%s${?KzfeHW0(j6#H1=(<5yj0DFA#GwBV!O@Ogr&DJ#zcSvXFf dzG(mV3!s(XaH*P2IFE6h6(@x diff --git a/samples/h264SampleFrames/frame-0348.h264 b/samples/h264SampleFrames/frame-0348.h264 index 8a0d72d64d379e94854a3f9e217eb40499424a7c..521b8a576c7273d2e2496241f9e5ac4b00cf5bb4 100644 GIT binary patch literal 1298 zcmV+t1?~C(0003AFaQ7nL7KoCyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zAuF7ofD9C7sK}3Vu5nkmtniEUPaFW?3`&0k=UhV-miL$xGun&FIZe3gZy{PDf50#m zMm9hWtZ7qE11^nhByo23o0zNY2><~A(bzChf!*1vw0CrX{{SX(6lSES@`+;A+JFE+ zPz#Q*0FnNbHvni{2mSwg2Pwh@a?#dY|6ljE+cRu^RYTwb0??9-y1G0Ev|?W4|8jr; zzygZ3oZ!tdDk|6ZlO1VA0C*Z`%ubE_@3aR!HDdtrEMODfC5qU<06;{C0098tG!j3c zs8*!sfP`25s7)zl`qzI@L7D_2ZgK-9AsIv(>g-pZn03aAY zrTX_`L`|c&YW@$v11Q^sjda#iWHb}VGjO~o9jufRc)qd$KmkAkgUX_b0S`zSIl)i= zcm+TJ>55jdEKg5~PV@&t}0s!L%x&I&_ORENusTrYg00ICb56_~Z zyEn{HA|JN@m#@yYk+ap|^*ev^{Kk%FQ5#4l4N?Q)h~QKK0tLfGMI^;!_aE?J zPB1Y+5k9{FWC*QBE?NWZO;qF-1T5YEwMPX$$IgvtK~V5FSY9#!6uVZZ-q00IDD3M$hw)UHYRpnI?Y z03fIQFm1Ku*Ps6XessG3GE^Gv?qB!R`r470eh33G0OPbKdW1ZvE77l@IZhBOmX5OG zJ!Anhg8?4Y41;^s=2{F2Gs0g2#P9_}D?<8zvgy6a-FN^30^$r%V*~~w9GLgv7KZ>` z;{X_T`+#viVxTn{Ah-XlBq`snJ25YV{}=!|z#o9^5yJch1kx0M009L!bEQB2{38GX z0H7!&*fY@)ccyArZG#Q~hhP8z0YLz6Ca?yt0C+F}00BV&If<+RtH3BQpd1B+xBwC7 zO}gBR-T({YZkY&ALu*y);#A`3i9h>h;h{lIZfgeyNV%ONyRiOB!$ z|9&URcxd0)5|+pH-RXaLKvP4@q1RPlf8QA2{bKckXaB%XMKt1YcQR`ii@)RqyNxYR z8SEkmfY<~i!ETR703$>c;@)|ucG=A;2#ehje+U7?kbkVC>sdYoBuNR8jfiH!wFp%l z=U1G70bT-=HUK#TV%d)C_4g2YOH~#N z@l!)#6xRjRAN#-n5Cu34A#_s(&!O19@M;zSdEgLm9G3-%$j=qjJ0lR{?*=i(hohmd zkvT%Yg2(;<0Dy=)7z>!&SIUWsM5DOmGF0C+F}00BV& zIf&7q@FOUR3q0lO5a@WO#M}8r1gnkn#F~j|c(C zX8;n+Ld{*2Tfg=Uz=<{!gXnwQVspb(@= z6Cn(UCkECbRB^7a9{>X27fS#g8!~AG$*FpV1m!{uJ_&_t!L*=)DrjOuYIyf%LM`jl@;3G`1pwc)pfD-hV+`h>L+^TV#rEb62nYvqChrlCr;a=%N9E z=<@TZ0H?PFO5J)KfK>1RD!}l)GfkPd9D}d|w+3k&A`@g^e^bs+4iG=>4lz${B$)B0yDvt5kU`{+Ii2ft+Cm+wio_+#?0003& M02M-LfNJmtBs%d8ykdvE$01yFiW%f-)RNP1Y8@&h& zAzIqk3dn^KAszpv@U$ffiw%JYBftTN*upHbb%H#ae()MKOaj|unmS1%;26jRQjlT^ zl!XSES{{ZnBGM#)swq1pZh3$JAbtP>4?qARY5)QONuD48z&!hhQE`C)!ph(XQ$Pv4 zM=(@R9^(rksNey5zyO7UGYR35p8L}HsHvG_I{0epUIqZ*5X)J~J>BpAh!&(M00;%E zZvxhP{`QC)h6R`PE~x|x70}&+4}d@jX#n#KI)%&ZO{1^<#sCGtF6!Lm4}&`=aT)*t z0SCGO9B*VpRsY;00s}9<2ewd>;%dMA1l0_Q0*Io(5m*g-5))2tPe;E5cO9Li&@90% z7mofgoy>9tW}ucaeGXqi^M$~KFycalzyJgSYB>O8(CeGmz##l53_zMk8HBS`2)U*w z8;zcW7RR>O9tFGt)&@oNbzKYtKp8_Z4H@d?(Fgr-2ny=}Vs4uHrNH1omTmw4z?4vN z06HL{6ZZY?d?Y6=f3L0J1|U5Wh=vpLfJ6D?(Q7Z5OU+`p!EsMlgW#tC4pcol{UoaK zGa~MV2}m*gcnsK8(L1~V!cZVhgdED8=!IYg>i`o+*?ge95QKyQKsFD?d5~Tu!cRV6 zS0&EWZoB}V(t)s5)aF0yL6LA$7|k4kzn=Gy85fuo*Neipy<=5Z{{PdwpZ=zrMq3v} z=ebN-icSND-jx&lbs)9~w3$S5_y5^dBb+$03`vvZA%F-}t*c8;crXDK+ICwf<49%k zK#c{#Kq(9d!kz900CXi{kX343OTXV}fWU}uaMf7%QRV-%NC3bVZ2(}N*)!XJe|Ss4 zE=_1Vd{5Cl-d zN=N1bf@D3d^)2`S0s*doU=dXV*iN+w`yn^4001B!paMC-<;~hOxzMFOhyW0{lmlK} zAV`M?`$77FpjxAOB%%CiVUS-e02qveOmitl^(`U#kP#CY2mmwzKc?6pl|uq!!N?nm zG%2 z=A1V~B{E#S`TPL+!HTAGPc;7Lcf+3s{NAL}Z4dZ)?QjZmX0fBQjf!dLF)Dwrb{tN&i z)tTs7e((X5I(WXLAX0BZd-w(*k$s?^CyXKfyMpqgfJfC7_o_W%8S%m~`HidZ7=9=M zfEe7RWP%C&A@JrRG4cO?002N$iGTx5G?)d_NfQ6vdA2w1FRg8Om;o^S00h8=#Dr#7 z5)M$qzyUHbk@3tBUu~jHiRk%(hxCXBPcrX9}0YLyciLL>wz<8JZAO`^ecoq`iBljEH02ui*L~q?-CxRY!>PkA; z3wez*7If>=FaOxFc*}TaH-ejW59<29kt(+}z*31mL`dpa8xHxZp)77qm!9 z_VvGJ3Oq;Jg>9#YiJ_wUehl)ZU^a67<5JbQQ+vR<4=7~bNOG-X4M*r#% zmRE-%4!_-GZxT-@|NsA|KmbR?KpA9H0WA2tm!I->X4d-+$~N zBtQrO-7s>PXq^R^U#Jj9D=$&kT>?IzkN?yA!-5`vAPER?IeH8ja3=|caUaBRCm+wi Uo_+(u0003&02M-OfNJmt<7cGp8UO$Q delta 1551 zcmV+q2Jrcc4Ur6g000012`~Tv0YRET8oUL9h#`dt-~-iLc`;lQz6 z_c8yyav(HBG8SNDsWhAljQ09LWJll1#Jq>v2!MO|Ken|SAAO(z8-sgK4y4K>GD97) z-a~~)mcRe)!IU!Evcdu8if?x8rJ#e{D26?#IWkZE`~X3YP5j(9oJ0KSemq1-@KVM> zO(v1ePJaM@L;xu2z=HM~hb0m%_&5MD2tEeZ&+(*AE=wQ+%s^T^3pO`BC>boCuX%wI zinknAU$n)4C=0n1o`AG4(b_%{d!?S>93TKXnz8^K6>G0EoRont1pVP_^d3Fb3F+ zHU3P09U?RgRuJig3>M=Il0Vu52jw9IDHl&PU4WYLXvN?IR2-se64W2Rs$T}dB9IaU z0wRKh0YC=$Kv@IE2+RT2fSg$p|L+0-BUBzFyE&zRr#B`9hi@&Rgl}l0BZ9w`c$1uF z0;7X)6w>p%a3r?<-~b2%5`X}J7z4qi@p;jIK~S{ZAobu!K_rCp;8anhfA#RWFl_-ynAO=X2Mxg3qAuYNn}zK1DKdZdkTn8?g;dw+T_JxN z@9EI+qT71#0MeKmMCveBH|O!-hr?4+rYxdc!K`S29(Di*0nWgv%5?-^^P(XusMy4R z>|g&9%jg}3P-27QJ`=D3w)(=?L0b~iBW!pB3!$ukrKqV!P#skOa)%%QfB+x{0K^5~ zaS`#s3TF;BzumBJU93rnsUW}HYVsuj< z004jt4&zH5J5jyd^|7bt!!E1mqQ*0YyecbDvWQ_Kp!@^|I6yyARv}z0|IC7aB_EUn zNI@Se0J#lac)$!S2G{|jnk?H;N|vNtkN_({06;;c02>(De=PNVX;jElfQfrD}41&-Y@_V5&#)NK;wZ8ygB%gYpxN1 z6LbIo0YLz6CXfcN0C+F}00BXN06B@I0jt1xm;4|H0RVUw65tG*t{gw00gp_`jr({F z!WMUG$~xE$x~Fc3T6w|C{{yf{4+7w>#t$*e9HFK7AOHb0lq25e>wjRMz^uif0KNiW zoCuP@y{3mgzVM3Ob)Wryw=7i2lR3}A@B3yBJiv)L@OZ4p{=g?QK_pCn05-SPwSVhH zMUxJkd|-|L(nagTn1bIs7I=~@i!cA@Kmgc`1Pg5Oi`r#cfFi*71qA-QVr`~GLV12j z;UWq=cvDcY7k7r{lnQ?P&{V7|jgey1+3;PWbjhXf{}03j>KwaS;A8!vjkP+P{oqb7 zp;RPFg!EwKLWyq(eS2TdZ3Y(xX#i^Q2IIK2 Bt5*O3 diff --git a/samples/h264SampleFrames/frame-0350.h264 b/samples/h264SampleFrames/frame-0350.h264 index 1c565d06815f20bc5c754a5a5676a76d79b54f25..12aaefc2b9adc24e73ddc274e439bb263c3c0a3c 100644 GIT binary patch literal 1278 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 Af&c&j literal 1833 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 delta 1061 zcmV+=1ls%19H0+>000012`~Tv0YRFe8oUK_!GuUqhRhsKL6n&T2B*szn4taeB!uH& zqtn14Qrv^k1OS!8y)lFua-1j3%izRNXgE9-g5aRY06dwR5>Bg`UIGU=5UuB_*vShd z>%IU*pybB5Fp<=tf2KGcZ~zca5hwr|56@gF(Ek_vfB?jQ0Ma90;Ive6kefxE(eNdu z2&4`;BvSU~#7orLMEzOF03Zc11W3;pn%&cv^u1g)dW#=#3Iiw@(P}A`v3i70#d<1qikPSdm074E}hZt1Jblwy|omvkA1Y?Jj z1>8`76QwPXiDn7D02mPBL(!nqCF2L3EdqJd$Uqz#Uw{jL9mm6Av0z}Itj^P@UN}{GT5C8}v8WJu#L=nYf@43KWOwbr$8&_Hpqd0&R z0mFb3bN~PWK>%(hs0Ob9crX9}0YLyciK+ocJMSnS4V@?eSyKO6CPDnJ{f3sI-n$XL z*Ql}=06#K1a_dUms+i@CxkR|^%>Nn!*x&BWzu$R6cp5$KAxgw&avvYnh|xSI8prk?{Q-eo02kR3=uy9Z zhYtQx^>}cL_C-+B-(Oygz=*x~&k5)A`TUcG3sQgL7?6NSS%3gQNk9VsSO~1YE-W(z zU3hm}@w=z6Cm)N`l!&l4g9hDX2L@{mEv^fF-$pn8ywE@97dZrnzz$2^Ii+YTOyBPu zDhS7>BBfH9$P+Osx{@mHH{aS)^g~icwDfO5)OY~0EU9+9q(6SK2&$fPD;Xc>NCA&m zXpjd*R5Bnl!g-Ui3sotiQ&+(qyut!XUTtdmW6jh8 z!1s9Y5CW`V5W2qKWAp%UGME5ijD~O7eD16~GXM(!$f4R$$}0Mwyv6_y@YqC69jFy! zVi_`(&;U%|2Do_eVT%@7^@dwnxq9LYubXky-a@p0ME~#@ItW~VDzTMHG#zAT zVj-P+@ntR$u#+02l#I&Jm$G;7CD_?Iw7o zH~s!bW7t1zI2y+KS6YNl|76v8&4e$=H;BY7qM-O5J15dT<|I7pp z^PvkW0Cxe83VtjbAZG$c!OEqgY6-6Y{2zdT4vm0+Fz5-_L@$QRI&BA%rHinND(IxNrvJwQh#(gwD3Us5gj11f+h3nK_?MB8*ANSnrk0KFGN05mV1 z9?C0cnuRRoB$c+fHB@Q3%)Z+=KwGPO%3}5wWa|_%boxp_q)U|7K!0}^12K@002M) zK$W}C7#q!E#G+rH{@?&H1>ccKy_w~xgI}$G^Cm-xsO5EDk@~$<|MIg zm~Ud9K;gz6sz+C2yI+74C}3AH0%6?h;|v5(v%r_ZF*pP=EN;y1TPv9}Yrp^y4=@m* zE6xSYP=24#d?^Q>Fa{NVz&ZV5pmH~VhyVRzLl#>cHt7dK5ia5D-4IfLCTKs{jcQeY#=-;nbx5P{AU!&u_lM0cukaY^01w zIA-fJ1dI+j0h4#{)6Ne~C~sAhQ3E2AU;_?P`v^n9nFawBuIOmKP3dVN$Q-bsOtKE$ z+)3qn{Y)3ZUK$Vro+W*9evdk-#|65Bp%({q2<~B&AGV0s0h}H{pi#$e0+;)O*mGZW zZT;b=r-hS|1Xe4#2WJPN0<3-}`WB)L5V?5;M}HFrtuNfMEw>>To&T_|7K$asRsZQ} dx_7gY1lR(TkOWT-fB*miK>!s(X#i^Q2ICnW7Qp}j delta 1006 zcmV3`00;yC6tE>!CP1OW z!i@{gZy5~YF9~2#b##Fz_y7R_E*xMYoUKnntHdx#0%W(dFa;2g#2?ZpXV9)Yi+lh8 zfFKAD5aWVpErMrEhVE2%i~@iFAOh$nKoD#I1Ot4$reG3y1He!?rpSdIG+-9o6G*XbQc56j*5-XhqwwF;dh3FyjJTSq>N69@jMIhyVxxP`bB2fh!t*xp)9p0uKNX zASnwiYOOX491CN3GJt|X|La+anu2i+GA+*xP-~)WS(w=&At76U!P!!}_!G@WC+9tMtlK)0DwEF z1t?jWnh+MhwTl6ZOdJa9J00tTQNMbCfefe^K#;Pn5EC@gFgnWuD3i!2z5jR&Q5Ido z1x-YMY$BfEx`V&~2m+i05V|RX=iC?C48qV4KlcEGfaJI=LPB`1q1h0J7kDv_EE0}} zK1AIb-U}Z100IJF>~Jn)ZQd#*ClZe%kkRPCu<`=J`G|@aswA0!418k)Kr>lrQ23)0 zfhNm>uvUS*^m@r<{l|a+AQB#l0D@vDmObr%h4EYOAQ(^p5C%&IgQth!Zh{gO5&via z0sw!27y*EJ%-WZu61X)#xPkzOH~?^w2hN3$0ljz&AOzh200BV&ZYHn>uK;c{f#Aa> z1OWhI%+fI$v7IR}VXrYDcou9juWV4w_E!jta>$H@IZ-CQ1n2+&0YLyciL3z&=tv$( zvDgTOkqq?1ZUZ4xVakzsT48L_*24jCKY}*8P<>a5ZGatzU z?~&?vd<7c45KjLvR!}qmDH-U6xqA^+Sm34w0FPY5_8-78eqhh%i&(~RVg)F1#@$JK za4mwmyQgpei9VhclW_%AB>#|R;h~U0KB5c&%duXB;al-AYtsGz*Ql5dlK#SRij^n2 c!?RHZ90QYZ1q%+~0003&02M-O0BZ0C;{j-vtN;K2 diff --git a/samples/h264SampleFrames/frame-0354.h264 b/samples/h264SampleFrames/frame-0354.h264 index 95fdc677dfc51f263c8bf55092d2450a8056675e..73d10461fee87236ad28d85a96bc5b5fbdcde76a 100644 GIT binary patch delta 1326 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 diff --git a/samples/h264SampleFrames/frame-0355.h264 b/samples/h264SampleFrames/frame-0355.h264 index 77b03b7180c0eb0cc288197e39ec983663739d2b..270750b403a58d32b45cff6dfb98f5561a85a5c6 100644 GIT binary patch delta 1231 zcmV;=1Tg!N5A6_t000012`~Tv0YRF88oUKJ1mR6Fx0retpF!4O5wD5#25pyrHG?!r zd-Ww;QFwir6Fva{-!ZFF8~^0i94`O}b#3UAYv2F~2dDrzgBo-&6=}bAh>{&ZA^-vq zsRELYrV~f?liZ>2n1mXg?BIur-s-`^b?fr@A%^E*r40Um35tTr63g)l*|@*}AXUa1 z#1uKrY!55I34j<-rHD}yHgwvLXYT+2Knegj$R_%XeNj{hRaxNAcLJ?hP(T3a#5d+* z0Lr=)Jc-fL10!Oj=(^j+0Afc0PJv4;i9GfT;CKKqD5TCRpxv*{!Qi%C3zde{0s;80 zaES1A9{?qPLL33mF9>w#H0wZf32o#|2=yKRr}zR5?qK(d!57EHZy}VNfPlW}N5lif z@dUl=QX9iR_89odfB=AQ%K#t%Kvzi6l88AN3ENs<0WHXo4Gi5_a>f8bvW?Mm?*NCO z+QJxUyUSdPgnM8HNKsX?ieKFT0oyPEh6=TXQ3F?hiLd|=2-iRy0b?1*@<%pkhU`)! zjF$^&C~01ykH5ReMflNYOD4pmm? z3~n3%0RhOEfE=l}zqSDd^q0tqM0UO00EP<1k+XV=ca-w@009646-b>`*keS~{^0?D zD9XTpxa2w0W#&ikNP!91K^()FK?)2v_Y6BX9uVkSIq)O+37?0ek?~*8or;Jib(-B>?TskN^l8004qlUjP7skOiFZA$2W%Nkp3z zM1AlMH>dz1oC5G4-GyxFRt@ZItIUu9%IFY(aWM|G(VXh@1!=r23VDC1Csj(N1v3 zfQ_JH^V8HYkV^`+Sq3VnFOAg@{qF^w1X9Pa=@5uNCEf} z$MmW}BP)n0?EGr#qu~F+4+sEF2mpc%9}}tTY3l?3=l{oy zxT<oIY+S`MFRg)9i zZM=T|^TAv90XrZ=EC37vSWpgrYXJveav8s-C-=-safp4xbZL8g=D`1bQg#Q?6TM?s delta 1017 zcmVHa?g*^yB(XRjc7>ES4 zM1-_1NJv|v@B%471O;)lRmq|s7uNh>2mk~U7#3WJ2SW2{6p$L7ycom^0vcLSRbAs4 z;@Hj`(-?2x!~g;U;0zDm=pOf#h_^i)FzC^k0lOQ8Nh&Y<_lN)l1OoyCo?(H~LS${m zyGTCRyubi|(7uikF$KZ?1`J8q@Hq`+3J097DlL4F9OkqLAK}oqV(Su+61lO^XmEaL z_(gD-2!`+^t@N7+K!Rb|CM>N^2}m7x&guRB;2DJa6lAooaV-D_fGxl&;8{ZwB6JcH zp+mHpo06+!uVHyMOxj_lNKmwzt01F6R3Su?ybhN7g0RX@cHwA=!zyJsh z0H#=fWHLV=28fT|y#I3#C`bYEUPwR+4_Lqda0~z)!3JDsRoNi@a~5~7r3rQ`;I)MB%XMC+(6LSTZAO5`3w@^AGE|;Pk{gV{<08w%2h8(Cv{+3U(|4&{cpj4 z;O}<#LG%9~15A6wO>W-JzyDjn+epVGs|)wuH%i8VcoYA#53Zl!6S4#@SO6LUSa27) zpa>M#`3H6LOhxVQgDvh_A}oUG{%f?hXG*Bk?Z+bN~PWK>#_4umM}~ARq~V0%QpS z&WJ{`n|dl*9gPxbff)BQSB!>#+}vwJ(x0$5^Mn!S0p;UZI2Q%e=1`V--Nx*oMA0$s nO=5c*7L&0ADU-ki2Lk-@vrz>O1Cvk%b(3ER2nK8bYVZc*!IiBE diff --git a/samples/h264SampleFrames/frame-0356.h264 b/samples/h264SampleFrames/frame-0356.h264 index 7f058ea8faf493dcad5b39f847eff31323f33e72..ea4880a3aa64ac039ea708a29de91574e9ed748e 100644 GIT binary patch literal 1545 zcmV+k2KM;?0003AFaQ7nL7Jc%yahKwV%OC4yxZME3{m(1Bx5lXoPSffZAS@+<`xFE zonrg{M{XJ}GnBpvB2du)v_QjrEQWN+_;15?;uN?605xjHXpNxV&@1JUKYIjNq00}h zC5@n2&lms*0~iMdkQI)fx@-||OQ*yDH(*295h21PZA4CA{?OG-s79ylY7BS*6-!L! z8MqU`1#7%ckp^$?Ag~xuv<38YU1B<9!oYq*FaRUxv&+`C@wSltS002q=;!GNR zRYZL+iiM?#2#nwg@TyB*D?8w100j#wYHsgf4`5V7%WBA?BRo6+0f3y0)s0SO3lV?+ z+rl2DU{PZho|$eC4(YJ;L_#0E-~iMEaP&2hNhPu- zDb_D600aO40{}n>CbF^eU?jdGARdg|0t^Bune!#WL^lzIy#O4q1aRfeb5J1lB1_bX zClRf0cEDi(odKK$aF604fDXI50Zj^NL$C*+lmHF@0sue-1-xlY&uNO%`OzQ#zyXB~ zC1IRf#^{n(7Jvt>nG1JzM`yqQ{Y1=l1jMHt05N>EP)4jmbT5Vfa1b(qREtHNG~CAX zYVZII;EWWdbiEy^G}wE<01yob2rwl!&q5q&&>@u>23|CP26sl`$Mz6U{+KQD{XYQ| z6szbUz$A8;2ZnqffCOMTd00_fWdVv(TBI-qrT_u}vUmmn2oK>8Y|K5_4=&(9AUcLF z1d0358Bhd1r(PrJz^V5@$H%+xx9@KT91?<%p;@woHM0j^fJaE>7yv1-01yn1O;&ND}3Y;2MiLQfUHvV9v~=U zAtW?!v=DI1^@2`0z3e=>H)za1(72!eH?zhyc0lOfOq}} z0t3k5>_nY|+y5{C5I6t<1rMD70RvzTUhoJ20qwQ`7;vMgmk=@!lmSH03T3F)oWF$)g`$rD1~x(?iks&tt4F{XFp?{7R3-Ff|C18X##sw2vEF<05lo{W z=t;Z)0RYpU05sXcrzG)}=b!)x2BTmBA#Z@%L(hHa>wEw$yi5W?Z~!I^T;M7hvA5&v z+s5_9^ryj$WU$mfVj@t^00|l)qL8DC)^bIF+L}jR*=h{kkBl!p;DHpqySa`k5C3b- zjKW-UD+|g>0}l*->%afs`)ovK1cn`LY^^&o|F_uDjW3zopZwqj4_5$#Sd{7Zc)HdH ztV5Wb(|&fl`B*CJO2jhylzP728QyV2m z_-DblAOZD2Gko9T3K2!7D4gcmIl=2LJ2q{N;yyyDFi2>GODO(=;CL$@O4j%biM~N| zv^9eS-*OK^Xx*Q~s`Ahv`kvHa((~R8bjaw8Gv8YXFp6XR5Nm)=m5PU71F!%o72Mie~7sS1tLHIj7I!fJuqQcFs~hM5SmGoevTYu3+Z%R!9qY~lbs`NQ00?;M>3P;J11h5tSvS45l1bQDR09os9$$u!1+)lW{Wl1V!CL~37 vX?6DuI1``%00BV&If<$PtM&*nJ|}@V{(c1W@CBg&00BV&6+&u&YVZc*_EDAh literal 1412 zcmV-~1$+7c0003AFaQ7nL7N~Nyaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`L0eYF&+$9KmZ&71ONaF0Vete8E-4Zzzs{F$+SA4P)e|jq$BNBuM803Z>F%5 z?-aX2K>1GqU;wA2CG-v@1_6hQfGPj@4RFJF?A*3ddw1Xz013>11On<_*)U&g9{;>x zB917W22xk?e3d<;fDJ=CTOcWMdN^MLFT62YNxV}9^;8@!#{&)?pauX8-O>Z1Rbe@( zzkmS%1_K5*RT@soL@j}f(k~7{%Y0@*BGJY^HBVod>Fu`L^chLp*r1wWrvBf+OaOo( zPQ?J7(dwA8@8IA7<6sepSUe-^;l`$x_3hCR00?b$Y)o- zfCdyNg<)k@wVc}1|NIyLX4`zGyRx$!bLpXm7(hKeKFnF=5f^xBGiTc z00;nMphg=%+4RV|NDi!E$YC0?3K7JwyZ`|K5JH3wW8qny8i?v2f{-TZ0bn5@k|l@= zzb97bz5qY~KsX(m3T;vSBIZitVGsFUoix?p0M0HX*>6w%zyLx5p{Y7QHop4{g3owBAyu`(uiCPz+K2p2vo>L? zy7L*wJvLaK|2daG|9Aih0fkt07UCcB_!tbt*!KKm(GCCt1)W#809c&m!(@yA0RZp- z5EB3o56gH04hn!1or|dZFkC9D6wiiHW&R-qCkViYmku%NL6!}8`^KOW%||s0zz|~) zuQnbMNTfy?Y<*U6Fd&H53xE#(j}R}&d>g;`KL9{#=Lfq^;!BfFe#V>=n0ZssDSSZa zS{D!(8S#xm`h6n!p**(2LwVo2xFXPQn;Hu@jtr*aOrG0C`FkM{rkWewM1rQ zH(r<{{0IyIH$VUY0YLz6CddY_08mh<9tDWt3je)t=YtG8t`YLbd^i9EdI1K-XXM}d z{s;u%D={3O9f-2&_%J6!AbbdgAOp4TuYdpa0LNci|0EOf;iUzyt+YM}Gql4ZNqX_y z{0*-a0^Z>5_7B7q4Bay$6mBi~dGJ2vtc%Che>gQS5t`=?hS3U_KR=+j9ty{jar6S? zFOVXvbEB*n?Y?6`d-_4UAB9DJ6@m_R>|vm0{cj8l=aA%)oazr8xDiHt(F6PfbgX?S zoyO=6-~hmO^T7650dVC-6diY9U)l!>l@1K6Ez@$py1e%x+?mQ SS`YvL0YLy2LTrF)@CM_0s%lLD diff --git a/samples/h264SampleFrames/frame-0357.h264 b/samples/h264SampleFrames/frame-0357.h264 index f219677a1ebcebfe8fce0968fd976d4734fbe007..e1ac82f2ad73bb5871fb12d207875b6cdbbd2fe5 100644 GIT binary patch literal 1084 zcmV-C1jG9P0003AFaQ7nL7KoCyahKwLs!(4oX4OH6a9@IVHK+4gz%ZQn~p*g;BgX6 ze9^899at*z{27E`%n<^hU@)8j5C9kiIn90^2d+FmxaRud_%X8*UQF&BCr5< zDg@~?32Z>CC#3E_00Lx8ZiGqQ*%yETfVL6;$xSA+goac8@VE&8*i{R7xk(Dy7a#x- z2LJ&9AQ62c6+=o`o(%|fm2dIbZ*RXaNWUn?NuUA4La3H2fVE z5C8}qfB=GzMgRbTxCcz|TcLmefT#cn2JROCE)tpkfY{@KqGfH`z!#;E%?BXI&>?j# zeMv-{5HSz>5?lZiBN-hIV8j277JM)Tj6C=(B;EZ*{vL2eXfz+l$VFu_(4%`*;fI^p z!|LIV#MS`9Vi=4g1)W1&7hB*kQ$Zj_Npe)DKyj!%(hum-OHP$mDt2na(2AOUlNd1=Jr#DDq??S9dLY_N8c z3yWuh()er-0kAwALyjOy#O@7i3bX-X+bo!p(canq|AD^r5Y&`79Tg;>$H(puzsMMT zItPLBq?rH(0a&(FOS=yQKl;Xyl&$x8Bc8vSXa1NC03EM#$Al;q?Ys$abeUeZQy=|A z-K{_B$YPuYKoF)7LK_n`1dWDmlO0ty5kB2F~SRlEjp zc|Gku3`*7dz3Vu3n0LXTV6*MPf=m8}=L_%9Jxfw&184TDvW=v0UWbV8I?ts_{qKDZ zi6My)n7{#-1OE~a)LbL6CQAST1DF5;1A=9PhyVx|-~bR1(!d@Yz<60LeFhXi?tYOd zf@aYfC;k5dZUUo}NP-4)u`GmcV9AzwCx1)A*SnHNefqV%K#6r9W}+#%+F0?xfDv+= z(7yWs)pcTRs-Lab659t83x)*K`TYC|&;S4dK>#_4tO2XQ8;k$|0YLy2LTdnO@CM^Y Co5M5! literal 899 zcmV-}1AP1d0003AFaQ7nL7PAtyak6RgsK2Ip8`pOPzYIWLFftq61XWX;{>(OHiN&W z+MpI@4~@V92A}}|pv0+Hb;ymjx%?x59smIVASfV3J(1Lc$vA}?)m|E$00aq!Qc?n9 z)=#$G5+nElfElC6Ve(G{K)oi}z?o1nmHq($hyu}-A|qS~bG1W{00s|%P1yxWfS3l8%o6|jWs%yh@8C}_@%Tg$1fT(6U;sf8gW%i{j4Lg|hInAB z0VaN`@SrL+(*jbc0vJOc8mb2t0Z@5&En%$rx<=*gSgUi)IAvWg3zyIh400ICt@ecTxSI@Y=2vOXAYEI@G-Jf~W08I;UZ z)SgNI08P*U00BV&ZYIzMuK-Xb|G@|dLj)WE9&nah$9Ebd|MM;r0!i@gEE5*Q2$J}0 z4*{?|97B$Q3th35a#?@=fuK6G=!BMqduIFW5B~f#`__jD7T~F=2iM1|r@yZZJ{<$V z_*gNi025>)#j>+hRvv{5)z=eZQvbWaUOc~=%^%hP0oYb~ieW;}&w;QMa9dVt?t2nL zf7UL^>2+BQQs{sXrWjHmQ&jTb_xJ`uDYW#ISvlTdKwwQT<`ITK{3yT#LBK$<5-FE7 zi8tUG!R$&XfK*n#Uf=&=p#3medBgV zIJp}&KiA9OANn~&7?42N#>@-_iUV3hKwg94+ldlpqyPjE?f?M-Lg~DCfB=E2004ld zmIwy;3k@yg&>*q@bNGcK7=%cTw*P|yZUUo+K?s6T`7;yjX6C+SW9^Uk%fr^^BzLyp z9+rUO5h#1sqB$)rV#}%^0olnvU#->v-RcmPHgo>`bk*73C=MnS3<;<6`S=r{0003& Z06B@Y0jt0pi~s-uK>!s(Z2)TU2IJpPe+vKr diff --git a/samples/h264SampleFrames/frame-0358.h264 b/samples/h264SampleFrames/frame-0358.h264 index 3af6eb82736c3eeb212ae590b588b3abdafad179..fbc9def08c07a3d5740ce2feba4153556bb069c4 100644 GIT binary patch literal 1291 zcmV+m1@!s=0003AFaQ7nL7LziyagW;6vOD3RJ;I|DS$j*2yya&j3@L}9&rc*3U2L%37o9#dVASeaL zSO8f6N*jPUF95~A?m*$f0Pa#cxC6isCWTH6JpdqdfTFoc*?>Lx9|&L%8~1=fFtB8q zlbmfP&JjtN9Rq*@TmTAS1bru322KGiV>Ft&0u14GV5W`nVlOGTsi;5UIl}UWGy!1Y zJB+8|X^#MDjd=lUMH~;*iSkFm;Cz992;<;j+6A>93v5grL%LiW@i+mg4Ex51Aft=T zATBTpKdBP`gn`j7ukK!l^iX>4lm%b}t$H9HzfLt!T2u8xYK{EcHC5qU<06;{C z0098tG!j3cs8*!sfP`paS2)`UnG7ZA7yt;Ze}F&$AR}r}4EPN9vv5{c7^|cJ0s{zC z3GI~6+wQupt4U&BO8b_ASg2l zJB3W!_y8anKc(Twi5mILrpRa|kY?d{PAgd`Bul+r-~cE9;PU9A zKts|f89T9GfLs6$z|6rWFu9d@L?x{U0206falue60IFZ#c%T3f0B`^h03^@>1pM$5 zCO=ij01N;WNwi!o%`^lFnGyg5eZugEK%GYq`6cuWWq$wwKpbG#KjZ`nbzssJV>C|y z06+vm`SfC;+&9coA{%|OWFALL)zxg1JzgED+y8{83(6S$%!WsC8=OiSqyrCzBY{u^ z9uEzb6cZH_+yBD=?-@*?MmP#S1_`Zr9iRx|f z{5H3>L06+<0EnMhX21b5F_F;b2rszNCc^+pMF5RXmJ>H5{Z@32&=Bfixk_vzN z!a|Stw4Cm~5By*O)&TqmXr33~C@7GjZ!-_^Qq`{bKRQ$Y;D^F601yfSf=q*c5g2}E zrFPgb=Aa060003&0B$C@2Co1{P(lZRA#OD&H|p3q0IK0PPr(Qt1WQ0ZeZnS)W&GD~ z>4rQrjd8>I*Wydf2^o$o1QmLVK?Jz5u}TyzK?L z#H2i9j{p87B>Wl)fO@`puL-W^@ata)OWt@j=^UY$|5`A&@xRwRC&36F1cfDmb|BzN z!~{i5=WrFY%J0wU)YhBXL0-o0%_xO`S=r$=ipC(0003&06B@S0jt0pi~s-uK>!s(Yk+F-2IG14 BB$xmI literal 866 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 m{QiCf#_4xB;uc8;k$|0YLy2LT&(R@CM`MIf&x` diff --git a/samples/h264SampleFrames/frame-0360.h264 b/samples/h264SampleFrames/frame-0360.h264 index 96b2ca4c2a9ba3ad8c54f7ea6d0b00569a001175..d5e86d2b19576670ab1a72622397b07839827db1 100644 GIT binary patch literal 1524 zcmV#93i~n6Of*5Xg3Q*1b2#3PUrIX?n!*P}XAYYCx zNGfv{*8}W;2Y?viOF)&r{vR^4+28;K0H6UzD(Z}NQD2a%yW9-_P%6=t1ON`0Z~yn0 z*aIr)P~s;?pBWq#7yae{Vn+c^flDocJvIyAcmOasq)slN&7>zF=vyv@%EkNwU_j)@ zL*pC;<-0`vgKfEnV~ z3*GSNi)k>SZNb0*5ICp+DcFmi|BL{Dt7x5K5#%*@yMPcdIS(;2X;mDNNwdHJ2m}n@ zS6}MXP|`O4xDZfzE5J;;K5NS{Q>)SlLKK6JQ9}}0L<0}zL4in45(+RX-sMabun!48 zE=#|Z08c9b=y*igQ9WUiR1iGCg1eQtP`oV|0FMGl$iln|fLy=;-Ftuz1Aw#H*Mtnh z&<T0IPg+>0VpPbVe~H`d&n*vih0Y&3c_~+A)sY| zFU7_IYp&zYo`6H?Y<=PRHNh@U5%HfZ_E_k<9uFVLL&)Fg@p_;BAjFFbdT1fPyJ5**N2jBqN z#d*U+73ahZv`5P_({2mm+)?krh~m0>9blE46#17SC!q2Y5NXul>QrYkhuLju?I zz6(I`4M6Q!;#gn<P`-jrPPuU@`DdAf>1mIFgODEsQ46Aj>M>{|9&6t<6!A%3$(G=Whp{kw&~z*mq5bY zX$o8l7g`a$2D;;qv*y?nkdXkS4+5%_FKq)596$o80sC-Z7x*DBV72wVGDbp&6AI=2 zxkU_y?1HZ=@Q225ooAIEhR!D%O(<~gL4HV`u);pSY6T#Alu5vrG-v5=`EP&kquGH0 zlR6wgujs_7lxQ-@s{exy1l58NG!R03IRJN987$jt&CZF<9iY0#PA#_4vH`2W8;k$|0YLy2LTrF)@CM^K4~ByP literal 1044 zcmV+v1nc_%0003AFaQ7nL7Si&yakV8LnWij`2kM?7_J1K$Nypkf&c*kP;ktxkVruR zxdHy4uK`#92mk>92q9pJ8nA@^iXeXn?f@1sl<_c`4Kqo(;2@-kaZQ~%sRN!eBejRY z02#pm$N(TtvCv2&{fF?GXbJ=YCqlJD6IsPrT$>)*jOYB|`kVp)?7)?f{UmDwYMcB3 zk!lQ+;Lrg87X1q_(IdbB5Dgsk004k-#YPw-F=7nH*G5YK5Cn3>8X)p2u#ND30)PM@ z2oj^D!O%8w zzyttb0R+I~uG>0f29H4P_yEP>Aiy@HYy_`ykQBqNY^((G{=k8S!h)a(VGJ~SekkFP zf?s?$Am9KnSAZudF6u>qHSiJ%!*f7KXA*!&u-3;);!(f#ZPA$qEicc1)hV&o?*u`B z4TcaBYM(QO!3VEj2*3uwh3FK>fjmwLTWN{FO#+Of%u;>{Kmb4xO`Rwe8rs31A>c0o zcg#xW0?>b}p&2Gm2fUbHndnrb!6rlS0t_%mZlbEMy-=|md^rH902Q)P8VB7{2Bqo% zDmq{RV^>0n%J;f-s{jE2U>0r*8TNnxASeYYM`UI_i##=I)9eS2D8PJEmw{n=v;TW= z7yxw+F2cB;$pz<-leiS4={!_DV~pA70q_VoH5@HpPNFfdC4} zCQx!I{rCq-(txq>E6;!~Fhy_U2Z)%fo4+^0W4i=k7?6Ydh{Yr_sW?!iwM2>k$_zZd z2|(}+z~D|k3zMvjN}>3_&W(ejzsv>Qq1a_9LSJz+U~FC%jj>_iC`~K=xI?e=&zj&) zLPP?PJPNkNzj_Q>03?9^FbKWD4R=NRt?1bq3yFnwQ6h&yU%!Q4e!s%_&KoT9CFoIw z$gp%V^bEL?G4!d0@9G60da)uwY-y0{iEID-+37>Pz<|l{;s?F@VqFwygRH8f%V;nr zm;cBi;Lrg6OmcE}qG}3h(hm^iKWc=sLI&wUbmF0eAtn3_VL|F*naY0zAKlyUSM+>1 z{C|ObyalTOx#3;->3{%0g}?wn5lp|zAa`JZ1Lxm%LuUTq0(m#_4x&f=e8;k$| O0YLy2LT-R+@CM`eFvQyc diff --git a/samples/h264SampleFrames/frame-0361.h264 b/samples/h264SampleFrames/frame-0361.h264 index b73b7fd3c64f73abf91097884892b2c3a3c8a637..8a6a6da26aa4792de300be4b4a20212ada492cd3 100644 GIT binary patch literal 1524 zcmV$-^SKs3_w!=1ONd5Fa{Kd)3am!lLnXwr5ED> z06-`Mo*69w3@=r_w}1c;1fVz;W(k@HuWU#cg^=0*?mz+n0RV!D;LM;RF{=d=XIsVj zoZ=y?Jzn6)09K_0jeuYAM3QjO9Dn>6rpw^~Oc4wO5JW06@B@MaA^Z#|oU=LazuWi# z8zW*z`fFV901yYLj0XV04ya7Lh7ZOV8G&Eh860$9aeWkq!GR@0MC#*qV;SfIZ##cm zkN^u<0HaR`C3?HxOX8tvVnQP&AfA}`T_xqtk3Fu?8Xnfv-@d>ez*Hc$|J0zAt#I@J z0RS)zgl4oQSj_R_zx#MWYFYyg9>sL&B~O#G0z&}`9AeKJdBA=E06+{1E6u0TYuKJd zTrWfK00FoGI4v%02q?BihJMBJ00IDj03aM2T3}UJMcx8XV+dRTfq*K?imh5$Q;}#R z`~V<8O?iNTV!#0c02~GdakAx$?*s(|7Et0e18$s&FSKp6=D0?gtscf>*~|bG1`KA= z;eS}d53-X$Gk^sIqj*~;-yjgt?*IVKKm!h?bvcm{i~9&T044 zOru||^x#zcphM%|fIFyYoG@JBqgk9lo9H~8mzE57l!Bsiv8l*pl*SnfC&eJzz`4>!^o}k zkVG6ZN`3;dOVD_Lp@@W#(ddHy)a<%tGa>*m2^%1i9peOylQ=;a1#<-2C@aa={!V?b zKm-d$#~u+<>p9N;-T(}5U{bA}y@}{Aa>77x^hkh&RVxe`$^aMtybc090JiD@!65~a zBQJd%e!YNYt$)P82;d$5fxv+BIC~K%VB~zj06^dX1Qb6&06^daocn<^SN-ek4m?Ooe*SO$ zXA9?*7;a|pf4Ea{zyjE`aNE4XSF!W_0S>?b00BV&ZYIzMuK=O2Vh4a~2Y`rM0F*4{ zub6R-004jz04>>|0`(586Q++h>;>08(*1ai0%a*AADrOB*inLzJP)HT1^@uGIN+2? ztH3t?LEHiC(5w3eEUYd@D1ZOv5xc-1y(oc^!-_xsx9bveoGh=c!T)-D$PkwbN{D6r z232_`*S-R31t3}mAZipQ0AgIPo~i|a2mXKwAo!HE-{>rMgdTBNAU3e%E6~w(gX8k5 zkV&SWFfrN9e1n0E0s%imnvb{l6d=JGg^fIT`-&wY8KM6@^T+DqgoU~RJ0UqzPy!rS6WTJ&x;E{$8hc2+N2P>eyYORqz?yhRKc9eOU;qFC aK>#_4v;nKY8;k$|0YLy2LTvzQ@CM_}SBwn+ literal 1456 zcmV;h1yA|_0003AFaQ7nL7TuDyakDU0RSKcAh3K;!GTOT@Bsi2FdFY$7N@USNQbY0 z0l+{2U>!u=nV5i|kQpuV@qhq;M*sl;Q7MBz3%x6-X%2ED_&vY?Kxjwb2?*ENjD4n- zCGY?O03o;qv`89ud<)U_1a5>(05}j7Tul&UUQEB0REd%E00aTXz7KT1)A5SKw;GKg z5C8}V-IfXfrZ7wxf>;{9{on?G03ZYgF<{Okdf4U@c!RJdd4L^34-#wuLAVMCR!~k! zIEbVIhXjmGaws%+JOmWeg!jix}b(CKkY|28byAh)JN4@_kaK(J_T@Ka*JJiO3^&Fwc-}DKmvybY@VSy z65^Ub0Du61a0P{dg+>QDs#WMAznOrE_a6Y(GE3q^h%XEY2crr6009AT;2%=osC7s}AD6&j@&JMY zJd;cU2$cvVC4Sw&gKn%AOE%E!;a}x1tp~D%eAeK@-{1O-7@;MWA4Eo(4+*?L&M<^N zRM@bW)$U|wzW^`?A1m0S+Nr<;+5w>fqd@=^3*FBEg(;Fu7KRW`fq)?gEaA*5WV&w( zAX23Vzy<^U0r&t^Y-x}T#YX;zm~6INGO7X|Ts+6=23Q@x`%i|}jxsN83>*i1+0sEr zBsDC*cmLt|05Osc_(6f0xj|S^wl6;855Q0wxxw!LbIUB(|NBj*5{UIZTD>oUjBuPT zATBfG8in-wMCn2~ZG?mH0f#wm&Ncv{=G(MUr;H*LRMQ=cexXSMC@=sJ0cOA$8-3+% zQV{*&bOgDpB}rWoXz*CT09eExB(Z@F*&}}d3}CFU=h^Ql20Ehi;7qTmDdFa|3O~mN zC|&Xv895-ec@JT`z0a{sSk~=+&9@I+1v zzraW_+vh)|c8qCaOp`v;7<&pqNFE39K1cu(YApa3m^Z%yCLBT+oZwXN)(T9lB{LKk z|M}2f03KHD2zX}&9RKy-tVzmHc`oSqfAxL~N`jTK7upD_*=e@`nt@0bfruJ~34m3V z@4OBGf9wE~1jMB;eush}vq|_}RC)``(9_GG|NH8s5@6u@gB?n*mvEB+fKTwp4twcP zg9Kt0Fhd`(rKtr>+vmhb<@@5XAx({)kcxDa0B0lS2LL9=SbZ2k3E;OS0s}S~&zuC& z5UyX4K&g~qP&JIRr4UKC1Kro)3kNN=EvAb9^>cnI-!Xf$cE1@Qd{?CW0VZO7Lsl~t3^q}ViNm+sZat)(A4?F9z+k|dct!z_fB*miK>#_4yaB7g8;k$|0YLy2 KLT>n8FTt2b48ag81_KSi0RR9% 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 literal 1112 zcmV-e1gHA|0003AFaQ7nL7D&>yakbe2ZQKzP)HEBx_}%4JTB?U_y6AjAP@mh+!!(9 zm%FfBp5O*>6xPz)ivp6y(*M*P=2H(0Y7FoWpa2L246_2N=obH?cnkm!KnoxO0CD-j zL2s3i`pL520t5ghuULQ(Kh)qTvXC~PI3SIyJfMoy_uoB7@C}2@T=SLzxF*(Lx7U1Ko@dCv70097H z1qudLny>JAh^`HwdY<6K3vo0>iRl}-?q3R{+rR)22mz!C7~{g{?*qr}LKkYhFa>}B zKpcuJ0E6HFAYy|P8Gt1I@B=^;1{&E=;S;9;&H;?FE0;&FfDZ$&Mj8kujVR-$M#`Fi z0fLSVd1N|ca51_e=ZF9V00095ht=8q4_NUVW}pDv0uKNXFgYtVYq1uN2^VL03{Zza z>Kj^Sda$%xRI7u*oB$|D+gB$xOk7lM_&y^6JGl6if(OgQUJ{q{iN%7EUo;Y*!X)bY ze_)CZ1$+J_Gt>CJNd3ej{3G*-ThAjIerz*kN?bqldyK@mq#UN=30DLn!Hcky;j9JM zRw>i}%kK~K{16ml#770VsZP*EZNO(xm%%8I_)HlBF#(aE0AK(hB1HgV#~q2mfvH90 zas;jzIRlkqD3$vLb^m&RK*A*=1q%-@=^5$7d#aUslGF% z|J(oofH5i|J(uv0L8pCR#GPCFq%{-$KD1IV&~J~@+AZ*TJ&sB z-~b2hc(u zN+I9B{6NU6#|1+lwcw9B_Ca>tno7tZBiISZ9D&drfxuP(Q+F_(ul%$tIPWKq1_1;i z3=UhltG6O&upl%w9s6etpJ-`Ju3;5+Co}biXz+eUsod8_xVg`_(>%akV z?5kEXFZb&KNu4yLpGK>#_4paHAE8;k$|0YLy2LTCVL@CM^Y7RO8g diff --git a/samples/h264SampleFrames/frame-0364.h264 b/samples/h264SampleFrames/frame-0364.h264 index 95d05521b9dabd4dab0f529088d88191e7937812..07cdd524b3d0322b899f81d050b9afc0251a718f 100644 GIT binary patch literal 1506 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 F2IFmAx^(~m diff --git a/samples/h264SampleFrames/frame-0365.h264 b/samples/h264SampleFrames/frame-0365.h264 index d88e23ae302031baff48306fdc66680cb7b228ff..7d979906e0f3e3806f3a73c1bee5851b6338d5d9 100644 GIT binary patch delta 1331 zcmV-31Ta0Rc#hzyLs08X6NoQ(a2l0|sEW%L%Vdf)vh+|5-1G;kno=Lq38C zzBgUIJ1Rb}z;wdwMK`IF?&1%y0WblD3Rs1aBZtha_I~hx00aP_1B`-isK?b6K!sJF z4F7N{)s+MQ44gxLW*`i!p+m@>9Uw9`Dm!^@7y!oLG4Ls6uqUR$d=BscFet>%Dxlr( z&B5ThUklX%us|>;a&hn)UJX+O{L&xz0N?;19v_4ePCrZbE>&S`L-5f+0cy4ZKrnCA zYR^a9h5*Wc{P8*;LlVH~rs~1V2mla1k;(7bG@{jQpR|&00a%9VgLwqW$*2PAS|t-b%{q>yZ`op5HLAUF*ClZ zJH#r_fB+yAGkslqu(T93jkqA-(p7+oWPI0_BBz&-h#?3;#~`7eQBMXM3(QUha(J*& zp*FUEEM%pCcuDzkUHqT|c~A#K!Y0~@>kXAb156$_<6{aJmI8JF2LF@*a2y4l&cq;O z1Ovv882|u4xBvtVH9G(UK)Cn&?r`uEIIP2`3-H7bkC~(>f}il$!~p@ooTCyzL33Se zS}idRDe#~iH2rF9k7VO#gT{gQ#DFT(#s?jL9z%}AYq*1B)HooXD9dgs|KR)p0RbQw zCMu6i z`~W(b^utSKExynOpac%#P*n;pvf%hB_2HPoOKOBQ?~_fU3HSj}Wq58xbCWgl+5O&s z41fS20CzBOCMCs|C9~1cIQswr05I!WAYr<}90jRV#=$axKJU; z1CTSu*ad}^6aWAN0RxzLsoVd*Bme|S3;;0UM^rE%Xc`_40Eb`z00BV&ZYJ;suPVTf z2LWLY09_jw=<&MPh2j7iK$4-gfcju61tc^80RXiCEq_=!1Au`7_$P#7>IJ~xh~L1Z z)>s7vEr$P$4VIjZeBYD70x6Tw0tkP}0tg!gW(&Xow?$Ct$n(eu5&ZLffq57MF{QoM zuHXUkwT4+nLGAe<1`#fkQStto3gp~uY{@^sFi9KkAEB?3` z5)_&8ra^F(U;2cY5JdkeaP>ME0ib}Xt#DRw>v8?zm=o5_Wmbx3gmd}){(qBI1um0- z10H|mv?wG|gPcHI4P@-grXKvEkz*N6u3jvlbmvUr-97qfR98Or$l%z3&iDUc#uw1&xm4|5${j`7u3d7W+5IM7yOc8FU z`$y~kL&yRQ&J9RR5;!s(ZvblW2ICKgJcR%N delta 1104 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 diff --git a/samples/h264SampleFrames/frame-0368.h264 b/samples/h264SampleFrames/frame-0368.h264 index e3bce77fa3e3ab24dfb80aed0e86783090c4856f..d1aef023d80965ef56e2fe019fc92234d8bf5201 100644 GIT binary patch literal 1314 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 JX#i^Q2IKojQ?LL4 delta 1259 zcmVa<`G>O<-7n81po?Y0VW27SCF$)Iwic7egr^ z99Cbv#(xKYz~~!oWT0>=SWXm;pZ*LHf5R28H;Q1ss)L2NUUTvs*Qwcg8B+zMp%Au8h}DaZ1t<@kN@+5-c6HEe|~;| z4CWK$w=UX|Pk!zQ0E0Ow?nd)F-^d>t{`qJz9$_JW$IJ!H5s`@$&;tqBtj9B)Pg7Um z1|aLZyfHK?;xD$>!GH*h)ETFbfi;VG*aiSih{M{FU_@BZF<3zpTrgXVGEDz)4g>Nz z1SuPhG;e^K@Xt51Hr&{W@Bl@kFr&juiQrBZ~58jDn5K1Zxz5FEDaAvdhk zv^xKPcL&9kHQ+4065y#C2LR3sg5gBya3O3Yj6eIJ3;=+YP?vhRdoQIYfAj%{0}M1o zK?EI+Q`*zNcJY8J00lRFzyuU;Fmyg9@4x>4o*w{UN0w+tWMug_`ZNLS-{$}FBp7qR z0RR9%6aj;({c=>D!~?E{vbjJ25a^*sBgIF5cSRhlkP!PB$2~S!oc}kJHNzkP5CjMX z%t9*J5~Cy@w|?=DL^uEl776=B$0h=0rAU^5eA+b{qG1Hb@4OaMGTEM92;071b}0&}r-A7%@M zRbrX+0Eh?*9ZsWns6rBPqo;6S3jqL(fMFnJcBbo(%BXxVpcqIKz`!rS660iyJwPFE z|4b|$qd;_+I=l+5AnCPUtrAl0U{M2q5JQ(ByHf!=EGXNokB$Q!M5O9l`}(lk{S9 zf9w-}tcI_`~A>9VV!y`ReH`(`%XX+FkPxgmMg#Y zjVdUz;EUQS0jwK)@Rfi88VU(c6sbz>KnUA>zyEs%*o)*S27r^c$0wl`kp(sD+m0jw zx5-I>VGsM&Q_5~KQdE-g;DtEN6c!F$pD+97tP3%@Ro&hO1c(3t0YLz6Ca{wr1vV3` V0jt0pi~s-uK>!s(YXEBS2IB=+8sh)} diff --git a/samples/h264SampleFrames/frame-0370.h264 b/samples/h264SampleFrames/frame-0370.h264 index 6910b892af04975df0aacea0b2986754acf5f7f8..84e018f98a4809f22c6c310b8ad8ef57bbe56fbc 100644 GIT binary patch literal 1190 zcmV;X1X=q40003AFaQ7nL7HG1yakbe5D~7$StONa>PZbfA$xX{GQ(4bH(z8L$ulAeg9nG^+gK z_)J^?LH`L?5d6ipK>Dx(U<^=&9=F}YrBZ7@cmM?eIH)GtN_8Z+F{u(p@F8~1mMMNk8f(tpHEu;V8qJRae*bW0lyGESMUC6*PH#GGD z@5sOghwiK#v48{#q;9znya0mGCh~@!I!UaRP_JwNGD42clyiRQ00Z}60D*&V;b2tl z;x+&R0vn_N;0J`ajS`|eG82`KW+=;WOxg+obPPah8SnrqDuclkDiT+Sh=Ivu&tek- z)!mo=`|kh%Kt_NupbFs%kKNF}OBn(Bn?b+;5GttvLn3d#^8x__rKh1$YDS*^&;kYp zbIMHLqKrw!pTGbJ0|>uHUg}Ulm+k*>LxSGC4uvDuyRkkLy%QK^aYiA+ypkLYKbZy& z&%#3r9TTxK#BKw4)AH$i`9KL}Ksp*aYo+~TWl+H-3>V>XBumQx`~Ww#zzPBZhVrW! zEeCF9AOH{~009CFPQU>m+0O!JDA2{I`ZuBqf5Bj{F(3}q@qmM&1bFO1yNEU|LxKt7 zjJD#R{ttiv5E21`Snq}m@ldzX1V)}(|1wZm9hbR(f#3xlSQs0UTzII|LJz7b*Z~;yV;Kb0ohi5Eh-Efb8?}0i6kTMGJ0IlnT znMo0U`-Nu;gT%IsVkQ8}Pyi4B0Hl_qparsj5*_Nd?7zUu6w|a=wdqoHx4-zou<)-> zxqGktzxZw-pOw3U6L+|v$bWtTrHehWXVL#Q23Q2m3|SO~20xuZQ3Fs|;(r-h?_d0Q z!Hh(T*YV)4N(51jP@`w7-GMh^pbbgc9C)e&m}eza_;biunUEA~oZomX-pw_d{{J$z z2mgM>loYZ~$*lFh{R5F~`yTu*{0{Z8bp8Fuj6-t&)@%T{Y^<_)KaD^D_C)@QGbjB} z0nVqkGb6LOp)i}U0h)>cz(@AFFfVD6zyLrCL1-@qn~L_*9etP%F}kn5{0XOz-bNrK zQMRX<@y{6%;>Cmj&Iks;0m4^~f;#=e zaLm871p)w*VOk-Htm4cr4Uar-bM+M8P5}URU`oh#kTIb(4gLT~^@d6CcmRM4eubE5 zk>CIb2ab9G06;k6<4ls6u?Ay%qa}a{0y$z05Fm=|BYYo#umA`G1f=OOd`CN@i#iy* zG+0NkhFy?tI{U%^5WwK4p5$nVgVNCNC;-KyCn^n@mG34{T)BVZ+qjDVgUQ)Pvpz4#N&;7R&U9DxOgVX?w$XwrbO-+UkU?*Pmv z(Zu$V?0G+-0s;nl%6ei`)Oh{-=mMNQV5NBj^uuZv*ZGOSO#+Of%v8P!Kmb4xO`Rka z8rs39A>c0oZ_G;K36XzSf-+2&FL^M(Gx5@o1ep)O2r$7Nx{9hk^+LpL@X!T70Iiap zV13mfYL1`+qox2BF?1-MuY0FTumBJS0cPNlpJ)IA0)SGac1B~^v%^-cKEQbLj0eRz zcor9{Klir*fCXT}>@SJzfL@u2JAq0*m&HTY6lTO62f!fXlY1|CGn4r&`@m-y2M9|o zR?dF+ef|hN00(&h06-vsT9<=?(GngX1R(+z)slH89O6rOPLK(#3m{+?egHBvw2x2n zu!Fv3mKd>|U;>ypbK?T27zN9i2mrVgY-rIdo|a|JP3{UzN2|NK3RC>=5(%e=MczQFWb(F^eBzPJ_ZSz_vbZi}O=$2I^gkGgUi zlpLkt0Bo4u2-!tSk@jP+rV@oNxi=Ih9y9@#r_gSFk$Ld@$Y#_4t^upS8;k$| O0YLy2LTi9(@CM_!F0dj1 diff --git a/samples/h264SampleFrames/frame-0371.h264 b/samples/h264SampleFrames/frame-0371.h264 index b93d9ac371ab63403d89e4e4d76195c7dcd9ded4..573150e5b44d15794cfdcad04cfe2e2ebe2fa471 100644 GIT binary patch literal 1850 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 diff --git a/samples/h264SampleFrames/frame-0372.h264 b/samples/h264SampleFrames/frame-0372.h264 index 0f76431fcac1292bce5ef50b2fb54b619dc40513..ccf85948acb09ff2beeba2e218623dca05ba6ccb 100644 GIT binary patch literal 939 zcmV;c162F~0003AFaQ7nL7Jc%yakiN2szF8n=?!Ug*X5p00;qqFr+@6n;-0$G{8kD zzh(dcfKUfKGFSkRKrlC>3>CFp@fv*DAix2I>bKV903ZMm2q>Nm$^s)Auu(R4fB+x} zIpfiq!AY@|3i2<%c)(x)AQ({^p`h*<=KE;7Sqd)@9C=8>(OX9|w5}1&D00d%1DOk;vuFU=b0|5F6MLAKfD$xT0HGT?! zXaePQuz|Bs9l{Pk03aFw0t3K0{8T=c)v^->1yu|H@BrX=ADRRTgqeAOE&;|3ADuLq zGAk3svAoGM6MUoG|f*65KCE`XDBq`E`fCqd42!K#M*vqge zArBL?|AYUDwr0#VcTmPNfD6V@gbKL^i8Rr>KnMgdIK~VD?+Gk8W#!1_2<-h&~ythebpH0tny$AjXKm01#6Ee6IuJpkM$XMgRf>{f0mX!(TsuG73ly z8#N(&5G7M9h(bUxA$2uIQ;_H&6|le!Uvg?NZ0YBEWn~A9#vM=1{k8Z|KH3KxL`0)(}{8xDm5!A7r+S*0V@Ld76teL z;0ZOmEf4lQ0DBj*{VjL>SSb7ajKGh7{Vn;P(a=ZxoE-sl3mDD_cC(*>Xxg2>u}BR9 z8B^E%8v$)qPp|&GuwFv8RolO>UKahWVc9Ss4(oc)l;{4O1k=KMrxFwmBGrKppjrT7T3<6n6`GD#q8&QB<{P+`33g!QNcu*Wp zIc{s+qQiGhRj$PP!s(YJh6+2IHkqi)sJ> literal 942 zcmV;f15x|{0003AFaQ7nL7N~NyakisNeP6o`(s`SFa{^B%Dn(U1gZ{8V~#vm5O2=Q z;KWd9I6M`C;GoC=Hk&jg%Ib`~0t1RXzGuuIDTN4;|8M|{K;_qv2rMh3Th@R3fzyBh zg5b$W0CX3M-Kx|@kNv;^F@P3KAeSa%VJ1?&H#7IZmXsry6eu)iM}y*qsz+omewpY1 z5DYF+i=cdk>8)UtO;zv^PI9mlQa~aB#l;knr1ii9H~XgQJ2?CdjbtYXAZO0=g)m7r{td-@GkAKtR?j z^`$}LiP-Vs3YRGoJ%Qpf-U<|R;K13yTj93_6u&(P4=F`&4442aQiU{OAni7|`@}o| z0s?}REQqNn1h+VokH97XAp)8xlZ&4^sUd`mR;2J4Gl&Z+50F$FtTL60r%Ap53#=sf4~M2$AGwm6hK4^6FdO`x5bc;_h9G?;8@0R0x#}cf4-^iy>r2AWqs-? zJ@7`F{}`Xq+3WY^fx0j5IUD`k!SD83#CBjb4(npR>CXTB;3l3E-8hh-X%?&vTO&y! zB8uPi0>fe~TYa^dIc%fnNdN$orV4;WxpITRDlp8PUJX4t2??QyKdny+@GyZ;cvHc9 zJhsSLzu){YZ%E&7cq8pFwqQ74ue|7h0D$B`01yFgYz2UTj0hz|V4Qovns`?)`{TlZ zh@5t}H!xUk=!(~3Kl0bm8(DWkbbCH={sUiz0Jm3nQh)!p8NvQVKfkm7yk9Z5UJw#s zVu&CYQZs}oCgBPhGnjMBW&;QphhPHQ7vB`51TFi332M(vS%CV>x($~CSI?n-?#GM@ z@CPjGY@V6_f9K!-{k!;JP%tK*70=>41iSzM0YLz6CddY_0C+F}00BV&If=3XtH2wK Q0003&02M-PfNJmt<8i{07ytkO diff --git a/samples/h264SampleFrames/frame-0373.h264 b/samples/h264SampleFrames/frame-0373.h264 index f3b14538eb4dd9ce30e20c64d8444657da076519..e43bce0b795bc6d7213d2d24458200f342dce53b 100644 GIT binary patch literal 1298 zcmV+t1?~C(0003AFaQ7nL7KoCyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zAuF7ofD9C7sK}3Vu5nkmtniEUOPm1U3_^bc=U(FhiEnvhi+h%Q#s;GPbAX*YpmsdxC_KZv1f9_BK z7ywaLvz!^GB}H2P(qpYCpbrC08Hv%qefEIormSEdC5!@l#Iai#00;<>-~b>T27*WQ z6$;dx@DPg#F4mcQr$S0ldH@0|U*HS?98i@`r4HR=UwbkRUA2G$0|;ab?iAnLd##D8 z@H3PXO-c6wgtM5vdH@4q0HZvLY?eQd0||5~bb%EDqRB-lkZvH%l@?(qaH*Jn00aXE z^uJ#0NQty|?O(z80A(9+k*=D`Y=(k)25uLG=@QC)b8~{rI1;+(Iv;wJred2%sKmou2KnRmS1rhVWOql&=8~`u? zQ6|xFw=~cYCS*te5%;y>55jdEKg5~PV@&t}0s!L%x&I&_ORENusTrYg00uDp`YIc< ze#I1f_TOxo2a(eCdDBVnu3_~%fAaihL6O`>;t5k!fcRtv1warWSTop8{{{r( z0~8Sx>+l9Zir7XV2?<~YwIpzZC=j3#asWU8K!pJW16xgR^)D6cgIKj6fBn2A6aqCm zSWM)L`q?Ta^?`v5?G{w$&YRkXmSPq zFad{exCayFDg#lH3xE2;LY?~Kvl93}@qh!Y0r(El95297O(9C{n170vt#`rs(x3l+ z5r6=IKok;e8Ssd^^HnRh!G{7fz|sYS7QjFR>*h4#I_Kbqd5CEkffNPb%nM*x7skK< zAPr6c0tamX0RS4*1-l^)_g>GeQmV|L42g+u_I0|*m^3*)312VFFi z-`nt@h{L{AVWLF8A@@Uu07At++u%r+w6dswsR+Clt!c&|Ht&s4AM55m|MBo)+Hj-* zAm$?$q8i&Dj}k-XO5tq9ikVQCZ3%1RKH4AY2_%f!llp++d;bsB4%j5+QLX+i5~1Jky&><-!9D0UXj(Fst)$ z1|I(9_qnV~Xs37U(0*}%U?AnP``eiR_gA#N|DgiUl!9E8f&?vVJ3x?nL|qDet-mUB z97u=^>!5TWa)f{Q0h@hd?0%?HB5*sX>#6*Id}^cq1ADD)bDVeY0l=DgS8$NY0ss-8 z*#@G+Uf?o^jdv7)N@$FK&-)(4m`2YTj+(Fl2mq)CJHbR;B@4c|zvMiUrHCY&?MqAm z`9QegpYkx)*mnAZ_=rR>9IyZY0YLz6Ca?yt0C+F}00BV&If<+RtH2wK0003&02M-O I0BZ0Cob z;*r}%w#j_pPzi$wWWa!DkRSlTm<0Qdb7MmAYv)VRzyPGMZ^8P9KGxsrfE+jg0RVsp zEDK-NAW-39MusN$n4G3M1#nSy_<=`w0096c3NR5)R;Qt60w^PaGFyW%1rU$KAJQjh z(5gI(ZU6v47z750altc|!9%7)cM5yP0bl?S19TH02s!`)0sdZ7FbO;X;3ybVWI~S` zFbi%8q?72u4}cm1r$iJQM;Z}!>D;78w$H2}52?zhJc4le`&+`dxcw&QJ6JpH9$q5Mx+Xc?RN$NiO znv}nwAmYJDr~oE}F7`dzq1- z*isXm^l*V30EU=Au$97VY7^-H=lHh5I{*OygTMd~J7@q10oDK;WC50tBb9Na&8k6#w74h690w3c^JN zkzAK`5BAH#^`eXrdfB(#Y4am@Q`d)$<^X~_-Ui-L0Z=L@hkfu9ae{}zWhqz{P_avy zwE*=aYWFS>7`6fw(s$+^V{`$9I`+mp<1GIoV2FuCmgM)8n7TeH)VtC0C zU;solw66d_dPG?g9H{2iIgTV$5w3vfE#(Nmz#{#i_Z*eF4z<36{yWIhb>KIawzoOQ zci_O9cvoU$BnSXUKFBp59_zqm83d@JlnF%@NKma;`XP&i|0Z0dr zVz0x=Dp!s(Z2)TU2IJUi+YbN$ diff --git a/samples/h264SampleFrames/frame-0374.h264 b/samples/h264SampleFrames/frame-0374.h264 index a28e0ac2f42d81fd6a652ffa2ef596d90d0c4061..9d3485dc4d7e093c0d861d5fdced1c80d60f8150 100644 GIT binary patch literal 1670 zcmV;126_1a0003AFaQ7nL7Lziyaj^93oz&aA$K(FB2tefmHiA5-^9QR8megidi1`c zEUk<-06cKTw%sfLzrZ@W+S-42(+mVX*K~gT3bJ$3AAWE!Q8%Bjzu!{LBs%d8ykdvE$01yFiW%f-)RNP1Y8@&h& zAzIqk3dn^KAszpv@U$ffiw%JYBftTN*upHbb%H#ae()MKOaj|unmS1%;26jRQjlT^ zl!XSES{{ZnBGM#)swq1pZh3$JAbtP>4?qARY5)QONuD48z&!hhQE`C)!ph(XQ@{zl zM=(@R9^(rksNey5zyO7UGYR35p8L}HsHvG_I{0epUIqZ*5X)J~J>BpAh!&(M00;%E zZvxhP{`QC)h6R`PE~x|x70}&+4}d@jX#n#KI)%&ZO{1^<#sCGtF6!Lm4}&`=aT)*t z0SCGO9B*VpRsY;00s}9<2eL?#qAI`q1l0_Q0*Io(5m*g-5))2tPe;E5cO9Li&@90% z7mofgoy>9tW}ucaeGXqi^M$~KFycalzyJgSYB>O8(CeGmz##l53_zMk8HBS`2)U*w z8;zcW7RR>O9tFGt)&@oNbzKYtKp8_Z4H@d?(Fgr-2ny=}Vs4uHrNH1omTmw4z?4vN z06HL{6ZZY?d?Y6=f3L0J1|U5Wh=vpLfJ6D?(Q7Z5OU+`p!EsMlgW#tC4pcol{UoaK zGa~MV2}m*gcnsK8(L1~V!cZVhgdED8=!IYg>i`o+*?ge95QKyQKsFD?d5~Tu!cRV6 zS0&EWZoB}V(t)s5)aF0yL6LA$7|k4kzn=EU4VRb{*Neipy<=5Z{{PdwpZ=zrMq3v} z=ebN-icSND-jx&lbs)9~w3$S5_y5^dBb+$03`vvZA%F-}t*c8;crXDK+ICwf<49%k zK#c{#Kq(9d!kz900CXi{kX343OTXV}fWU}uaMf7%QRV-%NC3bVZ2(}N*)!XJe|Sou zKTc>f-#s21}n z0z@}|p#4DbTBFdC&`J+1G7IH^0z_gfA;i?VELubKhzN;{1OOfYpVV*!B~ZYa@Nx#? zjSOF}^7vpdVhTNs7y=2*JGffcM2FUGGV|}u00aYhKsY019S@IY#pGp2;kkeSfJg(M zd8ZB02~3wSet!TyaAK*Plg&x&2>ro;C7^4wFKeqe}e!B zb!K`NU%UWi4xTTl$P}Be8VhNlhly-5djlvG2O7Zu6PJ@-o&Qe-xU`n2z+KLmCJwbM0k?%f4Sm|) zQor> zyaGd~6A^12tB|6=f@sMHt2-;DsaL?i$L12U8Y8Fv3bF*uFq*9Iv?u7L|8@SlU7gWNEN60``+QUAZ72ro0xA9?^67Dh>_r=8VrLHoQ*Xe z{Q!snaEg#u15o6mMSng32@r$eZEWtC`Nhd(06fG6r@*sglh{fIOK&%r2$bg-;yOS2wu@f#|1ws@h3Rk!lQ!h6v_+E z>$sZT-~b2%5`X}J2mv6{c)IAIpjK=U`uHQ^B!uxXBBG5WfB*;#7!DFE64Edi;|r_B zqW}#60RRwf0ZEv}*D3~$z}TiP>WzZq_IVJQfBQ%pfx^P->-?^ezkK)gc5!j;>2Lth zz?LtOg0a7m#_)y1Q&OfRqFceOaDX0m00sc3VFIG*)DeH}R6F>@tEN zMhOSTd=sz$pM4=~psfjEF{k(g3t_B(rKq_j&>K|{b`$^*00aQQ2tZx;5kDLfsC4IO zH6U8i5YC$HzVP4x<1&oN8cys5x_b48?syp4sR_M*(qz^D+%W*bHIfT@fc+vi+u~O7?+D_!9 z`yTMl0l-Q0dLlx|Nxv<#Asg5L2m}rhSEMUeOHeU7DUW~vKn4eSrH-Ab?(TZn)AGfw zYSCjE!rm1Ws8>WUkkCJXfX4_2>Po~biI@41M5FS6Z5Y92KocR$uNVQ30k!~Wri!%G z5~QgYr~+C50s+k;01u4ub)dn)p6LZd9qiP^;aB~<0096B1UNB~^O_aKQ8*uo!27_% zVx9sM&-@T8eCy{a!FV_sjyIelfzwO7VJMe-n9dl!fee)yPqNlSW8r ztm*&!9|JEl%#pxc2}y7K7!wZ{sUZaZhiTXEO^ zCiI;GKmZ^!DL^Ibya@vt1b#kC1!kB#{`cZ-;pSV$a=ZzLg!h6O2?F*dAvrJKJM#I& z#J)Tr3j&s9jp-lz-Q%0D1Ai?vsYmZb%VZIm1Rnz|OY#XF%nbmGcZUh+2ivRg|Nr~Y z1Xx3vQaa}m|Mw0>;n~RZC;y)Tl0y(tyBbt%)=hrzt-r{aRP=~<_!Cd(^Y9$70003& m0B$DO2Co2kFaQ7nK>#_4wgIca8;k$|0YLy2LT!L*@CM@(xVD1; diff --git a/samples/h264SampleFrames/frame-0375.h264 b/samples/h264SampleFrames/frame-0375.h264 index 1ae6c23dd10c92109f735e5e5d686d30be2db44b..0cbb28961634fa8a190fb4642a7b1f35caeb041c 100644 GIT binary patch literal 1311 zcmV+)1>pJs0003AFaQ7nL7M;?yakUG6wbO0foFuj!?=(}E5Jy)&d+QC0098-3JcIf zuMGy4?!J;`31R2}9$)|<9TU(15Df%`kDx0xBHjiF;VYCnWT&4bBv0yTd=SHPuu_I_ z6ecbe)~WLgLG$!51RwB}aZB^Mg5m&70ge!(*88}0s!nI_005u@icPeX`eHqPlFxW$ z`h%qzP~ZZm5RbMX8505pzGP|PQGo(|bnh4g5-5FfCdgB6AGj&TavI? zAd^A`BK|<&PUObQyTb!8eto^DI0(kMFaU3WeSZN#K_s#IXhrM)%mf7a(1sU=iU1a? zU^opH?HY4Yha&*U+|$qpzasz`AG)w|#sCl|k-DTl@B|itHtP^2V{qUA2o*%c0COTQe`^4NQnS#Al_O7oXaNHP zkkYuIUfd-F9zNU%a9In$=u$mvyA$C{(h-J76k-S!;{3Ra-~bUHfB+E8U+C}v6G)x_0%;k4z~TgeJb?gQ0T2O>5L1y3eYeHLi6_fa&3ZxM zRL#MYE>H@$;P^y6P6{!>^Plo@6hWoOcxK4+l*|Q01o&{*&=3GnFoJPHoC=|y_=$ty z0KlffB(BOpqs4?2fA~K#AOL4{3>ai%`}A_7h-~!=5cL#!;t>Dvd;kD|a2R^q@R42U zlk#m5&m31@=1L0#vcm7Lf#3=%uqZ1examPzs6PM=oK~15Ax=9$wj^w<0gJ!}QrwtH zT%a~;qO%Hc@SHoL&a5fD;;gkcp{-8&-&WRwHl1rfj~ zRJ{qpb}66#gg)lqI5H_CKfsuOQeuKZ$B?W#d#B9Y_rMY9RXIPtFhFpv|NCHW5KM~5`EkGZu;3$gaDB>ugCGDJ=>P!o0;}_EBY=U* zrsx~^O!!2g0cksvXm`!VVw2%wQ;@^IGyptkMY73z|GJ<=sRnrk>>@XJ_kgCNOwu7A zU3}mG>Pr=X-}w=ZRO9{pdw>7`|M)N_o)e)TfK6Zk00BV&ZYID6uK;*30003&06B@U V0jt0pi~s-uK>!s(YyfKT2IDdFETRAa literal 1066 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 A00000 diff --git a/samples/h264SampleFrames/frame-0377.h264 b/samples/h264SampleFrames/frame-0377.h264 index 4e270b80726a90f75867c4cc3317f45667463c3f..9f90e37a17cae7159bf98368268e4eb240b62f38 100644 GIT binary patch literal 2968 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 F2IDNN0MP&d diff --git a/samples/h264SampleFrames/frame-0378.h264 b/samples/h264SampleFrames/frame-0378.h264 index 470d06568b6f4394493435948cf13f75215902a1..928644eabdc7bcec1aa17810b89b0f0388313e70 100644 GIT binary patch literal 1794 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 diff --git a/samples/h264SampleFrames/frame-0381.h264 b/samples/h264SampleFrames/frame-0381.h264 index 3c5e7bf3d6519e9dede9733c520ea48870ec88f8..d53013bded2bfa547d4b141d7be351db561d44a6 100644 GIT binary patch literal 1725 zcmV;u215A&0003AFaQ7nL7Jc%ybLfsg8^YK02H^x}|IHu|`JGAE2jewB_ z0>}WU069Q|Yr zgO+eZOPw;A0c1;7qL=^z17H9kkN^S?-~iHO0Llci3WlRmzkXi7G>A)6o6eYxjjRCy z6KT=xdD;v~Km% z_kbaQGoA&2gx8{?)u#yd=fHpqZvYtKD3`==2f&#F&XDqe4i@ZePy>x>V}EEsTML|Z zQGb)a3`yO&{=;+IUGM+@!LXVn@XAafODve8|F{#yVS-%VR_S7>fdkM1g8&98H_u2c z+S^ecJ>9>}p1ctlo0r4z5FsoU;>Fm?B?yphaQp&ArbjU0Du4x6$8lu2U_;8 z8U=PskH$X$m;eM0h97PW1uIm=i!US($mdXQfGB0|Ch;Kvy3<1H&>s(bA`QY3!HE@6f0e}ENDT~JevCRH4=DC0W z_C_6d#|0$GJ(4WRQ@Z@ranugLW{8xgo7@04;2abPaLOCs z-LDARAOH{&0z$0DHo?chWSaln^BVtLXMl#^|&g3seljwWW>B#hoB6j{r4^a2^WB(9rZ8i`@tMJb6m6tJx-GFMRm@T9v93M z>_%*7=qv>Ji6KPev@qz)!Ga-|2;O4s3miVX;0PdvfDLxi`2YeMm`6aaNB|+I0l=Wu zQMDuWBswI?Z-i_f5zsYK;xMIVqz%K;(GsQd`2WBN00;*F91}pdn5jhpZ@01*MgdUH zfil~7D5Wp{-~a>xRKNfr2@e7UEv&u}w7Mv70RsXF30+59VHNpeho1lj0{}#G6#)^Q zs$C{H76RV@03a?1VgcPtr)Vcy1(5&V0S-4N>W>IF{d@|9Wy0CEVF1hM{s9~df+aj4 zWKK2)#eZ0JVL-u*$#RW3-~b2&KmedwSwT{jk;#;Zu0S~ht>nVn?@I=t03aI`7ytqY zgrhKQ-_Lun9$mnIU?zqx1j>0}IVb=U`e1CE7y{#}kV;v=4B$SkJAyOIM98oH1MC_~ zNhE=RGXM%%KpxjHMP8ugV9$uzL4Zg~00ILMu^<2-TN5#WAqDMNV^x+10Uxq06{{_Xqd$izxQ;{004j#P`g{BQ1s29f^Hq= z4?*Grh9VL}N1_Y+Q?dEb1b6{$ z)B}P-3nE5d`Z)c254ErOCV;yE)$|Gk2avs3CIZ;u+Zkn$woiWlXw6E0p~mbNwbAci0f?EzyJ^nM1TWdU*f-m+e4p_%AImjrb00?B1Y&dHSAMZAN^S7JF{LnM32y2|82!HzZ_6_ApSpCoc z@Nn$%q6v(=AMO;v3@`xpP{LpH9=oUG{ImfMzyJUNK>%(hs0Ob9crX9}0YLyciK+ps Tz#EJJ00BV&6+&u&YVZc*fX>sC literal 1615 zcmV-V2C(@60003AFaQ7nL7G4sybLftg8^X<0AzZ;f8qc$A8|(4xCI{~=+byBEg!sK z5QYiNJoys|eh-OQct{A4@F*Y)SnvnbNAMgMm9x+f;4()bPHie8`vx}<0E_{k9FoM4 zH)`4d21)=>BZkG$&K==L8cZVO`MdbsZ|0yZ9l>0P29j(NM*naH8v(b#z}SB!FiT}# z#!TP&{el3m_}XOqs{j5B386Uv0RRXbZrzVKkeA112;#K;$r zr6?w6z!(4s6@~E>!=7*8e7Gl}>HXgj2|!Jo3eMchzyJ^m009A#WK2f#uK(&i|L@_1 zC&9p6plgBzYN?L3KllIw0AS#$YX6AVFVJbfJbC~D05IV>vjh)583?EdBCKuzL5f#7 z+O=8nYXADx<^cIrpaFnGaAEKw02Ba&vP?XIw2|smLHGa=00aj>11b(JfRgl4grtn@ z4$x6*vQ?Q$v;TprQS0*^1Gdc2C-{L1L2Bd1eRn>RzYj;5_`Pyg)(iUKOem_NC+S>J%5vIHbr zl0chocmM_p0pTv_u{_gAvP235ef9lUR{@X&2LQG0z!WqYq}0Vb-`+9%&Q<+aseO|G z0RRa=6g0w+-%n5QA9r7w#A=3&flmJbKmZ^NR{(;-eBlKIB!SdzyQu*Lwu9KIWzjuj)h#n7!Cl7{#>}++@McL4d$_NaG<@{VgC1kxl>#0xY-;pcT$DV9*1f6mBns3P2LUIxlLyaNyQ6df0s%lCCQBXg)Em0^61lL<4`c%TUI5Bk z37Q(_nk~nm1sh+bgQFk70>cF;OUU?&OLUb;{`Y{O0))aIq7MKB-zCyvI6h?@CgBhP-d@t)(pd1kOBZ>x{0?qO(MQvxU0{~I`UH1Irs;Ul! z;hX>5VTwqc%~y7ga}Iz0@Bj!Pgo)&Dd22%eR3Ydsc*D_-00IX{tNZ{OH%NdGKL7>} zdA{HPZPAYfNw7?(!5{z#03ZTH%{1*w2MsR6Kw!ZG27A-_n2+j?29$n)0L}~|>1vQ> z378z%KE|q)lJH=RfB--Tzyt_7&x|^Hz2FQ!2E>1Y^3b%3-@5SxP$SfXK@FP}y+d_= z009DkL=)g>2{Qve>Y8Rns2~hfMMN&2(^?$$;s6FIl|LK7;*cSOTOTG#sC5d zAy&W<_@2q92>9**aw8g{jE*m(vU=ZM|AMf&h`KP@Js>EyYc`K3Jm2!N!I1y5yF73UsgT@Og*)7;~oG2KyVI6gCvM|O|8)~ zxPSj>J{kf7bLA|9!mZR#w}2P`9O(=uK(8u@p}laMdy$RKA}iieY$Lz`AZj&*Skap3 z_I5CJpaTE_0Jp>}7cmLzthr&}00;$u2$vik;Eqx68xse-d)qe5*^O0Kv^3wqnj#Yp zz(j+AjD`RP?fi3wjH#p>LVy5)001-uqDVWV28Z|`=;8%!8QcH_2H)^39R@Vce(UN_ zzy(|iY4`sQId-w$ThAJ(5B>Z<07LKq00BV&ZYGchuK;*30003&06B@I0jt0pi~s-u NK>!s(X#i^Q2IG|9wYmTR diff --git a/samples/h264SampleFrames/frame-0382.h264 b/samples/h264SampleFrames/frame-0382.h264 index 6872f4a8d21f9aacedc93cd420ffe6c512ae0fd8..d031091d740c2957f50acb4907b61f59d15d32e1 100644 GIT binary patch literal 1502 zcmV<41tIzX0003AFaQ7nL7KoCybLGu{s&M{2T(v!0T8wT%x9^e2ND5LuPU(s3u0=k zqnHr0%KxwcJQ`1#sX_dskFX!PZld##_xb5oDNPPheKYj7LTrtF+;9vIGE*vOU&SBr zb7R!U*S-xvLsjk)2dW4NB7gxMl|d-MBEc&G6e^)OFnz`Uz%}}G=Aa+o3}iz^AyLHi zqxo(Cjs?orLd19QVa@(?Pl5v21ViByc=UcB&;J8JqMA%VDzGyx-vP%a7nn>n%sdbI zi2M0U97TKM4eo22Lxwp&d|cpwSOlR&F?lmK+VXTl(i?H=cNx>*0ES30U=7+)oW}-6 z8tGm_)c_!C6P@iwfid=Z()0s!TJ7=h0>%HII@z!1A-s{zyRHWz^V!f;bBWc>Bd+9 zA`F01QR0mt`0lJ0CGa2v00k&14#d-BQV_$NY8HS1AV5$65C;G(BLu<-)DR)4$Nl@j z8-M_TM%C~%7fgn1o&#gu*?wm@ihEC2i~s=!kN^-u0H7UA8(%7Qf0}{S`w_EIJOPeC zXV(->_6WFmjUuA}0Dx$!l_m$T2LM72NyC`=lBu*1+IMm2U>ypu(}`1L3IJT2{`Lm{ z1VS7YC1!{U7y<(=9@ruiqE?#9jx;>*03ZxAGq~dkNq+5uWm1AAzye1ELXM#mf}hSO#3E5HB<1cx{PgVii@MO#7B?tB0M2o39{u)DLr zH~)YE8~_Lgf;K}e(dZQ?9Ao+900IJ_0RVS=+cXHC$SOZ=y9W3G1QNgiK(=N;pfUG| z3KRwkA5`*|-5s6SLU3RF(ucG|bAEu%00jr5n!!=Dyf&fl0D}S1A;=IKFcHqcg9Sf8 z01yPAa2o6~w1^(VYySI!V>v$pfuu%fW-umv954WEjLiwMm06d@Vxzrp|Mgf}%qViRlQz&;mu-~oAzM;)UWd1ejT@B||AYCl10VefFTepZF_H1i7=P`;&WGa|Sx6)#+=in64>};U z5HS8mLMw9}3NqTS3_RY)`nY4P8V7(dn1&+=!Dmp{1=jcm4tOLVQe2fO&>U(JqR<2| zY-NxDaBy2lfN8=MA|f$KQM>-|0Re)I8s(T2M5D^8+MvT0*8ljAm?dz)V4=4YIZ03CJ!Ll6N5kydXV2gZCg0G@*?<>Rb< zcN=E_0DuN9Q~($TP~!k|LBMvwNw_kM+5i2x06-wN2%%}|6ZRQsP`y~!TfPH_rX36}ov%jTRQIZ#sGsJFXU z1W;4a927N+fEt8mu0W*3X4zZ|zVOa*OXn!{mf=J+&|$;W0{|I!t_q9l9i=be06+!? z2wab88zB+PiCVhwj7g;ikA! ze@sNis1|1b00d%Uik@@1Z(5c9004kU0>~7U)e zU*7|GCmpKp|1W{m3RoS(fOHOt>O3OP4Oh3i>==>d`e2nAyS zMjQ1B!Qemu5K&Mor~>WV0XqTgiUfB}IHPNxZP zaIJTL|M)d1D*W>8DQ#n#Y{B;ei_K!H`hV^K0D!>>iP*KRi3}|`pb`DT00a`QuqC@z z6-yug|Ki?fnAKHznMF73lhWV#NB{2t1Obk~J|ZS<>rfOG9^=>Z9*9r?5FqNkpah+` zaFh7J01yiR0RWHzVOehghYWx-I<`^nOqlx^!(R-km=RH!2WpS}V!Eneg?Irm1PTUz ztr|mXa?FE62VLM7h6-46Y=R&6cohH+I6}I$ws~`-F1OKvfKav3%Aob3wy%007_s;2>ICfD;A|6-NRr+xjznDRAg^!tTx!c));)fX4%}tu0JyK{J5- z3CzF_7}zMjgesWT5-tEfP5=}LZ_$t-qz`Ye1NSyf4Z0N>(9Ns_~zahIBoL2gXQ(CVOWiX0KB&CNilG)%91EK=g zJWgc|@rMZckqoblWGJaZljdvy1OtF24n${uV?u}$7yMAkRmq=<<52Gd2pH`2iXlNe z70003& m0B$Cj2Co2kFaQ7nK>#_4rU9$K8;k$|0YLy2LTP|%@CM_R8$~Dp diff --git a/samples/h264SampleFrames/frame-0383.h264 b/samples/h264SampleFrames/frame-0383.h264 index a5260d163a54e615955161f3a9dad0c17cde8451..dbbfb88762882148ac7c405df887f8817fabead8 100644 GIT binary patch literal 1761 zcmV<71|InU0003AFaQ7nL7LziybMS92vATsEx-$1i78xXuYd;4u0Q*9;~wGQun*!jlq^i<&oQ>gNFh3Isqd&=etuv8TYuTs(R? z`Tjp=NJqHu4Vxsy1F3uj2q^0l_yhQH+uH0QcJV%*U~~ZV^Uc#b{`LmwWXM7K=L~yb zea&58QrFa#aYy0yU`+S}|M4X0jDo9!NTBWi1U@(i#-(5pkQe}60Ynkr055^7pm-Au103S9P0hEyS$`E~@Z~zzz z7TG?}Y5bK77(M^IK>Z*gYe)b*7)4SQMZ7~5mJj-bh5IN%t! z00aWS0l?!T63Vu|AT+MGKY4%vfbs{$SO69a=s_j`5HbRfgcjjos(nevfY3*63y_1R z@__)!i3|=LhxZ4}Y-0xux*_dJgdhLB0RSrjBa6|<&#no!N$}EfC2yjfG_|E27x32Mw#xO`UG`J zjzs$|Fsz&)iSGnZ~uWHKsj|~0+=QvYDFKOY`_3O7RW#- z2=dw>0wbRwU_by=r}YKGK2{;Ksh&JR00sfV(!-Lfw~H;C>%agA0*4>~I8%~R*tSzh zIw%)=Mt}$|dosrsM5w2KxKIEH4*=555v1Te{5e|x@TScHXmfNrR|QA90w`r&0a2rM z04Na9)oBWq?*IGX0g1{Q0mNNd(b>p8BBB5P)rfus09kkfgBbk`6FL*+t+)UK0-Vx| z*O-v0nmW(@#y|rPt`z4TRzXJ*SO9>)3e~IN8Vw|u3gy~lKI>yAzk}`($H45Nl|k%w1rp%np+I}F4hjDsKQ0(UIKZ4BJ|jM8 zbI;;42OyE4JpT>>0R9_`RpLDZ90G$dRpJ+i{B)xW5=0yqPB;YvK;lHp;`sS!g~R}BgatY0<I<&_{r&*}1y;Zg z6A5O@f{;XK-*dh`-rH@14gd%}Krss)gA;=K{K#r7!cOH=Fn@po0fYWt9dogKRin2m^yUXf z_*pGD(VM&gGL861*Un`&!+|`5Hw(gX+Q~s8U+XUb0F(d(0YC`~r$=K#{|l2@Lf-%r zfB=ANfX&;EBz!BHYP8mafC*p#xZtQ3fK@N=xF8@vQEp)tc*slfrEjO)05AYiCed)W zG|&(xY)k+Y_qE{;gViV>&oiLI@Bjn>Mh$EJKtPvP4WU*uM&JMpLATUaJBLuT7IW-+ z*t$MN$FI(wlV_{LwL5>8<6|ow;y}zS%-Vox%a9a{|NiPq=D1_Ds*_)3&`1#rYZSRe5i z;4z@uc7mw`tcJ%#PX&j-0WvX>@yrlkZK6zv;V7UHsnWt`q#xGFK@Y492xn-rr-JJ= zLTE$5m?;>0Cj*r0oo^p_zDUnC|k_K{8Y7Tz7Nin|M(&Bi~s}z0N|5g&xD2E znX6r<3^}j9blCtQ$N&HVK>%(hxCXBPcrX9}0YLyciLL>wz#EJJ00BV&6+&x(YVZc* DAkq2i literal 1308 zcmV+%1>^bv0003AFaQ7nL7IRXybMS50u&Swifv7zX!{S$VT|v95R3&F?y$)P*DRT0rF*3bR%R92)V=~76aaw*0Hy>` zQX)uUq2>d6AopPSHT?e{Oz9=Du$W?G2BPZ|;IQR%QtaX1%=o1|4+EfW8MEg#KWGEv zDKkWd-SE)cAp-Wz81}$G>QtAhQXt1ntQO#W04&|RdlV*+Nk6xMqCf})CAgqBbh)A; ztN1toQ~-z^(d zKmWmi3b}-&JR!*EkqkxlJgrELrQQFC0Du&;i=e^#Q?^fn(WiG`nZ(>o(=o`BF9LjV z%M05*RYGlh|L+(cI)oW!kRf;g20_NkiJXF^h@;~pSRgbM zzyS$LAx3k`{mmi*009BJ^8}5ok2#!q;6(}okc}cMjT6V!m-qk-A%M_bY#bn?nzv%S zlgI!t01zn#pV<{!J`^5Oi*1lcOxj7=EWvGrAOL^>AOrw#B(S%a=g#pffwPDH5CCk@ zf$40XdU0#K9dH0K$Aih_lJX9}C9C1PULILU*Wg8_ifk;X#9__nwCg&hKtMi0ry<3=HCm_m@o z01yF9du#zSePQ*)Z~Z(387^Q4m=3Il`UH%-+dKdR1u+`8mIrLhlKn{loic1skf`i| z=mrG=73?&%OGP6PfA8@kXBa9vNBe*P5CsL0N=%9Qg*q@0 z@5R;(WfWO%I9VjyzVJ09%m8h#ks^I{F9l)BJDDpiLw;G{00;zy)&@snk!jPv32>Xh zL0$mEiNS~<1Fv;MP+{l;Yk&Yi5rFwug@R&^XnzO#_4r~#|M S8;k$|0YLy2LTUhN@CM_({wqcR diff --git a/samples/h264SampleFrames/frame-0384.h264 b/samples/h264SampleFrames/frame-0384.h264 index a93802439cce44c0ee4c4a0d4d1495c6fe0cec91..f3005e4364f8a8d47eec9d5e4b6dd075468aabc1 100644 GIT binary patch literal 1964 zcmbtV`!|&P9{#>_;SIyg7`f*)$ly%I{WdWO?MOng?TV9#+(xKDV_vsGb&8`lTP{QB z#xd0CvQJwaIkeNH$aZNp<8tC8%^KmKsNiCO;YCYpv5=tQg{}czBT1t8|LZzh~Kg)6uTauxUwT zA^8GC-w~XHFHPBZx>(j#-O>=U0ST{<@{YeV*DBJ_!H^@Jh^x} ze{pSNi|1DJa{7M+D}CF!;-HYh&sDx*jYvQ>fDI3KTWrn-nlHCbxUq9qdZ;9>w?d7z|V%q5$bl(+AKn%jr$e80&6{xL;qi%fH6nDCD< z(+nF2@un1qKbDrNVEeizBVo6QXu}&wXz769X=0rYy{g{bdn~BSSWBodM-xTn8WB=O zFakHNXUD`!w|nbusa4<>$}RKFQdvbEHUO|x01p54oWne;gt0$@Kt-n5L1=(&*mDm2 zXiCs`KD)Uz#@KZ74-{*-Y{h5rZEW|*i~q`kb)HU#=bSwqHA$X=ye*wW&L>3i7&wut z>bQMV(>c;l9hq7k?AL7%&>&o{>xy20mWuJ4^o5`8gEq7>$b-aFBe%7UeVTv-g^WTR z@!n01YZ?;dV5#eO_|!15cP5jX+o2rT9#LY=ggSBMRj8Fo>d^DSs4vnG55)oe}uIAX~vlE{NXrD{BfZlXnKLseC zUnc8WapnV_g}RkDws}_BbLDb_QBL^(@y_4UVCf!N|BHX=wP#gEqEZeNVGSgHuH`cT zK8*wVSWE5j+wOw99)7${34rn0+}!KQvBI@qG2ETJCp}5Ol>_okfONiMet%77AD=M< zrlN@y#-pU^~`2jAs?7aWAKU>mT!%gs$ytn zA^q;Gy>q)%FRr78k4+tq%%#?Bg-%NWjItMmb@zY8QW~3MK&Zz9{Zd!gDVVgCfgCT` zr`KTqmlA3f3J^>^h-GvIx4P^e5dav&C#v~&#|RtexC3*B|L*WGT5Eu zN<4B}rhL!8(=||xOJl6T)9+;fhZS)^=}Dz3(oo1vvTGXF>=uL%QMS1@KOcySl~~2a z5oLKX6(+NqhAckp<{Z8;a#`M;`c-f!9@x@l24=|0yVoRTR_{to9!d^7+6 literal 1900 zcmbVNc~Fyg0{!JnBmt5TOoR|X!YLwgS3JsA!|Fc|L^qu@#f9EKi_-v001ae=4Wy) ztD<$9OG$KCj0b@;r&n}5KIxz}4iRdWIa)0JQ^i;w2M=S5gh|hnRnpX3t-Ck!Nnn(4 zd}sfaeO?&?qj>41!#&FX1NS4|Z{Z3~OjT{+=%Ef)K*O;izzs^OmKB#$iCW5!tuTOKK&ySa(a6Q zN#R}0QqWuU&Y6j2x<>Y>Z5i@09I113AP84p?EWZm#XBjR=-f3>d;Nr}xa}BiyYpYt z+t=#5WUn(eKFYUKoGPEZ{)^)MZ(6pTi9wsWq;8WbIxC%qR|gP4k=Cj@er^ca#ZEGm z*HmfEhF;eYo(b3j5Cr#b{s3RHTh_KWBVHpO#ve%6H{IdB=&3iFf3Mq#W>hPs^G}Qz zPfVOnd+9pc_~qi;;WgzOq8=bY;39XIwS#WEXKP{1SNtKu(Raae}~vx1ItI?9hXRAFp`Ws9D^62up;(NUgO??QRq-y|3C#+ z_w|;Gv#qL4&QP)N72q}h{TLyXYAQbZWFcVPMT_`lHcMUkj=6_2*R1L6;S$H4WKqB#Gr&53eB2~^$@t8N%(v51)pn_F ziVl=C@7VygG;eyZ@VghPfKK{x9-bL{CCX`%^uiFp*5xP0ENM^cT+=B zUKz6?Pa0}DQCV_E-)Hi3j*!(9jB>Vx4r2J6o(*PKx^LoDL?sk_58)lD@}j(#B@#qo zPxIzzn*h)OKts^Ma)>&sc=T z8W0lb?zEFuYtuzaWflUc=4j-(;M^Odk^MIAzH$SFqQ|irkRl~iG_03y)K;}#QuruL z>WD*3g9iY)=P`6WcoZN{35v}9eHGZOqua>M@;<73r(n#xbR7VMeA!(2Jei;UATiUi zaHY4jPa*4t(0(w;T5xdHpzKo-aTboE| zir0n7+8Rf}UVL>Q!E`!&3cGX7SKiKQ{0wjh8tNTvgN^5-s*ga-0bQDq@+Cb}Gu0F`Y@J`z-1 zFv(QvGQUS^HcpSkOC>L=RyR29vM7oaW{Sd3p~JV2o#jWHq3l@@6JnbmZz$auHe#ft zDRVDZJbdQk1Td(p$l*O=zu)WBa`NL=O96!913C?u?6b7xNO9(8QI~yN^Dmrz_)EXe zGQ=0&zdaWIvgO7cCriLrhad}d1#zhTuJfH8MALN^i>;rnNlaay&$}M_&4Mv`{6|^G z8-PKxqTonRiAl4D1}g}zUAf_J@RKI2ae_xpn;!_{W7KjTMX}pWulhtnLuM>u9uOcS zzoN1+W3X_DuFduHcAW>!`V9tYPR2-Y!=UU+`3QkpKVy diff --git a/samples/h264SampleFrames/frame-0385.h264 b/samples/h264SampleFrames/frame-0385.h264 index 5a92e85be0ec319ab649b1e7396302285ef621e6..7ce20ec813bd355d9fbedd91a8f24e3ce83feb2f 100644 GIT binary patch delta 1554 zcmV+t2JQK*43G_f000012`~Tv0YRG}8oVec*c?OzLIT2E5j+O!fDDh-`hS5?09hrW zC=#iqu+ZTxF$^5PnSPOELdf4z`>0ezK(Y-00lIKb{lPTARUnQBpcB7?^DuA#5DKmU zE!Y~aC{8M;@ODuIlt>g$uUh|~RIrPjpj5w|0u|`cGWm+4hle6 z+ex$V%mE*lhF^5n4_Ulws*nHVGl9pL49Oe<4nQ!-IEYt?D8RH5qj{tVJC+~n)|Nnp( za+(y12X-Px85-V2>H&v0_wqJoBY*+~9FqnxsgkI;D1lm(8W;yctTf_M*#dwUDF3`3 z02K%f^m+i0$muFC(-{%=00;vN%EF}X1Ma4Eo`FFsVC6TZ`=UJ03aamIgx3J19a=F|NI{<00C4`1sF|fb&mgd z7cg^~k`RdL79sTZ+&%tp{X++ZPw?e{1~BTz#Y9Axm3i2ApjZ*pU`>n|J~YKg;1?k| z=mlXdX8=;+<(>d?819D>5b+#_f`&Azybu)H&ln-0D{ma@`j!|NsN_P zr~&{;a1IQFc-IfHa>B@i{avRrZ2$m<$KHPiwzw&QP1RF`yI=v56e~7S&-F!Zjb|j9unR(N{H;pPF6XXqb03ahk7|;c1l}GI8U!|0U{cXX(01zywfDUB&@A|-iKSI+t< zTLEASDIhsu3{8RO_Us}AZ~)iRfE<4W15M>pGFS&~8HfM`2><{5 zL6xxX?)(12p@pV~u?UH$ zz61_}hOen8lURumQUAkVa3DE5M*|o#Gm6HRJ_1n@^Yick1OfnH>?W0mO6Gr4t6!fA zfPQ2^0M6(bFv!RE=;cQc+3FM_>L~NXA^+g`0098tF!i_LBD>Ki9K1U^szCXj#z z7;su;PL=_HLz;jg*Z=?lK>%(h$Of+fcrX9}0YLyciLwE!z#EJJ009a?02M-PfNJmt E<7FeE^Z)<= delta 1400 zcmV-;1&8{O4Xg}*000012`~Tv0YRF;8oVec*c?OzLIT2E2wuRczy=4^^K*hA0FzLV z2~5`Yka@{zh(M>m=RN5yP)N0@7&EXzY&x&5?m3Q~&UxA!- zKli->h;{ZC-^~LSJ>&QcDrY<|k^wZ65CIE+2^a7{25d+jh6Mxiy6B)Cd;lB)hYT-< zC)^sFC5X@Y;DEvmGxPKS1Ob2$wp0c}n{O-RY(uAifCYfV3@ZJ$VWK|kp3gXi>BQ0k zY?_#v+@1GnxYYOnI0OL8AOlaVVOxN4&<#x^r|$rSbP%w8`5bU{UR?MF2w;*duq@ku zj@0(~_Wl46F6cD*MrX!^2??D5zb7*Qw-giq7ry|k03QGW0K_0&>L+kRU^-sBp%W{Y zHWhD5!|(zq05B#<#-j47+DMZ%u!WVwn`9eKzTiMGQDO~tfI|UMpBRUG|L%CcWFn>v z#83Z&_y8~fH_@A*!gFl$V$vF6f(I&pF##zt+fV<3^xOV#yKuJ9ga90D0x=5*gnfKC z)Y9I)yZ{gY$3ToWf3xY4bdVirga85p8=6%ByTKziec%8H2!a$Ka~}%K=*&k@{1kyU z02#L5DY^F`T7!g&dATb?)$bTI8tB)LT;M{cWp2FN0G>mH0|O9G8B;>y56!86poXiW z7+YWF6`9ZlAxZuphQcXwml!KbJOBs)1OQ~eaFp?X=c;L~AS?tV5=5~9SEXv)_uc>u z8aj|mfI$gy?m;9ie3+mA;qU+qI0u0aV9S_KlGXKve}fNz$^yB?d=>!a zPYH@zzx*AR09FM8%4G$Mp08+s0Kk$7{e-W)jt2%s{=lm_kOT{df(r%KYajp+8UO(R zSrt?M`NY5g(i|I71=}Fw#Zc59|2O`jgTkf%4p;y&hgLQ!A|$-8(8_!O90GE{+ZZrx zX^M}FkeptB0W2kF08(M)o&a(f<<$-(5DLli0|4uMC;!$9n;mZs09XJO%bKe3h4rPs zsZi&~5^)iJiB=AHSCbI|Ba?6g9Dfkv!UzQkUCKD{AT>uUO@dY+JBvY^IQcG zD9S9wPvDdQ1OWuu(m^q;tQvA20`M1n#Hu0mAL{T%Nt4O%CKu*@6)5moko*9H3_i0` z)*f`h!eaPf0-ylxDb@z%QU;~f02LiD0FjHKMD2UsI#qxGfFKVy1&sSZ01y-cl_Rn< z9>ty-wQ2SPBivv6*=CcqUd@haOf~qXsK|zG=1koTLOez>!XloFN zntSu%lK}xUlMn$7D!>tp0003&0B$C*2Co2kFaQ7nK>#_4tO2XQ8;k$|0YLy2LTdnO G@CM_zuufY5 diff --git a/samples/h264SampleFrames/frame-0386.h264 b/samples/h264SampleFrames/frame-0386.h264 index ca30fc9f40590f71ae75b728ac7aad20bfd42c8e..3972a28664f6f0f273d4cddcde4f2e4eb4ea8086 100644 GIT binary patch delta 1569 zcmV++2HyFv4Au>8000012`~Tv0YRHU8oVke;3C5T5T^kvt6gvb=F)j=mH({(ExnTh zYFD%8oAc)x^V#>nFjuJ02^1^TLI~`zv1dt8JOzIE|3CkP-f_vl(4IkT5A+xtBdUN5 zi@+}9GPKx#X5e6V|MPA8^O12PTKp<_SK>m%coRDl(@SSh-vAL$Ii%0u)nyXU&l03U3}D03Z^;4W)qg z#_UhIeDJ=L(E}@!&jS*F`{oNi@2RWmdQPRR@V;;3YcYl(Er0?50|19PufxFg$A{M( z-`orU0RVs$(bCWZKK`?`1poq|P-$2qSQ52!q1fsYzx|*B00R*G2+xgy9N~DOsi%ac zF%Df`;emhvfFddg4FO+HsU8UdKmWz#0-G;{0Wd@`5J3>A&H!+Kfw}w`_vKl~IsV_k z0P;MMwI^6$03ZXi1Av1|VdEnv{}^D(8QiUrCWN;V%{XQV8VZ`J)n+62SP4&K*5CjF zPy&fGY4KH2^xKZ8b`zoz@Fc)G6=7!*rpXilsR#YwA}YrYn~%bI1b5-x+yD$P%M@OA z3C!p}00D~a03qssx_=M_(t(kn=i~q$p~eVpRC!vnoz?Pz1a(s#8`dSC{ttiwhaoO~ zw67U5MN|L00N4P+7o0F-X$#iass57y5CBEQnn(h|jx}__Q4~rPm3oW8G7rKFf!8Wz zNUaG31OxnJ0A)2MQx7$aSHOA_BLR8*njS;8vrH41RXsRM&jD2g zu=y$=oaJ4@QogmN)74egFU8{;+?O0RcdN5P5)rV37=f z0tf)$VBR%cp>*K4;OnVxIt7U;rQsCxBo8pzaX%yu00i^6mr&0w`kOM4!C@l>k99jefV&fl}^) zgvY-CLIMd`kad&Fixa8 z*Z>FyYoG@JBqgk9lo9g78mzbjfp~6!Sg+GC8=z<>5)TD{ARsG;kz3~>@Nmf~_zJ~O zLE-|2A`(MKq6_;|vVrLs(I_ZIO^|;57?GsT5JkaU!8VEt^0WV!pW5I81*2=E@QRmN z&UgOs0AqUsm2~ZF>`y_P783>@i4YKqrD20PKm&jGg8?1@TXg{7kb=mOm%ffaUc>Ec z{t2K1dfw0Rx}_5K#Hh01!9;;?DtS01It^0t5*>fpG&se4q*@ zfIuV>MF&E4JP1Rz9fk28lhFe!lg|Sbe|`{nUmfS?T!0e%_}ku+fr!46^Y{=7IN z0Q*6@ z9N@d=jA#T9TGgPEW=WF%(h&<3vncrX9}0YLyciL?Q$ Tz#EJJ00BV&6+&$QYVZc*Xp5f@ literal 1583 zcmbW2`#aNn0LMSO*oMViW|A_JBo3)$=LvI*p_*Gwk}X}VIxul8`4yrPJx+G90<&w#dfTzNgc3{($rJ{^9++pXdF&e|tU88vuY%wfSz&C1L}i z#agk+Qv~4}IKc52_JW|h3&EzNjUw#*k7mn-Cwq!hhDT72mwROzy?MXwdVo*X3SDHM zv*BK+;QIqPWSF}%TvNh{i9Q}HIL(`rG}vL(MXUOyWA+re+}?CF{v`Yr{vT4iOnm#) z#O0;kNu4jjj+`YC(xS1427k@1%Inc~nh{C3(QE&}G#1q$m^fQ?O*<%OH8p#TU(4j* z2tzWi2086iA5lKBXy*wQdrBsn+YSu+htaO&J4qF?&mz9(?f9g6(jmm(Cwi=cr^~lm zmv@iOEh>~8r=JPQT3g=YyTZe*M2IK$IBe$o95pM8t*f$Er^66J6S5)ick*Kwvujz` zOAseSHn=>?prRsm7009brRx&jF#(wz7XUU9e+jGZ$#ey1zO8D}pZ&&0F=A?&(L1j- zQ5ZNMOCbZo$_wTYQTLTkW)2*U7a&pz*~>LLs@BmrZGq(?yo1`VGP$5bJ0fG8u`X?k zm>Xd;$YOxI5k;@^56?`bm}Ier7FXgDm9wBivDRwgn$?S?0p&-jfU<9e#&z0G`f-JN z3lK3ITPi$}XcS$ix6&-~#pINA6-E3WXj%JtdRPHKMUxlGxVnvja|NNCM|v-;wL5)B zkp*NdHe|=DU1sqi@O^%A^T+7rZAa~r^luy=_%=A3Y-g-L!lrr0T4FK^7zE$1of7z4 ztaMyHkH)#(MrQ}k4Oq(Un|4sCDBEKuhU9?(x2EjZO#owXFb)1D7y}!Bg=QPEad+KZ zq-9jpmzS-Z8KLz-zPv+)S*|j0Zv~;gHEpoxs!3jklN3fpuh*YShxU)0Pp#C1 zBdP1LDuvzoW~U!9H>9;4vOE)4UmPKQBvk+;fD($sQ%{XzA9v9Tl}GgJpn1y-l}|(A ziG2+v%(9m135R_e>Ik|=&2yD_7Dg(CYR)o}9o5DH3Rv(8B}vn*WbE`0%v985pC(-=>?daETj zFkoxijs+a&KkwWa``JkPyKT(*1P#a5If zi9lLDXOII|JGd=-I6=k%dI8^CDQ3m@7>v>y}J)8hhWEIo%%MBljCq|@XZsm~{LLkBapj@2!- z`Iv|J8M?+NmhaCS4qhXNTy%$Ov|cV+-r+D`VEmtGb7=&4;34J|x3leYat4e#%oD5D k{`&wR((D1I4kY}z13<~FMcfdr;QwfdE=QpwvzXz309#HA^8f$< diff --git a/samples/h264SampleFrames/frame-0387.h264 b/samples/h264SampleFrames/frame-0387.h264 index 01a07754ce2e83bc14454ac8a7c09b5c609ad39c..cafbef40fdd4e380b11a5ce39b573df5fb18538c 100644 GIT binary patch delta 1177 zcmV;K1ZMl+2#N}S000012`~Tv0YRH!8oVqg&g?`!XQK=*ief=D+9Bx9YKnZi* zdFsXk79p!%`+yvIe;<9qfNePpfaD45i~?G#RVu|latL$;CT{! z5WWK&Gkgo$(q;=y&G?%$Oaq&M0ssJj7y}AJ>DjUV$%9M;Qj7Lr00;#DbHgQo2?PTJ zdN9FTRnHNp&5{fN7+$M=Za@M60RV!D;LM;Re=(~C6K7}u0sw=aJsGSNn;B5ABK!A@ z1^@y9g%PS64&jb)9svN4Zx`lsh=#27cwvy`PQP3y&b(k-?pr)7u=s#W9umVn+k6lS zBv!EajCtM$ipZ6Amn;8p4!#w?jb*&|hGk+>qq*nh_p-%B$z+Hlx#8*900;qM04Qtx zK`Qn@03Z~F01A3Aft1H^&h`Ik96;;|CziL@ELs0R0sAFBV+l{cs1*GrNaDBKohoOX zo#E)RD+b|KPWA*}o)eSt0vwaz0w8~W5atLTfQ#aOX5;Jpq|WF*U&Mi5V?|&Aa3vKE zYg~o-EJz2y7^`L3T7!>Jv>|{21mFPxNJk9%>D{3e0_&q+AOH{<01N|>NqvJQK}-^* zuB=D^;_;6F0SGo9_y7nHclQ7mC@>HSn>rMk6p1Bu87Y{XL?x`rPB7mT3@6><#{ zX`^<45C~v#j2H#p5?FA|f32R77uU7_1keDu0*SB;0ztJ9cr{sG55xch2_OI<$I*ZQ zAf^ERcsx)r01zVp0Ri5_U;}^QzJH)H3P=wdHGcj8PO4WB1fWcP0taOo1Q&9zgyVww znFofTdH=~D4yo80k|0|LpA!i%^wT#b;_y4XgPOQI9{+@7!his1QPTh6q%SV`$^eI9 zdm9~^fL}}j4g?+&@J-Dedv*Y&>zW7~KNt4#K;V!E05>QF1HggG+0cKCN`ex}Q@{oR z3y}%|f~;cX7Z93@hyjN;ls>P*gaBbP5s*d+E`~TFpTJ?u4Fyt@BSv5kvl}7K3u8-y zfCYwr;J^h5d+E^Fh?v2DcmV?rFjJIJ^Tis*lGlgt<_TON5O_JXxCoLLlM;b~4giN> r0003&0B$DO2Co2kFaQ|<0YLyciM9c&z#EJJ00BV&6+&%*YVZc*1YqcQ delta 1005 zcmV(C=e<`)n=4pCy5zyd%kv}G6}l;GP{D5C^8sqE1P`*=ww)0O-GKuwW7r+xiIT!Ehl z2QLF1*=RV9o~t*1poFdIS(o%k@FLMf41lA8MKA1hNWD+Qe~Ie%-ar8X52=wLRm)Pk!*j|{ zfenmC1g|MCnxhf4;bR`&7_^TK(P;Q|zsUjZAFUjYq&#&i@P zNy=0Lgs$ZuvShr!0zw;t6cT_7g8&g*PXVwBRM-Fieqaos1BUH1=499vM+#P82xAZ> zbx>*HvP8M`PQq9K2mnX`4h$6{dx?B~^DqcN0^k5Z>+&E30|>FTp0scd332A}ghP(7 z^pdyP952c7bKW7j1VUc_VTyZy+2I`H6y=_OkU1sUOTb}~f#la3Af>sw!jf)$$c9%z z8HsvS#OMqF2vUYB7tqQT;*L>J0O1ELL(M8=x^D^~R;3337z`nCwC3rK!>#5B#2z2s z05Bnq4gG}}aY)x&M%~xs00ar8fB>UnBzK+wfa1v-B-p!hfqFKspGK>%(hzy_}XcrX9} b0YLyciLe2yz#EJJ00BV&6+&zPYVZc*Jbtg- diff --git a/samples/h264SampleFrames/frame-0388.h264 b/samples/h264SampleFrames/frame-0388.h264 index 43d70aa33c9e90264a1955e4f0c000b9ffee2e2b..cece144649ed9b2cdad562e254fbf84e78c9e39f 100644 GIT binary patch literal 1460 zcmbVM|2xxp0DpgGo6i=_GEz-uhD>J*p(8fAtR7Ddql;m+l8crck#GA*nlBg9k#eD~ z^QA)Kj<9S9b;Wg$QXVpWQKw>=Zeq5p{(*a*UO&8^*Ymu7dOfe#^8x@sIOZo}mm#Y= z9BltoP+xzS1LN_rsG~)aWq-)5?zOE|%t0Io+o$bxWMH2xzwPf+uBqde> zBg0qv=VnjmrleU!EGUEkwU5QJV~%UR!%?N;IxG}C**f%3s+MgFNAEgaHM50wel*R0 zDx>xTGV+UzE17vCj~cpDKdxKU66ijX?9B6Js>_deT!6NhxMc4N)BPXj`O5lyQ{h$& z1y!Wdw+5Nw9xI{zca?T2vFYBo)Agx_s|M;SHlT2^!DRL2DRvaq>ZyJ2I$uJ=)mK^Z zv{XT5rQcKJ@ls4s*D3BU&HL+64+T{6M;&1p&r#p1%KLef2KY#m*|mv@>y~OcoRTr| z%uc*UEB2}we5LyM6{0T=-FRGWDOP5~8R1|#0hiIoCNV2sxp`%p0*uH=Y67C? zt#e2QF(SQAofNtoD=%+OD1tQw(x#aEr4NI)C_u*R-6#8RR3I&eJ2+nI8h{2Y$T!5z zQgLd7gX8$N{GuZ=G}2vdWkMKFC{(R47x1Z)&Bg8!v+?i^RY;+Yt8)Qv>Rh(b4 zRo~c|)CdXKJhrEoGZPjj^3sujADz{MVn((pja8g2!%QuDCkoZ~u+TT%OOa7j-xN*} zE>hEQ$-7)QM$w(gBzV|=ZDpT|p6AFP0F`4_*9qZYU>eFQWw@dPR>}PM`28DKa>MO) z>UlIU31zwYS(nlAY~tCpx4;NxMiyeBM4u9}lf|0@zr6rhgX73Hu5E6bGn~AU4p0QH zfp>qQsn7OnNs@8k)C$RH*DMECQhl8HO}!ZiovIW-(3qVoFT!JpG(QJ{)%iuBvZtlt zUa{#O+ql|uod^WvI>xZOBlVDZd!RBMtlBzCi+<%$wntXNF3Xy5d$+IhOjmL%24Dbr zZ5W9IC$sJh;B<>JI?(4v3Vt=?-)*y5@hB6)2|%l&#uN!+%ye)84BP+=t%w4bJd^Ne z;DitbgrIU<^0IDLAsJ441)y5m0LQPbWoeIHz*-=Hf@elY%%ae3*AL+v&$|LZK`}M6 z^fgVXw@E4gZjK4Fpgte&3-w>@a1U(JF`iuXo2IIA0(r>%J}ibsqJ8he3-Alxd02-< zKhx5T=Nk~T34nq|0u5hAuU=-~&SH`ka+~&%CxdEQn@(qd!k~C`_7+dHwY#IcR{436 z%ZaE5IO~z2iHq_6cA4CCX0Dx~|0FG=W__E{B#SFJ8a|`6Cxr42d&xm0g)BNT$dwdh z7M$kv?Yb~=4<3d1)*&{r0y{%izpFHCf1#|x13zzSi|`zq8PzEcWuxYOpK>}-Zey9O zy;gS$M8v2#jFt&W4!7zXPtx`Li}2!wF7G^bbI0^8f<^$|fONg)oy(LY5{KJzPBLG6 zFf`TTf}Ku1VFq9fB)5^5XXi;b1ho5^#iHFm-!Kr_D6kD6>B}dBO*yU5RoR-KzBne{ KB5+WNef}TS7N!{h delta 1188 zcmV;V1Y7&G3ylhY000012`~Tv0YRG}8oVwi&sAGd}x4|#6Sf;OFmuoE65HU0E`B{{Z=D$%0agF`J2Do zOn?D1Rt5u;1$$E?U>3putQZdI%`|dpFQ3RH;S0c%Cf|WD#lAJJo1O%c-6&p`sBBAj z`@qy>nKJHg|NsBNXsC)DCVy1n4NN{mt#BAJ%%n1xk)a`f;d8=zL}Nw;IIHoVN&^k@ zG62%IlJnQ`Jj1T)=gMf#b$dQD#wOt`Y45xQ+6ajEit&^ahu78f!nzVZFi=Rs-O1-+ zD$t=T3QwL7YXGqX0>=9AVkgiPNdLa3&y*BT02eNPV3fVxm3Gvk5+(Ouz3JgUpU>y> z`TYKWKcCN&4FevN5Cal__(;Ej04I)$2|xh=F$Y!r*wQ&Q!*UVe01<>368`X5B$4U5 z5<sB^$|002NBWtbILFt7a+uwVds09b(oU)_oee6)wQ zjh6TjAOS5QVgN}0Q=p>IBOSrcUpN#3V8MtmAQ|ET0099Q2YrrzaRTDlllOa(fCHA` zlt9fvZ}xI+kN~B)0098t0ZjpGp;Cqfls1xy0RSKX;q`WCfQ8PHwrT(lK!4x@fWYLe#wx=`gp0NR-UcW`V08_wwLM%~FRE3= z;fe*38*1$4>5K}EUjhO`=9~o$!>`fdJygU92j%v_-w1$zlj&r(&dOiAz!05Oo1aA{ z9O1I~g9d^oh1kM=3h`o#z(Sw_=m<7y7w6ys&7nf}pIh_?T%F%D({a;~WUICQ2&9D2 z$OPlJtvQgikvLo>f6L+pi4Y}XFadhK=uYf@-U9%Z;r^>M5hH!1QVZ>QUqpp5uBjmS zU}5KlbNT#}Ljf|A9|H$}2^aH;#e$JRPc$bM=^0adQGUTVC@Y)u(JdZ{(eKg`elWR? zOHXyRuvkUUAt(N?_ckR*VMtzc(ZU390vd4w!j=iGr%$KXU*_P=nh zjWLS>ngRmZir?4(2nmQJ1QttLJR>D70fC|SMh*pVQq)53BD=eP^#G6~r;k9C)n4H6 z1LPe}8^=B*znA{b00FoRbIGyE(77`~PJaL>V1uKJt33)XxU9`bbZ&qEK_CDG1!80i z1U}#Z1Omb28l$6VG^b|5{`oq0C z!@vL#4-cdQBhkoPxcHR;ep7e?4oCsQTEXO51*rCN$}?~PZO{M&1RMv-{xlsNc}04J z5s?fP<($GyAOM@70003&0B$D82Co2kFaQ7nK>#_4vH`2W8;k$|0YLy2LTrF)@CM^R Cp9sYO diff --git a/samples/h264SampleFrames/frame-0389.h264 b/samples/h264SampleFrames/frame-0389.h264 index 819cba78edbc8ce9ac4196d7be171e666d756678..e1f112be42d0751bee194dcabf8b42262d288a56 100644 GIT binary patch literal 1293 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 diff --git a/samples/h264SampleFrames/frame-0390.h264 b/samples/h264SampleFrames/frame-0390.h264 index 4fd4f5944fa050ee749b7955054f5b0710715e66..86167eee548b1ceae9ec7ed2d13d0edb50f87e3e 100644 GIT binary patch literal 1457 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 diff --git a/samples/h264SampleFrames/frame-0391.h264 b/samples/h264SampleFrames/frame-0391.h264 index d652646be4facc17aac724494bf2735b88f1f437..db1ebffc2693f3051d6b4766c7ca8429758963bd 100644 GIT binary patch literal 1930 zcmb7_dolns;8im=dXJ-l#G8SRix+S+}8Bb@E-Q-qnDa^PNPgs=@ zvl#|u(b`-yzd;gH$hszG@bq+~$F!v(W9F$nXa9Z9+0P&E^Ev19&*!|}?{nS&07#Yg zQC!N!hTYbdqpB4HMD+&(je4=E#@ASm|CysL?*#1}JBgobS0UKemqZ5e6+@R2X40a> z{n@1tB_Vi#=k8(hpEY#7&=6c?Up2a?(X%Cc-4lWH?awu{11A9vSgTwvq}7$q0 z^+EGM_Z(&6emV}-Kr=O-;6#4$qQQe&^&vLqV%56hmmxo!YXgt7T2JhgVvV%g$OUnm zys=T`{~zg?#Do-JXhlvGivSwN05s7LU)$VmN*4nzPo-ml$MEp11Zo@tn(G`&bzEo~ zbE_I-#p!!>>HbI$QVM&EoRwnyR%C(n@9!Feqr_ zmHUth89MmZp=aJ1E{*w?De}w)h>fndpW=2F_#CPr!|cVDny0$k=HUP^EP%0)lrzyi z647s)8V7KYhvZc&HEL%=bYWqaGQN~~Uj!nx>s|en^IXQ0o5Dx*m&1PI2fnHr<8E}D zk~76Kp?HWL8a+cdBeaHVKA^sq3nI0IJ}xL{z%k{{3s6TX5>ks&CJ) z&1T{~xi$c0JDdWB9YmN(7{50#sYK^$lUVwZ6AhnvqI-8(rQK1bG8T8~9=k8QCH$aQ z;_`d41&zc_C&i6vvOm571G0a3jML@t{uPQO?~C(59Z?m2_5=Bk+slDba}i`f#sL@- z{&o#Bk@2nA0_&HF;I!a7b)6Ic&a~4@b4FlvVsFRx3`tu3j*jPge8}MI-;|h5OCOP^ zs#M0BDH(Ke+d_u$ioKvaxTjTi7~Q9LU2|9wp*GZM(n~6+>uBIh_XC1ZuGMl?&P~ux zsWGx~7o5kgh*RD~x*cF0=esXzt&)@DX6oCz*5qj+-h$V)iGMRbe`RemNmYCIidz{C zx7e&Z&c@VDYkbx^RIy)qKO|w`BQ*vbZ6xB)7W#1k3p;5?UUO#X8nUs6!-R{r9*1*^ zMcDYTmaM{5b1*nJK8h8X15;c$NNYqK&!zLqhv{ULPPd` z2jv%hl_YYP?@|pEgy3=jjQXvUD}I zn+Jf+R~rqmlCL_dpPYL>r4GTx{Gy5|bbhB|_4}``MkrSYeFBNhYrB!Yah+`5n{R?d zmRoDM$2{frClqbRegj#xdE_D27Eg|tWVT4%Tei~FlG)U!*arV_;a)cc9H#iu1c+(U%q`1Ne-8_m&asWp0-`Tl1F+33GN)~+MQZOA$1&ewZW|C|9L9B@qg<>C!;L>8 zrb4_~w*Y*7d=Z;T78s!REbxoHd}F?v5QzK|pU~EWBgVta+V! zt*_aeyW>acUR9gqC4j00XCTwhYlGCySpJgX#o%+4a`6#V-91>F|*I delta 1514 zcmV=56}#M000012`~Tv0YRI98oV?o;3iCAQxCud;CU_*20kj|_oeyVK%8)> z2|aK006&v#7CFrS*b8 zYwS!K4R{F+AU-X9`5>N6fI$tCUjN~s4Yz3+BJ>>|BuLm`%wDel{{MPp@_TFW@c{|> zDzC=4r|Z5HiU0oqXWQuQl;T2KWHNZBZVL{M|KJRWg`z^=zK0kC0K-SPnSj+UWWWMa z01?(B7z^y3QG(kT59!C2%4h#}fPH{+lZSE)pp*ChY->M!nc+N>p#wF4{QMvjzySaO z0mZoEjkeovIOA=(|NH`xQi5c7DEk%NnD_<=V3I7bEZdIM_CP_ufI>P5Xg@rTJT|W_ z@^PruZ4cT8@7@3qF6cCW`9^2Pgb4|q0Kdu+GP!eMR`jpH2r*h^N<1X&B|<3p0Tcij z6C`6%c-CzsNtyfGHpbuv0PNP_u_uB7g9{RCv;r6kjJaS4cdQ|0aOT+t)31ZqlR+UB zFl8hE*a84B05{Q_prUhZ@?w%33_1$zk&Ol=icAH-~Z+C z0chD19_WgG{-_cPIE2;n5lA$jz4>=n*pL6;fCt9%6j$iZd;f1?A&uB&1hh64NpoLM z3?i4qQGu{918^tR5^A@6BDF3_w0RixL1_r9V=k%=< z&1+sEbe;e>ATwlt^$JiI6;d7m0Dy1>g@J`e2Rf=%=pnzEfQjTrLrkoyii*Af1{~o? z69sE*jJy&)JeyFs7~l+yq~$l@1Ly&{V7Yn71;%!~1Pd*VI?sc+6oU{cPY_`Bd;A-L z!BdsE4we|}5w@gW10bMIExSGPMz%76T|&TsQPHc1-!Dji!2ke&fNC-J+QXg|#Cuam zg$a~HC>C-{YaQSxsA435<4b~ih2j&1_k0`xspeMfW`o6>>tCHF8kr&N&{ev=PVkvMeo{ab`IVwbFbiGOngQHQ2^^vvr}((-}wZv ztK@57e)~g{VF50a&I1U4{QiCrFX99EA&?>U%O;Eg0R1`$f34SoQVR-d6vYdmf+4Fg zyJQc+C;$io3A3bvqgz-s874~? zfDmDVJ9QOQed>jX+u$7l6&)}Dv5TQZ?R(lF0stT$(pS8UwLg%5{q}$WASeYYM`UI_ zi##=I)9e7J4_GN)K>aYWzcrl1J_7et79-8PUbvfW)3dcm4Fh z;A3o{z6vY;_25H)%ZC{CAd3cDDgZHBoXT^UoU^F~>Z_#S^ddtx(Pl#h?*)v100oRe=Y|#%-I6!*!C>sE z{%DcJ107Mh@FrK(6u3Oru}A(2P^;uW?G3r1^r?lGTVG%(h;0CV%crX9}0YLyciMRo)z#EJJ Q00BV&6+&(W0BZ0C<1t02y#N3J diff --git a/samples/h264SampleFrames/frame-0392.h264 b/samples/h264SampleFrames/frame-0392.h264 index 81b1f945cd59e0ee7f70e964367030e04325d0a9..336607991097e31af41ab02a7b0c77fda7b843c5 100644 GIT binary patch literal 1180 zcmbVM`%hB`82xVVZMlpBrIZFipcEY85!wPG5YX}zI>4zgBu=>9j1Snbk|~|zaa-h3 z9?IgtjxDv035uJ*Kppb%@|bQg6cv@QAO(XkK&;~AO~?ELmTc#TlarjE&iTF^06>g| z>l9oGHm$xc-HVwRzTcCDt8UW;fX0N*JZ|63+a&RZJi$Ot_z^Wy@YnNj(_HxP|f4i1Xp*-5i7u|pjlV_MH^bJK?kTJ$NUTHrZ( zVyB7AMHGmUOM`F?1byH49h*#w@ZTLEPuOdUDXPzoUZY8osQTHnMp>LtjtTbzjN42N(e?w4Y8l z9&Y8i^zK;GfudwA=ENzB?mw1_oG2FHsBlk0%CzqHHdf5`cnWa3oud2Ei72b4PoEj) z)j$C6sPtl@9^!&X+46&7QjDyAadCs7@Cp5iCXey(a8TpO@Kv9C zZ&HIJZGX&8R{Cai`VBfL>}58qsQc2jn9LwD*pZjSb?()BnLo3+gI(a;Zs86_RazUn zJla|?ar%EWyMBg~{>t~GU#gGOb{Ih-u7eUa;Ol?uk!Aa|uQ;}cM64q(xMEXHHO*TA zNF1GX-7G!m*PCa~*mIiOW{k+)V1V{#xlmh-t7OGGz%Vh0)o9}{9p%Rx%IbZ69#BRk zO7`1b@)|ue{z6C>b9i#eZ&M;QCAAAloI23tzrFcp8N<)i^3l(=S8p7P&}8Y99ML$- zH#NZ+z79kQj^e!X$IXb4!56Zd;ZOVPr4E^m^PAbu)ihCW9CZ&cXpa) z0?8w#eH&@c;b)CozLGZ&Og9+D2#iNl)iV%Xd>mddv(USbvUf2m%(g5kcRN5Bl@ziOidZhb%?sMNH9?g= zKf2Iv?C*0WHds`BM`H#jgCW&)ffE*eM%9sLzS<_ePXakUFT*Xg)yr!~XsgK~HJ5TJ z>*!F6eAxrn)Gqf-)F_aR#Z_#Qd}g#4JJf_QtrhhklkJTp4|j6-d{NZSmNh+sC`)a| z)ts=Zp4uU8*ZdqdYt7{NjD46_R4VDo{rEh^n)zpLAnjd}Q3vw3+XMb8EpnN%EqUu$ Lg&cwuJ>%)$p|c+p literal 1016 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 JZvblW2ID64#1a4i diff --git a/samples/h264SampleFrames/frame-0394.h264 b/samples/h264SampleFrames/frame-0394.h264 index 726451319e9502f21f8a0333661424a314270328..cf9e729f0ef6b45c033c795dd985458226c1c076 100644 GIT binary patch delta 1415 zcmV;21$g>{3*-xb000012`~Tv0YRET8oWFw*b10XE+{2Bhh7vQ15c{?`}rW4ODjLa zq>!&v&?FNnC`T2Dus?Ka4~{(V1$6C^;ltnU z@O@EjlN|Mtp%{^{22I1qh4T4AVh4#W4hwLMNN7Vii_}Js^!OY+5d)Y{H5n%5DMdkW z;WX%t-uCnzKL8F=NSUKE_w@!2MtIVWJFP%T;W^+b)A7akH1NKYzylkTzylb6@PWVn zoG3eh3j|;TfEEfTSfB^N3@C*o)#w6XuL{6Ce{@HMW7=d*D3IpI|64&gkAUz1KmafR z!=n0NKLeRbmO{NU;qdKfB=A?00<9&Su=qEa=;2e=bPsC1K@P1kANMC!$(e^`|Gx0`f`=aeck^r zii(+*Gq1*&&ENs~X`Yh#uXF{X3sMvS1OQQcL)3Hr@B)L6MhzpWT{k>`@es=+Lx6xG zE(MZVo>Y#_o)rJwU;%I+ZER-=f_r|#GynntPklwq}F)(~PZ_o$mWke?b74h$bhcQc?4J2KN^QM`AUl z)sOo8m;{y3+-(C(GF#$gIxPRIL}WCuE9E!C!dCLY3OYeYJD86re1Ku-y0XK)oe@KY z#r=0fy8-|Y2~{P$n02xK&;z1!u~DMA4gdHa-Zm$!-lp&OfTrF%LTs*4&j03wc`TFO z3>H$|$N#v50)TGq3aH@HE*H7~_K*Mw1c1P<>oOP$R#XNfjsLg+IA{QpAFk=ph(O4` zEuKI9;0cC!M7N@4$<0Jf_l!IM0s?)q1)@{;L=11L2y(A zfdQd{xrqP+gyWEjrnMI}SNI7?0KgXQ0AQZkGvmL1c#OaR+M<9A@S#`}6THx3iAQ>E z(k_lDmG}Pb2}OlfH3bq`f5?CE0JQm7`%Zm!hyVlt2m=v-Qb(C|Bb$BR004kp!GH%C z@EUEc>)iw<@h3n45DNeZ9iczVW}|}TB86XC2}~+ejS-eUrvG636-h}||NK8J02wkH zA zX4BK6y32P0Ls4{Re?O3dp3EN6`1q)h8{tS11i=H!3(+)9*)~p_3=l(>*ZGKyfBq}L z00;`PFaT+#z5%p?1i$zETVsCW`q%y@08B3c0WcwPK^c|AgPbrt023n_9S&fE`;8KB z!s(X#i^Q2IIFXe^dYf delta 1323 zcmV+`1=RZF3xf-P000012`~Tv0YRJK8oWFw*b10XE+{2?fDs<1?EhW^#KC#l*AI`# z2@IWS6?l%c4d4BNtF89mWPktov8D+|Px2SXOn?t~i)@3)Vg^%;(aQh_MgYV^b*N@L z0E|0d{IFO2fT@BI>c0Q`U)B%9jppvZ%l>;1E(^!;L_@?J%!|FSEnQ>S{r8^mRg<&C zQE2!5p9RW=|4(0Qk)acjumq8?1X%z7|Ka1pd3>QU1H_hx1vmtH**Ja!e#PrEL*G6O zJlO#7h0>7C?N18vWfT+xVC05L(TK19-%P&%4k(3_u6I9wP+;Oy#Yw@sP#HWErGY0S z%-;Iuo)wcJ11FOZ0SteB5I6Auhs^*6!vM^>Bo87iNn>(W-w5ac9WGk{2tm*4y)ui>gvO203$A}|tg5n~_#m;n^vngVkN3(UC$h)#xIO+CX50K$or1xr=# zep{FWAbRkA01QL{umai#@sFBhmOurJKx#Y-I5|5e87!W!d4P>haEB3=mzd4q_#Fdn ztdtG~O9{e}v;Tj=f-m@DwdV0m7u8U3w;YErnrOhxNX?9l*bK6lpMS7NkD2IKY6$PR z3@S7e613_$SS6aRq{)K%;Y7@cL?y}kxDHQj&zy8tXp(HY-!zw`Iv9rh@Mi-J1e zU?L8^_5y3Or%rVteO;%!eO82dZyo`OoE{RlmH>qs8ein!-p+(jDLT6SNDWpNmoe?z z`B3iw3kh8(z7r0%dw>&(&c#NG?EnAZeS9`2tlqZ&@L(v(;qQV@8Nh3C!ht0 z0i+vwBxn#2l3|b$Gx)|dC13y`6hc9twzF0DuS~l8L~QG~%4r zis_iezZ(AQHe1vGaBhE4cKDTNy#AK+!2mGGZUg|>j|4f8$3dtMd;kO>Dq54H^K1XG zxGwO1_RX=sQmeX$-~b>76=B$1h=0r6UNaM9+b{qG1Hb@4OaMGTEHzKS5O7ogoa|jk z*@EF!Sf+gd69NK<)2Q9*5QLm)>D(9sV+_;|5(Z~#Zn*rahrlb5pb5GF00BV&ZYKB! huK;*30003&06B@i0jt0pi~s-uK>!s(Z-8p>2IHOJLUaHC diff --git a/samples/h264SampleFrames/frame-0395.h264 b/samples/h264SampleFrames/frame-0395.h264 index 1e112916a4eeff0ab8996770393543141efaed4d..8365e241f53a1d9be4067db70483ed018631ccdd 100644 GIT binary patch literal 1298 zcmb7Ee^Al~9Q}NS;G3d=6H}B0{vav6AWKc1A$e-Lb~JNoYm3_a(T_7r&sbV~!C#nK zn)$14iFTD~E9XoqEx^>Y%Y~)0t|p+aG;LyL(fq+$`+v9IAMf7X`|sU*4*-zG-1iiG zNj+C_jvdh&7}G)5kfCDRC!g!m&Hn}R8QP=x3WXxPF`3wjI%zA3D%j$d+P%_W7+%%%z{JXVE;>ijgKTH@=!5#{d;>2TAiqpF|eeD@DYqmLN=*L1sC=k-N&fIzr13nDk zkam1wpob@utrDvpda-Akx_YVe45}A{C@Rk;n)UTJr7{h^jKaZXu8Z1~kbN*lQIv?B zobj=m^5-g7PdUXC?npWo(7}<)>>7i$^w57)}o%`|) z8a0ZLCG7jN6G-L7T0-^G!&mcui`gHWux3$wN$z!rNu|XP1xGh2RebmF1|4m zWVEp2pT0{MkFgu01veX@+cLmsQ_rjd$iHJ21Z!2cG)gId1SpzRgu_0y9b6qDpXmDH ztF;wpy)@p59*eX*q&7hf*Xqc4VeQ6mU0jInC7)&8BS)oe{c?5^fFFkOM3x52tfbNH z=L${I0s|lTjcg{aQl3Ac#`t5gqnjhB7gSA*Im_D0YrZ2LUg?Q5!r)u*LkUiIFMZ#@xL)zT1x0`-{u}`K%-q0zlt4^5$QZBF zDGjm}AucfsIf`COCb8N4GK8F$ z9Gp&U6W8_$$ZA{y?SeIFOBK~SFQ6WHCUB{EeLFIab4zQ@Co$R-b#~5i8e`=6ZJw;G zAKlYcvax1^2@%GLlR{ET*1UQ=KS;uW2?x2!>}4Hg?!WYQ`ON|X-0@iEj#J&v1kUD8 z%_=NtQv14g#wZznZ~2Q5A(5F-*kEO~+yek-LFA6m0wiyH0We&+2$A7`6kd}Sx7k3h j=%15=Bz6Vi3Wz^E9<0qfkJPK33O+bA!7gmKkudx>QfF;% literal 1107 zcmZQzU|{4l01}R~7^L>tsXx$inQ@0f{siBQ<&xgZ^zHu#aC1E9*m(TFe9>^$+b^;e z+WP8N{d(A=bk}hKV`FB0RCgoy(b@l_j_kYF+?Y0@;sjzzPyl^QQMu+DH7(i2vF_R`#ji7(=iSB-1m ziy0|f_lM~eNFHQ3!Jy#v@kU1J@79OAGPu|nmml8d%slhhO%L8=n=I{jx9Zy&9Jt=_ z7xLd?+oHGg{{fEfh?MS04?L_6Pv1E)_yB`|uuNQoRO0Dpo#&$)Gu#y{BN!ZboQ`s+ zxz4vuuQ77`z}mpzV4$1s-B_5*-=DWK`GUs+r}Z4UQ`9)ZD-;-xGd15=Jn_>oNVp(; z34_qajg@^DyBQe#8voyCb7*K#U~FLKo-j$oI5>Twal|t}299~cJdEYq4Yu8H8=lEd zWV&$pQ1wGWMW>4&Inf$k+_c8OI^gr>f#tg!*q}gi2X3W~yc*JkgJ;4L6 z1`A^k(+ls1;P%CH8zXZaXJ8lFm}FyG)G>_?FByk z2ef{6#v~RQO|8&Y@lN_anfs&Nttk~kCH4#oj)(SEiiRmUZJacHX9i;dg8*aA47Y|m z>jJ*YIxsC>#=y-P%hhE1zGTa421bSj+~#a8wFekDco~*Qq!`)Dvw8I2-SxkiU&Dj( zW1NQr7k|Y5{{=h@vIp5>(nD`5{4EwM->{T>*@6?QiS7m74K>WHoNirPA|zh;o5feK zX*x(4+H6hs*vfZzjw_!7!>bt#EX-YO8_OFfCdJwRec&Xb*&CVEW#N3<^r2PB#s3{Y zGVM=fJ~-;?)~ww7h^@vm)bT*xzBx&QCYmmZ$EC*}YDKW7>( x8(&Xao&m>29Yaq7sFYyHQ)^&b&rks_G8im77cj0qAl(C&5p~L7$ojzc7yxC;6951J diff --git a/samples/h264SampleFrames/frame-0396.h264 b/samples/h264SampleFrames/frame-0396.h264 index 2010e4c9687fa8aa835633b97c86be9c8dbe268a..18d814ccd09aba9f336bed14b51b74cad71fad48 100644 GIT binary patch literal 1881 zcmV-f2d4M{0003AFaQ7nL7IRXybuZTKClv?gjh<405X?eU-R|@B;*oGb z(!1$+5&=Q8VpRsgNdJ8mC7&Swu>ZH0$|orNPvOqeb|3fV{2@H-mP_F7b{u z6lU%i1?PhJW;e>(4U-kQY zHrV+G3NYXNm+m3@n$JS0ML1IvzO1;#Z1}$36p*RnMhF< zmp2gAB^Vz71PD1M3}I6xQE*WLwJ1420e}?l;TjX31cVs=4_pT=A`lM}#XrB}U;uy+ z5qz{uW?R9~847>_!Hfu{DNu_RkWPU?OWFuj&JZifx0aqv!tTE|Pj65%>fguq=M#K#?Q01SH$kcED35$TbDl@yF0R3K(1JP-r$BTE1wzfqtLR^oU&pRXY^fBL*QJTLwX z0r0NF00XJu0|FvPc}s*=M?U}u0fRc$^j`2qh`QJP@X7!)dpJmavI-|G?F`6BjDsx(KJmX|F?h$3=^_&+Z&6f&k3_i0D=HIHh{yRCtVP}8!YLy-~%X|jS|^w zqPS3J7^oNu04M>$B!AY8GBB}?$bb8V;W^G~K~ER8*x`Ul02><-2B18x`S$>2Pz3>G zVT}`I(7|Tk+yKA_G&k%J)|dq!Fn9nV?==c|S^3Tkm4#iR)6Mce9%1`_zHjrP(|R9m{gj0d|*Em013bWo>&8& z<3PLPRGkOoOaKG{Wbh0C6bRuDY|A~^4=&(9AQM9u0);*345$JhQ?C*9;8f|*A@S}2 z0}x&L6bjj%T1hqf-Q>(w9bB%f(tfXd*c-1XCxnnzbdFI6 ziLd|=4A(#o07y$%(I_L;hBaAWa4!we3l;m*6x{G#?9*8gNPS1u&%!mNMBxodq_juVfnZgLTE0`w{NnTEW@^kHa03cd6IMLNE zv)b?N-~h(<1uEIw*q(y+EG7&+5+ETJO2Ycs4JN7@K~6bU zjv-k=hnW!+7#(50nZ7}S6`FWSVbqv;|v5(yn(}vJ5-LY(mQ9k1Q8ZLW_K-<%^9Q-MS5$`|9`w- z3@ZJAbNa8hTZ@GfOrt86o&-f(38&2B{xsL*Y1EC{6H|0jNJn6VFA>*s0In&oL}$^ z1ppv`nZtTG6}N@DlNkU0yJjD!Dau>m{&c$kZXy(csSG;S_>`yR|9^dr7}EKbx&O`p zVd~&8)+IZAeloQI$j2c$*m9@`Xl0meIBLZsci%Scdc`0stO|*9kU<~!uds3EjZfdr z|E{_pSvI{*LyK>%(hpa!o1crX9}0YLyciKqdq Tz#EJJ00BV&6+&tNYVZc*+@mS; literal 1640 zcmb7F`!|$%9R9v@^QK`gavf_XxyLfhGR0<)Ohs6d?K-BEC?PS`ly?}6MjFe>B}G!A z)Tk|MOU;W754pg>LN6;|_8}@PeD)E!PgCK%Av8;Eg(LtNYG-!=Sf&?I>4cCbTx4VviU}x*F17XnGNDf zx5c2Zz;IPPGfg=mf9GG=`cR<63LARVJMf?Su&jxezLK}erw}uWV_d{WQ|0WLI5!P- z4UEx%pzS*{ zzA$r-9wBgWK}cY`u}V-3x*neW`#Gd{sML--l~(=ok3BO~B+#nZ=VN|-h&kc)avZRT3@+`BcrR+4+Nw?x6MADHgVa zyXuO%e&n63IK)HCFA|dVZFf&d5g3I|Uvq3UnIO-l3{9Wx@icKMZ{2(vG2Bh2>w@l89;~ z`;81kNc49*lE$Wt*S~)Wqv#$tVP_vN!jr3w~Y1#L2 zgI!$f8wlB*qEDG0VNvhEOgt*Rp6VbYW%Bc11M8`VoMDoG3#mChML8g(z7yY(SQ8Co zA6%g@T{pqUYh>i)&m#7sKY9EA|4CbR$7Ylq@dsF8+($##`Gnnvx#=SnmIV>RG3KSW z^63_gyW~W-jK_l#dO&31r)O%-o?AoOFr}xF0C5`j({^ju{wUwN5`3+ zW&t7=i>bR;T^@A?GM@SI4J5Z(!rN`9EOu{DC9(@a(&b{?!~2-DtxmNMQ`_%5e3(E0 zjcguk`puEx`ZY85zZMxPO4oVD#OCuAk}r>G6v2RDpSl3LIHo|a`^^w4318Ww0?9b~ z<>oD?eI6JmP5RCO2wek+Mg@|D*a05aB$Wms-X9?Q96TVKWPfL^$z_+nMQ`I{OjUSh zl|?pKIuXsl31)~7M3Ij?f+bP%xi3{F<-I@f44O^Zr}_m~vl(*6%5>{8S%;ZP?j39g z%WOM3tu>%KV){}oGzsN8@9O*(3Ve7iR_tz3(W&VO65l+Aa^ir-=Qzy9)b+}$*`aNq ztvCI^&SwK=G@unRy0cf9GAD0JBVwXQ80zEafD6`a0vr5INq_4BBib_o zn9x;DSU}1j|0WiTAVwUZFn|x5?@T}Y@Q>9{b|*lmw3HSOd;f!%z(;}*65xeFd_7P5J*?yU{V7zs+xn_)T-_^uWIB z09txe7x?5L&Iat|1Tp`n20cw*Qc`s_E5Qgk&G?%$Oau4;AOHvffH0&!otq!*m^8pe zD8FU^0Dw>jJTh1SkU%guqYM?bT=5!w*&x6Hh3dD~80P`t5D511erGs{YR^}O84gtI|5H(?g>=QB zz@Z2b0Pp1h7z0=uS-$lJ1HS}RnnG)Lpoy)P*R%ice^bs7H9A6ah|Sg4y}+0b4dw<` z$G#YbqWqd^&v+xQ;jzjwuIn2viK=tQ>5&Z_6zdNGRKUwwyU0AH#se=6@3Yg-PBsRy z0D`%|6ii6#NHBNEc-1<2fYKav8IHkBp(0)7?Da=Gi58YKY#$hK7tWW zRBMW~K)_93f}k1zxm_$EY}5yEgOC6S27my7@D9Hf52dwiguy{oLjXJgI35S)fdZi> zUSJD=af3(aO(qPA#PMuzGEBtZDEB!3AQ`{`!KvmL*orj8Tz%k%AX7@suF~u0f(rG;YuW0Spc?g8;k2OAZ;2 z^|R6f`u4xzngA4lDYOBANHUrahO0O@Fn|C+qyPj7?LYwNe@}QQ=okP95r6=I|6z~; z@ZHby0LVEYG;G|3`~aOysv-#ikE4$Y<@+OXk>N=nlff58wooyS-`Fl|NE|Up{voj_ zX8~Jr$4rJm32rbP;TKNueP&4Mudn`J8t&vB!~g?0V&RhmXB2#tckKWgWcE|h{NP>! zJ1Lh)ul@Zj7ZM_7W3!L{V|f^IO!Hns8qe3)-+%VR;0s*2Ix-4N|2K@%4*Q|X#XKDW z5QYG8`USC@Hxg@v4>Kl_zyLs~gg^nZy;L8~ zLG>lcQk?%(hs0Ob9crX9}0YLyciK+psz#EJJ00BV& L6+&u&YVZc*7YLk9 literal 998 zcmVzEafC||7%>5TKU;4m@dq5A4 z3C>tx${+s9DY+IvjP`>7aBHwXwiW8Cr#-;Oktiezf8Pf$fR6+qCBX`Uc!|IOA;17Y zK#&KEkOP+j^$g+ke|`qrqtILtWxxNOAXn2)Zug+QqG6p3YkWy@o896P^CyEY4$Qm` zM&e@k3Z{4+6l#TnieX?d;`GMAgQo~s4(l5D5<(E}b+3T0geg3~rEmNKM!g3)pa=jb za4Bts7$w9IeIhdWF%%jO4+UVjC@_Ek+S#HcV^mMTAaemq-n_wbSV`Ca-T+15;E8ur`J= zi`JL`0t?^(ArJrp5nusC%!Sy-xS^{ygPyR$K-GkPtH&M{(-wmQjQ|5basz^;7>%l0 z4}tg@hmgE$ss^TH)}J)*ey5yBi*unlL|5zYe4_#bgL#3K_PzIS8jG_gm-E4TQ-(v7 zBdY9y`gr{^A)|tx6$YwcMXbNPf)(k;1AY*H+3A<*$^%h=f|i~c)O|63 zLvTYR01gZQW?d2kU=*pF|Nq~N0h9o6-KL#QnF6U{Qp^Du#2#s+95{559(@zAmH+|( z695B)1<9Y@UrXZvxIjIGfmnc;&j7$M94$mQ3LrxgwKjQ<-~sS3WhdT(VyC&x5#ZMB z06+oR1OfaIgx~MHEkJ=n*sI2rhRCN|w}=@=LL^$k&dKy3O|OFn%m%s>WI;=FF@c>3 ziQ@|Z3ZLXOQ-OMGW!H$%00xDt_=VMmTve zRmDL{QrQTaVw>OrfrKJe8VxXBFnQ9@C!IWk0N}Gc09)AZJ{%38Rv#vK0t1U6c$1@V zQ682odNOJ7xTIhbDqTEy2-F(Y6*ka703d{DNVw?`NfrYJ=is0Y z96a!@U$Q(@cv7R5$_uE|C>;^2V2Q7gIAf6f-EhPM?}r^Ffs!g)VSwU4zVLt?$qq&T z*Z(h#cAFsXAOIOd7Y>*pSf3|;NWcj)Y^G`ckS_rpl*_bN{{EH)#)`R!?BoBGw(MbK zwR18PhaTPU|No%^b}q{TKPU%x1}`Jqc+j)~Ej%M6-H;}CnKj0V& zqZ=RxRy3)nftNf9RWKkhN20iuO$pToh zcd`HeAjko>ta35m`RS3N#ajK`ga8jppkZL1DS`3#V;`?t1Z(s}lAn5bS7#OiY!HkJ ze1Z=#V7AO(dVovXG|8DTBZ)1@QPD^=o(|2iY*FcFmVYmY01U4sGii8Zfzq4|E3bX{ z01Ci*WzZNTf6sV4c$O<;0099K8~_9ZfY3<(f}vWIo&phJ1=`aubm&P+4?qA#Yy1I# z1Bw!<)S=s~Ywu=3%eJrpKw%7leZrgjk9Dy%UIuc4X{kQoFqU%{uRs87AQWejO_Im) z;9)L>E|4OiR9Psc5)H%|lA_Ec?iDi+zyN??{+H|Bi4iuA-K+RN01TsU5;fCVO_0z} zAkD(?oOZHMN#gp*1poyA3J)rZBm_MmWakAx{ooY<1F$PFQH(BST@wgvLBIsC09*#sOT#vKw9^3%I zTYm-~Dx#PlTAzcuzabUh-fsg=%2`wAfm(yCtX<2O!t;J!FGqoF%X}Tw7x!opX|V<( zKY>0~F%OsQka3K_8#PcpM%W z7@&xsUw|?MR>Cm=NJ{`MsUw6LK!pH{kOBY#1Skj~8ro}rsd%qk8pWvl|Lx%@pb@Fk z!e=C3*2z&XtPBWeXtJk*sYf4*Z=?! zQ~nq>+VX49|9`(aU4NM>4R-f0`|5pdNX$P30hoYs+7mrO9#j?R*U%iN2o=jmS#ch+ z0GYvnk7@=%z3THV1_c@6FM(os0-=?meLvZB-sJAQ009AU1}HIt0}&2Pd+>`xfG+WX z3_E?mIG-_48jO%z|JD)|@7Eoem%;yx03Bctz;=k?egcAN3P1n=f}A(1@QAz9RV%c>!3O|CumAu7K>%(hum-OHcrX9}0YLyciL3#uz#EJJ00BV&6+&wO HYVZc*-Txd3 literal 1118 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 literal 1590 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 WumP*U8;k$|0YLy2LTmtP@CM^!NFJ#G literal 1107 zcmV-Z1g!f20003AFaQ7nL7Jc%ybh=H`S?2GLX^jWz;*#g!U}*-5X<;PFTjQ?zyr7d z2m=8`H+zvW{xq+D=nB99KmZ5;K`R7E)sN5Uq8HG9-~jU(Q1LLC4Kqoe@DNf(IF`+!00Glf5kt;fIuDC7RS3t z7{HpRKL8|J!zB1D06+!5Lc}yi@Bjn@#XSH3ARKW~h6zmAgHg57lE4H55U~b`5c=#R zd@zf^C;$Qgfhjsn9T3j!-qMCJ4AuzrxMtY~!>_y`0Sp8MJpThk1Rj=$IKT!Ac{v8m z@BjqK5B}U6fFJ_^2z>(`cA3*)GAuK_X+MFcni zX4`yIbIr0Bf>xiXG%J7vnO4B)ggyPR`C{ud_4=&h08)by#DEU66^c_KXRPwxj7iFV z_skqo!;<{swg$o_42r-RzyXv3(8~sX*!~Cjo*rKTG7LaSf}BW^@FUc9;&7h-!O2XN zV~V*Pn;rm+1j&g}aB!)-3HEe`y#W$;eP6$g;0LoGiA)|8KyN_PsQO+jW^rbrItG9O zfpY%9frY|?pa^3eXi9!4@sN^Vd^I580ATL`UC>?hivVc=5efryfJb79QUXPW^}1IQ zjsNRzhOpr|d z5Hr95h9Af2Y0Tl%$f3uuT|pA(h>8lZ_tf!@JauA#0D+(Y2p)D<00RKXWdDEwKwxE0 zW}^b$1QGE#1cF?QAb`M4_7ciXh-r=e`v3}$AOIjGm|zK500}{jjQ_k06UI0=stSP+ zo_D@2tpTfm06-2xKmdmrumLOd8id@KKlT9d5f1Tfc(_8Ax9$S~3a0^w!#rbY_M?W9 z&->V=A3zgCq5Q0V*5d$R24EmYdZO)`<&Ee6?*M-R93iBD?O@I{!bL$Nm;eX>mVg8R z;1qjTW&es@n!nxv5C#NrStm>(kG1F*m6C*y3hX0MK|p(m<}MOt{r}Bt{VvQv0Qo@3 z-YifSgDo=vO15GbIL`k>!oNa7FtDM}B&zhJ5#nT} zqCsw8fD8eDhJhk8kS1mVL=I3U)rj+dhzGnAFs~y4PEWp=KeRsyivk1%L_-7CBqKs~ z$br$AbQmf%iQ-B=n5`K^6yu21?+ygR%fuoM7!2T0ni*-q4uI!>v!6Azz97&_j7AVJ zLbaBgAHFhqbFkL%0(y+PIT*|dK*>^I-*;*{rj95L}=h;sZ7;0PuF00BV&ZYHP(uK;*30003& Z06B@O0jt0pi~s-uK>!s(YJh6+2IC&X+N=No diff --git a/samples/h264SampleFrames/frame-0401.h264 b/samples/h264SampleFrames/frame-0401.h264 index ea708941dac550d796fe1a711124be7ca1c18793..b5d1705922fdde88364e724552339f8658392b97 100644 GIT binary patch literal 6699 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 diff --git a/samples/h264SampleFrames/frame-0402.h264 b/samples/h264SampleFrames/frame-0402.h264 index db370a67b90cb36480a0946b3f6c5a0e624f5006..6c275a46c0bef53f4b7c4db9d34008ddf42fb949 100644 GIT binary patch literal 2920 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 diff --git a/samples/h264SampleFrames/frame-0403.h264 b/samples/h264SampleFrames/frame-0403.h264 index 4cd054c0f38aa1ddcdbf05bcc8954753cfc693a1..ed45f9666f6027370eed3cb2a60819ac40f047d4 100644 GIT binary patch literal 1328 zcmV-01<(2b0003AFaQ7nL7G4syagX9Sb4gDSRUU~SHT^;!U9T8E050aKF5=mJl#Mn z4|k6N01?22t!KD?fDQ)c02pH-oOWY7s}BtGHUJg@(ZjUCR8)$exW)hu@Y#x^trCmu zWKs2q<$wTy=m0fugIqZ9VT%@7)rMPH$%_ZqUpC{ZyoG3q|KKnx2wi|Gag|CmA7o=< zA&60e}?l;TjX31cVs=(r1cO zfB=9<0ON+im*2j}1D25p1%)H~-U%bk)B?csNG87gdf-0d^<(jX0UoEmr%8I9BNOA1%)O64e$=H;BX)iM-O5p15dT<|I7pp^P?74fOi3p3L_Q`kaK|} z;N?=$H3Zjx{tv)F2S&gcbOh_77sF+pHiOAh#n?qSl7d<|2_LU-QIKhlK*PD67H9z; zpd*s$16w(-sTTYJl|U2)k%Tp(ZMqO7P2)j;UW=gs8W+xwWfil{LY@|Yz!Ur+0)kQ7 z*XBx#Fq6C#%s&7K3=^_@V{vrZ;WlZ055NXdHyS09*F|uU)-g+k;W^G~K}#34Kqvs9 z2M;6uxM`7vjBG>y-U6Tj)Df5h1dC7r_du2B0@xwrtoQ(Jya570pOX+T`l>3etCimVdjUEG5oF0M(O?X} zHeNUgtET=={`{pW&a}Jm6=eAQIeCx&cmN^`9TcYBMJZ;2u83>zI5~CHlu4KvXo>a7 zfFfWNd@nSD2^8BeZo~!&n@sQ)0C8sH1YGR{(y~%UABlqi21M2Z!>+rfQYU_}V1;I$ z5?FmE9h5oYge%Ni3nFh^QGfqv00sk{)*8gB<8kqhz&;pFwWhuQzxV3v{KyIocK0s7 z?e(=yhv5Lq;6YhBT265=-o-qD!;Cvrj;_aczW^psz^-Bh!}-<57zm$dguV$0z#)-i zc4uFst?f&+8Qfk-R_u>k=5dH%ZJz@PFn2 zI>0{x8g|O)G;uK?001D14k{l6z9s+y06^iS!@M{q7Jwc%X{Pz7guD_UWEv9rdC+@g&=2k`Fko;9_u2QmZ#4!ykp}~XFM)lK1O@oP zjG1akfEYQFV6|67!u$ltJ02DfLb7Y7&MYVE57*m)EP5fzN&A2Q*XT)uLRImr^9=du z1ONmAQUS!}f}sEb0=)nXE|vt-!uw;6ap7+R;(9S*d}&+$hiXd>qmT0gP`yoU_Q&sg z!o#CYwh!2l;<*937{oy0tgwugc(U-dJ*}t2a>Y)gWs(%%1#Z&jIQ?x#IyU^M{%>Sf!u;{tN?a0003& m0B$Cb2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM@CM`WNlD58 literal 1132 zcmV-y1e5y!0003AFaQ7nL7M;?yakiQfp}0-00;;eCNnz3N)ik8(LLXM0fK?!Zs~`$ zw&03(f`(uLQ=E!nVGBc;>;U3kKp0%suK@r6fE~KK00;pTxaRC151>ew&IJINFosMB z2KfR23>kn=xaT%DF9yDJxflRa*f-$)L%(Zp^*|0AfB+B(0CGUJeNqJu6clJ;b9l&Q zG1w~ti?7cTcYpv80^!C2DoWMxEWAYokS0xgV1Ou({6L10J3fU`yaT{cIHt&io-|+<+!D!W(U3s+0MHdW zD6rBP(2O=qu0_AelWStOHFnKd9E?(2wD4knTd0-q%S$@ z;Q5o7NLF~)*X(8tJ} zp*2A%x$aX1jQmzp`-mV2VE_Y!h(2^Icnzz-Sp|;@@D$+W!3Y3*X#kzn3!vfxFWdkX zkH7>80(x9Xzw0QkCDlc=yRZ|WK^9EUlLd#;4+M3dI0h28MnApZ-;|*lmg(oG-UO^) z#r#>eH~zo~00;mK_(W41wN%HJ1k=Jfd~p4QNXG>r2o&Vjf2rZHgv10<;jf;8F36fd z|9a5DI0568jW@H`;AjkJC?J>rK^Z^<0_;#@u4!pn02mypC@ryUXJH3GBFBO*wo?ms z(AZf!Q2(96z)C_DNR&VC(fkRB49M2$9=Ol^eO7T&s*nMV1um}a_4J#9u0C>O4#(IJ zz?yhhxWJ&Q_N z(oL}A`2vc*=tk2^+`ZQYs%3&)c(VK}eAkoroQG&I7Ezf1nX)Fs_wRgRAT3jBwp4~vS^aH?{4AdnpPE_ y-~1V1Hv9u?0003&0B$D02Co2kFaQ7nK>#_4umP*U8;k$|0YLy2LTmtP@CM_@wA=Uq diff --git a/samples/h264SampleFrames/frame-0404.h264 b/samples/h264SampleFrames/frame-0404.h264 index 6d0036dbe530ad2fa4a5d67c7de794ba2ffaa9bc..716f147f1c07064df41fd0a235abf225ac39a144 100644 GIT binary patch literal 1284 zcmV+f1^fB{0003AFaQ7nL7HG1yahKwV%OC4=Y{ie>d}}73t#|=1}20Jx0;zr4~IS1 ztTey?Z~_li!BZ9Dqjs{r+a`DZl{;=MbVAEuEx6 zM%z=vBp9#;?I_M;gCh-e!vFw43;+ZL002OI0?C{R1C{_%2Rz?5upa}ZM0^02Ck-7s zcm4I-F#S1BQr}DBqNZhx>HTuN0DCQMC(iFbgcPK301yFH&EWK!|NWu{;|7t{E}Ncs zj)v$kDZoH6ZUvH2o>Y#_o)rJwU;%I!ZER-=g1dggXaEEPp8zPF$*WcWn}lG2lh;Dk zAmV1rfBV$52t7!W^&(7oUpwJP00a?ALJ*}XNJ12(|Nr;^I1m&`0|XfpXUc*l4B5-# zff@^ffNB^Ig#yQ;1por!Diw}S;!^MT+CafMd54m6mepVTi2z_c$^nN`^iHI&yp4bc zmnZ=i5Pk%QT4-kldQfsA_k6=g zw?1G1E^ej|kcB@tfB+yWD`*ipwDjnnw%&9NMbX;+LJE5_dq?A7$q&MvfP^qolVL?G zdY}5+{J}86Ja?SGhv$N%EI004li695L9X)p_<5GDV*^K5V2Us~4j zFalwC011QF6cL$RNIAm~00hX!M?;t(zS~5b`56eTraBZvtx1Ps0+@(k0c@er*XUs_ z*z6zPMd5%d4S>8xV#pMmJSuosU@Ab85Q+;>PzZx&G8?%74{1?`j6lBshTH9|1gDY_ znFNR)W$<=L2#_I&fJ7>K{$MSbaRljE>kR*vR;I(8@BRTo>;kj^CkYiRfO-i@mVpvI zvxocIx98_%z5;{^ASytkh!j2x&{1hn4#7@!^EVj_?$XjNJOmq8)BoD=CD1jA#$T7_ z-+d8TKo0;YnSw9S(T)$`CY~4P5HKwOFBk+1lV=x^AWJC<9N^3h3jr?6uPTAs3QIfS z5Ul1?BQyAvKkEDDf9|^jZ}9M}op`5^C$;sifB$}XUqmrXC@9d_EY$zh0G!kJ-ZmGY zftRMP*9IB@Q7SYjLYSz~8FmkORBY!-~C4rG?7D~6g9+;&+`otfHHrRZ9pn=8jpKMI4WX&1f(4uZ~q`j-y{>z uIB*Lj0003&0B$Cj2Co2kFaQ7nK>#_4rU9$K8;k$|0YLy2LTP|%@CM_`XCtcs literal 1181 zcmV;O1Y-LD0003AFaQ7nL7N~Nyaj>$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6nTmT&iE(X@l>5rUTmOui`Kze)(I5|Bg z7%ZNzae#;_Tya^x^A-L67_E7{Qw8-@94*Ho%jTLeGZHgKOxO&$`FH=!7mu0fS9%Jc zXfgXiWofkTuuD~2w3@)auu}rE$3RK}8Zy+ReFXnNZqjVL$vnw6!ZS? zNB{%^fJRiVfqAWO(&akv1aJ#_y!`rbr>!X5w!00ID@3>{bNlBDh+9ds>~${xT| zfTn}U6oaNi2dD}I@cV!;6c}w2w!ser3i~oJU;u|j3NaokJGv<4T!4qz&N=C_#OL|E zp{^MK0DvGsE@BZ@$dwr&^}F|sdLh67K*Or{00|MC$f@h|5fhPYJFSxV00ICZij+BLd_y7n%R3oZ7 zKQ_Ml=(GRe{q37$ex+A+55NFG3@U@Lw-EoAxWHy6$+lns2nc`xfS3Sic38a8{s4o5 zpakb)>ORaC3aZ63=m9VwD0MoG-lHFrja@r~08C+;fxDnl}tb{p>x8y{QL>W z_5!2{Aqb$S02yME*REz@0qlxK8W4f~{|}Y^_W>gHAp}Md5Egy#c1Q@2Ac%m7Q`g)9 z4462=A|;~wYyQZ}o*YxZ;B-;|Dyjei1&JC0Y49aMTrzEnSpWO~xqJl(5&0K8xbA1=f%kswbg3LN000KixeeqDHx0onyDJAgW@$*GaKxQheC zq5JB+zi`1-KmyQn_SjN)4n|jeGXRpMzI)FF zcM&G4H~0T=e+UgF1v&s&OQl2e|1i-Q0g3Nc>;SW%+%E1MKxIbsxk?5*%NPEjNZ&*g v&|usG$p8QWK>%(h$Of+fcrX9}0YLyciLwE!z#EJJ00BV&6+&!)YVZc*O40eN diff --git a/samples/h264SampleFrames/frame-0405.h264 b/samples/h264SampleFrames/frame-0405.h264 index cc3bf5a0891b64cd339a607b75e00de26b432b5d..3fd9f494ffe222197279f203c651d7618ebd955f 100644 GIT binary patch literal 1357 zcmV-T1+w}80003AFaQ7nL7IRXyagvHNN5iF5N~r_S0qN>Vd!3ag6miXz9+aYZO1|b z;0MR~Bb14P=LN11qXL`raE-RT^2SPE@qQRVAU zbjr_f?*ITm3II6BCi;whQB(+3S-@rbfl{o$4LEA`8!Qi%C3)P1C=@2g!&Ji9Cqu>OnLx4I3;SQY! zooEhWExd_=9;3hX{{TU~%m^LOp`=z(6PiK#FTDyHMPwk}8UL`sJY>KCKsRN85C9-6 zq-aS*9E=3*tuKI<-~m&R0)T6zp3lKy zmZZ|Hh=d-d?f>n*@Bjn?XapnzwB*I=*h7_7xyu`e002OGCLjkYZSUL$gdfshA}tV& zd%M73tXUs7y+nCWFTem005MdF)nQm;MB9W00HZ4c zA%e4U;Y19b;UdqlI2BqVUGsoTDg*MxO;kSCXuM&h3K8KGPcJM3@Byu=0HEMOjHtv) z0D$eyhyVlyfB-;3)1U#Mq0a&rQrFbirs3E9%D8`#-bnIHj` z&>-Ss9ovHxoQ)pm7_<;sr#t_^J^%nfAP6Nb=-@`*k?K_ue{2ZBjv~$|jom->xAm{{ zB?W=md%mB8z$l5pf!a^0SRz&rzzr1V40s67(t&wCa=5bbud$9Dhor5;C}gp3lavsy+|>@PGu+fCwPL>k<-B zd&7m#3+MO=&?JirOgsRf4%)>7d~F9kC#W;MKY$Q@uq=1s0D}o-SzOKSc5X_w7Xj}e z7ajQqUoAb|Aikv9W0RMd94L#&!zD_L*R8-nO*|{{K}Y~v1J-RmrS19vR^8G6|Avf1 zrnVQeI_7uad|s4GquqS!8MwfR{Skif*n0qAh#ZIuBLwHMz5o!No{ahF$?8($XGI{X zDobGN1hL{j8MDgx9#RAhL`>w&M?wGd_#80lj>(y%vH!IJ8b+9(DHYja;3hzZC-6oz zW4SL+Pv6!4H-M~=m4m_I#RHx=00;n_-~b>*02JS=z?gVPL@<%!f;fGTv6CM3pYH04 zGY1(9UH<#0h;O)&0#9f!=q3fknbCId_SrG5W)YI27#O$s6RIQTbKQqy?Ee3qm=cI@ z{zEVT)u0VvrnUd>9eNR%K)$5IhobxfCjbBeK>%(hpa!o1crX9}0YLyciKqdqz#EJJ P00BV&6+&tNYVZc*(g#`o literal 1102 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 NK>!s(YJh6+2IHhn#X$f7 literal 1410 zcmV-|1%3Je0003AFaQ7nL7QM2yaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`L0eYG2#qV5&#DP1Oeb_U4u(CjiMk6Ng?xC^8hdoT~IBZcX{IgL5~;ojSFy< zpRJoE;1~d=_||+;1%r*CPy)aB5sW5^&B$l1X7~jF3CVyE8&WjMB6&#H{pJMXoHha| zDd>(08pXg3LNiw&Qerb~t_9zCXE>$vlzPi>q8ey0;pzc^47=9_MfDESm+$}}0|Nvu zN3@NQh~>nsU3hW|OJgz~d;5txW;%Oqw7!Pz+t{Hrf=T_qfgl6|65LQ5x?Ir_Rs0+P z9B2erBs^!9!i>voDqEr;01zVS#-J{+@mxOB7zl`=XlJ==c)k1p#}}e7vT9PzWhwvu z3;;84`Cll{!+R{R@6NdeC~=}(X8nQc@O|BWXB4U$Fts6T-~s?4lxH3Z-1baG1O^r` z*^F|GQOb4qfB+y88O8zKU?xvCCV2uuz%%Irz>f)ZlZQrMrDNX!AOIi?9ab2+BKSqD zl*XbS@6)F>JOE{2gzHHGA1iDZKx;rSC|G3$J&sKr06Yl+ThTdcA+Z03ZMl6D<&L z4hRx@j?z3O6j}cO2LXYQE3KtNq(zD!nUa6|tN{Wiw2?ArYAI*`^GLo-F?@)S06+j? z2$W3=ZdyZF!{7km0ANFtslr>_D_!6J{tZeBzdXB2TUh3sFnz$H^H{3BpZh=pFakm- zNW7Wz%OWp-yg&egRn`w?)s<4TKjPkJvGrff$|=8Oo|gZ@KmT|DAPjZ^u@NA)3Gyq6eTfia1APdT^lzWpVKF%=D4C$Bngb#4r}2KA7%`KuXaEQmw(r0OeguN2{|DeG zHBy4z{pXTNZ~yj&u$02e8iLaJfzY%rATBfGGXcA~LDW#&uD65m0}4`IoLmBhmuj&V zUNJMB@r;ERc^(8%zyVdX3<C~h90cnR<*kL5rBoIn5&0H6qZf$K2F zIFqmycbFlW!L*Kc1oPIH^vqd-q08q<M_(94H|GzocXgly}`hN7w)#0hGl9Tlokagy7z1tbj`Q(Fo9mTpp{jBVkId zj6dXViaI~|aCG+g_J4jnWl`FH|9l|=L`%R;fiy@`%#H>0StV2EODH9_Gp5f{|70^qu<;K))|+^_%G$L%>zdQn$EO%V#^`w??S1%^@d z-rdKC7e+>d?+^-+bcT>iZ4Cdhx_&y#SbzS1@MHmRVNOu;`~grr3)TPu0DUY0oBRHR zi8zpt04Czh#E!c_Yshl^!YL=ezX?EO01S{5G60$Eg2X7R{y*5zJXq==iK%~s|6)Y= zAalLGVP>1_s0b(v=6*F&zvXhAp^fJNh`;~<0YLz6CfEkA0C+F}00BV&If=FbtH2wK Q0003&02M-QfNJmt<4mn^8~^|S diff --git a/samples/h264SampleFrames/frame-0407.h264 b/samples/h264SampleFrames/frame-0407.h264 index a66399c89e39b9bd072b2ea4ab89c3b1f370f38e..36e3dd7a3bb86527cf460726e2dcda5e17343e81 100644 GIT binary patch literal 1117 zcmV-j1fu%@0003AFaQ7nL7KoCyagW;6vOD3RJ;I|DS$jj6kZxZAg(<3%UR=mq!|-1 zEUVuGi|3|agD{L4f*@2326zA<00;npAcQ`h8z1bLGQdSBzkUoRV#Eg~Ga&o`2*jMFV>VK|GVlNl z1K4sY(T*z70|7OEycYn_1j^}IBW9#KbX@ z=7AESHm@)RKq$eZ(}t4){-~dDdf$qj#fk6m(ouB*|!sWCd{wCR*FxA~dD*M0%<0wJ}T!TcKXx*R$0vH@) z1_5`3mK-x5>u01cOWOZ}XaNWTM9>BU!IaQ^Gg-mrF#rI9H~_C-Ft|19QkD&jG#>IHtwSdB8!~MK2C%npG z$@B7WFj?{*V{y<8@)_{+Vg@1qLU;fsMlw1a!3FmkB-mgJ81v!dOkB`Q(T2{e3_p>O zippc5MD?q~4>y!Pt{74P!e%2Nj1pZ8a790W!?H&LZby$6w&2s@R1rcI0pa4c702{!2@;CsX4WVV00a^T9ZkYlY38#NKrbO1;S z1#3~@oAE}KB#Q)!}88R36uIc~C z35?0ZNvc3NfF_<5)I_2}faCxK0h|GJunDZ8MXztXQYoQ?cz#SN?IU#ewE)k~1QWu% z1jrRf1u%00vjF0ZAZ!%*!l;Z`ET#Fp2$E9}b$B61hxY;?3z;acFLvzjzy|@NWV?de zx^MsI4TE#d-`TQ%_zBC&0F3tF=j>Cm24TK#An(kA>^!?E1Y17Q_)b1)%U%lhFg%I( z8606{;_wL`LqPwAU_$*j5w6kvB1TV;c!6wvj2z@cl}K?<*5R}io$kB_1ONa5K>%(h jum-OHcrX9}0YLyciL3#uz#EJJ00BV&6+&wOYVZc*>72~` literal 883 zcmV-(1C0Ct0003AFaQ7nL7RXYyak6RgsK2Ip8`pOPzFa+(3R){01K2Hw8t1Ftsvi> zn`(erm_9cE1R8(@0)rBzUDqNu+UM|&0C)fd0Dz!@6!u3_3nbzcYgKq^Z~zb{8A(V9 zi&;L~bV!fj1^{M{A&1F44FdF=X98tF##i_R0w4=UREUjmA5K>wTQA{G(P~Sp9d+`QS2&9rqSaS;{ zo)E1d!Wu2Us6j^CQ@~(~z*$y8MHRn4U|wDC253CJR3Z~@Y)k+CfM5V11akrx1b94! zsMEwW00;;a(L|hF`PE4cBwoEI01N{RWG1ZrP?X`!?I54q`@jPO9Pmmw8g1oa4;M|n zyVd{#1=3pp06+vTBVFJG0*xpjlh?0HhpC)Cm!EhGkH8WaaF^Y|kK?Uto*N_KhT_Br z5kty#roov^#XU*npYRt)g!B9a_!LY`Bw+gR0p#ZgTfH;Hz)OKdSglw96+i$sfccOd z0jvQ$E~@~EAH~g$QGv7oO+0>oM52xgLuj`I0EqSK&)qD?ty>aepZa(Wd^(rJG6KE- zIaa583@x|(FbxbG*T*6@a%9fBY=9C2fT@1s1fJ7#{4J70J~$XQWH_o;{C@$^36Lnz zksShnV?#vf08EUJN#UVbpL*f8#p@Ny-~51fWZ|?+pb8)fr-gM9D3G8aKojIY#sq;B zdiSm4qM9%WDanOBq}@H{IOpXIRPe6>G6hk=OrJ0pkOdJ+1;XDbRXY+1DZd%Oi7-P9 zw})V~2!JheD~rFoJKz9V9!!^T>P5!?-r=xiEZtVkoBzO0ULd;?^WYcwxw0P*VA!3I z4hSLH;N2f)B6bT>kU=LlP2aYry_^7)Bo+YB1hC3LOG7|AObeN&(HV9N#1mA-fZ3Q! zA7dag(l_tQfBj3=&i!s( JZUAcV2II!VWugE8 diff --git a/samples/h264SampleFrames/frame-0408.h264 b/samples/h264SampleFrames/frame-0408.h264 index 9580bafa484fdf63d3320270a2ab214a0f88dca6..7b83a5b277e175bbcce2cc1ed6bcaa11e61af6bf 100644 GIT binary patch literal 1272 zcmV-jZ@Q3y$E1ZeUpK5Gvm)2k5<0`03Zff zKmZT~9v`x4d(UEM-V8g96v}1_pwOSm(|xD_1O))N>i`QM=|gY_1>hLB{m2|RKpo0Q zR{(ec>GoL{xWyoZ!}K&$tXJ zd&TOI1Azdd{7rJtm%I!m(8bUXrW6*+X+&dj24twS2|Iu(n0^2R0|)fKUhGJTw07-Z z!T11W8}N~@oXTv5f|&-67lh$j$w4QN>n{KSKnDhuMG^uYkwD4K%KQT00Cfgt2`z=q ztH;7x&~O1P02dq;0?-Ph{r8Fh0RRU80RRF`01!{l0a9c2UT^@w0YsZc!rbFPK$)>H z08if6gg+jsK>m534JZ%501yQjHLv*r0$o@(g;>oSfB-Rv=h0BzoAxN9-?8?^(76{L zuR3Wx^~^g{xBn9kHpk4!WOWgAf>72VJ{bXlR0IeX4V4s=6_eZl!GSo~fFdV?!{7j! z7|7^z1Q*#Y*^TJ;QgzyT6R)zHMWz&0u zxbOf31;iMj#s~~Vc`@z6Ee=4x#sDzwOMoD+HE70?!o{7cm%Z|zbL^HeV^?sg>~H}n!rqfTwyefOEDyX-Hb~$m3MI}!xbnhJdJ(f}0r*}5;z{V2F}5KxUrYX_i!Y_9k;YN&h_%gr z>^Q&(lK5Z(q#{8#?sy|;5J%0B8^*oOB47j-n{|=>d#cJo#Nd^(;xi6n!vnN1X7A05fk@XQ2Yvr#|pr}o)m>_WxNW0Yn+++#+654|NaLE0003&0B$C@ i2Co2kFaQ7nK>#_4t^upS8;k$|0YLy2LTi9(@CM@+XDgTh literal 1022 zcmVV!&uN07>3ra+rEOo}u=_ z_VWM%0R$ie0G!!-qA*WHVh$L@EQ>&&CD~69{lEYqFeeT{OO)FKNXc#9U=;ubwaHk} z6F!`)sh%w({_Awp z@FevgNz7gz)lq*qoLDIoKmcqdFN96icKih3pssJvOtgL{M{jWmz6jjn60=>cY!$*T zdy^mA+}Ro%3PSUqju0Y%5YrqiDR7$FboxK}JBz*WK;jy7U_*Lz>`!a=3h2`vgy;w> zW-ERG06Xbg z`+w}<02_eEJe?e!3zIYy-|zy11RWh+S?E!9#b#?eqjUfQ2><{fD-$3{d+q=LKr9|X zsya4{N_K27>zk|$BMLOq1raE#_ud0jL|_1$Ut`96K`#YhsU(6WridbgPXGWwJU);J zk4GZg!c+zMN#GE2Km-YE2a#kJq}k6P)xZO8fB+yM;67LJz}Vx;OVl8Wh+wZQ<&t3l z7l(y&@F$*6v4gf`5iW;%B02Tpdx)1h@6+*rK!njsg`d6R+0%Qu|0%gMz z0(OCuGErw_i}{3+004kF!#_B_Som*F7z62-e&AbV11bosBxnDf#APb%KW@8xr2}?T z(mx~r|HvF9%-nX5hfrB)E=!<)#NZ~L5%}Pw0gz{QK0k(7VVhh@mH$Ke`34>y1}X@6 z40I6?uYj2XsPLzUzSL%Ka{Ck+@B-g;Zo7Z?n3l1b3f>RTl3-yQ@6Q5h;atB$M$w2o zDG7J5Jy{RT>W#NP5Wjw+ec)&cC6&k@9#~7;2QPC-Kk3*BEj*%J#@K|(Oa7&cE{1xE z97P(~iCyRJ19=z#nphwvL0003AFaQ7nL7M;?yaj@hh!it`1A+>iLbk3+(j5Qw$A{-?Z`^^J@U7548jUw@sTNagPujZ7?_`pPgLwiOVa@A%$+ z!}sqv456BdnBI)d|Nnj<6~TG<1|lN(kTiNLxq!{rAz35PiW4p09a;03dz<0uMj{A!+~u0ZE)70Kh-Ebr}{A z3~a6dg*Si(uMx-{6T(nY6gfKp0RXn(03c{!1kek{6FmQ=@ljJU#zt9f_pkEE7jOl# z(>_V_Ui}a)NKgO}3uWE~tV90y2pMQ#S$L6w0PR zkSqzH5CifM4)+>G07rNNa-UZe%mogA(Em^X2m*irfIt+AS5O;kys!#C2cV1s2T}yH z?-5!0cmMwY1cw0N$w!TF`xh)Mh(FcZb0*LL2x@)cYioj-6x~%gOAG)J4ag!r@AeqS zy@$L0Ula(?ToeOPzewOHp-<^Qxu0KgV)08pOS zGuxkkcuJr@PIx=ygp_Yo9O<`6x;UD5pZl~Dj|$3q3M8|T|KJ3NX$Kham-?}# zpCY#e0TeKjUn~|ABJFRjclUq*AR6cf0ToC+g)2~xvJ-mn00IH(03)0ZT+O3uoeEFb zfC3j5fLqL@2@v4_Xg^Ri3sia%N(}n>2iA&>DeFw;dX8z(Uvm{QxmjLE)nOCWavgv_c<}S^yvb5Dg-3)&ff+Fc^L@ zcz`HE^ObnV)@Rm`U@&2i!=(ioY?v_mnt#n=A|{AtAw$04Kyr4D1~6o26^$(HYN=H` z0097i7&8f_VbZx2>euJOpdFKSF!=~m^LPLP0;0Bo6Pr&?iR*3T2@OTj-2TD}`!IVq z<6y}T!jK{ff(MirqG+44Y@IeNG7nSr{$e8^|C_)72nw+<0BNR^0J=#cAN#Lujr)u1 zTV5srOfLWdGJ4`dGb@P)IKc!w023n_9S&fE`;8KBuVRq)8$5ER@n0Jc!* zYxFRc>~;^pULFk!vtc9ua_~Ts zTr5f{;=KGDw>y>J0%_qrb}%gs$^2~6Wn&YKNhHofUHR5hW}xxU3+cKP6#J-v!J)F3 zv_?sWcahJK6PJmf3{{Q$Jpa1{?K>%(h jzy_}XcrX9}0YLyciLe2yz#EJJ00BV&6+&zPYVZc*+sbGX literal 1272 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 P00BV&6+&$QYVZc*TtReM delta 1345 zcmV-H1-|;x3y}+d000012`~Tv0YRDo8oUKBL1Lu6N|TqtNNgC33|cr;7-m@_;OP5s{=~>WYfK02t;R;h~y;S9(eoH#C+0aAJT|VFoFl059Nv zLM2|(2nbOCRS6ie${Zjbs4XCl5QI45+W!r~!zU_e5h5qXBCOqb8yo<=$>Cdgro?69u|2V3Lb31WZ2U2jKyD0nwpFKwb&6H_B=1NDL7dX|^dA6_2`*4sE58*;zmWI?5VAnS0h06)iIc=8RQx0S z1q13(Tc6xXB$ogGWEq5}6%AKjm%zq2P8Sdt3Vg@K|NlKi4ZABKAAm5WC6&d%C|P!^ z5oO~OIo}w_Q>ziciWmSYwt;~b+*ZAR1E0K^055eNAN1?*3lIP-Vhc1Nk%Z1ZFDw=v zRXfcRIDo}OZG0OZh$7(fdW9EwaztBe{=t?MEV>?i*1LfJ|8O(~^;Fc0 z)OP*63leTLWX1ozekXA+eX<|J^(`XTfq0ssz6y zPT44M1>h>DNKlBM3v0Xp^Q8JNSseW)ENaMMd~_xdoFm92poX0Makr2* z;Bz@PSpWW)>H9|Ndy*CzgAN;j0003&0B$CLlUfC26QBXBz#EJJ00BV&6+&nLYVZc* DM1)3f diff --git a/samples/h264SampleFrames/frame-0412.h264 b/samples/h264SampleFrames/frame-0412.h264 index a2c5c009fca8105057bceae7ff099c4e9dc7d912..6c20608a8d1a882885dfd41b5b35e879e9c64b8e 100644 GIT binary patch literal 1061 zcmV+=1ls!m0003AFaQ7nL7QM2yahKwV^`FaOW z1ONsB4s&0Jf$NVCt~tKACGf&#B%lgCTH9?teZ3$8AOJ3a;is(HIDeL3{lEbRBOXgo zQHpu*Acyb>00@J?T9?X!l3#|C@>~D_fFV#h_h=xJkRH@e2R}29+Dw00;ti_W&$Vz<{}9Be2OK z?1qmeGg=&@-2Q-P02~sHl}L#yM7K2+e=~CICVK zO`s4752AyCDt-=NfB=EW00=1bU;qdkfOpRYx)=Zm3xEKCZsCvu;VGZ!8ys*nOr^Ux z0`#&OpyU`3x|Y7Dr{oh2z;)Ba17a8fz%_6C2wM?gag}gx7&j#m zvj!a4SpQcF3P2c$L}U?yOZyxVN8m8!hJtBHk)tpN*^Q9r1(B5_8~`jc_XYqcOaD%W z#3aTG`@jeoae|zphn^_bIHkNle=wE80SAMdOMrab=06t88jU1?8E&4FwR3N9@um!+r80c9I5SRndC1W7|Ujs-S@It{#7Y86eXuD~; zz~>kW_W>RluDk3SnDrJ*ug9DE49YS_WA1M1t|zQWl8xXf13KBtIY0dWpn#ZozD6iy z0Cr6DuU`IvnTq1{8yo%Kpy65tGh-i%lsW(~aUSdG2FG}lQy7~c8xv3OtxPySM+yq1 zYmBKM_xN-10EYcX7w>dHBN3BFz9JLZhGIg%41(!g;7RS0M+wzZZ6@94p()=m`Rb~Q z!zoUG?Xji|U;;O!A&Z=7<9h`Fg5Q9Fq^LCj00BV&ZYJ0UuLh7bhRJ{jIf>0?FU#Kj zg0Lf!5DQ@--rsuLUj7CIo5?cS7L<>H71ND0kFC%^ZNXG}2$)DicKwtyI|6=Ub`QQl zwGa|S0QI1S?Td@O5dZ-Kv;YAB=SUbZ00;`80BfiaJm3TB^U}bDHsE>l;s8blcWCkZ z5F|_hFGjM)Y3QnIF#O~u5MxW&Xs9CK9pEzJS5w&PyZ;6s|NsC0|NsC0|NsC0|NsBs f4aNWf0YLyciM9c&z#EJJ00BV&6+&%*YVZc*o_e|b literal 989 zcmV<310wtY0003AFaQ7nL7E^Myag{oVM0U1GI%kU&2xG9nV1YiuyhJmt()eC?B z<^i|?LUxblOsFsXC{}?8`r1jcv_ z1_vIrcnv`qFvz{WJAe*?1X6q0WcXJxQXCrHfDizxhXeRxCjWimN(?yXN~3ZCgc7II z#2bi?v&;eoU*zNL{4h$u_D0n>ory@0r{UYiECA{L<(w#XdRA@ZZ~zDp0uVc_ z%IE@J$6=tLQw9NQSAc=f9AU;p+Wclfp{SX6!lxSnCqh!kaj8M+QD!s{00~K*B-v^!g%OGY!Czz#9|7`S=r$=kx-E4k7{q!qDtpfB{O!*pbSGmOgQY zRf7mW>;W(hgp7M|RD}=&z$F(TMclpykU8Lmf|M>8fC2PhwchFoKp`eC#&nYR@WJ4V zk#BYQ|L9~alQ7_$&26(2)+9+r`~tbQX-7Bze}ORZe2h@Y0_#3YKkzdczJ5U5)yIB? zh5=02r__*`IYNl$-$~uO#FGpdPld!>PDA$jaPS|d=|H+(-wC}Rzr(+#0EYS1V7?qd zoTPRf_ryXwFw96;0ikrRa3uE0BZTg%Owwj=eOo=W|e1yBGr)L>`;`@G3uj{9Id`SAcF13R>M{fH7K03DiTjN9>4)M5F^Y#_#$ zu%WCX;Ps&Fm411c&&P-V|NsC0|NsC0|NsC0|Nr;{aex2-0YLyciJ}3kz#EJJ00BV& L6+&o$YVZc*SE;?@ diff --git a/samples/h264SampleFrames/frame-0413.h264 b/samples/h264SampleFrames/frame-0413.h264 index de107b084df5efcf6feb63907c14f74138aa2db2..1c5d863dd49cadad40e4b885d2e3e4a4ddc248fd 100644 GIT binary patch delta 1218 zcmV;z1U>u42*U|~000012`~Tv0YRI98oUKJL1Nd`^htm4hzNmR01h}r0fNW*hk;Tf zO3KFo18HMSsz$0-^Z|zvsVZ$+m_3GmTY`TQ#{f_a^!^0PyPROmaY!5^%1hsC^u7y- zA%R2@gOEZp1S*`!K$denU>pi1VZ}Y*>B?rMTzVk`5!{%69d>A4!tq*%_y7i2KmcK3 zTBMJBaD5BGj>5z$i3j+>wuz8yPyh%90@ADi(S4CG0Jx9_&Hr)^6kt14jxGVf45f~o z7=r0Y(kWp zdIU2MvjQ-GS4uj<8+w|72dUCtr$~bSxRxts00IGQPyi4D28N90AUh^=z=&`N62_TZ z zD4UNG*=wS>NM{(S!tk8uH6W&o+OGfw04RAM{i6(xK(UR9d<8%Qs3Pz|Oe$49IyH_M z1dsu-u@Gtl%HN-Opa4z)4D!Gn?-~W)8KmQY7yzb*{el|P0F&j901o?w;unoX@V$9m z0}sG|01yEXC2s4+2Ju+36rx|;00tnt@+lXyJhc#O^}b}taTOe{tI|JLx|{#y`I!ug zraocNv~YYf3>5&QK_MbyG9p47ANVjKbv1oSM3?a(pT$5B2y_4yeEMMAPs`pf_PFc5HBPqcwu1tl*gG5+9x05Am@N+TcTS~2l7?*0f|AB-nB%Ryy( zg!v@>4rHjc*?X68D?M#dy#ELWR{{#r($aHChW07s4jf^cq;+-?+dKf7Ljt*o6AtHB z7+@lOo&>%LiNGL;(Yr6XY@TGjF8}~QJitPLuQ(SqLHd6|@T4Aiz!+8g0O$3JfvDbp z9{=@;3|*U~<|_C<^8g)S9|72Q%IGw4F(3c{Ad3(0!e9U(2o4rZJHw)G%F(9F1{?!o zcwaxCfi(VqKqJ7?;Sjb7HgALjVAAy%2M{E7ia;b6TzVU7n>GP=`L}@y|GI+@FVG2a zG||}j9a~U!bg*=arx#kA&@}P^R$tS9-f-+YAY3TU!mMsw*M??nj7sa~{dQO&QDnDV zLLbM1D)h=^X23O#X#^*uobhk_24DaH0YLz6Cg29I27-J~pb{W!iV_q6YOGOq*^O0H z|NpqyKmd>hJxDOXfs!rBU@+)|bgA$CL|DQ=Pa&#PQDnplQ8*3)(?WG4N4^1nz-n_? z9oBx7WWu7mvh0W^sA3NA|NsC0|NsC0|NsC0|NsBs+EF9mWwb|=5m2cA;1&}_m+h?~ zzy0_PJ(604q<`)LI3s-Zw6p!5Fl`e0L21-3g4DlkAQa}T5HC5|%0jR=5cmKA003a~N+>wRaN&~yTSWcC0YCs&L%?xR z04K$-<^r#O?*Q;9IEGysWU*l8(Z$@(2z~(Ybm_qYUdQNzMWsp@fEZB&T2+O11ocYp z`^W$w2OCx6&|0OOs8RrO1pWYm26~E8X+=Ushq1gFK!<=9-phP0k?F1@J038=97)q> zLbOQn(HjBNF@*woe>j|2DHZn-hv5=cT|cm#D0a7h#-d6)H)egvMexT)6V_WOSS(`J zV$IF&+GuETlibvJf+z+gryc^i0Aq4XZ!Qb32swudJPGl2UkcRh5YQ#?N+doL20)BJ zWM_b20CrFqfdxq%2gWPsz=i(P4h3bEPV~WO-@XC}RX~QE5J{(x7jZCkJQ)uzSVQ*# zloJbo5YZBX;|Z(^K7Z~20Lla~x0V2qOCmc%(Z~cJ`+*JzC8L8bOcT&AbaRKiF$yF% z`V!;Dey7lhzkmQB799)^h^p3!A3r+-kx)$ZV6gTLAH3KgwM+R(0bh*31ppaIFc=9w zys+6-qQRU1RWep+Qhd{R00IDEY2YFAZx$7QwUFva%qZ=g{8|}aS zl(q}j$5!Mwo*C$oFvYRrP1C};laT}zB7Z-h&*$I_h5!HoK>#_4qyekI8;k$|0YLy2 KLTLbM@CM_iEy-m7 diff --git a/samples/h264SampleFrames/frame-0414.h264 b/samples/h264SampleFrames/frame-0414.h264 index 677d307aef1fc72dcec57fe70d70d89842474129..a6d1647b355317baea45fc28def66e7e3294c744 100644 GIT binary patch literal 1334 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 diff --git a/samples/h264SampleFrames/frame-0415.h264 b/samples/h264SampleFrames/frame-0415.h264 index 621e730cb5f8e73e0ece003ac2ae2b691b5616b0..8c1e99fdb4ba8d226e8e6c8f756d4f8c1807bace 100644 GIT binary patch literal 1516 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 diff --git a/samples/h264SampleFrames/frame-0416.h264 b/samples/h264SampleFrames/frame-0416.h264 index b85d62bba2b7ade8a17b394bdb4cfe8693eefc86..eea3480ec3663d140985371c1ca747157d97d462 100644 GIT binary patch literal 1778 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 diff --git a/samples/h264SampleFrames/frame-0417.h264 b/samples/h264SampleFrames/frame-0417.h264 index 407c7b26372a5252a36814d4c56b759c50781a51..646725fb73740c9432d9bdfcfb60c49be4ecda15 100644 GIT binary patch literal 1204 zcmV;l1WWq>0003AFaQ7nL7D&>yakisc@jGfp>M3yfbD6N>Hc|r0}zZEf&f$u1{;6^ z004jp0tiFt*|Gk~gDeD6i}U;pHd0OiP_;AFUx?fL!T<=s03ZjT3JMdud_e&|nScKP z1Po^qYt(R#BHAh_j{qP55C%}NzSYygnR+0aj*EZ*5DGg3iLH2&YGCWk|Lw>k~(Sw_esbA1OmVSKzIjdNr%(c zu0mj-r(56$00#rW{K%CFkL%vRE&)ai9i23oGAa|rvAo4EgAh;(STY4bLX7$V!9X;c zIqp0G&?EPIp?}Z>0!DE_a9VZsP(@-s01*R#Bv!1ycVR)WU>1N8|NZU=1Z=~D(+1d5 zjN;0pioMNB6t{ z1ON;Gn_*3Z!bjTAIih%oXm(*ydZeTO4HkS>?f?IG0|2iq7C;WAzmbb=mssE4ATkC# z3jtkF+1a3`LiVpEfWF)e1`2T>1j{&900q|=00aksDcBKI|FJL%D}d(n4;M$T+yVv+ z81QC^3hsGEP@Aj)tGrK=0H)9c0U*j~J{hdw;E(_aBY*&d4@Lk0f|vvF=&W{ufB=CQ z00 z$YJ>ejDstI4gy8e5D%KX0|Sf6Qy`-oN<2Rdi9}o;2&VuTD%Jl<{9}sCapuG-eIW2q zc%LN%u;uSyd~!zyu9nzVwr?b00BV&ZYF>RuK^N&Kc9g({{#3QOl^<=ghMkPnC*W5U?RZcEOZL`b}{DIgT3@j zWg(!b47IHdb!=s?%2QSb@4;$z?rX0MlegFX`UKO$JX;8b00uql)Zg;md+ruL?_j7Y z;v#W>oE!jCXpx6mmB_FH3nG;~wW=uW05C7-yubuFwNpJK37wj@q}_=>&2e|Ustgp^%SNxIKHF8^dEqIU;qFCK>#_4paHAE S8;k$|0YLy2LTCVL@CM_Z)cDT; literal 917 zcmV;G18V#L0003AFaQ7nL7KoCyakisNeBc13uX=b!n|)@0Hby0b#Md#3EU1_0R`b>ikit*9{@?*~D!n{G zxX46{SYg>d#7VXAVA+7S!fc2qYGyDqp%FY`U;$E|Q^hzJrna4UjQ{|FU@<{RpC17& ztz-j06o3$emT=~kGF>-?5Gzmjfr2r^$%3vb3R4!ygtHXi01OCo!%?8qCF19t?814| z$RG+0GvEckj^p9L-UVUuXMi9$(nkq4GVKtB8)vtMzYB^+0V1W-$AFDNtx;2ldpMg041Na_H zP5>r`W)@h!oxj)!usDkdK-*Hm1*z?k|KAA};bk7Bt!z&%kJsfW66)~mZ18!VyJ_9f zInnm{-+$;6PYCE)r3i%p1U)|b{$Dx16hr>dI&CaQZYlQ%0Fn7P(bypOLKBZJL`lEw zau{5r$&Y@lDhw8Q`W_VWpSXXY{5%d%u(k&CKVWSemQO=N@HlR(aY{lu{k$ACP?k$2 zL!VDj0098IzzymGY2jVMR46DG174P3IGKCE+SQH_{NR25@O=G}F*xBN87pQ(!R5=f z!{^IvqJ9@sd9)wza<_wZQ{fR11@hz$g4!tS{s4=bSa6K_>OgnD1R|Zz07|`+6x8p) z5(-N{vsA_1uWvW)?Y@$fvokUOuwYN(4rY6^@|*tIzf1HKNnzH)2N_PgU%q=11yGW! r!&3L>&a4V7m+$uQ53B$H0YLyciL3#uz#EJJ00BV&6+&wOYVZc*qoa<` diff --git a/samples/h264SampleFrames/frame-0418.h264 b/samples/h264SampleFrames/frame-0418.h264 index 8da22de6389b62d35f49a8c20f7da6ef4fb3d2e9..65d35e6bb0239864607431deb77a221dbf91a5a8 100644 GIT binary patch literal 1240 zcmV;}1Sk6d0003AFaQ7nL7E^Myakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|iQ97n7 zkloHtKn4yolw3!-S2nBMR(K-)62|~20+64;`Nz01Suc5kLq4j!o0)tRAq)yIatTI4 zFM)}4?*ITm3;-xHhlH3-?)d^4WU_Ii0*K%MT~49nB5MA)2><~AGQt1=fFMYI$))!_ z3L)@e+<3-QEL8^t{!W|iKmZ^p1;<^00Q9vqdZNL zgM;1%66j*60xAUsl8R9n*g>Fd1YnpDhI{}J0B872%HU>|pcv*1H02jfJOIEs2rv>d zn#%j>rvCr`;do8}R*n)gnsZ ztuep=K&|eT761YTU;vGvoEUxp0D!0g0k)2ZNS&ZwoLh0_)4%{QFg|4|^b5Ef3$T*S z1wS${$mlD83IQExxFTo1I!0FiUh@5$Ih{maAe1#o55^;bPy`4TKr~iTOjb{C3<<^l z3H($606|ay8C{`J-dD4jy1Tdo0mKv(YrSop|6(hkxG;x-Dia`)zXB7UnI8Xe00ICY z0)-feK`xf34GW@)Od7a97)2C@sPhs))D~R`a{mS@3j!lPV`7-DGx9AE=SfB+yaAf<(}6REQ5$E@kpd?)z8-NK9nuC7^Cf?&18Zm|%F0knTVpMg040Rjh;3dgR1KVtehxkU5*Ucg0x#8{w5zQ9HRp_>Api5L54LM!AN zpa38NfIT1_2JiuJaVu07fX5S*)ZN~iO%$Uv%#l|Jw~g7|e_uO;{0 zLO2uqnfD+GRT-fC#H|G60ki7B-}~TIk}C$GXh*u8<)fiLy(rQYS3h8n?$~UC90}%+ zfBqi{fWU#6K1B&hgwjI`7-kTrSAqBjmH+?&K>#_4q5-SG8;k$|0YLy2LTG?$@CM`L C)%7v} literal 1045 zcmV+w1nT<$0003AFaQ7nL7LziyakiQfp}0-00;;eCNny;N)QY2(Jh{Q0Kq`fw{*kW z+VDjyK{GG_t4t*!;SNVESObaq06}$7UIG9C06YD501yHxan0C1A3%{WoC*OjVGNiM z4DkT~1`NO}+;f{67lU57xL)@R~_Kf(76W0axOR z4IzyfyLJW&9DoM{j0tU2IbUFVWYgY206+qT)tUSXSkVgw-~m_&J^)Y<73wi+sTKx8*Th)0FS0^HLbm~fpcBjb0uC$`ihu%WN?!)Ybn#{ z|KsGm9ta#mPKyX{P@R$Oe&JmjUj(8<;V@(f#0Exu0e}F2JE#UEVYrwQ7QeQO0gH?r zfn8@)y>NQJ?|?vuR16?USyspin{gZmSzu*6@(d^c+ygi^9w>n`Lt!NL<!Mz|aiV*c3b{#NbJ?(5S5gedzU)%lnPs z00;zv(O@{3iY1SGWqg+V$OaSu1OgJ#pxM#*8=!=RWPjQK0Dv8!1^{3lb4I2p#I4Ow z?m_^DH~?^w2hN3$0ljz&AOzh200BV&ZYH<}uK~1wKc9g({{aFAlM3Jg++J)`Qi(tN zU?RZcEKq6C0}2fchzcX3MgG~)iungP00aOq2hIWD-T*Yv7iaaFE)8fac`~2-g!+2J z{S1cFOv#Y=a^SW!yyj3=4u4-7;1f>@>=4vYPy~-Ao2Sz8xx`vq?EFS7L|a}=wg7_w zW$`embXSTA3f@eHgoc!}HU7^Prv>P}@<4!spoc&pr~sT_@3B)D0O@GaykuRV&`r!` z7vzumcpwUJY&OAmH|LS?00b?5gmZ6H#pxs&Y! z9KlP6MeFw^{<;X{F3xHJ8Aj50*QEhZWB?5wlG{nP0Jy%X<(Hce|LsKgNF`JzU;e0Q zg%!`xBm1@n3^)_b9{>D469It(Fno#wz#EJJ P00BV&6+&x(YVZc*b62)4 diff --git a/samples/h264SampleFrames/frame-0419.h264 b/samples/h264SampleFrames/frame-0419.h264 index 724da00b33bd4e459cc343f0b0f6ed2cc219d094..d470279bb66ec23fa864a63ba8ed6218b4b0a692 100644 GIT binary patch literal 1399 zcmV--1&I0p0003AFaQ7nL7G4syaj>3{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIFEqv06+jR0K=mCU_S$yNtg+|bzkZr01yV6fL4g=oC>Yo zHxBI5nZMuy(1%wEL82^@X!UylNaqlu8ZDiqK}OqC!z3862JI-$V}m0NbkAT^02JHu zfEdzf#ZdU0)pAMg%-O{NU;qdKfB=A?00<9&Su=qEa=;2e=bPsC z1K@P1kANMC!$(e^`|Gx0`f`=aeck^rii(+*Gd&5kLhu0(09!3@l6=>{gcPK301yFH z&fxT%|NX=p(Su0pmrcY75y653;2;>60?8=PE=Ok13V-fk0^mN{*v=CLa{a_;00aUa zqyTX}lbEmm;xHg&_Ry8yaZ@F~{pwl-9;ZoqohCdlo7&%NVE~{2A}|2J!CB(1&v~-L zk9acT4<(X&!Gg+Lxc~PMfKUzHp;a6jMZ)(#{?Y&e0FW3J-DX1pO3Hx5aliKf2Mquc zL-pM{5eOL<#k0r%ya6!J2$u9rxjCqbzVU~E0611L2y(AfdQd{vl0LY3CAH$m@x;=?`~PSq78RKOD3eU*{{Rb3$uaia`t1+^2mufVBLJk2GU!J(`@8@F z0Gk5<3^Cv|+gsPVADhH|002NN0ATG2{#P|z7bz1e`p`;YeK^y+N7V1^9~C7cs+14Q z00tu<+X}7sdX|v=NCZU21^^lWuhVP<0W@a0y-qn9U|8X(^0Ruw|Y%H(^m2}WU|H1eS;PO5aR&O4kW+<3H z05BLz<_wS*Nq-F0C_~rk;!b1)Y(T^RuiM$S*kSsw{N6<0F$_5X7dKM}$U>i+zyJ^x z6|@SB*m`tVTW;V;YA%k~@(@$mliEKY6(k1uQUpOT!Q}<$nkMX_tULe{BN-hIV1oON z5^v;WBC?q1Q4+N#9f%5U7yw%+bT#@IOLjX4;0SgA00BV&ZYGchuK<;w&*$JyKfpwR z#KSaT5={eW{jd<=br>svM7b?L?};p3<;VlgZU>kQ02YvO<7*&)E8fwR2}9&Y`yj{I zx@v(!7|;3*(1!>oEBu)C`|E${ad1|EV%>LkXZ->RR=WRX$N%5qi>`+H1*zCKLj{2E zUsKd8zqB(q+Z;{-H1NN$h*$t$3qG>h&;S2Y1viUh5P#bNc#9Cy3o?>70}h9EKmZ^I zEe7qQAvBEG00;r}0G{q}aWJ@baRPz>*TrMR`0;>^wpj^imEXJ*BN+CciE`ia7cc-o zT8R*hAZ`jv2WCy&AL+3E-+};$2e2~waN~qIr#FlPwMdZ)BO{&!)Wm?10Rku_1-jJM z3}Q_8@O2BC02lK>Lc=_*3wQej(@mko)#v;6C{YeB1>InUy=59U{}~?W>0U+N1qLDC zMG^MDz0@7cXSfJXq0Ys(`!s(X#i^Q F2IDC9WUT-I literal 1364 zcmV-a1*`f10003AFaQ7nL7M;?yaj>3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxL?*bVTf`9;>X1lNe$Q{Z7P#W+z04sn9P#PJ;z`G@sGCoQ$00amC z0Ru1VDzJeo&I)ciB3fvNZ`;N<^)P}jBy!y(-r(5 z1E6iSl7YafVK`DYfA}y({|r{V-YJ6msty+8kmd7D7#WEfp_4oY@%i`v%pQ-C$9ABF zbAgZA37I-=JggGUR?=yL^234zU5SsMi1P^q9WWO%MoJ`801kw#RzsQ2B2=~b0f;*9?#)dp zxQnf|@kFr&juiQrBZ~58jDn5K1Zxz5FEDaAvdhkv^xKH2gQ^% z;4Hlo;Her10L}}7;Y8?gA#5a!Kl`8z0DzTHmwLE+FQq4c^Z|wg3^YVR1Rai3+S9*w z@qj7-1vh=b1Qc&DbUr5UzyAN89{^xSmS{#~WcfGxGy$#Rzp%i3SP3y+01g0j27I{! z)a;+(!ZfTDf?SU?1jZfKFfKt@Z7LPXQ!7|@k~0Dx1{ z4vL@*p=h?>FM|<4Lkt2ypm^gxYy=3>8o-?**LpyY3;+ZH!kz_+m!+oCcO>uE_k$<` zfV1fIM2&!hj$39zN3Z}82pn|YkgZrRK*Z>#J^%p#7#-%8I(DOax$A>Z%O1cbf*8&g zKwMU#We~zegC;%#0~jD5sXGv^CUg@Zi9h84(lC#e08EE2yubz)18e}%O%`dWB}q~* zPzC4!2nRHX05&nT)`JHIbL1BgbF))3WncE-00aO4hXyu2Z$h}LB?Iv=A8rO4l<*Lq zd%%HP=c<13fB=Ay0LlsnoFDpyJ1~yA;TQooKmY&%K>%(hzy_}Xm7mY&;7&ilM1jP^ zGy?%33_4?)z(ax5V2%L9E=$+`{76)t<;VlWC0H&X3;+&Dcv#xmfqc(s$^v>1keziL z|6+19peSP*|3Sh8u+T(1{C9P@&(r>w7X?%Sk93Ykcl`k(b){b-*;D`i)UKm_kqUQU zZ$>;80oDCcdmZ1}2>$wP|2zcK!oI>GKmqy|d1m$h{*(YwJbuIv|HJ`25%fW-A2PCr z!*ee$XaE5KooE`{!ZAaB0JDLI?&k*+3Wrw^C?E`WTsV)ORtVWM!g?is+rhCbg|woa zv;KV#EC3J-l5uh9F9juotESig^P3Ot_#g;?djl`04md-ab9lfzREZFxGCAN)FYHb% zc%YCa)~yC3%749dMqhRxGXpTdLc+YQ4R`y(Ag1G#dj9^!3L(Y7p6djDrof~3^jER< z-odbf5!*!(_K#P$Gz&Da8`Xe@>KyD{|0kdTLSzB;fAKHvo*+m^2ZdA@N)c9sT6hAB zueCzdGK$mcum&P{GZ5l0$OuMY@kLxqMR4c-r)^T{|M&hn`#llM@L|9-Z~y=SK>#_4 WumP*U8;k$|0YLy2LTmtP@CM^h2T4)@ diff --git a/samples/h264SampleFrames/frame-0420.h264 b/samples/h264SampleFrames/frame-0420.h264 index e7719791a8096d2704e1a2ecd2c07882e1603c7d..12ef78cdff9fcebc15efdfd28abc85563bc6be30 100644 GIT binary patch literal 1244 zcmV<21S9(Z0003AFaQ7nL7HG1yakbe5D~7$StONa>PZbfA$xX{GQ(4bH(z8NdMq#Y54hSLYYP zV=Ms&Oi?O93f3*V1>FD>0AhqF^}g+!CX-qFzyK%##X&aGQ>lpg>T0|hZs6%gRX6~N z#3SZp00IC8xEKx~Bx&J6VF5M!i~)(j=E18ifh_e1;CFxq4sjra(iOGISS}Drp#qTJ z4Ve0xfd{D)UZhBaG@+lvMt}w203Zmcg#a)?XEWurfBZC10JU2Iz-YH<)0vC87zRe> zo}fMX7y!`y)q|EW0D&}(*CF?S5LyJ@P}9drHIk|o?SKYIQQ5MNZ`}X@e(V4cFm3!S z3Z1-0zyLr)bbuTH@RsqSR7Yk)aU52!H@UgA=d-P&jPxCUGM}>#x|vo6)@xQ~nDDd5Hjar;G$02qVX0 z72H9wY8((x6lJ#*|L}YO0DzDT632WnXNrZsh$1xd*ZGoy!0f%t{0{&q>cGItK+Y8fP@?ND4}zaw8H^ORs6$91 zO*V=n-~~aI;kgmcOxMe2_job@0DuA9!N8cG7Fd?gMf;B6IoJSkp1S%$+EO7U{$NM$K){vIH~&~1cn|=|19Y$t&4gpq|MAhH|Mn>P1H=hv zA_VOCoQ&W8uqQ?mPNX~b-{0o|9VgU)K-7|$yV$+|fP({wkzmo0nvtykx4)D?;v^jM z%Uaj};OppQ275!4`uE!*9F3xsLa@=`P0A=>9(F{EmBSWbySE_R>D~(k>sPu*f6nkB z$=%oA{)gcLd;y~ukx^@X=z54qnahck!9VT=!Jm~GJdf`FI4~)Mn5ucaeg`l#_4rU9$K8;k$|0YLy2LTP|% G@CM`Vsw86o literal 1059 zcmV+;1l;=o0003AFaQ7nL7N~Nyakbe2!;3%#RWJ3P5=S`fN>4qFPQ%vihbdL0RaFA zC4h+7X9NQv0D(H^LqV_D ze+ia>K!7CZR;XfUD60#TW8Pya`igI-0DwENC1g8E7{HpQ{{Sc*VUm0n0B{ArM#MBo z@Bjn@MH7GvEY;HlW-LLN+T_V#0sxL!gG2}-y9nP0;1&P@06>)+CJu<_c5!Dz7zS(# z9-j=mAoz9r!T=D!;HRJ9Xo!Q-(C;V!!EKYE(VhSRnIZnS25`VY5CMP$J^_xqOzDss zJp;Gk0~dlpfNjXw30~tMCx=|!SPAKafVfap0Sqz5gsb9?7YHT)!*UJ)1`bF9a)Rxk zSOZ=G0HiiF1a>Hp0!4=PyH^tp|Ef0|K+lTrf7MHeQ*cBO0K6b1)lKIMf-fGt{NWe? z$OvA6Oo$W2;FY$Qz_bY9NHApx8Q=h6hw=Ghbu@hPC~52$;E8j@O$Atc>Uho^bz*=3 zfuH~g9d=g$0|3ZmQ@{Wq5E)aMxWK=Y`23s#K`us+Kwx}x(1uZPLri}DumYoi0Dy(z zfF)o6B?dM(ec)i8IpM{TR0xF=t?_ke4PF2N067T&0vck#1h0o-xJ}8605}9e9xbE` zk5bnCz+eNZfMM{@7~XxT;jFX%;8TyF39^v>RzGVzzzhJ&1PIe)owI>r$29l@xCr4) zBnN8-F{KhK2^_!xKm@b^AO`@W`#Uf6Qt;9K-~fOiD?-USVIOP$W>!!B08P*U00BV& zZYIbEuK>Ou&*$JyKfpkNYHZOa(fl4u!CDo(Ba!W;@en^7!i}J|Il&75~f~n&kSL9WE*myfTGcaEcfRJ_J{%m4r4eMSZ9~Oz=cik`|`#~ zZf*eDqhJWMIt>{A^?&FjNwvMR4o-NXvcq$(!YcH@>u@HX70dncLV|$CYZIz(X+(sM z|1bo5kQfrW1@EjGs1N`|fu+*GUhs%=|MKA^CQ^z&K?Ft7V9JJ_0;m9H;@hSJNq=-b zAlY=WV9}A9k*xo>zX*ZMgPvI{TK{|Ez(@@ChA4C2jEzP{ z!Af#5mw`6SC}1A$k(MyTpTPfHNHX5L!Qcn=NjvGiPqshuI0riu|U*`iKl@BmoB?)r^M(02BxSY5>h@m+cVIA_jR{ z!wLmwDcM7R>;aRy$qd!ufsg_q8)g)ZS)K&0&`(|*p7oWZ@Xj41|EN0q(n&w5zu*-p d0003&06B@W0jt0pi~s-uK>!s(Y=CO;2IIKj&iViV diff --git a/samples/h264SampleFrames/frame-0421.h264 b/samples/h264SampleFrames/frame-0421.h264 index 4f60c9aa841c737bcfce2a5e2de4315d9c007e11..d21ef65e07315e00cf916bb02aac9d98a5317472 100644 GIT binary patch literal 1810 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 P00BV&6+&$QYVZc*6eoC- diff --git a/samples/h264SampleFrames/frame-0422.h264 b/samples/h264SampleFrames/frame-0422.h264 index 011449ce6acdf337f8a73d8f7f7dd7c5c817505b..87178e762a5734eb0d06ea42c9f91e7d418db402 100644 GIT binary patch literal 990 zcmV<410nnX0003AFaQ7nL7Jc%yakiN2szF8n=?!Ug*X5p00;qqFr+@6n;-0$G{8kD zzh(dcfKUfKGFSkRKrlC>3>CFp@fv*DAix2I>bKV903ZMm2q>Nm$^s)Auu(R4fB+x} zIpfiq!AY@|3i2<%c)(x)AQ({^p`h*<=KE;7SqCf)8C=8>(OX9|w5}1&D00d%1DOk;vuFU=b0|5F6MLAKfD$xT0HGT?! zXaePQuz|Bs9l{Pk03aFw0t3K0{8T=c)v^->1yu|H@BrX=ADRRTgqeAOE&;|3ADuLq zGAk3svAoGM6MUoG|f*65KCE`XDBq`E`fCqd42!K#M*vqge zArBL?|AYUDwr0#VcTmPNfD6V@gbKL^i8Rr>KnMgdIK~VD?+Gk8W{(xi@kRCQ} zLjC|wrdJSzpumOH)%7JmXG4{Wcsc?h2ms^s3u88JB-aQYW=$i20D(~mfCFWEs6U&^ zA6MhN2EpJ86A;8<7%b`<@VdVNgPsWjDoc{3Is=VDG+F?L4UDn?4h{=x5Dhp&ghWOu zDmQ=L03a|?qg=BBh?IF%TT~cgir@c#FiPQo!9z|Z$XKY;M1(K>%(h zs0Ob9L&x*^_!E!l1V{)G1B?=Y3lexz@?;1+y8r>(n}mfq8|D(beYrpO><^%M9ie~@ zZBe1F?cq{5S769|;0>ni0G&oBME@#1`T$Th^uSZFCzRq`r8PJATrl__!16Qkzd>Vt zpxyMYA0GL@q}P3I|K0Q)2H-dT|DaY&G4>An_kc4_jGHEnfia^aS06t11IXPDWo&SE z+yv9Yeo=u)H_{AO$xImtOvs>B2_=|CnEVj?@|?oC@jle)wHNA z&ucJBiogBHbh2B3-`(@VyuR@+h$taZ$MCjfkbv|TMZP4z*lGaagj(jG*V+&O1St8A zC2s-;3+xCHZg|7rV%fj&6PJ<*XlX6e&VK){z!vdcI`YH*{MUj2m61G7o*(a&zBFE{ z5GTO+eqE7HV9WpiqX2MZ;M32~00Iy!lnB59Kt4C*j_?7^ttM9cJOKd~YcG<%zbxQ& zQ!VPJ|NrX%rI$-OoWA44H{ccGsAUQtDb*I{+i!M%fUtl700BV&If<$PtH2wK0003& M02M-NfNJmt;{-{hKL7v# literal 979 zcmV;^11$Ui0003AFaQ7nL7QM2yakisNeP6AdPEomO?_LSC;*kg%U={Fu6f@-`d$y7vMM3h36=pZ@SVPyi5I z87V*jd>D$|E7V1gzyKJ43nmatgAu@!DPD`2`{9`31abp~28~GYAS!DleUQD=-+2H5 z0K(}Qx(7&Jnbrx!)jt9Wj#dKdPy|3Yw4RbPp1c5M0096>?qFEF1Q5nui!%TKLA(G2 zDF6UMoB#+WWG7<@ae*y1gRVV;1PN*X^_~Rs{)XU&NB~v_02qs+KsHefSnePH{4fJ3 z04Oi2t5c#P{d;}?{orAW658oBNG4pLe~a8mfB=9bzyKfu1`n1J-d{`O0JuOsgn?Lq zm{Y(Q0sz74Bfw<>7{S5o{FeX+z(7^2--DxqJqD=o?REeV02R{|Pz&&+H~+jApkP4O zEOVt%;%V6N;T+>B7Bzw5GTw?6bKt<)fLr0W1r)tI2#;w6Zx~nrD$<2KVIb``xckIB z00IJnlrV^?I0Ux1laGKV03idKD3eQ{HmM<`i&v!ZFlG=ITpu8?IaXyW7fw_B02l}% z6KT+S!%%>Sy~t@3JV1aP2|wTh$m76RLJ8m@1&N*jfN|vo6MjZUm|CUL6oBvGxaD9P zHf=n43fCRin6&Z)00Ig^Nsfhy0~p{bqOSpfnHm8H0IM5PkDWze;08gqfF|ew00BV& zZYJ0UuK+{G^ZED_kLUyl2$)#G2LKNVJSpOt5D+DB06!*n1&Bt{8j|;CUJO zj}V~({zY22`1#r!`fdHdZUcXR_7#%MS)fza07mHVEg6BR(1>NR`~JHCTg9)x?tlCL>=p#AlkS#3?Na#BZmJL`z}_F1 zL{U^y|Np-`AW=>q!}C4?OgQle00<85kL=J8Aafny0`Fp}py?p!s(ZGdX<2IHM> BpC|wT diff --git a/samples/h264SampleFrames/frame-0423.h264 b/samples/h264SampleFrames/frame-0423.h264 index 156fafc0f00d2a92cb984e6c9da88a5662187497..06f0d3ba7b2e42d2ad553f131cf18bee2afa3639 100644 GIT binary patch literal 1180 zcmV;N1Y`RE0003AFaQ7nL7KoCyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zAuF7ofD9C7sK}3Vu5nkmtniEUOPm1U3_^bc=U(FhiEnvhi+h%Q#s;GPbAX*YpmsdxC_KZv1f9_BK z7ywaLvz!^GB}H2P(qpYCpbrC08Hv%qefEIormSEdC5!@l#Iai#00;<>-~b>T27*WQ z6$;dx@DPg#F4mcQr$S0ldH@0|U*HS?98i@`r4HR=UwbkRUA2G$0|;ab?iAnLd##D8 z@H3PXO-c6wgtM5vdH@4q0HZvLY?eQd0||5~bb%EDqRB-lkZvH%l@?(qaH*Jn00aXE z^uJ#0NQty|?O(z80A(9+k*=D`Y=(k)25uLG=@QC)b8~{rI1;+(Iv;wJred2%sKmou2KnRmS1rhVWOql&=8~`u? zQ6|xFw=~cYCS*te5%;y>55jdEKg5~PV@&t}0s!L%x&I&_ORENusTrYg00uDp`YIc< ze#I1f_TOxo2a(eCdDBVnu3_~%fAajygCnSo#1e+70r+fiDgdDZ$Og*FNlJAwWR@*3(=4OT~KN)-6Zh|8EIJ0F6$T z6FDOOwn~Y8U|>T#MU^}iRiYCo{279hb5wa(dO?Q&{h$B{0e~p0Ov_TaC*pzbzyJV( zpYXx9*OOj<`~CUS>-@=3Yqz`q-&5;qMq&6M48#MD(3$EG@}RFqzJTR8K(1Ok%ZT-m z1kMZvdyp~>?^l^*FeuLnd=eAD6%4Hl>Hf>6_a}AW00;|+F+q$F7>M#?+k{#ifq#qu zVcYHj#QBPV)MSF+{;-gzez@$!z7PCh0P6sL1GGmA@DvkBQoCj!;-#xy@P2fs|KEgQ z03Z|v1epeWA};*RTJ10~2LMB`0003&0B$C*2Co23=kxja6OZT)ARt7TP)mRjJ8JuU z3Gfz}0L`NH!T4$b5v=HRo9r)-XaKAaV0jTM0As@xD;?qo{+$IVfYpg-se=t%QlG%~ z2a%A{NW1`j?y}>3-JRr_dR_m%2s#_4tO2XQ8;k$|0YLy2LTdnO@CM@)*9HUt literal 1030 zcmV+h1o`^_0003AFaQ7nL7RXYyakiQfp}0-00;;eCNn;?$`A|n(Jh~R0fK>JuIY!h zwcv_Yf`(uLR+vgd!W@oUSOag^1Q#_kcnAOl0PpqK06++($2Va3eF8+ja3}=9gfd`2 zH^c-02pND+xaTxBF9yDJv@igquy4Wohkn-IYk(XV001Bm0Of&e`lJdREG*c(=JOMr zMe!~QGQN-`_y_<204^M0BAl&HLd*m(Ndjcv48RmZKM*0LPS2rKc^2FN0DvF}4HDym zXDxzfOor|hcZ>pn03ZhFCO{Bu00aa4yrzH>cmu#tFqX)Koitn)-V;eD(EI?<6?!0` z(iqT;H(+3)hyY>61h}g#Y!7Uj-S>z95CEZdZa)H6GD5kC09pbMfD{A;ddym@MS_Qe z82A~$VIcqYuFTCrNQRjf=Y}XX@ir|?Y><$Mt-xUE((V2Po}=lD`T`Ct6pDZYVJUoM z-B)kyCj|v-zItV&(Hgz?5R2iCj1et0)-8gMKW`Mu1Ej_|IP1X{QtoNh-uM*4e8UdJ+IsLb?&qyG2=2z5Zh1cjAsfSI=ufzJU zKtvr(1U1OhqE+{j#=8ee?qg00IFCVh00fN8oS#Bq}5500IDifDi$IdCeM^ zqY}6_Ke-SDIDi4dL?1d9JO=gPEPxYq0003&0B$DW2Co23=kxja6OZT)ARt7TP)mRa z+iq9S@JaNb0}@WEf&0_|J!eDY*J0c@8UxrKV5miq3twUs)sL7z_sTNTkZ~mQ6+}9i zuJ6G12a%Mp<{ORR0ZXgXqyO^<8OdmTfn~4@0k+E*6h!y}CXG#c*MgsuQ`UR@ri6zg z$S*XY>qE~0Xg6xKtPfT^AeEo!uEl3Ael@i z2IH_rBe{S;rXRiD5b6zs@}jD*x~jn5{9+0Hpe)BL`0fdIJU|O8V*mDtSF8Y`>33PC zJOA5JEi2!?zfZUP13|aVQFp91^<00BV&If=LdtH2wK0003&02M-R0BZ0C<717z AP5=M^ diff --git a/samples/h264SampleFrames/frame-0424.h264 b/samples/h264SampleFrames/frame-0424.h264 index 6f5bbae38325792ca7810bdff97ac31f8e02d7b5..72e5f0bcc812a885d49553d69079d91983ebbcd8 100644 GIT binary patch literal 1561 zcmV+!2Ilzy0003AFaQ7nL7Lziyaj^93oz&aA$K(FB2tefmHiA5-^9QR8megidi1`c zEUk<-06cKTw%sfLzrZ@W+S-42(+mVX*K~gT3bJ$3AAWE!Q8%Bjzu!{LBs%d8ykdvE$01yFiW%f-)RNP1Y8@&h& zAzIqk3dn^KAszpv@U$ffiw%JYBftTN*upHbb%H#ae()MKOaj|unmS1%;26jRQjlT^ zl!XSES{{ZnBGM#)swq1pZh3$JAbtP>4?qARY5)QONuD48z&!hhQE`C)!ph(XQ@{zl zM=(@R9^(rksNey5zyO7UGYR35p8L}HsHvG_I{0epUIqZ*5X)J~J>BpAh!&(M00;%E zZvxhP{`QC)h6R`PE~x|x70}&+4}d@jX#n#KI)%&ZO{1^<#sCGtF6!Lm4}&`=aT)*t z0SCGO9B*VpRsY;00s}9<2eL?#qAI`q1l0_Q0*Io(5m*g-5))2tPe;E5cO9Li&@90% z7mofgoy>9tW}ucaeGXqi^M$~KFycalzyJgSYB>O8(CeGmz##l53_zMk8HBS`2)U*w z8;zcW7RR>O9tFGt)&@oNbzKYtKp8_Z4H@d?(Fgr-2ny=}Vs4uHrNH1omTmw4z?4vN z06HL{6ZZY?d?Y6=f3L0J1|U5Wh=vpLfJ6D?(Q7Z5OU+`p!EsMlgW#tC4pcol{UoaK zGa~MV2}m*gcnsK8(L1~V!cZVhgdED8=!IYg>i`o+*?ge95QKyQKsFD?d5~Tu!cRV6 zS0&EWZoB}V(t)s5)aF0yL6LA$7|k4kzn=EU4VRb{*Neipy<=5Z{{PdwpZ=zrMq3v} z=ebN-icSND-jx&lbs)9~w3$S5_y5^dBb+$03`vvZA%F-}t*c8;crXDK+ICwf<49%k zK#c{#Kq(9d!kz900CXi{kX343OTXV}fWU}uaMf7%QRV-%NC3bVZ2(}N*)!XJe|Sou zKTc>f(gZ2;Z}nqLK1FW`0w`f6 zBl7`aA}-eY*8Bhg0M|e;2&#eXCt8Gkkek-#s23NP zNDv{z{|D*=!D^4>mV!`uVUS-e02qu;h;u1M^(`U#kP#6CH~@G8zfr(HD~1HegOE36 z@W5ci6nhx~1m+#wEo-7f>o%Er_vQcs0lc6b5webl$FpMcGNbU^zyLrb0nfbChUkQ* zOP9YtfFC$9RL)7}r1k`U;K18rF`Zg$rpu-O_W}fjdo6*I{{4o(|I?niIluj>z+!X9 z&zt?Nx&ubex4&I~%jPgdGlD4o0kHwRZ*fXd;;-N^E@tpMQZCwpaQ45!fCM_TJqs`1 z05XS97t~}5P3SLw0K^h6v=hYfgg@7CUQ}=h`l6ooN30`0I7UA)wSD6c#Q;zP8?b00BV&ZYH<} zuK-vF^ZED_kMKN!+#(d<1^@vpL_!0*JC2)x2i<*xL5n&Ay zTG*mDi^6D9pR(YdZ}bOnJd~p(BbfFuAm2MM8dm)+mu}yCq~+o-u!GWZI{WelZp*?b zV4r#82m7!5#a-M7wO~y=E0^SwJ}h8b1B)cak?7O_K`KS59(KfRNgnsG2qxI1qu(pd zT21-WB7$Kax$UE()^A*M!upmdP*cp)iZfwyG^Zi4{0QE- z4fK*%GaKJ8-nfhbo1R2(5tWJ&ddEs0r3!QD5_`4`IOqTX0YLyciLL>wz#EJJ00BV& L6+&x(YVZc*Im^0C literal 1400 zcmV-;1&8_o0003AFaQ7nL7Si&yaj@YA%zIw1J#eQBbAJRArGJ`yvjhn)(I!3`_=Ho zc-B9sPAc%8iIMd$;w&masKLMhg8d$H8S2-j;~$E0rY2xcGxw1VMeJ&Mp1mR15Yc@& zeUet3|Nkr+!sYuz8ho)n{tZ#=0j%$>E?yf`)5ekHq zI#ilY1w?B7A?}N{l}Rg~XeI}}gL7k1vG>{l2BE!Xg;Hcc7X>?OypA4^E&scQ7|Uv2 zFc4sl)@;aF5ca1j>Ek|L{qN`m5U-n?m~SzjrTFm?Bf(18Sy!?EEX)A!U=9#3F?=FXJznzyB{@Vf*?Q8Iyr5lKTF@;BC|-|} z^+)ali~to0OMozaMGWSn&7w+M@IM$cj!!v9q?ZaIraU=((?$kjMr_E>19D7ZCb&`Mz2Z;yfrrF*IURVi#MlWv zM`<1i#2EYlbq6S#gtZ?2seBs*ia0?ruy zs{!0ulRPi`hX9Vs3>qYQ(={WeTUdt;pym)-TV0PU&j0{G0jK~d2Zs>Fw!{yQ!(&eW z2)NW_rVG|R8~x!Q2l$jL$a`>l+#nAt01N^dgb0YC zMC<=*q$PfAXJ7x=mR~^ZGJ+sR2nR-dB|rw-%O0PRquBV{J^_nk*6zqrHUX zKt~uzxq6D`$88F~HYs3S5rP)0)dH@0di*x`sGo{xC3LUPrnV~%v!cJI|{@?&0Ljn~S zEtxD7KLQhwDcl&?hJgs*d=?{Y%`e_C01ylSWex-x8Sm;fBRXmh$Dj$i0003&0B$De z2Co2E2lM&(6OZsbf!rb#pf~`fVU{8>fz9sYHb4i?-iuB4#+PPz8P}M|W&4A>1E?NE zV?c$CBquk7kfj%8k*WVccLT{vGAm*R!VTG~fYP?vEs}Tt`nkU!J>9*sZ*5~NCz=&{CEE7RVLh{^or zb6k^sppprWT==OheWmll`j#kAQ{w5t;g)F6`AftRc7VZKu(k-Ma;Qd#_4x&f=e8;k$|0YLy2LT-R+ G@CM_uFlxO3 diff --git a/samples/h264SampleFrames/frame-0425.h264 b/samples/h264SampleFrames/frame-0425.h264 index 3a3cdc9e664bd7e8d209d05ecb1a1106ab5b4a06..b7e257870ba5b6590aacaa5f0b54a16141206349 100644 GIT binary patch delta 1133 zcmV-z1d{uJ2>c0u000012`~Tv0YRGp8oUKJL1Nd`^htk*aUhIWf<3d_02}}W0l-k) z4Q;_dlD)RKxd!mC02IIgKq7BI06+{ZXu<*#w_Cx6VWy5QOotnI;O{7<@IwvG!Acpx z2@@9_Nkr*H@w46UufWFnXJ^ zf7^ZF00;!o3`hlO%8S*(`cqMJg}xjB0RhN}0n3{`|5y+Ze_6bUly;u}&;kqH{ z@CY*wgn8>rvM3b#@q|HMv=n0&FX}bE0D~h&+`r}WwZlBTHUJo`QNR)(>)AC734?Ec zumHzOS_&gLcEb~*Phlqk?)C)oOJ4{6U;)wqegtv-Dv(IZ;tG2|8oH?XKlj1_6G8wW zg9ofoNkQ%mI07Aj0003&0B$D02Co2OC-eFE6OZsXf%GC6fB|BiRT&*oumJH_-G}}5 z!I)D1tBr#{+<+07k&hye`Uqr{VX6>+1_b-^+I%R8g0%i%?)|;*-1&T@1Bf1a5fbr1 z>=ytdxPri#@PriDH{>4B=D+3eIf3U8I7qOBLspx;zi_}n1*dE1(HTM8PEE|a;D7Np zG*X@Y-V%O+QjS;F@Ft!a?12Emcwj}q3ATX!zGDw&0WzSm=r@HbP0PRcAsd!mMvXr7 zEAjsB`Y3%wn`uJ5ZS%uC4qzZcA%L(9tb>pqT3!vt5o?Hy4H7i&eDoS1nF2DoxByAM zA!T)Jp};lVgg6v5;%&XS^?U$LgAB6cF7v^SfB*miK>#_4u#;H>p$2RKYVZc*z7yhk delta 879 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 P_;z}IQ{dmB0R6uJ3P!td literal 1547 zcmV+m2K4y=0003AFaQ7nL7U(jyag{ogCxC7mf$b}zzrc70H|3*tfQ#2%5nlY1L^P> z(86Z+8?#UI(lLJlfQBwoX&R^N0&oU`s}3pF^WXQNSfY`0hX?^Xog8Fn3Mp-cCG03a3>0tKd}R~(ao2}b|>L4^;%0TA4RBi>K2#u7_9FaQt)0096n zN*9)mfN;s!8Id3T0AYZ`4G|DQ2V>OswB!#`_+TD_=tvpjN#j5R0FIAP5QmY-ychFe z06-IQpj!@hf|t+sjKCj2NPASmDz3qXI8@ReShEjao4?O#fw$ZUDEU}8ILwS{t7jO> zP7wo&qO$Ajf5E4rWGo#$yTKQ+@2UhgxXGhQ$$kt(gHd5|0a1qNAB@8SuXUiEq9aOu zbIBLs8d;J+m3;6SLK3K?_=Xtkkf=BUXebH9t3%hbTR$v}vB1_CBv7-8*R3k2@Hqj1 z=I25kkNw}EBBDh&5}elHp8o+OV!JN;$#4H`4P{Saij4Pn7})4T%E45(Xa2bJq2(hV z|J6dwW5B8|-!+~90DxFSf`>He%AI=}%Wf78b|4x7ydMm=8>I@4_ zE0BY?5JTSv3R*N`s>Q@(Lu*i|SW^)G`^KuP-v9pr{^4eJ>sr^Z|Jeq` z$Wk4;^u7i#pqwrsE;0b-!K$l=<{zb$;QRv>$yH%67;us$9QTg0f&h4|B#})JM58BQ2IIEqS$h!9Pn11xLz{M-S{c=W zoGo=d>N3bVacLdZtn9egum4@3j53{3*$ZpS{q`AwyTdv)5+D2bLA=6NQf+@s{{sL` z&;S4dK>%(h_y(^4Y)A9?_!E!tIDzC~OM*t!&;T&5O8&H@9k~pEvgEJ~3N*?3_rLnk z5rNTB159a2UXnkjFaK@^@H~hp$x06#N757qP6dIX?gQ}bxWFF|U!b%3nfr^!%xs5C z;BN!Y?Su%}Go^vhhCz!9m`CvfnK`V%m}7rypb)+4FhiaC-ni6%dinrR6qv{W00BV& zIf=djtH6XO*c?FeAV84TR!QIy{)sP=s&R<-q)a!Lz)XRx6c3NWA)>Le@P#d?a3CL# z|NsC0|Ns05X>kRBO78Cahe1!H3s+{n>oBDAcaqh_6NBdI0L;mU#6D3V4UEMc8!u-7 xANZ1YUNdv%qas9)Qc6?6=Y@0m{QiGGpU>y>`S=3SfB*miK>!s(Z-8p>2IC_C%zFR; diff --git a/samples/h264SampleFrames/frame-0427.h264 b/samples/h264SampleFrames/frame-0427.h264 index 0f72c2134226915a9890f64612f6de8c2c215e10..b539bf48b6d7330f5be0c5a9e2371e9f775c8d18 100644 GIT binary patch literal 2419 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 diff --git a/samples/h264SampleFrames/frame-0428.h264 b/samples/h264SampleFrames/frame-0428.h264 index 709851ec2525237b89134aabd93bac62ed46f595..c62e3e658eefd8e18229f55d1b429899d6a17879 100644 GIT binary patch literal 1149 zcmV-@1cLhj0003AFaQ7nL7G4syagX9Y3v#p?pxS2JI8>46^9*g{Qw*rkO71$H*QJg zT~T2u0vH*`SqD*K(D}`P0DyR-Vr|{D_i$)y;C#>k2nc`)SD~v9UKr0jb15A)q{1ng zS!~;mrZN?xC;kQ>n3(~SjHdE|6%Xu4!TaG;CH4e>0DuYD5HRtabnt%X65G^A>JnBvt00#yEXMfy>9Kb|m_LQ`r-}mffntNq|1ayKeJ z_do^#O3X0;n!&+K|75bTzyP2OC`>ZR`ukiQwUL2hREO{q`<03VkipRe`xGfbqaXkq z;CK2C2ncr$<-`!I|1c0uofLrT0PF@VV=+jZ25?z$?4;zxHnacmeh35gz$mCcOwh6r zB;lx-EqID@Rvl&pJ8Sha9>rmVV)l7}1oZ}IszGa%w$O^c19bsG?7|qsYOW~Z2bvfc zBIv*XARDq>U7T}@aOfBh-M9}K;oCA)S%jV7reS^nK!Wn_RNPl4SlO5U55OCn{A!J?t89iw3ReyuW%HFCk(b3dkP}gA2g~g^Zs#Z1KsD z_&*7Au&f1!y5J#k9KeAgp`i6Z_@2eE9PCk;7-)(0>`(zDfKfG{g*-!Cd#^0R) zR!G#LRh7{P>+nAeGL5eH{{P?1fS}iJa__!+`kT-2fQZ0{WVs0~kB;Q`kZ`60BPAMR zQeOb9VFER0NAIIcE-)1Scq@g6+yp0C=?ToT?c|*=002M~fQ|%lVUm8i|8VfwKk!g%2U(jVVZy1M0009525|oTOaKTd*GKeV<5zy5 z!viqj2zCGf0YLz6CXfcN0CtD-@sI!j0YLyciKGFmz=$W<96&&rL4sH%*c+yi>3`Q3 z%7w%U3)lx6O;2B2;$b)wPzVq-fus*+2|*Uj$eREJd{~I%05fmzpMhI%iclY(3`yiH zfot`B|NZToh;_hl@NX+q@MjU}gAd^uhiQ^^qcb2T4e*6DIj47b_sjM4C%`yvDKcQn zI8EV{CPeoCbK?_tM#$!mIweGqw#Hx+bV9(G60i_0=UbZyr{uh_0*&r~#lDw=+F?ql zadyJgnab?Pom>DMM>z&nt$vJ&zyGEA*9b(60?9^8QIw7!b<@Cw0CtC?sj%TE4Hz9IyvW8v zpsE!5IMYk|01J+A1imx=M%)TV(BUVHASsPlV2tKwCeV(Up~E08O$l3Km-BB)mZE~LXFcU0AdXO0)qr{h*GFUCyEPO;K~eG0@=wfkNn)O(JgNn zz&YTOrN?NAvq!3hi-1or=m8W!$14geqe>M^eS& zge_)S{%>~4!(xf~jqf0w1|)?V1!^FMZ!5H5OTr3Khk}E9Syw_7y3T$j@Jb{;69zzx zKxAjYU;)(t?>L-D76nAAW?`dDI4Z2FW~K@4``{piL>wWbL=a$ER;(RQ1m}{+KY!c| zp|Fz#Hb6v8HBl$8{lEY+gA_|%0U?Z@))tDuQ~$USpyV)MO_?$|glx>P_l97^g!cy) zXzL`>8fV}D2m^&ef?|Bghs~UsgY(hjh5+EK7B6W~%Eb=k01Iw204M>Gc-t6$(jXk;WhI0076PflZZYk@ZV%SznMbKm!o5A(CRSPs~a}^ZP&m{{Vm}6jvrM z`z zC)gZ7K$t;?WeI^BS)jERPM8-Pi3`{PM!&D;fBp_86M;4ckUfeBa`*&K*1nkZ1U+32 zFaXH){crOGRQM^N{(B?lI)>O4-|74Q-R*>L4wc7;yf%Ko#c(kGOy}Ckd&sjBrtsA? z%3rUcJ^@^M?v&+xd%*k9(zmsLe;Ivu{rNuJ9_$o}AhyOQ0W`nKSfa#(rwDj-8q6Y* zRM6@1d0-klasw6jH-%89@lYtkB3U-#9hm$8ED)<>m2GdMGyncn_>oOQSkru*MXV82 zPVoO7_!OvUL&p(71o$F~q~f9`TF?Fu2`wgO+Mn)t6S$AY?7%%=sOe5P5Ivz8DpZpz m07KP79i$U)e0R{c_4UFBiG{-eM^FF&0YLy2LTG?$@CM^ygrC&_ diff --git a/samples/h264SampleFrames/frame-0429.h264 b/samples/h264SampleFrames/frame-0429.h264 index 79865c5082fb2e2a3d832121c4c34369c328bb03..ea02df24deda618daea5b5699faa169110c30cf2 100644 GIT binary patch literal 1689 zcmV;K24?vH0003AFaQ7nL7HG1yagWxVQxML0GsRrjARY~m~iiY8B+Ks=mZ^#Vt|+t zj{~`Hgge0F&AMbBgTOigkT5CuN0J8v$Q()F02TyV$M9Fjn{>!M27qCPrOCQ8*WV7n z^k7rPbySl4A=OgOpvMLWHwBp#cwaXjtr>uDwg3o_VrW3yd8w3;_;cNQ!%P4N03h{T z6)|2aH){d4fB=BxmcRi<#OHV{{JWl$^Aanww`Z`FEq38#kAXJsD z3YP&T!ngb%@rOYRB|{f|ZF$uEGN5UEsoVVD-{x+^g}?y>JIWBEB;Wf6nkG%J25cDc z0G_cr)I1sqw^xh+0RXT75G()z1ds!XoB{w8NF3S5Nbt7sMiv^EZ~>TJL$O=8`}MqP zf5l5y`{nKYzA7qaSi)m24j@oq4{Ntc@w+?H3UW9A2mqpPhoIN}?I7G>(mbWpd(S_h za_F4kAP8H5WRz!>e_CeII{==0wh4@-CUcVp3;fdR(_?)KO(f?pkc z)49@zh1QAL?5Tz+dLKLL`|M&nn5EMxR z1Q`=&%7P^f*@ytf%i@6=3xa@Z7!QR4&a_Sd1Hx1*3XAqlCjV%Gf^zE*B;_rtzxIg$ zzGJ?G*JWH&KB$gK6`$ALWXmkkjN<;s=Ay(rG zXx8?jMHy`_5C9?p2O+XUhfdRoX;=N=00;xT0s&P>DRioP7hZec-~b2&r~^Y72uz)$ zN|zj$5CDpYAOeb4!Dlx=+7IAxTB7-H=b(~9CGjzUS_Cw*L>_PeWW?!?Zsv0p&pj_v z1j&d907wOTn;=d{55k$*KyP+17STN5`4W%e^{8kpv>$Lw9SRk3?gTUkk;5QDyc-Ue z)Yr%G%n;Dj00-PZivJ(b1~e;yJ7e{axL_kd0t2v0_5cU?A?VYf)-(uv%k^8)C zXn!I2+oQ;4@sD`^fQ8Sl1M~)k6jKBRNCy8BR*u{l8HU>ap9BI#g1im?3`z_0aSNIM zi5Y+bAOu4Iz@S8tH=-4S34~JuAT9t17^R6;FqI7)Ew2qh>ueUpjED?3)EUksuB zVc`a@Vk5ZmLg<0R&4Lj&`VV{*01(arcn|Kvwsflo_BK=iDY}?^gmd$F00IH0JOD|v zg-%H8E8ju$s2NR22r9T)oZpX%lm_@yz#|4Yi8!Jn_TTyY`UHanydy->FIc$>1TaDT z#6~~=72p5_15vO5lM8$X(jIgFb?vdgQ>o5ZiGU1e zQVe?e0~h+y4LJ*(&Qd%%d_Yt1q%Z*dp@hHYJ+}|QedHbNah`*k*s4K_{W1%{^4}e! zXo~R2r~rLXHEb7H00Y1f%(hmzmMOHC?THk`39^KZ?2blslBhhl`~_tXZyR)pP9#7uOcmTYiC$*#~A~N~^E;dSGOFO~g`0>9G&*00IHSDpanRUm53c7_oAwxK)3=^-YN^ zRsr4)`(3kqV=0f4!I-#BNH)CNHy#`b+(D$acEbTx|5$E!?AZu{DC+DHvpSnb5fLkA j{uZ`e2lV*QpVhzFB47PM`~%eh00BV&6+&r%YVZc*tQ7gf literal 1211 zcmV;s1VsA)0003AFaQ7nL7G4syajI%5{?1h09U=Lms0_LGT=ZVxH|N!Vr5kHJm^YI zU^klQC;c81&2x7E!}!pk03bjN_W>fgK$@MyuEVK}Y~T?@q=3l&yg7D%^2heo2h~ z@WpG*;+QY0py6&g4qr6UftZn+88cvI&(FX9U~l85dONp>zqlCkjRlpbQ@X(|RDRNF zg1W8-RN0>+;>43R{GBFaE0CW+q$zs>w1~BWp+%+_&;x4w=BLERoXfw+n0&5n$ zYy$voh{M~Y(b6M8#bbz^K*4UZ!884!Fn(7cg(B&tjj$4WkG^8ZU%%Ne01E?62Jt)) z^M8;4U<^9|1c7`C3JQ?<9_9j~KlY8wq!^c)Nl&~A5C94&bcn#!%QFz1VC^_R00vDO z009M8ZlnMK2Y>(&akv1aJ#_y!`rbr>!X5w!00ID@3>{bNlBDh+9ds>~${xT|fTn}U z6oaNi2dD}I@cV!;6c}w2w!ser3i~oJU;u|j3NaokJGv<4T!4qz&N=C_#OL|Ep{^MK z0DvGsE@BZ@$dwr&^}F|sdLh67K*Or{00|MC$f@h|5fhPYJFSxV00IDDhDs*~zfL91 zXr7sjTk)iKShC(9`-5|VU*gxE^Z8TH1OUS&xDW$kTu|pj9frU@@Bk2isA^A-&9DB# z;IqN|+ijV%4PDef0096ns}92CL;hal0hpU6>3{$r9smLYpaJ38V)IA%0uBm*6P=5w z`!HN8s}#?m1VBJg>UA5vLJ*UU9Xo>nSO^4U0|^5&wKrUTRYT!@08P*U00BV&ZYGch zuK;*30003&06B@I0jt1@C&ch4AJ6bIf#g_2fK9H^&GxOiW5{0zO^t7tgIMtkI0dpT z@EhS66Hf^H6cT_L2SqnOFl8@)0NLzL)ql?10HM}Y>2$aI{8(FBA}2rJ{(w3Cfey69 z4tCFly`@e6|NpMpK-N06^-MM(TW{3U*(U#6`cph*>gwPfWC{-_ahZ4m_`a9k|Gzw# zg16l2&;R+r&`aX^3Y!l9+2C$HJa<5AE?NJhFPiUtcZolBDW6Y3IH zN%hYHX@8pWMwVdC50V`1=bRcgaog@40C|!Z)9-Z{BpRk!cPrR24cBk){JaOYB6}G= zw7&%QpP>Ecs`8yjt7lh$1lvwX?6@<((VKwx>~tv6lnLalwjf?zQ^S(SPwxU2kKcU= z6&KuICBYw)leqtX4~R*LVMVq{rBq`Pbib{`pjn42Y>5&d?01XD#9_zyptZ(0}_VzhAr0 Z_DG2Te1rH0ssI21K>!s(X#i^Q2IHg(Frfed diff --git a/samples/h264SampleFrames/frame-0430.h264 b/samples/h264SampleFrames/frame-0430.h264 index c78437c68bcae442e856822e28a991a082b5a122..556274878af837ca0b74259524d7dc25bf8d63ba 100644 GIT binary patch literal 1478 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 literal 1468 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 diff --git a/samples/h264SampleFrames/frame-0433.h264 b/samples/h264SampleFrames/frame-0433.h264 index 3ebb4a7f878f92288e7159f362a4bf09299ebc9e..ac440139c10140aeec72b15d505cb4061bec84d8 100644 GIT binary patch literal 1278 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 literal 1345 zcmV-H1-|+K0003AFaQ7nL7Lziyaj>$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIxr{s|A^?akBraluGO@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAj1@BwS4o4E>(9PXMhX< zR-ip~HppG$Lq_-h@TfW9c!@}kj4a%pX%ZPYU_i|VgpbP6Vqh|VL16!-{6;tw#z1>d zMv(HN1H`}pUQCgN_k*CPNC8>ll+8v<(K*eE1OmN|EGRY(T zpfG+{D1{>Nrj4%-H#1Eq*o(_IvNfD<2A&J6J3H_$PVF`UAf7A!AUfovk00aO42puOH)yb@YZuaUJbB_QpK&VP5NSY)@@BqQ5 zK|zX{*97He;?5O&puaDi4WTr^q97a$@DM?ndKH8__q>5`{{wcxhHn5twrG;s@tknj zSO6dZ2mydG0kz!3{BS~<)19F3J_^&a6j$9EU0`>LQ6)q7fCY?zog+@FXcFk0t@hj& zYEpxfWr1v;I%j|uKmZ^F7#BDaw#JTkI1R~KFwnz*0DvbW7=Q;rGJ-Dm(-9MqY$J8D zUjP6=1Tj*nz>+lLoYslyn8m*u{_i&16dfdG9}^yzoE_GFy=VHYLRlbTQa$ z1MYwU2nvRz==|FI>!R;}gZH*=jrx^c)IR_L05GZ!!sJ8#UjqS{n$F zknFK@-{1&1DgaJ)E~D(haH_0RK7a{<0YmB3ZuJO4PBe7x3;{8QY6l4eGqpEdepN%^ zeE?0+0003&0B$C@2Co2kFaQ7nK>#_4t^upSI|uXm_!E!p3m|DQkcd-&81&e(zoi}} zKr1=|q2Q96@1PG6bX}^4H`kCqe|oR^paoX{><|C{(01Ta1Bm`HzLa-5LkzbpxQJe>JtILq?{Qo1RiU^k$9Gy?o&o;Zj1B<5I2b(5;KNR-qY@k-*5OJ={B5u|9|X7 zX~&E)Uq8SGV{fbf-#P+_0|X?sur0Qh1ni^Z1Fx|LmvGTwr-^rYjnRmq`ODyvrSyjG z{p}yM?2ByyE&ngNsbclGwLo|`5L-mTG3*Y8^9d+^M?DsSqdgKa-_-ahq@D-DW3b8? znXq9SyMPCmwplOF@AA=ZT;gz}_Tb4;B$MwCBGFy5AMvms;3=R000BV&6+&x(YVZc* D(%M@n diff --git a/samples/h264SampleFrames/frame-0435.h264 b/samples/h264SampleFrames/frame-0435.h264 index a10c050a8c8eaa1fb83844f48cc4fc601cc3b843..6196ee16f05c4d1918094c0c8dcd1f0cd1def4f2 100644 GIT binary patch literal 1315 zcmV+;1>E`o0003AFaQ7nL7N~NyagvHKn!>v%{|+2XuMAeaQ$o0xMJgl2vmYmIG-91 zkdNGa{Cu3GEH}JJBNgBQJzIKHbKn372Y^scf*p8hGPiZ?lPF6MKmhXq0RZTpfB=AK zBqV(SS*aHAFh>bok<%o+`5_{H(@Wrn8=ZobGx#Px7FlYYIJ60kSYYXlC5R!;W7lA7 z02l)tAxJ%MyN61s)_4E{fC?!#(o?92_3CQ9!I$a|lx0JJ3YbU#_qHGise^#$g$+6= zE+Q}c%mIlQ4r~~**b>uFmIr_a4sjrbQWdSqXe_X39DLbN~VSFaSWoxACwja`77g0Raut0B{4sTgHh|9hnKr$1@aV zxF@W?&`=AYVgpdmfB?Aa4+K!CNnTxgkGz!btoW9 z_W!sc!Eas%!jS7t*PjXAkc=`oqY&X$+t>8gg!}uPZGP?xI z0Jnbv(34le|BL_*m;ulPc&?dPG<|_Z-p|IarM?g1r~luS012cp0frnFp;M)RLk<9k zU;qFCK>%(h$Of+fcrX9}0YLyciLwE!z!6FO{(c1L50P&*!<|DiQx9AVC>B0>9fFB&YuM8Q;P9cX%<` z-}`^>|Mx?nD1pR+2f)#=A=Lcu4jO?82po<{Br?JylbBGa`nP~cnq+elyDde$gB|VH zpux%3Mk0~Z>k<*lFW_lmF%eE2Ya&>${^0>Oc%c9|KgwkY60ngp(8sW20HrJ`2ZFH zvR-KmY9ICj@_&*NtM%3as{3U2e*b+KfB}FhM-}3dKspNl?0<24n|n8CKja9oj0Gx0 ZQTJ~EXBZX0s{jB2K>!s(Y=CO;2IDITFNXjC literal 1039 zcmV+q1n~O+0003AFaQ7nL7M;?yakV8LnWij`2kM?7_J1K$Nypkf&c*kP;ktxkVruR zxdHy4uK`#92mk>92q9pJ8nA@^iXeXn?f@1sl<_c`4Kqo(;2@-kaZQ~%sRN!eBejRY z02#pm$N(TtvCv2&{fF?GXbJ=YCqlJD6IsPrT$>)*jOYB|`kVp)?7)?f{UmDwYMcB3 zk!lQ+;Lrg87X1q_(IdbB5Dgsk004k-#YPw-F=7nH*G5YK5Cn3>8X)p2u#ND30)PM@ z2oj^D!O%8w zzyttb0R+I~uG>0f29H4P_yEP>Aiy@HYy>ZHkQ2kIY^(&n_jwEZ0tOcd3V0Gyz^=oA3b03s9y#(<8_B><6Ot&Ww%qkrn(Mrbp`sqgx!KHtCq zlmq}SkWs)gkMUNcha{+6BftTW0|vM$+bUDnumAapz)b>-qRdi$2|xfq5KWyZ6&l*X zpCRBc0e8$w<^s@vtDzYtPY1l1UzzAsqroOa@B$1lM{c63uf0&Q8+%(hzy_}X zcrX9}0YLyciLe2yz!6FO{(c1L5IFyll2{!xs{Y z_%J5V6d(mvY5vggQV3b8;YeW)WfVtH0Wj8#`@!M>EDKBgf<|})Rec-BzyrWGOX(y%`Tyt-N%}%nAAGD2t(M99 zpa1+2Kmf%8sgOp*sQ|;D``!JkZjHUS2l@~Z*hf@WQbdteoHMp}zqs%!zyJUNK>!s( JYyfKT2IJj;$RPj# diff --git a/samples/h264SampleFrames/frame-0436.h264 b/samples/h264SampleFrames/frame-0436.h264 index 0d9c8726fd857fd0ee295e53813f2f827f806b85..c20da69046e27015c7d98dbd22fee9aea1c1bb22 100644 GIT binary patch literal 1489 zcmV;?1upsk0003AFaQ7nL7PAtyajJzPF~Ln=KeOb7-9n003ZM`2y>eJJP%xWeR0kG zz`y_y2mwtUEdVp`>pMVD04fCrm4YRKD_1%lj-f06+5jK`F%Q6u_}CH77m6C1cuG?c z<<;&O7yt+YBA|fK74+(n;E)sl{9ZsQviLv}1VaG?5ekgF0FXe*u*WmITKSzJgWv+% zY>4$HE_eV40o{-s1sYn<85@J~h6GUV{$MX)LK<6EL=hSO4*&pQCv|GZ zr!xhJzyIyx0qSr7!GO=V-HKv8@|06!VH0t^ByneyerL^l$Jy?`Aer_{6`au!l? zu!pC8@{U)E3`Cx`mz(nU{|JUN$d$}a)@@OYe%t|_HqCP0fQN|cwg2q zgY2Z_25~#r=d_022a(*^IXW2BM`zfA0uK93c)o zQ74ZuP_O_9B8DHBfDQ^Vm`>70!cH;&z3sNl+aFb5AQU(T2pv#CTa69PW_k?=fC6T0 zZlzmQ*U{Cl^Ft4r^hzkPzz1o70Dvr>0e}Jn_(R(A?{)*rxDXs4Ll*)i9q0_G0v}VP zo%G;T>ChqZ@4yg%f>tCQWb&frV;rk9ynq7);sBB$t?2T=W3h2C5`vJS*|LN+vj<*) zM@Z!mc$)wL0L^p&-~@!VjS_-ASYuU|2LkZj0I^@ZM$Ma`XdnVXc}keT5D*o^-&^M( zh&W`F^aY}qpz#4i5eXrq(FOf!+4Rb0L;zqCHbdU;7?5n4!U(u4m?sfIUQWOAbM1Nn zAX+v!(bX=q+VAb)0LJzOD%soEo`Uu)CJa3iAR!e>!v=DI2LJB^fR6wzx`1#YSzEtngBPzI=+Fxfbtl55+?@YU;rR+00Ighpa39n0m%1&KmY^)HrN0lK%>Z) z5Hb&x0-HcE76_t)fjW*1c7Y42YwCJ;h5&#;a25~%_5kUJgJew~zyJTgn0!C44hZ=X z2#kU-@bodk6!72yVV}4#0YYE;bT%O-Fkjy~Yy8CUO&mCJzX69VG!;rrjTwMG&~Aq~ zF8QMx0R$GcXe61EWWk5-fDKm=1{z`9sC0&i2h!uP3>yxlLIwbU1PBkDJHaCR`fItA z2cQT93^>6~QA5uZYaCL+hd8zV+(cvrBye`iNr_5+XW;BS?%%|AQ~#U*pwhSk1-VJt z7X0fJ1DShJ)<)P(N8+y7bO z*s`Jx%-#?83T_wxTO=I~eufhLj^E%2b^rhYK>%(h&<3vncrX9}0YLyciL?Q$z!S;* z{(nCLY5jpD4fsSY01KGWFZ)ktzyifCSHt|EYp++Rfgh}tV8T$0YXKL#g>n0U!`g&c zh#F~imUdTf`U<#EfIUgd!@?UU5zqi5002Nuzz!E62RDJ~#exv;ezd@n2GE2JBLu*5z5?*eJze#j6D zK_CF70ew(-7avLs*R#q5<*wfy{{(A#v>O=TH_r>|r3i(JI)=${xGj-4iijykV0o+} zOO%&5aps+dV}szZCPsI*q21fSodReaNKiBbZnsN$1n2&L1&p(LicatCJP~AXFfIx} zlI=yp!^zRW(_NvHdS+j+=mLhMQB3iU00ApON{8?ZDyV$;0LlY>>7b=g!2jYP0-q~< rw;Thd^C%zcmIPIu4Pp$Ff9{{J{~!EhF)zyi00BV&6+&$QYVZc*i$8sj literal 1398 zcmV-+1&R6q0003AFaQ7nL7N~NyakDU0RSKcAh3K;!GUZz@BsiIz}9xT>#)hnI>*2O z;6MR@$s)|j#0v2NLVhn800;q40CPzIYe4fN(nO#Y#*5+Z00IHWG+4p8nZR4ZSrShG z0ffLcX9LX4gTJ{3EzZ~ga6qTXV@jWr4a}tpKg<9?IF`XJl-6n?PG-|dqyzv00Jmg@ z0G04eKMUaX_wN8`01OOTgZGK)UzGc#5ra3F1GqxX4FF+y7dTb!T0z8yKv02#lAIqD zGoA!FB?zs#upk%@*^Wi#nn20-~ogA@XzC^1a%0bc|1Au9HeKthNDs8H38 zP~jl<1tbx|5QiLFU*WhoWaUi)Bt-bcRhzE^V}KXAJS%S$*pG?f5P+j2Rt<)pqu~Gm zfG|(v%&brndXClJ??wKwLm^-R;{XJ7mH=qU;Hq+~s?q2I7-EFJxCx{P%YwPDhL`V;D*~+YnQeKTpqS6 z`jF;Pn_Ge(e_!e_&IbrcU*~AO(HDp^h;y1eso-UoOGbqnCp28ais6ElI) zqmD*peV*_DLZk%+7*~9vh1X9oRg3(ZEaOWE4%#Ljod z6B6Czco9PY1y;Z~BIAlz{O9izAO-HBRFu=NyevQfv7A|>i5OJVqV&!n?5X~1dBg@P zqU+%L^g&mLlGG@>962H_xnnF)`=k|y?)N^$BgVE%_W*<;#Z)7q_E~2B!I%uCf+vwA zOaFdw4EYAisBN`0@9-cn1l<4t0YLz6CddY_0C+F}00BV&If=3XtH2Y<{QiGG0%`sP zkT--vkO1_?iPdsXU-$R{;+M%wOD`+741e!Z3@|6ca&QxV>xEJNU}GC+wI2}! zM%Q`wM=O8OPS_|w4^|=T5o;Uk1cEdNB>)Sq9rwUk#}s&ll)?wU?jZ0afwUn5Njsf; zHOn9V{%?=};919M^xD6>)7#Zge8C}%0H6L_LfYa;*x5`Zu?R?G6qZDL3c z>q@!+0DxG30|8y<@)L9`g5gtHiUH5e6aWMiQeR*I*MD#Y958VC62kD20lm-sbj@gT zk8`eo$^dZR-WJJr-Wtj82*Ma+lquvIFr&l(06?dJ1cAXT#uVpH z!Tl{=tYY70u(ngp@1>;2whEI zQc*7y4hT>O0M)?Y(BV2cdpjH!k={H3fuAK10ASUyY85pqK6DH@ybJYyD1iI{h=@pp zAaVSEwhFu8$9T}6tvTiJad?#uP{IsBfCY@TLIC2+t`0003&0B$DO2Co2kFaQ7nK>#_4wgIca7E%3!kPskC z14)Nq4&JN{{PCI&90MpkeDbl-Ac3S`96&mM5CkSaT7ceBo53e6ZMrW!l|W(y=nz2e zYG4CTMVOV)ztj+TnBiJtMi>bB`d>KbX2%Es42$aizxqWsgxdnS(f~W{TCW_{+4tYS z-tnGi9K*NPht?iLuibm#!{>-ss5l>h*FUDr}IP^3TVp^FkSAnEQpsxf;>LzWFbzuW=ES9@y>k0g&V$qMszO%;4J l!s(ZGe+=1CMJ8o-F_X delta 904 zcmV;319$ww2!aTI000012`~Tv0YRHU8oUKBL1Lu6N|W+$OMxWCfR?kCn5MuG0K0;c zxZ;fw#2fRn_%Re34i5!jxF|5d0fbydGif)01t4-Yo+D@2r$0I(SiGf|z!ANK$ZfC0puUxYybt|!^5Bu|5X!V|FK1f8#`QzWo&FI0Pw z1PDz@pbIu^ZjqTc-`)t=%z%3k9|B5U_?Sps0jL0#Sb-)^Mk3Xv|BL_u1P}laU;qIG z@COqqUSL*Wa+iV6Tw_6`2=`ZkFTGYm{0Rte0udkq!vIBHEFTDpP^K6E{$Mu%QMv!- z`7r;m`kVoOF&IfNQ9=)kdwz{mLjVI10HKD(7uU|0#sP4EdkF!YKul+Wfq_P?9Rd(S z2rw#Zj^GZ48A<0M6G05bh;VFn0Dv7)3`)0s#SABigtU@-#Sa5Zug^6rfS@ zd>MU@i~`sLo&}Z=ommOcL&>YmSOfm&B*TFF+_Ij3P5=P`pw1PtVj$j@79tQK03)hyXASKL91XH5DEM z(C{Hh@DM4YiZrRy?FQW>UT|yT!xDo_jY}Pcqy{7en{a>tK#-9pK$AfH%u(XF7;3O{ z!BjMV_H{(zqIXiYGGck6-R4qYo>$2E5S_y7L=88bL_;r+}9 z^9R&A_rG9a^Td26%fzd=`|dmNaC2A>64h$NYi|Qao~5$2 diff --git a/samples/h264SampleFrames/frame-0438.h264 b/samples/h264SampleFrames/frame-0438.h264 index 65f22de928a4ddf9e53879f1a09926ffa8fb65e2..239052ddd0883cdf175addc1423c887df23d02e7 100644 GIT binary patch literal 1099 zcmV-R1ho4A0003AFaQ7nL7RXYyakbe6d2$Dx3&ToQY5`d zkq-g@a8}F!1OeEf06_4OT+R&09PmVNF!eB+*(xRf8h`+Wm-q|-r3YZ;z*OcgPr@U% ztRMj65yr2am7F6gm3zE0xJf79a52l)EKGm_F$15%DY!U2;fZi@ECH?pL$@D{#73Es zlv#wGz!c0Mzyu68Z{=;plO~RxC-8m%Ze>ADJR<*0a8D44#o|#?iRPMWO?UuM2Md3@ zV4|XsC|g1w0-yq*W#Qy3nG|riwYXp;fEOD&2^ms;y?HIp=D%h3 zS{y~qmDbv~tKGl;UzeI~XnzRfYfrX5xlSf&@TEG9p0tz03tay%xqa}P({lEagD5s(&-PQgweK5F&E)UF3 zQ5VFK>^+1M$a5elHQ9T=e)sEYo5A=%WN={_HcCxt5T1m5gM|=QsT^Hx?Op*`VFS5` z!no0;*BcCfJQc!&?g0(fFC_CUk<1mP-~b2(m>7U(7#}P1)O>=2&{^XE$4;;aZx*N! zjiI0aSdhxM;-WS1f93${0q_-uXr6+F(>}XwewE7ad>{MqFaQt$1qpm7qbJ*up+$xa zI07Aj0003&0B$DW2Co2kFaQ7nK>#_4xB;uc7FqoK3CH*lK+<8`0e~Xu2Id1vR1G+> zP&Q>OPPT#q6QL4{XlWWt0XNfKygounV_2&}P&DN~!ea@;0r#o}?}q7v{;(5I3H)$l zkC}oeKuRhV-OuImFwfOv!yN+xZA#fl8G`@o;JXye=THA#{1*|m5%|~s_tP&Z0FT+X zN!9;25JrPUfB*miK>!s(ZUAcVCBT9Pk>Q9o&{GPWm0SfMoI3_1Hibnp?!@0f8C7&V+hVz Ra*>w_@yg#YZS20T`g@2`GXG*EfJHKp$Ey;o{umj8>*| zR+r8N0GKd_Ob7-*SRe)&LH%Krkcs$LuKUw~06-*F9}RWHba301fS1c>%ZgfZ%XLmt;|5gu?p8*0Q)ifbd_l2OMT> zg2^~4y1)!`fTXeQ=mv8NZ@hp60Y%L?>^VY?QzZai4E_Rx1#*Z|s6{7<3t!>5F`x@x zXEZYs)fsdPcPa64lERkfCFM<`I1##KLSz0vAr!9qmuSr z^%3xkkj_x5wzd>!sLp@t|8~ivAjD2$`^ZiK9zu-*wE*^SE4&bX5K@dh6dT&Aybz_- zbMY^NQ6cb{G6Z4+BRm5D4ypn?@?;DGVpTIR(f-33#ImVcm?xe0z(WxbaE6T#L4jpf zu+xdnC5~z8_kol)7GQ?RL_|$BQ6HZG0LlnaZ+HcTvU^xoD*;db;32?|Xuz8?WOE4F znPTq@!HEg(4J^_2%A_>MzyJ^j3WWs3>66b4IWY(4qt~VY;H(xed0@)K?=Qd?c+3Gn z41|;%8gY3MVk=7qPy(S+lE)*hH-G?R)4-<6v`G48w=J*87@z@2Sb)hPSSRKsA$R?t z0Dpi$6bdVw7rvI88$Y=q0D~|A1%xcfJFc%=l}o#K>%(h*aoivcrX9}0YLyc ziM9c&z!q8j{0YbS5J1vl*+9SsU6x~I^0fjO8bykh+bhNed2>t#lTymOK0--rFx22d z14&Q7P4PVl8|{XSW<&?$0W|QRaFAdEC!YuW32|5r29AyFrzyt9W>JZ`d&LFvws|FXXC- r3QKqoyJsC{EbgFq7Z#K+v7gWTv7k(08Osh*Db|1ZUk9w?g8*8P{7;^? diff --git a/samples/h264SampleFrames/frame-0439.h264 b/samples/h264SampleFrames/frame-0439.h264 index 288f24952a53840ba421e25751774fee6ebade39..1abe445499bf006d930975414b6251fbb228667b 100644 GIT binary patch literal 1410 zcmV-|1%3Je0003AFaQ7nL7Si&yaj>3{v0SHfD2&+S_PuvCd#;ay~R&9Kk)HkEPwzI zGynk%Z~zdRW#9sk@Bj!AubA)v5T@_|2p^uWecH?OYwqxYo7r#xRKh4AId8c1(}O=qBMdo!03Zec0s?>l zAU*+P&IAF=04W2WZ=2W;fzqNr080~wj-5OH`t6v0oTn*orSVZyGR6}a><54g*KSGi zyFW-$vw#Qbx)bHU?`aK09_}Syt;U(qc*jSA0zH9lAg-#;N|ZJKwSX=KyGj*?lj3jv zi$DM%0JsM=Fn3%3HxYyxHE?Mn7WpzC{sL*g{v19N-~kX@h^9V?=7@+Y{*ag@01B}{ z2Lv_CY2yF@ASX(l<^b5>!-{{npoo-6@WIJu2mk~CQ*oLOa|ipxZ$JVHTve^yQ~V&? zB65$EmsMzr40sr2OTq7rTMkL%7*=)h5N3Yt#Zla9iVwga4g@cVMEyY~ctQBrXAt=T z>ntI+4w-^*>HaPszyM;?ja;Qk!7KQd!{-1iy#)~5r4Cdb&Y)vm!76ah_euRYV<$wbwjF8FH&d%ZTf@I7P0>JK*U=+540%O>LM}Ptcf*<4>Hwavz z18$I*00IDj03aX$0v{j%An2I@9faiwONFU)39R#LLzpTS0v~?N8~|WOP6GyrM;y?l zN&D`8z`y`N0WlST$8dk32qFME;$u7%*)Apfm+^r)Ll6YZ*TI&=7QFF*gh?cv4lVDx zxU)<64)J&*H=NxH3@@-Z5P&~S*tIU_ct7(dkN_|P8+EQ6y2NaV5dvlu;v9?M{$?zR zu*^dh@(3vU<|+<+hS~ii69>crgN>ZqS295t1R6nr5cQrWbMtrr0sy5f0jA0_>HX#C z5`4T73-EKPj4PAzv6MdwK#?JU;tSf6E>N>=BFkUqA~FB?u7Cg_291Cc61W>Eac{kk z^E|^>a*r$og+Krh6N9ucDmPJEwitK-Hf)+37&>!=C-tOhiSm(MmK}%+ZWsW5qXPX1 za`^lQ;0SgA00BV&ZYJmkuK;*30003&06B@e0jt0m+5G-~1mpV$AZaur8sH<}ZJ-Qe z3LK&cya2^b$xcU+NJK#1X-0?~*FpeocmPiXbPwhFfvhfvu!pCqLk<8s5`rM^%jTTDY?lcH%=6LDj?sjU+v&2n^^6A{2YLFD|Xe z1uQaYN|r4DGz9fQh#U$7mgXQrL8lw~i^Uk#hEbpR65>ihFtFW73SdbJ>fr!tz0g(D9h02MhQTx8A@R8@sPt?;*B{6nmgwd06T1#`Z7o( z@EED$!qNI5q_QSD5*loGzymj{+pl9F0_x!oMRhC*jaVS%^gs4+D+iK59S}=j*gsPW Q%E=WOgRD8>T>JrOz<Kp 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 a0iDSM<2U$o{D^>$g(QfJALoVh@C5_+@YG=d literal 895 zcmV-_1AzPh0003AFaQ7nL7Si&yag{ogCxC7lk;qf$1mgsJP2aAOUB6nBtQW|j?B{$ zkfa3ciSGSF;{Xs~2x5Y4(22@@%A3Q701Go1;o`($IZe+5D@-}b2_yCiY4YhzE@bufG;KeQAO8bnTrU{fiVCrxH~v6s??(BL2{s7e~mAoYrnH}C?7ahxqY z0|4gzrx<$h00aQeAAkWwK4_z16rp+5VM4$lBD|o6nCdBZ_#eQa06}Of=v=O)M&>NR zVd8`v;Xc?*D!ak}&Kxba_7HT-ccXh?36}N9c@_Wwld=EXgKz``07Bp?b>&+s1PZ}B z5CyLi1OPsXpmMcW2XN<+DFHi{LJc$=zpx--aGBXNE_k9T2Z~>0c6MZ7D z9s^tkh6Ce4IyoQ!prC&xS%-wb)xM0-%bibu)s%JkOke;I1CCH2yS)k|5^CM?7z1FB z(B#Vu#IdT)FM((gz>r|d5Hr9GVLE11oXHg}zG3WNjp|tv=ah2F^El&ZU;rRA00IKp zmB0jo;h*3E0tHl+=4cg6ClS8_^IVM}fdgk;h+P&;Wsl$10aMTb5G?)xBR~KkrU8nJ z_V8nQ#{&pLz&Hs>woNF2slWjMtndL#B|sdm%(h=mxI&-gswBvkD9nYG#!2 z>;x(dWEbQbOTa?jY>V{oo*B=;n8An@&MbIZ0tl&-_j}*rVEt_V2md*ESOZqYu|tA< z7S3bS9tioK8N6^x)_z}mB(ZU-C!K)a0eAp91jhU@Kn(#MAWmf0`xAm+H!uM&l^}d) VuO?U8A``KckrJ36=Y{j|1p}J6fouQ( diff --git a/samples/h264SampleFrames/frame-0441.h264 b/samples/h264SampleFrames/frame-0441.h264 index 0b7579b57bcfa1857b548321636c1da9222b63d4..df99df3902af12ba395d62e2cb674514f15b5714 100644 GIT binary patch literal 1817 zcmV+!2j=(y0003AFaQ7nL7U(jyahKwLs!(4;W)4WKmZU505~ksqejh}HfYhKX3c;9 z03JsG0Rd+$00aX-_%JmQ#s62P?~I9w<;7qDnA>_uwBi9cK_JUat+dEQ8rZ^j@5ox9 z7ywF>oq7wX)Z^*G04NSC8eJhz(ly`!1Oi|I%n^u(RLudB@0Du&J9=k%8avG+Y z2@AjX8HLN-zy=W-lr<0i>I4kw+#Hi0jI|C7RPd1PG(!_vM@cP}kiZxPmYtIk@jFG} z{8FCZ%k~ir6yy*y@CXs=4eRhVQZ5mTAN(Hx17vv+{)y|r1^}fbQ@JUlrSzv8vVG4N z@8j18gF#UzTf11N?y!(j$M?7Z0Hgp>q6`wfVINE4p=n}5BRC$=x^GLJo_G;(28XS= zm)>A6U?76m|4@QZrTiX%03ZedIT^1BRy90mum0W;TD5?~hp}EdQE?Qwpe8UFpo128 zm0$nt$WBxhT$Uxk!_yLnr14Ew%qRQr2+gGbm(C&) zJj5CIrbb~rL$k66fM8#$gtlX z>8-Ar7kUqM02f8T2LM11lS1qp6vhQr6D@&D0b<50Y3KC69>AeAV9$(aDF5WYe3rE- z55NEr1^_w-gFfkvu#Jvf4uud=;50B4z^_V5f7ETTgxRu`XPO{y;si7)I`HWy!KoiVKNA5y0PnO10RX~yeHttS z6b>)|5GViv0&Cm=G#*Fa>VN=13nah*!GlE6G%R!;kpL2C0|2mfG#?Gub>KqkYWk9$ z;Ko5e3`hW6(d7V0Qfey0auiJv=0rrWIIn)haSfiKLK>ov64GD(;CKRxtO^RrE;>+F zYTy6_1AxO+?*xkPM4yvrj(flc&MQn35T_lWTM|}5fCGW30tG`vL%#X88yXFNSOXV; z45hg+qPa-#xB&tq!t!+)B5u5I(0;%G!mV!t3f3RM^y!tuuuPx}cknF?b00BV&ZYKB!uK;*30003&06B@i0jt0p zi~s-uK>!s(Z-8p>CJFGa00;evl_y7r(q+{$OS?RflwthWg1c;&lVhylr7((qa zPf>?2!HWUl8pEkO4xxgg_aETY3?t(X2VemK1CP@J`W2W%XesvX_LKjCX1d_4N zaQ_GsOZ;aRC}4Ql0LFL+2J28_QH=Kzl5p??Hrfq23-{2+JbZSddDIK0+QrI7>)B-r z+l4D7r+}5BUZi8+_d9;*&ou{RW(YtEjzcwot`nYuER8ONx0#A3DZ>kRpogsZZ;ap- zQ9FE2d*lE!P`f@B&b|IG^Z%vbO@2U(4FoEp_bKs-$NjclD{*K*QtgH34d_sV_pZv5 zl_HDgXikfCmjq36bEV>{oVU z;20r-NV34QZaY)i0S5j72Nk0ANg!jYZ>Gw2>xf?`+!}fEWX_TY|)%2nGx+ zNv_ZcU@9`@fFa(ng_XmbWE)Pt4_-|KgjB(lkN;o@0Kfp>Ms9+M&9ljhNNh0&r}Fr* z5VU+y$QytFfLNJEiv9;~cZ)si_vfR43r1p2`=WFA^&Bw*K}Qgnyka3nllQ%MUt7Qb z$AAyn5@FV5Gv3Lz!b2O7Wdo|l!mG$`uME0h4MqmQ#1BBA4u(KbNH$QJ5x(6>@@Bv7 z4$cO#UzoK~^+WyO00<6&TpSvr*I&}KQ#GxCg{<%aK>>QDs8WEqrjP(203aLzVPIi# zfzGOxc?fUjU?O=DkkczFqN1;W0f#tJ1VK97AuR-t&nDC^1~>yJDLGB}0Qw+qSS?=5 z5DalZGKLReQf5g5xC%go3RA?IJzoC?;BZvsZUd!;I>c?M7l6np6N_%oe37k;pjR+K z0m36!4~`F8_#glf5D!j1+f4x{sQSCz=)Z^$;D$o|a??ftfPS3>KgnysDFsr{^ZH_i z&_NK@m|e05;FJIa0R-97K~b%&8gd>2@D{)`3G{J2qd*b{zxN>Bh0002=1^+v(*$s_jkzdUra4B&HX$7IGK zuQ$j54g@~R3*e%=-moHppA>w;-b0&kAR)9sDdUYTxrxiFu)SF{oD5nZp_*y5$*?$p zP#TorTa@l3vrB*fkCbV^oWrT;FX?;?V}#*x0dbH8jY9f;BJ`mfy3&JcJOE+LYqO7_ zD0#N+6lvoT3M%Q&#gn|Gff8^4J3fHG*$39OL__z8$N*pN6-izZsNh&YKH6ong@iX~ zjqjWRK&fZ4*&mfa-(Bf8c|ALe*MelmUtw>$a{KxvYK4P%Ap3Q%71TjuJ zp-6({)6e~*FbwB|EeevNe*VxI_6gmOx37r*0T=>qfB*miK>%(h@CL5{crX9}0YLyc ziM#=;z#EJJ00BV&6+&+SYValr_%j0uxERnozzW^~0su9w00;tNAb;Lo1*^-6#!>(H z6BrUeqlyV|0#EoNyEpFv8(M$$gs5e?-oS_L_!Ppd_h-D^{fs?pdy`1NwGn_QR>7!k z*dkbnLKo-s^AEeh&<222`T=@{;usc!pKjlrasjp6;PbOT z`Th&0tx;!anIr%L22|SRQS<5s1_V+jT%jR;-JgjJ-@#O89#LtP%*TQzNPq+o88X*R z?D^tgOfS`17APnofaMUhso<3*9tf|4nuzmHOKFm7uj&Ied63#E3Y=a)M{Ik+YTjs= z*}K%g<>d&XF0QiuNwBj4X|-v9sqb@Ru-nDLyakisc@jGT3tRyG^zePjd7H=iehk7eW(a{$Fc@wC z2mk^AAPgZ7qejR3CJe9;$?u~`m5DGd2iLG>!YiQfe|LbwO5g*%6`Wt@Hh2edc< z2o3;akRX}g0X^X03n3f;Et3EOFgOc*SkppN5)Xg?n3J8@%{fZMFMt5RK8GTVEXI{+ zfqsKKlOjE~zIRFO(z($A>Dib{3 zz%BvC3>};_kTNP0MX|iaFM|+J3Rp4)KthE+fEXwSl}A0tfIb9&Z*nmD06-;j3IhU@ zud0G867T>-1pr8`S$^)qgMi2_03-kV=s;%7Fg;Lhg(z(;;{X{z1De2p7rua?0D`z; z?f}B5RH~>*=y*uB?ChcYfJ{|EfD0nONPuV`+h+dvfB=9202^#6uy9EGS?4rQ5S1EClyQcV>cl3>vvWDw~0T;ZCFA zp=RMs00~wY00aksDcKWL@2oJ9zCB!VcImI&0tO5i@Meh;?pa1Ko1_7&hp&nHpanL- zFdhu3gW;;kHxNJoK^y=C82f+#K}-SI`{-!~00IPH03bWrWB?)?nf`#tE5K;ksSCIP zDydvT5`zL~Ai2Jt3y^^X00Ce_Wkv+B)`3otOi9G>!mq#B9dG~;9=?Qd3K5{Df6L)C zI2x!e0vP|0nT!H~k<~0L%4ZbtgI)swXEi+$5bY}b7=A$`Ak5%V0C>tmV6p4KFdS}7 zn+KZST!>C)EfsQjB8mkV#edTO9P;x#`LPb4SQ-QZ<#}l)q8GFP+;YN!Or^Dp$FEJ_ z_kckJJk}_ICLB{5O5Pv8m?dz)V4=4X#_4paHAE8;k$|0YLy2LTCVL@Ft1zJPF743P8dvK(L1Z64v^kJs<;P zV@fMXQ(NFaRguUTp8pztf}%!5ENg!MssxctSptA#*~WrZ(5})pmaf=#)08S+)5R?R z>TDWC61!MptCs;hmy_uKdHgANAHh(-jMc$2#ZP#EI%E5D)y)y|fThNSzUbc_Gr z&S!%VFNq3J4)*FMy97TlV)fpBT2J?B+Hpcsmv#=rVo=Y;1+RTL00e#j3}*`!o%Ktn0jt(9hNa)@8Gh;-B+)8W%~INP?i3{rA9t zLS4)%<2M|C|LZblC0wml=4LEUzX@7u#^b;p6Wq)CCp&KeXQ+sY&^b8qmL%Ab5CiiT zu5*xU2s;1hZor1^@hw&f7-;~_H{Zgav_wdJtQZrXj6r*Sm*iv1neou=4pC=6|I7Zx sv&0(@W)FBF0g`zCTr@TO5X@uwpT+-HoWQCHkMA7+Z!_EX|L+U~$NgU@d;kCd literal 1039 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 literal 1047 zcmV+y1nBz!0003AFaQ7nL7D&>yakiQfp}0#01gBM3z&})sz_t!#kU~h!@vdw0b}H} z!}}ZZNjrg)umGvP7~EYy=5>;7|#J z2xP#3XNUv<1O#Xu_8LS>i(*gxu0{X~TY^yoH3g_GB>Lb1Q*ZzR0e}LQ0$D<33<)ZH z=U-Ik0Y)S7VtPjIJD0+k_rL%M z1OUKT$6Xgccpg7!5Ia-c7)k)NB$yz?0Uin}G6E;}fEoe7VUCjy5jt!f;26td$jCRq z27p!Qqd^4mr5$w0*;5bzFmQn9S809##@L4Myg&dT1OOB^uFVh-xzaYxKmo`E9{>~v z2O(xLRie?sBMkfu;1FmXM{5mFR~C!vm2h}5K$0UZ-JRVraZ$VAKt=*zd%g0}6k{Z1 z{Q(CS3PLadO#*ZLMBQIy_6fnjj(q}CIX{flhv^9Z2;AZt(I{(M1*nUZDRK9R5DRwv z(=je71u1xf)xj9x0v;hJ!&nS1tx>E0kLgDEASlO(jtg*7ouH1}fX<;Wf>9yxm@))n z10y~FzyLrziU7rpI}^hLa*N2|30g2X6pIl=uh=uK`_uvk5h)NTSb28|3!h;OS?w`} ziAiMM?|23%%QE33A`p{>l-`-r`~U#}aY7nxHNc3f4W)VFNOk~0;1DPVE#ab)kvADc z(ve0k@GydxKA!>zlMtnA;jvGE03a?0V}O~2U6L*?FB*j~oD#hl9t$Wu5!75}!C6G~ z01<9EZ5q-;GXkIO002NA@Bn}Y0OR^MH&QWtdVg{d0ti41I3`3yHYEakKnh?4-2eaq zK>%(hfCjGscrX9}0YLyciJ$?iz#EJJ00BV&6+&nLYVZ@M^ZED_m=Zvu2n3iV1fE-P z1i)lC68GAkGk`!gS=WbT8j@v#8~}J4kU$TpylGhKmN+lvKDph$wFDqZ2ykU?yP^9E z?2V#}{=kM`)bT@p`@qrV_Q~(j|Nr&S6e)stc7DEp;7%{a^JB1=p5PJC=#e=OlX`pO z-X1J438H_fh$CDu)53Xw5;qbP6clO-&7oCz3{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIFEqv06+jR0K=mCU_S$yNtg+|bzkZr01yV6fL4g=oC>Yo zHxBI5nZMuy(1%wEL82^@X!UylNaqlu8ZDiqK}OqC!z3862JI-$V}m0NbkAT^02JHu zfEdzf#ZdU0)pAMg%-O{NU;qdKfB=A?00<9&Su=qEa=;2e=bPsC z1K@P1kANMC!$(e^`|Gx0`f`=aeck^rii(+*GVX1vPXGYm0r_d4CG%eW5L%F+03ZU3 z+8(2y_q2hy!K8I7qUW9?p!H*bfMVPWB%?g39h*EU|G2;ba31Y!X95JI$rh-lY(u|=JAU;@kG zATuDiDgr=&(7{=W00V?k$VB4Wt(uGc1f&393pRi-M{JtyzrVajU;rQn*C+tb3KfAd zE3F1_DJxL7$i6(HSD*W|B_0)6v=~WdA^*Sw)6!$@mHFBr01yHo3`PM-9$oN`ZTENp z0s(#m02pJyX|}hobU!zU`TzicNC3gy6ZEcXI51KuQ}v*fM*4B*c#o;y*gT4olB<3G zSO75@28eSjjFl}R`bY?jh6Vs00I$?=1SN35nDIQo&4f^L|I8352Y*mFvuIHu+ke0S zf^a*6D}?Vw*RzAp_{_{VQ@yJGfBxcR00IVv7T8%}3o7ZLhyR1{8NuXyB&^;&KFm=t zegI%FmCP9+E|UHks!)fo)x@002-ty#|6jMWZLq`jU-`U=zG4`104{E(50HgFH-G>j zDl2Fe8L;%|uD0F4kknlrujC-7vnRBEHVlybDFPsvVDf_WO%rxalcvRw2bS0Qh>U;! zE5HB<3b8N%X{M6^+DRf``>!^}{l)dIZxa9}7k~hmJ#j%9mBfRbFz^6OjAV2!s(X#i^Q9jEj8_!E#J0>~)>X@X1;0FkInHBoSDUH}vh)QmM25W67>w`$?1K#TkJ!Ls2HZH*3>RiWtT9do_1+&C8jb)pU~aX4 z&>;edp(Eg_5W)IHq-LQJ{0GTkCzQlE75U%C@Bx0k;JHp1)qpIgk;u~}3HYyziMUMW zK&QXk!QcZRm`vCpug;tNDfl1={0&9~F;MVmr0)i9C*B0o{vdS;4vGl^56_t303bkc zNq`NH_%Jg}Das_cpx*!b@LUSjVPV7EUclcrL4V9gJZ=?XsbD*a;ax(JVuBDboscvr z*48A(=8xa^34(_}wE=`(&j1gbmHj{e`r~VivnvBK^$>WF(38_+z#&;x((JzmD|Z0} zeqBn(zYK3q>U@rw|NgHI1k-%~_%0VQ*;F*vXxB*@a_0+!FYlz20z#B|cGl~=29{()AbeN1c Wnh1=D0n+{aUNV(X{2cJU0g-^)QhnF} literal 1322 zcmV+_1=ach0003AFaQ7nL7E^Myaj>3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxL?*bVTf`9;>X1lNe$Q{Z7P#W+z04sn9P#PJ;z`G@sGCoQ$00amC z0Ru1VDzJeo&I)ciB30qO8C;N#sooD=)+2IPTOD zeBd$rK`|>XqjdsVsM<|1FRT>6tFh1$fJTV5EhE7{-vTy~ve`KO{`~+M%qPh#UA-cl z{oarO2nGO*sa*o^THoGW8eZ?<=#Mb4z+m+}NMM0TA4RBi>K2#u7_B7=h-MN)jMyEm45^9;2px z7EsrKvh+)Wq-Y!iI4%o?6QRI`u#zzU?tm}?0#!m?>f!9Zl%4<31{e%5(Gdg?b~#UL zPW{`)0H^>I-S+?xQM|#>_?y1}`~G-*0f8P_p&5~rsI_O&~lmGz^iWFizRCjby%DDj#v7B?$Wr@%8c|%+>0096%fLz2Pt&u7+ zLF;$#81zGc0D*^9?f?=aIgxK)n24Nfe- zPyNBULEGY2p7;7u2Z8`$klcs?ksb(hp^n2~ANT+WKxDN?M`qXmVQ^jG{q45Q*@mv_ zAAkUW7*&U1ZXy3Sae&NClWf2M5D@?Y0WbjY?6G;H`~e3AKnc#p)P0yP6;+C7&;lSJ zD0MoG-k}Id#*UrAfGh+8G695vncADKKPsW{zJMm^0003&0B$CT2Co2kFaQ7nK>#_4 zq5-SG8;k$|0YLy2LTG?$@Exb~`S=r%Ap*!L0%?L!0ZFJxB~d1uyTAp2H6sl~gpka_ zaSMDzdRUPH;vfmRv2Hp8q5cn0;hwSfxG%|I(}vOn0|nWjYYbC?J$Hx30#U#PtPIw# z`UD_R6eN5L$b=7*0#Y+@i~}{S3FR@42m8Mvx8N1F@LZ(~)qwqJ$kQt6&8%02Nw`FE zAXoqP!=M91!t4-K^OJvtKLi0EfyiPwr-MYNcsFzW@Fth>1E@%JP)HEkXhMJtP>FyI zkN7Y`m|UVbz}WBow}RlkQXdQw^7aGwnUE#?#678uT1+6Au=#O3E2vT|A`pQXUQ`#7 zMy-odTAm(Wk>C>r1>#}?h`XKuQ*vJW-~ax0dT7PaR(bpSQ3r_)2|Wyc0EcB(O7-}$ zT|i-9w^Flb;h4_qd9&>O-tnM@1k?~NLco)8<;i0j&06XI@5|v3h=T4QaA)sBFMVJM4e3AM|GRGmQl$>%VY23O~a(E1pb2Sqnl4p=|{fwYcSG53HFdIsK5;Q=(>Qm2J|I0{H`q;VOUztH=a{}srhI{}5#>j(F|6C-5QnqPVkqAgBBm ze8j*jQ^o=ggc0Mh3hp4-wGId;iZa`ZfA~HC06<6v31hw(GsQyRL=hT!Yy8PUV0K>b zuYsTk9a$I~l3aGE%t8;q0kewphK4K8h#APG<$xIc01-@jVa4*4-)IJ)1`N?qRSGV$ z*ytzq;h4coYJ@f9$)?dy_yJI5cy2^!}*;N%>AfB=9P zb*zvu&18-P6slujnLrUGIbVsoVd* zBmfAK7yx0yj;LHf&=_z8I{*LyK>%(hmx_+=d@?pa6m?V4M zQ5Z6ds0q6unK9sE0F`OGv)&L9_o`tvg8~z81MsoCb1);_`XCdEFbo4Go1I#yN6mkT zaI^r5+Tt)|eVzi%F#-L^kFp9fanPL{6VFg)6@1pO-rg`sal9IVI#_{u56b_87qsd6 jeFp}@`G41lhyXQc9>Qh}#+ZCj7n}XQ{&GdqWAF+Tzy{zg literal 900 zcmV-~1AF`c0003AFaQ7nL7G4syakbe2!;3%!XYjI7q9>j3IRnseUm-^JimYJF}deU z!GJ-4(n<-+*M=f`Xsn6{P5=)WMnNNCGF*0*J>U>>#u8hiEcrykC9Zn0V}Q;G20#G; zI>%uki}D2F+F%F}2Z)u~3{GboWgtv!*xXm{v`y21AP05_w1;g2nipXI-~^9YB1FlM zBpqSP+{mTi00;<XtnOiv%pDifxp95q;o*0vHMpAVZPjVvo(iZjb;#J{Gz`7d$1-pLMDUnk3%OhY>|bmK@a%{dfS2CyA-owI={Rx(6Ar;KrfP6X zfLiaJ)BF9vF@*XQWVEkwE&T`x4juDJ>4|TV;*0mt1vq-a%<_Wx zVafpcd(@krl80rVFz$SfNB7N zLQ!s(X#i^Q3F-ZU z5GaShqAVrA3vjpe{1AHrVWYh85w4;3e{g#ohlx4C2oy!doCg9@0ImJN@fmo-Z7m7B zm*Gy@d?tUW%G-!IJx>Y1n*<iy|o#KxW*gu{p0HDCf3|AY{ZfC57f409JM8B#=b;Yq0%ffm~YusjM~ zZQ+~O>AT{kT}3EH01h}r0fNW-hoMpv{1EE$LaVczpKns+A-U1@5a8%rW6UZaK4({LpVTRa}^RQNDLHGa|uFwLWtLJe5 zRTvo>4t_uZ>KtH()kl@8H{DOD5Jyxnin!|%$b0|{ISF&^rFh7aDxdw}20#M{UU0!} zq%T{7r~a@300dl3mRJn56*o>!00|d>q8;@w>ig8x2t7!W^&(7P{1^k_N7!HhbvyuI zL`d%`aEi$1-~iw-XIkEi-UzW5TK~QoKn8DT2@keGMCF~KnGn{(B;j=fb7&-d9Ew^d ziKKt_@BsmWc1{~(adg??HfcZ*KnF(97<2^dq8Gzuoi@AxWfO6tTP<`~3Jl{F0|7t< z05~L%`q8FF7BRUG|8Tq~In78Z;`X~7FbN<7V`3oG2bI4*;0&q&pe&3rqHMYtEZh5l z7y#ym{el|P0Hfv)00ceep-&4yFb4k!0HBn-nc;Ya<54^>URMtQ06+vlmAkJP8_i0e}L593kzQXS)IA+z12$Xky?{r@aA{07L3^;y#=TojL?QJ-`5B3%??PTQkc^ zCcj&}nTn&UmDPGr)$e-)b>#&C0Oxb+G+fCAAwsid2y12zy#S7p${_JJ00IG;=mEe9 z32Pc91bVQ>t1J!$;kp50zj|VuplBchLE*p<5EaAUTjwB%IAoOc1)`Ur@c}~-2_d7= z1^sE+@W~mG02l;~1dx938zz%DK^Fyc1mY1W`fIoks=) zE~T%j>CBMAjp4+c01yx((s-pE`VA(($}|`uehI>W5y{&F;NL;)zyN|7TtQAbRgNK9L5Gf;OqPrQM{j5}10uF^YaxC9XvKW29= zlg$~V5k-1y&;NhCU<@k#fOGoAK;&+OKmFm@kj2@$PGT>-zz0|d;3H1iT?UROB=F|5 z8c7^*4mUg{@JLTkY#yl60)?>80*2lI0DyQ9sT79<-q4fI&LuZbzSr)68vH;ol8oH~ z?qLDcxTppR-<)6Y3J3}m^;DM_Yjo*CR)#LqW3hM%* zT;vc({p;);d81SJ^MC7b{PLm+%H9w63T_wxdn7Thc~4!#@%{jZU;qFCK>%(hpa!o1 zcrX9}0YLyciKqdqz#EJJ00BV&6+&tNYVZm1{QL>W_89_*kpU340y5)(*~|<5q5@%f z_5Y9q7=k5!IiJ`7W7E=a{g3k$SzG7OSd2s71|JQ9G<*Q>O?IEAI%lRO(v%x`z=S>i z^N{C(EQf#}e{$1(`*8zM)`E^VwE(bX)751Y*F(SW!jaCMb^G{a2_k*!?KSt_-bTM| zsEK%A;W77#90DS`jX=O3A#47e zUjJ+dZQDrNzWR7qu_FS|HG>|M{#ql0MXrL%+i_uzVuyaEuR6YdA$!6r+u`8Ep6hEM z^(OHU!0zrj64N%3?|;AR&aVP-eMO1Q9|*hF?`>bbrZ;roC$8TBEUv{eItb?(lIHdd z%EYdUyGl5G@~!;7rw|Zr1bhjU;gf)100I}k7Ux3{8-M`1&?xo(41+KZsD41k{Cclg kSN@L505L9-*{A=C6!UmO5M%AOfor^%e1|{%fq?)}U>uD!X#fBK literal 1495 zcmV;|1t|Ie0003AFaQ7nL7HG1yaj+y00cH>cV>5HcXt2y0QLZ6I0P&p?g$w<`L5Ad zK$(aMP*4CI00<#qX&g%wNC2`RFF%V81j|E$dtB8cy<#`E1^};W(iV*2UKlmt00;mc z0l*XTM?p3Zh#3Rn-~*4CJXIJ)nUzRzN@_g706;+q0KhLcUg(Px(HMiwPE!v@v(!G= zUfciz0s?U46uC{XG>n$r>{)xW+ADRE8%5Abi|Rf@mw2pATt3eeDI^{Y4#kmxbB)cU102vGbP&Chs z9$47gm&6~AHeVoK7C2T3hJBcUZ9>ZgP&zBAxf1~RU@QOv056k#08);$45wND<6>r+ z01rcUPP5cSe(zvNP@)qT%0(#Be)kg`^ne2ZP%AYl(wTfW{0uls2KzjyCRS}h(;Y(q z0^UN(UW})`?KhZ^L|Po6YgouCz0Eyd4qpvM2EfD*K%fqWKu}mFP?{6YUr<9eU-phL z09*{&un~&2h2Q`P4}n-19IDr!(zH`Gt$2m3@Bu@EHA_&X32{vz06+jhI0C}J!lMJ7 zRVwrl-^{>7@ezsBD=M<0uYduE5W)n(J6j_!1dop<)Gh`%10yIoZukJ|0B%+;UdtE^ zVL&Rz4`51WNrSi)gAgf12{3xS{tdw3smk03OAK|0+fpw9kWeQU-Jba)TNyyEV1fgL zMy?+m9=Gs703aY9oPD;M0$+Q*aYf(&u#7#yMS)@Mugp%J^CK}T9LmD-m(b=T2AHBv zMXuSrG6pCrF|I1lXU6To00;$`6aX-_a{r<>Mg|2Z5r6<#0RhDmC<_e9!uZ#kz1m^H z*f}YB>~%Kx>;d)_Oc%yFaJujPfq*c>3XU#}@OZ}pB`LT-3BVXPhQ_6`4gDBDe&7HE z0YPLElOld$PK*RQ@pqsH1Zd^qw3B{BzNdkyA}|52zC?-n)bPf5Rk0k{yx zw#6eNZ0!s~WzyTpRBT>%?REds|Hb=lg zUI3$r!H6IOuXRIEXdfg3G=>IYf-Hib2l_w&AWmaZN#GvDRU&(42F?i61kokXb65W_ zfs8CC3y2GhfGo@n-O3Jvhuw7$55Np5NoHYi3Km_e#94U6&Uc0r7Tx7|5kmk4R?sja z2loBOb411aE%#_4rU9$K8;k$|0YLy2LTP|%@Cot!{0YbQ83Krr z0T8wUdz?AU4}B04569Q!0O*1xemR!F3pz~L@~Be*1sZ({5sADEJ{tmP_yOLU?LSN) z&+28AP&T(9VmC3O*!yri# zUwfMMrq7FchX3nE{s*^q=K+7jd>N3fu`If zUwDDA2+HV9U=u)z3xD+D_xo*)yE-$_3w$dPHv#3=Zz&ku5Vx9{2kHUUqmBi|Q;+Ncb`|^|k$@;?^>U z1bt=@UjQv#l!#~}oH3nqe$`xub{Ox+%u&6EFXs>tZ3KJ^+NVmu73)Qr(8LDd0DEW@ xdjAGNSO;7>5HY_SpQQi(j>-T<+FKs=uvFY{2uBqE-DoX$lJ1Ce|JV?KC@}4Ic_jb< diff --git a/samples/h264SampleFrames/frame-0447.h264 b/samples/h264SampleFrames/frame-0447.h264 index dc18f9e3a7f54b2218ca4c0c1ec095363c884c39..f1c05986b574d8b200ba44b3596464f0ae704e8d 100644 GIT binary patch literal 930 zcmV;T16}+80003AFaQ7nL7Jc%yakiN2szF8n=?!Ug*X5p00;qqFr+@6n;-0$G{8kD zzh(dcfKUfKGFSkRKrlC>3>CFp@fv*DAix2I>bKV903ZMm2q>Nm$^s)Auu(R4fB+x} zIpfiq!AY@|3i2<%c)(x)AQ({^p`h*<=K@ZCfEQP*qUC4*(7af%%|7s7aTY0^l5A(fQL!gCem!TN})i zF*nLR&OgWoZ~$;>d4@J3jWJgrcp-=s(q1HCLPDJ=SO9mx0Eh(x-Hf{ef)MdLKlnfR zn`UgoS9J_yH~_q52tcclXp>DFv;crZ1B_t6F7T4WhGYF~^nkv-ulSe%QUFmj0RZrA zG#?DsaCB7&00as^06?DB01b!dec^hP*DXz%X;cAo`NzsZN07P>mLVA%kNqfCGbq+C&3R5TOwfib{>&_kait z6lm8hz@jA{RaVsoAHSF-aKK=Zw^HaVRBBdKE|wwS2zCGf0YLz6Ca4Cl0C+F}00BV& zIf<$PtH2wK0003&02M-NfNJmzbP<6B!Z2;n0D8zg78$L18i=rfkk}GMirNDs^VyCj z07?xqz$xsoxY$AX312I53C^|3G$*8WJ-O)L^7f!$Cr(krrb7S_*-K5b&;qGb9JUy* z@9ZFmmP~aDx3=}xu3LHcyc`;*p}~gX;;%KL{)Dya~)Q1h_c}U|0YhfCL62s56vU z7?X??*#qT!%@d#dJ%S|NaAhG6*4`FjEn_GkV`D|A%AOVQY7q(nywt&*f>=S{zVJ4i zm{=39Mg8{!fCs4N?Zngk{s0RETD{UjAa6fjf1k5|YP>iTm1Gy-9@TkB zzqj_}D1iZ>)Huj3#{|F<0?fVS5NI$pn=%7MMFTxMzs3z>{!tBvgJJDtK2M2ohTDMg EfWB{m82|tP literal 956 zcmV;t14H}(0003AFaQ7nL7IRXyakisNeBdn2)fahv`PG+RCp480U82;2~-@l@rR7! z4*CDm_%Re34i5!jxF|9J4W?#@qaS2`0RhAwUp3|ql+uLA|F{4};B#xp1Q-?3t?Ix1 zz;vJhAha@4038M*w@UR9PQ4YIJlycG@m>GWdH#Hiq3FY%nzZAyB1~u z0E1`%2vYz6g*X5ZOu{di!(32HN5R4H!$gFzeBK1U_jwEY8-f^#Lb8LP0N5A+Vm65Y zxI{H$m|^jN89)Pq`l_`)d=9CNYrg{wP?lLqqCqnR`utwvSO5qDU;q#S10p_HPkB=K zz%CFEVIWo@CO5zs0|24QA-H7vI4E00ndu1AHk7 zzu$N*K)`{FSLaHj#S^jP!WAx3ENer=WxN$C=fQ!q0Jp;~3MqPa5FSzr-Y{4ID$<2K zVF2wmy7R<500IJnlrV^yC#_4r~#|M8;k$|0YLy2LTUhN@C zL1>LzUFwSn2@QcHSgtUN$5%e0gNz$aen{brO9e*a55SkznFOont#XYCTD~|>bMXK6 zJHVYeM-HNZ3~Z!XvVV90Rw^;;40HSI2qGnuAB9;hy`3{s_rCvwfo}@4(N}5}`{~dD z>HuJ8t`0K%9Ek{q;tD=tRK%f(3t41z6N=x~@M~;a!h|fl?}2ZmdMwI+`@y|DS`sYq zc34V4_#m#|coUdp31}RIFf0H$00svls5g-?F(()?$RAg{(K-LK;4${Lxxa&;QhBhs z1-td&(=m2eugT$G2B8q3Ce*_@1kj_uec)|AV4xx|Mg8}{1JrY!$*23g02UM9-6kUk zX`bu=lRSSmLNoL8!2ZLJ5FGu^34*}yfJ%mC4 diff --git a/samples/h264SampleFrames/frame-0448.h264 b/samples/h264SampleFrames/frame-0448.h264 index fbfd8c3b020d5f9f645d1caf270ef0b3fdef27d5..b8b3015efee3f6b7417b48718c2f331d92714727 100644 GIT binary patch literal 1239 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 RXf%;KkWperL>+&C@qmoxzajtt diff --git a/samples/h264SampleFrames/frame-0449.h264 b/samples/h264SampleFrames/frame-0449.h264 index 9ecab2076e52a3d7b99ffdc5dc40c8b606da3675..1a43e3ffe4e3de501535065b064668444a984879 100644 GIT binary patch literal 1690 zcmV;L24(pG0003AFaQ7nL7Lziyaj^93oz&aA$K(FB2tefmHiA5-^9QR8megidi1`c zEUk<-06cKTw%sfLzrZ@W+S-42(+mVX*K~gT3bJ$3AAWE!Q8%Bjzu!{LBs%d8ykdvE$01yFiW%f-)RNP1Y8@&h& zAzIqk3dn^KAszpv@U$ffiw%JYBftTN*upHbb%H#ae()MKOaj|unmS1%;26jRQjlT^ zl!XSES{{ZnBGM#)swq1pZh3$JAbtP>4?qARY5)QONuD48z&!hhQE`C)!ph(XQ@{zl zM=(@R9^(rksNey5zyO7UGYR35p8L}HsHvG_I{0epUIqZ*5X)J~J>BpAh!&(M00;%E zZvxhP{`QC)h6R`PE~x|x70}&+4}d@jX#n#KI)%&ZO{1^<#sCGtF6!Lm4}&`=aT)*t z0SCGO9B*VpRsY;00s}1{gV`uaaTQa1O;_~F*i+pQs8hPOE&-i;7TYs zfE^G}iTi%{J`xj_zt`6A0}vjGL_-PrKq36`=(U&3CFZeP;JBx&!SGXn2Pz(&ev(yq znUQxwgrpe$JO*qk=$+mGVJHwL!VYClbV9HLb$|(@?7mQ52tq;tpc@C{JjgE+;U}Lk zE0X7GH(mfwX+YR2>T@6Upvbr>3}%i%-_Ltw2FuI}YsKMP-m$8y|9|P;PybU*BQ1-f z^W3H^#U}y7Z%T>&I*?lgT1=ujd;jdJk@#@uV{N zphkk=pcIA!;ZFAh06G$}NGi21rQh$gKwv~SIBKkWsPg~XBmiIwHh?fsOquP!zq}>j zKTT*md@APAv^ z68WH@kr!)yYk#}|0RY!PFbJxF>?c};eUO{ifB+B=Pyra=a^~?mRM=8}!~h6fY5{L9 zkR(HM{hLF$dyw-R z+MEU_Jbd}T+S{NsZ0mdV*ZjU?1VcC?kKh{+8^-q(r5-B&0|Mr61GOUUs3#9={1^a3 zt25BD{on&Abn$&gK&0M+_wWosBKtu+PZ&e}cLn7~0FSCE?^JriGvkC~^BY&*F#J#j z05Q2r$pjPlL*dLsW8?n(004li695L9X)q0>k|qDT^K5V2Uu#zJFalwC011H$i3rTD zFZo8O9smiEjE;veL4C%FHYcU;%(hxCXBPcrX9}0YLyciLL>wz#EJJ00BV&6+&x(YVZ#6{fPnyL?4R@UZW%}DZA|a437yFlRAe6KR1Ft|ia9cr*d^3KwK0g3XFTlnT zF!Vv;6F>vn63J0!J3l|*0ciiwRiIPGU(|c)BuV^w2=+hR!Gc(oKk8QuINhaVO7w5$E6g z!E&sLjO1@%Mr#wRUX=g;xD@>9$*21Qp&fA+LdfrX>%h!>hrj|R9Do)9IKF_KaeN$) zz*;3SSanCgPN5WKAOnI+uXqj2k+BITJAu?Kf}}hb-ON{f0Qm6N37Hkz^u_jhLT*Ly zuSoST$BtwV!XYDh@CpC`fDKYW=Fb2bv+Mu%{0*SL4Q<{882;`6K0SP8@2)^ZO0Kzv zmF*>8_O?RKq-G{2{`LZzSt4RYfBgmo_2MeE6U#syaW2V6EHmJpcdz literal 1555 zcmV+u2JHC&0003AFaQ7nL7KoCyaj@YA%zIw1J#eQBbAJRArD|O{K|mNmkB7R{n_xu zc-B9sPAc%8iIMd$;w&masKI~$fpuq!BNKl=Y~hV!ioT>*2(sV35nOa}Dd#16VHgNC zUtbHVs#T}|`D=C@LE!VN4)?%HVa6SF*1{a!`$88U$13hd3QDuTV9mk7;<@f)|9a#= zXozGiz{yf+I29S~^n%EbzmR*o$5#+02VO;sPHi074WKDA7P}?D(Wn~~#onlV+4z< z8WM&L{@;KfId^I&HV#+1F62}Mu=U@O}3U&}GE}cOa{?#HAzY`Rn-~Pn1`Uhc@ z5dttsJ~QB*fCSs?3snVZOGt;{3@(MS{g$$%nLu?^0mg@10B`^h0RUnHYq^N{;EhA4 zJ3)jCULu*(NTcr#01h)a%#md7&|9akS$^k(37(Lf-~A>{KmEfH3==sdx1H|o^K2QO28oKd-3@irF0it=V z(@;i|pj@B{cmN0oG>8B;Gqu+P2L^lZE+Fq_@R*z`|GWSKpkW0WA33316%&AjOb6Zu z8x-&mo%`Y9x6f4l;{X8xAORE@4muFq!=H%;%HbFRH$VUY0YLz6Ca?yt0C+F}00BV& zIf<+RtH2wK0003&02M-O0BZ0K@%@Pc2t*%?31CFuBpF8vP+bxG+yjX^SRI73S{y(> z7iK~G8#@S?Oec;1Fo+OJUJvjc!|D#Uo7rp+G6HdYNHY>7Ca{U10c{J}_n7T_fCb0? zfPV3IO~4RFtY<4nfZ3};=ulKf{|6%2XE4421KoS`SpH_2V=iWibTS!U;Ez4G?*}DhOk(qU0`o*SCF$Sa?ifa$I@-br z>xiz6|a@A-}AvGFac2UC8#L( zj!YsS9M{FDf_MRU0W2?|W&1%F+2slFCdVJA$HgLhzrrCX%mRP_AOjSTF|)uV9a{6h zBWy0h+jA5+$NPW^J6|&M{m2OkRbMdDov%~H;?Em^^IX=o-D`*tov(SBkP|F^%u FP{0b;qdWir diff --git a/samples/h264SampleFrames/frame-0450.h264 b/samples/h264SampleFrames/frame-0450.h264 index 554d5b32a1c5b02fb6f2a285641f456067da1bfd..0f83e546059b7aeda3b9bda7be19f8180e7cfd2c 100644 GIT binary patch literal 1253 zcmV z@R#^^5(ve32^U$}?SLQvARYlhdI)vlpwivf(oCT&JpcpD00aY~dH@0eppcRD1!kmM zz`-0Pa)(Tm^W=ny{Y@`|7;bh7P|gB`#lpJPK4EA+eue;p{t}KUes@q@KnZ{`!W4Sn zcMg?F%>BRs6aZ04wvwMrN3YUZ?+m|CbfYR9094`;_QV4sU_iIbjXWwaAWyEH;{akt z0StpyR{}a}5y0>O!NekARE2ADRtp3YXh5W2$Q&Q>MVufqnSw2W-d^~M6f*~t!;vjz z;whm+FnK&V64Chy8!GP%48i&K_MqS+8sxwMz5(_81qB3>$LXOLum3O*6X!x0UK%I> zTCITKG+VT3%|;xI10!=!Kpy;z0APOV!OIu`K$=GCko&+8S_Ixu)5l3MlB*Q}7cvru z8+uf`u5^pZ#93uq4=e!WAy@e043T?KkgKy(t zQ03w_00IIVqyXRtgtv_nqB}AZm5yd8%Wz|8C3+ULryVMYBDG zLITv@mY;q1fB+yPz!6A%H+h`s%+0tHIXLLyX+J^i2r z3<^U^`M*UO=N4~(03Zw^{T+L7ln{9Pa3R5DF9V@S^{(tsg)c}(85~iZ;ao{B4G9KT zJjgJ1empp#(K{3_O2GIFxQYL~-~w4t56vAmQu|CcRR|VX!E_3VBwkn%zyYtW08kJN zH=S6~XdW3n!~g;WfB+ypir4@o8y@f`@f1O&$9QJQ^OVd5LQk6o2?XG9UnFbPO0|WBc@Sqlj$v3J~=adEyZN@O%IOfN&Uk z+whTH=#%no5zib~U*<{+1G2*JuYuqSDzGRkB)I88S*Sk%4V+e(Bq2^aK(-`otO1L_ z22$LZNnE5i+5xBn1!#zG-?+m=A-w00tFnco0^w{s*T_uE8>ZE#JVjB-QYL;{XGu0CWK!E2dTrA7D{; zv+=8`Z-e-$|M%4Z1kiv66mVK)4wgR9Fc9Dfb^rhYK>%(hzy_}XcrX9}0YLyciLe2y zz#EJJ00BV&6+&zPYVZ#E{QL>gAmqUa0}zi$!i(q_5CQF?^fdV5N9=56G zd%Hkk^24?ec`NVU5?fB~-hJ>C1raJ#q><(D+8M{wp&S3FLsC#T{ed{Y*EpzUV<#^K zM8OdyiNc6O&EpFkNHNYd9f^f<|MVy!&=?~jeO0`L|6ZCn0uBL_8No~hJW03#&6Cg* zl(`|d>B_(R1A6MJr|;K>Un=MKj|dZ`1;!kC>vbbH+q?v15SF z2nIj_0#%NJQ?J;636_AMKoWE(R53M_Rei~^v&_MZdeeP41OZurEFt zN==goM02}1v!ILvHH0jt9J?Ucb@zk-AwYn)p5SPRgVM0?C;-7mO+!X_00Ly6t--($ z0e}QPfsVUO>986<1Cjs%i^4$wZAjP&UgIDqhg{iU34QMO&6>gv zgfP+R__M{r34QR?gU|rMUI4tHyQvfa=fFfL4VnTw6ifjk!&==eiH85y8>nlJe0P8U zs}MT)BMbmsFo2U)IGij9JbL&>05$|KK&8Zq;&4jaOW;@pFeDf>mBzQP$v!}??Q_8UWrji47gBa3@6$Fl803Zfh01yL!QSF_U`YCv5|9AjE z7!|>UoiK)8*PvcnN&uUn0003&0B$C@2Co2kFaQ7nK>#_4t^upS8;k$|0YLy2LTi9( z@DBO>{0Y$@jwS$T`pLuRYz|AQ4juIH0OpH~X2l->%%G~- zg(6$?!O&q|Z|3)MW43e(Hq6`ZqKPBZgAXr~XwfZ%A@yw&RyaJDa4CF0rtZJI9Jf2| zdGI6!nI+u`Bj5YmheHE;YIlF~B^A!JfSkOLdz0zYzxy&Z6d&@g#$8K8 z;x7mj;bn&<--rK4f)XU{T>t$+AbeefY%krP)M73ffl>aD)E>}dYtGP<8Lddr?*Jb^ uWgr@aeck|>jgkt0SeVGqa&@F`pWD~DP>O<~i2@2J2of-%cd05Oj&uX{vTfgOAXPx`Uz4z>IfBW0}-g5u|fUqKf zt=V0lB=HJ@5txP+v9PcK03*P#J-Laa+%Vhs&va`Mwk~cl5wLO)Z0f}T$38s&du_`gHqDsCybTg8ItrIh`*A)TSK7BV$96a(q@|o)4 zv}6LO%jQ^PA$T=zRU}lkPl=s#*K&k$mB6%ieT{Arde>{_e5klCm|q))P9In|k(F%~ z+iY(-E~2P>;(o)6A&0p`%_?AplPi01M55g?h3mF16BJ?rPs(%~zhqf}XZ9-4WJ{g9 z)z1e~+D7sq#{pKM9t@jf}jp|GJ5^(Xcn}qz!!1uVvmyjlQ3MULAsPObVlh;hpzNzOnPN zctknlaR=9z{0v-yE6F&1JTjwG3pvTuLy{F zSjD9vRxf#s3~c80nNeBA!&BuWnAf`WmG+u$01X@xTy-|DY|>%47)#(!k6|OzUqGxg zJX%{6HIW2F3R+oe%3JGM$Wyf`h!Sb8c@HEqbhF_@aAky6@-+B)6MVg4qirO4>peF; zZHu>gQxz%dxdHHbz3=mG5W)E)cgXUZSI1el_ty6s-G$+%YwHJ==I~!(O3Lr;V(|?*q z3p{iYZ9$vs1DZ)R9PAc-zasTK)3bvWN*Z?txrIAVRIIFQvEO#bOFWq`5TvKhvb0;- z%^#Bo0_Ph+ zXP0!a-r>I#u=`54yyL99s^`pWyO&Olol{L*+70Tm0TU z(;@=^E+^V$z^+?84S|p0^OKv%@BM z5*ul&+UcrfAD#m~CSOb@ejWQ9Tu!l?XY+N zSJ`(tm=4=_J>uSP&~u-D*!KxRVq{}hvuv`MYVxfAq14#txq0*G(tt=1EL zW3lq>Ky!W#RNLj;w?MgTfT@K9nSjfQj&N`O(%w0a-RN|?$llea$546wodf`+g)=EM z#<@s2TZ>KH&L72*N-`xMMM!N>a#=V&g_lB@`arwI<-5b-99=O7?sVw|m0sTy7x59R zO0w2E`k2>P^|68LsaZ{UyO2-H&DSEDryps2J~kpdFb$xxFYbl!q1T&N0ff(?93}N( z8sn+AV{13YwuqMdN;Ct~k2R2RY1E~aEiMwY92)S=*NDFlh7vfxkv%8U;<*P$`vvQh ze}gqjicS#K@VO2HAS3`G3y9tX^qGW0Q;vr)XW+3K5Ex(O=|MnB+1M`r?lEXk82LfI zoagS%@wc*4w(pXzpjkDu!3TMU(u*szzQX;Rq{Ey?uJdY2>Sev81TJ^BdXAz_!ZAR{ zN!{Y|T{hWS7f=jb>E~}HW?q3SIH%E_ZhvWFJi4;84Xz&puudjN)?`P$6**E7Z+b)x zLm{QgcdWCPS-H%uEh-;=HumKmivW*Q_`;Ju#^$1wLr+@kH{ue5+=s;VK208Id!#0D zVwO4Xjtg`^Rk{zP72?YcdM=17rHH&MUlDQT0#TB?y02mv!zkk*nNZBjYzx!Xek-A3 z5=Ki=im9^S^E3hlkV8BBQB`ZS+Y*LOa*i*j4cNP4)b2Dsd}w?fC<-h%zcaz*d{i5; zHwmeraAWi21)+4blZ;yR{sG@qQKLbS?D_D9wTy=A0ba#VX@Mk39j1LWYp(HvR;zf_ zQ(ff6w?+ZoQ7p&8MO*b-iuOya`xUVRVpmin&d;fqG$y`%l&NhkhDDmGtVpQXhr~!` zZI@-gVDWPoQ+>axX9rAbXrVTH^gLPgI?(+SJvKo}j@$ZH+}3wrR|XR^Dav!LR{kk0 z%r|QMUlfMgQkWP#uq$?rUh+BC{nz>*0t zf@AagrN~0GfUF*cjysd+0~wk?8qa_lSsznbt9hp;=Sntq_wp~E*s(2bf)e1r+R9y9*IEu!j~hHgi@G6Xu0)>P zaC#k~31ysZ%yJChu#)~_k}(T{qysH=zIAFaq-v=-h%XE1@@x+@V3A}GWe zajz(zm7M+YU>!UWpBplbhydTLR;1aM->8H^6BsYsq80WKhY_9nZf<$Y>aVoiF6Y)( zg^+CBinv*y&|;RjA~?G5Q+GUYtqy6$cO6>SfhL}X8=BEpbqizlt~MyJ2g}Ng9#?>k z3+7tA36%?_B#18r9ccgw0is3P#{E3r)OnmM*5<=I?U?%BgD>cNG;~C+ww&;7p;>X*KBa%MsyM!WHxj+*|SL zK-i0xt7l$EH@P+&8anFEP2#D6>XS^1mWWW@H9C1kd67ooZWD-v4tF+2;O!=rWsRmn znoEP}7ltdLu#xPjj@+ydz(vWOh8s%eXG}qAV8`;VrT62FG85PwgjFCGfDkt@S{w3! zsEA9982WCv#g!5gQ@Rke@Ima{l>VvwJ>mFR0f3c#NJcP+|4R(A3CYDd5@E;Q5cCiQ zd3%JL{a|c9Tz5B7&UdLg`HNjlxnC>~ZMj&)9&pMF4sR#cr>M@%aKymzp zZ7W&?u}bKEmdMfd=Af#k1JlP?;!dnif?4j4J_vu z!HT1@;(e_czx=-7?=i0G&j}WYuhV;HQbJGtxI&y`w4fY(+<0KCY*4%+-ZyIgO#^Td zI(4ROx`jghwQR%@>iZuPQd?3-Xd?81Qx0jueaM&_6zZnlxxcWx{3|=t@9+LG1Jvy! z1>n526r=zIO{#N^*^zRJ(uQ3q#RrQ)NF&GaJ+|cF&ppL;=f2-a8Ukmv= zp8ppNIDS)xr@EiS$R~Es|NJQJw@-p;!OW46)8>(G(Rsr_M_nF~V!XcQ zkbz+lw;4Cd7bXmPXmWw`^U46gw4VrOT74uFiX^O^A0X^GZi>3vjazrD3OG($9)c}| zvO5{vJS(U8TL*t)rwSS_Xl|{(17KoR;yGtFZXwuM@bMJ09hKvHf|Jf5;?m%oVTre3 zfen>V&j#Uk#WE-tX>!5K-DW8pkJkf~@;CsZfi}toXPKtm0CCHJ^zw>MT$my$%Zs^d zk`Sa-z=Bm2XLc2Lwz0Uj$3lHy%M!<5_(feUgMegAGOBe1JAAZ(pAIKTxA?qDiEr>; eUyz`S>w2`Y3MjD{5J43RDJc3+@bG&A>;4Z?Yj~9a literal 1948 zcmV;N2V?jE0003AFaQ7nL7M;?yaj1|Od`Yt#DQcM1%Lsd03ZYcAW8NDcBRte%H9|8 z1TK2U@2HQk7L@nrM>0_Xrh7NL54JhUFN2rut4F_@q`+3F-Lk6Z8n z2ryvVX(ZThP8!q^3&H>j!U0ZuK|?(>IY?4mKo86iz;5BZk5^|>J(f~$LhU>WgM-M< zuuXvS4XT{afEj_p)Y)TNh=}YYzyWdK9B^=3w80}3T&ciHPAuny06-8Knsh&sd^X2} z3O9xKJEUYLQ9*Lu!&omc_yAK$V_%UM?YaTWC>jFb(eM89_?w{F!s7=31(TG7iuvi7 z|A0`SW9BZIto?yd0MIKCF@&m{=J%vnvzc*diTVllkHbcM*T5)Pl$)ixF}L@U2-%Ee zBrszT?f_*NnX*~2tysr3sDjXz6Z7}(^a29{1SYnI2$Ofo53fV@7y%tHp_ke0lsPlffu(6{^z);TL*xFtvpSYrgJ{-+^Q#YlcBcm#^OdED2sD zFs)_opePEFkMfrn3Az8=G!4lTVi{ezeQs55LGX|0R*fB+yW3c!G+7PRJc=QW*~ z4K=g?0sx>G2kN>8To)9O00;mG1OTv*aS;JdN>uh6TS@@2vKppU47LkzY zGKL?n0+9$hasUiP2jH0*Bmgrw;6WyTxG=P)0Ae=p#sU-9PzH~s@L~jjh$SdwE*2T) z3_A({{^5l7H~?i(J$Hk10&s)kX{@v)K+cb#KPCVm1}WO>601yWiA;XZ` zTx_F<>4Fm|zvX~|twsZSPzC6n@EQP6;9*2eOZ@Fx*-d6uulEo&A~qMP#?=>t;Xoh+ zcla=Yrz__W{tZ0~Az*m+@$izpjrsxGE;4A+biW27L8!2}fT&QM0`T0RJO5q<^-=p+ z^RMIpK1Bq0mnNg^_yag0?uu%{9&_ZSaDN8DKtEE=hAE*Hu41HQKzI%ChE@cOb3Q1$ z&I|9^l`$SP5}xwTUl|Jn`a=(afOk2$_JV!Af|LV3?N*)5N=^q}mzyJ^z1QcjB!U9%&p$uh`0zjfFwjde-v>Xhr zdr$ZBV=G;l5S;%@fs6>_YYHL@Cm3OHcC8ONE3>!(5D!hpStVNyF9aDcVzKeYQT_C( zDyp{s;19V$X8!ZZB$xmDPgqW2P}FMlz6LO$oGu_PG63V_|LRXc18%y=1NZ|9QrVnb z0)`iAu@+u2Gn}}>Vq3U`ffO(R>e>bb+;Ljpo&Dlu0G8@1lALDu1&jbbAk#+@Fqy~2 z{VW9sMosfXjUX{m7oL43P*wedL_-&Nau2rC?^wl1UD6(iZf|{x$nm|B@CZU2Rzf-n zlFL8!jKIoxB6$Qs|G(#e&k$_NhU-&~{{k2SZh!y)0YLz6Ccp--0C+F}00BV&If<|V ztH2wK0003&02M-P0BZ0AT@nmU-~u-@$WyL*Ux6+JvILk|SXuxWm}@OT3D!Wa*t|$$ zl};pV5J_|L9q<8$m8S(IfDCVbbgNP~XT(62d)CB*k#H6-Xm(`?KMa2dKM=hLVGs2& zp$N^jgyCX!1Eav4gb9Q3Q@S#qMi62E4%YdEA$2H-Gyqy&U80YJa! zcfrTU{ZPN*U;slzl58FL%8L*4Yk-44enxw;f9ivCxg$y{zwb~0Dio&h3D`3g8=wFn z5&r-`&EUA3CZU1}`Njolx*wFBYX0^m$;OTk7R2c9{`wH{_fP{MX0Xie zt?ntQ!FB3~HVqwERG{EP!c}_@xk~*!3Gj*#C-T@~3EL9UWLm#?!K8peAW}>$m->M` iFeF5Z=p*raTff3$8Tm>9Ff>#IW6NTXzwG*OegzmjB3m{9 diff --git a/samples/h264SampleFrames/frame-0452.h264 b/samples/h264SampleFrames/frame-0452.h264 index 974b4634f8ed70d27972b2269bf0cb242345c5c9..2835b5ce1c45534a4c2808238dcb0624bfda8174 100644 GIT binary patch literal 2793 zcmVp|KQ?vI}iW-rB9Tr zy#emSSj_>x#Z+qH9ss6kNa2`P*JwCioB^`6qrc#nO)x&Yacb28{-1=G$R@-4IlrJc_3qK}o&*gewx({< z18Tu4_y|{>@?cx|CDG$!D67*EZNeQ|fd5ani!iaM4?TVOE91U*0lvS+*M0^4#Y_(J z998@W_wrMH0la(mjP-Fv;fZRX1Az#otJ0f#;kC+#;|YUnur1sJGOqE@?&UVD55ME= z*$m074ZPvD+8p`-$~RaZ4l%8EAMxn+^IQJDxrOiq zG~I+{^zfjp0e-#%e>^9@RnPy@;k6f_ikG3iAjp3Ecm3*RtFB&=uAf8i{?2t?ICk)B zufzYs91X;drCoo@XFvZ36RFsL|K%!g1R&(4Le~wZ!u8#-{{EPwX8cW=rUA*o0RRDj zL!8&);Ckc3>yB^k8GryF5CWPySOAbfVEu?HO1(o*(c-hr0B7IUcF+L;0f>GCXU4#e zaJ*2!NB|I}iTu(UlKFj7I460f^I~>5k2y6-sL=x`|6n!5#9S(k3*Nbfb;|31iS$qe_$>B$pd{bKVO@)=TD5o ztyAaon?JyB#F16%v1}PykONk(LiSA@IYb3K_N4an3)g?oV%Jz7{*6c7^!~lzz7)FW z206>EpNRd#@vlSzjrYmD`z&Wb06;JSB(R#g3a{^}_B|~}AR4#*kN8T6F~9&oAO@MU z!px=oI=$2fpceR3PgQ&Gbw8T0Hj)2y9rq2tUtu1Wh5f+K-^jWS5*Oj{=e?-ix~IPG ze|Oei!28%MUvzKi53}DH0rS>E1yxVuLe(nv;ikE`2%h;j@A3bAQ_<~*`8fbo?DJjj z{`W|o_w9MlxDRsv348$^e_$>6H`8)Je!n+qI#B$qb!-0$WM8v$z_yf~YW7KX0Q4QF z>)q&!eyMw)1Gimv|Nik8bBEs7+5_)}_Nu_xDg)|w+?(IHGT#}nd!ed&oOAudb9B6X zC+q1k75+ zfNKT%*7c|ZyurW#L9J){00IFYe&7X)2n-CDGCK_so=7P1(=j*7Jg`TjvJ17nT?L`z$> zh%rkbn+{1{bJbnG8(aOtit6}(@ba=;zMs{2$MB{tPr;5vJGb(jxM{BJ0Tb7z{>Qe~ zNB#9kwfAmsK*!(*u6JAJt?Wm4?GWzZG99{ihue%5?Hzod{qGT#*buY^$ltZrH~;=ewds1B zg6DF-pZD13yb->ibj|mtZnX9xbT14g7@@AyaS=PcDR&-&C|*ct2( zp7_iG)~jEXp5AZ+9`H8DW558QMV6TWQ}^cgAMgjnMMNg|pZeSWDEtB}+phid^na}W zAk#0Oz}B504(etGpT26ad&Xcu|7iCxhf&*jvG}_vuK(Z8;gRdFfAv7GO5o#s>0SK! z|83fyv;V;#@aos=4*XvN->Sp0d;gdJf+60*y0sPNsZc2>r|CjyAV~P2ysFAxzoqn(YC%v+rhfIIsV{%Fh4-zB4#Awcv&~! z>kjY$5FWI006?sTH^KNgubT@W>fw&-P5{DU7>pwYokLs~Ti`Hr!5~FRa#W{4ai~Uz zKoG&OLI4K`1+<6;oFPIYBNUYzzwZDL7%0)MS%E}KJgTj#3^i~6jQN6B3%(hhz73!crX9} z0YLyciJ}3kz#EJJ00BV&6+&o$YVZVHe?OmrIYE3DiV97T0qD@N=lsn80Q&MXj*A&8 z5k@a3>i_NZt6+imbaSg<@-YwqttL}DFr)vR?^#HH)v02Nwfmp-&xX7WvmxImOZuco z1V@?2!Fs;A5Hvj@j#F?~bgKY=HZ~D*p^V$l4o=9Ls+XUqcfh@K{ vh>eyI5A<6y4rn?eve^&6i)>3OL`;Xduu?c5<*GrR-^+~wyMi{Mx?Tks{avp= literal 1028 zcmV+f1pE5{0003AFaQ7nL7N~NyajI*5)8x^tSnc7)dv7WfVw&Pw#Ts&)dxXp2#87BBJQafApvV9=wrE>-RAul89Nz?0N{@%|FlsfB=95fB@jZ za!0n8()hqG5D#G>Rv<1jz%UF43sDWih!Di>O`c=80DK4;O7CEpq4sk0cs08K5CC^W zfc_qdzu$OTfdYlESB)tRkxsX72;~t7k!uS(C(wyDz8E!NHL#l^3R{_sjOav97+3&Q z{~@BB3)5RJyheZkK(H8~ub&?QEsbOYKoo!wgO+gS6*65Hg+5ZH2Z4rThm!?eR1>8w zkqM>=egGH{=Z2#}hD*i|IoSmBr;tD#8fU-@e;xbVr;h;|gIc1dk02lb5JGsdk#`|9WH76)0f93>VSr_Ae~g*W!AKmq0XIMZ z00BV&ZYIbEuK;*30003&06B@W0jt0pi~s-uK>!s(Y=CO;1YCbVpMg0+d=`oca01LU zAys(Rys(w~K<_=o^3=Y$B?z)pTD4$qhYwI8?t`Qh#WNyfaFo&->@dB>W$zW;%ph0?9p z%Mbt11f5GXO(lu_r-b%h3J61>)d+0^j-lLWK0pW-G$@RCU_1~OGXSjw3zlhpseix= zLy2do&UStMhQ`c$V&-Oi1nLGPJ7afimH-dZ-C<-ozu$k$`nv_f1p@bd@}E|G=F&jd yvB>OHjQIybJ1mhH0Hx`{MRY#s7iFLSP|`Fkm_K2*f{FA$Jvk}27qrLG$Q diff --git a/samples/h264SampleFrames/frame-0453.h264 b/samples/h264SampleFrames/frame-0453.h264 index a0684869a9c60a2b0c59a146b134bfab2454103c..42419ec4fc341fadab774515bffb617b85747fe8 100644 GIT binary patch literal 1387 zcmV-x1(f;#0003AFaQ7nL7G4syagX9Sb4gDSRUU}*TEgU!U9SomOR}+EDv{&0RSpL zKp}N~zRB7EI2lX;FvdeS?7nwa9vOfkfO3avLnyfwK5>iy3P@~4Qrd||HZ&;s7My?p zKy&~bw?VEv-WX!WmVIHC)^1|C_1Dd~>Te-hB7gV{9Rw~w6@ntRv-J602l#I&Jm$GU`RoK?OEcS-~b>J065{W zW%uv4&^c+4fOulR-tb8tZlD$inn5-96OhSRd*{_)j5gYzAq5D>3F1 z!L$S&T@Ui-E*nDd*HR>$(|`cCU~iUl)(K_~h$q;gSS$=o02|;PU%=o{c^o~66OBIC zum3O*H_n7Cr~%vtJSq6FY=N8!9|t0r(@;%!|KR)t0Ca2thd@rcA$&Gj(`Y=EEM0_A zStu=|fRXz4^%(}3H;|~kTtWK`jKzI8B_s4Sr|iFCflI`MBX$Q1?ajE z0ik^8_EB3r)G6U;3;{pF04OCLy?$gh7GWoNDVTl$5Ew6{_Sa(Rv%+lC{2zb}qHa7( zWv+_hA*^DT3&L?$sY6W{wLmBUpa%~l|F~(9g^X@T|K0+i0n`zAB&C%qo*x>=3<5|1 z*w~0Q0p)Mcyifoq00wzr40nwJ?~KxMzzhIWLw><6X@F7k=YR*j?(qx7qIh3Cu7eMN z01yEXC2sS^2J=|4D3|B|xBv`6cjQtpW_fBL*Xw-Akm4#iU00-juT?+(CNPQ(pk8K% z&ZIsd{InntUNQy>fKi~70%XKwB&0SlXYZ5@;6dtI`jVHDIyx|a$=z9)7-)(0$$%nY z6nrliGmrBWw;uwaE|o)TDn zCLNSH;e;#9S_>j?Tv31jXaEKSoz@z}s^f9-j=(+`O|_=I|G)R@>-@+H4R-e~zwPz4 zO^4wC%HTm+I$BO~Fy6&Hfy0bDRF1C4cE127P{6KY1jD)2#ux~nXMrz*VsHp#SlyZ2 zwpTJ{*MI;Z9$+CrSDXu)p#49f_)-r%U<@k#fOGoAK;&-^|N6v+F3r+&5qux{fDW(^ zz($?2x(ysmNB{r`BEyP@--&<#fFL+oFz*ftIV(n^EDQ`c_oQ?*5CR;40003&0B$Cb z2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM@C5yWGX$UmjRi;YFu|_-zyPrw=er;^ z34OxCk$+~eMjxJ+;G`%D#E61n#J~u4&qDMqm0mc49n z*-?xYrBCo|*nCha2yio4)htc}B!2t>66upNWY|8-#IBAGu;i@$RSq2c-v5Z!2HR(W zAmWv>%0ir`|3D&XsMg7&U`{WH9w1!O1Yv8P%Rl+U7qO{0;35^1k9?|rH4l1rjdQ~K zZxj>^yT6P5;jiB`**Y$tV`RgAq^+Z&$(lc+B0y-vc*J?sNX~4I3U~!cmt$Kj9C;X6k>}?1NQa-l`%0xxhf} zNSj4h&HwGrQ6|WTV#?=0HW;-ZfhIj}XH9*Xfu=M^;#98$G@^R5s~O-1I>*S4y8t1+ tPW~=_*_ssp-k=5i(|#W2OtcIc4U8%Z5cg{BQ4(O#{qWuf-+wTFz@t8CU(5gi literal 1124 zcmV-q1e^N+0003AFaQ7nL7PAtyajJTLsGm*7lmK|fPsg`XIP0s0e(6sv(JDSC>l2I zn0Z@nNT+BhW&j@630Uxg@s{iW+wuT{>ZWf2004j;{<{DO1L<+i*ghY?kuRJI0We_< zm=Fx{0RRRJz$@G{n;RE{Uiw^&04XdR@OGikwU_#!2Mxdg2m}BWuq9tifkTA_8W)@1 zVsnVRC4oiN*NHpm00aQIae#_)wLJ?k5Wyq~(|BNjD5QQMLr9&ULa6dBxBvkFU@$a8 zjtQK$3LP>VI8)p(3jhFs3#gC;8vp?S-!Cbc1Yh0&@Dv0R*$|Va%mUlOX(akIE#L=% zSE7pzBaH~VW(EovfCe03ONz3#!1l?l-*|ukfCUSybNCXmr|Xx11z>;h0)T+8QEOF5 zuvqY89|mv`SU>%1F*8s~A*MyO;hX?bqHJ22*&!hjTY$mX3A}~lQMVSKIItf`YZ*ITI1+ogTiBMexT&87n>3*1=&HC_+#DU+!i`gCMR?aXrEWPy!lZ z0>YOGtfx<>|BGkd2pmIBiwJK}ossQ+;awVE1foOXFk}eC21a}VfB=9?s0Aoln3@n4 zzqX43i;NtBU8i9l*gYTjzz`wT0|*ipRk8wR-bVq{@FNL6NGP5GiXw`%@iRlA6!!(x zANzm+5Cu34A#~FPPq;6%8HIozf9?SX0m*P!jEwPJ1F|s=F7RUrRLVLS`2(~ob}WD3 z00;fOfXPq2Wd*!Y$T?MOYut zN351#+;0E?KqNg91Br;DSogM8#c%vT7*GHZ2vY`wXGh>}f)W*x|7ZXL0DgcF0e~Rp zjLXr9TpJ(Ugaa5r06>uk&V`Qwy?6@X1l<4t0YLz6CeQ}20C+F}00BV&If=9ZtH2wK z0003&02M-Q0BZ0A{Gi4N%n(QbG-wqHxRS6#zkC1{2w$tZ%oRt;kgyhuAES6N#F#dR29Hi0!byhtR%y4SqvR#KX2g3 zJq`sUAr2cpDISSwuU~INi3#0`{J`|={mR9FuRZ=A>+b{mfxv)JIOQf;;fg9%{_;&4 zMw=r>Fef1b!~&6?0Pkruna4X$SlAk51xd#%I}?Y#EKQA1F?NY_!n$t71e>SyJD&#X zpElV%T|Wjx1wh3IbB3ZtFZl?9U;rQ_00IR05&#@N;|K?VDp3XTmOhIYz)n^q9EyN( z-FzDUV2a%BSHQhIXWcyN`12`YY8bThO79%-*l6;gNmKq3ao q|2C}MGi3^A>I}B7k}AHrhDHpzD-1de>)W8wV%+%r56>5K@F>8HlE`%c diff --git a/samples/h264SampleFrames/frame-0454.h264 b/samples/h264SampleFrames/frame-0454.h264 index 335b6b3035376981341c511fb4908c2e465fc5cd..faa9986117c9843d2cb4d3b124245b4f373646f6 100644 GIT binary patch literal 1171 zcmV;E1Z?{N0003AFaQ7nL7HG1yahKwgHcC@b8+g?m9SHXE#feKAT^|M)zPn~0 zrzy%?>3mdF%&~;aodtjvD&0O1{Qe~V(lH$Z*_273b9 zL0wgwlPGKda{ycmc9bg(honubKmZ^BvH<3$4(t2eMi6hygG&_0%Dw;KCY~F`!v30^(?BQgt+c z`|Tl($*e8qAuH?uVIVLp;9);#uaSR#@@xQUX8_9(Rt*WN(TqC(i!}2=PE6QrZj&j}y(rE@%EHfC4}!AP^`b;Rhw;!jdVpJ`E6X06~;r%ZA%dV5cQ6; zIr+Q*0RU2#0Mlh1G}L*2q4MxfUxS@YXA1HBez26@*%xdmemI6bd00;@e+87lZsIA>DGzY)| zvt-cN!PAHkpVpD4C(1{5cy=HuxL^VLj0>s|RNOxS_yQe(0003&0B$Cj2Co2kFaQ7n zK>#_4rU9$K8;k$|0YLy2LTP|%@C5wufGIFTfDrFQV3qdPN(CasKpv1m(p1P1@e+px zThCk=8Ufe}6aW=Kb!svY=}2JXkB|RPVgX5E8M{ul-#GM9FMyYeY$#RS0&#pG3&e;J z7qQ*~N3HV!9B6Umw$G4RnSq%o7+6aHf-gKA3!afO1LA&sj6eWH;jEzGk6wv}L!kl$ zg-3?G7tXTAivCx?iXq)wE@k`p65>3>t>i_Z;_!%i=tp}0_- ziH|4=8?k+}>Qe@7q~e?yX9YYE{);V_;2^|cAm~wG0K^bp4ZWS?A2_)zfCr3VY*FB0 z!O7`B$z|^MmskZ z03ZMisFcu6=Q{I-#-ac0@bHc^M-zBu_iW0Dzzjx1OypNHkfrbpz)cgHDIQI3vYMQj z00;s#RvO7Z1)%lkfq>T$gs)o#Ntzi*GNw4-LY(8z_JM`OXE7agm!D&T1lNKdZ}I>P z0fk@ykY5D|6=$S4kQxd1sbBGe`iemB1sDKR0pd@HRjYn2HfoqNPXGudpa2j%RK0)z zK~Mk$4(b4eIltEOBo;Hk0RRDj!zR4$+chi$3I^`3UcpKZ@U|R+0TSLLsxWwT23`OW03;%f2hkQ+iJ|WY{}%H-kE-ze03Z;|0%B}7#*~A?BV2l> z004j(00;qqJa$-WpMZx5fPPe~Bh-NrrZI%N0U*IbKmCgyMD4^aUBQ4X5HcVspscD% zQ5LwFkm`UY=l}o#K>%(h*aoivcrX9}0YLyciM9c&z#EJJ00BV&6+&%*YVZX7@PH{W ztfUYCy0(u*F};7al0Z@{K+7OBNCX9V!!omQnIN=TC!V;t)y!f50}$WC~qQFi<0SG`Dj3)pN!F@$bh=!K! z07OHDn%i7b*nP@V|78$4PXw3_D82A-OLQI&B@}OHH{=0=hDAZaKcA}_O0RYQ4-*N8 zFNOjF1!ZHxUuVpbk?tSwVPF88u|~10$Gi=X6YNA%gOKyUCrp`%az0c*FkW0eG|MEy zN*Fqdz_Y+un)l#-8nRCN%HZLV!@hm@U`{WIb!brh3BgaL8U)3m7DOJSoUtt+Q=#N6 zR!2U!6Afj0TRaxSd-k8_|Nj8J%Dg|^yc<|Fu{nn{`r-%?7B5iL9=wp;ZfL#%*hQ2? zu`6e#AH0Vc1A@|faQ~0_emqOW1VSQ#9w*3kOd{OYLS)VI%kx9bzra=qa~Lc^z9a5m zya%6_2mm!4tv+gSrC>w+OfFMalWoyOd1*K$*}>d_ACK5?0SAFRzFEE?NEKBwjEL{L wPQ@@|%0K^?_%-l=mj{3r$U1xXVQ5S0heQ`P|FZTje*gH6zfYy_1N>Xd;G?JdP5=M^ diff --git a/samples/h264SampleFrames/frame-0455.h264 b/samples/h264SampleFrames/frame-0455.h264 index da4175aff8439d0de97ffb0a7569c785bfbdd28b..6d572836ac316906ee8f088e98cd0c43765ea906 100644 GIT binary patch literal 1055 zcmV+)1mODs0003AFaQ7nL7IRXyahKwV%OC4Nx%M0Vb1^z+i#TI_y7U`ya43{VR3!LMQ%E)9cse@IwvG!AcqUBy>Fy6Xg?z z&-Abm>56(e)17Vx`~ZL$qY`49X3M^U*ZaT#pbm6A@(NiXmKh)== z4$0S3q`gj)i_E!;H->-gG4YcC0RY{W06+nOT_ZwDBIIBvZE1WDZbX1^ZtBC9Far;i zZkykD1U&`bP{T#uQsh)8+W;~`j?I))e&_%W*?$5LYnf5JH0w?ih7_JR##I_(;R<4}o>2m%o?@-~b3109no$5W1Sa zr>5lU?AW3qCHV2Y#1H^OI0fK8y9wFStQ*+bSD7FImCzvKVjbIqG@L_csN)ub3pCVj2Pl9;)uQT|66}r|1wZm9hbZ5_&frLoCqDH`jvtu zVEh2lPH@M8*ZNQ|C(c*~bN~SX4CPn|FHyVg0q_`h9SHN*mt;^W_2USFy=W-LEML@X zya5JAjk$lz~rp2AK8-RueEmc9@C zzyqWJ{0QUvRUna-#1!^^HFZ(&fA53%(hpa!o1 zcrX9}0YLyciKqdqz#EJJ00BV&6+&tNYVZX7e_;SZ5(FZ`7%Rl+h6WS_F)MMfy69%V$nZ~g@4XrLC9{__=l%DAQROc1MEUj~2I&wqlqK!E z0&@rgF$M@=ap(a82S7m^v;-6Xd_ZFSanjf7@wGpLfIfUWw{WXBoeFqoOp=5{0>)qj z4r$N>vYzs;;7Zq~g6-TXarXhi<(M(u`SJJv2f&>0kRc)DTR(~g?$r3(s`vNe4N0JD ZL6#bF=tRKSqfAn8{hUj&fm4(3>i&lV)&l?l literal 877 zcmV-z1Csmz0003AFaQ7nL7RXYyag{oV;x#nbGhtnGf8*ibBeSnA-2LOaH z7a0Hq7$K%0CzZrsn?%~TfCL(a1iB@@sZv624Enn0Ni;ABD^P(VP=DN*OaV+1#IS5p zqr10&PM{bg3H2Mi#?JqEz(4>XSfOvS2gT%emZ72B!!U*bE7=%zO=mKKv#8cs9ezLn zAQl1!=Q14EG+ts-cw4770jd&0Dxno1_f*P zTpj?7Bg(~tHHwD^nkykAb3g_eD-03IVY&j6!T=I_j?){!lA!QOu!IOKb`uT3uA{)hnpU?p!> z@+P!;$M2vG#<&>T;doheyI9xYgum?hoEcrnSup?o>xZY zB6RCaUXf1hpb8WJ2jB=GgDEX6VW!CzbVlt!Q~)Z-Wq~zC!c_G@6&K(FMJ$KrE8fM* zzyLr14>t`E*`NRj2Lq8~E+Y;^T@|fe_61LI0F-6G;Ds>%*4zvL=oCdn@jSRcJdZnq zlv{5R4M?K4alrTpD74zUTpz)_m3`o45Dqn2<97vG>z_j|KnHmM0L%?StOZP+_y4>R zhA^aI0+3maAff_#%lHCrfB*miK>%(h;0CV%crX9}0YLyciMRo)z#EJJ00BV&6+&(R zYVZX7e_;SZ5(FZ`7;&IRg$e@866h*fkcqr{$>A6ikU$WG1LK1n0Y^!-9tm3#W8)~k zAVG}#ew=>BcrFM*?~Ozc1hJXu!HccFFN=ThkLu6A9n1dR1P28)81UPZ{03J3hyM$J zO@2lQKEJ2c<3BtB)?~6nl~4aY;RVnXU0DCVy8?3v0z4s$82}(dPz){Jfdv2FLm1Aj zc+722?}5)YU~LCHGpVHrh6RdX1P*Gzdn diff --git a/samples/h264SampleFrames/frame-0456.h264 b/samples/h264SampleFrames/frame-0456.h264 index 4fc0f660d26a079a59d897445442a6a1ae6e07b8..d564031f73ca928179fef9b572786d03c78ce67f 100644 GIT binary patch literal 1511 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 literal 895 zcmV-_1AzPh0003AFaQ7nL7TuDyag{oVH{zUARwZNw}{zmNhq#G?;98Z2n88Y z02&)6TbY9hdDDxQt6CRK60AZYwyP<-JWE)0c zg+%lK1O=r4DY6J(>%c&!iXhUaOp6`1K%`i&!BU_A;7Mjv_z$Wd&b8vxFBlREKpeDD zZSlc7D}=BF-2eaqK>%(h@CL5{crX9}0YLyciM#=;z#EJJ00BV&6+&+SYVZY{U4{an zfHE*4zyirvOBFW&?G@qBUz`x^`fNAXaAI3NUQAd65JLcg>kkVZf35x*SLilV)H#s=%HptJG8 z5K#J$0g&2rEw4~8h!jyEUw$PiISO6h!a18@3V^f0cT?~nFebwRkwkzC1V8!7WU9d> zoJ?f^0w9KD0p^=Ln0gSyGXpGVpi3eOWm5m+fB#I_k+yGU%-H+5U!!kY+}Y^V^E>8x zT1FVE=l^q0|Np_yog4>c)j=q9tem2D%huf#>7kdt^bo z7`*ww0*p}SfhXg^jnf1z;@`9G_V#S>6Ktdi!0t{g`=5RP2n0Ao_eC*E1c^8b_&XO5(--3Tg4zxh`cmQewf6vf*h%C^K04`?|-njq&kO0m} zSk;+E01N5$DNH6F|No<)09610Knp-5vH(^=saK4l6)u0Z1&5n1Diu+GsK%;~{)7Hj VeY|NKroq&k@Oni^Stgoa``_r#e4hXS diff --git a/samples/h264SampleFrames/frame-0458.h264 b/samples/h264SampleFrames/frame-0458.h264 index 4903e69bbaf6b1a32195f60b35b4dfa4aa99eea1..0cbdd5fa4a9367c62a537f112f556578855a4976 100644 GIT binary patch literal 1127 zcmV-t1ep5(0003AFaQ7nL7LziyahKwV^`Fa{Kuiy7yk%=h!k!B4md;sg2(xXfl?z% z%Etf$X=af76S>Lg0}dlnRNC_}dkmsm!Yz?3Pz3;_C-5R+$i-Bxqz)0~C9gM4xaw~q zS|a}eflxx^0ac8uQK0K0dl3xl*9(}7>!A!ya03a}4$-``RE}c9k%_x2V zGKsj+Eta|~god$-TrUaEb5aU;y{Z8~1pqiCkN(l7Miw!-5C3=yfCo@T;DXpxntFU| z954wW17l(!)CZNnKJh>RoB$c+fH~eY3%)f;*8ng9O%3}5wWa|_%boxp_q)U|7K!0} z^12K@002M)LF;#(G&`EbiA2A@{lEZb1N$U^+cV2a2ESY8OotJ3mDPG*tHZTF{$HCz zBJ&?G=vufx83P4CD8NbqGGam!QX2>}0vA%()b!k))tem=JQg1S2F%2`q!{(`1}-0o zg8&9Z)&j$?JEc-bez0JLW}XsQbtWE^IpKsW%vud1Z(LEo|7ZXV2Rp1aiB-m9;~l+d zhMa}YXDJ*o;e^{-Yv23-f7<^t0)t(>%fEZ|wN2psAQ4;$D@V*p%_1GxuaG!#hiZ}4 z*8bVx1j-l{%|MucIyl1t6YTH`TL^^k6$pzTvip|F=1kkb01yu_5P&Pr1QdQVc+83;uR8p>!Er zLBzv9;({2fAqg64s!8?Lr4dSYS9UXWAqn5c-din+$_a<`c%4+8FD(l|CaTCrL_VfL zMraDt!UXE$u>+z3%On`2@-gfsne`Bee1ir85Us87j|ZkQm;kq|brD|DmD1EQztzKD tAk!F0u~Pa9VkFSKcPt*F1H%CzfMf<5N|clgI1l<*AN03_{+0**E%39H-*x~1 literal 851 zcmV-Z1FZZ20003AFaQ7nL7U(jyag{oVx+xFm(;Yc5(VK{03bny#wFC7&JXRwy1HWU z3~+dxS>fG1czG)0gP;LdVJQz7tmT#g#JzxmYJj=~0ssU7+o`YufRFd$)DjDzxig76 znji^?NtdA_ju*P#XcyYmumgk6q8-N8im}UMfB-_C1A5bAsu?Iy9SJ}t?=l%kEf%jp znprt{fB=A2AO-^SWoz@pvqEjgVFh%c_7K|CSMC4=3>StVgI4(``TuD58pLD0Rfue>?&Z)QP`zJvunJ ze-cj#N&rs0!Tqv#dYj+?V-PfV+cJt3kh5Z8`+7iA&dGskgsa5)7%xEe5>T1Hd0)RKa{>rwgwC*}wqY2xDJjk&ze54rBNMh8R?F zbZ3LcI1wpLf4~4BcmM(cF)|Gb8_oa#Kok~1C^9GJ6Xd`{zXw<`l;X>A!$>CW_kpP* zFafr{M2Yd#ycLHi?qsa9h51K-03Z?;*cBa$MW;@DCAx0`1$YAvCk7yZ4!zgp6~hs*W$G#b|>A5@WLTG`M{ug_(Yb*=6t3AR~{sDacb#mhUfDb dFc6sO3^8|t1tcPE3&%GwfA$$CeK0(JczDQ*Zt4I4 diff --git a/samples/h264SampleFrames/frame-0459.h264 b/samples/h264SampleFrames/frame-0459.h264 index 7b192d95403929c9658390183c50f29a5b4e706d..e93807c6b5f8ea03bc846b59aff2082877fbb15f 100644 GIT binary patch literal 1460 zcmV;l1xxw>0003AFaQ7nL7M;?yai7|W7DY^fkJoySV2>WM#Z;CbN|#F?GMTTfVJ0t zUp2-=#tOmICO`E}9=IEjlDFRJ_$(MR)7FN5o7?Tt`6(_+)NN6 za_CBKIEiv!{`EBi4^kw(NRyZFm@EV!j7Stm_yWNLg8GQK00>S-01I-06#u}62(rh0 zzyQOx*7BjnNUGI8+z7y$E-3}gbc?`DAqOx2aR2~-BMtx!5@ND@9#{&Q0M-BFaW>-0UPyD z45`L5X7BIdhzJo#IbCs-nS^*h04(5es7DE4s#S2)f%h9u*3bY5Q#!}(QOFdm{z0Y~ z03>E2GMwr`khP%pUla(?ToeOPzz>{K@uyD)K+Ho@$ke~n{AY9%W@4slwOO9nA{Dt&6f}jm` z_w2#=PzeqIgG3{aZrFNF|K4Wi0AK(h6iihp4l01`1t1`4+ebJ|NhZ|LPit@h2mk;I zQY`|?k|rQTIs;U^CutyfeD(m z7?KV3$Y8@B+&1BY$UGQxScr+D8Hi^4gbLfD0umy3qzhVcl~=cb03ZMiGT-$NjL3%d zJ1#N@2ztj^l>FWR0DwtL03_K*O%jhTz>)IsA{XFM6-SoM`1m!;6)++a2tA`Vq>Y#` z>)0^oOvFY%{}tc>1Oid80VWdI3zR&^{_ES!^9@Q%(hzy_}XcrX9} z0YLyciLe2yz#EJJ00BV&6+&zPYVZY`U;GdWFj4@Iosu4-P+*^a&Tp`6+UJ{n zpMS&}?(T)3z!7vfs9Gc6TOF9ul^>fpx+?H{8m|J$H-YzflmFh}kX<g0j literal 1379 zcmV-p1)TZ-0003AFaQ7nL7D&>yag{ogCxC7m(UbpuoTYAOIp2Tsi>fd00;sArJ!`U!*N?D+|57-7>s$OsNot-)Ye%(3uab?!iKL1~DEUBvS9I-yR5erhn4@BOD52AQlw#QXdG$|Ic03K!l?L+~_g5@oZiQa#Cf=W_|Q>t~YM#u>9 zTw!v0gmv@%B3Mj@vk^D{U;Z%4aq);XFHys=v^jj!Mh0R+n>5b`vb}x&!gq;9X7e@8 z3|z35<)767D^PCD2&{z&D(OEs7Xl)5toYCFoDr{ETz>z40A*q*s{3D)(LXgqK-Wee6sbLBL9wQ;9DHNu175oDr6GY~UN0U>ls<$Qp0sxKs z4Wyp}(t6{-U^T`Pooo>%e$dKcl`+Qx6z80Ov>0CM<|D5XN%lA(O)vgYMl1jvF`f~G zc*3!7GweB$vzQ187Y!D2N9GItaktB5;O!#<=(2y6uca@DxQkc?7qn8 z3fX9Sq{)%s3eW&U1z503ccb3PKD2>S7{tErf2iPv8J! zI(leJGRLuNJEqJ&prUhFrmi3RhGP!BESvvbVxABPWF`axCA>#eAn@o6x&R{pNa{Qv zL|0tk=fA=K#k|jB>bySy2nI6%n41l;r6BN#+ZMTi03Z$k0svqQ8RuK;*3 z0003&06B@E0jt0pi~s-uK>!s(XaH*P1)5*{5D75I0Q>GUA`SJ-02VG=(49aS15GK(=5k=+~29fKYViy>~|T10Oeh54Mg+GDEnk_e>!Y2|fDIGdDpu8S3@f+95egXoX5x`qiQz`%e diff --git a/samples/h264SampleFrames/frame-0460.h264 b/samples/h264SampleFrames/frame-0460.h264 index ae52b59832e13132a18308846c34f3aec1ea833d..f54e1fdd2df5f28f6e8636bbf96cebd4ee97f269 100644 GIT binary patch literal 1175 zcmV;I1ZevJ0003AFaQ7nL7N~NyahKwV%OA^M+r|#B7zH#L~ijQj8}jLZT~CbneYGv z0l-k)3~jMclD(FS+ZF7 z2KP|^*-*d)L}&l^wm<-ha3DFOfvukrIzNxzFbt6Z2zUcExIdi&@OS}-F`-EK{=~?` zV@ue*IKQCG{YyZD)afr%r2Hr2x8xhF%mwCteLw?X05AYBGpJo4MSgOKKYw@%L;?j; z1TW7vqjHZ2<0b$C0lO>!fCGZMMuenA$iPn8($oaEB0w-Rbz#dG0}qsLi{E$zJq6ZK z!v)@2AEj25%E!03Z>rfH(riGmqqsY|#zSq(>2M4%!L%9@GhoL{q>*{%7FaQQ%w)+HeN8dia*EA5MEdjzy`j!0)vCg zO#5CjsI^l&3@$n`3Szm6-f^Cbm=*l6}Dd$8aLb^rhYK>%(h$Of+fcrX9}0YLyciLwE!z#EJJ z00BV&6+&!)YVZY`!BCJ`Bv@O33ksHGv6QT8_yG3R8zEp;pjNnDvzzKF*Cvzw{ejs~ zCK3?fZ>5I%S=>*KJezrfu%?is>hACGY5W=sv{AqCmfbbHQKFWIy9EMDCxU`KM-3EL z5P$Do5EGavDv2-wkx$*e|EXmpw>4yzvi*kCR^8VGVm2m@#Y3N^$+yTE}G z7&AIrcOCc=ftAj28jRo&aNR%{3?z^Q<_ZMi2nmh4?{ekI! p{b3@1wMmJRP}MoQK$Z=X z5%>i`pqgA30KgdU)nNh#@Bjn>&L4mP;>w6B{H0iaC$cSA0s$H31~}(aQ}@7ucnSam z4MCT|6Iz%ER{V%Ub%;9nWy^`CUwA+WKtT5#+)?AMNkUuT1nM&AX&FEOOB4S18Au=q z0{}5_9LqGm7XwCM^|%3B#6W-nbZvoaSY!&|(<@d2d4FI)!r?)dBd|ISOcDS?7@|i1 z#26+u|2!4A-~oqd55JRV!~k2sRCE-a2&m#jfoFiui?ap=pY^_tp_K}!zv@vYqAr@@ z)ZP;a0r1BSA0mipK*N_$h`_O#J3te30003&0B$CT2Co2kFaQ7nK>#_4q5-SG8;k$| z0YLy2LTG?$@CBN|P>@_CSX+P(3YR5HrDsk6H_l9(b+cd^RU*V}S0%yIx!&M*bP0rn zI2-9w01}h?55DPzC4Jj(|ITPo)eiF@$Pfe>1_gj^0R|6C;vs$t1c?kstt4)5z`2Gd zP%1nE4gr*aL4=?Ja|Hr$gfVE<3*B$%!!JOcP9QMd?eJ}SnrM&uya{g=)_WSG0{=x6 z9B2R8T9PceQHU@7yi%+Z$bS$6Dckiw-*gu|&H^F06<$wmj;g!4$R`s3Whteg1-0IN VG>kNR`~OyZ?7^0xZ*XOT&rqX1arpoM diff --git a/samples/h264SampleFrames/frame-0461.h264 b/samples/h264SampleFrames/frame-0461.h264 index 8062c68f155adc01a57ac421ea01e7fcfafa89e8..100e6df50dc68ffe79480f446d756352dccada4e 100644 GIT binary patch literal 1417 zcmV;41$O!X0003AFaQ7nL7PAtyahKwgHcC@bAKCIj4=U>01yB$5T-TwXgyJZm8N#~ zLjV9k00k^$v;dE-^^Sm`0H`=5j6OgyTBd^0WN`oXfDiy9n}aXH;LY%|MAXy7r6U}= zy~73o1VuxFK))tai;hFD|AQ@;!T^vW7ziMURA&GrAWx8nFPd8UoS}o@0=jxfr1Sl+ z00Y?pK%&Z7!eX}Y2N)s+Zz^2ygWDd>IBo{46uiILi2pDpHY?l!073!H4lLQyk@UVQ z7M3I;GlBdsrLPqo@I(Ly7N(@LJq0yg%zyL5OBDG>snL-Y~|Lx)f)Sv?d z614EUNRxKZNWq*T>o7rw1K2 zR5JJ&R|B9BiQEDR22m3v$&EX)==X33E7a5oJxG%EB24oE0L4520SEy=fqQDPB6`9n zE~+D`@Edg0lh`j`DS_Ho6S~lmOwsye*RLxG|&N00vS3 zFsfHmo2KO6hPVJo91^@?m^fM~T+jXC7()zlg*<~s6nKCD2oi=LnE)tpOTu)Q>~Koo z`~EHFdmmN&Kt%zE3ZijaEep$LbAcf608HLvSN5y_W`-X#=#*ie06v%i2ms08Fag0^ zq1{!0)si6c+v+&Izz^CIA8jzyKhH^I!lVNCVLD8~_y4 z01#o}XcRbH50nClpfEHy^cx+N;6?;4rmv|fxjMb!fFKY~2La3n_*iV4{@?%q-^@NA z*NPA_LI05v2@r$|KbFCFV8s9n8ES+9#g|+xd?fUle|}O%01%~UdAO;?)0t-?Tr&Z#rSRAnq zLUOR8kO83*QEAMO;~FaW%v z(XV+;O~-G*5bOW|0YLz6CeQ}20C+F}00BV&If=9ZtH2wK0003&02M-Q0BZ0Bm=lly z5gCyYnVAt8m;dkpaD$d`#gi&kHxD>et_vczTzO&16Z{Tejbi}?uXBC>VK4wHfB^v4tNn&xlz8j#;FvPlZ0irm67V&HeUXPXnzyXaI4^g19(txkN0V_jL03bolkcJa8FEcU{ah_lV2Ruk)By^RVlN}|wq!0iW z?co4g*d!Q_;HCHP0Pp}nLQ)sJ?+qD~kMp`dGVA^T z6xj(YA`kiAbJG=bTR^kgsL`#-t3@Lq`&MqzzTvc z!B(1Bzjy!w0wGj5a*9@OIx`x~N`)HQ0096n5D&$03A84D=m0IdZ$bt|(jQI?-~ef;I+CCO5D#DjqerXSLIfee$`C1I z6fEF(1tEkmh6qsgd;B#82%IT^yP_N7AjPMHVt_AVaOH|2lWY@m5GbhCVzKFJdofk^~9l0uXk*qC=e`Dxt#UoFEd@fKe5tkBJzrBKklXIE#&=8~XoK z4B%0T2>93T^7F_yFlH=S699_t6N#040|8Hu!HZ(004;zbVpP!p0DuSqQ=x#g|9KFs zT?tSy1Vgl;34Ql^!G<4wkAPvEk-MRSg~6k=W&n(#!J+|R3z>kJsh$-6?&KG!~%orQ1d%=t$W-5?nYrL4na}ZrSLJ16NSVD z#y}j*4P9J1946|e!2AJ@Bk&;9@W23ds6s9m?|-{3<4P0#=U0YLz6 zCXfcN0C+F}00BV&IfP3Xs%hj!Ks6N{Jhf274ZN#WdXr@Kj;V*7i0o1fEXEk zSTp|4OT+w)Cods~jONf_FF?Jn`8NOjr-oong9C~TZS+Jj;+iPz0#>w{wB(I{z@_#z zj06_@N8kTMzyPWM1Or~6{6J<tuaElzUw3c2+p8lWN8R_){1AaK9U7N}Z~<}J zn)4<97*G@qGR@sMhw1s;JPc+)9MR@97)MV4EIYo7WWR|;f8pp$ S7jJ5?P|_OP_wWAy_j-VIg-DA4 diff --git a/samples/h264SampleFrames/frame-0462.h264 b/samples/h264SampleFrames/frame-0462.h264 index 98f3dbf200bcd8149e3f7e0587c4dfb33d07037f..ad1ece85feafb6ec432f234c48fca24727e144e0 100644 GIT binary patch literal 939 zcmV;c162F~0003AFaQ7nL7QM2yahKwV%OC4OW=7DTsteynJ&)YE?p{Q6T z*@Hy_7av9mfpf@^00;mgYycn-3^a)_(R1H}|IkoDrDB+}Eno*^g#ZBnfH`O}@^GmF z7gMCYPLT!tND=llRsa_ZoQ63>N9$0aC}kFp|dY03b#HK#LFwtZ7j)aV`}3$1jP16ah^jFf1?h8yu71;E(_a7k~hQ zA4LEFfhZ5d!A^z%0s)`^eqnF~#_oTh*yDjGLM&Ir5TUu13;@gtoPy!#XT3a7I0+a5 zz%_6#_4wgIca8;k$| z0YLy2LT!L*@CBIgaWGN8xCH4RPU_uv5qMpFSPPuyd1qnZ$ur>bA@R3IJ*7DG5P z7?bscpiBTN0rMd6JQ2VZVe=pdxgps)ot6D(l%XNr8-gs?u6GzCM<2))ndo-=4|)P| zd>9JW#}Wcvk%I?qFl!eCRTd~8!>Kk-OD1H$c*~QzCECCtk-98M|G@-KLHxen&X2`j zEDcM~m&;bD{ED!()^Z)_?^IY)E38nevaRLX1F+u}KkTsU|ci>Jxkq6dzEO+yf zjvfMD`pwOF9JiU2XwrP$3n`;q{l16Xd@zZ*PBPF+zyTgm2LYNDK0r5pF3^S|0wTh~ z(2<`1IW$0I5Y$=DodSRAh!9c4;E!cI0$ySS%dtD_d|`WS!0;I^nHY+;qCJgdCNox| N%JBH9Uhp~Lnt(sUb-n-q literal 938 zcmV;b16BM00003AFaQ7nL7HG1yag{oVx+xFm(;YJB^v{PQ=q&HzyLIzjST>}5=?T2 zfEuWqMl3Q5U#87BBJQafApuqqEgj`Byd$fjK*ZFV0JCOB=@^rJ{osv^*bip_JOC+^mLP^85)1ZvqgC4?6$~ z7zS0tLGXyB3V;9R15gDUpZ+hA5Bm@5d@~q1WU!-w;~n3lRM5Zx!~i&9u|@UsrSX7V zARfX%XAlz^;4mO4<)fhV5rPZ~n&Y?w;f6|i$oZg#Qbbray8u81R45aoQ8)YV6@VZR z71BMsK`$jkhln*ZB?TZ9d|w71U*iC_0Oo;Zgr`^_yY_>NA^aF6$Xz` zmj~qUApt_)&#_4rU9$K z8;k$|0YLy2LTP|%@CBI%69f(jfCtFf4Vr>rdgULu03fOzL{Q$|`vcMP?t~i|>R<3w zARY)7K#I0$0}W>W&{_bj5RXNxEzhjivp5#r8! zj4kM}(5KJ@VWuJK!^hxHuCEnhzxm*R`uaOLqGV+6v6HE=;GN?yMn;u; zL>5u5X=eYoX!8w9I)^D4{xsvdz6bya0t*1}N@AB^r2sIDr`NyOA%H+;M1dfbrDuH9 zXu;gW+?Qg*|L&-R6md8Y=qca|)@uX?&9U$QTiQo6H9QmDIGCfq`?R>(hh9M`ov|#J M;Cw4y_6IyGP`r+a`2YX_ diff --git a/samples/h264SampleFrames/frame-0463.h264 b/samples/h264SampleFrames/frame-0463.h264 index 979076f4d8282af982c9cbf6ef9cc6ebccdfb6b8..f219b3d4fb232072ff71c8783e1058938be0b0f6 100644 GIT binary patch literal 1193 zcmV;a1XlY10003AFaQ7nL7RXYyahKwV^`FaNq_K&2!UPz4md;sg2(xXfl?z%%Etf$ zX)&f=%~YiH0f!ZdDs6h0J%;*Q!ha%Ipb7y zMmq}-x+EX-23jIP%|HMk7z;|U14Z~myaNJ28#n#PI8lJ@QaHE=05X<3aAD{I58zQ8 zpv=HA*bo{(Id9$q10Dde44W+tjoOJxG%EB2UzHZvqn)vj71AwkQAy0s})va}XYsIp9Pn7%hz|*36A1^KbwV z{Qm)f3ScV&6NIdAt+bSc?b$#90~m-syh2tXt+H&V0iDBHeqDqRy<*q>G5`fe1ryRL zkQ^THV{8gf!Bj_qJK7VWVa{Zzvk5zuOvCU1fWdnwwl@~eo)co1;QRn(6LI2OEp$~0 z4C55IUK5J7N*Z{bs_+0%1A=M?P1fMK;0C(Ik5WH$9h3m@b7=8c%fCzyr zcU~|zip7wn68_)-F$Ld|NWGcmsDodv^Cm-xsO5EDk@~!Hr~k|L$Ygaf(T76O!SKj1 zR053zgvm(Ai3n_e;6?;4rLU>!xjU8C?2dJFQnSB{pab3Q$3#>f}j} zHhp#f{ul^2EhpMQu7Z-6lNkSS02l&{DG{&mwHWx8cYg#f55^HrGSFE`aGxZfp^#aU zqSs~aUBQ*D)ZG6F1XltI$ZiH7zm%(h z;0CV%crX9}0YLyciMRo)z#EJJ00BV&6+&(RYVZY^U%-GM9SBf}V}K|uf^6u*vG^b0&_F|o0A&n(6)+vyS%iGU=Rg?) z9R(MaWg12aE>~~xWG+au56u>L5!4<)6AGsAcuXP_4FFi240K8od*CL#HbM)6JFocj_x~)T;7_Y?fWYco$FkxKxwb~hvvyjca%s9L3 HZXSEcjLW4G4iD+W z+PXvF1{4}5)_v2{cap3+I{W}C>@GvX9FAL92H&s{Ow!HZAOJuex|;wf2>*U9K_I#d zlKH@(69y2;fdJ1CAOQj_8{Qd8iV4HsINX>32nB^uzJfCgd8oG20A}0(0Duq&cr`vv zr;HFhcrIUgk%nhs)G(TQ48FC$LaEq4Y1Sz!iX5ksBpHRrm0^%fC2z<^Im-gs#)5lAO|2%;0Q2hETtxtR3un( z+rg9wcmZwX$HM6zn%*(7;|u{roic1QRF54IupTo3JBMi?+K>C!+-3kM0LV$ez)|)k#>y=g25rLPQ2mytsfQL=ISXXsc#a}*wjsOly&@2%yH3vP$M6db)1H1u%AP6s$GC$443(xLC z0Ss^fM+P`#cq$0$K-K_F&;S4dK>%(hpa!o1crX9}0YLyciKqdqz#EJJ00BV&6+&tN zYVZY^U%~KzbRj|^jsT#t1TCrfJHQN2SA758fFawP5s(%4eNFf9KmOxCav9$}*l!St zWAH!0pn!)K0MNoxrvO)FW)aYX;UE|oL=vK@MM4QAH*4@|X=#xQWMAMf`@+L*%NS7n z_Q61sgnkAT8HlcCrETx`fi(kx0N`+;oB^P!hto|$1kq*EgEVeBy^9Z9h=@zt1PEv= z#6{>J6qHC3{v0SHfD2&+S_PuvCd#;ay~R&9Kk)HkEPwzI zGynk%Z~zdRW#9sk@Bj!AubA)v5T@_|2p^uWecH?OYwqxYo7r#xRKh4AId8c1(}O=qBMdo!03Zec0s?>l zAU*+P&IAF=04W2WZ=2W;fzqNr080~wj-5OH`t6v0oTn*orSVZyGR8*qthpn>_yAuQ zH^`rR-SC2xjsOAxD!JMolb`>%gL*J&9ZKoB;t$}#0q_t6Ex@u%Gt0lTXN5oa7yw)c zy;_yW!D%018UO(Rr$7Z0**S{8^Klp;W#-Ve-g#4Hzy0cJ1RkeJdYvXW|HFsEJOCRe zZ4o0HqAbx71z*w=1fT%6j-DpW@;C0096IXoK4+V(?pN6v%%t0aRWJ zA=yeCsCPL*jdujG!#mw4^?m>e8HkLhI*?>7XqUwTG#3Q`)G!|zpfCWqjE2W2b7KGB zX$BjUSZO9HD@Ff+lz?C?-vSGz;^`;v?k2zkO~5k68-s$ZKG4bv)S%PEt{{R|AN#Z} zcu5X|HKcR@fD{bk7(&Faw1_0TC~!bT7&F^=Si!1OTsQsT00;rD1O`vTS4x+WCC0rz z004k0fJjn;kt1lzq{S!10E>#iImEaJ2-yEMLkY?@-z=hP+^(8kaSH2)o-~fT(K{rWqI!h&sA0kp<00;yC0D#~C2#|mP zg+gQib_k~oTZgTbi?l)Zq0AKv0S~`s4gfGAGeV1sM;y?pP=u44*bD#!0T&Tm20x)5 zfFMQyIG1BQ7TIqojm-GKMK~dVT|IprA}GX@!wBV;Sb-&2UWb=XHTE6j@MLc}kqr(o zv~D2)7p81_*CE~y{AAGp0DuSqkG%2%mtd|GKt>JNVFfwY;QnSTiLlH=74ifeF8hkX zBnfSw@{xdkC;@@OXE)c(l1<@9L4XkTj-e;I;M1(K>%(h=mxI^t<`tn}F~PX|@0W literal 1505 zcmV<71s?hU0003AFaQ7nL7Jc%yag{of~37llb6f{gcM-76~;gTAOIqO7y_IbNrs_% zc{PPVC~$xPKqx7000Q+Nfa8mcaU^=!ELz)P;601!M- z0)PO3g#aD{frLDsKp+Gl?L*95XL2f~7}fT`FyheYWeuE3-g4P%KmZ^cKnDOOfn(7O z5_{X2fE55D@}Pgb9dF=>0E`r<&eHO7Kj>d5v)IB8aL(YkxtD~u-au+0h6pO2d^FwC z_dMAEU?2lUkjd$#z|9gym()d|V;KNOQN*)YkrQYlS+xP2vvn(M%1Hx2v#Uhl>Lcf5_1k=-oTdd}uX`Gk<2m&?iHj;b`LF8F&%WWPqBppYwX2<0%QgN1T%10GStvzQDwDLU>E=>f*_L; z!Ci$WG{+_IM#7=MDFF;H1QCP*AOq?Eb%4Z0V^_F|;)@kyRZ-YK55Z74PQ`SfT)JdsJ6(Mn;+%yR8Xi?BnikF8SrHe4-&albFd>^A@DZ= zGd$hb&;NV$BLKgIpi!q%Q2v;wdJ&U0Ui-{%zyZJm0T?d1iB$~>{IPBy|M&nI!U~Tu za7|%-=9`y)_&G~BZtA_S01q}B4GH-H?Hajc^wC5&3fX9SrAd+C1CRhi1;!0iCxW<= z4O^&VMkoLX5+XnVK(qi91~2cX_{C4fB(Axv9wnO)g&PA1AwOAEf4tv0Bjuu2X|l_ zj+C?qK|yH%Yq5=xCd}H&Qhooy;6NefBxchY=j=ju-hWOH0NHoW2aeAN-cI`*|K0OYi9Zzz<&)yFLNpY)?qB=Zv2BaXkL=WVCU->Wz8E|AKS9roU z_z=M8)dS)tmic|mcO-X1058p$QG<>*wxoi&{2Y{M?f(Xt<9(P2yQdBBn&Pf|Z2zl| Hx#4?&4~>x~ diff --git a/samples/h264SampleFrames/frame-0465.h264 b/samples/h264SampleFrames/frame-0465.h264 index 4331d9a3ef1217c987f1c32a69c65fec1777108e..8d1a18cc01fa986ecb8ffd7374b1abcdc66d0af0 100644 GIT binary patch literal 1243 zcmV<11SI4g!YYV{Qrrm2I@W z$T)?70Hy!}0TDd_0RS+ug9r#pU2g^v2AVjzH@Mr!hj&FUf*5Xg3Q*1f4oK*FA}7ix z4WH;>Aisp8oL`Tt!FFH+0g5pQHBPgI$e^}-015!-L(d?kk_lmw81UZeANr~o0ExtJ z-ar6}a3B!T;Ku|6PKmGFU>TSIhk!dP9jjjFWOHe(z z5&>b0s}5Me7;K|-T>HQw=q|E`7%uYHBB38z01Be;D8e+95V&_aA&qxMxx+i%C-ru~ z43MI;Wfb4K00XvQ0|W}Sg;4`HiLd|=2-iRy0V5g5@<%pkhUiiwh_?nef6!11pkf11 z&wvF^Knek_l6yY|1{)Jfwjv-0ucN2mec%8H1<(jc1!>8P)v$*utAmBN4gdgv^h^Nd zO`iYe140k!H60R&?R&ex!CbOFZ&3t!M3=w-2mlzaM!&lZXuE&hATR|PSQi?H8SK2s z_302H5yTP9IfM|P!+&tYt8w8E89TxSpKyE&tu(#-z$KLd`J$?-AJZBy7;D6z;S)p` zmH}`8GPbw^fdS?6r4lCxZZjYN5HtV*1g^XQ0RsRFIl}@MQrFb<+?~~OZn>I5h$vs- zr~?54hu^ViG?7j8qcI-`!T>N7HnS$q_e8$CxDv=CXR z5&z)$0097iAe6VGK^uNUsZ>S0ab16zC@c=k-Sqq(0Ypv&4$^%}!4j~30BEN;W5DbE zC>N9GECV_K0Dy*atOOUR-S&X^1Q~}yJoTm76bgNK!XU3&3Neir^&I~IL6M_wU-J1{ z;htU_01Q_s;0X`)>{^Bdp|{uoW2G$x5u7_=iP0yplYsYo0(m8`ga0r9=>R_hIR2GL zBxP|0J)ezTRD2)%;Q$Gt01!cg)+i*P_CNrk;0SgA00BV&ZYJ;suK;*30003&06B@g z0jt0pi~s-uK>!s(ZvblW1(gB-P{KF?YG#O3=sELC;6?}mFeGv&I3b`g11O3|r8o9~ z5TfG~n^OY_BbEtCdL8vNCdhsRynEl|+D~F5H(LM~R@n*;INq-Rdv9m&7bx904%vW+ z7#|XVGXMfC11n!(=GtzWCJ30hXGKnAuU> z1I7}`5b5SWrGfX~Y=z5e+#i#elI z9P;7iOg@qGWwua7meIozDSw*BUZXhhoxHFI+A=pK%}{lgb~z<@Axvw Fqa?be3Ml{p literal 1070 zcmV+}1kw8d0003AFaQ7nL7KoCyag{oV80O)80Um$v4;GcmE zSAYTp1r%rQP=p{Y5lZ7;J}>}4kO9tEWy*1hm+70hDgX;H6w_kGVOdSj0v+ZELnX_i z;cgQ)m4?H>X9NQv0D@JDgo0nN+&3@?U?jNR5X81~&qUK6^I@O!hxFhe6_hnkZjd2k zr38KeP;~_I;E)CY$3CkF5Ig_@0C7#=01yByh=Q-mRDuyTiDJMI2+uGv#=e@Lz6anC z01#?RkpxZZU?E-hA_@z&&_J@5i{+I0qzo&W%rC-30K z-w*@=fEc(0GR-fAz|ojJZU9*E5D)-;8(>=1*#fw9%GCg!$47%gzySVAX{^7nAYpKz z`v`HNlc0VEF-40<&oE4B4?GpR^Z;Sn0XOn(_<##^3XX!7ffXFs05~`d=(|v0Tm4h! zXfwjA-}PEWtMG_m01yq1U@-Xq-nu>|6m*h=4s|IELxT~?gju&&eOYJhmP_{?^a8i$8K8QoNP|c|J z1^|c(Gh9h?a4cB;{0DF&4mrRB@&Npm4XGTo00#5`z%U9mtCBv?MGKGa03Z-ELI^lj z9_jp2LihXto1g#y0YLz6Ca?yt0C+F}00BV&If<+RtH2wK0003&02M-O0BZ0Bl>z`z z!Z-k}Ze&b0J^Q8bBLo1L5;+qb5a0w>3PSRm|4;%HTsCuRU?`?JVWCGyeN73XAAqkO z_xT?S#70L`01z15g@--cSKn>z`^4A^kb|~hA_fP_fB_m{07ZbesACoi5a%B_4r5?@ z*#T`DgKFeesIUJR zurk+ime>KHFkxSJsiPz^cOs&=6L_qC8X#s&M*65Tg?o+!J@dOFn zd?-8K;~YLB_W%F?gtNZw{jJIh-F90Q58qVcj>f13He57R!{7s{6{>P`^dLA& zYUlsY{YG)&D=e@D%{-5#|Jwiy3#?k2>QjyPfYud-({Jv7|K{W~Y*k9A#@qfXC;^Kp o>|l4WwK$u*+jaL-32mEK{r`ab;svpO0ArI6VTj7c6v%+XlD7-Q&Hw-a diff --git a/samples/h264SampleFrames/frame-0466.h264 b/samples/h264SampleFrames/frame-0466.h264 index 905962a1caa684867a13a64d418d3ce203ee715b..e344957ff41012b30b6ff88fefd2c671bb37b708 100644 GIT binary patch literal 1693 zcmV;O24eXD0003AFaQ7nL7U(jyahKwgICm);W)4WKmZT|0O4eb5++QUGDL|JCQJYL z0Q49D2m>h~0MKkOBsZP?UYou$CMTA~U;&$d%K6A85U>p~?c{j41u3HU@5rqH5C8}S zx@OV=?|dn>kN^k(fDATO@ul21-rxWZ0OS>t3d(iL!Zm+z06=s2?JyC9z)k4+p)daD zi@jC>ik%cfU;Cgz6*osXr9vbB+%Vk(fVLej*9MsPoiSB@$?@In9wJ#9(-<^xayA!M~~hgNTczyL5N zby~!uGK3v}|J%d|sXzt@DQV$$kt*Gwkb#^j>nur!1Kg6m2${ejfMpRfM3~dNACGqcbiGYLgVgCSQ>4*= zM-_oBFaQt-(}06ei)4uZXg4^30e~h^tll?}s2Jb^0NKXPUVeZu_ycxNg_YFl=AD=f z;3NXJOnKS))2zP+Dh%9{{R7qabN(> z1Y7BOb1*6{PW@n;004kJZ^#--V;8_EKnmIw)6LtW3`zGGf7Sy!004kBVx$fuFh#6l;SgFoR-iDoJ~Aa)Es)OzMJqw_-kZ|DG49wp!a!TsTJNB^Dl3BttmD@wCg z=K#1y-g=|jA%l`42Y}E{(-moJ&(~0M$_z^z4mDdKq^#P(l=Ic}7q*EC8erE&zvC}S zoj@zR0H7cWwuNX|?jBnt$^w=Ji!hwB{+Hv}6eNxr^D(%)txfAzzwrD30sy=uFTK{+ z3Gi8%l-?8g9$->1A^S2VG>V`~0Igu~BB|ef&vzeWfCFp;h&(I%CC97Qb7UhYLlMpZ zhvMRfiEhwOd0~B1+yEG!p~;A+mT%|)MVJ=9{1|>DKtwb&fd*nwLXYwV{}Bdzkk-U7 z;=er+X|bqZ@5I0g!0)si6c+v+&Izz^CIA8jzyKhH^I!lVNCVLRPyi{m05HSC&?<1d z2dV*0AP^cE`-8Hb|8&5G)YbJRHz!xT7@`aKW`F=73vX5c0)U8gMTXQNmZ8juiC}SF z{fgAcdBi0QB(n(j@CtYeb-=?ipHQ&L7zF?U06;^?N`r>$^Zdx5C+`4gr6@wci}eT- zlVyVd3lD&Tu*lx~Wo85izN`jx0096>#YhxJVt3pE8?;@>_FW@AD~LZ}0~gZJ$7c=D zN`H~Vu#z9n7Qig$ogjea+NK=si_N}oIoDwh$=N41@GXJ;O(VF=fx&O`p zVd|hDwIMonT`H9U$cG_0SW=t-LL`FNB`EU!Y`-?`dh^I5h$!s(Z-8p>1opt37zcr&VzP`70oWs!h+v+iyI3_dn#eCHZTuD~fD! z3`c|j1Oz+*x=sif05*X?)C3oq3}S!PezV0e2l-gzn7lUoeDKc@P>5h8S%mO`%6Evk z3fc@%Ay8~h?@O+jikO-uTmT*##*;+{^Nv6M0dhF7=Mrg9^8ZKYogxctOHT(hN)C8u zz?zOHAV@vF><{jk8g?Zt*VK2t_kl>c+V%XmAqSg7b*`Mq0~o>j8gT#pBV&~U00IC? n0m8^TC8Haq&&tO{WdI=5TQeXiqV|G1rRG5cJB0hdr_Tz>?2_d6 literal 1373 zcmV-j1)}-@0003AFaQ7nL7Lziyag{oVx+xFm(*q&^O-R!_%F1Shn4hRNI0P?6k`hms3{Dvcb00lq*Kp+B*^ghlE z2wIae9|IZ1iA^I0l2nSK3^DK`8VHcO>Ne5xK2DopQk(}`hmX7g4|W<=rDuf-3pQ8; zeo+f`e2}F(mw+K1WK{NvCn+=E{@@9~3=Tg<=!Ko9^E??50+!Uh!c zN@hW;4FWr`3iT{O*M=_;m{st2)`=040waI+0DxcuZ4q`5+|?!W)CvyXpUdLJLecR< zAY1?jM8lZA0(5Wv?fLzkZ~=2V{9J;*6W~CfE5h6uvMm|mw*5u zA{|2qCZ%TcqcNn!pi!-$01yKK0Q^?~i$Z7afCK;p0RXU&Q>KB`7-FD3VIT)@BxGqa zW=xy#0g6G677?XKZ$bt|(l1U7-~ef;I+DNu5D{ntqesimK&gzU01y;TZ<1g-MInSS z$`q!re}1r-{sRy{Nj05JZ?S5p9*U&IIS zLm_>p<^lrb*h4!{v34sJwR&l8f(VAJ!tIbh3xEVK4HPPKmml~R3xJXVn3hE|luc6C z*D-oUE3$x5|M#@aAn-R+!Ff^IcmyHAsVNI#h2A9Do(BK{r*Hr$J4_!w>d^o|FfC73 zuzg7NkKb?r0s#TtA})3jNNZvg>OKK%?hH*}oG7YWfq*&=8j?1iSQnl~ovimT0pARO z3(lrq@0W$V5pdlS7{P3Jq(LI9W3eh}(96$**FSVFNo< zP+Igun|6*_3|--#b#^`M9$24U3rPPqKQ0=3C3|fGFv=pMxw1(m{_7cl%2+4z9S8pZ zp93yIGb&-Wzs3dto1g#y0YLz6Cb$N#0C+F}00BV&Ifo1PRom+zi7x%Ul27fjt2jFa!Wd5gh;* zf0D3e82!)yKD)L2Z~gB4F-W|CT%&0+3_uNGx$@DXAAOh$dIRTIZ=l1=8Taqd@7vab{>C$Ms9#LJR>Q5IZ>W0Hmr!aRGT;Nn^kt z+u}MPXTOdd?30*(-6d%qIzx)E^aJlCaX;9L8J7<(ZZH;N*=ZV434EPgK#N-J@JpugG z5O!+wRcAf_YrtjewfFj8aYWofwvDT6cm+L&X9S!R{m{x@^M(Kc03`t8%oN15#$U5U f5>Nr3M9kQYlwOdI$9`lOU;H=U-N-+YMtD|8w!$`} diff --git a/samples/h264SampleFrames/frame-0467.h264 b/samples/h264SampleFrames/frame-0467.h264 index 26f006894155d414a277ccf27d7a8e8ed1af0121..f74787681e8cca862418e3c9d73d55e8b0523a0c 100644 GIT binary patch literal 1060 zcmV+<1l#)n0003AFaQ7nL7D&>yahKwV%OC4OWm0V^l}y?|fMnEq+AOHvi0gB0=m9{Jjbq9VZ zlX2_!0R$LvKxL#``!Gf)-vPUauZi>lO&~BVFZ3H6li=Wx00Py004m~55wr_ zU;rQ*00-_D08DOY@C}YA5^N^Ld;tmznNYw4U`}{0M1nE;6p0$k#hyR+&11{}1P7`z z01z&Mci-~(O%4XC3qXcH=@AGxWN|7MB_kE&-T*)YBd?7JO}Fr2`Xo$ZAPjH?4n)8} zso-Fy_|hQ+w6@r+Xwc7N#9@G8l%Dd=%_)(adE^ayfG7n4N3*dTE_>K~;+z7xJj9u! zW=8x7!3-;@LJ&*Twx}3>{>!L=g$A&W!pB7podaRO5bOW|0YLz6CV&R70C+F}00BV& zIf0~=TM-5K3XMJ}{0sQQ$Yd;}2$ zy`Bri1Z#%g)B;xix)I+D2~3l{a_{Yc3rxD%9wP4qLe=!jj-UQ)2?60G?l#F7%+=sf z1U+n=HHzG_rgEo`V2b6;5Eo#90}Q=8Sa321jKd`_b(lHhk1`u`>GmQm^T|dSG0QEG!n!$De literal 853 zcmV-b1FHN00003AFaQ7nL7M;?yag{oVQu=p8PvYL z_aF!mnv%d8bjaN!GJn6k5wV*A>_Bt~sd?gGA#euZ0!Cs4mw~B^T95yX009Ir01#jR z0R->|6DuNMUSM*Uf!A1KM4m&Zya~LAkUb8|){FWZz=R-%2n?c31OOWh0hw^nHW3=B zZ~y*a8-Nrie@10Vg1^R%Z-WuWnp+GMD)anyda4)z9DoCY1YI?^oiB_6;Q;m$12}+~ zQ@~&_I6`P@ID#-?k$a4GfFA@MN$+8k!A!*{xBu|g0DuK#Qvv)j7WeN9P(jDGSNC`{ zf^@oggHaLIc|bs$+?*iC!vw4kTxC;<*prD0J{`Pbzz_e(S;7YArDonEfB-;<5P{t? zE(LWmw-kYx0TAynQpl4h_K!GBn_dhf7%kA-DhB9@?vEtNegI&FEGP01SfohLm0<2* z^gt+SUI0s&>@*V!V8AX)@DMrU3^>S}Uku2UH4-lPRO3)2=t@}bH7GqQEXITY0tQ5j zJ_nrx6VZ>n;4o~^FpzycK8Tjg!*C>U^#D!K0003&0B$D02Co2kFaQ7nK>#_4umP*U z8;k$|0YLy2LTmtP@C5Y&Kp++r;3uju&;u9x*2Ci?%TAiHlzei-(Us+}B?19(NXcG+ z1}DDn@Oojqvk&8iG?&9WRXzQ71YM=ue*m2PRyqJC0Qvrj`GxOj!T|EUAVyx02qB0) zlriFEbtnS=LvY{32qXkFMkOKhiN1}pp&e1s4lics1_qLu=0z}99%J+N1c308aPSH< zdb}6~$`Z^w-)|s55Go7_ud!4x;sFLh2@%RbB~lo>wv*rY{=8htr9pN79qR1{1%>9c z&J;Q8vlfG(&V~48Wxy`+7zf}>aszZ@GN~~z7*AOyS)FJvb1H& diff --git a/samples/h264SampleFrames/frame-0468.h264 b/samples/h264SampleFrames/frame-0468.h264 index 2d4ec0052e6c097ec5ee2dcbaa6c7e4ec44bc507..485df3d673c63a53672d6f953ffdd44392e56e08 100644 GIT binary patch literal 1287 zcmV+i1^D^^0003AFaQ7nL7E^MyahKwV^`FaNq_K&2!UPz4md;sg2(xXfl?z%%Etf& zWtl@(C3Cj&0Aa*xikn`hged0p-XZ;x#Q<;$^!fx#xiHPeX#<4!No&p0_$Wdc5>Pn= zqaiPyg?zVw0Kg6%BL)X0vU(dff_HR z9ceASOF)Cv=`T~HL&3quNF^|Rfb75kKrM~{0suhJ!Ho}&${g?_6a)=h3AwW)34G)L z1V6vPFagX3U`kM(mL;~5fTg=Q@GbBYfCGjx2d{`rMK!g}l~)UU?J<~Elhv` zF@c43^+^s7crm7gC*Z0hpr!Q**s$k7xCntTAq@BcfCO)ki}n$nI12F(bK?VE0f4SS zL8r)LEUY1)FzI4&4z*7|KtFYF00AHYLsezbAxHc0_7?ke@FBr(2~Tu&lDrVra;eXn z904_81=yaz)*@uT_Y(jU004kDfCg1Sgd$1ozy?3O0Kg7z0V#!GgAN4BbloIaffN7) z2im1P00ag=1?>#)gZ=;jKs*5h>7iE)`cjNTVWp$q00smPnJIU~*a(iUyOfB2;|z1P$DS0uk z_W%IE9C0X&f0by*#M8U@A#i>$oZ~G8mF^Sdlk_vDU*N?-U_@jA%!Wr%8;B(hVgvL5 z0sx30GUV86UIT~V{h$GJkT_9+8l-V?&;nUtA$JD^E7Z1uB%J~n8p;3p5pjQh01&z{ zZi|Th{B1$nO^g7w-~b2*h;cwd0NFXpL@2=q@nQeQ4b*V~im8rNp`hukQn4Y8vvdFq z009GO05rZ2@Hean@$E76s-u3v|KEv#0DvGkSy1l|3ArgoqbxEW4giN>0003&0B$CT z2Co2kFaQ7nK>#_4q5-SG8;k$|0YLy2LTG?$@C5Q-@E`+#Bm#k9ZUA8fftZ8DX#iT$ zq3&RVQb7mf&VOi-_Xz}2$84x2k?BTiky7|e*j+?aux{hzwD?A62Wm<0`z8yfA5bn%V~$^M+L)KcoUF7 zHU$7&CO$C(YhyexgN^e5GKPB&m@%*USXuKkP;>wZnBV|l9+C_Pj9@~k>q`{cR3vcD z=>rzxW3RUK8upnP4G&j=n04LLzWO#4YKIhKPp7}!07mWcC(I2ufIxwhWF{@w@8?VQ z76p>YEFAE>38ndO5^>>%rSyC%qtR6mkQzZ&P@Y z`tLban><*CQR3_~R7|jPcn4Hp3y^jLL*N4}5&i(e^>@DpX2Y0^=!AjTUd#KCNNepM)l0na@vPZqz+vZxU``SIM>OmqBc1>N literal 1088 zcmV-G1i$+L0003AFaQ7nL7N~Nyag{oVx+xFm(;2P003NZL3Cs&_7GZk3!t$r?SulH)`A7)J2^yB2O=K; z03ZMa4>*#8j8_gBFcq~=+%PBr3dm>_49<=+g~A4h0Z7rC3*BQ&h9xc>n|e@jl*>n)0Dg$P=Ncims^**I)*lbGJ&1mGC5m?Ub$ZOJXa{}x8S z2sy_IJPGk-hy`l42!EyUN+doL20)BJWN*MQ06QoQK!UL-a2*)0p8^(`aCTXg&rBEF z_rO64s1W0V2{Q5H4JHjd8BZ=;Lv_G2f?;P0e4wbpdjgNY`+xv4feba|fGiNumeA~S z0SErzK|tg*cxB0gdIhddF?WU`M1}W49DL8z`Vlwq00aWTRG|2YuWX6))37%c1n))* z4`9*z&4LS5kV*gxJZ1na0LV#zz)AJxhKej8Gk^}JN=*t+oSpyxfEZdN4t(3ig?CkK zRrkaL8~_-ViUiAzLC=wqGym-X0PO%k3IYsf%$M_V0`vQl00ao&0*(xH$naDV)Pb$r zmKWd&x&QzHK>%(h$Of+fcrX9}0YLyciLwE!z#EJJ00BV&6+&!)YVZW|U+^FUfFuHe zVQv6E^B`m}@m)X`w9xl3L8?H4@#jCVEb;uvrVL}C><9p$3V@hr01(?MV0ho}!=wP< z;1qyfwP3t|BczVA(|$kCbrd8?^9S(xNKI$|0L*uUnBOlln{%$_)@FyUEYzhFlOgNv;``FK6hCl7#3gVZ&Fk;>13bXSwE)sw<8~_Xf zDImaAqXHF=Kc%6yai0TczAZ4q8vf`d)0Ou;@Da)_Oyy_zKR1OW+bYNE9Yr+A1End| zgoLM@KnL)|8r*@fw}Kd6&z={7G`~NIIPkz>oMKjeUJAb(z+qqCPdT@{{{e?{NPlO8 zssvl`YZUbO4%zyf$e*t6!sIMN7Z+igqGf}#z`;L2D4 diff --git a/samples/h264SampleFrames/frame-0469.h264 b/samples/h264SampleFrames/frame-0469.h264 index ce51a34d035ce91d4336ff0268964993f1469719..6c0833ffcc303ca2305f27dd1c88d2decad5b7a9 100644 GIT binary patch literal 1524 zcmV6fq6l&Yl{-6FPz7&}?^57nE_Q z78#d}m@qeC1pGU%peXP`wMFs`%>u72a&V2qYTt-8^K%`B;6C$h1Xh8aOz@s>YkjSR z0)POBzykvXXNtEy=F1K};LC_SmPzjh3n^~n|J*_WKsR=URB&k*3*7(vNB{%^KwwvO znG6LhDgzP5|J(o^Gyq8t*L3JaAY@+_&maEq1j9TcThTJ)=AtJ1#vT9x0Y2FR(JA|) z3N-z}pa}4rZDkyCtdEp`)$I% zBOntXMoxuP^ z4ni~%$!9*0=HGY#0s%G#02o`qd8W6oa6dPRIsgEGSOCGC6ZE!fI4)8sQ}v*fMx{8> z8Dr~j_75;rl&b%K{3Y20*dMF_7>q?kIhDjpm*tQHdPD?7K@I>O0ICW&0us2zd|ogm z;0HQkBRj5|54kpi0XiB_sjrf934;W9TYe%yt13uP`XZ|3`jYuG>9g||H3;jECJ7Mm zEV)W_4r~M*eFFq~<0W@a0y-qn9U|8X(^0Ruw|Y%H(^m2}WU|H1eS;PO5aR&O4kW+<3H05BLz<_wS* zNq-F0C_~rk;!b1)Y(T^RuiM$S*kSsw{N6<0F$_5X7dKM}$U>i+zyJ^z6|@SR*m`tN zn{MDpYA%fD@(@$mgW5kI6%qq{DFPsvAbCN0CW*Ty$H0003&0B$Cb2Co2kFaQ7nK>#_4qyekI8;k$| z0YLy2LTLbM@C5K*z@!Q=ECK;RP5>S}mR}kw$KC*7`>ab{;b;t9ZPCyxfm2g(aO9ws zf+n0D0ZDGhlfwCbmxvS+lA)QL4k{)F=m0Q1B>-K& zM#vW+d;S1%uZ+pf6?OJ`;XeXu0)QyUJ5WWW2;6~YYJEk}M@G4Z+OroTt a_x&61;CufU_NWae3@!g}V}bs7U%;*H7=;c1 literal 1295 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 literal 1056 zcmV+*1mF7r0003AFaQ7nL7QM2yakbe2!?nN#RWJ3G%#s2IG-r#X7b|p@W23ofCLh- zM2%=de?vci2hIQ%V=>}kQXFQLbHG7K5b~Wmby5cqG9$H%2mzcB41fXzubmABzhV4+ zXcPznO@(TPCUT0fxHXLNxkbHM{u}}T?7)@~-6U%QYMlH4k!uO(!Jq;FFog>+(Hp=3 z5Dgqo04TF}Oc9u|24j1ZC4dM5IbsbEAd2iGd=KCh0096%l$$0Gi05>1XG0f;YY6r5 z%aRSJUwA+Q6dV-u{0$KhdRiUj02nOE&}hpb011+R*f;_JFaU?ZG1qCGG6P4TcKiTh z@JKKXsXGBH+++ms>YFS9Jio9YLBL!Rihv=6IMM0&qlQ8Weel$S&;Y?n08UU<6uy>6C7qkrnm;l77FJDvR$YVpO-1Yv*+hCC?UPA3b34<5gSU;`i_ zdId5dPZNSxnqLCYBY_~nlptq-0fryP>1ovA@eA;&>=#hUaVJ?thYmL;h5R4K#NZMMayWtm1K}L>A(Wdxu3!IH0SW*D0#}BB zlotR3P-A0Pfr5C)29`lkBoof}#nqrSZ~zDa$VdPb(%1kce#3B^n-~7T90DQQErbh? zQr7*zU<0Xuaq!Pr+Igtqq_h6eQ;(ntvY*Pw@n`$Y0e~4mff?$PmT)Xs=AQuS0URNO zfbC$;G@?~OBbWdP0lfeS0l+BsuFHQFyflBj03Zko;IdAbLmzAYVp>W7o1g#y0YLz6 zCfEkA0C+F}00BV&If=FbtH2wK0003&02M-QfNJmrP{5E50Hh2Bgg5|c#|%a9ZCCXG z6xtZu{NOfV1L!E$Uz{vF529&d0$G|i zZWw_&1%Oa1zzB@=OwsD}#0(h>EpC&50{{Sw0j9rHD7%0O1s=tCL5p3)DrTe_@hc5X zzgP^is?|BjhwBdzgXWO1n}D={f*XC0Xwy1pc)}_Iz%rOgsLe*?jNjic17@(^8kO@u z|7V6pvJYRf@0=zW+-grf86?Sv}gEjm&6SrPH7_b0FBrCfRh*5ot zNB}qm$O>5~N9zGW+(?)QT{>R{+85*cH65oH| z%M(Vj0`z=K|F1uwV!)jc5D;I?2yOyi*aYE+aX{DrK7+S6{hp2@P#6FL05iZL$i@IN a1E^4T{coS9Mn+9xJF!t{7e9%Q@GHO^x2;wH diff --git a/samples/h264SampleFrames/frame-0471.h264 b/samples/h264SampleFrames/frame-0471.h264 index ae5b1e54d98b4ccfe4fa52b0b14eb102017fdd68..4801cc1bd711d909e46cfb37ea662513c6edf4dc 100644 GIT binary patch literal 1832 zcmV+@2iN!j0003AFaQ7nL7IRXyaj>3|AY{ZfC57f409JM8B#=b;Yq0%ffm~YusjM~ zZQ+~O>AT{kT}3EH01h}r0fNW-hoMpv{1EE$LaVczpKns+A-U1@5a8%rW6UZaK4({LpVTRa}^RQNDLHGa|uFwLWtLJe5 zRTvo>4t_uZ>KtH()kl@8H{DOD5Jyxnin!|%$b0|{ISF&^rFh7aDxdw}20#M{UU0!} zq%T{7r~a@300dl3mRJn56*o>!00|d>q8;@w>ig8R2t7`c^*T&n{1^k_N7!HhbvyuI zL`d%`aEi$1-~iw-XIkEi-UzW5TK||AhEM^U*}_BZkWo2jXl6t;u!%TbK-}619|t0q ziK1yA{k#A`V4ahO*xX$3P zx)h>cf!pRxhY?ZAv;Q+o=7H$nz*GP_f-eM=!lcu~;{o`f08Ri5^1vML8U^1Pr072y zU;rQsCxBo8phpOMW?AmQd3OQ<0Gb%M6e;gOWk3-6op_I@0;f)a507vF7=rJ}pjOQC z(n+t@?g9D_ll6Pvz}5MWIzT1BS9n|yT-|+&JabxT){YsO7e66lb>tQ0Rqvn#*V3Vp4WeG00uX( zDOS$j#Pk=jVK8CnkpT#*Rv0ss05|`5FcIJdw@?lV2rP*id+6i!>^|1N;F90Ti{_%h?tM&oU>lFi$x)A^Ohhjq)X6ZSIzViSbU>|^uJ7shl zIGB^en#^e=alkm-@Rz|MJwdQ~qeu!C!#oNbcmM(c;6kKQ920v&Pdhl2-9GzYx&UkO z0K!T$bPKtJ2U6mo7$<&lf50#l0D=N%4d~!j-WKXiWB>Z?n0}n6DQ|=M((C=Wh*Acm zFzZ|5QlFRo{q{6tOXgPR|2P4MtAN8;l`TZiYB5KLz9e<(K!ZWsVtD0C(281>wC{{Ta<0003& z0B$Cr2Co2kFaQ7nK>#_4r~#|M8;k$|0YLy2LTUhN@B~i+;4%n>v;zPt1s*K64mT(O z!aA>W`}h#Fz2CrXUNincn_LsXXyx)u*$OMV#;yIn|K4}sXXfAF?2st~0r_wubH{_dedUBETGinr%IY^Yc(MP~8B8Ab9aL zDZlLjITXNH1;Tq^6Kz}oPtp}|r8~^H(0*_Vpbj}D;Ko{@gwlu43+mzrg|)g|0pGUT zEg%2)@KyG*gdEpA;8j55QdmF^ZLgm^F9K@ z+C&B`)66-hgPg!#5KWJmFyCk*`~NXQJ~lT3t`$O0I-kGbJ@sB31tNxe-LRP zC>+J*FoAg>^MK=J6FLG)!(j*iSF@y%CI3r}Ja6bu0AxSYzTbcz=lN0r@juBO-k4ZN WT(ldMzsQ7wDV>84JTC%w&%m+y2`Y#H literal 1484 zcmV;-1vB~p0003AFaQ7nL7RXYyaj+y00cH>cV>5HcXt2y0QLZ6I0P&p?g$w<`L4n$ z=o2vkDhmJufCMoh_iZdwz#jM+nZySL5l0K%Z(kYek@vO?2Wr#fe>hJ>3U~krup9z< z;c&{P&6WZ|U3c zv4|IpgCmH#csYDE7#jlsHv)h<8397VR3AfYme4WspY{%50-%ksb*8p2-T(lAxGMqz zlvc~R)Sc3LU^Ldy00;wsU>mC78FXMyKmZ^BAP@q=LBvD_IVn@vZEYw5$B`KtMoh_* zegGKe9O0pw*m_D9H#C)fa4|qCGLsa~fEVyTArdb+0Z|#N0)!LBjW+?@6oN299C2gS z@9^9lGIFMY5+ZzJD$Un{vA_%5o)x!>Y)8cKh(J-1s|LeQQSg8OKo}?S=2j>PJx6Ic zqwoM&Mjqgzz_9k$<|j`1k(iYZWnpHik)|ha14oY6TA5ES60DXm0h4GG>F3bO5 zU<@$AqiUl(9xcF$N=^_0a0U(Gv8il>e?|}Av;YABP*6%tiTQ;(Fc9y>o`4(?qnC!# zP5Bb~o(80dzy`Yc5+~V|;OKY|%i3OR-d zvI=-V(f|Pha~g_I0QMrO6WcI0a7LIWi7tbkb^c!i7+6jh5EmH$aq)dRlT<+4uCfDp z;0!5AW^r%|7G0{uS$M?7IdP1IA5esW6fgkl+6Dw%ZCc+Q{o*nJU+y}RnsxVui~uZW z8ffB1l{omlG0KCgubSUIqy}Qc9+B{W@CrDavTKrZPH?m#a z1R)G6p&bvh%QyCnz-2swCy^yb|K0;GL9;3wZTxrm5Wo|30003&0B$DW2Co2kFaQ7n zK>#_4xB;uc8;k$|0YLy2LT&(R@B~i+;4%n>F!Bh%1EC>hizTPO?Z5()e5LxZBzS+j z@G@HQimG5u&I_UcvS^EA{d63-=9bw&{0czo zA0=vg|A3rdDXM!Dq1GNe+h6Danc5X7DUYo_Dx|D%0;~X`NiPDU6GK5B-0-fhAb4A? z(%=sLx22>1{{9L6)=-0*+2X>g2O4VvH1lk~K6qXP()}1lC_wP1gu+EIH*o`JwGXl= z&42j#AyF8W5cJ1wgiV3f79@&%cm7z&-bdplC7gf1^AscFp!^4%YQ&zWSMOk;{8V~y zDHIwfTlw8M{vafj6b>-HrVtadk2n+?IGlj3upxLfHMK#-+ERH~_6L*++f< m06ouaQXpG*`%$+wJS^^v22+>$5W_jo*TILL6@feF;8=jA`E!W? diff --git a/samples/h264SampleFrames/frame-0472.h264 b/samples/h264SampleFrames/frame-0472.h264 index eb4b91c8f7ea20113ec89d0d82a23a6ba39917e5..1b52e3bf796930ee38917717841e158fbb2f8694 100644 GIT binary patch literal 1026 zcmV+d1pWH}0003AFaQ7nL7Jc%yagvHLm2@&MdhI9VT?<`2stkfAkXuDCd|_Ss^43X0Du5M zAfk9PC~G004j>=Z{8f1t!K+E6Be6;{kvGfMG;xhJ(0coCknFBiqIKoZ=y? zJzf}OIa9CwO+bUxiCyJF`|3oSknyT?^8ut$paEu-22tQ8@ncO1Oh`Te0x=?#tY*qr zW`6(yfPDlaoT%3oXn}y5zXd=v0dl%nK-s7c;Rhf95DfqU0pJ~eDj!Q~*$IMzs)hh~ z0B}4H%>o5NOuWDs0OJOa&YDaa6^Y{5-ej4HzESRR{y;N;1A|k{F|ibBin#m13_zxm z@goWn6zM|11HJ$RKqwyUW!MxDhl$z$!T-eDGiDmQsACzx1>-0}1zdwfnrPji1OgZw zV+H|tgq9pLAM0nN1@-NJ!88CV04SOOz$6<{2g4P-9GE}=AW{GV1onl117ZK21_*Zs z00IP{03biuWB`0O9sYo16p$V^YC`rPN~Tp1gn-A;A$2uIQ;_H z&6|le!Uvg?NZlqQF2^_Q4&Kms0Di(O)n^00sl_!yNF z*Si~4Z~hLrc2pT3>ELrn(G6KOcri0hzkk2MyNR`t(4^DC9G(?{Hz2^ISO60=7_-O* z$&yF0{qvXsF_AM6VoTO@{1nlxPqX*u=r^85{f+PV@Is3*E-oEk`v6cMO84C<$78?! zJS*^sQtlk11Q15GfCaXRX2~Ca&k9hnH&U)-GA9i#Fahj~`c23G%m{-|KbrJ4+RTX! zbem8AcZ3E?zF+4f|NqQj8$2t4H3~LCTa56+M7EJA$s}LD{)gfPTBptSXWvatdc<8C w@iR8yfhqv2x>TGWvAmX04zl6;gXgt`hwr~!)&K4ML@2l9->vZ326#pSqJX5sga7~l literal 1041 zcmV+s1n&C)0003AFaQ7nL7Si&yakisNeBe6C;SD2yn#}+qb~w3=`;ZV61X{SjxbAH zLBBgMgAqZX;P6%pf`cFc*)udG%Ib)`0t1LRt?SGkDWwRJ|8M|{z^2!b2rwt3TULMj zfayR0L2zWG06GjsZk1~y$NumD3_t~w2ttnrV}T}8y%#Y6JRpuhaG=qt9s~tVV9q2j zbobtX0s(}|Gjs$5;;R?4Y7CnLDGTsW6 zZ{Wb$fLr0W1r@(L2#;w+j~G}0D$<2KVIb``xckIB00IJnlrV^?I0Ux1laGKV03d-) z5J{!an@oVxMe9;{7&C|qE(Ay{4ON*+#j~W}00sgGM9Op?Y}9x|+UPWi-avpH9)G|E zk;jmzgcHC-3lqEn0OQIECj5+*FttmfDGA@famv6nY}$D87Op$5F=?^{00Ig}g^q%(h=mxIYqG~5AEsSLmOM7K*`s&=f_pLU}ha zv@{0^fA~J{(+n@go=86sED+x8-y1#qA(hWbZy48dL=Bpr?hQ5IU1L@BE1fdmn%@BlfqOEyXO{NSex8?`9sQzQTX z03OMIEvNtF2B6c+K9y0Q*zzPbNi>iD-O>h1xB1!s@0iUeg>WXJM#w6&6yN48I`eK5 z$&oz6@dB||&Gg3m<4y6e7ZzrSgQBZ6f>yluTJ>cB19Vh(>HdDvA=_>G#{c{Lq)YN7 L+sqQ45rC+GBaFP! diff --git a/samples/h264SampleFrames/frame-0473.h264 b/samples/h264SampleFrames/frame-0473.h264 index 9b243c0c9d3c247cbfa3645c008e659fb381c4ca..c16e5f111b9d18a36a846251547bbe4803f34033 100644 GIT binary patch literal 1533 zcmVEM%qsCmRd&UM@7+tT+y}8&6}tS=MDZ zdSCn^0w7m_1B1d~anMB!C<0}IJDZmP0%a2#XHpuJRe1mg1qkIE7xs3~EJK@52){=7 zpaXy$l+gjPH@IP0WRh@jN7fjadp6^#yn$$o`~iUKIracLv87KE0^|pHi3%6*Y3SuU z>;(V;0Who_G*Cx`IBz-H_ups-Jra3=aF4Z>JAd+Xghzv~iRsX3)_~%Y+sK$c=Ey&0`Eq~(l;@T{ z2UHwkHWnS@Cj=1k4_XQ+Dhy-~fj7^CT@HzWh&r$e2mHSbL**|QOK8JM>;m|^0ws9R zocD=hwlDw?6(FDm4W9|*DLbz@;2|0qb?IYnNfFyBrE;|UH}Z?KZ_nrLY;j!4P+lZm8K}| zWT=s(dhY-LAOQdc0?nqGL66FuKf!PRcmm)6APT@n;Io=!>pU_V)`7qSSO5qB&qlyn z0mR?F@jw6|2v7hJ3M}vd!l)7hrNZ6VxBxH!IME#bRdwGA6g?&YgWk&X1wg(>1pJeJ z1|a+Z0RWJImyz;tg6!&WEqV$&x(v+f>oE zzvHElS#V4c2BZ}LL+Nh3#>F$Z&E*!Ru|sBjViaD5n;Jk7Ff1!CEWd&Qc`cYA5wT4` zK>LK_}Dh6ZBWI~;e zUycd>uowt;c++A<>$XaKTfvwqV!x(Toa&Ox|NWo<2m^o=W+r{YtWDCT$WnQgW_``q1Ujjkg0D%>uzZ1SoR@*1^UH|}q*u$0xWRUDzqdy#@ zkW2!97yw|eNdO#Q+PDU#EFJ&#goO+Dw7leB2mUYsIzR_N4B=ci;2<)TwQn1Xw)M4b zz7P7ExBq?-fB=AS3JpF4&=wsbKVHj>Hl#QL9e@A;0YLz6Ca?yt0C+F}00BV&If<+R ztH2wK0003&02M-O0BZ0KtPBA7!lw}p2#NqQwJTuE-KYvcK*A!h1JSfNk5Y$2p$i9r z%MI3`0p^i)@~3@z2Mm##BgcR19NOgp><-*I?2F6XpCDl}Q@@wM+yo3lEFr+2S@(fx zE}+NfIv-?F#E@drZ`r}uXNMcN^ubaxmzvO!S^oWaD{VU=vY-8+SOW*znQoW(`{te% zfi%C@IH0D`Nz4fN0BRjM%%eGYkUla17`Oq$tn}kbralG-v~Wiwe4n~no&8ZTsCPv; zp-0dhePlA@vZMF=7xK!7+mH#Lr()C!0N_ag%h1&pW!`W9{Rdf?gQ{Hn0|Y($-T@w| z!Ux~YwPO9s%FXyNCaH2kz0FQW{``e@g~*%##t0f~`Z=(KpY}`jW-!DMH^FuGj<^5c z{sx@(+Md5E_!Vwr(J)dEzV8nbFwl>mf_!A|aQuQ2sC+$|N$uJSz;cVgq)Hy8`;o*P zBZu641Uzs6K8V|-ukZb*nv8`J|1Wp|W~siv|A1rIze!^ues5`wAr#0b`mq>sH-Dx7 j-dXnZ8VRU1V8in;oOE{ChdlSktPO5n1mPYd`S=Q$Rh+3k literal 1156 zcmV-~1bh1c0003AFaQ7nL7TuDyakiQfp}0-00;;eCNnz3N)ik8(JkJ50Kq`fmvqD0 z+i*oYK|??QtC%Gqu!W(@XaL*x0R`1eyaWIO0C)QA03Z*g$2Va3e*#3la3}=9gfd`2 zGwK2W1Ps6@+;f{67K2|pcsKwQmJRqnK<~=i?N9@QfB+B(04ZQvzN^HJ6c%V=b9sr% zB6yYs7hhf={{R3W0HMYLY0FgfEWAYokS0xV!2nSR{6L10J3fU`C}}U?lY)OkdCtabToW024w|_(b2X z-`GwH3fFw}%SYmLd+s3@;~f}etoLJE1#yp9g@69P+}Ro#1tEFQM+gzX2x-I%30x$y zoj#xb1_j`O#5CxzhV=>A9@p*_(WUT8Bt8=cK#V|SXTTT$2n4!-QiYj`fgx-AXs{T# z!;mYi>Lb@iqyG2=2z5Zh1cjAsfSI=u!0LDzM4mx}|NFpVh_dZGRMba83GNGMJOBWI zDZoKXqNpl;v3=moECBcaa0oaKQ^Ld~XG-cGk%)13gBU`lQP9`Oo1t65WB&jEKtvsm z1eg{9oLZUzI002M_&;tM{4>_Y!^kP=# zr}rWOj35ATkq6F&j{&`S3m^pD0003&0B$Dm2Co2kFaQ7nK>#_4yaB7g8;k$|0YLy2 zLT>F&K0p^k} zwsfbz&?sby5@(Ko-YL02dmJ4h*JM>MQSyO^lUV*=18@*A2(X6(EhguHwik97ncW*& zq2$=2(r>1Rv%|uEKd^L+rQ%GKTmJo913;X;Ic1q2_OJni-A2mnpTpg>@T>`?{<*~k zDkYYGRRA|CV9A7X2?=39F>nKi2bwCaur;rc*yKO{X!@2*{-~H&?uv0jxVK#sM2n{8@9GF5+`z89b7-9$;;rmTE3EkcXoc8*jzbg0^ z`Hn=xk@vg9(lFSLkH{sa{N)+TRH%GBmh;=SZUM_^ybAdsm-!q)!Z|^X0ScA?2k4vX zUqAo(hqTC1AJV@t40Sg#|HjY>h^_r4jD^Q!%%Lfe&)ra%X}kR|>&rggWELhp~rs$aE}rE`~^(?rt}B^ diff --git a/samples/h264SampleFrames/frame-0474.h264 b/samples/h264SampleFrames/frame-0474.h264 index 3ef39ab3d98e83979e62a7ae9efc3e6889d88728..af4d7ed532abcd6fdd7ac2cbdefe24efd1d80662 100644 GIT binary patch literal 1692 zcmV;N24ndE0003AFaQ7nL7Lziyaj^93oz&aA$K(FGE%Q4k^Kx1-^9QR8megidi1`c zEUk<-06cKTw%sfLzrZ@W+S-42(+mVX*K~gT3bJ$3AAWE!Q8%wIv~#Iu@&3>V03*fb zi{1_hPt!jA$N*rbU0Fmt`yp37kgZ4tHKBnOQ%yLugq+*}0DudFFS2SXrs6;F-RM9d zh3jinD4?qARW&i>KNt_@6z%RIU7Z?x>Y_0%>H-HAM zh~^53J z2t7yualMfYSO0Ms2n@dZ9?3#WiK_qb6I3!J3L=XDMPN1TNKHApJs$iK+;(=8K(hq2 zUOV{0cQMEnnu1ux^f`S8&KCj@!-)zL000mRsH_7fhg{yi1_7QEh9FHNtio5S1YFY- zgyUzR#kuRY2Z1MmdcerOk1L^oXagu_A)`H9x*-3q0RdfL3{BHtRJa@n63xH=_z6V^ z5Cftr5WjEU=fXmA*ZTV20Ad5tEQn!0C0h;cs>en0Odo|uhL4d z6EZI7P@RT9gpO85=$+mGVJHwL!VYClbV9fTb$|)u?7mP|2tq;tpc@C{JU9WETF`~o zcS|;=vH%o-BUU;KX6|bkB+BVd85uBx+-4wjZLlx3H-d2g|5(*k|G)I_C;zFYk(R~L zdFEa_F-gF1+tQ+cj-(dDEhbSMz5mY=vz$1xOHq^LI#>fjrL9_5dEmeU2Gg=_H;p5g z#R4=J1puTl9~r44UO)q(Ivj$lebl@C_J|A!hUX1cu5bLm_Xz+P2b(|?C$qM zpg&DmJLH98Oit^7#S)J6+oW3_O)M`z_5`DHs7;z~#)^bg9s!{D1);9KZ*W z&|LsPhYttp2ZGff$t4d#q=)5z0}+U*f~!(ORMdy*ASO&;U;*F>{YJq2t{4*@4nW*d zp^NqYUknBeK}WHJ06{s2cMDqRkowK0UVZt10Dx~O2Lx=Rq4Dh4yo{*)H!uJY2>^5N zG~v1-DU#*y&)^5n3{^9dd8s{tAGk0!*oBggzX^Mm|5&=l}u&tV{q2OMC-q1POiayxSY~I-KIXOaPdE00Ln3#RR5T zH~is%@BmDVWOO-#3+=Q?vfC&R{EUQFQymH-R;0tR0WHG-3mF#5*Mcn8KlcaV2zCGf z0YLz6Cb$N#0C+F}00BV&IfPw|J4t(^L}^OA#_NBU0AnY z{-EcDU`;RQE4YA=6t36bf8W#)O5E$u#LGSY|ACB;zTOiRPSB@ literal 1590 zcmV-62FdvV0003AFaQ7nL7U(jyaj@YA%zIw1J#eQBbAJRArGJ`yvjhn)(I!3`_=Ho zc-B9sPAc%8iIMd$;w&masKI~$fpurx!X|!xS;G&-6@5sqJA{7nA-JgGQimnJVHgM` zUr!6Fs$Hl5`CxjUVQAB<4)1`N%@7P)TVW1f{h>J_Wu^jRk|K7O} z8X_4BFfvxEjsl}SsYo=4>)BYBko!QG3wr`>SXWht-)H~^;NH{07O79ffY)tzkl|81 zxBl)7p_=uU5Dqj`YquqB1RmjpFqNQ2Vvqg(06~sS?Cit%hkBRe#6*t;A>ojOT#jmU z`~n~W$5s#^t_GpeM9RV70K#Cn8(TZ35jeRkfD18!>G&|x&$B*qAOEA z5dZYxSCeJ3ar^oB05h0REz7s0Q_uUjAOZ~JqnR7L>wkE-(DwWt5#|;gbiiD}2`Gt7 z06ZmPkq&1lo~5_I3_;g_c4{e2&BMgSr&P-dP!1lBEh*aHA_1+8-cM*UDX=}$L#VUGXM6FH3Nl()z|r5A%6Mq>g?j<-O}Izp@A%4 zBL!oBBaPt;hNh)VNkq4UTHydZ>;Mb_PQnF6)2Jf<+NgxCqGG@I|FJB-f!JjR95yrH zoPYv-^@Xm2^d+Q0`~ii~w!hNWRHEn(s(?NK2mk^AU<^=Q_Yof)5vFkGXgm-?hdiPN z1UOLp<_weu8~_|-fJ~FXw#5#%EjK9p9K&$&MV4z`zVO%tATF|FR}eeA=qn&;jTqnn zAcTpy009M%01zgW5Bt*iFAxMUz$6L>jx*z6AV!eZ1nCyL(ogVU3P_PQrRizBoykk~ zJ>i@IKw0#Dd?vs_zb&&N8`uB{1P&2bq%T$rQ879xhkyV;1_ybij-9CP?t0kM^WnAB z*ddJJqyKj(Po;0 zRFxw1fB{+n0s+k+0NBpU`EW3BXTCvk2Rk){#NkK%zyJsU0S*jgbmoO{SWW^FFduFP z8x-&mo%`T{Tj#2N@qhq;kO0aG2b~}GjXMyIy5SfBH$VUY0YLz6Cin)g0C+F}00BV& zIf=djtH2wK0003&02M-SfNJmzEDb~@UgTVudmu8MM09^JGSx!-pZvY?)+almL z9wU;8N?1?u)?Nt$JNgK>V+n{J1O1q2j-JVB|F#aHLeVszp80<#Bt$busdn%PPc{}u z7(;*afpZh-;IgI9ya@)2@81?BpYnj<1t@_&fV3#026N$Me?RcZAsSP??RZ`=Fiz2G zQ^QCI2?Llx)CAYaD6n(XAPrWrb^02GtMxI&d;EdtTP>9=?f-p$LS_lJnS+jxIr{ee zVOH8bwB>Kz_z+va->Xf^-)&=${d+n4+ z;9qD439$lFGO!Q?CQWrO4u|1XpY(x|r`|!~}pP?(X}c0+XUYv;Vgb!5^h=)u4paBTvo-0;H3Zm!nsE+}L oTUkIcKo>*bAXBul(E3^a)Xv_wM4vOd0%0h=Cj*Iu!=HfpfJgYsi~s-t diff --git a/samples/h264SampleFrames/frame-0475.h264 b/samples/h264SampleFrames/frame-0475.h264 index 4c3beada2f623b5b00f350f156749da9de5114c3..bfb142178914ca9bee4d104f73eacbb7d24322fe 100644 GIT binary patch literal 1306 zcmV+#1?Bnx0003AFaQ7nL7M;?yakU51v9RLut~LekVY%O12)^`H$DIWfM^E==pole zgG;ww$uk6y^Z*pV06;n?pa38m2?!rRR%%7O3=zUvD0InAK2S)Xw9@z?hUZ|V4EzX% z$D&HK;?RBn(!daZj4fPL>$-yC089an5Tn-nwrr|RXYK$1paP0TwG`?iJbIe1aAo>~ zr?R2I1xzFV``aJ@5CS*AKsbP*r-cQ?1#i4y3`pQ1uxiTSOHD#J9sn2=;z0?dD{GR_ zSRj)^6(DiC1O7tLIlJO0QiEDTf@gD!!N)4ej37#D`enLk2WF-zZ^r?4T=@*lTvdXp|SOLgFukpqmBKD!k z+NhBVBO{%#0LcnFHc`#{pa2iufC2^$zlDKQw}{vP2ncSF1Arb9-ZV;x?8r`5Ihdm@ z!HuAx7eK@Yp`QQ(;;1|kLZKyih=?5)%=QxyA13Uy`|rE}0RbKWLqHXx7azNUezrH_ z1-A|W0D)yp03neR-~Pa8AXKdMA|+6dd%M73QW{sz`Y5kBlY9UH06~}N%iV;afiK&F z92WIpbSWOS;fe5_=?KFkh%pWk}}uhZH_5Vr9u-8(=Qrc1PC!Z00e`FJPEu- z5NUDV8Hha01w;h+aM#cf08lW3aYCF5p`Q4OgWv$brokkx%0Q#VgcN`HKQbTyXLJl0 zWMljEa-)cB^$HO66nWwh|L}YO0Dy29dfV`kUFehYZ4u8LS6}8z3j?yk@2`R23M#ND zDm`PluH`)QH0tIM@Z{N7XLm|(v7)BhH zpy3|*6j*!y0H`9oFDFr=ChNxe;Mf2d&S0R~-^gU-6BmLnumCWtTfl;~hwwc*Wp)Xa z0dD>Up(d|`{}=!rFaw|n@m(^oX!`<-y`PO;OMD;2PyfD<049)t1{io+WlokJ903l% z0003&0B$D02Co2kFaQ7nK>#_4umP*U8;k$|0YLy2LTmtP@C+e;10WIr&;(?HAx;1< zy6kzs|8xMy{+|8(@B;|)zB0;H<{d!~cED{2Gyxc3P!lT7EPyed?*dMHju{C5`QV7MiDncK_y1?it=x;w{nR`s z0zzY4PKA`5-2%gPX1A&nr-Acgl$AX1|K0ew;0;1QN#KBIF=I?t08x_6#Q+0Q>0SaD zla-O5|6BsL1)Qq0BW!=Lw-Y8_pY)NTne}20-~?^;fBwHh1|re2sIPy&pdq+bw-$7d Q_VeRZ{!_xRCw%+|+;c5Bg8%>k literal 1057 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 diff --git a/samples/h264SampleFrames/frame-0477.h264 b/samples/h264SampleFrames/frame-0477.h264 index adb0fc9d71514f1798b3369d0e8b27a328494b8c..87886db4354a9023142cdf092c32c19de01b3052 100644 GIT binary patch literal 2826 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�vOJk_%@J>Jge*UQUI_1BWHlwk7eQXc3kJdilL~lk5+G5Og^eR~@qq!MFKSTQAL+mVNC*e@ zf|8sl(-^@#XY{@dMFxX|!B{Q|41fb< z&7mghsEgnrbAd_Tx}A)W!cDip1X=|qy}^YJq<>|<{lMu!06{=hBmiVTK5na1?0@b6 z126yx1B8qr!Dz7GAufA4o8WH7)}Lhw-RV!m-IITG1y2nO?@B% z*f0SZbnqJhl}zFP-Qxgd030`It21W6syNfL@L>o%^V}eS=^|YECuJ-E1OOlaC^{nK zk8df(bqCzOFbjkO*hm$K3ykm#0|CO+LvWe|F*8$VnJxey0tQlj*eWV}oWULqZomWp z3hHnhuUM_de%qX2aK>%=Ro&YWEcOMQ0&?*m;JOKg5k~m4RmuQ4& z+dRBA_*_yj2^B7$JOpYDYKodXfPer&0pi9*+=S7PzOJ|o37P{818ZwSGG{*pAaLLW z-2eaqK>%(hkOr>+crX9}0YLyciKGFmz#EJJ00BV&6+&qMYVZk?1Hcjh-~`}^OBsRy zd*(nAQ2u!1_g4Tvr}dlf;0Ky{l3uEZoggZ{{WKr+gZmmF4!}?m0#?0&z}{XAqkqaT zB3Fc-%*eWo$J7oW=>SE9)~1%M|NY5sXdL&rJo)yzUjvX7GYD)U_*RJ6dB+jG;kW(* zuKETBq+9STQ0;~H%=CJ!_nDl^3GuA?;W!gZ`d%<8vb{_`I~8Nn3#3TYYr^6^>hGQv z%lB1^3RY=UpwlU~8vr=}YCr!Uo)v*Kzh5B&0b)e?m|_2G0uy(1_X73z&Ts!qnUy59 z4);rdy@}J06_1yZikEc46OaQp4RHLB(UAx}Uxc^Z+I=Z(Kv#?(n9z x-#5z2hhPsqrUv8#PDy3YT08&M3YFUq4s`oZ@x`mdo*=#do)v*O{(nCJra+pSq9_0W diff --git a/samples/h264SampleFrames/frame-0478.h264 b/samples/h264SampleFrames/frame-0478.h264 index 40c5990e3fa54c2dbc84a34a5c7edebe971e6922..0625b50303e47296c4dd0a1e08217a71084f0cc4 100644 GIT binary patch literal 1404 zcmV-?1%vtk0003AFaQ7nL7G4syagX9Sb4gDSRUU}-+n!DbtNw?28q~DmOR}+EDv{& z0RSpLKp}N~zRB7EI2lX;FvdeS?7nwa9vOfkfO3avLnyfwK5>iy3P@~4Qrd||HZ&;s z7My?pKy&~bw?VEv-WX!WmVIHC)^1|C_1Dd~>Te-hB7gV{9Rw~w6@ntRv-J602l#I&Jm$GU`RoK?OEcS-~b>J z065{WW%uv4&^c+4fOulR-tb8tZlD$inn5-9W{1s0Yi^V z_5bDq2Kms1l>j?{$Av!@4UjW|BjDsx`f3TT|NI|-fDVm-Fz5-_L@$QRI&BA%rHinN zD(IxNrvJwQh#(gwD3Us5gj11f+h3nK_?MB8*ANSnrk0KFGN z05mV19?C0cnuRfJ~T-gp`KH4E^$foCrJ-OyWB&T$B`a7C)&ec%K^sg1~D) z0&*FFhKQeBm;xpNN5b<+AdyY7_Uu4lnY7OVU;vJ1+gfYi`~QBf zzs!K3*Kcy`{@+_v*nSWUt^^g6rKIN*4eV3M95};joF>cWpgHNcmM(c<^mK2dBC}<57YV&g&_0B0K%`>2S2P-4o2|*|Ex%2 z?A<3Z7s3CS0P6t!1ZmqVpwYy{fB*o3EI6oq68M+^2m%9zlMd|QlajQlvcZR%d9S@A zp`d^e%(hkOr>+crX9}0YLyciKGFmz#EJJ00BV&6+&qMYVaH|I{`q!2+aTv z@2U^`@PO4F?L4{vyqEkB08j%!6or^YWH~~Np09Y3V&4!;GtPIuFd|uM-MpN<^9^N11JMRKEU=2 zRRO>X1H#Z(MP^N_|M%lJ5BGke^3&M=y1l@(3U~j-*V%e6)xrP!7%`oxso!co))izk ze;@Mw<%&Y%8O~)NJ)kJ02e2m913|b<>M-1BNX04Obb{0l)P)b0LNS3D20u-rXRFlL z#KD{jC4TTTIZeQL&%A$XPyu7tT~@N=^9Fzh)CsyJJsEb{hhDQbdLURvDE*+r&kOhy KgntqI`~y2NVsIk> literal 1147 zcmV->1cdtl0003AFaQ7nL7HG1yakiQfp~aRMDPGWAYt)|)uK>mC&RYczSq zs-##fa50a8oCFdN|61%!)DxfP65R0404UKGElg~Xkch3oVCV$yT%ZAU;Vxg$5OH9n zeBtH-B1-@S$VyuXnycykgy5jAcg{?-dM8J|;t_r^(FRJ-b~UhAMamGEf9CfyBSRs= zFSwrIj8Fm^aRS1Z39P42qyLY|EOClq+~Ff8YQJ2!pA>xsA1asF0*iJB~v)qXN+`3k>EWC}60PW&knp#s+|Pw!op` zMkc~7mW4%V8_!3qmRFo_002N77L5VK#8NDK+bd+Z-as&*03Z;i4F=ASz~uxaD#_4rU9$K8;k$|0YLy2LTP|%@EkBZ0YJmB0&8@yfA{DHq04^uqUPVF{{z4j0MG>? zW&{E~oB&(#Yse|6NbmVyfB*ehFjG9-69EVj=YXeRmqG?Sfd2jeFZdh)pa*~~3xPlu z2ffER0Gp!vaj@x$(id&{PL>y7PA{RNL?MbZz!Z45A^OJH&>8_>UVU%RZJv@jT$X`^ zUfdjN00lswhq{i4UG$MVey}ls2G$MsKHXWpn>PDBqcbub)Z;gthRL4h z5hnlGG|@6`cr#$ffCTl4)}i3gO}e~b00;$u0D)it2qb_UOyCdzqCn=(GDn5Cf-tbu zyMPSB@*RrZzu&FnQ~oMix8E;sh1QAL?5Tz+dLKLL`|M&nn5EMxR z1Q`=&%7P^f*@ytf%i@6=3xa@Z7!QR4$D$?P00qQk8yw2wQg`>-L4qN9hn8}d)nEHW zfG`U)z{6>H>Pq|j#Ml5fyMPg+j=+HHO$?y#N)Hm-B8eq!|GPrxhS=y40u?K0 z(xt~I)Bq!)$N;h_Gy=`;_rd%Q4^&?z=qC$!WWHDcB$*AdP0A;!DFy@LK$$TC01E)0 zRA>pvphg5Prmv~#-vt@Ch0OoN@Bl;rh+r5L2$ClBLa;$FieN+qzySjku`0$BWi@9B zP97lyr3VkPaXAHNYShc&ls~LIAl1x7cOEER5IA|TLMGoq?}C5=8Ne?A{n%E{m0;e+ z%76toQxA}ies2H(Ks@Jw2{v%4$sJ{T=stA=DX9TPR|_+n@$piC-wJpHV8;_=1Bsu^9 zfh-ESz*IA1Z^m9|4}b$^Vq8)Tdietv`q2$J3!KhUJUb8+!3;0}y+ffd`HyYKVEnWJ z4!{5a0YLz6CYT1V0C+F}00BV&Ifq= z0P&`)rgdlclR553R|iey>`dhjzQGypI<34Rd}#Oc^FQk|FuBoKrB?A6M= zr&5ZRwIIMj(}WH@Kz|}LM*K63aK{ba@7NDf#1=5!=YLe+BmM&~zhj>Npua0%8Y+h0 z?L036X?z*N0u&e!P+6=dU;%)&tHVFBL0TsUI8~^5%x6uiN+*s8#vJ#yA z^Mjrh@Ft*OOp?e1t&>e?c^x6zl?Vz^P4n5e*@9a60O-$rczYQ3T>KI|PPxE0V?^u7 vItE17DAbax!>0#w2!h&*=Kx@w|66~%Y>~O_ijqW#fxvwXB literal 1123 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 diff --git a/samples/h264SampleFrames/frame-0481.h264 b/samples/h264SampleFrames/frame-0481.h264 index a29703a3bbb277a8f83b3f09e1cbaee3f5af390f..de14b972ec2ceda4f9361c2a1bf236cc09bbf8a9 100644 GIT binary patch literal 1703 zcmY+EX;hPU7RLYYn}t9_5*8sqAORU6AWBA*MV162prTT!L>+c4OW+7@ZCC~(B<$-{ zae*2Tsu3-r7DZ)gfPf2;%?*VEZ>2y?DF##wGl2}#GwnIOAD(m1x%b2G+~=ML008Ma zuM6u^op}dFK_=Y_gYO&)`tj?Ps@J%e|%n1iE2ah*x!M6bT#gT)7BP zbV#7S4fhpCmKIXihPhXA9KUOOYR^C*%aWj3{9dz4#=%diwl*1FZ_s?_XKrwZ!OO(1 zdxc}v!dM`S6%rP(lq(}qThm7 z#`>e4p!lBRk&MpQeN?5CJ)t8}0MH6Pzk)aDjG*p)Q=b&;yU`79HciT$3CO|(>JuHf zsa?{DXj(2O;QDU*ku@R{kWk=ZShDZ)(m{%&woPF2U7a%`G<>CW8f$n?Ga}=IStXun z1=3{x`X*e=YRzC|8i`AUicSQ$0z33|`56r7q4?!J&lW(!u3rQhAMI)K-LhzeBKsm} zJQVgt1b3;YwuD8LLVEB?NC2P0rful)5eNY$VgbbU)_&m+oOGBV4UlkvqHCL8I;1Qg z4Q6w+t-un4scs42+^Qt+8Bu@?c_Mou%=bqGbP1Y23S^S=0K4^46Mp%#{RO9n7GRV! zt~HQCOJ5P5&QJj~w98=5TvGFc`T2;RNC5a^nj1?tVU&MAtd6zAgQ#Id@64&Xm6-aA zMEexe6?F|UV96&N2#|F~pm1*%l@H+zPs!~Eckq30b0l~ui4XXZmw^-@3HI6(r)LkL z25YgXGp&nRe?PpyA0R>4$J=)e)#_Ee6jH6;RkYn1?=E;N4e`rup9$BtxI6W3t*56g zS^x;zHwxT9%LB&ML!mdYMw?X>bW9I4P36T!X@*^y!~1QmC=g)Mp~lzj5WGxoKJLr= zSz%7r(+hID+_({+^`iCdzZea{X^&;Q>~hErwu86_%o(?1Hs5$R=ghtTx?K%uPP)}L zk9Lcq&sS+X0M={^;mgG%i3dI}dxA$1*=z_ekH=Xn0YN*7f-Hcp(Op!Yue@=8#%@Y> zr|{ADIWj3$jnWQN&?vn)&CwQ1(fY5$b%3-<&IJ@=K}rxh7~mlG7$CVNUcw5?^G0dt zA`oq&e>JbWX`w?`sIgCRvdWr|2K`43^gP}b#=VyC$>b!CtE0)j!!{R>4-)W8e!p(c znfr-h{FtFN+$aSkeRmbS?}EdL17?x;*X`o&0OlrYVx#BWWOuB>=+_J{?D~4Qq9rmxsS(Flke?(ar4y+GNWy2PI$o8f&Tt%>#4-5{*YK%T?H!pvOBe6);?;q9(ekIUkus-?p&|`} zAs&PZexQ%fFP^g}u-%IWd(JU;`q}oz^d6%Bqb*8bsoFeKF}A@lzFy{&Il^R&y5coc z{~j{wJ4Xr%Q{~(ZMLSF3SN3s{OPAX#L^E}`ul|=t;MgWHRswjxM-y-_YJzS^ElPi% zZ1CmsxvGCc0MkI=qZBp2NUmv-QKf?DFxGzYLjBrmY!I)T0!9MmhuM=c=mU|`pJS)}qtxD8?>l@+a)1q6Ki=r7QB?~5 zR%xMSp3*NwMA`UWloxa%L2gU{-n{LVWg6qvq|-*96@*fHaxDg z5D)9Kb#QK%Lvd1cH2<8p%TJtIlM@Rrg(=sewI_zIYm1ZtncZ1#QEcAa+%y7cXkc(e zu7d_^!*FUKgfotn>AFys=H9Pp)^dDAL;r7d9_~T$jd6xB67o`RqDQ1Bla&(()PS8y3~q|x%-lVmrq+>aM)(5tz1A;&XO{i`Umx&_#*yB@_zwki}m0D literal 1542 zcmY*Zc~nw)82vpSCvVU6LOP50)qnx;+!VHb4d0!Y%K40r-eXifj7um3`_Alf%~!t4kz>Lwl>f`G8>B?_%{Si65x?F5P~T^c}~nYP0?Ct3$CIP=N8@J z+QeSZ$=65#uyO!o;%%wLXUDeVx45%dgHdDGGgYXFU^`vnnoC zU0Fb$vtlp187+4($ak3TA7L&bYP78l^h!#kI}RorCOX%qAn ziCeQOTb1p+@WS>Gr<@=o6)=ZR2q^JrY|o-`^Hnt&G+|uF67TtqGJwUp>yTaYGh+_K zSyUX+VHTI;5MjE{S@UJ;3!$Yd2tYuRylZKlw=$>DI#1{}a_B(MHUxHojigSPd5(Dt zd=_6M;lTC3cXF;Ssu^>eDrW0-1R(49&S8*PQTq4Mevis<`pQvky294#MH_f1dO64wra%&jl9n&KW+#!=-f zx_Xb^eBTvortIbL)T1nPMgq*W3?g2JW~X&Z*p7OU{qp?vv)MHKF-!t+lFsQC&;b?} z0j4il<7OklGnRqP$+nj#nz`4jf?bV0pu5(~^i7Nh-|)^_J%sR_b~^(&VSf(%OL z!CSHd&qegk$al2@0oLml3-FYD!4VJ10NSk5fwwVS`w|*@{H)M^6Yl1S5r5_tIecjs zi^+;@b0&@}bKVF)_T#lB@SMbfl6c7D50_oV{uJN9U|*h%CX-LFnmwbTw^-jab)@PE zS(S_6J`6oQ^Vsy2Asx7y%NOV1_dPa!y$NDh{jPNKQNaeM?#V2-{iQEfgfKM76=I{u zpt!$)y7}ae=)1|*w8+rKTzsTi^14-o+HSpRn0t*y{$g1 zmCUcj2Ky{;X;lOMx0VB!V^vV4$TasGW3X-yh?Av40C$;$V0Nz<4}DL1-HoiNj2ici zVc4M+2ZiU^CqVQ;%Xbr|9q-|J`2&&)U{F9b$4hweuAl7R46hzrl`Y~1b{t557(>YD z@=Y)+`;zvkGj%fcKI-n1?NKyPY$HYT;xFffNGHfiE$b?R!_uCx*(sQ=>?oNeJsI0&)UeyO;F4`~cUZzpSHPdoE%C)6qFl4{o1nq~9>q9xTQpaJ2hzqvz zO?+K7T1}hko&=k*6`fN*k*&ne`#I#AG(S|lz{DvlM(+tOJ7szUpM;;wAqY!;opa&} z!GdZV;on>4i4Iy6@`WGs0+$D*sMRU69|XZz??5C7wGa4>0~#iGyTCG|l%+{?`?>qA z;g6}P1!aNm}EJA8VtGW=ajkBn45MBAdwS^@Shol3>*0mirL0l diff --git a/samples/h264SampleFrames/frame-0482.h264 b/samples/h264SampleFrames/frame-0482.h264 index ba9c454c8c4f27bbdb3d5414853fda7f8613e9a7..a3f9073cd4054f6183e2879c06ee3eed8a4117c5 100644 GIT binary patch literal 1015 zcmZQzU|{4l01}R~4oK}`Z5OfbEiOmvq`G)4zP4gPoH!jydDB;F) z$YF&T&j$tv1_4F}M~+%)Gy9tcnH6n;HGd>>j&$&v&8u4d)4KkP149erS6)G(y%j%} z``Z6*U}7`wG<{{^E}SbW;(kDcfsrAVm+Nh8wbYD7oGacuU|?Ztee7~?m!s*H+^7G) z&tN#f;Bf2kU-ttnFLk6G=lF5h6cogG2!u;6Y^>b6f`NtEgn=38f+V$u6BDZTzE9x) ze?Y@v^XHsIc76i}0cMxx28}`%Pv!Rq{2qOoRl=lDYxkjmbz%gA06{iFm!xb*7%`(qmWN2fTIM@*TP_>=s_^+EUOW)QXIlwrD(RTq4ljBx_8slib zj{*!FA`J|Uc8U%RFY2rhx;p|n5)2&t-y|70+TPVKkYugkl{QzbW>5{*>Tn83@H10L z{=d+ML0DN*mM@{{cdt;60c%g?hmXtjGE`q2P7mw3U_Ws}*PY`|oiD@Nkkx z^BDwB3HW?e>e!^~ZMyq7>Jp|NVq|Zg?cLC+*=VS--Nxn$Bi{i~%45h=+rYM-p#q!? z87w>3Fs?oz^@W8&g0)pa^?XACL$&@rg(rFo1&$rM(yYS9SoJ}Me zc$q$TPt7e>>0uN8^)$`-)4d#3u&JU>*$i19sy+xXB#4Mi)zCj8>cZSPX+pZ%17QW0 zkmHY-68M&MObHeKFSh_-f{vLrAjh8kq zD0h`}&ECdV|Cz-o-LL3B9DJx|WMETtWKhh^JzjLhK(_5b;O#HX?Nd}%PTgpGNhb3; zDUWjBH`IjPmcBzfW%{DAD0zT)|+$ hzVG(`uxPC>|0DnXUz!{;CGP(`eS|Kk_Bw_I2>=z+s4@Tm literal 832 zcmZQzU|{4l01}R~9!TwBo&3Plz>ASv_k=B@15-Gw>YjvYJD*)B|8hHo>CC~8I~WwM zFer#fOx1d~Q*hgL`<4Rc0}Ki*tSlVMH(5=HR2Ntrwfb;y14E<1DK7_~sFUArFLJ48 zFkm*R8~Mss6h2@$_(5~G!b$^S#^)VJvm1^d z;A>!H^D=mmR-v-9DgHmtChO3k81v*&1U3Sih^z@X4^@IxMlo9MKM&Nc?24U_GC zD?CJ{UN$PmF!Ct&^M*2aGpw-LJ#E9anp+nbIGFN{8kieWS??JfIn`YJ>$8ayn>Yg# zd;Nq)CYg=jIHSs#on?0KNfZc*;tuptx)E^S$=UXFMYCp0kf*ASWy_@V9AOg@dByIB zC@juh`M|(6L1(q1QrG?Y8}#+QH=D@CtrFziZl?PGzk>mT0Fz}Scax2r)0NCeQVcQz znu|IuR(@VJNy=w$l^=ryo5Ts<$X^RJ56`^iXuth?0~?#=gDC|jw@)3C)0>o#WYhk1{7@F}%V zdF|V5G_$K}@=5y#oV!2~$&jbEgKa%S1vpk2EIZdRu0A03g+)MuwUv7U#6B_kH5#%eO-NUJvw=yQPxFl$Lw?XCPo?kw3LYGA{2HR6z#wk2 zI>aGE|NUy|m9y{5Nw)8Oc6XM;qJjr6<_cSBeA15HVEliE;$*Ah>Hp!N`TB*02iX6$ zW-Z@w=d8c^!ha4#A?k6E(xJRNX7`^z_`K_` zj^Z1oOhGAiL54T&ItL~9F!s9`?Q?KmQ+$?1q}$y6^M*BvfiCr{epLSXS8qT6{PWL0 zVT=#8NBDO0u}QYi%((pf`{oM<3%m*@++c4ki+^>>kndK-^eqoAh5oJnSFs0O=g%KZ GjST=?J#F*= diff --git a/samples/h264SampleFrames/frame-0483.h264 b/samples/h264SampleFrames/frame-0483.h264 index ba2a4c7190206815f4a7c8af6551011a0ce81798..ff2a1f11ddbe79a999afd7e0f20dd5e99a98ac9b 100644 GIT binary patch literal 1337 zcmZ8gc}$ac0R4TvIa>>8>1ru*3`CA7$RW@cK@O|7fQS{O90L>-6e4%{%2|+27DS3% z#mHRI0do)-0r{kW;EECl2p&*`i9yjSY@DTY{$sND$IHvhOJ3d|4*&pZ*nKAUbp^Ex z>&T9HI=bwetrQW2r-81MCzSJGtx)K1;`i_YKnIHdWJaV|r30C0u6%zthc3&uzVBA_ z3bw$eXQ9k@4&^#HHE8R-G;4M|tmw$0ko|PoltEH)bwByy6eZYn2@b#HPrXlaK;f}@xg1RwLO0RZR0t~)p*l&wZ|mw?w!<)L)QBbm zSR6ae50zY(kR1aSzPBXCSF@@QcrBORF>aT}lG1C;7LrA_Z;J$V(Vy$$xqyVh6==U^ zxLG72C5Z&`fMGy`cj@9AK!6jO00t~N7v86c$rKkvvB`}9I7N`sSMypAo{XA2s*Fh- z=lhBY=_{AZ8QKD#o0oyFJ6$`jUSoB)NNJhnk!!r?K=O0*Q1UFICRZ8wXbpZ!p9$`S`QxenBVt1 z&2A>|IX`ZCL!JFhy*H4*_&#*y@u|QBW-nxb1%iQZ7k%h9)f50*(Z3 zI*XC5jSWx;buoGOG&B^uw{2&Bw_;r;uWW|_gDx;;ov7BjE>SThtNuh+f%a|{oV4E0 znoA(6*ZT@=hMy#D%QRYpbz6wYp_;p$Iy851|D(nS!F8Bf)X)+g2e$l3~-fbww2Bps)J#pJAD!oG;x`Ro^_04+$7unaUu& z#SWP#JN0b5Hq2ZMnzq!hmp15)B(i`+07)U2G27zM2@!bbY@pY~6j+P>`*hcXPi*#I qFnKiD-4$$2qpeGr??=?Gwsnu^m)177vYB5+?(F}JFOf}%h5QQ??NGY_ literal 1130 zcmV-w1eN;$0003AFaQ7nL7M;?yag{oVx+xFm(;Yc5(VK{03bny#%0ur2Z#3I?Ol8W z4h<7$JUgeh?&STH11_+|zIT1^^gQM3mG}>x!!WcmyG-6MpD=bg^*$ z1YQ!90G)Y*`-JZHH^2bKAZYKlWfUtRX2jF?0}2UDkM2QQhooqw@A9`zKLSrt+G753 zIIvPG01b%4@QFIE-++`TcDKf+N3Q$i&=_)>i=_O;i1M(b5Y_6 zz%gYw@D<1d8V#E6ciGZB7R{$OawddU?5{CqRVl@$tK`6qw?AQBeX86Ap6r%rq&x^Dpmcmj?m1|WbAzts&v zw*VVl00IDv2g>{~6BKbld>|2|Ff$AhWEAiMZh!y)0YLz6Ccp--0C+F}00BV&If<|V ztH2m*1F#wZ;09r0xB#?n7>U$=QLSKI*Z^5L0963<1J8iB83MkjF9D{4ef?%WQ{Z4F zDBb*keFWJq-UAvrlQd%L@DrdQ0MIC805FR}Ny@Cs;rM+k0#bNe)&MfJDCHr1UM+#; zW&r>%{)3m+{Lu&6bb$DYvqClP<`Suhc277I6LP)?hGQ}jnUS&}VB-fn9RUCa0p|ML znOrA37K~&oq8-D#fNIKF0C20MkS_^IXSMu2#-Q!6W|{fTInkI53O3!s(YyfKTcz{6xa0CDt1qFZ@02m7j{4c?R z>IXrWD&VqtsF2xmahw3WPwM6aq;SSY&f?D9-gCD;>#ay9p%Zp7;MSXzO*iUi2;Vfk~kN z{5OBjzyO8Z04@Qq$$Uq<5dc0otd(c;0$GB&1HP6R|JjPk9(}WU77I!qe|0DN_8;ek w^ZES#e?Onk=kxje{(nE8&*$^-e1AWm&*$^`{QiGGpU>y>`TYKWKc9do7%4{k5C8xG diff --git a/samples/h264SampleFrames/frame-0484.h264 b/samples/h264SampleFrames/frame-0484.h264 index 715b6a4aa7ae7b0e5798bd8a6e60a13c4015527f..44907ddc070811b76f26dd10e9c339ba801af9ef 100644 GIT binary patch literal 1477 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 diff --git a/samples/h264SampleFrames/frame-0485.h264 b/samples/h264SampleFrames/frame-0485.h264 index ee0e452068c32eae12f880d9e7ea2a592ab2cc13..49f2502a02256687be996af0941f2f8754e81340 100644 GIT binary patch literal 1221 zcmV;$1UmZw0003AFaQ7nL7N~NyahKwV%OC4{K8{`pZM__5M{4-gaH{u4Nsp#yuZWv zkVY%O86K}+Uo#*G00;wsp|}{^Vu2-_ZEtc7;a~tMfB=A0-hcpr7-+$S1SKxFgAAih z99)~+ZR3NyqL;x8H#-F=X8}o{9-5g$KZ~FG7zlr-qnuxzRt3ZWAO>(T0;#ra$rKpR z+yDgtbBR2HmPjRLNNe01-9!ImLx2$xzyIFx0g*IdIirED2nie&zT*JMfCM}Nn#>=* z0a!c01{|h_f5&zvMj9I4#tH*;27aZWLF#musnUK5yt81?;%+buw@B%kfV|JcZU74a z0e}I4orkWFeQt5Ud>({AAXOms`R3GaUH|{aOaKG}c31%b1_X4C30RAffSt9apb2h7 zfM8zg!RcZR3qR5LV)0iM@wkR*C2V|`-5rCHh=&^@y`af zs8WY7R7*VVfEgi2X38nQbN~lzzy=5vYYKt}uM=PZAQ7&BI08m9kK~SQ(GAd~M-gsN zPz#`915nR^1XUv8jUyleNWbTLBw z5NQI0c=^H$%K-cUYwLh05C|`oD2YHiCd2>&0>A(u9f{BYz))v_3#n`BdL-5&L=+I= z#{IzqzUZLk35edAWlw^nkDs4_03ZYg2(l?Ghl-oTzoYvBLP z06IVqz>YtqQVAJcK~HDnS5+Se{`f!wXg~xIVD*X#C_Ul85bOW|0YLz6CddY_0C+F} z00BV&If=3XtH2e}fAA3iXfRMX>wqs5!2FQ7a1xoB z7;vS7cHxJa&;VEfZUQDi(FigMnJ(Wyyn;W=;2{9fiV#sD4g)o|g@gc&+FIYO$R1Kf zh>)YL|LflZM&-16q$MvH_IMgQbl6{o5U>KXTBAk)P8hfUz)mlKhyxcLAi{7+^E=QJ zHR4mFVcjC@{C9d>@=I|69B^~PIeaG#3{b# z{r-4Yz?!GX6d6I9(;P2=x@k@8f3Lg@4HrwS*3TcirT+>D6$lgHzD~R6{B8nlT#y}g z8F4~iv;1lR)&QOxT8WM)S)Kg`1Qt8M1Nx~R!62{y=m=DdZH`wGUfs8>do3pql;3z6 j-b`|nVb=en`QeblkN^MyK>!s(Y=CO;b|=L6o&e1t*IET$ literal 903 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 Vi2i;RfB*miK>!s(ZGdX<2IFwGTU`JE diff --git a/samples/h264SampleFrames/frame-0487.h264 b/samples/h264SampleFrames/frame-0487.h264 index e69e7f03fc9dcdbb64d623cfb29ce023f12be750..9a989c17fbe0c975e50ffc309126509d5168f7e7 100644 GIT binary patch literal 1093 zcmV-L1iJeG0003AFaQ7nL7QM2yagu`5W|Tm?8y0z+pH5AOHvefG~tUof{wQm@>daD87CM z8!;jSjj5KaeoEi{5CBF10RTM!P)L>Q;sTts|Lyu4{>=`NwVU(=^AW{GV1o*H3Y(J;G7U(bl5Fr2o0p7zP0T9&B^ajTY14d2AUcd>}N}>>y7!#f# z8xWul0B%qU2Y~~Xv!NK31SOKEumFPC>;RMN;`AF57mZv44sQbeUqM0uF%XEzBLtU2 z91&08V5WwGsY#HbFbCQVk!J;v!3Y2>Gxr7nC`;c?hQvh13;Vzb7;%D}qKBR+)-;y9 zKLkHwR|o_i4s9+1B&FoUpkRZVfFalb00BV&ZYJ0UuK;*30003&06B@a0jt0e!GG`( zKyWZZ0AtzYM)-gSeyTPn_4#IgotS*4pG*D%APxW|0N^ZzL6sTGa48!|!U&unz5-qj z(FmiU+X;7gE8Gj6FJHk{;>sS(uudts*#I`;n%T4e?SbF`S3%;XaIwbwIWLa?90|qn z5dd}&B!>$}5*km80rC&9)cI*)n|-_oOz`9p5C4M>5pro|+zzM!9K-;J{0^3xr^tXZ z1t8LWc@qld@!=4FTNsChJOW4OrZ#Sn{0WLzbHd80#b|mB0IIAi4MSH2Ztyhh6lUjGj00^^Y<=S_eCIIA3No)v*KzCfU!Lk|jIlY9X{4Xc1l^Yj|-Ca1UW z`W!0lNvLq2_#l7#?dt_M^MUM6nz8+N;7(@j{rKPS^?0)3i+IWzl(8-$Uhl!;0%(2f z_`_%d@{3Tv_kpBSS;(=?h5u>@2*wkJp}T;mL}sDxa7#3zq7Zr_20iLx?vdI5@4yzs zeF6XM0H6$wb%%CjOdtNlUg(ol{r|VO1z@-+Fu(xx&7w%h(K~=ZQ-Mj|e6ey^N!S0} z07c;B*SIi|w2$<+|F|7+01!|SDF7J{Ph2X}{}=m!0K@>d#y`PmsNW$jdr70<@PtwV zjtLdLxxo_HI+1##-hc!KKBh#0H!VwR4bLe)1U5Ms8&`n14J;y{ie^s$Hvjw{%}Q!FizMVH<$`#_!1D_1R>mhNCN;gFaaHO@EZt)ENlP&i~+a+;k!*anKlJd z!kv$Sgdp?HAVb5X$n)r(gfIXQ0KfpC;c`c}^O_yo7CC%i7YGNikQu}T!kz(uU^rTc z>=QtOCTec;CBOsVV5?Vs1jP@tn4-h2*Z_b7x`+dKdM5vU;c5g76un+Fq%=u7-Mk~X z$V7`+Vc9-}Nwx4`)qvMRY=|jtW->FO5xikw0aN^jif}JYY`XCp009EPVuHSWd<3>N zkPQG*074E)!x~iCbY2wsN|YW32*(d53%IByN?RfmOj7&+Fd@$kMnepki=K3}3MWq> zfH*AAfEGg?!Uuu83d7{D0D$7j93<%5)JLU^9*r6NE-4rUikC|s0yQSJWo7#yGzJ(3*4Bh%&VC92;ltDcH$VUY0YLz6Cg29I0C+F}00BV&If=Ld ztH2P!fAA4Na4_fr4@`WFQ@{aNMMh#AZ_8}^n9I&-^uORD0N?^Z4g$<2GKggW292qN z5qLj*1Oo8nMHPnVNq!FQ17$7Y9#$__8RnUra zSK-785CG`~SC=LL0s?_N5d47Hc#|uaP?!Eo;*3zDnmF7w703x!s( JZUAcV2IGDdhYWxS2@L-agQUl{c1{2U%2?An zkd@9)Kn4yol4M7@RyM2rR(K-$lH!0I0fz1JW^ESgX>U{M?Z3#qgcIwvpg0zd#j46uLzAP5p4vPpf< zVu*YgcN!^_%M(GtKa{5XPyh%C0cn;17C+*K;0_DGFmL;iIBSme((qe5(|?ubA4pl!YMNYpl|?7fB{SZub}$CxxgiiW|L1q zL6|PB7SX>fMddaEZ!u2BWeMOyVu@n_0Ra*m00aYout@%bp<08U0uiAGTH@q7d?ck8 zU;rYu-+(XxaROC3oH=!gh4jQYc-8<23?Y;!xKn#+?z$qQfX+~BHD=5P6uroQ{;2>s z5C|{C*(mt?z`|S%T>wQusJ2f^BpZlxB}JG?+yP9(_y8anKjq=qJ2%BzJ94Z)00vRF z9yQZhO_0z_AkD(?oK~_>N#lCEzyMGI!R66JfQO_|GIwIX0H^>RftiAgVRI_*m{VE~ z040C|^oxk~hW+yYK&BPL>sR8(Ca4LYI0>}o6ib;x!E#ZMUzlj9?Dgb~GQ~(86XjD6e ztY$8@?Et`Yg9MuMTW3GmlMDa+FbEt8P?-db@I5){k?;2a03ZSYaDveZCDPR4p>$Cx zgI5RR2%?bH9%4uug3F-}WCaGhFLM8S`E5wv55WLtARKOl&rpYz1^P4e2Pwh@a?#dW zN3DRSa3B@!83y;O%(560e@_A{VHlnPP|DE0o$R`AaCaU60D!oHlo-JQh=(RUxJ9AJ z7j?@k-qQ2B_&@Q01FQk~4$(X>z)(>kKmY&`Q-?ZJ|L?*u z01yZRg3N z04q5~jtJX<7S!x^5ckimKt=(;SpbLI^QI2C((ib!i8G?h4gf|yLE&FgwaO<0P1|Df z8XZLYRlwh%CqPI6xNwL7`q|2m`tf{%3@iY5v=F;QHGAub zQ>PZis(;>!00bUjA+Yg)0uDWN$e35~5&(1_6bKfuN-C0TnwG@KEY%@D`?wYulf~64 zE_eO#C9vc@V{*|Dcmk6H_rrp&D*}xM;Y$Dk0G>bq+s~dAfi-}T1EWCzps5HhX+)gx ztqggR$qhZIP#}V(ja=rhp>>5}%E+%@1%|TQ<(>Wie}S(bv1aP7|8@>Cc^F~OUMzWX z76IWt!QNCCE!jKV>G%f=3e5_o`gwoPt-`rrmkAoDh2deD?$d}tgLhknn^ z#DBq%2nInH$447t)qnp%dLF4VD*O8;DkzFJTxm|+A3Q4pZzo8DuG1p}$6c@6sDOmy oRYT*6gHYql|IU+5#`;M<`d{mw5rDUV0003&02M-R0BZ0CPx# literal 1157 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 P00BV&6+&+SYVZc*2SQkz zs`11Ni1A_YKn8F?G5`n?u5=O|zQcI>&=d#)PK9WOCbNpLxiyXBQ=h59{5S*w*@M{k zZ37q)RNvqQ2Uui@f}p@ne*Y4pM}Pnz8aSK)S!V8-BQatO#@8lG01yOn#2O$$71&1j zV2^-M00aR7Qf!zyBc0j3oeW?aEF;q4n`9dVUwA+Q6dV-u+zk;BdRiUj02nOA<|;GD z00Ly6_6`7m3;-eY40ZZvO@Pt(9gqMFUJ?ugZbraL_Zk6ATIS0DPUeo1dIMnP{ec4u zgatql!Wd{uekk#9f?s?!Am9LCq=0?UU9<`SX#f!k!(%{4Vu=7GSZ`aUkto~xrsFgj z@!jwGu!I-^01|+J1kwpS1=0E{)NtsP@Qr{0kOKy|DeEdz+pqumd<#I11cL=ofTw^1 z3_p+3)v3ec80BNwE})5X#7zZQd+T`44?3|x06^FP1P?nafB|4=TO6JM0s#S)IeLr> zco0YA;1UUPFhK!<`Pf4#Hh)ZS@74fRZ~zbzz5tXL00K~BV|MT`Zyey#$fyK@dDi&4 zv<9vK0RTB300lV3fC*oq+$QG5|F8!Dh<1x<0^tf;-?$6_bvOmVg8R;1qjj zWxk4D8b96u5CjEiStm>(m$m2^mXnJ_0XIMZ00BV&ZYKB!uK;*30003&06B@i0jt0y zuK_#<0}8+aR#zr-8fUiwgs9NSjj4H`U?KqIEQvxmKmb4y;QjzLASnFRVg(4hx8{-Uf&Rb&Ibb9J^kFao5MLJgKiUSAmYhS?$gc77;&;0KMZZUTW5TRaO2oCGJLb3m#E@e+y8@JkD{Sd==03g|x_`NXL*Rvsn zgdmFMPyh%7OTY#7@lqTEcnUwz0_Qjg>1Z+DW@9M-K-XEP6L9B+U`;QGGOY*+crH@N znB%+Yd<|gaYLSv+)Tr3r2sv@Iu^rA%j`|wmX>BT?1(k)~3umPEwV}!SIH7P6Xrm T_yj5d00BV&6+&--YVZc*K%?Cd diff --git a/samples/h264SampleFrames/frame-0491.h264 b/samples/h264SampleFrames/frame-0491.h264 index 68e261d661b78697e5b6686f302187901ca10f39..e5acb257bd5678fab63beb15ac7b3038462d07cc 100644 GIT binary patch delta 1800 zcmV+j2lx243!)Bx000012`~Tv0YRJK8oUL7PAC8n00aVn4huAB(X(dFnlxzHvtR$f z2a&)4Kv~NG0RYfG3=Kqaf7R)`<04{taaaImHr|qLIDk$NNHWtaZ88xCwlJOh@)oED z01~9dVvEvcLyZLqb);&6+9$6O%TM^QPN9gWH1H+Wv67sd`{7L zKNP38^8JKE1vvx^`~n1egL?c8REvaS$NvYw0NOSrf1-Nu0e~q<6z)oB>3u22?4NVR z`}p?+4h2Mii`K^Nb06oxA{ERHmf!#a*a1hJ5K8rQeJ_fIrHKfP;Cq7UEi6`f;5Oh5 z1&QjlUiJX%0Z@Y1N9jQ+Qz7U80svqc2+wFr@tMPgfA;W#)U*Z~J&N(tOP?o%1kk`@ zhZw`gh#VgP03ZSd73S0Ewd_u!E*GNrfB@V8oEDdVHV-PkMMk~Jv0eZGKnx(pKrxZ2Pg#h+ zgn=rT>j4n}06=!NG6AP16utpKfC7_&2#zDG7thcC3%~0CV(ltfB=9{8j1oWU+&|8 z5kX?q#E7eZL;U~-ln|Tbx}MOS2Q*}dg5y~pJEOuc*H9i=z+=cJj1#SpEhz|>24l~E zXTAdV(9luPfZu2vuF?J_oj?kwzy|&Ge103hfS2^AjnkR#0G`ql0L0fb8fnICIS zN$da~bOV?FgAc;U8H}b>7#Ye*OM7Mzn|4DS_YgJlf*KT^d~AZnBs0&%zy|mOtN0EA z0fg}WGFT2r#sC5Z001COdw>Rm?|uHL00aRdWB>*X8YY3UW1#Se0Wv@s1%s)7z8kK* z{_r7nHGN4=@XUgK8K3|N2iYvZ04NNCqP#ajOw|r#L`wsT_v}Xy*tH4}^%QuPlK=Mu zz!X(rP*zCs(t@*B001By1{${bBv*PQ{F+F2-T)gotuRPJoOXe1Nm&K}4hEnI6%7#$ z`{vkeXf^#{3|;^-mgK^UWhK6U-~LHhs$3bnilFIaxT3R5kIV3|NY z-@xBVtM3>99WVp%5#qXKVBzKkUL3w9UD%3mgI<771E1ip61)*2&wv2<2!MC3LO9s{ zy`m-!w8X$QaWh&B%EHqghu{&**>=LQmv{aQUC)%nsAsTMXXl)ck_;M1(K>%(h_y(^4crX9}0YLyc ziM|1=z-k2W06+kM;@WAG4+JoO5P${U?P-OJKi@%^P+R~$({KbHuo3`xEO8(PfIh@V z6kEUo_?}qK_%`b#8<o8CEf=9!tj-$O{RfDfzy%(JqHNKo6{;2zFiC=3kfxRr=?f*7z+7R8{z3oQ_P6hW-AOV;FJ3!5~gz|{sfCB&l)CXk<$Q2mP)Buc> q&IgQrX2)#TG(`y+H~1V(DjfU?$MgC41!@2Q0YLy2LT`X-@CM`GF#>P^ delta 1421 zcmV;81#$_000012`~Tv0YRDo8oUL7PCx)a1PW<}7-^=OVTKxMpZ~xDoB#p= zpL75L0B{lv8%9Pon<966FdSWQga8}@0A-K?r`9m7z&Pjz=8@y@04e|i0)Ph%N(qtR zqwH69W8fGef=IH!vu-<6*#QRr0SM?Jp#1VU@Y=k$$;P99RkS~78^3q}K)ayR9NSCG*&!(f9ihNA;uUd1TK0KRHxESCJoh0Qq z-~*@uxmdM%$OT4rv;_+-jXJLbxD4^<&#DLfPS3>Ki2EPDFuZ! z3Sx!OK@ioLU9tz@lmG+)1liI-QLU^RavlQk7QizJ^l?3;dmi6;FuybL(vJk0^Afm% zWM9?bjFTmczz8tG9lDCDKJ`MxZSW3&3XYh609eJ)qISLQ5CH%X4{0mjMp~c9e)~WG z5EKHHBeF9d#hx0qY4!k9hpZH@Abyx_P6GfA!G+jg71;p2G7)edJfi{ePF@9t>d*b{ zzxN>Bh0002=1^+v(*$s_jkzdUra4B&fz zX~$&7A+Il>4+fKLpuPz!U)^{R^5cXpd;%{1l;g-uJLJ<~*Gsvc|4`ipW^sYya*5 zhB3!vE1(_;Ug8)s?0003&0B$CL2Co1LcrX9} z0YLyciJ+5c1wDT{02hANm`HoK&`&Z7fC2uWz!ZAGNCDun#DE-!>mdS$H~fH!an!HfZ2h^(UtlCV>5XW3kc^Qwc+LQ&=SCSQ6fj?&>E;5F0I|*$PQ)= z&Lh$O83+rMWh5oPrKmT-->t7;M)_yVID7fOJa4Yc0EB<31(kv*_26mUb1DPFgcbSV zO)uzfAaJM-B;?AifHmqs1_HMD9VaG8Gyt=LA|1bD5(0q4$d}!aKPL%U{w}SF5+_zY z7hnJ#h4W=II3>K_Ey0+HyZ}DOJTin%2~oZ7I7ovc00ID{6aWwcH|psHW&zfv0097C z4H1t7RkV2u3{5=$?tPwrAyj0(`QbPdOX36&LbM<#3oP83sCF9ZgHLFUh_7#)dlMVm zvz!cAF~BeY2tWW;fy|o1c|=}t02lxcz&i2+unN$TJOEc&TY=*rS+I7^b5oH}k&zR@ b#KNJ^z?^?S0Ik3P00BV&6+&nLYVZc*lNVro diff --git a/samples/h264SampleFrames/frame-0492.h264 b/samples/h264SampleFrames/frame-0492.h264 index 08aa97eb6fef0beef5e3ae9bef0a8a3b78da874b..8fb81e7f8e858af50e78367987f3756d40db0112 100644 GIT binary patch literal 1264 zcmVyakisVG=t53tRyG^zePjd7H=ieFKn;8G?XR3DjUV$%8BeQj7Ea7;MCx0HJDSqQ8>4_e1~?fIgw3LU(Tn3G~zdxBwty zIFm_H$1t&fSw#2(0096+2@CCAI~kXv38(730097_usE8}Nhbxgb>@7)0{{U7YYjq# zKm=(l8bO>+AMn6z^aBZoWYIV;c?$p&J17MN1;|jk79Bmj2ClpX1BE+}l7*ap00)vB z00ajBDaa5^?|`20a0QX{^q>IjTn0p*0$&z1(3Hf3@Bk(x?p8ByS7v?y0e~)tBAuAx z?GP{%SNp+m4FFuOrI0pq1NcSA00aX-06=&LXNrf@)~-T8n4?o*2LJ^F!2HOR37;=} z0JsGhFm`mxV8EzN7RM75z6?P?DPYJI0SYtd0fK;OG;iB@1K>yY_agt00s$isP#6@Q zeN+)xkAMU~P!AQWFJ0JFa2N%k1b_c=1OhH$!Rdo6DMwjri~wZ-4r>6NFI)jY0R?cu z+yKI`M5?$*@OVbD?ChcYfJAjcfDI7vJCO0r-1z`!fZ1&{-2@8n+JW!5+Mhz3B1fnY1DJGnFz#$MU#z+Y+t0m7X_ z!9vazfB`DQ004mS1v?@to%M_Yj-WZHapLK(+yVv+81Q0=67E@s5SOF@tGrLu04cTs zfJic$4~AaqEr$K-KffxV?5B?bd2!`%|pcw^t4;wWhdk`g4 zD~N(nU`}{2Ac)Aj_yeDS9|9~sFRCzQi|RZ81PF-;fCQ@9gZX?WhXYiBXb{Kvgor>W zI~1^jshLy#m1MCXJ`^u&KA;sen ztFkDM|I#LOn)-IlIePj2)C{XXT-HCT)55(1cqkGmA?gdtfm|hNqCuCS?U+RpOt9iy z*aM_DHv^de-ymxVg~aR?3ehdPdQ(^RmjCqc=s@v+YE5B#Aqo}ky|nt!fh_h&Lk^|H06qeL zu|NZG0qhuxzg+W(5rRG79q9;NUlsev3HxQI9p(T?6`Sf)*3cpU_K1|Hm^yQxxEO

    fA95CBe4Ijy7|EzclD z0y6k96dDc>1z@-+Fn|EsX3&y%?2Eu4DZr%fUSP=#BTnO25};Kz4xF2 z0gtJXU{%|4+Cx*yPk{}NRtDAJDg#SMzr_<502x34(cHk1HqgpZdcXL<01#mS0SJHq z5Q_i`CRr|H2{A)fbR6XjG)UDS&EQWj=x+iLN&p>$01?+jfY?MWQ(yo5U=6?r4cckU z*^nxZ6zsqd!Vo2OP-uYZGF^HnVGIBS03ZN3I9!qa{Njb97I}PN7YGNikQu}T!kz(u zU^rTcZWKUe;AtYEn{agkF%>jl1wY8xcGoONxIB@jF0C+F}00BV& zIf699ApFb4raE&w!cBHw3y&=(b&;*~;|#s`1?04i;RqBxs4upejykRCA* z4gC*(gd)g>2iO(^v&+i9208!enA@~BNFfkS4ZFce01%S^3qW0N5AYJecpn68IfYA3 zZGvCGMiX{**b_#dKJdmLCTW|1WHql`_&X3HPQ=2u%l`NTOoo`IQihOQQfFMN^ z4f;wKNPGX-3kI!PhV>AQSvUYG#5 zD)RMu$;5mKohN2@X9iC0{`&(e$^WR`hGC`K zg(~9katUtP8q@ziLIGR}g7W@g%4d)Mpc24%u_wkInt))+N=spP%Par{0{|JYu%wt^ z9eyC03^JUGr70aiiR0C;dwlUQCNCkp2?7N~ry}BEIp6>7J)r^z0jks&vJj)acekF$ ziImX$Ii{BbbH#uTfsY2D2T%jZGO?UMj3WI5+9Cr{aErWx*|Ljsd;k&!Wcrl#HVh~J m;S$oG!PA`o$Ml~E5ekPt0&)EO16cq70YLy2LTG?$@CM_8S)=j* diff --git a/samples/h264SampleFrames/frame-0493.h264 b/samples/h264SampleFrames/frame-0493.h264 index dad8cb8bd5274af3f876c205996f95b104a3383d..b7be772d9a651e1d1c885095fcb60d3c05568d0f 100644 GIT binary patch literal 1262 zcmVf*2HFO@4x^E0iF;51OW$!?3zCF z*rFGM4nd}DH+yTLO1}*<`2M!Pia*@@*9sqeXDsW-w z0RyB370OP`0q?;0LjZW+yaE7%!LnvfakQHlMJ8Z!4gd*o0CNB<=sLhIa0y}=rPa_7 zM+>V(G-rzwaczK}@E{yk#sC5WBoqNcrbqM@3RE2M5rqgc*B5)ILW)p&00Ju?;0yp9 zP=!vV4&7p5dod0jwtxeJ2vEM^P4(xx*qW~3F;XIG?OBv5d&TeiWB?0<0*vVu$_@{B z7;B-+pa`ZE7Ro6^V{rz7un_`aLK*M?AOO$sxRb!WD?l;O7-`BrF;4(s6oeQF8BJAv z^wVGA;do8}R987%VNKWocl&??01kfv>w+<5;Msn;8b|jF!Z-j3 z6}{4ezyLt30290tgAafJ5ETF*HkutEck=Zj+s`hZ@Bj=94T(y911<)`3?!2=Pt1%m zItt(dfJa&`2$}28BP)G(USFAz%<3a?1gWY(d>b4JfG9w)Y^b1^sGi^c3<<^l3H($6 z03fIU3a-$oZ!6i%U0vD%fZ_`YHRiUCf4LRc|M*}KI1-^Zk~6?UQ_~~g?f?Kl1OVX$ zq7qBBsl!6(qEiNr55^HiA*wvYkTnIDLLEVfA}GiL#)UCdXYz|v+@Spc0Dw~r1!TKV zbHF?+7Ty329Dw1%0UWe-aHs&*Xb)Y%!H!EB@DgG05YR&t|MDRIn)ko}hwz3zJ~2Z? zc}?bHhyZBt00ad@6rjdJbv8X&b)CD9ME?x+fTICTzngu*07}9zXh=eU(^(EQT3IJNz=lz5-Ye049L(;vfVsTPd*y1Swla!%S}DR^VWV09-zhKF|NMz)1nXd;u>l z#e!46`ta9Dk1B8*rHkgH#=Y-*0Xk%Oo*_}$1JF+benb*uN^m*u0fIHc<&(BQ{oD#zWTK9?NbgW>cE68XTO69y2; zfdJ1C5CCAz0=~yNv7vZ1@1>&v0Rb?s8}NRC-?g{;;0GnZ00;yC6p$@`Oo1bX1sWKf z-ePi?>=nU9*Vl0h5~>9AOh+n0S3STKtIdMW&tPnfII~Qif!{swRmNI(5+F*8t3f0#>i!xS3mix#FfNJvOp;4XFod4E7b#e$Jg08I%?VG>nc zzpzdU3g>+EOGlz~d-Q}`40J(~(_M{h7BT4vSpUuLW+l!;gkE#e!URwP8es!MR|%}A zPow{noV-5-4k4#Sgg2;6$o9Kl+osvhc4_5dD2z5Zh1cjAsfSI?Ez;!$fqD_(vC%|U{VWOTYY9pZ)7Uk3)002M~ z;2?$3R24qhzR+qG0D1qo2sjQ?f`nuzi)tQ`h;es=7~;Vw@MGjoQLo^+|9}7>A`Yhl z<~G&xf?|<4@;MD07#1Gju)bnKh6;%$U;`V5Ff;?TmIV)qu{aTIxGM!%8_!3qmRFv5 z00IFZv{()%B8hYU*;^I9@&Shc0RV)sXgYL$2IwInSs(U*03ZkW0e~0>oY9$jF)MRZ z`;h?05CAwxgXcoWfZDtTaN|G|bN~PWK>%(hkOr>+crX9}0YLyciKGFmz(AMq6aa9* zOaahPOMnZFRzekz(s%$`H%pMtA=l_kpon7zd4nvltA5THRbs>dnghUy0j})G?d}^q z1p=(%wrY$w_w|7g@&HN;NDF3jkEMW?1Hkwq+HMyU)_&K7nxtdPTnNcADiADbXTRph zcOx)0H-M%bx^nzY;SNhN^0v7@+(|Y~8Dd}F!oktWEh@H8KmYdvasey{022Uw8GtMh zl`O<_q+p%>~ncZDjk zUWNd%{tH=W%O|qis*^wns;a&4OT(xb+9Ci6YE@FbKn^gO%C#V3&F;e#hbq-o>-?S* z3<!s(X#i^Q2IDqnyo3M% diff --git a/samples/h264SampleFrames/frame-0494.h264 b/samples/h264SampleFrames/frame-0494.h264 index d2b5ec4a30f5b6cfef694e43875554443172af9e..cf70d22d5b6c7c248e4fcf0d6716abee29932e19 100644 GIT binary patch delta 1242 zcmV<01SR|L38o5v000012`~Tv0YRET8oUL8zy6#kJAexWU;}^_3MW{g2f+*|g(KDI z0${HSz&w9+M}=eBWKAfL=EwhAK{$_q@BlynFaX1%`d~i;nMs%lymepdAOH{snt)b_ z>YNI#-8T;G(wV>D0?>z72|=PPl4$jN07&N$q8croq(Mf1+f&0N7_bKID9&SpBMo%V zU{nAU+wy=I(rCp{_?y*oN$t$vAix=hF6CjazPX`q{{~>f4}e)SfdF#A z3P9(Z=Jo^Nbf}Mj9f`w7PM`bhwqg2mmCJqI|1XM)nU*r~p#nCTz!u9*^q)2E_=41q z00ICixx5K~Nzeb>LA?kXM^w6QAn_bu@#%Dq0s)I~EP{;kq;_QRr~c*uE(7hYOyO`( zFW9sI0s#+z6i;O4D*w&IV1bw0Lf0VTrptf()U*gaPLlOHOn6^6wZ7KE0YCsmU;%-G zv&CDU^JRw~@MXjvOCC$)$P!yFzhcRZZfFEW|(f09@KmA8F5z5C8}PLIA~1 z0SO*m(2gzq0098I0{{#$;56G?SGpgZM125%06;7NAa;cPE254J6p57mXi6h}IPn)_ z>TmWB@k&ZbR3DZA2_`|N6)T2owXq zs2o|eD3EQx-~d559l;gCccSar!RLHtW*e#A)qg+#aWVh_149dJEU*QYbkIZp!T1b+ z;PO5aR&O4kW+<3H05BLz<_wS*Nq-F0C_~rk;!b1)Y(T^RuiM$S*kSsw{N6<0F$_5X z7dKM}$U>i+zyJ^x6|@M9*m`tNTW;V;YA%k~@(@$mliEKY6(k1uQUpOT!Q}<$nkMX< zCryhU4=u0r5g7mcS3m#|6=uKzsieSvHjqH4-s{_Ae&YJpmx+KA3%~$Op16>V%Hl!J zFhLIh1jxomLzp1G<3yYJ83?SVIut~$Nrz$rn}z@m$wAQD=wU6`{1{*eb^rhYK>%(h zkOr>+crX9}0YLyciKGFm!Gr|B9s(gu5bZ)CnAdcm90I~ffvwOlDP9;%7&G`Xjko3w ztP3=u>nUYeydn5R$%Jw0Mf{&!#`jn+`}`_1?|jF6=A*%vbm`vx_{(@BIqZ|~0~Rwt zVw|WkQM)pTGpXVX_!y}u7?Csv`jf)H6c&;L2=L<+0WxL-1H-h#p6Tu5$c=n_@V=8j z1RImk1O+|d!FYhCDQSVje9Si(Yp(ca<`G>O<-7n81po?Y0VW27SCF$)Iwic7egr^cFsV>Xy0w z#bx_UR`7g(4uQ7TN(Ta^gyBfp|KPzF{4rYdc%}>Ls5o1WLzm4oU}hvK#gl9XSp4zt z&>`dIdONia@3H9dW^l6K#)wK6Dl--^WlCPe2wB14uUXNZ=qNCB-2l zY4MC|TEGB6Dd`7AP=-*nTW^=ah@c^c0U%I3aHq_`K#d`+3DPZhq=@if9I+y8OVQJL zJCc{H`@<*#fRpI-M1_!xj$3A8N3Z}82pn}@kgXUmM7-#x9smIV7#-%8I(DObx$A>} zPs<%@7K<3p7C=;1p8B`F}3#t0)sjCmk@KaSWC_of7}27fB+CdCP&U{R~3Zd zArpc2;4s{$fQ5731Pb3jQ}>Jj1O$M822fBu=>N1S*Mv3K2*(rwH$VUY0YLz6CYT1V z0C+F}00BV&Ifz#al2Oc3k}AV;R%DZm=KL>Z3(`j zcxDu%H-tPCF9^$w+2CYN&ZI!zE+7+Gj&$cYjL&sc_sQ5HkgWgz|NsC0|Ns9&|NsC0 z|NsC0|Np^<6NNQYGq1dn3{(*CG0;GiBC`wp>EU05LWbZBq_r@749TAa-aqg_frGrk z_4N1ZSzAMn}_3bFJ~7>o9KbJsVm;4DGDdfxmg-4>7dg z12Yp1)U3!s(X@F|*2IHnw48s5b diff --git a/samples/h264SampleFrames/frame-0495.h264 b/samples/h264SampleFrames/frame-0495.h264 index bf9419243bea83443987cd5800fa84eba99d51f6..090ab4942317eebecef742627274b1488701aaba 100644 GIT binary patch delta 1082 zcmV-A1jYNO2jK{R000012`~Tv0YREz8oUKJL1Nd`^htjZ5yXNsU;uysAPxeC;A3tI z1eI;Hy~sF)fB>cd0s&Kc00IDEV+K$^D{;ISL>g$~g7)0h|m}3a44Z@1V8(015zq=R?mRrIHC@k{Iyc?jQ21 z7yyXGZ{C0b65zn*js`e00~hF0D}oJekFtd<0b$C0lO>!fCB=$MuenE$iPn8($o)b zM1WXg>cf_QFaiyfZj0Y|1U&`TP{Re@TI5tC+W;~`ip`W`{@4Hx*?Jz8nAn0m_&G%9}lZ|Lh0|I#zFVN;^+~XaNirjd#rN zQ65vv-~a>w3{_^mU4}GWzwQti0*tH+jYFL`USxXogh3I+5zIM+IYEc^h87WB>vN zzyKhBmD_*-AY=h!-UKeCuc_#hdLXC#7JSJ746cC(6A&6j(1$xj?jCjAO*8BpYk)v)`^7&ffo_K5k zF<7I3BtO@(Y8Vp+-(Ufbl(ZB^aP5XCM4rM<1KsQiMb@P0vk@PGu6fCwPL>l6}Dd&7Vs*Z=?lK>%(hmjFx0q978h(iE> zF5`6&-hBt^9p#&umB_;fM6PWTq)kjx-CAvzz}yMG6U8Tr#q5E zpUT3MtI1G=KRg`pzLQY{9|Y&~@L-cs10NRW^ZES#egL3g0003&02M-MfNJmt<1Pi< AVE_OC literal 935 zcmZQzU|{4l01}R~8l?8H>N_Sa+3Pj^%9f>nl*Au6i!QKW$YWsPOZ@%lRDQSm{a;KQ z7#bTaPx0*ZGc@{ZT+Zspz;7tZZKsnqb;|h)f%g_cl6tXb-36Ufbs`=ZH!)6Na4hX> zYl>TO&ujxng3gY+0!Ow5pF1+?*k^;&Kb>C`2=J|vT5j$kbZ}FXJ%ff-Q)NK}b3^j} zt1TRI3=9nx%RVs3L>j8bPg%{PR4sJ0K|!+9!0@@=S2p zOZd8jG5OFj2L45FxS|d-g!9deS|C)_cUk-!3y+?ND1)1#ORs;6l$z;(8<8Df7!Ge? z%71e6BZI^X5m{DUCN0Yi3;_j_C)*aB*#2w##T~|vR=)qWZe9CBfddQ*(lQ4UKh^VT zh!?&5D8aZPDMw`G!5cHI6PJF_WwH?Bk#u6KU`S+rc{8e5C+2wV@(uer-(&_ks&o8` zGj5;1(1F2W0s{-@cJ2nY=7(G6F>pu-23=p#&>q~ep@Zf4OesfZrsUf0M6urI)9+tl z40K?4eM4dcLzK+5@M|9uw>UF(E|{TbGd*|y<;K?s7#YGV7?Ms!Fi$(&uqN|hHA98; z%;j?)Y|OlVe}@EPz=6VvfAzPV7IeC){&!(u4*NxovR9Hzr_bPF6cEYVHR*Xm#D-ow z<{g6VG7lJcGL&Vti}Xn_Fb6O*9MHJ7_QY>%5xx8Zh6aZ-9JQNPd=GxKN&Noo=24#a5?gq6c39pMSQ}=)RduJl^2BtN;BlUNh6xBB#jQzWFhNwCp z)8Eh2f9U_m0ROmu{O56DV18hJhE<=@;P6p1Q_4f16KmYs_7vo?fE*WG^KbRUD Pz}^&f%3{d+!1fpbr4poe diff --git a/samples/h264SampleFrames/frame-0496.h264 b/samples/h264SampleFrames/frame-0496.h264 index 7a770b3dfb3e8d9d2a1a142f93eaad94c90f6860..ee90d9a66046fffd4f0b74b6915ddd3201b06700 100644 GIT binary patch literal 1832 zcmaKtYdDm71IGW)%rlHJ7#a-O9EMS?m?) zDwQsjT9tAdBaK|tAe(mOuqu*m25Gd0=iS}Ud%gFE`?^2gzc2R<0Dx5Jf0Qk*pM8O54J(N)E*7eTBnErJ)5sw;h)>53>nS|M- zN~xTcLk*hkA!yb}br2E2fI*~(xlGH4V^?SgS1{eNnl3#vJ0nI70Zfu^_V2Bre&IU> z)Q<_U;IK_0!?uYXjds1pHdo*^@b6L1Qy~mtttzUY1_j(Y=~F{4(|C*=dR}Nx4an6CH9?hv}#yFS6l$`+tR1M_AY3$ z^Ihe@7I+jjJqX}0l!hyZSbtuVTLP^#9NpI}B0}gsmva8r5Hky;Z(gMU zJfYYRlk*~bk$m~pB?T}b+H6bsFs>IHa%_Et2}~B7Bx+8}x3y+om#DE!eDt}4Em|%F zPxBjBmTS;9z|Hw%g~{qEeXm|con#P-1V$~|H+W%$vgA=2_9sj7u*hoJ3tr%H5djV) zy*l-PuyymrqYp$~_+6^G(GT zw9x6h6dO0`ylFuIckaZ^jbfFY%dn-h5cF%zorecc9|=FUtXsA{;Dq(#@y0oMdlqMG zGntU+Vsgg2_=;ChpF_-&ayVC;TJH8c3&0pNi85GdnEFa>4SrH@YGBy3(zdpCnEVFo zhW|4cFu1|nMjWFJ;R4b{E{{9Q=89Z)&W}~4UMitb5AR@5)S{$@oprA_(vmXMcaaml z3j(EzqpbpXQ^9SEnis_ zo)WwoaZO3gw5J=N*m-)N&+!~`;(|GV@iyth`MMMI{B|Q@gq5wnUiSSXphA4bL(W#dw5Pno!wWD`yp8IadeU|=i$@c5Vxx^iS zs2&r%Y!-B$Pe_#^yh+iItn$hsV`sbq7nQC4-jFc8=T#VM`&zI4AzWNZ&&%GZIu%S~R#(y2SIuGPAcr^f~ujD0lXKwze8!-L((tllYshC(RLw&H9!w)dM~ z9I7-vqaO*Xwr+cNMOcQS!L^ysLxb4F*(GZxO#j%VHc!bB7AUegb?^WiKZ zWaj`_tCs3he?6edA(~v&C(18QG1+fPF*{%`?ueK2KfuX2&&Rp+we|UV`^DLj)pj&1 zH@1S*>)o|Jb+8+#KJ(C$m%kiKS3v5*zZVw#Kocn40pDM7MHOKC$iu4#CuxX`zFp+v z`y6wcC2SmvJn&SsX$f(>qr7^CA1=vScl5VvUN+BIXP+zz+%je;+W^>xJxv6-7AB`? z|BMOIZhTaZb`(x@RAXx0;{P8^38F>W5ahpUihdlEF@Cg2L11 z`dKXsqy{x*vsw5)T}+3#-@l^l!q0hT7jU!IKlw#*GJ`fnuu zR4}CSk=fPB(&gFHo7Mv&+OT9@$?e^+yS3W$~c_otYENvc{7=tH1q*veWw~ z;Uafhm{^dxXm1jb7yl;+bqfEfuI(NN;$%wG F{{!QxNech~ delta 1471 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 ZXrB|}d`|#qFaQ7nK>!s(YXEBS2II_fnrHw3 diff --git a/samples/h264SampleFrames/frame-0498.h264 b/samples/h264SampleFrames/frame-0498.h264 index 104e942760b794605fee33ce30c4888a4f3dc8a9..91d014daa042b382acaec34948e9806d5f6470d9 100644 GIT binary patch literal 1216 zcmV;x1V8%#0003AFaQ7nL7KoCyahKwV^`FaNq_K&2!UPz4md;sg2(xXfl?z%%Etf$ zXql2WB3C&*0AbEm8Vg>gk71Ndct!gqiU6P)>GTMgax$BoQU?g`lGod&+;umQEfIf! zz^EZ|0IJ4SDA0A0J&1;N>xIlk_5^?cfJmwkaABR8q_kIM$^HOLq$rC^n}}+XjMM-E z0f4y605o4@Oh76m0>1yb2MRFlQaHNb+Wr3)^F5n0VekSE281fgf6yh8vQ}UFNC033 zJ2*y!=Yb&xFSMEEU|;|s5&$^iux0n}y5Ko!5P*1=BmI|a{-&To>U5W>(jnqlt(X7^ z1+hQ?KoA-jGnjz%q0a&_K*6hNS2ko}FPwk?hxhmf06D;{2}%>Q#J18<6gX!91Po%J z_3;U4hO)`Bo($y;Wu&{HhpTwGQUKt8gr^d0v0FnSUHX;o`d0X@E6aWdp0iIX`o#Q~O<20Ob0{|58 z->^ekU=n<}-~sP@yh8D)o)@nxp{4`y00aO;30u1HfxK2Mg(#Qz00D?D{E9{F&n-k6 z{co8v97RVfs`QW5;o6`7FU-hfbuse}g`N+iI= z1VnP{@CHEN0)zn~@DC{QhL1tF0Y$(F00;}9LjW9=w%&|`Y2nZ)7Kjgtg8&9Z)&j$C zJEc-5e8UDSH1Lwc=`ie}%Z3o|DX2BmcH)iy`#=CN9PY5zC084djdr_cAEznGTkrT` z6j!Fa|M&azitGHy3JrGmF8kr@YK`akKq9yhR*smHoJ=#ZPatsP4Amp6u#VZ_1j-l{ z%s`lTI=I6D6YTIM@Jvnt1V)Y7eamF?CFyto0s-a%6a{&}xvCG-`VWO5^Tq(euh<7a ztW*w0=tKY3Br$ewlbDO(|I7e&fPMlr?Um4I;$lDm06`WX--KWQAP5c`OgqD(PD;_H z%LW_)4!{5a0YLz6Ca?yt099)NKnFtvpaa863e8K*|GWSXIg)VtDFxqoXqr$KtCO5x zmI81O044zNIN6Q>lQx`XHU|cIspCTxI_m8wx0tYX_Mj*L{1E24>g=!xhR?%=er0$M z|KP&cUGLs~i)WnJl0TPL2flxr(x-Y)A`y%JP99w{{#S=#?~$7(5e6T zpOEHx5jq%@0R7JORDwRa#_4tO2XQ8;k$|0YLy2LTdnO@CM^u*DS{X literal 1073 zcmV-11kU>a0003AFaQ7nL7Lziyag{oV!+3fEDT!&_;o8H5S@n42ysO z5CQ=22B*oi@nQ#$1xs%-F_@@2hZ9d+aj+Bs3xyOFMnaEa1*cHD3liSgKq<{=C|+~Z zl!ah!A@BeK002Pqi6}V5aN&~yV^saa0)POlhJfOr07r{n%mp9b1Hho?vgp%Aiib9i zFD7t6`~$($rUVIpAEFIc6(?W-!iXB$sBpHRrm0?e00;rb)p+z2sb^{wfE-NkA>1bHN+#|WI}_Xr|@V#;8V ziw-p;w*UNiT)zl8hYLIj^<`fQ)a(%dOW>49d?pNm7=XynfWQFkpfLgq#F4;!V!C_? zSYg50Wn;A^q3^rkAca&2alr(cc=3mmfzxmE>AGM(atXL%ovd0;6slY`lmuB{r~`gSac{pVr$zX zeEjSVML|1*1%|L_{pP_1${)%A3obJN6aZv-z`#-UJh6LbIo0YLz6Cb$N#099)NKnFtvpaaH`sM401_4oiR_DMK>5Q8VbT1`+b zRTG?lmI81O044zNIGhQuFBqJ_I1;EG)xm_x*Dvipo}?;ZK!0iifDgeAhEe!~DfGh? z*z6JY`{plpAOH2>!|Sf!|Mz^7j7~tZP`<9HtN?w;Xlms`@Cv5DB`2jGq6L2k zAPk?-nlUzzqNa00n^E`hYKJjv^POR^RF2e*$X2NddrkTZkOEEt&x`?$Bp{ z?sz;sJ(Bo7JwUd7iHT&cI rNBQA!=ip5d;y!;r1W*6~0YLyciLL>wz#EJJ00BV&6+&x(YVZc*GRM_b diff --git a/samples/h264SampleFrames/frame-0499.h264 b/samples/h264SampleFrames/frame-0499.h264 index 15e1c1b0b227c4b5641b39b82223038e95250629..2e2849a6995fba1823daac6319bb0612bbf7d405 100644 GIT binary patch literal 1681 zcmV;C25$KP0003AFaQ7nL7Lziyaj^93oz&aAu5R*%uChpWPg!^8k$T1vC5=}=l@IU zBFfmqU<1bpTW!+6`}~8qUAUj~tRRugT`L>34)mPbC%^N<1rvJu@!#{PUh%*P03*fb z%iZA#cxL_QAOj9%#gs!t%`HYyg=;|8j0minS;Y8B&7c4X0k|@AGAgFxKX5g{P!K}3 zwW<}78bU%}|4ZP45`@Kuz=RRt0Fc#;B1>+tN0m?91I=~;b-dBiSs(ZT0~rC-q#TkZ zp&`Z>hoOztek6dZDZM6gd4K>QegFaw001Fo00IF?oFD+eKe%<58W0R@t-yshfCk

    `WD>Lf#47V8c-5phkbJU6Kw1MaKHeR0`9HO;jm|9?IS<{ zARP4o4mYxURsP&V7*_3C5oD1?MAm=!2wg~$^&(86m^Bn%0-%?%Bk9f1gnPUQ?mH2r z&@{nK8Q=fysiRC?Te-N47GFX0g}{I?;zko#00;%tb^()vvTt2O0iFrM5H6bBrJDKo zKWT(fxY@`tEPHM2g5Cl11ET-+twlaS8AB-#8Or6;!~Jjw3Ppf1H%@(0;BX*IH~;_O zN+=LO4~VEj{l{yc2+8YT_15qM5FUwdg_G`pL;2g$YcCj=k~>@%6!d-I_$j~x6%S6o zD6G6p$hV?`>>>Pk4A@oCJGcPCKp;(rbEiBZSOLnw1pm_cL0BOP2m*j?AB_3f12DCr z3#{&#Z7U!FNCGvZAhvGiF@j5BOcgpTmz-uGbZxLN_cwxY|Nhw2KmC*9PW?_b8rc~c zr$4sLQg8|zdrU|1)`F1&Ehj+;d;jdJk;)WV1*FOH62JzImaS`DuLb}^wAVD*KJY*} zd{84na8L?E0r8j7NN5lx3E1QnT9;FI_u3#ZA{(47Ryp75|J)=1U<-DDFi%Y(XSV+F z8GrzQ3tXTBJRnvD1n)Q)qEX(PZTH8NOAGJ)fRt5bH;OE?5#Qbjc90=YlYgrkVe%_* zKoLTTDf0ngA`aI2*8g|_0s-YfFbJxF%%@s}d5D+SzyJ^rPyr#%2QqIFrA~z>)Bq5) zv;yMt=>i0Jd*DO$1Ho#K;sc8?%AQK`O2mm|*R1|OoC2+u) z@Nx#>BSTSgHB`gs3J3D|U@&3|J&YIv3z&Csm9CjDtlDElyubiJFO&j;vQe=3{%l@` zbbcF{00;ztIGNIHH-b`?Jh|)O1Lp=RnaMQtp1_aX7#nOwtE@$oTXetv;6RX#Ww1J5 z+8A^H{EB*$MnCOD7@Y9q=KprNsz((UU;DGa_JWw7F#fv(5~u!Ss;>s2z)t+jC_CBfB+B`VqgH%OC|wyf&@SJUTuy0oz8Jy zCIC!700A(1;zCm^i~cdH2Y>=(V;6B#ECC!$u%-NyDiE|ktVc^C(UJS+ z&_h@Kvk2wAgn#q|?T&{8K)`DREJx>G-KqcnU<>UgpWgkT;IkyuZ0h^t1q(@s`|rb> z00AK7H9s9d1}#R;cmdH$Qyrq1?pJ^Tf&NfQZ~aJ^PcML=0RRGE4jBXw3V16$H6O=o z#tO0isMnFb-tYw(XN#S{(Tt&C#CQM%0oRE8>7w8$oGO*{;W5qexqtC&#PF;MuoHlI z9uyL-IX~_+A`sV<#Y@3|?*Lsd>C}$JfBt35Kzno8I^J32bwB*P4P&~+vMufQ4aAp; zOLXr!`^9*_4l~ytZ|Jf#pb9lyu=Z3ufeEH_YUBTP?1Bm)b^v7qEPFfu`=OBj0-y&h zAxPhv@_%{Q+FX>?$LS9uqDYYvKfD|~kx0I?w)&rr|CyWrX^N>%1D+LuI7jIG4v+u< b0YLyciLL>wz#EJJ00BV&6+&x(YVZc*#8mx3 literal 1579 zcmV+`2Gscg0003AFaQ7nL7M;?yaj@YA%zIw1J#eQBbAJRArGK3{K`Pi)(I!4`_=Ho zc-6nA%_iWUiIMRy;w&masKI~$;dNrgFp0hUXaBfkSfj5ivkv1wc?haHFqQL`zc`Et zBwt?(nrT(1|M^(f9v+Q4sL##=QI8OI;@XET@3w?KJ&Z=ojuw??ezP|Y1+HlfKlfIG z14KfpX9hx(P~a*vT9kswj=!CWi4U|0fP458YQng@KKnobHv)T41X5)YnE|fa=aA#1 zd2jvP8AC1WEFc_gruVMO)(AbYh7!~W%4hHUbO8i8F+Xz;=R5T;$B2m@3RuWREh9}s zzW_u4IO&pC0~scfTmJU~fCHfg;M&>VG4qR*$N)UV2B+u+n;f5%43=Jhd4P#UTaGI) z+G96~0K2l1&>sgFJ4eD^sQZ9$fB@`T$N+F%bk1m_&)Ew_@4>J?hAT-m1TbFJ^M$nM zgAQLb(Sewen=&(CH;Sj5^a}XY&K2H*4_we=qd_HQ)N-&(Ra>~4o(jxxK#Q&a0uT|R zDsnzC|LMT*BW3G2?VqXweJ zfr`Qin&E=oVS;D-Kw$iiQ3^%l%^P4O^&d#^%*EgXs5wleDar5Zm%*?|qy&Kgh@hbW zPy<{bB!S|@W&rCzQY?wT_ksW;R30R|Ij4Z1S7ro+-`X$;UeQKIg+D6sCO6FmM+V?6 zloy=WfhFs}01yNv0096n0zsuQb5CZ^W18=yA{NR;C zhdO`%@Ix3NlAbteJ&Phy9B0`#c+6_+-EUR@h5$&+;xb2*t3hrayJ7pD1`|DDH^2Hs zs(<^2AQ&dFL61lX(s));-VcfL&;Sq$K>;1518~jUN0-5PfFXtfAW%GUzZ(GpG={Jz z3ANsmBf|gz08poaVx_5Pyp_p2)&1bg0l-L&_OT;mBIAzPkd5X50s%vWRp|@Wg47I7 zisRq_5CDMBG_ljQ9o^5I8h%C7#iGL*!(J5?s98oZkx(b#ATfdg`jW8=VrBkj5UBj1 z8bS#9Pz2C&>&yVcz-<5;DWc6a1ZgS->Hxg}0RZN@01b?7b-{y!Iro(ice7Ya&J};$ z004jh7~sZ7&S+Z|M4%xPf%f2GxlaKJ=e!6NzIw0k7yt+f01Tj@al!v+Q?m$ct`U!I zrbze#Zh!y)0YLz6Ccp--083C4fOr-X;0cx0zBgb8J#Nu|@ThTYhh6G`1rhQ#R~7f# zY;Obq`M^#A;Aa^SkOhEtPN!8t!=XU_L#pQtK4PSK=f{3n3N%j~y-6~mBFOBpzTTpE zu>0FW62EPjS2gS-|DY#qbY(!?5U~l&wCth({$LR4W%~Q}Kyb4q)o$N^>9?pkMz7YPrw=2m-AU|DFPfp;Uz9gvR&Q<^RFY3c#BI zI0u2@K??5D?@bAaZc-mw3;S=J1gO77ib_^5Uq!3n0DF1iTtE1)198-`WtmmK*drvr zBL?;DKetNpewDkXYsZqGq`?4Vs~<}V+oS!Q7d5roPyYX`f(jsZ0Z_-(|KpA%0>BPf z&PM8MN&UxTBt)jFIw$aTfTT!?54!s(YyfKT2IB}W$%+5~ diff --git a/samples/h264SampleFrames/frame-0500.h264 b/samples/h264SampleFrames/frame-0500.h264 index 9c2c0b99e0cec9ee7d605cc1ad3eaf8d1c8e6574..732f88b334384ed51d8bffc52a9143ef297c827a 100644 GIT binary patch literal 1296 zcmV+r1@HO*0003AFaQ7nL7M;?yak6a=y410r-=k&iNFIk+v1yuUH|}qhysK78u0<} zMSlq#zc672U;tyl06cTFx>1Ep`XDJ z=q?uicIpV z4c4)v4Wx3ZPrLwu za2uIJM1<3IN}d&f2h3243KM%&*%RF&@^P9aDf!kw4niHjga~49^?^v}q%4Gp#51P> zNe&gCDnowg0096WW&j2R1j%D;Xh!grKm%3e0zuNwV^FZR%!E>yRdQU{1~rXX*XSq( z&@ln1XTShlbpt_^Yn5A=u%+pg|EP#SK1|-4zb8BZ0ReshA>apawZgY}IpW$(C|hvg z00gcWLLh`G1{{KhB%)jlKbVdMa(J*&fmb&wXr=+S0e7QY@790`^vEK|D z;-O!n2u%ERy8kjzSRI$SYv5=B$5uuL<_>6-~bs`0098t2c)1-00aPCfB-C>8;b zDSJC-e(RBUL1-eoCyTqU|Mmc0Pk0~i^|*iGU^d^E!0aFVG8^qD=XhG%^vcf%R*&^`~i(00Q0Atw#2PbR3`*D%;FdUvjOM+yZ|3QUH1Ro zFrpRd0?YqRprracuPk9Z;A9?nRs`W65$E7BU;qFCK>#_4umP*U8;k$|0YLy2LTmtP G@CM_!Z5b5+ literal 1014 zcmV90003AFaQ7nL7N~NyakUC6pU5g2qt$g;Sj$97)Klj_yIcr0RU(P5Z&_m zkMYHS|7HLHnCFH70ssJD0tr|mMznq)p`X8l=Kuwm%!zoIOoo}H&jAidr#>b!Ht zM0T-bfX)a8KnDp{ItdQHVf-do0tf<5g=&Tdvx=~}OnKvTop`4Da0mml0$BFxBN!7@ z-{1s`SZ_WJ01yFWDA|UI9smG=UI96vckk16 zzkkPo0#GmkG?I=1bbg9896BX`2=D-80Ku*bddigb>;L{=0>B}GAi-2&pD+Ug55YTP zvp8HsT_pAw;E7|zMI_d76}&fv#Z))|2pRwYf!AfQ04xmy@Bjz|2UPXyFfZW#KPLc? zOOd1q3=fWW5XvoxX^-F7090@Q5E8sF1faM85rZ2U-UbchoEljb0FX~R-xpSZ)xZD{ z1CihWQ%hI?mHG|BUTk0c0B{J0c(xESJxg2n0e}vs0ms8UV`=uIhLX?wfl57qCdxzm zSpBH;0AL1CAWnLs?VL*%Ij6usfQ}HtKz6Wa8c`ykk<0)D082mu0B{ODv$Fq1FAZPs z00;sCv@DaR5Xaj8n3j@&Cg=bF0YLz6CddY_06{PlKzJ4s*a!e%7>GVq;yrKy|DS!< z4)`_8xtkgoJo3yYJ#>=-K^!K)vDV9mbp zWCVN(vg-~Mf8TI%5T5}s2O%LtBQj_|DziK?zDy;k@BhHD2D5bmlhg^{^ppS$y8r-y zfB`E?Z~z1VU4Q^UumB#Co)v*M0&ouj0H9O@q#U2y5#OqoDYzDd?up{g>;L_L63*ZZAeGG&~hZ8^eYypaY+&Y)b#- z!fEi_=rX(9Dk_BF3pv$hM*ucp694_+0J*#F)_#4ek!GL=N8Pr9l3ef9v5or!gXe`{ kP7(9@_zYM800BV&If=3XtH2wK0003&02M-PfNJmt<4Fyn-T(jq diff --git a/samples/h264SampleFrames/frame-0501.h264 b/samples/h264SampleFrames/frame-0501.h264 index 07c0678635477b501e19059e5b7af51d389d0ed2..ca927b3fecef28703484ffd07c03ebdfe74c7666 100644 GIT binary patch literal 6822 zcmeI0X;4$yw#QEr!eD>|5e)MvGcqWnAjs4TD3dbC6o#mv2(+z$0TbpRK}4BECKZ8Z z5*1nmApv4g91t53nG&F75(tP8T1d_VuHM`A-n-S+-u}>at9R|%=fgR>_W%6Wf34cJ z004mSp@8-ExCKR~A7U;#125<0-2wnG0J^bYrM0o<8}CoNG$E`%u*3xJJ0RHJZ4Mln zc>3p#x87&JeM)he0|d+FmuH4q4`1Sjz%{@WvUf#NBV5reH$D1rS{^1_9pKitz#8HB z6RXi3I`&sD69fa;!>y&@rHd;Pu{y6c5Q54}2{!jdXH1(L%*u6@2Y5>0(q>>uQ=D$* zo7Dq5cF?5Qo$am?>YAR_EwA2sGi|9_V69&uq9P&9V~LI|FylgrP_CUa*f&cPUNOe1 zdVFef106joL zWYL?B9#_5cJqq$1-$eNt-(el|MM5p$6MI0#^`7HR`f9+as9V){xcJZU@-emN&7H=; z&tDN-$;?V)&LGR9@|4@6zY=6ko~&Wr_TLWn!NZh11zzF86F3N2@5740T{Tmgw~xP` z_3aS_>68~E=0^xHePS;ChR~4yEkNd^B^=Q;zCz*RhZow9au=V%#(2e9;Zi`ZO2mZ{}T2O zQ^kL^DhD~uzs_&d*-J@P`mRR}JY(RBSmKvJIn;^T-@ z8|ICsGk-bNoe!Yj@nycB(G{%=kbJCr$O14*XGNNA#>$S@S*1Y5-Rh*y>Gpwv-}=>V zJyZvM>#jI^`Oya(YQ*BCbfU#WS0?YoHV8|}Q))-?|DFiMi!ZzV2kAjSv-ncytRlO5 z{1UwW50ok2d2rq6eDPH>$~QA_&N;=V_1fsHUDg4NZRA0GX}SI1}iUF>L%GM9y`}@v_{vG*hpW2Qh0nxeiBX3 zgXaSxtB<8e28CyiKHr&6lWI`471|9z!C`(>CATUmu@J+QoK+edhI@6xtK^WG^qYKX z)0^lQi?oi$5M}eu=cm%S=Mrlld?hKoWpJ z9U)IIbII<@6%#rBDk^yyMnL)5DTQF5TYIp%jc0i+Fi=zc8x|4-0Ui?7#-(7tt|&P% zmzX}IN`YMGyPA)8B1UOIiNM|j?ZKO_5xv=1s<|JwEoW}j{haEY?-PeXmE#&7VXsp| zDbVrv0aY*Y3n{3&tO%`-v3-HoL#wlS+$65T-JAhfauJIqxh?2%idSdB3b`l-1ecNE zCv$SLxjTOh?vQ|qn6_)>j?5NR+?nGdZx{o|4r)Lg7rYI#!$>~~M{%g<9^UTRv1OZN zwMAO=BUh&Fv{1gku|BiHk_P3uk$SyCvvhZ4xRBsmQe;~h7IX_kHCT0AZ0UWbt16j> zW5s&`EOe4GP1OO0-CunS8F_wGJyknb8EwP3t&&&_fUI~fwRS_Sg@a01;Kj6(Vg3iG zdYWY?0{_=ZxyHkAf*={)W)PA4hCy36`a-%wu$EsbXBC-Ky_bqQbZTEdCm8W2@b2v! z#vWq@C4)FhWu9z(g6#Wi!Qm5?&EMU@KoVhD<$h&LQ^%ffWQ!i#J97xO&#*m=p(d^B znQ{v~aO0j9OEL+|pS%D0?4=|VOnHUx642}>CP(!ST@$40U9>%?G*P-<7uNAL8lc1c z=C(K|90VZXS2J!cW`d@5HVwds1(HHURGQDaNZt!k@-kWiqxE?vJ=-6pV9WZFwqHjb zH;WHCk+u)JLCc2vdejyJq7#RRFH zpG$_dztpGh5vpJRLONPaEr;#(y;!EMpTe%6jNgP`k+kjwDWd<(n|O)GCwJr8?MP*! zem`8$o^7>tOeqGobLKIL?mG5?8jC!U6F~;j^J?QnO+Q{0^`$>jls|zZ^ZS5eU_kqY z>Q8YV$eS?87S>E)X;|taUm;}h`{E@D#{*UkS zA*b6MN|L{@x~9yJEv=+Gb#CW^*RN2l*QWD_K-PsZ{L9Lj6;Zts9Wev?vi`655Gu!i^hruB=j;vp)r z^aTBdMkmfcC4bn^r8$3y&bq+Q)vNw~)Gsyw7x$%YSyk(Q`yqdi2KO#<0}x z>qU{`L>U?~dPti^pBEg<;wkTsd$A^sJVn~FwwA_;<)#J#Pxd=>Fwae$3@I?ul83;@!|wO-k!1g|yKG`RM>}tJXL3IzF7rnhki%R{Y4Jxp zOP;6TGsHD29i9WBPfeg|NzoUev32pXcLiLwrmiM){Czp<=0>tPK^G@D%lJ#{PAvmq zY4(DAA#0Qy45-X6rxWfJ?>;>nb7N|Ye58hat>=i5=;&SFkJpJYyh@Qg;hph4A^Vg# zP$w7}Z94ktRt$()enPp^^^W{Dwv1VVV-$dMoHqNA79SwD&x#D?)j-=d&58D1kC^*LU}q{L1$G|LED9%299ep&Q!Ph)8UwBnqE?&%L;Vhv zG1ei!knKj`Q_)2n3^0}HO(5?N;s&>B09&`$*l1a(FQRmkw56r)^WNJYy>tQtqu!Jk z%@E#?zCh&XLLipaTnw#$P3QvVj2zFWl`GOI!Ls;G<-Yhn(|g+Li_4*(z9=n!{Y7bd z4;@2u>sN2m^JWCCPD!sQ<5$TW`j(>+;;+%9>s}>6*DxzY+To$KeMonRx|G}r> zp;?HCR#q51tmd+A7p|^<*d?-A)0=f2Ku!-H@^6xtLuu0ITSDsX|>>^ zrcW{PTaQ>N&&O+RTF-wIF_<&YeB!W{ttpFrYd`@?Hl4)}a~HK_gvLdHP4gHfeY#c{ z@%uk@{0EJU|D*}>*WBw1UQMHkz%$KZP=j&2`5il#&_>v!#hWk7l31I=RO2jQ*Y>cVoK*B@G+Y-Y!w-hFISNxdG7c^|H-T>;K=>c4E9|BK delta 3263 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 iEfTnr#&#Mg9l(2`CEy diff --git a/samples/h264SampleFrames/frame-0502.h264 b/samples/h264SampleFrames/frame-0502.h264 index 79722187beeca3de37fb098404d3eb8af6117227..f8b1672dc0a24cafa0aeff95449afad7187b5fda 100644 GIT binary patch literal 3006 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 CsEiK) delta 1206 zcmV;n1WEg-3%&_|000012`~Tv0YRET8oUJ;Fo@U}T64%cRT}DKz7nm&=ulcs`D7kI zDDVmTnJ=2wmxS`D(Z_&KT*KpFU0OQ)gQtft;GlLS3PBtI5dZ`O^#WA74G;Cxo~Qr> z$c%1=CUH`wC%`Z$66tv5*3sa!37Zuoj{u)Tm`X#&D;WTPOa^lSgG(R}!DwYV&=if}N#1blXxC;T3OYH`XEEp0hd?rFFF0{{#tqDpEg zb;VVGJOU8ZiNAC`I#{@WB2NiQ08YHY{la&8+u#6W5Hxq&GKv+DvtnWUfrSL7NB1DD zL((!*_xJ{1HLWiRG01X-<3>W46;&EW4Q~(Nk^ve%jppOF>(l$mdh5wV-~X(f1BLdG&VTNu4*_z6ayAxj{#Z+HzdCQ{8$_w z5OWTH7I+it%Dxq;*dhLy>?c4$TQO_E00;$`6aXl-a{r<_N(MzH_Ly*X4oY6TNT$yH zU`RA7aMT*|Uf}Qt*i|rJ80o_6zxHqdHv$;f*ra4d@Cc3>P2eD}08zwX#1H}3y8lpV=mT$n06-Cd`Co;C zVvaxl5D3y38HNb53UKvuSA-wn39t7^xr@<5o*6E{%$aT z6Toy95T*dJ{A$0d;UcGciRCu3lIW;4M7nD1sD>$u(U>_o8R~X^lZS?Lzlc9 z0Uf|%Fq%3G?f?c*1X70u&v|jR`j~xxApv<~v){G%p^(A+clDOb#gF%3CIH+#ExZ{y zt)}_%!IqbvFy~yh2=^y73-qs5))A$6cr~$T5c+rniliqMQN*+gEe|=nkgi(?W0B1U z0b{OD3&5I$z)S(aU|Q4w1`Z$vg{xF3dIN$z*N@lX)ZQ-Tp6`MmVJn1+V9!r~yWkCy z(SbvVb*F{)Aw~p3z_-H6^@!$Sg7&eL@NgD7d>%%Jln}W4{3+;eDr3oP0Al+}+IPSP zef?)@@~;tM_N%qFF*(nm?*&Mtknf%s`S=qcD1h)nVMQEdE{fMEXRwHo2tYs`?BoIr z;=T0+NI76o?-}o3(1NHvL_viui#-DUKqgQJv%#C`HAuRk^8fojh*Zb&N+Y*7qvn)@ UgYGx}c>Mec$Mf(DOp}fU8sxGZ-T(jq diff --git a/samples/h264SampleFrames/frame-0504.h264 b/samples/h264SampleFrames/frame-0504.h264 index 3a9f25b6be0a7c523b7210aa307bff2728017a95..b7be592d695b8e43ba18678f314a14df098711a1 100644 GIT binary patch delta 1288 zcmV+j1^4>935yDU000012`~Tv0YREz8oUJ`C|G&AfLI>iQrFbQF5{7K$@j#6Q!9X<(2f~4WW6=`t00QDN4UT1TDLeb^Ai)s4 z!^=5KYOnpGKo|v?;9<19btQfM;%opLUBC#@$6!EpriM^=r3Z;^kwlWV|J|W;!)$a2 z@=8PhfD#pMFs6@ZsuWR|Qs98dIC2{#ICSMmhLxY*004kHpfD9wf>%nXv32L2{r~`g zPXI`NV*v`4v}sb~lj;Bw(BuGF6q*5M_j};}2M4MzlJpaWyfR-b01`}w*rw$Z)Rcn( z@gPi?fPe*nPpUKowGQr7W2+(PDm;&=ce07Nhh3Is_LdLdXKm_;xm z0^k6FiddCn39_2Agr^S>f>MKr**Khnv$bk}W$?-$)*cXQ<{~?f6fTGyJlG)lI)RkbfTF8~na%k4 zsX%XqJOVIdh?9yUFKz#yzsw{UE#vm2kDNS2mMnNaVj~~_itqpe0jSsjNrk=xX%9Jn z|GM_r->KB4E5yJO9RL78mIYkkDjBi2<1aJ^zyY%{E-3~*e1VJoXoj4H&Sxne9f%5G zh8O@|q0pE7$F}3Jep&#BU;qFCK>%(hmvki4Fsdd}{(Ul+D#In!X@i zef|Fb*P|?aWx0}K|KB+{TbafFf6xh_I0y&?1qO6ImDnZo!Vjk|Gr&lBrHZwGBx(NM z3$vpDsB#N^nkzXO8B5X|9d+CQIH(FFL6m#vh2TwKCV<&t0I^A!fyD=!DoZ>GR`xiO zcmJA1(n9I60XmzST5Xg@X#nC3Sod$91nM62Q@6YjC;vVSz40<{?)l+-z9h0wj0=7e zvmk%S0>=&pkM-}jylBG9Y6b9r4j&uL3~lYe4U|p5bXZdRWN4~?znYaLRZoBS@bkj( zCZh4Q yX1BFjNnJzvZg{_a{b2ztUJQsdswz$po;L;zS>s?%KcCOQH&6fo0YLzhrUVt!NHw_t delta 1203 zcmV;k1Wfyj3cCq^000012`~Tv0YREz8oUKZAX(~AfLBta$A$A;-M}#ZG%NrJAPCh1 zPN4!>R050u)S4-95lx%`5`bkic!(Q7A^)@ifbGyQUqW~dcNS4-zxM%<_W%!|H+2#C zame1KCfP6CAZK^85sU7>ooR3M>E^gbTs1Ahp#by2J1T?oE6?s21Yz1hr71f7Zdbp<6{Mbn7&oh+K-UOEm(4U_W+Y)O z$({{k^3D1M`Qa$8v@=}b#qAA=8E^MUV-%YSrWKH(hE-?h0uT`*bgcM8|I>k9O_tXm zzu$li>}M5!OSY^-Py4ih06-83%1j2{b+0)2F^k;jW*mow7bHGS`?F${06a!Pq7;fz z5~ZiW8Gub2nk^qqZnnEx7y}~jh|1go4l(2iKiUQ# zyAZ@9ab=6J5ILt0GGB=(!}mmm^R#+FhF;?#H6%=bCZkkPt}Dhxy?J&*>E|e%R}3NW z)edz=KX{&R@&F70g-8Gl3*e!HZg__>W8trL&da$B-f_x!D8KI1CjXCNH1R%A=<|%%Yq2N$GF=EC2Tl zfB--MKwM2rCkFp?EoA-XJrJM(AVJl8KnXi=u~XOPA}1o)cUvd$02o3g6N1~Okk+(E zO_+VaqjOlUz90L8QiHEgF4OJKW5NJ}A(%LS4x9NMk%6$71ikx%m4uZkN^+~01_3J1P|~CC}aV7RkDwAWXIXY z8R!CFfx@WKYTwbD;Y){bU<(2QDg&Ml&a}NTsRa%I6LbIo0YLz6CYT1V0f_Jv0B|;c z3i)UW!H6Ok;i>(R0F(oOvD_Rn=3vHw-4}q7g*Z$!wl3BX$fTl=^M>oeb+pTUpeL8W zOaa-r%y5nXEqvt2A0hv20D0V(7;w+in{DU_NAA5us=sah<_y5VDV-!oft)+Q0_N`o zXmB`($7>*5MIh>z$zKpPz0^MkMY-^QVrHhNU#9#PaT2b7&IPmBwGSb~?x1%)IJ9nbFuo6Jl*Y6<@M0DNDLJdhCcfDZPP(0j@Y zUu=x3|G$(iB%~j|_u=P-;7v@K0s$XSMUk&Stg_?5VxL>UqtlvgWtJe~2@~=9?fF^Q zCm}~ZVB!TK00W>6uaE(jw#hXr+8t7vtFujk*t`{Ih<-QU-|NBxSezJ;>C{w+Q9Eu7 RJn^t6AJ6CD8>o}<1R82c54ZpT diff --git a/samples/h264SampleFrames/frame-0505.h264 b/samples/h264SampleFrames/frame-0505.h264 index fbec0d45a0f8f0f9f2b1bb10b0c01fd9f1507dad..089eda10ccb40f323022375d2db33dcc066c6941 100644 GIT binary patch delta 1548 zcmV+n2J`v&38V~v000012`~Tv0YRF88oUJ;Fs>PjpNSQR(JrZY0W4F%9{41WfD*+p z2SAN{&?D4${-59p3&K64mWPmjPDzqj083AQ1aa{aBh+{Pm>&Q{uY`EW7zd1sf0

    3)%-|T+5!WUxFF*N#qn6lI`#Q{5W{n@Qigv7#Y54hSLYYPV*mmU zn4;Ch4tYQWfD-^?j#27;+cs4vFZX}|Py>pBZKS7D5%bj5aAmrKrCC(q0;UuH{q2YX zD(FDR%#6H$DlQ^Bd2bj45;z>#HD$0Ro`D<>01O;LC6!24w`HKPK_-L>K;r=b_#}^j z62&kFK#hFRBh+{PpWq4)c{c^&xOM&z?a~RbKUyk7VOfe05k)cZ)#7mSEOsga>Y-eV z)QR$TK{f~L@p!&g#waaN;Sr3IMSB4>$0Cj691UpelhcfDz$&uPuL4C2*8* z7PbHYpfnjm0#HF{!{m>H!1)6H5y!y6uLHCJIw<&jVu~~w4dI`|VNZsN02ZrYI1d-? z8gkKhBLK+U)6fRLBLE%<-B>we00e%u$x*1pvARATjZ})f%3g(sfeyStRB;No4Ko~{(GWTPD(BsG3f*cn0WNax8wc&_?rQ{|s%0Y%9 z!VpO=1|QlC9iN1U6gnqjg~;3;fVj3-!HTA#_0s*G-s~Ig8Kn-m+AOH|1009B)R=@!u;lZl-ykJYf4s^mscU?3ea%zHq z`OvQhuVr|`y=V{d@&O5mdvYxpiT{FfAdqM4o|K6p&3)uG0$vSXK48Zk4GF?Xo<_0Z zOsG8nf@%%qB`nZ#pzZQsCVe)3NbqBMCXLJl0WMljEa-)cB^$HO66nWwh z|L}YO0Dy29dfV`kUFehYZ4u9K1R;Wyn+hok-mm=q^VolD{K-LJc355Y@H_!URs{uQ zmmMf8H3#4Uvx?IMgek{p7Q~H}fH8Og%3G5OE0l)&Ks5kBtq~6U=NM>cH}&Ix2*Z-p z93c;pMTe2_1wj?zc{+^|H(oc-20#E~If8>He<72QOkN1SzyQLnZvqO|AHekKmDnaw z1-tkbgqpq&{9pidzz%>T#dONSqwESU_I@>WE%1L8KmG`KKmjx$0fihEnNy{QhQJ7O zUlX8%4DI0sP!>AeUfn{4|TKJPNEfp+MQND#SIMh#x=jLp$$n zm>2-y+ry(O^f$x@sH*?p-fJ=eS;ADwW&f}|1kfA=N`;vVQ!Bvt)<47n^V40mg40*I zk-vV|U?>3KC%_WRyxv^&qbNHIH?eOM+{df|A`zkDZj2E~VLX5DxD(|8p9moQ}4FW=x`8aoA03a0AfU)B~bOzDeOaKbh z9{+$Qqj0>h|MIo^8oGN;SQZ<9UlNh&KF}~Z;aC%3CV=1|C}Q{F|Nq-dTG=!wU(Nmu zEpzohYs~se5C3J2f7l=OseM)1gmu9zNK9?HfD8-kIR1Y>06}m700BV&IfZy0Ga0 delta 1245 zcmV<31S0#S4EPCu000012`~Tv0YRF88oUJ`5)?#$jt*V}!cq2?Ii7zcp4f%1UkxSz&(qCmiQh~TytDEt$T(pU;#iI6&Q0Ok=WV#MeL;EzBk zzOVFNl$w#$MNe0Rmv)!UFv4 zl~iI8KiL<5LT!c!dys?-7K3s#FawBv>1a*!;#@a?6Q~0RabByEPIONjYyf}&K-qyL z-vO|UuI}^^t>K8{fDA)nLMm$$!x2RAl2{#nAOH{%0Kl8(L2h?V_GV(GT{PGRtZF}! zqJO`5fB--+AYeTz;&*^0HFJi=S0pl7qO7Oe6CpFmE*vL z@mTp)a85Gl=OH2H|}urRLBclUSNY83E>7EdSCz!%PuE!#|kV5;sjrxh{l7j zuR1S(j>e0;X(C~LqW~w&hVUe<^qUz13l76$gw)Zc1CIOP|G#(!VJ?m*w2xse00w}! z0Zj*xDJM;a4^R{b;r9SwC@|V5Z2}$!78YcH|3U-=4E2=s#HXn7`}fcVIC{ZK@(1aL z)R>$E&?w3*#lM1301yN}g_H`7ZD7xk@E3r8yXGZv1jxUu!5Jn?7rdBXnds?9hnEk) z5MhElbrn>7>V=5g<){U~0Iez72i;Oesp^0Vj+g*g#n7U5z3!bVzyLrX2b+RIKF|OJ z1puW;?2N;)SB9-weSq=h7!Qha@GLJ@fA4Ms01Cl{*k2Rb0KGF3cLJ1sFN%k(D9wma zI1hk9$0qh(@MkCTS@(d>Fb)uwTCJS@?)&@@dH@dc004kN0JSd%1EM56J_tetEvqE* zOgY4s_lWq=bq}vPFOJ5GylEm~eWL&;%mFq)lXL_re<3ag?+r!X9tBn#alqNIV-U${ zNIVFw&u`nn2Ln%zjH~giAQqyhx9{z2v;w<vtOAeHanv0hiUv}uEX1Py)97QzL7RHSPOQGE17Be?)r0iZ}zEe65>0s)Cg2agcj z4+1IKFaRq^KHmT~qj0LofB!y5(A225y7)LUe|VIIto>2_7vN`wU`g&(INIm@aB%C>4`5@=d zCQrUn|5Z)p>~4cQUltr(@ht8?yqIVk`R9Q+{(nCJL2v*70YLyciKqdqz#EJJ00BV& HlN<&J?e8rD diff --git a/samples/h264SampleFrames/frame-0506.h264 b/samples/h264SampleFrames/frame-0506.h264 index 453b302819fc4259b1573f9e560c01ffd6cffa1a..9d9979303591f143d769ab876308af706bf19c86 100644 GIT binary patch delta 1602 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 literal 1041 zcmZQzU|{4l01}R~4oK}`6*pA;_WXEJMM;B%f1`?;!STmVyBkzuwkv#LWMC?4^sZ5G zURTL}sV;XFV_L$GOAd_e2YC48rgE*_YA$%yw08jy14DyC!QmxeZEaWSil3SG;mQIA z1sknN4MvI)pJNv?@i!Q-MO-&{eU{1blUmcEJ|G>e~kpEC)_URX27EJ&5f#G0A z(U(st4m;#adfc|il`t=0Xj&@U^1R7gRQd0R`?9OPe^8(Pp|7oUs;1yFEHpn3t(7aNgUfdPwc52+o+k)W@&k07I)r(!yGvg>f2BMH%=6ijLS^ zTIRj%!y?wKfC9#bL*mkYc{AQv-Am|keE9bPGn2%H`!@pHMS4rOtQ(5+JQisQFrX2OT7HU@J%8)UwOtEJcoOgI(% zYp#8R+6z$hG32RjU|Y|^&1k^(m_>mxT`BVGM~=D=%zf*;r{wRKKJ`0fA5#Y}i?W`@ z492Xrn|#Zd)MO3{>Sw##H9p9~Vk5YMsoO$omhgo_(VaDX$1guv>!o(##=rdL0}MU76Z00Sy%$*bga6}!nd$Gd zob~_h|BnZ-u>RXIF(|uz`!$JRGq!RC>H8J7UlKcy@_oN|gHPn|>*uW{Dn0=V+8Zra z)<{mSTb{pHm~9Oczo$cWTXIA5#Sq4%m$D)g#5T-v`Ots<`RAX1{?*&hCz|m`K(mO2 z(Pehv5ozf^>{X>NZLfWZyj}BcVf3%tEu0@}rQCYeFMV*_>#Y-U`TGslZ!Py@`CR1x z->aWj6TmPbU)$IJf%rnUo0|{mynW!|ZX)<}!R)8P4E26YZD%ij*(bnxoTK7B!<{eo z=cRbqE{Z-+Q7iQS`<01t;cCs4ul>K@+5P|TpsuLB`;Qr0%uD^V6ZyD5*v}Is(GMUG lH^~$4XG8$iF)T;`rx?r5HH@ndNcVs_qE6WiSs&OQ0{~%K|11Ci diff --git a/samples/h264SampleFrames/frame-0508.h264 b/samples/h264SampleFrames/frame-0508.h264 index a5ebf256adebdf183eda684cbed829263006e683..462f93509ff9e7bc93fb02686e90bb81c3ec74b1 100644 GIT binary patch delta 1160 zcmV;31b6$`2&)Qz000012`~Tv0YRGJ8oULOfAEM1fk93H4jeK7AS5&VJ`R%}+1WS% z6DcvKbs@W)o`4J#cPPk@bFgt&xUBGtQQKn(DJ03Zkw zAF^qC$6|&GnOK2&BvoLBIh_00aiX04u3Fz%FnJ zV;QB@&$bC{p>0(;xt3 zAQWGTu2^t;z`|V&T>wQuptey;BpV2GB}JG?+yP8~z@LBu0fYWt9eeR2CehoqVfX-L z8+ehfoXTy70$9dQ7lh-rl7d9L)?NStfCUDZMG^uYkwD4K%KQSL0Cfds3NeMuuc9F> zXgC0t01J)^foKI%{`XO@Bjn>#tm!!NI;iX4WU*uMDPFv07M^tMk*V_e8m!bZ?;T>$mx3g z>ol33uMer)|Ci=8b32H%H{KyIocK0p&;p=LR=lCED!~>1c znd%Vopua|bfaN$qu39?FNcFG;&I|>6P%;efSD9omC(i;aVHlnPP|DE0o$R`AaCaVA z004lvf|MA+0f>htJ-9`o$QXFQ1|6wz1Qq7415uI+|N6p0kN32kFaYZSegm{m z3-A;aNKgO(1Qg-Ul>htii~s}zfZ($r&xA$anWR#;xD*e`*8sgg5Bu z#-0pla44-n2&&yzs|6_Zc{25$fUALIMJsmBTLMg&iJ zm!_D1)&x89IK{%7`rZ+D-+OCwMV6N>zs35FmM4GuO8^6y4~S~&?7p}^{^SD;p(lkWo( a2Ko3P5&TD!+yf<(?*kA6z!r>?J_H&EO!}Mv delta 967 zcmV;&133Jv3fKsL000012`~Tv0YRGJ8oULOe+2`vAW{?*fC3O0FAzS((s(cTgnv{3 z36U6OVHJsbSjG4OfS@Fq+3cAWd_4l^#+KZ|QVR%QIbehwmxQ1og_KYptH2W=0KQ0R zfIv%b98xP-*4Z>zbr>7Atv!#ZiTSS(#La1g5Ki01yHkSXT5O zldf#BU@{v3BkvgurXG)HsBN&lyubiJK?nfAFE(E2ixbfpgN$YlMW|nr{HKV1-~bR1 z6NezB%58z9WVY@w2mn5=NXCGg^x@<;1(dj_0f+cE@hZh%@DD&5ib=!57}KRFcUiyp zpaIGpamBfR6p3n)02o4oLa1=sNLxbf z$@lI91qQBF8<^1AtV5C$46GBq>M4ex2z$FC*bG~|Ir|}v+dx%Bw zMduKfn(JwT!Y+9UgWTTcWN2(D3C?;rK#BlD&Tz1QmBMQ&)M)?X{9b23VBl8;EkrKjYrnr>2?9hqc=R4w zXZSn-`3GZ%`Ok?j?fu@^o@^E=YT!8=wFXNB{u= zSeXKUL*H-!0s&z14N=jwT2r%Ok9^%=VHi=SkSX%YzkT2}G)4dkwe~z`@2TLd6(o>E zw9!P+Y2W||2Zz!D5$NQcd`5u3DZBy>NC1H?VDc=2)SEfv8n^&9_y7b190$t&JR2N& zOL~M6Q4AI3oU%+H0FMp-`8*Jo00_!=8fhGVk;LE)6kJlg0qgJSG=BQ)v;W)lA^fa2R4Z-S5dZ)3 p9PqAxKcCO%^OL3oEd}sEBl-W6@dO={zXTNq{QiCbv|y7F1sX@dt=j+q diff --git a/samples/h264SampleFrames/frame-0509.h264 b/samples/h264SampleFrames/frame-0509.h264 index fadab80b235b790ad0f8d8acfb1b5cffc9e5d7b1..a663d7df85c9bfa10c971dcf1c18afcae1f4d6e9 100644 GIT binary patch delta 1479 zcmV;&1vvWO3iu0u000012`~Tv0YRGp8oUKJL1Nd`^qosuk%$y8fCGXGo+Nzxqu z_N(}QfDj3H*FP_s<04}Pcw{0U$hV132ILZQbt?Zk+mV1ccc&qaK085WFL;znQ{Uf8 zLHi1b%Fp=Te#7_gG#iY*n7oY5|KE5h6@IS3hL%CTdSAkSS`q{yo|CzEfCC#Kj8LuB z9KuOwf#kXa+T#`~Nq-=Te~ep2fBN^|Spo~Rac8UEU;qdifB=Iq00>5a1Ie5q0|9-4 zq?m!A60NZXX?y@pu@r-%c-9p5H8=nS0aJhgfgwOHfZU^I-t@jIDrQ*8a$kMW9sn(p z-z50YccKe_QaAtz0IKf-QgiV0g|0#5&6fZ7sb~;-oh9mYoWDUZRRU;` zJ&*7OfPmmn(;WZ-4oJWNjxGWeP2oa~6?Luv0fM%F+DVi_(mMBF_W=lZjf#MnhO{gP z;b;{<{o()t0HOs0S`L}%3@1Th2l{q=01yQ}WOzi!k`}(^l zW&(#l>|baA3;+xa>K8~6Tb!q#zrTVY5Gs&*{Nt)ODDZv&Bq$CDgmkuysd5LN54bj* z(`W#H1TGx#Yiflka`i;B%rF2*ZbK2pZ>WVes+YwAG#3Q`)G!|kSNWm>0Ci^m#0f6&-4mPKbq`$woO@ISTpaf{+@E|(V?F`_rN)Hm-B8a7J z|GPwBaGMLnJhG7g-~@$Rj47jA>ctdo)VLsjG7cPvNe&%5QX!#d_kaK(4)_QKO#qeC zsq|ra?|*;*AQGSr3}7KLwv8%WYJ5NfJ}CecQfLMo-2Z4lf#GTk?|(Omcx4C600t&O zq8y#ZN)zGwkP{{#AOT<%>Wu*@955kuEqzZ()U~|1Q=I{Un z15S7VlV=K?k=5165{I~|kYKlu+LAtS@e)|E;Pa(_|I9>U zKmIGg00;)NU;!o)*bkIE=l<)>vA*Wkz>qIo86F_JdVC?fkKot$ef#8pSv1JF?%(hzy_}mKuiIkAQlZ=J-|E&*Fo$a zVoz_ht)c_`UKb1et-=JwNuUn|0m5JSBP_#kO||{t2zwUXT4w*w>~PKi$E)GTY5+E8 zX(1kf=hxK_kJsbj1OZ!Kv!dz$2moJX&I3FC@BjaQlfeWTlh6bNHsR#C0zLxL7PS!{ zA$RC@Nl<}`aN%S~0!s(YyfKT2IEZ9ZVmtd delta 1324 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 delta 1111 zcmV-d1gQIr3x^4R000012`~Tv0YRG}8oUKBK|>_HOq1~u$P(cC;DFYx^XDfo@K3;o z5%2(TKqx?tC?rV}=#5(lZhwj~jZA(R01yxWf))sos~?Ccq6hGP-~jQA$a(c)8fKF{ z;2@-mc}<-t7;HMN62L%?1F&zP0O6C(bv1Z0^k zUh-jnXXB+F2{Ipm5MhElbrn>7>V=5g;m8F*0ox@yz}u=o#XUd;M@#@LV(3vjUiVIw zU;rS03$9qSVwO={={rB)7{dUqeeKK0)+AR-Z;#eao{LB*|-0{ zyaZ^UaR3K(ph@9a6LSd(0Di*{G8#n7-c%2q0)~lrJvD;$=;m+&E4#e++yS7f#)Z6v zQ6K(v@Slki6ulq-AR{#Z3AF-rjov_i0DDjy{otE`6AzM%*F^3Bgu{En!E1;gdAH& zNNPoU>kLK2Lmf7Qm_Qn=On^u6+jfFn7Em5ECa!s(Y=CO;2IDbO%?SVi diff --git a/samples/h264SampleFrames/frame-0511.h264 b/samples/h264SampleFrames/frame-0511.h264 index 2080eb691bfec961f0d47b401b807e8b25518aef..86281c1978bdf145893ed14b4f930a846253df4f 100644 GIT binary patch delta 1480 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 M`TYDDz>^aMC!1l_xc~qF delta 1060 zcmV+<1l#-E2)YP=000012`~Tv0YRH!8oULM2!#wqfkuK3fe{d=n4P=08Vfm_n=ecyrDIV{+GdspwMu5D+R$ph5!c1n?zGKM0^4QoC;R;)r*kA zPrv@~0xbnDy}?9}r33vf!0A8$K}bZT0AxQtZmUcDf9?Q(126yx1B8oza?w%7LR}Vf zN5SC`G6x(IDSLB*C9r1_FIT?w03b2-G9(GPYFk)pc}ws^W08Tgcng5i!awmu$-o9s z05o2Z1rs`A`HUpS4P*E@>xL4Bs3YB81kR?uLc@`N zome(_@^K7*0gB*f*bmAO3J(mgR)sq0eguR!1T1u+4d8(~kN~(a0U31A8wiCeYYYGX z7y~E(;k`{dnKA`Z!kwRk2tbxq^8^P;lIPJo2w(sp0RREP!laLF=M919s+E_<0dRnO z2?CJ;F`fZ{U^r5UZWKU*CTeW&9l!(NK+9LX1w~JPv=}18vDg5B1F~p?%O`0hL$4WL#ZC3pe@izIlHW3N#kmM(fUY4E6|U=k)> zJa`FIn$;Dtpg;g1hgsgjcu1P%;2AffFq`nL_EU*Yi4PKNdEBv;O|yp57Q6c!RO_ e80v8al3~ISQ2+nGme6z00&tI?&%vCNH3TP0VZjan diff --git a/samples/h264SampleFrames/frame-0513.h264 b/samples/h264SampleFrames/frame-0513.h264 index 27ecaa64b5ebcadc070204bfc860bd50989c8314..ddb47915efbeda688463d8d03b58100c9d53113b 100644 GIT binary patch delta 1255 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 UXkYMQ=Y`-;Kc9exfRoq-CkT6NDF6Tf delta 1516 zcmV=~__UPyt-z!d;6YpDP$g&T<<1duC@KmYhZ!C6dz=3oJ&LMt1;YeNvw0g8*E1ZHA0 zyOsUO06;cVfB-;Ohn6S+CIQTYpZ>W30S0?O0H6RMZ6E-DR0B}oh+GT^3Ner&bcp~p za}bPQhx;mE03fj70H6RMX^DqFwp=%}&t-%E! z_bu9^KmZ^!Z~zDafCbnX9lybz+8F=`U;?)*0aQ8`ci=(+NfKl?P9Z4HLXh0__7F!fd(=HnMD%3 z2#Vm~LuF0bi{ShSAqNau0)+{mJmEv-!yse;9SAN4*3a>enp}p!0pl1NpMwpKPhlz< zExg_^5h$y1#a8=Fc8A~q5DW_|XyEF>px&W0*jnI!|HBopH;Q1ss)L2NS98s`Cz-U*3WbvvvQ)mGBe0i} zM$6eb`|rR3oWgl-U9}>ff8D|W0RX@el`EiK>stH9#-qR4;OLJqutC!Sa|C3fB`^aC z*sO2mx7+fB=Iy1FtXu5CI@4Vc;C6nl>5xJ-G{51R-Y{1+)Z$ z1mqEP2ah^PnZ?Wq00afelYjs~H~{V;C+z_tm`xosI}k*lg>=_{ zfB+y603bmJ9MksOHJhNN?x(=4B#Ap1fNHu zBy0p6a@#TzJ%9j!K;x?Ph3LV0CMSh4@Bjz^!0$A%)3qDb&s!RPY#wRL2xB;F!lJbc zD8>>j8)LvgV*~^BC1MrC%lyb9QTbprjYNE?0^~V;;{X^~4X^`6G+CygjU_<6Ko_6@ zARN~~0kMs)xEMG)pCG7%y_&**VsNYe@Bj*d1QcX^=7n)oP681yAAAfpDewXl&-@T8 zeDzO^00abp22fBq=tFM~ek2;}gk!V^ssSto01^OJ2=UN20LBJfI$ZGw?wk_r4?6%@ z{Hp_R7+=4Q4gHG{0$>XQAQ7nIG&;e@&;qCjz8~6<88Bmj079Ms4zMkM=pEvF%nzO4 z^7siLEC84T1Rx|>P6Wx5V4i#?mj6L(OR$4;TU(e8O6dMN&fnkw8L!T_RAhg?|85RQ z2Ft3Zxu=C-O)vk93vM<{(;3-TUXmXpoy zpTGZqZ9FT1HF*LCrvv?CfLZ>XVtT9=Xt!Bz@Bi6Y2!J#QFf%pRIsbq9gv0WIe}Dqm zH>na^`>#L%mZR1Ij12NvIsd-AM5h1+k6C2COmF#s)`;QhW!LZg7I7Ta0Rc#hzyLs08X6NoQ(a2l0|sEW%L%Vdf)vh+|5-1B7;bh7P|SoM z1jRvQiDmeOY}{M`K&isn#XlLuHP#2&@B;ub!kB>zBL1I$HnW@X00aP_1B`-isK?b6 zK!sJF4F6Cn(UAlI4va&7W*`i!p+m@>9Uw9`Dlhwn0AnBudNRJh?n3}&et4Y^p^0F0Q*~hFga8PCA4ug=pLhWR;5Raci3zCcm3=Ms zpa2j6to#QIH)=skhlQRjP}{V52ZKBH)8Fptz*0kpcgnb*x&Qz`2ibrDfdMjD+ZqwP zB~Sp>c>s`fvzXK@EwdpMrWIV5HNlOmuh38npkf11&wv29>IQ=;Rw%bIQA^Vq{{mtI z<;~fDYe_S}01y?R0v-T&3S2LTgPpCU;+3|8fB+zEQvd}vE_?sj4FUqK;&G@>JjLGc zfDkY_4>31>iZLRUUw{A*3K^+KPwLQ6vNr#?5Kw7Lz)Z3|?aMJ!yU0Wkr69wQK%^8? zfQBE;MFP1zSTN9=dzLg)0NVh$Xx97nkOFysPzO`OD(Z>pgCeLPX@ka4GBBxlFQBLb zA4_xuSO6OO-~)ibFz!|3=78CoX^nsYK)3(|4Y4}_0|2?s0EcbaKlv?~AQ7=mKtTJ1 zJvdF0|Tkl;O7Sg3!%f4a~ZTvtIpDnRi-3IVk6@q72g><1qPB9Um1LNjt3LvNaHSqvIa3?6lkPuwgTGoq9LrQ!o2Ms@3n>Iab`@$bzq3G00gzk? zXQ3-q5o+O|phDwCjunajOI{zQ3Y~iTQX5QvyP8 cb6B?f^)|h>*>H2huqOxw{U3nWfRpM2C;fe3-2eap delta 1032 zcmV+j1o!))3y}za000012`~Tv0YRI<8oULM35642$N`BN0?he;ASvKO6~IXS9iQ+N zAOH{p2Mo&D1ac8TZbW;R?g8+?0DyoFC18mf(fR!pK>82d04!rM;$bozW|ecmK}itu zoi=q+2M{hNwTHm~8NmR^03b^F&`5Rb58*P=3`TL1*F$Z8XFV*l6y;35d|Y#?NMmiO)h01Bo7$HM$$Y4)Rr zlHdE-r5`{OWTE`5e%A8r@%gdM+#{mH&`=`D3Mr3<^Tc!FF*nS za0)%Evj4?z4Il3S2m%5$ER&`X%i8~#mXd&fq%ZygKnezd3s>FXi%_>Y=|Q~nb|YYL zwlx9rivcJF01&`X8Ne7>PmO`F+gfM=S`m8+z@(=DI{}?|dP76atnK5={_fr?l#;#= z!w3kgTJrs7i-I;pa|EP7L*D?z4XohVzS+*G1d`nkhKGO7_$+Fjbjp?fpLi3C;3NQl zoyG*Cumc&Ia&6b@2mqK1X*zcEZQ%a^;V2ObP!0t9>Cg-oX3;z=m&*`rLlhJRPRx+~ zYkzygqa>gJ5Cs53&b;6NRR9Bl$t(jN#pVIR5Bk1%Rs`4y04fg(Kpcqk3POewe{u=6 zuU~uMz$+}gz4iyExjL%3`v9G$zIAth|6qEXxp4pZ`Uv98{c>$j^Y@G+b<625-X)BS zh5Cot6P>^+`+C;zrYZ(755X@~4Eou?0^kae`IB)PyMeA!_>Y96yaAhfG$$Z{Tb+_Q z|9yA<%+3427+stMhM-pZSzB=~`|tB@uyew&Cwe~tuK)l6K>%(h@CL5{crXByhy@v* CptFqt diff --git a/samples/h264SampleFrames/frame-0516.h264 b/samples/h264SampleFrames/frame-0516.h264 index eb945c5714b972f6a2b1575ca645c8c1eb6d33c0..98b355861d5a9d6aa2d4aeb064a53048932b340c 100644 GIT binary patch delta 1807 zcmV+q2k`i~3!e^u000012`~Tv0YRJK8oUL7PAC8n00aVn4huAB(X(dFnlxzHvtR$f z2a&)4Kv~NG0RYfG3=Kqaf7R)`<04{taaaImHr|qLIDk$NNHWtaZ88xCwlJOh@)oED z01~9dVvEvcLyZLqb);&6+9$6O%TM^QPN9gWH1H+Wv67sd`{7L zKNP38^8JKE1vvx^`~n1egL?c8REvaS$NvYw0NOSrf1+CO0e~q<6z)oB>3u22?4NVR z`}p?+4uwR2i`K^M$1~6fg>wUCxBvjQ08!@z61`m?OX8tvVnQQ08FVh1^2crX4A2IG z%uiLTa{zk*P=Z%SsX-}H;phMY0ALvi&uB{VnZt#D_V9w`v<4hKYVp!bpDSbp#sd^M z#hx@l!1w?G01!B@HlIc>VtEm8y$`$q2H*tXl{v6~c~!D1Gwv@e00aSm06;i4w7{y6 zi@YSj#t^sx0sv)|7h1fqrvlJN@Bl!)O+o*9Xb9p3bs|gDi8Npl#b7C?01HvD993zR zIA{NQu;q*Z0sw#n(l?n;wIHED0Kg5ba6#UFfG9Np42-pd#B7d@5ha)m;xtcSh~hf2eEk3LyZ*2SF8~OoxiFI1N$

    4GXMYp diff --git a/samples/h264SampleFrames/frame-0709.h264 b/samples/h264SampleFrames/frame-0709.h264 index 32bd8c80f3ae855bc627099ff76a1ebdb1bd6bba..5a0a8815ccc6252f6a516d4c3071fffb668f1df9 100644 GIT binary patch delta 1411 zcmV-}1$_FX3bhM=000012`~Tv0YRGp8oUKJL1S0clQRkjERg9;gE=bBHkr98<0uK)T{jGZbks%-kgRw`0WLhz2Z?RPk((W2ka^% zD?j6T`w!o|&~7sNV)8RL|9#+~Rr3<1mNDzj9cum@S@Bm2J0x?HksOAz& zFb*OE>hWTrm*1U*2$%U-v{(PWee`4qF42XauX%s~AYuRl41fS38UPO_aDWU2*9fAb z2EazLz!oL&0Ncni4vE8DL*1z00_A`NATu%CV@AI8zA7qaSjt?{ByEAVMgaC&XC(OD zpTrcTZ~zd00aeZ5^&J2G#2e9rN$OWk&piGw_+&tM5CkQ_vPv_`k=e7tpZkmeB?0!@ zrf`@ix9uZ903Z6srqBQg zTsh!>*3}A7EXlDm%P|J^9 ze*gd=5}*ji0u?K0(xt~I>_7rK6o3jTGy=|Uf3zQ{JUvl;@8{uf56b`sCPQpecN5UR z57dD&Vgmpc0bZ!k6Ols#7gJZ%l6=IvL*hY)<0lXRU?F#ZTB90KzO;q}2qoBU3;#s0KIPD1B1 zl#dR?1u#PdFaWkt=-0fbrsJ@FS^$S&0003&0B$D02Co2T=kxja6HE9BU_5}B1KGp` zLe~H&)4xJ8ReN}VOlP#72XPgDav$?kfs=0>C*B_1(GZkjt3d^TSS=))6u$t;-$La- z^S^*V2bFtFPP1`5HoHq0w|&$>O2Prv5NCzp!T#_4umP*X#qbjVd%Ce9U|Pk2 z--kq08L4SKMjuO;^(6#g0OszC5i>P!KmUeIBtgo|BgCcwqrRwr!|(G4^ENrOS+@t1 zaReEYfCL0q{vPA?OVfK3D98v%ZYzu<-&clKy5qO)N`gIs00_jlxrBw^@v50jfdQeU zs$K&V%24>tS%3du*8i_?0wdM-e(ki4eJ)QA-_{^=l54Ar=i>O#o)?k@6qE1-ArJss RFaQ7nK>!s(YyfKT2IFF@XAS@W delta 1259 zcmVf_sz{$8E`*f8J#fDi+gfT?kR$KuAtQCBDe7)KH%9yG_5 zBC8E6z!(Fq0cxeSN7*hYUvKXUf|>-IA2qflO9b>CmN;O676}+LA@cG;GjEko`d`Fj zflOovwdtfhsDSZc0mZ^D9D)}A-roQRLLP_Cj_FR8RqTKTnSd4S0f&R;FN8_wtK48j zIYcqlda@ONy+Mx5tTmywVi9u9~!miW`;q3$aqn5L*(DPHYq?1MnSR^icu1! zr@$G2+BY;>KAPQab~zXWb>9)CiIeIQym$-(Tt*hXd=)2XGni&faD$9_0uT0qg7PsA zLN^vzy8$%6`9&D80B~Um4AOjcRXG~|pWgwA{mIQrnutpmH1RkJuGdVS48`U-53J;$ z|LA^yKnD~!5mHjV3Ah4GMce=k6sEAXq^d~g38Vku>;PCQ?tlP55-3U_I_HQA&_F%$ znPAtY^tdeG5Rb?3UhNeH8s?k+&f%AjZ*s*S#YzyLr35F_uVA}1o)M(bq$00Rg_^x(GXq_vC@(`FC26mDx3*TesC zYEX6Q<=TCbOdR#;SW$XgOxE3%4L(&wi%-PqRKn~O1pcNeb^BDnJ*k6Mq-)7LC zm~qRG6Zpt}vk^1!jEg{E>w*EE7lQ}@00BV&IfWf=hp4aISUd+PAY*Iah}sZd9-AORSb_b`yV{xwr6kRUWPl}o^4c}gD{ zt1tiS`rq~L07QDe&)v3>ucgW1`})KVa!qw{eEeS;6T*{@1s9W?1qqX!1qqX!1ql!s(XaH*P2IGlpFKz$; diff --git a/samples/h264SampleFrames/frame-0710.h264 b/samples/h264SampleFrames/frame-0710.h264 index 7f0b7d6e3cc72b0a5147220bdd003d1243781e36..1a261ee1e141e5ccc89371e08144a1f6e44555d4 100644 GIT binary patch literal 1345 zcmb7DdsLEl0R4Tu{6G{}poUaFhO)I3T^Tx@AdFPZ!6~;>hL19v<}^!tFqIFL6lbZa zy<8_YrS(p$byji;$13jl!d%-6(i z@uzCA4YI12{=Ma0Nje=Vm+Ppd@-?f#U5FB1S} zOmW6UE%28F6(^J$;gzTYM$TBvDVZAuHFaiex%1@e8;6 zMeeFCXi*;m6^fR@t)jykex;`{JJqY&y-}K2IyV9Uau96gP)wBNo$~zaKIX}MPXOdu zNnm$i$ZZEw&zao#teO8ErPB`N^7x$eHD_Acrd}h!K$YpO-xo9dg|n_71G);*+~OK0 zB}1q1BlWd`tUFOU_TkOMHM0ji`*ggTrHeZvy7SQblSk>J_W`{b*dG`qVUr%sJWLZa zUD4eT_5rpB_&JSO2pINnIOq)xHAVmk;}5(x2`m7n1EyKddKkzj%Pfzc!k)6qg`xWT+OaptrQrK+)LP7119F8i4)GQifT z@`~-UfX4cyG}x&Hx{C!U!o%g-ndi-qgGJa*n|I}jTO@l1DAIZ&K|dAU?`oYQgwB?& zE?#MoQDU92lmo3g0GM~;4DT1U8@at4uc?1e1@eP`#$5)5cdhfbaO8~>rMv>2zoWL0 zf&VAfEH%yBi27>7mUC-m&V87mhtxxw>Lt_By@spV`ut~1;E>$P61ZgJK4$|4R|wn5 zaEJ*d!(@az+|DRffF3uHYr0e=wD2<(^{BrJe{V%eKaVS6+QtH9V_lRG@6=vdN0lnZ z)!C_mb(7~Cvi9IzGS~mX9$ksiCP7aV1Tp0SlKBE`uK-epVvnXTBdCMpO9(Ne8lMTq zia%TfdQziqe_3*9x8jD5;Z7CRr6xmw^f4}E12}-&0bjs24b~Xp#W_pG^G{Mn4Z3-| zQxG9?KeJFgQ7{8Vcca->EP;NztS=3_5DV~+H%PF?4(*g;3wpO2}f#< z%L32#tbK7VWZ}A^&l3F3qHoyB6R8fR5whM@Xqr)ibq9s9R`c-O-ga}{+a~!hHp1|I OGb1G~56QLQ#{L2LlXr{& literal 1048 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 Ba9jWY diff --git a/samples/h264SampleFrames/frame-0712.h264 b/samples/h264SampleFrames/frame-0712.h264 index 1e9e399294ad3974ab5534134889323cfb989077..ea8885832beb2dea536de58513ed498dfcfbe0bf 100644 GIT binary patch literal 1105 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 WOMk)q1C0Ox0YLy2LT&(R@CM`PVllt~ literal 1162 zcmV;51a-+&300Df^^T5!?{5YkT zkc#y$oC*OjVGNiM4S=u+00;=cJM46bmlnjoyIzg}0+zs(K+QpK_L6OI0IA>r2nJ9A zO#y77QicSSK6G*;@rb7pd|QK#v&4%N-~a>xlsG^#wAF8e%tdf*1H{*}5G}+}6epx^ z(NGnN#ja5>5;Ogpa5W_gPmCp*We57h&kc_0RSKX;k96Cj-S5jR&&{eo~%Bi%rh&QIetA@>lE@QuzP zEfR(@yxNG_QkMVS{^nv_QVLT0i&q39!Hckw5Y__gs}ySg=<|1Js=R5+4bJAVwfEGvEdQ0s-Vu1}JISo){aHUPk~-;e(ht7AlEfuxDTQs00im zQXo*U^6nBBKH@kJqQFKLB_)&p_W;EeW?U#_K$I?`^v;+6Z~y`UB8520tAP-QP z69Pw}f#9+OL;8!1m@Fus00J)zU?l+@+k--+>TC_&E(*cg0{!Uy(~SGi002NN9*qD& zadgZG{cVg_qvQdH0099dv><9GZyM4=GXjt8002NI@Bn}X0Mq(6H&QWtdVg{V0R?1HVX)cqKxkyuUt-~0suC|o0f*1^?lU%SHq z060XM{ogvvrqwyRH&nAEK~JH@FPC~|3m=9^?2{! zz)NevwOpAc`+I~2_91C8=|2DemqaLrLJ^*m!gv#3lbqQ9b8NRB6bxq&-mDP*vL06S z94@cK7de~1|R^q52p9$W}Jcw0BmD}8XE8ONukcjLMjVC>L44=J+wLE cV{fN4l~(`o_#6X`0003&02M-N0BZ0C;~wSj;{X5v diff --git a/samples/h264SampleFrames/frame-0714.h264 b/samples/h264SampleFrames/frame-0714.h264 index 3a8b8b37019c35d24749e492d54f0cfa7b917f62..c4fe453903ebeffe0bcb7196505ade56d600e18c 100644 GIT binary patch literal 1453 zcmV;e1ycF|0003AFaQ7nL7Si&yaj>3{v19|04&T1^#!g-;WOlqSEk4Q9xNr000IcW z03rSW0vgP`08$MA06^X7abN%;$dCXCL7uOFau1tdcZ3Yy_y8(l6c8M@+<7T3veuwjPmd7+2K$9#sC)q?$)Mo zm?xL*O#lFZL(~9KJ(HNP_Tn%gW%kgO-f>eUzy0c31RkeJdYvXW|HFsEd;l9JZ3(iK zS(a#sg0JZbf=~c_WPkxcq8`T!2>?Bp&v}3b!i+F+KkCDyvC$dZ(ORPbZs!VIStU;V zLtcO&mE}tHEi8|M0(_6!sWn7fAYDhi1_X4L0!xLjhh{N^)`|WS6lB_Y3Gzx4#e?7j zP;eOTqBA&)?MN9(|F&?8#urOW!8Z<>f^g~nJ|DmU5Cb0y6Zr4jqpqZDA^Ok&RTqIq z5tO0phjWq`*K}K)GriJ(SKt7U+=e5H-%$!{RC~YW@j#6Q!9X<(2gXbgqP2wK%x&Ock3bz&+h;LKppT93Yq~c zr&H*{^WOdd06--`8H@xbR?($Pj!)Wv1ayTU0*XxlvwOeLe*?nR7s-D=3nV`*02wkH zVw03lLi|5c1jvR204xH1QJ^Ivh6FC9uc_(Z5Ge2fKxhm%D>he4WbuJ?swMycfN%f^ z5dZ*+r~n9LCO`*ZMHItI3u`JJaIrTb%oPg*kH45W0Kh_KhaDP@Iip^&DQ7pZ7yt+c zHX^tL72wZ65D|a^jea%Z&YD4F@_)k!m7H)1qFK|HfANoAjhweF`umv(~!B$ z%(h=mxImN02nL*pa4ct9DzdS$tm#Js2?&8 ze83r}Oq(W6&l>`41b`jFAz(oBfD2LOZ$1hC=YScvP1!vEJ~cpp|JF1troLw@%1Gak zmCNM*ASZ8QcP za3-M!$WH@pt)?$G`~OGvW5lR{fG^q92*zdCjtF36519s<8c-|%1gtGIEe;83q-p%) zfD8(GY(}4tx$En^LBN-g1Oa1nSy86`+!8g@Uhg?y{w;zSGWZ}r0K32d00BV&6+&)+ HYVZc*JO^{X literal 1582 zcmV+}2GRKd0003AFaQ7nL7Jc%yakDUfnZ2!0)S5n1%Ls-0H6Rc0*VCDN631bTWN9% z4gpXMJ)ZzZ$+I{W9KnQ1|Nq1obwZ#aSOB+&8Y=ySG6eu3Gp>MaG<2o1k&B)-s>&crhouIMgRhU37~jZ z+XZ{uMj!&H0y8TDzT`#Ef-nJ`IdG3s_9G?yIhkDWGXjbw*l5`K;v)Iv0l2~zXxjVm zLFofh9&CUx2mpBEIln%@3e%)v+b@d{A}Ip+!hoQ~G$f5pg>G~=#?JKB_&)&#C_x4i zFkr~5Bnla;4B-#}Vi0@}t_YywB3-7e06b#@)j&M(PRj*AfYS4Lz#>uFK&2^M{ccn~ zfB+x>0f3Wuz@El{jsaj8IOr-brZS0Kfo193m#b!_(lG14HWZ>3k8esBj8^K@0%|VE`Ne z1OZjR0p0-R!t%HLbY8CY*ws?11{lzKxY6l8W)lV1IOGX zOxoRo009AVWZ(c03;;WbNc{mJkWU>mI}k*lg>=_|03Z+mAVCKl)BQED45tiR$UYDz z!Keh%#Eb};1}epm00RI7PY?tF@%}lIahbOhi}Ls?8WjqJ0XYLBJ_c|&4IaV7wU8OS z9Hs|A95=t6cR&B~0vIIZ6e^WF;8Wf|_3nbFbzrlbU$Qz_-)lC9j6PCW)g3U@$E9{Up zkrk?V0b~FI06~Fsfh%-y=W~GMm7@lff`9;kHzP0r=mwBQzxtQKcz_{>0U%I3ai22* z0z8JWCrPp1l7E8$QcnWKOHtE#JCc{Id%>ImKuOekB0|7Lzb&&NBg_B<0*45z)EBD- z=$D-o$G`v}0|UI$$4=aLcKvW^`LK0?VQ8SnV7GEoKm^EY>&5^uup2-IifFS)=QJyd!f+6Y!2578n5Te*^WOvt-#t_Ji~s}#fCgYtJm~+lDcFQI zR|vofx&QzHK>%(hs0Ob9crX9}0YLyciK+psz+E5Dz?{HK0ptWQ9z}$(0}Ifr*X{6s zfVcwqA$iL>00dwF2oaC~FkFDp0A&M^C|ubkJ~EX7sF*pn0Eu+VVyXP`uqMDr0o)=M z2w6ZpwdcVH1HcdZl--f)`SGd)|DVDp8S$_HQw9eF{Wp>zCzQ^r7DRr&Kc;g0uW5RK z_YYUQv%k!TggGHqkJ7GBEC6ekd&%Pn&j-T-b6GugZ~vd*>cm6(M~aX@;}1;-djs^Ap0W!OKvd6u@Ae_$Hc^x?_JZqvg52!$k&Mdb$X&*8=Y z*@D0UV0kT?e_JoG0*+}L(3r3P{)55L*IxQB-`_kd0%{O!gzze*vT3RP|L`4;5~2bC zzs^ubBQCrqGJ%jbW%w)r1fl7y8X9IkI2mfw0003AFaQ7nL7TuDyakbe5D~)51Co){onuy0YC>C1m97Qsw#mBt2`O{P%6=t z1ON<-Lw;r;46C6-$ekS^GBzqN`-T8xAPRg6U2F;Guv-JX01OH#6UwMJd-HI3Etf*| zU~IApeiG*hj|WigkHQ@~4LZ;qQd@Zw;l0csa$}+Kjso)Gq~wqj0j?9rf#Yy_5Fzjz zss2A54~PP&KII-_Ckuzs-Y4_<(OI3Of48ct6@cgA?xepMv{ zX(i5;f;c@o1E0+~vVtR^XIG1*v|*(70eqZ%2A6|W!9O&I{s1@t2nUDZ1XGXF{fm`Y zTG0G7Pykx3fKUt@^%}F$_aT5XzdTNd(8RDhDY~$7!Tio$aLJmNSn406^NN019p*?|uRRfU9VoViD%9 zd;4AifyjA@n@X_ch)tdV06-vS`a1Vkf`*aD{lJ2Q%3cB`Q14z@iXL8xj1dSp$aj3H^9xFjCr~4SS^1Xovg&s4~1aB00&L`E36020#E106UmC6BFXg z64~hF9DRTQfEabGkTBg~jsn!GV_=y;A9v^_Dmi=~_`m=_4wwK`0mvESYy!f{iU0ru z0D;UrRPF!YQUC%ZFaW^#_4yaB7g zAt&?jCcseufiSE94sJ=lO|StGbq|hbCBcN%2(Z9K0n}Ka1>f9g`VS9;hjb2GG?##> zSc?=teqVqUk`0W**P!SHC2+W*><$Env6niJm@0z@CEV8-1B1pWrQ72Em-++wClhdgG|NT5{38nCuikBP|;kL>T0p9I&QO94jGd=ktPyfhZ&E|Fc z2LcfnCtlhQ8WRXY1ey2IFsO6_Kn`;c3PAH7l?J-oz3lkj-TPko!g|wvl03m3D~KTW z-Vm%!DPKOkEwCtKfC>(+-#jYJ>md>Rl&x>GYHtrbD*|ise8e=#m;XMIvc<6h z4I+s}mvH6YwF5 z@BnZ?C_s)Vq)8LVjN2di{y=;%01yBJ01!gKGBu$I^%Ow*58MDO#$(Tm2-7s1o&pL; zhm`5ls=RRm;yYMuJO*$;G5`n?taK6`dcihkRsskDO@(TStm3Qg7ufU0=NEOR`fvyX zvjW!lZ37w;Q0L$Ti&$iz27m|v$LLswi5>s|fOzMi00aXLE;PX@ix6fvxiVM)fFqV5 z(E=Y`gl~cT0)PM@2ojT}LGcXEjx6Y70L@_wDWVr78xFqkfCMlQ6!ZKI5fFM>9pwNR zG33-5MtA@MWRLUsGk^d<5CMP$69bRCZ0V31Jp-5E0~dva0ktDwC3}qkmK}3tfG2ZK zq@oG8m-Yk0C@V{>JFqgFY+0{U$j_-T(xkAOUiMO#zgCinSa%Bzz;l0LTG@Tom<{DeKq&{JsUC zM*=~Ds6fvE1{i+`(-oQHr;+y_!u$~~c!{8@&LX#raImVy009GF01!Itt^fuBky2&g z03Z+wg3rV4uepelLi2A2#0vKyi|IYx9$S~9S#G8N_fW8 z?MF=|pZBp!K7c05L-}C+t>ys044~l|?2ERsEL7f~0CfP26w*L$uwx=oBCwIn00aPD zfCK>G6nkf7{)%22KimKi1O;eWCrl;nf6PkBf4~X40003&0B$C*2Co2kFaQ7nK>#_4 ztO2XQAt&?jCcshvfiSE96GR*Mgl8(VF9BQ*=T&(DhHN{RU?PC(EKmdQTy7Ksq4JPl z?%Nrp)j)K#MhidxmEZ+r8y(NB!O#ws$HWg{a3npA^Qifmp@WiVn{0;An+^Jdp^Ir(XO1z>LY0)2RRd{XA?5rSPbVmd6D+N9KA!1ufF(ql>?2W;^ZK zGyl?zEwdla4g&}x@ZZxx<3eEwLExW#6AFhwBmn0y@T3M={iJ{^EwOtJCED}5wCkJo z=U5^~utiGd0v_AIqEp2h6#D<(9@r5M04O@OeDJIZuo3`s7!-nO<~RY9z76~64GCri z%=3gF`{%B^-dNKnk9WTW-;SNb|CsQy)pdveu>g4!CdRH9ea~XXlq-Vto=x4q=lzgD zhKvev(bm`i6+jLYu$O?EG;lI%=*I{g0O}lzJYIxf`+x%4@r1~`!Lf1mDvq)VpSXqA z<7T?NJn*auugTbaF%2A?KH7TA7Z4E96iOywBLN&&d=GyB4*&pw1PBS;@C|q&mw+DF z00ay0KngFwO>Le~0XqPUU-_a2??jRykeLbpeEufj=e}CHlcfLP5{Li*0YLy2LTdnO G@CM^dE8D&R diff --git a/samples/h264SampleFrames/frame-0716.h264 b/samples/h264SampleFrames/frame-0716.h264 index 5e90e388a7c76ffeba4ee33dd2674a0e0e05104a..1634162e1243e7c0e947b83f30dd874ab148ccf4 100644 GIT binary patch literal 1853 zcmV-D2g3LO0003AFaQ7nL7U(jyaj+xC;$)u1Ok8#3p8lavu4ejG-%ngU;n@dk-z{z zS<3(c0MI@R4McH&)#1B%9%NK^EUcmM$am;iGGVk1`bJ%13{{lEYq1s{j5(50M)sis0g@BPMM za`!L+ghr(eL;re#13GsHB*&vILxUAOBs)zI#MV*LOJ!s*1_5QKWW;<<(Re=;r?>L` zghK^61PuHF1bTyd{0&r#gks142fzT@HY9(ddhh{&DM=LWN@(eQDaP!dbH)4k_XG|F zM2ptO?Qc}|Lx)drxXSn5SlwZMY{C1KulmULyTGDL>v!* z01yEKib1scEqfEli-st@-~bsw3Bf6IAVF2KEHmyeEC2)nfB--^HnhO1kc+$|z{U`` z0RjM3l@(gNu%{x>OZWgny-h%a)QK-rB+-CJ6@aFk04+wqaaE>N;h+8L!b6Jv>hbgS&0A`mBtSMLFf~CLr)zf#!9SLfB+B!2r-ZhWNK5^VlUw!N~QY1L_h!# z9j#1&X~~5zfKVU+q~Jm$i0Z}j^Z&x{`oI{x03w#;!b@c*zVHA91vplMkw@oY;A=+a z?zm_O6qP)T<2WQ`*Y{&mRI2~~W=uwJ{g>yM~>+5i}ln8mT(yI38Mt-WD80{CBc~U+3$e8v@{fSAUE0u z>$HD~XHWvE@BzRS1LV-V2E|bDtz^t#tgs%mV)UK=OY!Uq5=RX9#&V9ICHL=pR*?Jv z0RUhDP&^s;ENz5nbl`F*f}f!AfzIGjd=UvzBWNwaOQ`|JRhWPOa(@6@gg^iw0z?3C zfucB6kve&-(;6_Hc;-2v1RX+TR3Z5gN14g(tIhxcgi8aNA8S2HYyci|1DF4U55$N9 z5tPbVN5@amN0NRfB=Fp z00=RDfB=G!1JU>TPyh%4ZIA#MIB1$C#ZG|*q(BKa0f0z0nh%ESdJG6%Ogs^?)&W0LojF z3MrJ9`+yK4JTE6vk|yiM{Riv-3@X;}AiZJx4^o+II|RxAw|@fAlULp_06Jg?KoR1) zWnj_v1s)xVQ;)8j18>*92S34HC3qr5p8x^y5diL5kK<$Z@`#u=(-Q#I#LZ|kD+^3| zAAm>$L_oT{r|SaMsy@7J7w>M`euIj&}gMg(a5j=NC83W;0PAvr(|0} z)+h&~3Z+|ANm2j zZf5X*xKnVz1KC3jzsx1O56Acd9e@A;0YLz6Cin)g0C+F}00BV&If=djtH3Jf^ZED_ zOaFj~1BrqV369eLzyPxEYBlMHSrtoKk+Pb}d<4JjoK84wAv)mxPO5#qIY+LoAVz#kesPm%Jbo<0QD0x%BZ zjyNd*4vEhx352poxqkpI`FdUOqX3^#m$6aMTmF^_fL3%iX?GQh>}yT{J~z~RxX zycMYfqH&$1|9P+g6954LqJRXKOP&{jG`>>HMidYW0PeY#L&&JurJ(YB03b8qVCCqU zg3a&v)^I~aL#y|bFjZ8?fI1)+h85a~cZAt&&D5wCQMgZW; zm4Db+fNcr_2HC;TLN3G35;LXo0^tR5#^3>~O-n)cz5l=?o&YEUA*lqO_x4_&Cf)!1 zFay1kHiO<^w7EFO)&K00m_I1WFmk}>g1J}CV rx630fxP%$e1OyuM*XQ`R_r_emGWdv)z-+((00BV&6+&--YVZc*?O8Q6 literal 1489 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 diff --git a/samples/h264SampleFrames/frame-0718.h264 b/samples/h264SampleFrames/frame-0718.h264 index 192e1bdb750ec315873bf7b0daa1218060680f9d..bce43d15ba7c7815839c328481136ae740a71aee 100644 GIT binary patch literal 1249 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 diff --git a/samples/h264SampleFrames/frame-0720.h264 b/samples/h264SampleFrames/frame-0720.h264 index cb6a1962adbe19525cffce59b7731a7f9376c3ff..9289e72cafc1b5db18643a7dc260f92e472d9296 100644 GIT binary patch delta 1045 zcmV+w1nT?U2c`*s000012`~Tv0YREz8oULEFzDyHc#uXY+yFCezEgAH00;(vP+kHZ zcxW`Uee9PgOAkN+OaKG~A};^|0MJN4K>;OI19%uBgsw>Gl3sM6kw0mr@IwvG!AcqY z6BQ3em0z4+35+lVAMllN1^JI_2iO3Z0~{eot@m*0RGiO$-T(nW4k`(@lATOP&r?<5 zm+lUp%7*|I7=(SX07YF082OQxg+;_g|8T$<+zxCSvbYk@P>u(90AS}59GU`lyDbHW z@@PP$4TtJ#1RkVGdXXXw(uRNN&;YIg0sxALa03JuYd%|0Vf-{u0JU2Iz;L%{)0m67 z7zRe>o}fK{`4|Au{ndk(Fad&T8>&O^06}OIc|%VfB*sdtSGE8dAwsid9N)SC0R5N% zAYj}0*c3TAuv8n=_&W$cmM(dGy#nOX9!e&&V~9|$PdS_J9yDE1FVf{Sa52S-t=OfG~^nb?(AYK$mU80e}>B;B+k>wcUB}rRbQ$D~vG? z737lOVW9lTFe^U`4k&a+#S0O*4dYMCrSIhcC6xf^Xz8w(^@hr!f=U=K!s1AmmI8JF z8s1QU1Au^OysJh_0ozQ(00IPn03bc8*Z?FOIp9L-YWk9iH=+uE!Dq~f02$o_1{oOs z{T!&`8$CjVJw+aPgg^Wr001By1|GKjBv*PQ{F_8`%U|Y73j?zEfABm3MOFm`WS1Q% zD>Vn;0kewJ1cWKaXcokcm4GpL0LojF2`iL;hWkJ@06>iq4g2R9Xk<6_;|Rl&)Epz< zB8v}yz!d~nh2-iqMBRAbJR1N58O#(LJNXQpf@1JR_5cPIYj_Y=u>J?9Os>H)fGyv^ zv?SH=f8ziHrT}yS9xJ9+4If}pceC-Usc(bw3ZMUdAOKAvfDAD3w91_jw8VRWX%Q-~qF#R7OHmyg0C89WN4F%C^OvrxNA2wz#!C!3LAP_o%yvhSE zus!c|@SF*y^wph2go6LTm+R|%2nkGbszlPVAjB{*{U;Ykh2J??em+2JWs+HBVZZ;A z!g@m)#|5EphYWB-ZgdrmiVDgsk%D6;a>3sRTZA@5*(>A#S^Fq`2mVAq^dFTBr-k71 P0003&02M-MlRE>V`F^Xm delta 842 zcmV-Q1GW673Ec;O000012`~Tv0YRH!8oULOe+Y(n5XXfE0wq8V(S3kG0ilCgp~U$| zOE;Gpw}t=$002M&2w);ctRX+5pTC3W01GgRc$iJ?H%YnRAf$?UPMbQL#}FNZo4Uymg36dZE zxHt>}02ly&L*N+ew9c6UqtH8k05Nz>Fb%0Z0V~^R1n}ycECD>;1fQhg$Pid|8yq&K zg!l^`_rd>u@C?FT3MaIWVJ-a#5D+uQQqvNiqsQ;xKosHY1uMuOrW;VUzsyboXcT1@ zVx{m(00IDlZ0SI#*46Dej{$fKK4Mo8`VIAXBP5A`;`fsa^FI|R@JVp|0D}w>+o-Ce z?^G;C-wgm%01DYD)(72E2B_))Dmq{RV;4e++V{G2s{jE2U>0r(8TNnxASeYYM_gt- zi##=M%j^e_D8PJEmw{n=v;TW=7yxz*F2eY($OY+`leiS4={!_DVFm2-fcOL)a&Kkt z26BIYC7*Z<;{f3aWvbcF-tWJ`2cQ7&AOHvi5DQZ9a5^GG!{CG zo1g#y0YLz6CfEkA0C+F}00BV&If=FbtH2bQ{QiCf)B*qvARqwFI4!^sn+bK>!s(ZIc89qH>E|X#fBK diff --git a/samples/h264SampleFrames/frame-0721.h264 b/samples/h264SampleFrames/frame-0721.h264 index dc55797bcd1fb0b3aac540a7f57a6daca53614c5..d58706175bc7003649162e96ce4c68de8d4b8185 100644 GIT binary patch literal 1849 zcmbu9`9IY81IOQ=xyLyeOgS2iVh7ez14b8;-07zHrx09>eb&TTv6_w`&W~+DeDg zo~&ew{VhV?4RAHo(u{~|Wk>yc(IJE-^K}FD8_gPcg#d@uch}NzY{nPoO#e)IM}C-H z%bu8PAQ#P00g<52XoPzx=jEcU9|Gi`=G; z=J$aAO00IfauIu^>Qc#?w!tBRuO_-=qigbN^8VgR*<}|QR*q5_SCcjBQw`P;&1hei1Uk)~hiID#adNBrS$qr7&N*=s_YnNti!N&cZdzHS#{OU;k z6K^dG6@YM3cVc+g+yznqWksUFL*d#-(}ummTaiAiOc=nlU9oFi$FgOYl>y!FA^P^I zh+mg$Sh%Ee%c=OwOvwf{dntgys_;PEJnEKioiITGXt>7ngGsaL2U>zvott?&XUbUU ztRJ1KLRAiCx6XS%oI;JuycDkZJ7F~E5mh^&GRuoH2H%Hm;qDPeK)}R^8u?PMJ}W}A zIR2d+66}#?$KHJvYUB9RehnnR1KCB&=be`c!P0Tc>O*?N7{R&KJOh3yqdAF$`EisT;s83)9^;0f~{42ut&yKb}5jm`9g) zoC$RU5YT}IeracNoO8vyEEOi5N1mS0H@-<(aOz~4<|&a>c(u9Qn_;`h?cd}LIRGI8 zeRj}`IZ@bL?Oy)ebpQjmxhSB9h|6p_S}~0-i6i2$;@njCibd3ZNV{er>sy>{{3o1Z z89-U~${b{D-zJi9l|6sVHorb7V3HElF|9cuz$4)0ebui{k?`qiy#ljarP~%^+dOUf zj|Kq-6(d3el4TuBpflCIzOHerVa6w9&gx_iJ5|KPqB8-N8l?Rrr!0*)dU4-NgPd^w zBcukMlu(9IsZZrKxpv*ZO3scpvvGCT#N{O*8(tGz591(3DM8Me^>|@4Udbr_UlSj zuZfvTIz=L1<({wx2n1%a;ycfCeD8+&JQOA(Elz|unJ7`*JTeY-{U=^k#{1fBgOUn|JbuzCZ|%f}!%~M;3NQ zA^gIH3#yS>0$l9@(|E1P*VRa@t>PwdD9X^yPBQt=2|Dc=xGek z>%%7N>h&9;Yn^!FSVxJtl?RBX2wM-cE|)u`h34!%Z)WeVh)@r38l1bbU3 z?ev795)M%@M60;p^N~M{va6&NRsB%rCgW;@n;`t1dnAjUjJ}YOZS<>R3 zn!dF-SY|D+dr&a5#C;|}n;T0%5U+UwCml;8t@Toi#MvunxvCKOYO0@AwDFGR4m{k% zBCfA@4dr9-_!5p0C{M9*QDYOpS)0S*^A-0q|4>3&lK<)%u&qR>2EhHt)xb5o8oDVl zRF}}8s_sTo7{v{HKYDVy^I)o6)BKlu0B4$w;{jaev=g>HyeM9{+luqcsGAbohyzi^ z20YK}N7f~oSO#0<6^uD%_P4z*ue=uGhIJ-9>=VNr)MZpZ96KN#xglY8L~JcK&+rL+ z#E|!{bquh@BTwfo-YTxZ=&!lq+RT5*^xdODv^+Z*0oF|oV~}ZNU7MtcDoW6;LugbL)O6C7Cln_hu7kJ4`!2kdN delta 1403 zcmV->1%&#!4#Nw7000012`~Tv0YRI98oUKpL1LuAI9vb_*_qv$-I?9n|KJ1I0g&Jj zu!FcDWas9)2&#001;01f~U#Dm?mu}=Vd;AUqK927+yFLk|qXR1fu*f1TdPmTQH zJrF7203yI}3G0Q!Dw{S~2?c-~{K4l@3gc@B zi&vmcES)$25HMYsf)#r#34ZQ<6w&S*6L6}&1ApxEkKq=2?AZMnA=?cpTf%$<92JRcU^>%eL*<~-%04_Ep z>po6?{;L8)ieRyLgi;BA-qLa502l=Z=#?Mk7YE?Njp3cf=ot!?P+YH2zyyrQEa&8B z^Ix|5x?S)}p|I%k9{P9^m%~wkurLE~C(XWdjJ7|FCI*6$WjCu{E)N z@Bjn_!B`LyqSjr`obI#JA(pm)06-K20R2}0+oIx<009620Du+}4k92a$x5EXYiU3h zJc!79D|Jqb`~We`IDw&>S9(epH#C)faAJT&WhN<}059NvLL^>t0-`Hc1qdaL3T^|W zQV7F;h+xIFd;B*C44kc?M1ZFlinDd#*x(25PYBzEvLn)YL?9^0!fYE7DR6)QKo}?S z*4Dric%twCScoja4+e%bw)3)&xtNy}osPsSLzs*jVu>{tyJYal7@(-edaFO59j5>Q zAQoUy0HW2){)p)q7!;hw00CeG1{O@9BpI211)$PPUbMr5uyRuM*!pbm*aPe;lrM~Q z(RN?^0{~%$6&qC<;PGw*N>Xru6M!&p4UJ1=8~QMQ{h$B{0)m24WKYZ~(SV13Ec5{2 zjU2o-l5fbD)bKSVMgTR}$dNxfoDeaTQDwN{WRrILzyJ^l3#wI;eY}{a7Lq^5UCR#AZ(9-g1iBT6N3;y2VUxifY3jJ z8Bq#3h6u6>ct6qr0RnRxicbLcBB>L9+b}k8MwljvE`yTz7{bDExPZ9G1CNXU{(6WT zc2+izA%`U?<2s97yv4^0f83WR=?*zc$ok%bsZj>cK3yd z02VO?nh;3RXCD`~av!{EMVXL)5$HOf$+syTq7$Ft8O_vKjt?U21xv)3#sgXSfdm)e zQ4q@h6cl~gzjX)(gq%sliYt|v5RVLx)#~r0Xy2dWZ>QfHz${HCh2Zu800BV&6+&(R zYVe7C1OOT8+Xw{$P!hKtfW-amaq@S01_DYV```}>>0`u4A@19P>#p@9KYZWHV2=PT zuKF01`h+!wkohp#~R|um%W|um%S`!Y^_Zn{+wc6u8qk z6c_!U`iO*XD~Ay^Pks&_1~jesPzFGzlhn?~V8xZc4e78EDtHl!JN}qWF@e6{pOf(h JLj?E&(SXWoU_Jl< diff --git a/samples/h264SampleFrames/frame-0722.h264 b/samples/h264SampleFrames/frame-0722.h264 index 404cbb6ba5cd35b122c35e3003b5940dff50653e..f90f581586dce81ffe600409f767ef432df534fa 100644 GIT binary patch delta 1065 zcmV+^1lIe*3C;1 zKAoE%?3gsbMJT^!004kc2Rt%Z0FXd1H=_&{wOsKUeAytt0fp+f*5m*n01yZ$o(#$Y zBO0(#Hg&PK%gh0A z4lro^>7>DbkyxHBjpj+1o8=zoALIi#05~-~!y6Gsn5&Px5X1^;FA^}JAx@Mm06X9S zL;`{C#$ACy2zZ^J{2%;Hvo>L?x`r{F0A4bLAXUgTNv4h306-yu#xP(Pcu8TyG5)rC zKwnjherE03}l^h(b_cLh5Szl8JaY0udlf4QM%%8yDhWNf+Pi4!8ga3SV~t zM{GZR|2LFAug%nhz!*%#WD$Z(p^gZr@ECH#K{TYu(U=45#>jJm*wWyj0b!rGFabhd z`gAsbA|^0j-T*+uj1=V*Jn=@cq_yFZzW!j9!T|?^noEF*DSfJOPYYOMnORv8o2*NptT21V!|%>UfI0beN=L zzjtu21s&xMxgaa^gBQsk|GKiUfdU>o;6EFG0yd$tAH$pF00zJe#qUnX$M1e`U<*}% z)7HQQct3svF{$cJH)--(^uOP+Xy8v2psqdk*dBn=Q9l7d06-96-A-I~FFz=;AA_DQ z51;@50YLy2LTZ3&@PT{;02=BpgoO(b2ij0I6p|z({jdPMTC4L@FfIHJ3EE5pkpZ_( z*Zsx{;@F^0L4XYgb^ExOS1*8o0}doI2%=|FXaT_ss+h2~KDaGe46-10j=80|kEwFc1J?5^#hlEkFPuApU>> zYkR{{rV+sn5xItD$uk`5c*ZefDjU8FmRbWtnV*}%8B|Xe2x0HH1ITMUiz@$mU-F@h zS@1D23m+Kw66a_o!z70p30>*{2!`m$s_Kl2xD}90EY3V3)7QJrAY6rUmkINWW+90r z0kNk?z{MUKHd-z)0Kh$N{hlb{42lOO~q0{~DkCJL(N delta 1059 zcmV+;1l;@13Bw70000012`~Tv0YRIf8oUKpK|>@%;7K)z5qz591b`B_DJ$ZQIZhMi ze@o!RP-r+j6@uWP$N)A>%?m|;k$4CSa4B5ZSS~{eI{*8C2($`Kdjkp|Q2$GR`+?U0 z0R;h2kO7eV`NFMF@&C901|S8I82<%gqkM$gEaq>6!XRXS1qcZgy}7{>*fWV2tKV_} z5E%H8U`@+X+QU=IPu>I*9E=UCz*Gj75zs{wCjbnf0BG)D@fOg=O^V<6zyJ_o009Vq z01$})3MO`g-Z7>qTHX#1;f8@~A9i>X%laFF86W|$zy@X0z-)q+HHZIqi~+a+P~N7T z%$owKVN%S00SqArnrQ+a8z@JgMC>7e0q6h@3>PGOZ#rKX1;PRBBnrd?#&iY&fZ<9Z zxKRvD)Y;}s{lEiIAZ4rGf}*F{%n@PO>;OOk*)%{K!_jZP@TCF<3tq1}Q5qzjUfvPP zB9UTN70!2$Fj{zE!N}{&f2mk~T z4G9;29U=(g!S~wW7!x!G7zWnXgk;Vj1t4(X1l<4t0YLz6Cg=vQ0C+F}00BV&If=Rf ztH2it{QL>b4*+2Uuoy*zxB-pjK3`A(L?5L$r1vOA@(&@17vEVahpF7*iX~Wf*wtNr zSlDVV4#)ufC=p>BQ^C*xJ0$=C1c(R#xj1Bh5PS)jFle=~0Ui&3z-BofqG`Jf%1zCG zmMR$@a==#`-GS&0B@^&800aR71?osU7af#Ve}C#ZZi(XH`Tzg{K>!s(Zh&g=fqVo2 z8tN{Dg#kDBSQ}|@HKz{XkN$uk;>uoXLIdsKKtPqGz<(04j)kkh+-S=CO!WXEhx+7T){_1_Fdq3n-HsdpT?!?<_+vC5vOz z?$7`JTUvqw1J{~ChcA;+109oK0||e^3d0RS~l!c(7;iXnHv zW%(mD?|5Z+u*!mfM|0N{N4t!O*1cS80Y`D1HyNUBg((tm;9(>7F-Rn3ki-T z&vPg>5Xl8%6L;zW2!`y)s{I)ia62HFdFO;W`uW~ufpQ(hTqjN~ScW8w3&bGCpF9L8 z@wCxVfC%dQZVjs3aQ2&(5HVUGOcM7WHZ@z53j|ypvDdGI0w~bzSSH%15!a4?=%`4< djATe-h zB7eXz6-G8d4ykWE01;aM0AK*(gsOEYcIz7Z*^qMWtN;)gLm*#p zrvBsIY)w~zoS>R&Pq+*voW<+V02>Ge8RS!BvHW-#OQB1o2&fenN-0ExaRy|lvk5ze zOvCU1AQ(TT`uAc)O{2GJ{tv(dDBFaMbkN8ZX2f+Br;NZ|%hAwVMJ0Du623IYfQwwmAS zUMtrIv1&g5`*=zy1Zs4!naLORvQ$g!0|FU;+AOKys;v;2Kj6$1lbWN-yV49d|Lp(( zKnwvzT4q|6$v+eib^rhb6#s?|w!E72|KIPegI&GL{`#L=QZo<10A?T@c7)GR zhm{3-HS`B5!Ub~C)?7!dfF^KYE82mOXL`KLA%Q-45nBkv@C8FFLi&HQ>AlI_cmM)_ z0^$l#V*~~w9GLdu7Kb2V;{X_T`+#viVxTn{Ah-XlBq`snJ25YV{}=!|z#o9^5yJch z1kx0M009L!bEQB2{38GX0H8Q5$TQ&)cc!Y>X@Q710v&(=00BV&ZYHn>uK;*30003& z06B@Q0jt0nf&Bh{58wa*0YLy2LTdnMYVq(q0fZtH;6{{eKtR`D9SDGJ$~?)R|9IoH zPECD1qZ+9{?GD`0`a>exNbkIk00y=Jc4qN%%z$dH+vFO!f2Mt^yH!Uj~LM}>eY z*%Q7uf504&@6}E|Df#=sMpy&|o?3xpM)!O$qMoIXUGE3G@+@T^H&m77S^bF;$}S@a z>mz~Sm~~4D`3Wv?u+t2xawebyMUSC~98YecrGwE#;lwniGzCAb079+AFehSg=d(AF UcKHN9JTITm=kxje{*#vkLf_3Mpa1{> delta 1093 zcmV-L1iJh83fT#N000012`~Tv0YRI<8oULQ#DREFQUC}D7$z|~v`P>Q_0c_^A@Bi$ zfunBe?OnJcm9VLs@BpdqPC;o6Lz#8}ZTSE}by4Q<5C8}P-|MgdfIgQT-Gkx$2@?6h zpc4iV$$G zB`<_cdhPv!a8Or2=cZzP5v$*E2)`KUgC%FWg|JwE$E-sCtNyblhC_s2bJ4*VpawMJ z286B?Sx%o%|1Q4IZ-NI9)1v|#)FxzmU$|FBm%%8I_)HlBF#(aE0AK(h66yg-7H%d4 z1+VR*&|>2bVaT(vja(kD``{2E)dL6;7FDtWX52;&r-777@xP67yB6v1=ti|+=ZSO=f`fP;YLI4D9wbgrT45Qi6d7{?k3M}prVa)oaN z&-?%Z0T6XK7cthal@b(*$C1cr^k7!s(ZvblX@H_#8A{5{fyC~NX0ypaW)`w!ZIOZe$;m2rBKAZDN zu^KU|mjTjL6It;wtR*d*wns zSx*mIg?2t>0zJuZ4}HCl*R||Ff4}F2lQ9KCfBt_zpN~`rz%Yyo1Wv3EBh2oSga5DZ z1-8s7VN4bA?}ayo#9GD6d13xP|G((=*rQh~_j(-fqbu+IqB4t=2Ez`gt{ws-)hs-O zBBh6fM=Dq@*t7tE36HSIHQ#O|)l3gX6NjOphL}F{03l7#oCy4A2CJwX7u)`4fd4!z LlW+t^0|7w5*3HOU diff --git a/samples/h264SampleFrames/frame-0724.h264 b/samples/h264SampleFrames/frame-0724.h264 index 4b261af734a9f33d208befcf8b57c54d9c4b28ca..0939c674b2f403e374460731220b10276b8496cd 100644 GIT binary patch literal 1682 zcmV;D25tEO0003AFaQ7nL7Lziyaj^93oz&aAuEX+%u7-4Whbb?jrv#%9I9x1fA*Ku zMU}CJzz2>Pw%etD_xJ}_TU$@=`eA^Fy6%tPfmTj>L+{Q83MTdDcl+vDynna?02%Nv zG+yv<^;#4E+<*oOb<~tY&$1abcp+YpI_pCMDyEikX$d*F0096O247^A3@okyg){)0 z#B&8i@$N9P8jb)LtN;jDBQTyB8SlL>ii(+*Gp~lOrQl!=0SvXAlil9`=z(fNfB=A6 zw(u=yzwc;)xL{d-QtFUEpC-o#M(Ol++YA)0`9HOK=?DVcM+ff z5DD5E+VV{z)euh8j36l6$HJ2nsYRIJ>GyKJC4rMXc}Oa zi^qFYMwq&{bFf-pLGy*cfH2}hgs=bv0@>IGO%BPud_aTXlpz9X9cEdth`Il1iN@n+ zpvAH6wg-W40JVXUeH~Xr0MG_d%tJO!EQ1nc`3PVF6)S4e)1C|fMRuK*$@tP4d{84n za8L?E0r01Lfq)$eSfmwNms0Qd+8{6@8=N&(J=A%B?GgYm1)D$^C#FpH-{0O6@E@kM z8S+B0CMR{k&IKiE7U>qp6iW;5{h@JTSx@4LEW|(i!X2atQ{><3#+ZDH+z%agA2dDsya5-~$ohoc8KVkp`E;RtRmq-#J zx&F|90paS8LdiiqX-@eL3>bosV+H_%a}Mqnwb3E^8f(=-cSw**+)a;*|B*UQTT3P03Z?o=iX_< zbV5@l%io{C51bgPXC(7ddjdajU~RD&&aF06WzzrqfdWE3mcYq>e#2k?>Car8-~QC# zF*)Ps&HmQi0i$PI->$#q^B5u-!4!W0*nr+QxTPrZSMV4YGk6`T7i~c}dtczd0v%bN zg_rLD8AGRw>M{i;^cTN?VhI=83F3IdAM3a;DmVmvQBQiK))Ai^BOjRBzVV0RfG7ct z%2r4qpTZvwVj~|P_uv2o1z4B>G}B3dZ6uK|{nwjge&YJpw~2rg3%~$O2wX@;WpRJX zH9+tHOpIi7If4uBG)b{NFMlH;6_m$9iR)6~*np?b00BV& zZYH<}uK;*30003&06B@S0jt0pi~s-uK>!s(Yk+F;;(Sku;7x(x3?UGt06rt$m_!be zFW>?0!8LVqfgPH%0GGxAFjKlvB+dh*0A?-n`J=Z%l=^iZ|4@@Z@(ewQkBEX>I7v{V z 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 literal 1084 zcmV-C1jG9P0003AFaQ7nL7D&>yakU41u2gMfb0T~gcSguA<(9Lzl1|P2w@)p28Io0 zh7;8tEY4nE1Plu(?Qp;VfPe%Lutbem{Qia@e+SM04>6f97b%d_G@0H43P`6E+0&|! zIpX3wSg?Q@!2rkrAWFH=&};V|filn(2m(%o=!Pbn1v>u&L_{8zhj~B-4S6|GXwLuu zOq2g$&KN)t0e}P(1CF~)>986-1GnG<7leZV+L6E%y~cn~4ym%h6S%FJ#hQfZ8UP9f z%liTb7YYi1A%rl{l>AZR;RL?;YC-4#Fjs&lDK6?ofH;5&1mU}YM`DRm0>y^4yH^tp zzw3P&pvw;Dzv@kJ>Td|c02d5+QL22-mjoWYej~sJKtl8iWI(1zM6IRpEdn?a3>iWO zcmOcN{6?0oP9Hpq9D4$JE47zRh=>^uMh0|Tye zH5eE0AdiXwBok$Df&&BL9PA;aTR*Np|6l=8zyLr(@W2#;zyL}NY-e~FCysb=R8;~Y zJnwv6S_4-A06-2xKmeweumLP~8ic&qzxDud2!cFY2p0%a*8RX>1F67piBA~XeVE~- zv;N>xkDv*%Q2tgwYCOOg0T>7op2)dp0_9F=@DHF7!kS19+6`k$B~%hQfB=9AXaGPC z0Y|oWTj-_Xqy69k0AN=Il61lt`(N`C(r^Ub0003&0B$CL2Co2kFaQ7nK>#_4paHAE z8;k$|0YLy2LTCVL@GijM1(O;(=nP86%;TBXSRR0~EN2I*BS2>vmGuOs#DJJ5g!`-= zLU}{r{h2R-oRql_kfBxotPa3gDBKG$CKl?DxS4iVQ_lix1Hc%~92DRpJ;?pg0P%S> zJECSCzdNZCTxI~&KkO7s?K|JT@Zjie1s%wt6Q`(wfB=jj0MLB|yg*d@m~D^!jI3>l83TVQ#kGZKG_y3dz-X!~`bngN|v23)Ycp;~Ld=+Nt0dY6yfhNKE*{t+x z+>id=1U4@UAe}#F9x@JiRs_=f9`PuF0HhRdI05j506% z*%Uw9zrp@x<|2;k0q~beTacxH;&@jt;E2G8;ztBRjy3?uC<+~|UJZk@o6LB7`+tB3 z#%hxTqA_pQ9=iuICLzOz*VTjwgC}Ah^6hWV@q>BcSQAiz83k$(-Lno?IQsnixPxj~ zfdKYJi#W77VB!Tx0Ca;ZSNNC_zzV=r$P66FV*q#ms}cyzP%_ytzbvt_sDJ+t@B~E& C%)w>= diff --git a/samples/h264SampleFrames/frame-0726.h264 b/samples/h264SampleFrames/frame-0726.h264 index 8e1ea4d36d79c97258957c204748ff846d8fc8bb..cd9aec4c5766ee464c76f7e4925d5b04c41c4914 100644 GIT binary patch literal 6777 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 literal 1729 zcmV;y20r-!0003AFaQ7nL7E^Myaj1~BO#D%U{ioSOLt%ZL3bf?n8oj3jl&;`I{Fb@ zBFldCPU549UpZ^@9e{&X_VBu2m%9qPYBy z72c>ucK?IdJdO=4e}DYo${BB2VF2S~_q%dZ;6dgXQwdz4M&ghE`~X3YO#RF^80YzD zW**sojhMzlV+1iy-~%Xy&62H+YQ;If0IET`%ba!i0D%Gs5QXN! zCyAneu7~7C00``d05VV1NUNY@O4kbA!V08lRb7*?_UQWy#Xq+xEgIGSeX|9PO?ljO^aw+0IU0&hWQ zKOqWxpWF2=ulO3P4F^Y%)79e8%`b+d17KhV;7|uaND3AbsQepyvXPIJ|FCla6$WjC zu{E)N@Bjn_!B`L!qPASlq~^1;A*Qpy93Xb7YB_XVQa}J803Z+o!a>AD1vx2G*llen z0>_aV4`ptt_x=DF<{aUnnpk>D7C1DO{cvJ{RAmM!o&Yc4enKQ(asr|&Rs{$rjS6mq zq*4gOh+xIFd;B*C44kc?M1ZFlinDd#*x(25PYBzEvLn)YL?9^0!fYE7DR6)QKo}?S z*4Dw&1fzMZe;Wuu5Fb$uII{)uRdQLg91Eg>ggYzCKmQsA9{?SPDLXk^-_-yHHb8(7 z2^+RLii?DP(}0k06(j&`lYJ0>V-Nrkf1`(|MyJ50~ir# zR8O=DIq(1w26%ZD23y9u;b+Qg@IPS^U+WpaZUBZk<0gYYT&5LE+8rtH$ePjCVA=*iqGq?&A!C@|zN)*wVZIT8w%YqmYO1`D

    hlmQJq|o2I009AT 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 literal 1056 zcmV+*1mF7r0003AFaQ7nL7G4syajJzPCT!eBOePIM(5)K143TZp|n5KfB>AXP{HfR z!D2v$2b~4*B#V&t@Cey%kB}G&07~KBoG8;2D!i2M2<%Tof4q2FbRBo2umg z0tYw{o#(00yVgmz_yCK+$*pirWJW*1 zXsF*IE{jQ<;P8kU0YU;rFK%!|whZD$>i67$1O`5&NE33@wvg2FllOrQjz$K|fENL! zgme)^$-o9s05x|oc$2Z1rs|#?-1crm1E&i9@K z-b2_RGaK<{U^WCkTR34j6k!d-niysM4Z#d001bu!BQ~A`WE82aKl}W^89)aO+G*6u zkSdNe>_8EOAoI;2L&KzrbLgFfumBJMfB@jgi<3RPs0Tp=7njBXaDaOW00iX&%2tms@b4i;nn}UcGr$OLhnBnBXR~7{6OJpKxieG>R1UQh?XfVlmx#v4T zqIB^H0)tHO0dM2L_;5CXP#_4 zqyekI8;k$|0YLy2LTLbM@D+#i`S=r18i1k)04$0Ka01WEa>vz>U?i-T7Sfjl@_+)( zqeLjX(ow;${*Sx<+xFsE>L3C%7gO*fgrC0wDNOpWDF}UP+ewY;-vN1ZBI*`F=pJB3 zVoNj!9KjL)l?Ah72GbV#VXgnm;UxHxBghKY&cX&+=fCBaAh$RGdq2ea3yvGU;|_7e z_OCNrLO|ow11YZ;XLkAEg$NzFClA&H&wT0OSQAV860w4Ufbh!j2PEwTZ^!po3Hb(N zk^%*l@DmSMPyo`9Z@qLtn(e_-%0Mk0wz$!ef2W0dDatTVLI$`7SqX-iZ+-e0pa6&1 z%7?gtYP@3WF`yuC-~c3ML`-kki0`zjGDbk)DHNeNMWa<7_&e^3aTfm%{{m_g$TLt? zmnbf{GoZfc5YjlBVpYrfUl1Y=LK_$(VI1Ty9CBXJ9Qcsu$ODXi_pliu7I02fB-2}A}*$XFU}xnMPs;h9?-yfI=%xW=FExBt9XY{=6`9b aR78-nY+#a-R@s~X`v&VIk~h0U_yy z9s&SWi~<)|+w6XT4hB;I3^9<+`!AiOuUN*P68Q}>v_0p1%3iKDdwtZZae zVm)90AUXgEo8Z?E9t<&J%RaEnYd0@kL3Q(PI-AH=h@bug2SE#v1y(YtMuV)3>_juK zTzrJSz>okC2^B&P3^lV9){5-8KfntNjw1cd#5GGtY5)NMz*=R18ZWXX;1?2sZ-3l_ zg&20J99^#Mp8tz^p2yXAd;me{(1lr7`UEmoO3VLpfCB(2*}^m@JP8Of{iM$nrvL!} zkO9XHgD<~*wt>q?gaX46{`Z1N^K}5QJkklTzaF>`xn{}14Rs<{EdW?^u=&O_6ciD0*{wG06p(_h+Zud!ujQN7<>Q#fCzyrcb+gen#GAk zzd!xJ0AdTjB9VJD%TWfuTjorM5mCzOy(9H{ssHhRc?^%td_nmt;QVA5Dgj0UPzjR} zkrEMD!31pVKtk$U?>ISsB%p&RfU@-^ef9x1E+@vo;IJCd0Gx(kVWKD3CIE?mQSiLd z2qaT%y}J+?CT%moSOLYGj1hCR4@${N7=9)U02vcl3l6&Ol}MfX!GaZruk#=%HQU^}|F_oFHXnoo zD}e=M>1jE{!+R9+2M#dpQaZaG+WY{SLjt*o6AtHB7+@lOo&>%LiNGO|V|Hh9*<8t+ zUH|}qd4PohUT`jIgY^D`;Yd93fH14}0nh6d1ChKx|LYPMyEjS9Meu*-06M@w0UCD7 z=rnOLAOHX$iw-Iu1imH!0suhaq{F;8CgiOujIb~;`bJ1=?@5z@A;p`ffPgTpbK&# zs!VQJN@JXmSb>g!)_58KqAoHwb?x;HdVmxSJZ~gG17I0_oEs3;zIavy*ct$yC@CZ0 z1>VT5r{CqQ9Kj7gpaYDbB*-oRf`2t-14ZSQ^}Dlnd}^PS?f>up&ks^VjNC&&|DXZ^ z{(+_B)PfO=}vAYm{sboGR%|D?bAnuq|g8fiW3KC}Q>lb-^m z9}mm}a@I>ERXh1p3kV61fpK)O1-t>9PDDHBZhGTK@BSPK#rJn{A25EA`}gp~x`Kyw qdV~N5CIR0c_Gn--B6k261t~xZ*&6i4UHkU_aMRy=xL^PS@C+;vgDO`5 literal 1097 zcmV-P1h)GC0003AFaQ7nL7HG1yakUSQcbXO{t5?TK%^@G1RxME5I)9Kcr*9Js3rge z$c9p|io}wZF+Kpma1u=2c1)VS9)WY?N*ZA)1%x#QSV9CL;V2*=g_K9D|9~by0sOGD z0DzXgB8u!xlZ~!SRAMkd8&$ZY3pa%{B z06-`K$pY0vWC|Q8DA2^-^AnuMVb~O1UU-wd004jzhZqQ{D^tL-@eC3`nJvQv0YoG5 z0vW{Y`W44n&=n6^kAWW8h~21cU$9vlBH0=lX>AJTXD8iLq*9WW^VLwbblk88II=+gKl z5+4bJAVwfEGvF8i2n4!-QiYp|p#f|AXtWr(!N9K36p9zz7uNU$2z5}x1cjAsfSI=u zz;zY|L(L$WB&jEKtvr*1%(hm zYW@Eo)^&9*2G<%->*`2YyEG*tcmY5SRfFPYP`LSD?y&GQ0ZdG7L;x)Sfm~5kS~BO- z|M!3(Y!jD>+a;9dGsB(>0ak#vee=h_nXy4FMOJ_T0D>X{J8MJ<+PS;=Xq0RN*wmQ= z3}`VrSS2g1OaG~`1H^5oy@UJE0QN60u+;DC^1x*+X0vq^`t?jKASONqMbf|?bQM*s zrKXl|&seGh&)ysf#rH47ep5^5cmZ#pP@)q&9zB2-U?|`AA{Y#aoxlQ6DOmt6avr<2 Pul>K3zQ4b{gZKs(Ul+`% diff --git a/samples/h264SampleFrames/frame-0729.h264 b/samples/h264SampleFrames/frame-0729.h264 index a47d3ed05a1696a8087cd459111e2b47688bf0b9..11c1bebd42b10572f7c02705f5178da5fc3f4726 100644 GIT binary patch literal 1252 zcmVd}}73t#|=1}20Jx0;zr4~IS1 ztTey?Z~_li!BZ9Dqjs{r+a`DZl{;=MbVAEuEx6 zM%z=vBp9#;?I_M;gCh-e!vFw43;+ZL002OI0?C{R1C{_%2Rz?5upa}ZM0^02Ck-7s zcm4I-F#S1BQr}DBqNZhx<<4;C04H zj*I+R9GnCJ3veWojPj&%bnvJC;{XeQ_p4(#OcUGp6F>kU5cfa@6PY!N|L!9K22WiJ zT!V?5G5_yU&>;0XOVsHx;e79f8~_kSDF{N8r6CAXlmGwV0N_ATBn%K_O`j?Vlrv{9 ziUepb3IV8KJ`@Wt6PH*eHMO4V|J)=2fLW9S4yEXwNnd!I z00x&R11xd)5*=-z$_mt=@h!3_l2+gQv@Uo}4#6HtNPqAGLaoLW(XH)5iZbe45E%j< zL!^feou@y`f8GE9fJ@+DDrp3+l}}>p&pY@40RWW%Mld;2c8w}rYJS83BcWIUMJj+< zz0dZ8_#7UnzDxQ1TfvN%%K!#UgG_RF6VRUz)PXia0ss;LUZ&6!kwJjKh1AvcJv+qn zaSNIMiQoW;0T942C=n!0=!IZ{VHCiK3xEO!DPmQOCdz8g5}Z6j2}%whWa4rP&ef@x z!zh1PctNX}i0(X4x*%}#V1!M+gWm-J1T%nM1N*S8ohre-jg#s0KIPD1B1l#dR?1u#Pl04!s(X@F|*A7}IMCl~NA0VE8-O;Cti0w2b8;TUk_4OoBv zjsPq@StnYqF|Yu$t<5wi^Q_tbsFFY7^s~>PF!K08ohf7Q3<3&#!?j)o0m(uM&&(e% zT_pJsXY;%nbG5s;4m`Wci)mlG|NIO9Q7OPsgkLwZ;^D7xAN~)J*oB)|2cwJ|{92oy z5rHxWU?hqa01go8loiWANFnc_h0tKfviyQaO2I$Bb)cMCN`-8sD`j|+Xn=8kEmhT3 z;7ZxaN;)9~y`9fUADjwZv-E|I>)ma$eea$>m_R@+TNRf%_xqq_fM=ipeV?NoxXA}W9fu$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6nU;xArehsai;~zB1EPw}?fYkUFY;JoA zK*??9^8pf^qa0RWw8nqyo7IARTlqmC7E#Q-G#} z$P|O7LkFk|1MvHRFccVV6Slz*0}A^xFkk?OMG7$iWvc%{4yrHfc z004j>KrUhtR>+kZAoaWVjCvu!06@d4_W%hIoXDx`^AQt~Y&)%z_y7U`V1`;R0!Y(| zb6P8-F^hgJ{oZZ2r~csFpjP;`=e+)wLEwNGWVa#!Y)gt9=wq#_4r~#|M8;k$|0YLy2LTUhN@E>RM@Fy4WFaabCz)etyQvoB_>w2gG*~Rt5l;{0C`i%s4=;o#sblyiQU$7j23a5% zzYhQc2p4H!7%8-fGoPK1DS<(`>(jrmhdO!L|2y{o|ABxCB{&Kp9)i)A6HhFHKl~n$ zXd-H^2g#<0{b&lFJ_N`afTAcw08MAboSXmnh!oa=bgSWA0>)-gAjSSUul|5&#B@n- z9Cx1Bf?kA@!XK0M7f%vb{fCe61BwfgL)(jg4_FR>r=4?u#3m27>Ho>*x8UcE<`57H z0o}C9eZT*j%uL4}X`(NcY(i$t{e?_wLl63ah3yP|jxY(pvIxQpOMn8v5O>f=0Q*#8t(V!2DM?507)BRHSWs2K tR{d1pL?mwZ5Bg=`Gcorf=Q62}r6Kgs?0@^75EEFCRK+Dn3jg51FtBi>5J&(3 diff --git a/samples/h264SampleFrames/frame-0730.h264 b/samples/h264SampleFrames/frame-0730.h264 index 4550f3e58b61062a87c7d59cafcdc12a14f13591..168a4f12c144544188323b028bb86cbe7d3e7198 100644 GIT binary patch literal 1463 zcmV;o1xWe;0003AFaQ7nL7IRXyagW;6vOD3RJ;I|DS$kjPhc}_yZNjcqC?-QE9Q)Z z+9w3y2f|!n5?p$40Lnq}b^@Ca3}6u7A;11jVb1^z#@o_Or@#OZ3s3;(24S#(^DWym z&Y@fc002TefDA;Uz+3HV{v<2y0RhR}5OIRy_^f1|di=f!VY%2TLqCFIq3F`9^NZmz zfB^?gQEK7`JfH!<34k%jDD^(=n<|r+`@jGw0mVT!(o?C3`RZ!C8E&BIMpQTesKg`f zhyp6;K*!9CyecjtPLEr7z!;Ih=E18gfh_e1;CKLF=Mo4_AzIv)g24ou5Gf6)1OxC% z9{?qaU=D#A`JhLr@BKf(6dv+n1BI)v!gq!33}^zu!gm=@#M2%C(;D&u)`~bEf*kmO zc@yN1gTVO${t?H(!L$o%JQmoPIEQq&H{x&uQW^J+4nap3i|hmmw6M&8z5r4ENR`4_ z3XlK>12JL)=LiGg8Ul}kNxmHQ51@GaFrdF+yj8J-)xdzD)d$@ShVakfu&2XC01H*H z90!Z`jX7w$k$_}wY3KuAk$?{bZmb-!fCLGoZn+P<0D{ma@`j!|NvxGnuWSG^LXORp zbAIRm1NUG6frD@1U{vkmHUI(w8>9f>2ZXnc5~4dY6P1o;D9dt!fL#L+8isrT3yPr7 zMGAzK;v#uHUhklT#?$`bhXs(l4uv7syRkkMy&(w1 zaYiA+xRP89GXF9dJHHDKD0EK5%aN!L8gVw|!?u}-00apD06>EiumDgvb3k{Drck3C1&@J( zYhDLv0yZYU5e-1W_Z6!Z<8sym36l@@@VR)Z0LQ^4Nn*HDDi1&4hGLu>#n_0K$)8P{ z;<~26j}4#Vs40OE3!b;^K zzR(Ro5GzDOzx~D<8V!AT!Z75u2MFiLqQl+r1wj?zc{+^|H(oc-20#E~If8>{e<72Q zOkfE9zyQLnZvqO|AHekKmDnaw1-tkbgqpq&{9pidzz%>T#dONSqwESU_I@>WE%1L8 zKmG}NKmeLU02pDxX_Pux1{^$#!vItp0UG#>#gHj>d;tzX0003&0B$Cr2Co2kFaQ7n zK>#_4r~#|M8;k$|0YLy2LTUhN@Cr-}z)3fN4O7-+@BQs~7XXqhAyJq`SSm;#I)f+x z5|yX`E`f`=lp)X;g**f>+-8N_)51CU6K5d6q-bl0y>tUmjpliY*C?finj+6^p63vKhluqKz{d2oPG z1*jNHqezcAK!R2rM0p!oHN=)z{K+w75HYt9)$oUwU_`!nSI7|yCIAD}2i&kAH-N&V z_rL^`|C1)#04~w!n@^m)o3w)|5cj;5Be|y!8|{Z$2|!d0UVu>iGg9^h5Ne0jKiptj7`C~A?{`TKNzh=ClYM;lQ_I>jHoi&EQE}={6971jDdQSz4SD zkUH<3)BF9vGYRx4$!T8VS^y0ITYyu*vW6r?=p-k|q#uXM0ALgzc@Yc1&!OF|$v{8Q zfPmrOG@h9j`5tILeE?I3tQ^lMFOELK*#DTE1kfnTEXDo=pa38kF3*?_gm*G)&?X1q z6@0>15L}I+UJA)Fxjp2<{7;fnj|ZI(zyt^oE7y@(QY0&xCwsRb3xEKC3*^Ey2iSG@dh`9vJfR>5#d#qB zC_Q5T{lG8)cLW)6omXUo^~_n`!jvwWgCLcK9l%(h zs0Ob9crX9}0YLyciK+psz#EJJ00BV&6+&u&YVZn748Tb@fDT-oZCkJHK)3{vW3jIU zqUCA`LIF!i00(Fe{p%fylm}4bGX$w|hK<(g+NgaUvkg9&tb6!WMcm4`Y!jMhzS32v|%$%^CV!Z diff --git a/samples/h264SampleFrames/frame-0731.h264 b/samples/h264SampleFrames/frame-0731.h264 index bafa50b3667ac3d9911c19e9c24d74f1f56f56cd..7c147773c8745741c07bdbf184f27181f2cf256a 100644 GIT binary patch literal 1591 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 CHynEa literal 1016 zcmV23VBl8-EkrKTE4RN`2?9f>k3r;` z_XmI%(hzy_}XcrX9}0YLyciLe2yz#EJJ00BV&6+&zPYVZuf z{QL>fD+7>-Qve#=vocKGpkN*NnA8=Yph_YjpkaUn-)T09{`UwI$uX{t%0JlIP+2BC z75Tuz8x;J16e*xwDfhXi;KlEDunFBkxnm8H+B>=Q1b`^zfE+6-Sz_zG;DhVGKl@-M z8BKlne|khj+S?%b|7`HA3A+*!2eGM_@Aun3FV18C{=>|G2(eZ?Ur!dW07yAIJOTI+ zldQBGoHg%(^HIi~d%k#2FV#;dz^8)ZHpxTBchf^dZ;6QC=sYcJC-LvL|9tUm{`pw- zl`f!(h3;AApYG+r5jf?XjT`&@`{#vVO)s3`Az6fv3IbD>nanz#r=QsgEKJ`4g+J}! ziRf`+aTb1G1SL9SVhgMO@rk-{_&{^oc#YG4%kC&5E;cSiGBN}B4vBK{9OO_JZ%E;} mYyZT+820NQ38)&%xh!(NkLbk3+(j5QxtN4C^5D9nJKQEf& zB4Y%2WC(-oM$ft&4B-Tviluw}=QKCk0O4P5pJzS)J3(hUyh77XQ%hu`T=0}ru;S!C-3c{Kgt zJe43HR~*sMQ5_@^ud*IfJTrN(v+HM*s`f00c!qjDlEXXTF!kMNG>X8D&}fNi-S`0Jjon z$u~at@PTS#fB=A7E^h+XA^-b?474yTzbSP{BuK6=_#c3P5YhqW7Y zfPJ^Q$QuRrPSP|00s;?E08zh@3|ISc7!Vm~+#cB?3!gRr;3pU8CJUfV5(lyV0I&oD zf#|9i009%ozyO0`8oJb}Npp=`JOBX!PykR&w!T6RGEvhF*ogE34gs@Be3vZ+QH0@` zF;4(M$Fv^s5o%#xYy$&JDYzTp7yzQ?Ofq}vNxNJv0i@`I^t~?o*?6i)} z|FQj`01yQL0RVt2>0Ll=uJVe%e}4in2ne(aXWk;S@{b4L0FdAu9SHG`A7bVO5C{6Z zPGs5u0S%A54Q+5!0-LI*31NT&A-M!cz5c@(_pp_h`Fv0#L2ytFLjm!X{;&g~D-?pO zQtDm)`$P-~hUX1ck9YdN_K5%(0?nWd6Wbd@AQ^&*Df0ngGA`Eomw$Kw0s*do zU=dXV*iN+w^C35{001B!paMC-<;~)BsnDf8hyW0{lmgyeAV`Mi`$77Fp!G(fWT2ir zko>R!NQ_R{=H(G8Ux&gV5fKao03HCJ({K;U;J}#l1tCR%0tR3V0FwCr0pbG}v3%(m zX-x8F5?LGo1O|=0!^r%^u18^6sCt;RLzpTS2VZ|6GWb|GGzcydmO3FqK%DEwKNJoC zF`qB&r3^Dn1prcL_1|L&T z`K&}l(G0{WciadLPSL=|42FbZM%UXsJc6!*g;=r4`%#q86o&m1VJ!B@`ChD6Lw9Lrp1Oq>VCh> zL}UN+cmM$bRwe)qG}2%fNhC}Eb>`S*?k}xvc$fh&yZ{8r>xu}>t>hfxhkycPVNo|SwuHpB%t3;->ZIvV{9C3jte@B}*m00BV&ZYID6uK;*30003& z06B@U0jt0pi~s-uK>!s(YyfKT4>St^P-k+-vz)Zk2*`Lw? literal 1423 zcmV;A1#tQR0003AFaQ7nL7N~Nyaj>$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIxr{s|A^?akBraluGO@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAj1@BwS4o4E>(9PXMhX< zR-ip~HppG$Lq_-h@TfW9c!@}kj4a%pX%ZPYU_i|VgpbP6Vqh|VL16!-{6;tw#z1>d zMv(HN1H`}pUQCgN_k*CPNC8>ll+8v<(K*eE1OmN|EGRY(T zpfG+{D1{>Nrj4@29K5xus)VsKPZNNu?R6)C zh`nP_+?cdR|NRfh065^_BBmvM86W`$kG78f-xNGCAPq<}{HSZ~_>dB>J0V4V(WTZ0c%>3lKX?FG$O+Ok>ZXA%iOSz?!a}7u zIW|}p$coiI09gP4fDm9@;7Z#XIo#kkC1}G!3IGBC-i%@Z9RSh@yWdPiPDQYd*2#PT z0RRxiN~Z!y(~5IiC#GW-{A>HX+i#Ekz}%o#__gP}{+9E>05HjJL;%>A6gkkxVXzOn z00bZ^8k3{*Ywxa$z5Wm0*|s<8Rd-PQ00aQSs5=Xh5BYoy24ZZRW&i+ycmN0qfC59Z z#gBi0AmFG0IoP_7vjxJcu}t~^CIkf!r%}7qAqhCq)3`7M#u=y_Bn-~f-EsL<4~6sr zH$VUY0YLz6CddY_0C+F}00BV&If=3XtH2wK0003&02M-PfNJm$Gr+J8Oii!=c*l|@ zuvbT92Mt|(1}vsSV%q7-oTA=W24`tp(hd~f54wN zd+`&q-vk_4G=Y@O;#q}OnaRC4s8ivNPFR9Dv&42paLe@AY8(1k5Tbc9H-9 diff --git a/samples/h264SampleFrames/frame-0735.h264 b/samples/h264SampleFrames/frame-0735.h264 index 95835c6f59d298363a3a98b010bfdb8cd99fe24b..ff328f05138635bf992e56e3a7b01a1682f26859 100644 GIT binary patch literal 1459 zcmV;k1x)$?0003AFaQ7nL7N~NyagvHK;Z^94hjoUxW5k}bc_l!RtA4Tf&K&A;SL{$ z==3R}|VV$uB-gP@mNj_#uYpV5JQH2!+DSr4#2CfibHL9WjKd z1S^jo_6D#5U>M;FJ#M>)N~qR;-~b8$D5Tp_Po^W+sjT;dFWeu|l>`707=(PxKoJu{ z1&}f{=%BcOzwa;xBybSOHC1pUrlA}U01O=BK?cmJ002NofH7bS;VX~X(7#&=0D(=xzyJ^` zr~u|fUw_O90tZUO;}DLqQ{UR~7!}Pc=F*BQ&Me*l06-W;`nvYgf&{xy`+^)6_26_Z z9<|+wfu-pP!y}3@4jJT<;L8D(k7!`*{3JM`(K{0?M!-C2*>YX{pak-u9Ss>Z(*Cg7 zR3J%11^84!67s-3fCGPA0H7ckZ#t2Zz;@)`*!00IDXzyhESK+hXs78X=c000CIVdAH6{s?#=049b27;vMh zmk=~PVHXrUTR;%(0003&0B$D82Co2kFaQ7nK>#_4vH`2W8;k$|0YLy2LTrF)@DDNk z{(c12fgll>L;xD0s-h-WRATs=0DgQW0;qgNhtve%V<_Q}L-&NhAKhSo`vfYS!?KY4 zfHrG@d`14!kO6@PdNXvElCS7G5<)^s55&1(?z2P*z7w4LEl0t`01pAF05LxfEoOiJ zKLyRL96a0g;T!hky?+7`*S1_Ef4$)F^p{yE{_5>20zeQ*Vw4T{%VsBj_1}Z$n7ERW zZw~@#eWwsOUfGi3sorCPJLWMBi$E{%mg# NHg%p|>mN(tCSZltYzqJY literal 1040 zcmV+r1n>I*0003AFaQ7nL7PAtyakV8LnWij`2kM?7_J1K$Nypkf&c*kP;ktxkVruR zxdHy4uK`#92mk>92q9pJ8nA@^iXeXn?f@1sl<_c`4Kqo(;2@-kaZQ~%sRN!eBejRY z02#pm$N(TtvCv2&{fF?GXbJ=YCqlJD6IsPrT$>)*jOYB|`kVp)?7)?f{UmDwYMcB3 zk!lQ+;Lrg87X1q_(IdbB5Dgsk004k-#YPw-F=7nH*G5YK5Cn3>8X)p2u#ND30)PM@ z2oj^D!O%8w zzyttb0R+I~uG>0f29H4P_yEP>Aiy@HYy_`ykQBqNY^((G{=k8S!h)a(VGJ~SekkFP zf?s?$Am9KnSAZudF6u>qHSiJ%!*f7KXA*!&u-3;);!(f#ZPA$qEicc1)hV&o?*u`B z4TcaBYM(QO!3VEj2*3uwh3FK>fjmwLTWN{FO#+Of%u;>{Kmb4xO`Rwe8rs31A>c0o zcg#xW0?>b}p&2Gm2fUbHndnrb!6rlS0t_%mZlbEMy-=|md^rH902Q)P8VB7{2Bqo% zDmq{RV^>0n%J;f-s{jE2U>0r*8TNnxASeYYM`UI_i##=I)9eS2D8PJEmw{n=v;TW= z7yxw+F2cB;$pz<-leiS4={!_DV~pA70q_Vo#_4v;nKY8;k$|0YLy2LTvzQ@DDNk{(c12fgll>Q~(=Iv_hP{lkk{=+`@w>WXY%f z)CAySjyO~})q*F0+IS&VY<5x~^Z>h8KpzK8lxw}D`CUckYvGJG6= z^b%VYWTUX%K^t7T&1dyEkcg9q#19Aa9#T4(TtO;oxI8RPrU>sah;6idL|&Z>5)=qW z8pe4~`Qg#pAw`Gc004~i62S-{pW+Y?09P7BOTbYM_U}?ekqa>qh`>%ngKqURU;PFI z=o0~m_#ig6U9L7i|I8o-{at|a{}|sUOicH|EV5A9u)Xk*Q9@ZV9s=xyrAK~#lyr9o z0x3_H0Q`Qi0tH|5A%LC~u7qG@5la}}hk8n@J+l$)5G-Y-@5n#UL@BVFV)h5=P+rI2 K7Y%`;z5-@N%engi diff --git a/samples/h264SampleFrames/frame-0736.h264 b/samples/h264SampleFrames/frame-0736.h264 index 0db789fb3ceaa8ee385c66e5c5cdea683b747991..474c891bc4f19b9494e4c42b996a254f25bfbccf 100644 GIT binary patch literal 1487 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 XVQIpraC85~d}vXbpTr-}3cyUj@oG~c diff --git a/samples/h264SampleFrames/frame-0737.h264 b/samples/h264SampleFrames/frame-0737.h264 index 14c716cb3d8cdfcd2441467c334693d541ca78fc..9462812b2f3965e87125752f9c7dd9c42a224223 100644 GIT binary patch literal 1125 zcmV-r1e*H*0003AFaQ7nL7QM2yakisZxT3n*_#6TbjZ06P;S8Ozc0a0FydB6Sa05AX$ zHjvaP_yCP1!$>oU!~PBdvd|1B8KVT--~2+r1jJ?lfPldg2ST%_zXA391p|dUhmvJn zcmN0h-JqZX0$xCaRj?Dw_>d#)XsiG!0^+HSYn0zDTfi9WX4zVS3*p~G00Id>0sxSX z8TG@PLMR2dM!f(4Kx6&QNK>T?01x;82!K#M*vqgi zB@Yv||APd}DWC6b+cRc0cTmIN0`Zg~0iQHxk`Dl3GZBzR2`+{>BA>uv%MAq5lOsl853?Jh&I=<;jqm`l z&)gUQp)Y+p8xa#2FYf>#Va5t_iXM2QSkhYX{rtjL2m~GuX)XdJrR2n*VTS-iumAu7 zK>%(h*aoivcrX9}0YLyciM9c&z#EJJ00BV&6+&%*YVZVVz?2F=pb5o-cKap?>q>w=PqU#e06zxI3* zxo#m3?_dxO-?yG`^}iTmKt_?KBIP5w9>SMJg25!7YoU-}7O3iI#40}hFVHr#D3WDJ z=>Db*?9cbhz;IWpfS7S`eu6>FpakFmARB^wd6%#zK$?(990So%L?uF_iEC0^+h?JX z)hGZQ1pM$`k(hZyw}10M*^vMpBa|Yho}K{f5EK^ySq1b^PE|rdMW%C2ZFF%6c}Itd2G;2V+A4&)QV?nq82qy@X z01Suct`%v2kA1)ZVgOkYkM3G3H^@t#&S>~NA_hR?f<-TGY(%yOaU%UjX#fNUKLmj{ zZA)tnPboh<2uxxyHlzT!4J{&|iY9IV89)F)0;`lfO~i1MUbp@*00bC7074)D1R}r! ziIzpoV@y!i9R~6O8X#(j9`Gk~PO%iqA(!AtLvT|OZaN;Y0`Oo1GU?zp5eih-|Nj^R zC;;JmO*xw~1<}HthyoZw4?NNY5FI2-pG54XfC1?M0l~tgk8dxf@qk<)9>PGZKwM{l zU>FV-q8kMeAc>kAJjrkX_z*Ic-$7AB?B)pYY;yn*0Cz+<57Fqizj#`K0);PEjVO&0 zPPcCmHxWp&YYaOl(1|v_7&Txu(3>I(TbYau=tNH#NB}BR%4nwowARzF5a0j^2OLmW z&yRqX){+sZ3P1=!%Q$mMnJ$~ch!v?p;9!h!@?g7)f^@~Q5iG$kzykva`E+P7$%w({ zOF*J@@(2Th%2H-T7uncxTo8bIMD#@(V2qipi<*WqzUz$8qvc<>RaG^#6T z@&W(>1Sg9b7jhFuV+y+9FeYdWFb%D*@sm0DDFc@PCg=bF0YLz6Cg29I0C+F}00BV& zIf=LdtH2wK0003&02M-R0BZ0AYQU5VK%fc5gs=d+byFQif4CT!ODeEbbO0Ufh!^q> z=l}Kxz!_{X-|!C9p-XKAcr{Y}>b3-0DF!9WxnWok0Z6!PAZVoeh<*W=iZxlIk@x>f zAv6&PM|P-Ci-qk3_}>3MGNY8FCH=5s_1}D+6M;1WAQgca7>Wo$8AZzax8SX#Kx0Cn zv){}Fd(!_Vn??Wv0Imbf2zYaV$;&x}EwF(~nFS=H8kb5x|Ln4ROiVwB^os)Te(ml4 z^d2z8fHRS%6U8IBJ_Rn8!T7hHzXk@cULYkC?G3L-{Ronmy0(|gCM#Gzj ze*fn|6Cwb7&TxvO+xw!qf6o^e0y0R5h=OQF|Nb&-1-2#CBZ$}iv@KQ!Ou}R;rd^c( z>1*ZuN*E?2Bj6-@-%BwgO@aTi`5vfC1Rx08cOi{`dZC aF3XHS4HCd|Y=rOimPSLPp^ZlM{sg%B8n%M~ diff --git a/samples/h264SampleFrames/frame-0738.h264 b/samples/h264SampleFrames/frame-0738.h264 index b8d0b48ae3354fffa572d49f9319be0270dd7246..9d417ee7a4bed20ac93562797de55a1a0c32293b 100644 GIT binary patch literal 1359 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 literal 1689 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 K{6POaCjwlaIjP0~ diff --git a/samples/h264SampleFrames/frame-0741.h264 b/samples/h264SampleFrames/frame-0741.h264 index c81858fbcede9f6a5a83d685bf21c8f25a744224..874bafac57f941a4b1bba5d33663632b31c0d95e 100644 GIT binary patch literal 1754 zcmV<01||6b0003AFaQ7nL7U(jyaj+xC;$)u1Ok8#3p8lavu4ejG-%ngU;n@dk-z{z zS<3(c0MI@R4McH&)#1B%9%NK^EUcmM$am;iGGVk1`bJ%13{{lEYq1s{j5(50M)sis0g@BPMM za`!L+ghr(eL;re#13GsHB*&vILxUAOBs)zI#MV*LOJ!s*1_5QKWW;<<(Re=;r?>L` zghK^61PuHF1bTyd{0&r#gks142fzT@HY9(ddhh{&DM=LWN@(eQDaP!dbH)4k_XG|F zM2ptO?QNALhby-h%a)QK-rB+-CJ6@aFk04+wqaaE>N;h+8L!b6Jv>hbgS&0A`mBtSMLFf~CLr)zf#!9SLfB+B!2r-ZhWNK5^VlUw!N~QY1L_h!# z9j#1&X~~5zfKVU+q~Jm$i0Z}j^Z&x{`oI{x03w#;!b@c*zVHA91vplMkw@oY;A=+a z?zm_O6qP)T<2WQ`*Y{&mRI2~~W=uwJ{g>yM~>+5i}ln8mT(yI38Mt-WD80{CBc~U+3$e8v@{fSAUE0u z>$HD~XHWvE@BzRS1LV-V2E|bDtz^t#tgs%mV)UK=OY!Uq5=RX9#&U&ElH2lH)ucZF z06-W3=pGFFrgp+MI&eA^K~Io)z~^u%z6gY>nYaJ@m;||j$6c78{@$O!7UDnvAO=LB z1qd1=PC)7B^_pWw6R#Y{H~@p7Oe9nx`4C5u$@Qb$00Rl`4rG0-^e3nQbP*fK*tekK4nz#U(}a1abBhw-Aoa@@cG zK^Oo87?Yp?Afy2GpMMkp0sxzA01Ol~O%r0LK=nWhCV(Ib2UK`BTi^GA3#qH>N_T=8 z1pG5V01yw?s{jC?G75_D+=VklIgt@84lCcW97AH%C_~gy;#y1p+z$XzRe?cSBgaY# z&0GKgfN&Uk+u)I1=#%nk5#M+KY~r-RAqsKY1+gV$7yvjLfFM*fL^to7VX>gs^?)&W z0LojF3MrJ9`+yK4JTE6vk|yiM{Riv-3@X;}AiZJx4^o+II|RxAw|@fAlULp_06Jg? zKoR1)Wnj_v1s)xVQ;)X)fvz9#fzR+)iCzeiXTSh_1VB61p&V>}-q8~V+G1cDxS6d6 zWnpQLL+}XY?5^}jwNL+A82#6O|G)Owh|YwC2W-9Yzf8~G`VADRdN~#U=>RA_Tmb^y zlmtHj4G9FQ6iuY&}N(_2@z^~pi2zCGf0YLz6Cin)g0C+F}00BV&If=djtH2wK z0003&02M-SfNJms2L?e9h*N?MtXlvrh3&|&f878Fv0o}>vG4N0{am-L6-WR7fa9!< zf)Cs1-z5=}2lNbrI75@!RU=s7J`)xpfOg9;4`u@sFPNT;91AFvsZ8LPSYs2ATnb;j z39qq5fP3hl@B%S}j+`$Ff;pG|!+>DhR9b<78V0n)(B)$9-Xz`=ngI!#>h#9yi{YW- zLT27oG%r4$c4r3M7iu=Kko4>pkYwfXNbH6?Ix9ku1!T%7+Vbmks5$BsdfG8#!5CVTRnl(%d5=tl% w@L==Vjotjg_?QEnJ!&k_|9<`(!d#zE`Op9C15fXjn!(@y!GPKQ2LIqpfUlYk(EtDd literal 1407 zcmV-_1%Ubh0003AFaQ7nL7D&>yaj+xKmb4l3TcKIX{MTCh8k&~|G)yA00IG@bN~SW za1sm~Mn*N8B6oW*99?jP02~4UWsm`<)-bKWIOqoEk>l_HDgXikfCmjq36bEV>{oVU z;20r-NV34QZaY)i0S5j72Nk0ANg!jYZ>Gw2>xf?`+!}fEWX_TY|)%2nGx+ zNv_ZcU@9`@fFa(ng_XmbWE)Pt4_-|KgjB(lkN;o@0Kfp>Ms9+M&9ljhNNh0&r}Fr* z5VU+y$P2&#AQwc;JXi2LbDaOc+x`9huYe0i$uZ?-Q}^{ikfVr9Unvlx$@|}z<$A<_ z{`>$@vKCkD%ICeNZG^@(Ajk%)#>XK>Y3lIHIi15 z{^Wasq*voHY9s2c-~b2@gRn3;Rj)s#Xr60I@e^6#1BV6do}oGd;+jF=00;*FT4)$t zU~{UqUVmsc2rgH05InYK!___WM$xy@#Nlxz{db&NhO!kUFKLg*lfYRoR# z1Mo@!0sw++=^&`q)(tri0eA~w8HD;cp3*&!Z@idanfU2Pf=u~|TtPA~>hMNMlEvTz z7+{XwMO7bqp<*`p2S5c!OaLrm=utaf_J{z02nV#4?;|Zw* z@>%x+lzlIXhpZsYo^SvH0Hr7Z2mk;mg8HLi_~eoMdS9M8S%z#pn$gubg`Tf{pgajC z$w7P+T5s;T0h!^(KS(me0O#v>w*#D<=B4fIQD0SIdouIEtq@R+B*`*t55Q0#bA#Od z@=G+*fBmM@2}F9HtzMVF#yCzF5ElwS7B>s&^oi0$?%PQhZg>F0oVRBm08sO7*(lS- z6BJa_9E6kTQb36~00;oH=n4(K^46$`{_!#Z7yE@`SA=hPBoGaSu*&5M9%NA)+o8k` z%%4NgMvx3uUwjLe`2{Y~p;RbeKw?E-d)~n7au;-h%Ae-Lu~>NDYxmp%2xE-MQXrW$ z(Lb;^4z<&kq)AZ!-@E~zAWq7L>(_*Th8`!N3Az9P0YLz6CV&R70C+F}00BV&IfzAujb6hLIZxfI3|`vb?&5R#5xbMRm*YZLZ%A^q_Y{22v80ZVLGa-qTxAaD7D zWPui_MF<0}r%TTH1lBA2f;-;eg$@B^MdyG~@AEhS3~?-0p-11Z?bn9_aetq}5EO4C z{MV$}f$4;rd69fs`+$+Iw)rplyZfPFYi+(Pj~kyQdcgl@aq$R30MwXAz#{!&%GQFf zh!Zw8fDd)eBSxvgenNtQJ!Ru}vl;&WVEjx0{5^V0=KcS}@Rujj^(epour#*)$j~YO N{Ktt*7r@{66Cfk_gC+m~ diff --git a/samples/h264SampleFrames/frame-0742.h264 b/samples/h264SampleFrames/frame-0742.h264 index 9662826739c96ec6cfb889a2c86e19fa00216f45..b6bcaf5ca77c9a650017fd7d89e05d65f165fe2a 100644 GIT binary patch literal 1215 zcmV;w1VH-$0003AFaQ7nL7D&>yakisVG=t53tRyG^zePjd7H=iehxw~W(omNFc@wC z2mk^AAP6B3r)J0dCJe9^##X6e+H~=Uf z2j)beO!<4*1;9ALgR_QH1_eTBwm6uj@L~!9O9nuw2vMIv3={)Nqkh}K9|AwOxflHa zAQH2R0|Ha8s)8#L@BoMk0phh~>$?h$0|2xDkN@s)KxV^()dpBrj^~H|Fm&t$U0|2iq7C;TBzma==mssE4AQ=K41%R%o?&Q!@8GC1? zfWF)e2Mcu$#S1uA00gTH00INR6zm^V|E$0&t^=FQJWVtEfIz{+9}LkUU(YDY6Lf$z zcZu?V6it9&5)7z=;i}FKRv-WnM*sl^G++P-DS$s`-)YDg00jAd!$|a3R1*x*`GdSAf7#c`9TUUs*?o z;gKkdd%`Ke1PaA}vV9ujvb_1R4xdOo6dowaK`c3Ym>P~q;MNn`wWD^Wzx%*L94U-b z#1vsmW7Z5me=thn0E5BJrNBg#z?hU>0%(hfCjGscrX9}0YLyciJ$?i zz#EJJ00BV&6+&nLYVZXG1_MkY5%B*c0N{3s6%_=m&R+FF&MaUAW)WpcFMrQqNpcFw zMC#j8Q~iO%{}RT9SNi3#e?3s$paF}=2*2};U}y{usY6}@Kd@vB0f3Qkc0?W@1k9QE z9m&XVeYcnzTz9}%w7c(T#%CDL91EaR!muXnP*4GneRsB&x98a9?h!4T#0W3f!+1Ra z0RaR6A4>;706>!f0DwN16AFixC?E_>?6$B3icw}G=?2R~`~BdC4?{~Th}RgT+pGRaxDu~XXCwwM?M=45NrGs6%NXK#ue(75h|qi>S~nKH11OLPH6&P^ z=3nKD;T#D_Lfmy_{$D@%09#Y8jmO^BKxXOvTFia)fq)*NS9V1m4ZvUvJUGfL!$fBt d<^a;Q{$ki>@7(|Y_qPAw!M#{aJpsZ@36L?P^Fjas literal 953 zcmV;q14jG+0003AFaQ7nL7E^MyakisNeBc6$ScQ1D!i2M2<%Tof2U0BvodBvhew zt^fiG0wo{=VfpiQT3_S;Z~z#97DQwG7K)AX66ds;z7Gh2kT~FxOWT|gErFa!zfqom z0s{$@V#pJA)UL49@{{00W08S%AO%2aX&?BaWZ(mE01yC-<_{Bb3}n}>|BL_u1`q%c zhyVcykN~1)IJt~ziWGl&U{@C*Y1 z!qh`xq69HJQ)ihj03QMdQhVqoDt(;677cE|2mlq7;6KNrZ};97pg^H()#FMdM3b%C z!aInLv1<%FC(wZ=z6=_$8t6@t1ue|R26Q4Pj4S{uQ_5(k0<_l4uMpq>2nQTcSI>`t zme!IHs0u&`LCX;13Y#vQ!iW^9`@q2%;pD+r6$I&vWFl#bUw{S%5%Q_fVS@2EaLt2AS{z-^YM~*lhx!`7^*EII>3xHa7Jk`C{jzW`7HcMgbzFlE-k3Nu^O!Z3F-U z2t|a8j*$d$VEgrO7!x!G7zWkWglNtn1psj11l<4t0YLz6CWr>F0C+F}00BV&If7BB(%g!3l0!~c*GE@4^I zKG)Qh`h$o4Dnh&dV{A{*^=$rt1ES&5A^a4gpfC|KhP)WRuw)np0!6|xA>sH;706>!f0Dw-H6AFixC~!lZ(`k$dAh#b%6AAq3JHV4ZmKu4~XNWAR>5T~SefkNf zdJVGY`|5#)#EJQr_rK=vw(7wN5Qul*kSSsbbLL~qz?%jFMGOERk@L{%LV&?LlQp%^ zS*1H)VthMT$}PT+15f0OfIV6)b3s;nY3~?Uu*40K_$8QDc%%Id0fUIdRR|W1#jk*U zngIsIixr&9{IPr^fvE_4>dj4WeeeLbsMk%$`szyz5l@B;EMueuW^}| diff --git a/samples/h264SampleFrames/frame-0743.h264 b/samples/h264SampleFrames/frame-0743.h264 index 456b4b5bc2e1e9a760e8dfeafffb5748b019d2c2..a2d9b7ef95edc718ebd92503d0b0a4be0efd3f72 100644 GIT binary patch literal 1295 zcmV+q1@QU+0003AFaQ7nL7E^Myakbe@Q4V3K`sCe4+(+CK@>2c36==%Zd?Efi*D(P z_D>uDC;`b$5FHb740c<|I5;Ew3`@UD;Gqa$Q9$Gp zjDkJjVoqDY01yQL1p+86*|f-c*cZ($mxK%j5x@XI7t?AaA|hA!0YCsi9Pq#ZAQTo1 z-9*0c!GtdZ1t?3+s%Xjt1<@^7i%h&=!h9bgb=Y7wXb#Gp79Km|?vz#t4X2$wd0ou%5sIXwYz7XT9A03Zf%0})V* zKuk<^jChx4KoDmStA{uvcS%ukuoHQ(O!1g@0#5<~!aEoM2nvu;0*23o@|2xd9PkK6 zh97&4l=zuK)Zc&rj(7M0fB=99;Y$c71*ABcNT;Bg^O^xi!G8b;1{lG=!rl2I9eiDf zco?e@HTKM4V8!zilOOm;9!?Q45SUJ8XQZi#bE%aK-dU@Fd+>101yBW zl!wH=2kB-2pI{)>m|bb`0{~Kxa5QyQmZ9IsFYr&|pa=kir~nmSrBF{y zThMK8900&^MunaGd%_erD8dVa3?x^C=(b;R#Nu_vzwQ74KokHdama?0@p{lia~e!w zT;TjO98#XaD{UewG|G_b3_%e_d}CvXpCF!LY$SyTdz~0|SxFi~tfj z0N|wo-n4m;_yB)A0SmYu2qS#@BkK{4D>lae{Lmj`Uw!}r3*n9;6&|Ig64d>jV*mt? z002O2L5l=58LhYQ)3i|f77RWZvVpGyoFk*2L9l4b5IKnqa1C|PK$lcc1|I+e1rG}7 zeNdMQj3P0D6Ywzp{2_n{Jo)e@fT-*74*r%f*!XY+I{*LyK>%(hhz73!crX9}0YLyc ziJ}3kz#EJJ00BV&6+&o$YVZXF@LVLp2mqdSoQpU9`v4CKb`INeC`1agR!E}i>izM8 zgN!DS>s@PG19pL#445ypV}Eq?IzRv*8gOO*xjgsS7&}F*00aR=hhG5^7;arjVGaFn z!ySVON(dfBk3`ZMPS28^EH`&`@B}#2^QcNs@briQItmInkP$XCSkY-9c7!&nu##JJ z+abST!`jop2p9>zBfw|~IU*(%@KAB#PhmTRqxxSkxe(p*Zx4Ndy$AcJivg4vS>_xN z5NZy1Rs_{3FpmmAX8fglXr-fqaQta}Gk8@MU(E0~IyMH3Ikq+b>o+~$J=izG=>>y{ zIM*fq+7T99ql?pd5nPNLH~z&yVH>acU`DXH?TByyNdojp!BHNwxR=6VV3WEWO~3=L zCdAIWGN28fNOB0@pJbMAngnC{?*LRhme&LS@7Oo9%O1iXr`#Z8MSaXn$5(&(v8j0M F39#cw4O9RC literal 1102 zcmV-U1hM-70003AFaQ7nL7G4syakiQfp}0#00;yG4UEKkjZ#A&J}iwNd~NZ^oZ~NzaB|Rf4hkwV0w?!?JO=?rx=b`g@xXI{V=Rjy_yEuy zx+vg5ENRDGF*j7?01g6<4Rv%nUw|*RAoqv>1OR{ohSk}k2ds3Bqfh{D0SCYZ0fEU` ztX*idcu2b+12_a42T|6`Gu4Hn+NC@m3{WJ9+gE2cOk7lI@IE5}JC=x}86z*~2sp4( zGCDtfzyUG|&ta2weLt{H4g`Cs5{b$DUW9y*kMNDoAukew+RPRaa)m7a)#nbtV*!QX zzjHAzDF-Qhg3-Yk-~t{YC&O3^uB=h3|BvZp_#i09iH-|!P@SNT+knoYFM?4a@R%|L zVgn;S0Kfo1JcLNo4o~6lIxsp_9Q-x{KpFPyN6E2n320<0`HXimfZp5<|cO5B)xXp^P ziQoVt@r(qZE1Pg=RGm$Uvz5VkJ3wEMkJ~uUyzl@713~c61Q!=j$dA_8$$CB@1{?qc z1eVZ&sF}2BNeqk%KePY=0Dr&&02Bj{=-k~nz47t=#1IA$fEsX2h>&bZ1r~r5zzMnl z00BV&ZYGchuK;*30003&06B@I0jt0pi~s-uK>!s(X#i^Q1qAS1B*6#+E7CYdyZ{db zse`uN&>{s{uQ5pSx}R$W2N+Eu*1FcMz$au3$Y#_kUNZmnJ0_3-2nC)4Ukma66~wRr z5Caw*zko!H82jV`SSJptQjL)@q>t*N$0e!#=S6Xx&&27OwO0iZDCh=^CgLC1wY8s|dc-*?PT zL^nSh#5(~k2lr1N3}LAm@AxC}bb`UeoNJQ*xP~me47djGA|#^*$p7z{0mNz5_(0%BtS)=;KmjBP z|JCuJR7Rxysw`nR0qS?FUH~8CHNaYUKl$<$dv6-qcmSH`rp1+d03NH|l)?TRLrJ7! UD!{Eh|2{Q$^$m?j?{C9_HbiQ=+5i9m diff --git a/samples/h264SampleFrames/frame-0744.h264 b/samples/h264SampleFrames/frame-0744.h264 index 473dedf5c78a07190447988815b668ad6945edfe..d1f9dabfb2881e845f9bd6129135c65371677711 100644 GIT binary patch literal 1372 zcmV-i1*7@^0003AFaQ7nL7G4syaj>3{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIlcqH0RR9%6aWkrGHQS)0UYKI28bV8`iKAo1SX&z!o0VG zu6IqtyELY6_yDvJbs%a_7j(nNtJnfUw1WzG_j;jbAAOGoOc2lkJz6!WSRy^!R`UR; z00;n|zF+~*Dx6maMqaClCz;I8kYEB3b8cD-B2}>`-~J5101yWN0RjL35H|o(Gk|~! zcmU-Du>R`p3&*A=AUO0eEWat0NF-3GVaYNa2oIALl^$sMgjsizK6C*lHw~r`~=g&xxKCSwh#&c0wVwn3>BU# z?Dv~2IRAqzAhKB}yc8&11L2y(AfdQd{vl0LY3CAH9jcTrHFYpqO0e~#p0Kq*lYsWtR@RdM*oX~g4 z3c#3^=K~Z1nK{b(f-zPxCRvGqIq2l%BW zB&rX~00tuwSq^0=M5(C;7pVaeF@S&rz!mz9fP}6X6CVW(YjQD~&4f^L_|Gswz&rYZ z<(oo?2U`9B1QUVW5nLyFF1?%{cjjhcx}EJ;^6_W@1Pu%=xRSsURntKa{|DeRgUHxX zS-f(6n4)0(0Kj1@m@+_JCHyl~p$}iHi8+uFu>%kOzi(#SVTbC!^LZ0|#4zLlT-{6` zAqswP002N#R?sRlVd>FbZM%UXsJc5}$U#qLPiXvX86o&m1VJ#t`qr0;fD;SA08E~^kc`UWLC!Ei4*&$n z#z#Y#Aim>7oB0_Ctfo2?M6F4OVgj3n02ay}4S&ofdmV%D1Umo#0YLz6CXfcN0C+F} z00BV&IfKFu3d> zV6LB3u3+j3adJoE9}bz~ws+uve1Aw4?5Ose1X(!o+RA?UV4#H-@d1G#03Z+y+Er1@ zwjrW_^T3)Divb?`J^%0k$5!5nH>Tz;#f(#)BqRW!GdfJ0^0WNvAeE7mT_3)160l*u zs^{W4oBV#eB#H?1PMAgKa5}pog3Odd|5o^jPlAI93IZ1^p*Z?~=fI44j#7Th&)?Mv zul)Q8up~;|@$E>)KJ}0w03a%m2Ny~Tga8B$d;khAkP}40zX$~YnT;7p4G}Tb`?O>Y z9ehcyNzwoOp$p!c+h70v05elg?r!7*qDgkckNzQyuUy-zJN_P}&W6fYNM`AOUkaza-E9Fa}oAC5-jf2Uk?hJFCC`>W#$F0HW;*&I;1km~bQDB>_ia e`TfrzkgtuRN&o*?08&2DCva2S76*7Eg92>+-%uR@ literal 1254 zcmV3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxL?*bVTf`9;>X1lNe$Q{Z7P#W+z04sn9P#PJ;z`G@sGCoQ$00amC z0Ru1VDzJeo&I)ciB3ztWK(;vIwS4pzjIQ{_; zniX*u+iQ`42&>c?r;UL%i(WPXfHlN%@A6l8;>+^ zfST|_&Fsy$HYe}^L^mLa_mk`~gp$t&AbF)ygoql8RA4?wtY8ovw(B7`tkbkQ|91z) zlr`Wiy%ON58V3N*3xeT9=x`xyB#b}%pbP+jl~9*@xO*?9Cx7$-h64;VL_q`{j#Jvx zzjpC}DgXsHeZT}1Z!mN|Chx!g|DGQJU`Li{Mr369H~KUIt>V9%|HzPG&j17f0RT`2 z4y*OaQg;vzx)#di002Xxg&2<&9o-aiu0TWVXB_m|Vsrf7P}dBA06-8R7cmH{WJ-*X zdfofRJrLjkAYs*efCPxnWLwwfA}1o)cUxD$01yELGF3PdMx0BU(Ookbx8mR3X4|@d z?gr%tZ;M`g&*@|y2myvmav%o8xFODlJPm+*&;TI;P}LnDn_qo&UGMOI_RX=sQmeX$ z-~b>76+zfsh=0rAU^5eA*)RYE1Hb@4OaKxcmM=7afFR(g0Xf*ZkFy2Bs!s(X@F|*1qB3=VJr!^pa0w+MHtrN3Sa}Y&WD5codL#RA-L78uhfZf z8>pOI1Ax!vWgOp$V;&?h zCe*@U11H>5>+~1dG8{)kJV-ze0}(wHmA0OLokR)Ah>3Q7`M^rR!+uuJ)ghbwO~KZP zEFma~vy5JTT*?d{CQ2#)pL|3k!9j$DEL^Taas2O1Fh-`ga8B$d;kb8kP}Y|{2&wpW*Q=p8mi-~_i4b<_k`Naoge@9 zp$p#I+h70d0UDaucijThO{LZM^adDx+}FMoH}oI+UB7CT?xx>a|IEBz<=z{FZ(0C8 zW>w^y`^*5!-9)jx^@h5(jmo7r|0<2d(14QcR&Z99yyFA90H~uZ40XmrV!9JeC9D7n QN1H^Pq29P)R1kO*V0j28p#T5? diff --git a/samples/h264SampleFrames/frame-0745.h264 b/samples/h264SampleFrames/frame-0745.h264 index d4aa4ce218ac711abe6b7e9c5be0b359d9621c4a..0f19c6844fec2bd257e817b28a29113f254f27b6 100644 GIT binary patch literal 1203 zcmV;k1Wfw?0003AFaQ7nL7HG1yakbeFh>#y%n~mE1ONd6Fa-zjHRs2{75rpU{NaQd zfB~KW0s@hifB=A~JTxeProNTnV9plVVKwQnLYcvO6_WTNhUZ|V4B!BP5a>OTET0gr z8;k%TRK^yh6gtE;)Cbw%0{}3gOhA>9e-D{i?eG8s08jv<6@5lNxUa}nS?&gYoDP*{ zQ2+y?8~^?0VgSmz6gY|D*TzQ$2WytmfEd^YIt8x21vJ<#@BiQcz@m{js)Kfrn}fk@ zx)-Vph5{H9%+iK`4Gw?>Z~zbpbVGm)7-`J;jX{U-(Le!ewgEsiZ`5kfLJmU!Wqx>` z521-*bWwF+<%9qTA4ug=pLhWR;5Rad2nnY0m3=Acz*0kpcgnb*x&Qz`2ibrDfdMjD z+ZqwPB~Sp>c>s`fvzXK@EwdpMrWIV5HNi7$U!b5DK*R>2p8x?URRY0us})e{E==ibOWpT?03a*C1T+B87Pwyz2RqwI#Vu|Q004osOhf<>*v|j#0D!W#iPoh) zYVZHr06@UyJjC7lu;hwWo&W$qAZGfy|5L^bCvW?K1qYP8gv%q|+%ptAyo5mrQVux; z3_)c)7;ok$2Xc6@QGr(XDqy96cuDzkUGqQ$@~{ergiVzZYYmk_15F+`<6_DemI3$x z8~#uMz;G6OI`Dy*5Dv_lhyVl&fB-<-6~F*A3!LyKb}hNsqk15x{1yuFi2zooj1D>w zLyp8OID=!JB2}1C^*Ywz@OKKV+Ad$ z5ZAs<-O0A1gpl&C`ZKkav903l%0003&0B$Cj2Co2kFaQ7nK>#_4rU9$K8;k$|0YLy2LTP|%@C5}92ndBZ z0hrnH$HR=k6x8#kiSPIUV1Ap@YAa~xzR)lEC_mnSl!+ij8-X*gzy?XE09XR=gYN`F z1fY%9bn^|N3-Sdh`Km*lp^+)~n*u^jx zH2}m0B|56x$!F7GAON2L0bqJURsMKHns5N>_mESsR{i=NPcRc90BP9Z0znGZpWDD8 zSi9NvZ+?IX;Ge0JcfTj<05Ypl6`h*??#^guWNt0zWmkZHBuD`v&?=(kH_+H4FnS)37}Dw zS&F{|pa38kF3*?^gf}v4&?X1q75u_i7+j2@UJA(~xIN^;{7;vq9uGbrfCw0HuU)ygrQTeCE&u`mFOvwc8Fo_bie^&E1^(Ez3!HkU;rQ#1I@u>zR&;!27ps6 zDC`bYEUPwR+4_Lqda0~z)!3JDsRoNi@a~5~7r3%(hpa!o1crX9}0YLyciKqdqz#EJJ00BV&6+&tNYVZXG z4hRT^I03%flQw_>b?&rJf4~7?JIU!aqP~vb^owsxQ2FTvQ4$QI_$GA}0n&g4fGvIp z*McDe;=lty0>~Rk0cHJTyrPKN-T%J=NpD$pG!bvNfhJEkl3(xq11wix^q&*|Q^K$& zpg>6l1fT`A7cgNjqG@z}qzL!eM$Ev)NxR5{(M3>@k2Cj`&-%GlfADGJ#~)P--XV%N zfvtykadQ=X|37G%*VXz>*gMlN*WyG5MH!I;U(b8!a~rnwzziS;G5`jRV*+l)U@~-b z82+6Lr8gsg9}KOYjr<|pMj2cC*L?W{be2zt_P~x3-6p;t|Gj38v>$itZS?=2Uqo^7 zodCoIB|5IlNoUf)KmooW05lIwO0B#iPXG&B@e)<@qHv3h{eog(4L=9~Bt2TQ`)Go( zal1aN>%au;6R$FE_r(1`23JaBBPV}%XEZT;I@>kfQQ&_PBmj_i1F9z1YNwH({|CYe QJ{gFalugh71~>c(um*sf5C8xG diff --git a/samples/h264SampleFrames/frame-0746.h264 b/samples/h264SampleFrames/frame-0746.h264 index 9c5a0b8da5688e66dbd26fb4ec3a23979edd83a4..624aa278a553a1deb6bc591eaf04676536769194 100644 GIT binary patch literal 1848 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 literal 940 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 M;1D26RxD5_Kn1S)B>(^b delta 1616 zcmV-W2CwLd2!Qio6 z_c8yyav(HBG8SNDsWhAljQ09LWJll1#Jq>v2!MO|Ken|SAAO(z8-sgK4y4K>GD97) z-a~~)mcRe)!IU!Evcdu8if?x8rJ#e{D26?#IWkZE`v5_XP5r}p&Og$Z%jTLeGZHgHBQ^&4`FH=!7v{onuHGwL;A8fGf?`%(M(YJLQM8#bS6FaBtFh1_ z0ECRbw0$uD^x$SD%i8DfzW@d*ndPy1)QWlkcO(D;0YD=mv#oz;|IYiVYsQ2|t;MgQm0ziO7 zP*8v<0N)4;Ab7zUfI83a<+L!3?G$8iSMskCbBw@L zaBc#cUUzN;mfySp0RUo901yKJcr>0bIw&fC7Mp|~ya?zdke+-BiZqY@zyJgVi~@v; z$h?FGIYR2;V88?503ZeppeYj?yCuNkxEmBj+#&ODy`DuTPyW&dpiq#in*A%JFXKJ^ zIvx~TZ(aZzQv*nyMheFK{yY%)YHC!)luLLujSvIQzyQEG*cBO0po{)=L?v|_7@doM z|KeGF1F*^rVbPxn$N(naSZb&*LRdsU0AX}BkMy+_D7pixpblej06+i`0RUoyYq*H~ z;Egknt}9kXdH6k=2)O08Vk3J10RVx*D)fcw!FnbqMKSOI2mrwE zG@;YC8{N-b8h&gYU|3iojNxw!ic~A27)Y=`0RfCS0DcRIg>bU}G6%(hzy_}XcrX9}0YLyciLe0;tH2wK0003&02M-P0F(CwB7a3O9sR-<4%w6iVnL5K zbp`yR`v&;hLELKy9{|Bo-db+~JiZ_h2x1S85in)|P}7?@yp+9rPpM#c)A0`a^P;;bMG1o<9sZWA_`GB4zR*!-l{C z(SSg!FnaMlCw~VBu!c17I*xl^p$eIlnp>5tmH> zVR8sqXZ>I}s~Rlrytg#zefH8KAfQJ~oBpo?a)qKo9mqa_K|&y?k-vX~fNbCd3Z~ZJ zW_077U$NEWW0Ar%|ImS@<)Ed8yMcyRNXArMUjt-oTz?M~#DCY%3g!54hK`V6Q}6JO6<> z~d|MaEsnZgu_9zZJoa&w>m{7HbJ zL~VEqcsT^NFo17@qxb-aR`omJM!HKOzW3S)QkH;Kg^r`^|NlQ$C1Vj1FGFXf_tAK# OyZjgo5Jh}tF@ZXJfyT%H diff --git a/samples/h264SampleFrames/frame-0750.h264 b/samples/h264SampleFrames/frame-0750.h264 index 5483b51f275d0387622d707702524640e4cc374a..0ba27894ee237d794e23ac119c74bad147c54f4c 100644 GIT binary patch literal 1273 zcmVE5W{n@QigB@5e|dN7RmFCP`JYY5IS(R zAjSEQZw15vm;sIyu`41+51CQy{lEYS0YCzdP1Tk~QGXGryWR}HP%6=t1ON`4Lw;i* z22{|Y#7>V885|WS#nZfC1~gz8=oGrx6W3tA2Y>?tj70M44ch$F9t&mAxlq56WELP! z<1P;nF_2?If!BCoM#sX?btZxnncO&Am_I(y-aG^$WF`O&@CVoM3Jwh^jS2Brum2cf z*^S6Nyfjb%TCIRk3>@_uv#^7Zz!_hjCxhr>SR52xSUF(;0tV7KT*ux3AY2CCP~ibI z-cqN9U;*h=LHL7;*?0g32HWK!9y|h@e*|iv<`JZ*s;;Tn4B~`EnXi`5?(k#)0RRKJgMl$VEU_(~jzP!R00;qx zTFC0003&0B$D02Co2kFaQ7nK>#_4umP*U8;k$|0YLy2LTmtP z@C0KJ2nB>V15LXR)HSKcD1%2kI^qEUx&Ij+*V`hIANWc@-+mo;*eo?p+ z3(quz!qkt}F+v38*x}HtWE8M*asXd?0y<3iS&h(a|9{c7;o=D+GUNzqfB`5ArNWS! z46t{lhk9R-^s*k8|Mk#7DF!1g7!X|vn9|2UV0^t}B=9j~eiYH@j)|M0f<;Kjm=m-R zf+xxX_CWUcLY%;bT42hpr2SqEsD~)vO!tL(5abvQ8LSu^UI%*nO}_H+V*Np*cI#t+ zGy}g^qZ>=|-B6JbpJxG0L{U;9zvKWu-z^x(>gpRw5Rl$y-WEhqFeh*1RgHHl=@ js8jQHMKwaEP^q3EP=~z6d~(VQUy$iM2w|DY=X0s;UKLctOhqx0%0f&3ph09lB~iG;{;npMvM1tdetbm`UJIpX4c zSh2uo1Op%dfhxyAA=m6bgv$Uy072MOG2M2k;62 z0DvG$O_K*ibGkUQpo{}Gg$`UYWU7yv`y80)sqnE|8lJAME$ct|h}xf}sY+++nX>zgbAJio9YVQ_$`0vN{{JwFt9 z$Uz^z8jx@R7%RXRv>AOOz#8}ng#odkBe6uF5-c~d+Q^h`{ZX7|gBFvof7M46zrX;T z1OP6ONx(9X(MF?(B(H>c02u%004p4WpDs642vTRzyLsCbxvNRLjDiq;&2HBxf($M zf$`4AvWsFGWB2wT3XT8*0#}9rmB0Xu7}(o=;9!Xu;NqyL1VV|{_`0+PuK)mm9E5-Y zPAz}}Si_LiCFa3^I0WZ-wvaA8OI!B=fCW>4!{MGWwEHo`NoW1+Q;%Q?vXK5(KWlk_ zFat0UBR!FF#wCiJ)8HMzM+#{mJ6JJ|D3Mr5<^Tc!FF*nSa0)%Mvj0Ud4Il0R2m%7Q zFq5Vc_P^#OWdGm<-2eaqK>%(h$Of+fcrX9}0YLyciLwE!z#EJJ00BV&6+&!)YVZVO z5C{c?H~_}d-(C6|)Wk6&!PP`~4TuB+^dNO(&S0}kU_|j`8xUJtBVbFmzbL#6C)Ysn z%ud;dXcL!XhA@LDIRz{V`yd7PphrocBFt`tW&84X{@4jfb#(@k00f{Y23$lZu7UwT zyhd7JAjT3iBtzhSR^_!F*;4yxTzTH0(OEE5r9?)OY7hjx?mw-GM%K` zPX^ROlyD|`W8ZdcCfqe>dee#WlpVCZ!gN3cU^;u=jAbv&El}YRGc<{&rbD$(QL+30 zhRaaghMeN+LPR58AJj;V`V0x&gXXhhU|Odv%s%*6CO^QPOoev3 diff --git a/samples/h264SampleFrames/frame-0751.h264 b/samples/h264SampleFrames/frame-0751.h264 index 9f9327d81af9664dbc9a88204fe50eb89555e45b..5f0adeccfa0c366fd300ca490a643ff9cb74baca 100644 GIT binary patch literal 6835 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 C;>xE0 literal 6183 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 F{0*Y1v1b4P diff --git a/samples/h264SampleFrames/frame-0752.h264 b/samples/h264SampleFrames/frame-0752.h264 index a3e97d43290b4a0b5fc72ee5e5278bcbbf085437..ede5f3e7f9ae85e603525898d4e5d1862a82b40a 100644 GIT binary patch delta 2937 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 diff --git a/samples/h264SampleFrames/frame-0753.h264 b/samples/h264SampleFrames/frame-0753.h264 index c16c4e8deea17eb4ce9474782087e8fb60bac172..617b490927f5465a7d200f2a3d9ed30ada7075f6 100644 GIT binary patch delta 1217 zcmV;y1U~!22k!}g000012`~Tv0YRET8oUJ`C|G&AfLI>iQrE#9yut!X__=@rzKnDp zyb?#7s0D%MkWGE~^~cK|ZlD$iyT^cl6=MK})%N=zpaX%Fzyl0qGk(kGbz$L{09Xb^ z4$_8ESJeIHFaURk!XjwxK&u-W6d|A4{JLgWEejH*$f>mxf64C~h)Auq5b00aU>P=kXFY{fOAyDm@g0>dMSzjJX7 zQqkIg06;JnnP3Ks?1^{<#GqT>_aNa$9jZqcYrAK^;@)Sm^S+9u)joHbBkq|M)+D0RSBv0AbJ*u83a^mUP+=B}*4! z6jn+LXy7D%y}d?3ra1!+=5$%01bTpuOQa2K=Dws`@CH=?P!>iI)`_<0K#@0%1_635 zgaBw?Iz5zD&ov5oS_1%2@PG;lM{i%5DlEcI@KZ4U03a}5NyBY+E}J|i%{YDlGKsj+ zEta}}D};uzid-)V&T~=`4OpGjNVjuqS6#x#Pi@_x@nKbn1);M4i zKnBLdL8uQaetqJA0XP6N%K&4%Xcv5DlgyN zd;kD|2!Shio-j9>#fe0}KmEV}Vhg__k$W?L%TWfuTjorM5mCzOy(9H{ssHhRc?^%t zd_nmt;QVA5Dgj0UPzjR}krEMD!31pVKtk$U?>ISi)RdeNSR@f1xEK>snSq9gpIn#% zCILsn^GG0(O|tgvKwz1)&jDZu7H%*_&d@z8B_v_^m@oijO<*iK>$+7Uck2cSR%zjX zC5O^s*+ZTfLcGPGvL^M#7ytHv0AM-YVXR87Hy;@61L1_*T5I3?|9-B&%z&WRZ*uGY z-&<7Jeh>_<1QnB|q~{Y2>{G}bIK#C_>g;!G@B(EF3g#e8JDpr%fQj~a68I)30ER`4 z*`3Q}b0%$g00IH#0u%*#z`3dq)A|ocg&_0B0K%`>2S2P-4o2|*|Ex%2?A<3Z7s3CS z0P6t!1ZmqVpwYy{fB*o3EI6or_)Gu<0Rh6whj?^J$yzlTV8Q6*F2nCyb&=;^9MxAcSKl^wa&?%oOAweGRtZ{>b6r}qD^n(;T0&#xqK*WL& zPXD!k`P!mLAdxhY*?AZam*T^)`I#(qv#xFW*@LBRgH=;@W|lc?t*OyYEAC fy~GSk0BDnf!JyJ2m+Cg9M1O7L-uwyYgy2wsGSV4+ delta 915 zcmV;E18n^73Bw0}000012`~Tv0YRET8oUKJL1Nz|l>REaJmLcWr@p02ka#1v4{GDS0fz>OwVoZ*+jo<$Iy^WQLy!SiV&ps_*~@kS(y9TC(zAF7 z01yXWroajUKi`W`OfG`t&Lrw+fF>a(UWE}y3*7HN7wVpW|G*p`br7yLv{j5++yDYN zI1THKj;LgzKy)SmpS;M!AhcS&0&Qh!<^Tc#Sb!J{&6Tgu4$TR-8H5$mgV;lBQD3+K z5HMaCf)#r!34ZRq%m@HoOuCi@&!r4=a9Ljz;9-0S`0X-J_y?dGoKl2~TTWB^nyvq} z05GD8DX5`;){|BI@CZXvCjHR#sbb;$NjxPe0Xp*s_X*wWZ-4=eK+)f9$|zPs&54KZ z1{4yRAKZeq4@k*N-{o$aez;D?(aPrn$Z`Z83HjLSPysDn-4F0lFp{@>&sQ;L2ggCn z%0>pqKt)65sA+ju@17RtDd~GjXzX2#v%x{fMlzMLrzM>Ap z6%b^swqsibj9P>&f9CgWni?Er=QSK4oC6Y5j{#Z*w&sk6UO5)7%r&}k&EaCigk zDwr>SjCA33-}^WK8-WaK>{2o!`60~z05HP}jxLPwc*g=IDX;hd1P_1!KrSXhp+kAV z00;tt$R#F3{KA}=2zTJ?1~P~&w;U{jZr^wsk|O{cYvf3uT}#1Oa*pOo%P?=0cmM(c zA#H(C*rZx?=fYd2@DNvkDB>_;2mtHdf2cGh^Z~cP03Zm!e6Pa6F-IT&2n1;i48sIj z1v%u$!cj(-0+<4AlfeT(e_kM|ry*eQN7^=+SPXyi0756uu*axPeOMjV(t2R1KphUSKpK63rPZXY;~71mpSm6X5Q9lFa}B diff --git a/samples/h264SampleFrames/frame-0754.h264 b/samples/h264SampleFrames/frame-0754.h264 index 34bbc312d4bfe20f7237f9a734ea2daa03bd87c6..72b3082fd654ba9f2c1fa3a6504cc3b88c00d9ab 100644 GIT binary patch delta 1256 zcmVLdY#DF$MgYKn5IO--{T(DoQ1k=N5GqR6 zg-d{v;amO>_`{%ulA(*fw!G?o8BjF7RPFw6@AEfd!r%ac9pwm75^w#3O%o>9gEkC! z08dz*Y90*)+pER^0DxEk2o?YUf=B_x&H(@lBo1ujBzRkRBMS{nxB$#AA=s_k{rcWD zKjNjUee(8y{$CXpGb~{;=Qwi!7Ry_t_}!nv3Q{-#2mq?)@Fgcd|7ix}29wn;o1P#? zMgA;~P67ahxDrW5c~Ut#cvJszfCa#N)v=r=3GMrdpa2jEd!Pb|%$mi2_Yr{uC$5FA zLB!3N|M#hA5PF>@>U6H7w1T>r?yvpAKo|v?KrrfF ziPV+%iLd}^a)2_&AAup(+6_7rK z6@U~{s0Ewc|7bsf!Rm|Tzn{gt7|DFF0A$EC$0u<;3Gn?$6J#JD0U#CXZ2>tH7z_wq zOt2jz<@dza- zIDM0e$SXTmre6%9{bAt-u3{s&@j~cnq31C&u z0->85elqhw4}b$^Vq8)Tdietv`q2$J3!KhUJUa*iED*y02Qo!10U_itU-K`)hFSoJ zV3SY-D}NTiN4{SFffu#W9DnQn04`{T6%|Zi^YaXju{{6sujoiZGyaJB{q}e{d@>Fg zINV1Ecy=?m($j<>AtVLxed42}3W^Q*jcNpP=D~y{ z$SQ%f!{7MaDv}gH|2?`2*`TP{;h4T1rAW&``1OkHBbwg$w zCH=e{a(Dm;2{@brP5Z*W$uJ$i{eA@V2HnTy>%c&#*MT_|j1WE;9@;_AV1$U*<2kgJ z_jQ6T%gqp-;47}+xe8PMuNASpbTU6LtBx?pxD)`;*D#fFBWM)btP}#gAb)5`eN?a? zMh9&Y0oxTnz(G`M;A~*93^{%n%g0~?`9_0~F>dF81~FoikUW(0<&|jm<(8@g#ee+% STv8<1AHbY=Uq1qQ_!J;F87b!g delta 1244 zcmV<21S9)_3iSzp000012`~Tv0YREz8oUKRVNP4|SIBQoS5qZ%(V(%9m>>wiI3)@o zh@3v$&HxATQ2z4c&IAU6ki1|ZKMBwxf!HR5$~77<^mtb_&D;YI<3fM{fdDhy1d8PX zYIhF14yG})fJG9L10)ohrpZTnoB!{r!TpS2KkR*fP2&ID12D6IeZuz69a!0U0||6$XEF;8&5d%{cx3 z{QwxKXOiX3tsTOe7F=uw2OrD2Yt~C`!d-Ih3O% zjbDHm!54paYA8*wzT2FJ03t5sZ9BX`-Iz)cZFI^4*qBa zm2v_fV>sug%M+jG@`ku%00IDk0J(@oTOw3{WP{f4-ZAKh009FItK0x2Msp&kugpYF zMX>I+OW*(q0fHGSoCzaNDa~lUnT%WUq<2}i-k@CDU=I$^ViLz~&00IG4 z-~b>d03I8bFEoFEAmFG0IoP_7vju{xu}t~^Ob7}cPNR3I$K>NzPT;^37-pbwkTW|| zb%*6s5DV{@@Xh>Zha!0lGr!|tzp-QqJv1>X8u06YCdiXx11o=_+wBE#~{zOaynWBn&?-rRUQ3W#9fMrefm9cL(MbzpG-QVapU z3)bv(fK+fT5qi`URCpoHQ{A+_aB+_k69|MjONw0gSO3(!5!Of*U~Le4{|xS#CmgQ> zQ(Hs_I)fVjuYrFH()oU_3<=VqFa_PO9By%;_<;8_3Pb$GKqcRB^9%;0Y?neHM^tAI z3?KlP+W*i$HT3)6@PigMk=%?~@At{!T)rEK6dQ*D0HCy*j|l|h{rE0&*Z>F!IGh4a z`@$+kOat-Xx8PL(7VbYU$pHdiL4i3Hj1WE;FCEza2uOUdTKL1}(i}^8BHX;u1n&VJ zondnnr~b|iaiRM2pZverK*OTo(5P#avxyqN1g@+I3h;ya#QPsrEC{0mwv7PpijUwz zsn~2_wEYM2{4tk~zy+6pEGbwllzP+YUms=NYN!u2JUxE2NRzYR{siN~ G@Dva-f;Y+l diff --git a/samples/h264SampleFrames/frame-0755.h264 b/samples/h264SampleFrames/frame-0755.h264 index 0a8cf256e25534412cbe370202b57c8f34615e4a..50ef21bedba9856009de71421b3969e34b629a4e 100644 GIT binary patch delta 1417 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 D0`IlN delta 1403 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 ZSm8*7Wq-kk0&(Fy{(c1G`S=shz@hSIxU5RVbS z0N@Ou*dCmJq%wLnV&7kxq7VSM01!Kq$bb+GBF5Hw)37)t!=uI#4m!iqOCMx#zbAl~ zh;BgP8+W=p2)Mz|Yfv z-~hO4f+3{q2y2#%%Y>%Z0b;-3y}%NJlC^PZhx~#ff3=iL)0Jb6*YI-suH%3E@s}PVp7p_df`U(cl2E4t}7l05U{@LZIDv5gXU1 z{hfdVFcc;YmzFC+A<`v5Ot+WdE8%z&Ve3)<>YPU96u*1$5n~LDaGMQMY}fbT{siN~ KdH560z)(QBJe>dl diff --git a/samples/h264SampleFrames/frame-0758.h264 b/samples/h264SampleFrames/frame-0758.h264 index 196aa8dddd8581b68e946dcfacabb415fe8371f6..a5b09fc525621e4b3f765cafc051960e8ebc35b5 100644 GIT binary patch delta 1205 zcmV;m1WNnt2h<6F000012`~Tv0YRGJ8oULMFj0x`SfRNAd_&Q8` zXJp_2Or*w{)Q0YIdH^s{+@m5r%DJ^); z0DvIy{gX@HdlW+OVMsJnDV8RKf@l<`^H2Z?3ITD}02V*ehTskhz%g(8kT`IFJCu&D z0Pq9Jp;LnoKnNWmAih#|U=Mx=!WaX_{ooJ;77UUybA4pl!YMNYkZ=G?fB{SZucYe$ zxxgiiW|LQcKtUWXtQ66{EJejO0(pO2OBJzz0Dy@O00IHPXe56@P_0SN0SK_-u4&d0 zG8#+L5C9Qe;C=vr06<1mpcse^_p^{zRv9a#00V;vV7}Qb{l~WGijMFxQX*>YTEL-8 z<|HK`0|*5d;%t^29`IqVhc1A9FsQOoN+TPHGbKfTm`U6LOu_yD2nG-7cy;f@h?_@l z)Q8{!lyBljzH=$E8VTeYI9?Nq)=CKy|5tbb3II4Xswj{U^oj;fZdc$J00XcyFiDIq zZC()xYeB#SumD_eR0}{VkN4gv00aP>00aPuGyp+AJOxRQ)p@`J00k0l7Yloh0Rm=( zfB`Rmds_&86R6;i5NCr7hrj>`0*o5h{D6TjtQspBp?~|p01yEXefb!uZw>PlN$h&r zG9E`m*XLQJ%=LSzyMOZh#?C^ig`_=AQUl?T7!?3Ofnd>5K`~K1zx)^zjfeswePQqb zOpIi7If4uBG)b_)5>Y@SQ>BE>$iJ`*=1$jC)*W1&R!tHTZ$O|_F=|KI!duk#=%HQU^`|Fi3AM#Jzx z8HfiPp)=GWAlh1UH|}qxPp`z!2yVeCOx=Cp~x6`zy=+ua1JNUR0g9Y760{wg%|H@^Sbyy@qh!Y z0r(ElJTJgdQ6WG801#7$J5%5N_(K3;X3T>=5*K=ArFNJw;0Sh;ZUQlX2Jnyoy-%D# zx(?l-0!58p36X@q?gA$fK>gxy=FH4QQO2r#QwARofgpbt0iX*Ynm{xRvgvR09RlfG8lSxnB{qoqzxK0%_r2j|v@i%19x*!2kKI2?b?K zEc<`Id^y~=2k-UpC9%Yvw4Xok1K_Uk3eHm!x4-&_9EcSQ z{s9&}(JR3k{`G|O2FHOH(XRu8AFJGZW^7fFV^4T>t0)CT8G{yqy8F?w{ayBmND`u1 TzOFBP2EdwlM?V62`ac2PP2C2i delta 984 zcmV;}11J2{3G4@d000012`~Tv0YRGJ8oULOe+2`vAW{?*fC3O0FAzS((s(cTgnv{3 z36Tt?VHJrbY+`%>z)%uQ?DkBGz8-;d<4bN~DFuWz4oDFPA>kqhP(V1jcmiYq7t0Ma z2nlV&ibZQ0+a_@*Q$ztV2{m{VEeZ+Ub5xF^#cwcpsxYg6Gb)hal+|zm0supc3f_bA zbO#F#iVrC0MKe0q6r!UU2Y+H0eqm*Khsk z0CI;Mac)I_BuFmF9{@uM+j;(j6RVS=m=t&?H~`4Lz~AY7l*f1g1`wc-svI_w7SOwL zefxmHL93NUR`SqoZiFr)I+b`8vSDFr!T%Q{|O@`@m{wga8S-@;qnnr{Js=FCd9& zqY9wYzyJ^r52OMk(aAXYjRAgBcmy1f0RmdVRZ;#-7<@hif&5qofGmP(1%d%WU*&)+ZpFCOW&eOfVoN7@rltSx z;cS&R_fOZ9qa)dnp80qR66Rkbp?e1-|8L$LVPPsq0GbnoKt$gl>iz&5%Gu;Bs(cG| z%(5PTML%7M90jq?dwF@eEv~X0{^S?)skO z(&)zU^2--rL_y1)qqWlJpcf4_Wl^{_wR_uz)c zo2H!#e(VLoRPgYSQTN4betif!gnR&gwHTF8z5P(*q6J5<0Q(;3$|G<8Qe(h^Zdw8$ zJt*jjSHb=BKsqkmO-@G5e*YLA4-#fj5P}(l5^y$~evHTUb=HW48gf~Fq!<4~Y=JcJ Gi~@l@&93tR diff --git a/samples/h264SampleFrames/frame-0759.h264 b/samples/h264SampleFrames/frame-0759.h264 index edbfcec65a8a6e8cbca5879bbe35ac45767b0801..e451553d8af8c1e9a06aaee4daca91d6e6472de6 100644 GIT binary patch delta 1603 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 C#fC8e diff --git a/samples/h264SampleFrames/frame-0760.h264 b/samples/h264SampleFrames/frame-0760.h264 index cec308350d9106c894c1854c8187cbb805316956..af80f986cde1a94617fa3d7b6b14e67e4b585407 100644 GIT binary patch delta 1185 zcmV;S1YY~S2fPV?000012`~Tv0YRG}8oULMC{VE8@gR&>fCTkz=}pgo03aR#!8{0c z;h@sp*V0U(EIj}N%m4%gB6b=Pa6AAoQ;7~uAzNLR zg5d<35Gf7tz@BCT^FQwZ4S)bZ3;+ZI0Hjj7fZJW?6@LEk6h;976oE|n0xS`fcs~sk z04-L)a2zXt+BD{44n_fyxu>8HentQ=KXqW`i~wMoM(dFKzz|vl-cZxWNimYE74QH^ za1IQFc-IfHa>CyS`nyhK+5iC!kGu_Sa8m-Cs;3Edzyl;Gc5I^?_doz2vj7AP8-E)D zhc6MZ01yz}AO`?6CA?^s5!sNOtaC9&TY`Ga{RIGjx&|OM4EO*S6+z&NH3=)kL_p-W zXRwiha&JpYTYcaF2ng^7ECF04ar-(K>tP@eF}OGY0tHbp0n5Zi@4z$&6)QamiBuzA z?f^l7T++U6D5AXL&ENn80fb+xuk|Q!mudfSLxSGC4uzxEoH0HXy&)K7AfpiBUP&$t zuo>Zh?F=2CgohM5Ct_uY*awX}E=#|Z0G?C>p`#|cU)DBN2og}ieiaf#ys!^o0N>XD zCrc1P8G?00e`FJPF3J5+I<54jTJ`0m<4p7{QU8Ry48j5{QqV zpMU@$5CaEcG^{#TGM!rd_*4V)A^-+=K*5H8MnAttDmaGEP@xY|N1h=M{|CST2nPX& zt-lEs-ibdZ(H!v->-@<Vn;0kewJ1cWKaXcokcm4GpL z0LojF2`iL_`#?1SK&=rC`{x*FWHt5U2*Z-p93$N#iv&C13W6)b@^u;_ZoF@v4S)es zjOGdro&1I_K{0qD`v3z9wY&%`Sbqc4rdME@Ko;-dS`upbKk~F)VIO>RR8<(fB`gw05HSC(`C zkZrX_XlQ@PByv;JLZ>6t8nZ_99?!W{9+ZF{FdB0SMkgbg^ z?|J11Cjx1I{DiFF#DsdA{+IlN#ch!3;2I=j;&w%13(yY?5PDy$Fxm=1VUFeabR=inIFt1|0J delta 928 zcmV;R17G~S3B3n@000012`~Tv0YRG}8oULOe}aAlG2u+G@BlzSC{T_lBuNBMA~S4% z*M~JYzB*CKVyZX;a<;3P^{P+0&}LbH&7Xu-JGE;DBTR z5G8!*Bs%qn@%5l67zCXP)eKDM7GZE~d9xYC-D&!q0s!oP!R&jsfs6>MZ}0*|tTIod zKm-6=^en?fj{pEbJaf z2SjtaIJBUQ14ab}l+g>f8&1D?AOQ*l1w8))L_{8zhj~B+>M?j!XOI8{$v-e~1OQ+G z1jysA+d5=_29H4H_yEP>Aiy@{>;*4zkQ2kMY_J6K{=k8S!UN_HN-$agLkMA^DfqL- zLJ5EH+=GAs!ASs4P+ioD0BhhP6b9yj9f~CYkzu`#)x@K3>fc6aGvcZ5`mHy2fC5ku z0GdH30J=X#T8)o|MoAON?v2i;Nz zrRo4GI$!}~7ea~J_quee0097C7H$b0_J9B&C|><5o1zH z|9fy(7yxz*F2eY($OY?|i?|e{>-ea8!VB1gfcOL)a&Kkt26BHTpLh)80Ko}ms`<~~ z@4vwZpaAb600;yS2~zNQIv_*C;DjLKmBkK8hd7eR3hU*kfF|gZOam={vfic#;Q$5~ zr8mo9x}_7?H}$&xw;&K-?C`T~pqm9?P!RxT-`JDzKK^(n9nR2FNw%7+i|JdpkMrjM z0f+^ehJXRc1N;0Gfk1o)BvnS^N5h{_Hql3R_>90_W^1rn10b zp7;sc6$g7G00L@&3w?usAOH_g9;^ZMDx_3e5KphXqREp@k_RXCu8aWGn) zqtb{lNEVV@fxYXer$6#4TyTy>xY0Ow?4VKwD-tXj*@6vmVwA6&OaLGPC&9%B2foyz zA{0wc|M_^qxD!kNW;Ga5JF z_+bJFsc-DIVHso<6jXu@G*DZ1D+M|CZEse;278o Cx{v7q diff --git a/samples/h264SampleFrames/frame-0761.h264 b/samples/h264SampleFrames/frame-0761.h264 index ceb0d9bbeb2efca21c66383d4eac51e35b259c99..6fd4cea944c35a850842a9beda2f3f76584812ac 100644 GIT binary patch delta 1530 zcmVW2d`{M7ln}7|L#Bn0097kiQvqjA~CB4 z6K7k+`JCb*t36)e#{gEP1dV`S@kEkv&>VmK7^chN07wyk3tlAY zkMrOQE3wOP00C$Kqr@2{db&QB#X{1=gho$C*U-8prHLRE~;94r5~gcl{CFyMsJ+4?P4rR4!Mh5{52V+0L72fzRb z0D;9I+I<$iiR1;s^j`1)8-NpnROUc}tK?K?+@4qf2m$~AfN*VTVKreFcu7H&A#ef& z0IM!8y?J3y1>leH0EGcH<^lnVQ-A=000jYoTTy@LBIhp zC_R|Va3E?bWbggq2;+ny$BHEJ<_Z=70R)i4^AG{SMl%W8NZ3im|M$JN*_&hPtHc60 z1PC2}P(f>rj!o!$ff#rICT)$>t7^LXI<@|2Ve>wTMig)brT_u}vUmmn3J>8AY)ie^ z4=&(9AQ3|s0!2OO45$JhQ>{Dcz^V5@hsVDFLIMd`kad&Fi!^o}kkVG6ZN`3;dOVD_Lp@@W#(ddHy)a<%snW6wN2^%1i9phwZ znZgLTE0`wHL0(S3^7XC%XaIp|*yF+~U1vGp+rR;h>F~|M!Cd9spZ)0N{{<$dQ-6jz3<&GS2cTw4Tn-80{}n*1P9I?;E{d(HQdSr&;$Yo9AKv?q34PpZwqj29>}NEy_;Fx93=}9Jz&3t*9hY00Y6AV3;69tXmzio^INc z*PcLU_5$Nv)f89#>hJ)<)P(N8+y7bO*s`Jx%-#?832qnwSje|l{4z~b|9AKT9e|Sz z1TudL5a^L9s(b(~u`Ev`sNDa+0haF7&)xn2*QJ&oi~iaq=p%rA@8U8(qY6;{`@o0t z_%#BSFhJ4_;phWp2u&&YP(bn{ndZPwjE#x%9UYJ|`C1n(l6y~e|0HF5N?PNe0ETfH zSr7q&9-rO>!^B?`C(g*LQmZ=t)2WnaP}_#@qId#m6M_zWW1j gyH_lHBljy6RHyU&87NyP*TeV|PYDL%JV)Ri*b*d_^8f$< delta 1440 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 b9uqc}HBsjOBMP@Yf&Hxifi(VqKLACL26u!@ delta 1097 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⁢2D*>}_)VyZ@JRxw&jW-84yt7W8Gr^52`z5@tr#HS0~Zzi5t)e& z?w9s}AOivr0PHn%U>_F4eO6F0fB=I{02B-W1;9DlaqixK48Wj43V}}ywj8C2g@NRU zm0$oMu;2#IQ>)gtJjwxBrGKUT+k^eN_j43vtMD`KF8v#EjUlG{C%qm=TqqoCcr}k()gz`eXn6;CGW`)1Tj;fCD*% z@>siiL_Ghy(f|Pfpb?cTpk8ZR`^}AOJ2*OF%q%$RV9Am)F(Rk|LRKpw#Pq3ZTKoZw zI1703aLycQBFu&F)plKp+4?#2j;f zPW0x$GMq7QAozd@V08j%Vg-av12uxjfB}F4e-sV_;SM>`@tQUh3$pk!8WjqJfjI*s zJ_c|&3m(D5^pP379Hj?994@<^b^pHk0Sp_PFTz6z`0@S7DbFB6Wg{29_WS@G00aQQ z7=XI&B7Qa_Q0dO!|NH;}05gIHMJ{B24!jZ3fZcV7I>0Pta;v+%@Bp!p6Qo(x%>rE$ zmA>1Ag-UR8WRNwH73z2aWB>vHL4k9DD{N@rbAa5D!v>UsfB=9uBN%`OKs16a|I+v` z5Cky5Bnk(P6#1|aGe~O!bemo2B0Mkv5Csl+7Ajhfo5|diyj+SO~b~ zwqhfD0097j!YcIz=)rm>Cq*&v00;oU?lhs(w;R>JTpE5{8(1RV+j@v zh!22(#s~-MPP{FNpZSnPqw;`l7)QzgCPSBAFad>t+W<6EMVe{}QdEo70WAOl0OpYZ z2gY`~;J~2HedR>$b3riaQTyT@MX!J>is|L~j{SH7 z1$3yL>OcNl0wU$rQHI7n>4KtL1K->nz9fSyh~SQ?xM-$-d?+Gl8Hb=WR zTFpQIKa=4ECX?_42!CgVbty!S3PDW}-w!JCkKJGc!KOz!40?IM4TgBHb-{d0{~k<@ zFdj8P0fH0<3xDzmn)`kFS;+%Hijf_E>ET}E0@%L5|55Q%0YnK9kt}~`m4EHk9V><4 zs*gBHx$$uRs*pD~Nq0lPFa}CzH|iVy=pryaHx{P%#N1z`@BzP*aRxM#p9LO&XY|Af z5IiaNF}%zyC65vB&xQxDsr}%z){q8*C|g_s6GljF)Q--kzSB?q#{ibE<^K>M;swEh zES^b&fBSfBf~0^2SShW3fYC6D0ZJ_elv!O|b|Nt%?8mF!6mMmBZ(pALoU0laU4#lWzt#lb;0#1@a$& FC)l~|yH@}J diff --git a/samples/h264SampleFrames/frame-0765.h264 b/samples/h264SampleFrames/frame-0765.h264 index d9a3994aee9ac9d60b1400b120e716a2fcba78f0..d4a95dd7ba2fe9ef619cd7e921afcf327386121e 100644 GIT binary patch delta 1231 zcmV;=1Tg!m3789i000012`~Tv0YRI<8oULOe-IJGf-?k|5C9+m2nc{EKS7TW9|Tu% zkxR1%FlYb@FaQt~h`ay<1wo;qGzB%(t>7?b3v95O^w=Rx=)d)n_#uYpV5JPuU;u(* zpt3}={6e;FE&w1@;jBSV#ug)3A8B9=0AqzM0#-%+I&DXPv)}*-0YC>C1m97Qsw#mB zt2h~M;8m+C2ml!{-~aD35C&Dyq2x}EkQo~l7yaV^7}3B};8M$APfbGj9smpuArp$I zJ8SchcrBMgoW`MHZJ7wAFskIat_*Emeu98q0}vX9d;kT1$51R6O0h+`ii%zs&-N1#3zK?k zQeF3e03a{G3}^w|DR8~s4tBSbidftn009GNm;fo*jJ@~Jj75d zlZAqRj0v~7Vwf3i2&<={wOHOxA*AnM-bSx3J~=ac$Sj?@O%IO zfN&UU+whTH=#%no5zieizs!^t2W9U1_#ObGCjx@9M~;*gnuFj0vx?IMgek{mu_a~y z)&Rxe11WAyB(72$?EusP0<=Uo@7!UbkmuKoBMwVYaE^3}EIt1KR1sbmlc>=Xb>n;McZR`4LbW&96PnQek)09(I-sY$Eg|Hc3ZOaS}@c%GS1 zGhqz`-K9X<$@X6usF4d==QDQ#h1Xe?Qy%xR4(v90WgG%gpYDD*wnuuXu`mKaEh{$&_zXx+LYqOL z;Ac~fZHHcwYC4c48CRgYre1Vxi@1P%kh6bzwd1c3km delta 1005 zcmVIo&JFqQ; zJ4hJ7nx_8%C^~~A+B5(_1;0kjG)V9O1OrDCfC?<#(*$NLL73X)$zTEi&RBy)h$6cP z-vR~T761VNK$RON4v1%Vac4sq25Jc9!51VO4zBQk1SmKu=eQaoAoR35$^bB1#qm*= zKmZdYKg=9|0RR{PK`=P`w9cCWqwqN(02sU^7zWgxfTk`o0(f;zmH?h#*bp$dP*ed1 z5aUOu;?5TdCHJFJE&u}scmi^Q?x0WuNC1dX8=e9?6l#zc5kakPmBgcMw?=3);<@ko zi=(f>7(fEygan$W%;8``>*vB4KNw$uONbQ6=#{pAm%y|L;7BlK2pQl2!wuu~wB~U6 z7$Q@~HlJoVX)OP}ic$0dHcB7b z$MJ741^{IT2+w4lvw>pAH24Q_5yF^A4%!UkN+ebiIe-9w3(x?790HGQ?6=WN(?|Qj z0sw%m3nb};GWNX#60%SP-2eaqK>%(h@CL7wS_2q=VSq9UZn4MJKp25_2wLw?hy6dG z$m@qlC|G3^OfSIx#K49I0dovTY&FnfTOz|K{KsM1dhH+bd>l+?kP^YQOIJ0Qf50Wc z0003&02M-S0BZ6;f(8LWC<3ai84gV~2I5+yhB`_GrpR6-Z=P)Gp&A%PCNsO+yNCY^ z^Op}U{)k3E1-+L8V5;pNsp9b>Fo}&Zby}JGf$_WmGUkjr5xTG7&q!WW2poAS0Kbzl z1T264O%hOz#P%RFJt44%SA;wsXKrdAOTf@qCP%4JOx?hUU&*5Vk9_WsFJq{S0&Ac2 zaG<|IZ6JLi_x!}dfPkfTc9=&1i0-iO8jLU$mX%{Oktx997?Dr_xE6p9a^SZqZU8Jl z%$JuBk-`*Bob#%XK}YR6ULA+Z$^wRiqb?IL$YCfvz7L47Hb@;SeJ}UH&mWV41r(EC b1vZlp1qTEn{6~nBVFfgk4+S3t`~g6~y*QYF diff --git a/samples/h264SampleFrames/frame-0766.h264 b/samples/h264SampleFrames/frame-0766.h264 index 4d1c9ab9d281e176352e0b7cd4851f423fc3180e..2757eb79c94a3f9007ca4f1914c39b85a6206ffb 100644 GIT binary patch delta 1823 zcmV+)2jKXt42BPX000012`~Tv0YRJK8oUL7PAC8n00aVn4huAB(X(dFnlxzHvtR$f z2a&)4Kv~NG0RYfG3=Kqaf7R)`<04{taaaImHr|qLIDk$NNHWtaZ88xCwlJOh@)oED z01~9dVvEvcLyZLqb);&6+9$6O%TM^QPN9gWH1H+Wv67sd`{7L zKNP38^8JKE1vvx^`~n1egL?c8REvaS$NvYw0NOSrf1-Nu0e~q<6z)oB>3u22?4NVR z`}p?+4h2Mii`K^Nb06oxA{ERHmf!#a*a1hJ5K8rQeJ_fIrHKfP;CqGAT3D>}!4Lom zxO`VNmIzqGlE84e|9y0B}%XV_GBk23a(2M;9=>BL(+Jrt7a4Z z_k?EBf6M0)2%cgL`_YlGpCQ<+f!G)oF;JDqWPj=~s{B9i&;;l-H;MoP0YGXf2$6rg zjsQgki&GLJt^E)502)w2Z<6YJLU0_>k{%0xg4I_y}$r4p5W$3 z+Rs9IfCrrb<^SNr@ge|(Wip_^u0jfI?lTbIdP5(1q7D3EjR;P>IzgjS7yI!r0lon0 z{sVx3VN5@b76X>%00IcW03gJj009Lc2dw+}pa2jA+h71-p`vJ;6*>p108uo50RTuk zqrtk~|GWrYO&E>J=db`UsawE;^Ox{F zN@cL@6DS9}_!5+wzVUzo(*QpK9w(+$4IW@w;mhJx-H4K4Gyyyhe}cS9@ajf8FG5ioDE+L62?qI&XkjH|mv# ze!K`us8`Gx9sdmDo&yzt!}Y7cl>h(%K>!s(Z-8p@3G@UII0*=Z0?-5>0Ec)B2-c?u z?8-t9=lg=`=?4fZm-+FYzabA@ofu3|4nS|BX3(56N%<2C=m;QG5;znHg@6T@yFhC+ zpap`1{tO)Cz%<}Xv-98s^5-21)z|<&b8#6E4aRQKryWgvufe5*IOL!6-XD`;1s;=d z1rJ-~JTJl`NFxD8cNa*pGhYfJ%TV+%K&%JKbEf9K6YMJh5MH-ZO=kF1_>w<3D8Lv< z`Y@XRa1tKRFzSoPB=`Ty20|ve$%la|FAy(7>%1ZnI_2>6y`Xz(=ZTZ>1vrx*1__fN N1__fN1_uLxEf~ra0A~OI delta 1476 zcmV;#1v~nN533A+000012`~Tv0YRJK8oUL7PCx)a1PW<}7-^=OVTKxMpZ~xDoB#p= zpL75L0B{lv8%9Pon<966FdSWQga8}@0A-K?r`9m7z&Pjz=8@y@04e|i0)Ph%N(qtR zqwH69W8fGef=IH!vu-<6*#QRr0SM?Jp#1VU@Y=k$$;P99RkS~78^3q}K)ayRpy&h~(zWwEDO@N|WsLIo+}O=|b}ZU+TUR^U2RW2}bSka!sm02Lg*9r6b@ zGxFGf2oMSp7*)X-Q{aFAKtMeh`)n)%X@3wO!3>4^<)(}Q0R1`$f7a{5QVR%L6BI6j z2!^b}?T|kNpa38UCeD%yjcs7lknk6PxABDfIG)lyk8iw~UzzynM}kcGiCjT4FY53{ zNs`6j1Q=kB-9=R&dZA)A_y<4*M@#@LV(3wSJ6`sL2nZSLDd~w%QRDaTv;YACKq*o? zBQfk*;j31kU4wzcFaWF=U4`*IkPFi>CjsNiFdr1<;8i5zEfQHFIycAaNda-XHR|DQKx0L4I;WmHQ!8GXRk)FyaXHpB5S4jqXAfcN{l4RH) zfS@;Xfo{`z<(6qb{>UkUaUP;o*QM|=juVB%1;UU8jY9f;BJ`mgw!%Q4fDAc{c5$=? z4>sMRjXYrxr!EoPvV96j5kmk002Y0J0YTT^TGbH`-XkCZFVrhNct-aE!U6We>y|7b zyF_n&lsix>GIb4j(tu;C^Tg9Uf}eK>n$##?Kw^bRz5iHk%zfGmDmOM9#c^YOFW+zk zG0rlfNP^_k&;5b8b*`MAM41o$`@k9U1kA{Oy?96XF+BiH&;S4dK>%(h_y(_&Wd#p^ ztHJ0P3?l&%z60;}0BE2Qa?pmc>#Qaq9f6=&sA6w{ zQxsJh2U*B?SA;~6NAPsK>KI(v!k*>7q3B?N zS{jt+WV}hd=fPAMcuK)l*5U3pev^ns9QUlsw*aH9o0*MLan*eT- zK_oekLmn6#EddRL(ZgW9pXhSL7GJomDguZQFDzLgKtO#yiX{nr7=nOO!H_Bf6e;upg#mB=`?mmm6!*2T zo9F}tjN$=f z*bD@R(LvCaKL-XN01!C<0R!I+m5-xd7{qply;1qvY5%Er<3mk7L(5dHj~c-2n75AXuua!;nV;C delta 909 zcmV;819JS03W*4R000012`~Tv0YRDo8oULQ;7JLD0GX_P>H2OnbAdkg_IiLI08UUj zuY?F~?;!d_W$u#SQ#nK%Gt00T#Ihl#d^GK<## z#sC0=2mlB~004wo08uj>yD$sP0*Le-7w};sMyS2-0(pN!co2k0c0j1Sg9b7jhFuLkha!7!x!G7zWnY_{p676oJct6Lgax10R3V zbbt#dGsIOg@DaOY@J;`>h~`ikk)SBfBVZcYE^ zyh!2V2z4eP69}*1Dv0DBumUC1Q4>PI8*A9iCEOhqtx&Xi|L`Qh0003&02Mz%XaH*R ziTDyg&>$%SHvZfFT)qdU6=@I#M=b-?H@UcuJOBvT7+@I3Z(&1!umnR+18hYDQ`^h! jEM)-wL)Vj$1R|551PTQHQ^L8EzywK>1qlWIegL#!sG5MC diff --git a/samples/h264SampleFrames/frame-0768.h264 b/samples/h264SampleFrames/frame-0768.h264 index 475579700e3e57398ecf520246d0ffe224376524..8bbfbddf6615947313f0aee8cd0175172670d7b8 100644 GIT binary patch delta 1298 zcmV+t1?~Fe2$~9i000012`~Tv0YRD|8oULOfAEM1fk93H4jeK7AS5&VJ`R%}+1WS% z8lq!FDv+JUN1y`-8LBcP-0T}s?khYI{K;d0905sB;C$ogVzS!v0)~54c}H^iC_)$% zVB`{vnm}T?ZvX&53;-x9hlH6;?)m~5WYU4F0*K%MTlqtO#zf`)z)%1X11ul_2m%id z-86mYp)@ZB6oW-FsbaoxPvt5;)BpkkKw5Qx1&{QZxC4Ul3|s!>4jdp3pfrPvix&Vq{L1dzTltwoYXd3|-CIlg$00aOC{|T8p z3(~X#{K0;lg8aV#U=)QI3mHjee)QX4;pVVT0PSR;od7R&?*ITm0e}L6*KC;3;U646 zM<1U&1QZDpMz!bJ764CZ08A`rpf#x3SBn4yKmZU9NB|u+15k^py8sUV zcmQC30mRs6a~LAi!LsdgB#sKxH~;MDndkI9B~|;&^D-G7L~S6HEl3ZB zK)|X31Pca=%1Mfe?f>Awh1AvcB_~r-m-r`t@$t~$AAleP9RLAW+EotadpZlNyFf4; zK|vTZCEE1ip>$IygGUGB2%?bH z9%4uug3F-}U*N?-U_@jA#>FvQXYz|v+@Spc0Dw~r1!TKVbHF?+7Ty329Dw1%0UWe{ zb#SNv)@To1!QqZdp70W2h#ts86aVwTeX$4sfB_HT419cIhKTl?%*PM_(cl0G3y3LU zY=r7;y0Ys#bsq`-FgI|c0V}JPRbZGcaT}~eFxz`T03ZYa0t`|BHogz^8EF823n2#) zQmSA0Kl|{E00aU6ppziqgoWOjsa>`O3^)QEfRn)j8GkYY2p9mO2H`z)WnEtcBu-T*n&Y-8&Lf1VD+hys`z1Xv6LQyUvlFox^i4`jN)oB96-JS(Jj5EK+D+Ts50m@pqOfrcK=@XZ6D zYIQYl&@RI0H#)5?7tjGmprJ}jIlcdPfi&>1j(;FP4NOz{2d6cU`vJdP#WI8`|L%NL zi6fma;-!j=C(V)}iy%PLjM{eG30Q5;1$JFNZ~!F$4v;ovDEMbN*UkM9ONhV&*)K9w z-2eaf0NAVBxEchR`j?$|fB*miK>!s(Xn<<- I36ov~27A>U%K!iX delta 1117 zcmV-j1fu(z3gifX000012`~Tv0YRD|8oULOe+2`vAW{?*fCG>S6Qk^9CxYlaBl?d3 z0%SvSv5bWZmN7m6z;F^w?Rrd#{vLsG0kyW6N zFbD~4!-_>~8rvoFfj}k5$pNj^Th<00aPC1b`se00;;9c}&10{_qU| zpm9x+2|Q?jz%95Yl24)d0iY^$QDLMpp%`qy#Y+GIhZqv#$a22G_PM5bfB=9F7gpo& zDPu3!F#rm{|KJ4y0ba8fs?lJv;Kn`%a1cm8{cEu^P)>iCOKZb80Heg%voW$lLPD1T zbF#N-dGB|nUs^-cYPaNw?Y&qTC;dLu`^;t_lixr8OAy4u(*W7Z+h z{a@yrBSEpkCpqfij8Fm=aRWkE2`#5lqyLjV#`qv{4LU3#y+U?Jwflv1X?zli4}`&x zBM=!G@CE<^0Pdg|p=M%eNLv2dECwzx;O?`kNcF+$-vEIQs2D(yvaOI4HsWv{MS+y_ zNHCv&|8NZ8OgvM?Obvun+m}#(?f?Kl6j97BnxLuo1-FARumjKiz#yPGE(;Kmo-3$! zMj^%C3}FhF{|3H9|KANT+Q0wC;gE@N%qC?+Wrk0X%L=wR?mg2MTU3RkKnnSczu zF@dNZt+Xh3Rf)ihWum~v19|B6lMDOJ-~b3l1cKpUIGCD6k9%coR{O*Og#ZBngs^Bj zbbbctAt6~8_J9B&2lxSi7y=Gv)V(N`!Lj|wfFZ;H4iX^w(6Qh*uK{ELo1l|^0~voY ze*#z|iL9)!-(c6U*RF1B9$9&M+we z6)P@%TmApcU;-1gwF~KB3|N_nOE;hZM1^tA9;ZrPfRTU%mr4MBF?1W9Qn!!j0He@Qr!}1E>AZihz?yhZ z!bAuGDT{w59~?@)0l!?u5keII_dU7MBWh`X5FoKpg!wZO40w+T#$30J36BPK6rJF} z03c8R>jP#@h%=n%=Khd}5r7A>USz51|Nra*fi1bf&?Qea(I?!NAfB*miK>!UELTG?$^9k`jCxAAXeV5r( diff --git a/samples/h264SampleFrames/frame-0769.h264 b/samples/h264SampleFrames/frame-0769.h264 index f506e0aa32a8145f48fa18b3fc063fe7d8102ee2..27abdd123eb089f3bf71813edac60ca946779773 100644 GIT binary patch delta 1365 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 s{U;sfWk diff --git a/samples/h264SampleFrames/frame-0771.h264 b/samples/h264SampleFrames/frame-0771.h264 index 329d83ad7b8c665f770709f39575dadb43cc1a26..d1381281ec2525731ca1f6e44cb0f5961c986d0c 100644 GIT binary patch delta 1791 zcmVT^=7l9Vr z1h6~`U2Wl;*Xg_BrCmiRMgR^tL;-@w`-h=YBU;+mcnk`H8z2gtWm3%tS{U{s8P~2W zA+Lat01yckLJkZwvlNz!?72VMFv5wdZs+l@Fq7>-03aBD3rw&BMfgO#0^&d{@B79H zT*gpt6fX=U4l@6*+u63q$T(4lYLUg*-r4Q|LFmwhSx@=|vQkRR{|AdPN+in!|%$b0|{ISF&^rFh7aDxdw} z20#M{UU0!}q%T{7r~a@300dl3mRJn56*o>!00|d>q8;@w>ig8R2t7`c^*UEk+C_r^ zd?@=201l^s3`t?03a|<$-``JE}J|i%_ss00O;BS4uG9>LilX6rq_TBqHZ)x zWv+_hL7ZZsU?>2f2LzG-S~SSQ#y27V?iYmTIjIFaUe{xW0VDuyY(yG>^0(*Q0hK@$ z1(Aj{O_xIjn}2Wv036WYutQp46nw$p0EfJP)G6U;1_0mT02C6JlRPgFylN+f>&oHa z00;nx61R2Z19_}n3Q;e>?eiu>h^XaR|Cy!pK=g0mDgYfp7lKM*QfcAwfc#JZCjbU{ zU=DYU0`HAdbRUf{01yR}z%T$%BZNJ(EcakMyMX|JO$=NL6!)Mqpa^|Vyhqc4Q>Q?G zhsU@83_*9~P%CD6X(ZR{cat$xb#l6|N&3C-U~asipdcLXeMXC!AfzZ(Y@rQo!PlS> z(m6yPCcpqdGhF~U0U<48M4*pW7}aHgz`Qp=ELZPLQ*;dk07yJI0s;cKd+U7U5eE#C zo`AGc^d2B6Vj(0ndLX~8J3bjBG9Uwg0Fj`Q58dNr(q{-F;I3etMJ0JT|H;p_=m3Fe z*yBf3y3cFBw}1m1*c7X0Z(@22*sz!|^hkh&RVxe`$^aYxych`Z0^6tu1cVkujJ@=6 z`t~1dU-2*kI1aC%a3DO69>j^*I2^zLK;Qrb6gNNsK1srf=?w{stkZj7N^GIo(E?|M&n9Lo0|W$11VJD=0AYA|itWtT)p)$S^{)PYEnK zlMhNA|F_oFH=qC*1v{)YiB-mbj3-&Y1=EH(Zs}_9M)q=BaQ*a=Y+lq3F-}l)fzxhwi)11+rR*S5Dx+sB9P#l z+7fx$#HQ)@+WpW2Ux)@0QJbJ$%pf|K6#&6I^NaogfS?2r6F6^20=DqCQez+g*KEV| zuf|reIdTewTF}u@ z4$#Xe*l^W~M(@6D+VzSrKv!5566YX-Kkr{)7o} zglZKp>rrqCcY0$I-_rfw;KIXa^2QHWxI7N>OD7*c(cn!yFYI7jfC#TEe7)75PA2}J z+5gg#NBJ=6;A4((97si&DdEs80R@2yrGvo~m!@R^1Ux{ML*EmB3x{4PC<_#7l3g?P zfV}E9yMO>cj7N?|V`~aEcVqqAiC!s(Y5;2R2IKSi7eD|2 literal 1453 zcmV;e1ycF|0003AFaQ7nL7IRXyaj+y00cH>cV>5HcXt2y0QLZ6I0P&p?g$w<`L5Ad zK$(aMP*4CI00<#qX&g%wNC2`RFF%V81j|E$dtB8cy<#`E1^};W(iV*2UKlmt00;mc z0l*XTM?p3Zh#3Rn-~*4CJXIJ)nUzRzN@_g706;+q0KhLcUg(Px(HMiwPE!v@v(!G= zUfciz0s?U46uC{XG>n$r>{)xW+ADRE8%5Abi|Rf@mw2pATt3eeDI^{Y4#kmxbB)cU102vGbP&Chs z9$47gm&6~AHeW%QSa~Cccwm4yq<$bn^PxVaRivPPU_k(G<=loXv&jkNl)p#-v^8Y! zIwGIHs{%rfAvJuYLW?Kwac1lg0KgOq(K?i-91ZvwC`t!=Jgg#GZ86gw!vGgHLW*9@ z?t9v8n3zRhIYDO|9K{*3@G_UfQGu{918^tUS-+&LG2IXSa=O7mup3oF5 zwlwQL4&YJ@K&3oEgVpcw+ztwyt-y4s$5{=vAn-CA04h0rJLC>*XXUUEAQU1ntAa46 z!2ke&fO;|Z*jNPKD7*j`5r?=auq-{b`H9oMWM(BpnOI&@`W(by)1pmncFEw(3}AF; zU0t+i;x^y_1O!A90t+RrE)bHIfWXi}7yt$U7z{9(fFubJ>EqCOWuNUBI2FMQQ46?= z?(f(E@(#ui^Pdu5+y7u-3>YBj>gvxzi>@m(QNjQdfCvfjnIyMG$}otX`+xut3kQ&D zj*Xzwotq4M=~$nV_csgYJ#c00<)h0D!Dafno210W!^@U^p_hkjlVA3;+=XP-dwFhB8z_)QnU3 z1RRh70$Rc3Sp}&!a>_IZ>JUXlC|8zp$}o_BqyPd2A~M=)05!<2TvKKPAwZ8feUxn{ zJ74ASF@=QTaRG6V2O5R+`bFs?Icbq^9apcv|lVM?o@a;(stV3bn(Qg-MkE z-@F4pLA$COuU--U3;{Pl0003&0B$Cr2Co2kFaQ7nK>#_4r~#|MGY~9+z{98p02oJ! zO|+VhKY+3*71xsgfn*K*fw5 zBFqr*=oSEi$fZ)^AQ4G_^AZ3d;smN4#KPg%LV|#SW~n5)W9Nd?sk#sU|J_C{Tn!=$ zJX>7QvhW(n+fD@y~--vkW3@J*Zc{mg=k0d90xoA00BV&6+&tN HYVZc*Rqki@ diff --git a/samples/h264SampleFrames/frame-0772.h264 b/samples/h264SampleFrames/frame-0772.h264 index b6c0bfaeb9e8bbbac4c8fd8e0a5202487a3ba3aa..212e11111ad41006afb983183b4c77449b260b8e 100644 GIT binary patch delta 1006 zcmVjJTh1SkU%guqYM?bT=5!w*&x6Hh3dD~80P`t5D4~v@qTAGh-%MQh8Yf2>;F?w zAoU_k)QMe3(s4(PQ`j4hfDE2sG>S9;EYg6=JOsWhX`v~J2fzSEBvO@(*-Grs-~ccW zpoCME8se=GFcVkcs0M&8S4#*RH38fp1|sfFi=%czz+Zp2Z8yZ zK&VNVm;&H`9AMG;(@BFOu{>KF%#$%U%013M$Odo#aB6vmHX@BNS08vGh!oOZBw<2A zohVoUcfbIM1q0oTy8?m`@jE~GKlqzwY{OS|3}ZL|yk!VLtB`1uO&hcTfI|a}V8AZ$ zlEa2${cQArzP+#bm;f?>D4GDkBpFQy!&Q*xBme?`2;cx9$JhV@3ZM^&&v+(u7yt+n zfB=C1VXy#*Yv=j_kl{dh*{KV-0VPwQPIs=VD zG+F>Xh7F9e01gfdX%G!KLWD#{DJnOA-T)vlQKMY50*I7(Ra;aTVv67Ye=thnfWbpf zCCF5$(5R?h5HRorJCiE{A%9}CdMUI3ZOo$rMI%kIhSCJntk5Wd;8`A20yyk9$Z-HF zAO!R&TAJVUPSC?B2zfF9Qsb@us__2=x91oMai(5C4}%SJD+q}wo(N5V8efO@3L?(* z1k=Xs3?Oz2ga-v7E(h8lgidV0)I$$Xfl4@tZhGf{!+;Eo!GdJilz*!4Y{CsNF@yem zQ~(KpN{~yz=pO(;HP|8O`XUwie-IK4=N=TxsK#_+#cj3;wLJ%vXTNuRJ(1zZxA);( zjSv?)?Y!6kKmb4iKs35o6Hf~2E<#iub^FKz~k!3^YH!t0@CfV(_aYn5vJ2xOf29Xj#<}_rRm3647v9#RP;F zI9C8T%OKT*TYxTE1jHyPwcdP7f9Y3%1F}t;N_~I(13ul;e7)cL_b*ZcCFsQzZJ&St z|F9EJ3iwE$0W&f*89E&ZREJ_hCWskO-~!5^1_6Q#|K?}_v?l@>b~=CWXhxJcYNgMA c$^TT2|9|{MXkZg)0003&02M-NfNJmt6dDc>1z@-+G5`&&v@I3Y8GHf*h&;Y)$l%#cC`6wC2)qt$c>sd~yEV0E|F{m6 z00b8XN`M1k#8%~AqAY*z0071SSum13n2m&(%Cy|X4}rXY5d$zNP+-iL2gQuw&Ll5% z_uha30D@&1wg<>wn%W7(^67n zu#hVd6B*zP0f12T5a2R_3|`>z{!4%Z;9ym&|AV8VJtnB|Y-<1r018CWKqUc4+wZ&< zpkP4eEOo6>;)&St;R=!%i5}4L8GgkIxA0(W;4Scf+k%Q;orFiUqQ{IR01B0%PZ;oa zyIp4U>Y`QJb4RO9aosU;RFBz3PMVbg^2?w;3=WF1_EY)LBJ};)T8H7P&fgbfD?3+ zIRYVnZJXgvumI5Pr*TNbzqoBMN%jU1ISVC(rExDO3$ibS0Bzyusg`CzBdQo|Me()r zz^CLZDO895u7TSq0m_|T=P#*A{MByy??8$_L(*$$*;~li$$LtlKmYyUV#Q9@Om6%CUe&1qHR#6_ZD-&A{PN>R z{~jC(r-gUq;|T&fnXo_p5A3MX11cOc09kkefN+Da`JrHmfRbW6r~ixajXVVlT)W=q Z#;N)LJZNAOXaE2KK>!s(YJh6+2IC+ay!ikC diff --git a/samples/h264SampleFrames/frame-0773.h264 b/samples/h264SampleFrames/frame-0773.h264 index cb6aac2a7b413c035541602c8e4dab9df90b92dd..372c87b6b6a48d13ab59367a8852e62eab3d2a87 100644 GIT binary patch delta 1309 zcmV+&1>*XY39br%000012`~Tv0YRF;8oULOfAEM1fk93H4jeK7AS5&VJ`R%}+1WS% z6DcvKbs;O9o`4J#W~j)IbFOh$xUBGt^h=xo;0!{41Lt1j0f}#UfkQp2yrY@79Zlpb zL{Inz0;tBw0o9EvY2anit%Qy)-qUjxeSshVAR0Rc3J^PgyERsh?vNkg1kOT?)Rg{F zELyuz00;^Jan=A5KhlQa4GVz(zwbchI6$siI?JEy{`T8uZI7y`d;lO?5>b~|M}YQ> zOWc3%PyiSJQC72@8KxygTK>{wttg-m15Fu;(Z7B6faj*HU>+rm0(-=!LP}7200Jvt;0yp9P?b)l4&7s4dom7PwSWQx2xJTH z6yMx?t%<7eGn5leN%sMSvzWbl00UtFqdbaimOqaJ33MrRffWLx$werTZXnE+7GWoF zshEBM1Oo^3zh3M}iL`d@U%~hQWgBpjuA0hhhJty225uLG&HxwyD3fToTbgJH6EY+K2>aUbhv7PoAL2~tF{XR~0RVA>T>p>|CDnsSRE*HP z0097h5eMIqiiYstF+`r*?UNw#I$pmz%_e87!|Hbb<@;hOil!G3N*2x!h9iMc1qc=m z6_gVd6Wo8nfjGd$1VsA$0gxiL5r_gpSOING93aXBC-@=3Yqz<7-&5;qMq&6M48#MD(3$EG@}RFq zzJTR8K(1Ok%ZT-m1kMZvdr&eA?^l^*FelFfD`6O(0H|eXUr+X3H@Q2n002N-K}rl! zV1UF!lOEh6(Bup}U;_@{a1JNTR0g9Y7XS5xg*)}fW+m`{;{XR(1MnT9IA4IEnnI8O z03fFhbf^E{gunnmC<+NS4ERK0>6(?=V8ehR*pt5kB!6KZSJ&_00I~0|-4=a@$U*B) zhXG;}YCrd0!w@Zj;9NEc5o`-Jl6QCp+;&@2{{3yR01yE^;8E?an|;r090fAyp8?N> zKi|pZ!>7SbC7*!Un+E8d!EulLz)n~gK-^()5qrSsgTQq#f_tYK{ptu0p~CmnbhaRs1 z3*C5;BXE!6S^~!tnx5Dn+VCcx71%L^Bpd~FHi2*qKmq)) zvjBjW+&H9Gv8}RSI1~b4!Wl3i8R7x}3>9EcxMwyrF9yAT^t~Ja3QGq3AE$iQ5CTx+0Tkt`dKF+If=Cl3@WB94 zNc=(lB6fWWqsX@400aSmz|jskCUV#)bjWVuM{vL_00IDRf#00aYmyry6he|QIg zpm9yU5_r*nfLm})B%ed@13*>ig2PDTLN48Tf|j5Gha3{($a22G_Q|h2Kmb4jh1I$I z30Twh%fJHAKllMaKvEWB)mkhTJQ&Bo&H@VuP}aLMH3aARgtt61fC@ZKi&Hx!BqS?v z7dinvzn~!E!APh8CWNK%jk>PifKCbs=X~_bN1`-;dip{yf-gDAS)^lL3gH(#gunk^ z?q)`Y!jQb@tAq%k1T?}0g)S3YPM=5rA0^=MK;jy7SVMYr>`!a=3h2`KB@!PAgCIsA zGBe-|00aTuKruqh#L$4X{j^#PT43N;S=jGf9JRj7)4B{jxUZ|F405P~@ z13)`lXi)H@6JZw1g0NPBy!3j>Wqrqh03Z@X9*Y6Q#8NDO%PV5H-#{>+03Z;iplCXH zeg^0vAz2?l01yNG0Kg0Z2Q+G4j7s3t{^US0!~hNwAolS>06e}Xc% zFZ(Y1+Y8|he8Hh0?c%oeghA+>)-zJj$i;F0xXGj z)zv<**mx9)vQhyLhA;1dXIMK9!Amv)%VDY~FkEB*FcX#r5H}cH1W#BN&^YDLMhne| zJAcyng1yk;fCJ-ce_Q+V14SE6e{p&#pZ`JCbX&c~#;>)m-zf0@(Bg@I_ka=V3w(R! z`Wh$5F4Vu&8s^s124i2hyl^mq*ht1O5HGfpl@GW<}h3mH8D_-`;%H9Oi!n+8<5)J^9vAnQVt$(J`7yt+XW#j+? zpwJ5JAJ~B=Vjz%C0a^BNG$;xu4e#K)U;rQ$7XTj3et+ST3Za^a@>^T+C6)aQ5Z}bW3mU3u z{(AJjqAab9HUKB?*fSfe0hO0f*SaEV6ZiJeq#+8Z}G;+hdwKNh9DG z$OKZ5VhNOm2AEnNhB6}3B!H?ZJ0xy-fB+zV00Iv{03m7s0s%>$AOOHT`-f3+fdInF z;0RN|3A{&tFjP+-;|n3E-~oET0EL1x3E`2R`_lNRshMLs_-g821_0m?%UQ`i-S7U0 z7NjTu2nDNe0@i!}_J|vX1()?MsRRlY(A|O$fItXo0P_qwh0E+sqp$tO00qD<>fGcH zgF7d28UO(S2f6?pZ)8JN|J)-2124A+wosDdD!=@H1l0_Q0*Io(5m*g-5))2tPe;E5 zcO9Li&@90%7mofgoy>9tW}ucaeGXqi^M$~KFycalzyJgSYB>O8(CeGmz##l53_zMk z8HBS`2)U*w8;zcW7RR>O9tFGt)&@oNbzKYtKp8_Z4H@d?(Fgr-2ny=}Vs4uHrNH1o zmTmuk|G<<`aR53Xp%eD~?tCOCEq|}A;07Q)5{QNq@_p_u!a8ek}9D%={_Q(yFm=xEG!neI+RagH1 z)4ZSlrkX}u7e(i}Oj(Lf1BTv}6Z~}`wg|MDL~{54*;ON)II;{$ljI?Q2vn`BOHOz& z0TtSITPNd4W${3b1;Icm3RLnMKtxPnAOP?M zexrbXRR#pdgOE2AXkz_;m%{;r5K-)4zz|Mh-NM$oBtElgm!E!M03aL60l^z6=zM!N zFC!{H4a@)p0ze%5%{Xp|N@Tfv^Y{VtgB48Vo@!5ENA3&_wj&wUrpj!(U;l7_AV^2D z*cmVH*lYj&IqQ>~|Js}eCp>)lzuMcNG;Hg8_1FBqV+2DuB9Gu35F5t#6r~<2{sRK$ zZv(X=?WiXYYy21hL#s2;vi;x#D0K0CMnI(Ag7@$YK_dG>JWm)y{dWcBM*xqiDeqKz z!ZYK9WAhtV-Z1=71pqO*O34IY6Zk{n%tT}3{`>#{fU6S#2AXLw4WyDK|GM*RZ`@y6 z*6}a`VR!%ufeVQU%&sr_MyMVD36YGBhcH2X#)&p3rSIfqBC?q1Q9Wv0I}jAyFaWkt z=xy{kmh5&9z!2<{V+0|8I^4TO-a0_vz#Yg5$O+Gajllo`l7J8SurGn&T-O}{Hh>yl z4Uz;##X900@$bw8>60-mL!*-h1n3$-_$$B_3!ti_R{04x3L@v@^v&Z}2ly~p~ zLQiO)6uw!X`d;_bfS2y@CLR&geF_Nx zmgh&K002)BfB--k0|xhm^^OR`4qdt$wm%s!*Wm=aTU(gn1tF?`TsQ@1Hd nS{aN+9|x;b-M~Z*2(sV35nOa}Dd#16VHgNC zUtbHVs#T}|`D=C@LE!VN4)?%HVa6SF*1{a!`$88U$13hd3QDuTV9mpUV!7lo|Gjb` zG(<8MU}UK@oC=Kg`axtz-^#?ihuR2$d-y-LwHqIOpa2_#druCe$|EvE9kJd+g-4dZ z|Lwt)GTO4j0p^NtcI>5~gWM>FJ*YV{PyPG=L5@xQ+&7#<{ONu?L`d*b#z5}VkA-^c8p%|Pe*3rpF$gXO*3R*doLrVb1I%d#r@*sglhT2b%l&)I1WGE%IE=q} zjQvm-R#H$Fh8jPAqv0>n&-?>~00&c6Km&rSrgueNeF12a*8}jyTg~E_FRGy7Z8_n~ z=9(}w5;KD%HUloN&oB5FkCEtCY6zcjFsRT>OUtO`V3sPj6Id@H!GbQs^MKR>G-a(! zTxb9Jz|31OWasa{Kn&&+WS1{qu}^;QL;zu&ly@U{t!jsfVKc$e9$_GZrGn-N$i#|Z z0nkdvA{@?962-5;3_;g_c4}! wW%fq)39)EVZDku{2V@C*UABMonp2S|+r6@(Er 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 RzyJUNK>!s(YyfKT2IG@9xpn{m diff --git a/samples/h264SampleFrames/frame-0776.h264 b/samples/h264SampleFrames/frame-0776.h264 index ff0b929f765e33ac523d75f0b564412616b5c85a..1989762b3b0ccda163f19bffef062046f5a30445 100644 GIT binary patch literal 6626 zcmeI0do)yg`@r`wV}=pqJ}xncOo(wg>l_<$J|o}7 zw^cpF0r%Kr-8e=#4~$|4v&ODAi*TJ!qzJVp3;d;Swl_$Ig-X5^PyWDp1KE-ezS+o4 zEi*majfZvSB< zlyE9N0#;iKUlh`CA5dUkbO4tM-XR|DC_LNan0ZopxL>Z-VlD2Blrxx?aApnLPN9Tb zhoKLgcQo6*S7s*ah0^umg;E?Sh(jX!@9&Ipt!8^djE6!gN8-+}ti7Feb7|i^iKl2X zZN>#M^PvwnEK1mVr=w$3oKpyt5d2H7z45Ar+y@To%7G!u(P==T2&)AwA!$PcdYH>r<-NCLr|O3n~_ve!O~Y4@;3%~>wP;-K4Hyd zl?C<8=G*uQRsh2y9X3Q$QT(B6tmbFKk5shR0hI; zb{+5#eyq>(wY;-Asy^^T1`DWE(yO;Hh=J~fsP}AyX_CS!arbmeN6qrPkr$ruZ#01= z0fB2_9ialQ1;j70uwRie4>^J*No6>_uzTeR4{=&kp5#lt(idrM}3XB37dGOKAmVg*+k2G7jzsP!*X#`{ocgxIDT7HqX{Yc}rJ3hZAx}OOg2+;P( zWp;W$O+7CAU=sqEz`vYU3gf?KQ0ipXYOtBFNM3d!xX{+Y!MLS3jacSs>m6g@(zZHH z>~_DJ3+_JtBSSY${cqpyyFWOyCUSV;CIMU)k+;5I?$}4)H}|nuyCWLF-Il>V8VJxo z1o08gX+5DjZa5jwu66M(WN6c(yI%N2I zlt{PC%FPY;K4)$Y`#c|>0OCjDA4YsoM0(@W_UErx2ULDpZd79njh-Tw#bae%vh*}e z^J@KPW;gl)*Q6LzEF>^mP%agIb@^BS|26Q1lL(X>pWS2+GZ z8zEOiANk*x3^k;4da+x(%3iRRs4u3f?|<*c;FIQxbmHA0r9ew?mJgocz*fk1x01Z) z?P7%>0t6Mf@w2h6so{lK6s$qZARbfjygf4dr{|ev|NJ)NJ(==)|HNAgvbA5zXHPuGyhX$KxM5eV zII2>-SWeW0(hUxdZaM|P>)LReaa*H}N_XFZH)igrxy;FVC12MW15J`pm8OsZA^;U( zi#fAV6mfE){888iQnUm_Tz%bRfZ&~aZ(~X;C_ouVkeTSE4+To6o#iSX1b)N5xDD88 z>FJ_Xps61}OuG8BPtRNF1Tl%-#SYEBx>043h$pzU%29plV-Vr)_FwztdzCEBX-Od+ zmi`{M!OA*>kH&#^zmULu*))fyWll8^lWHq7CVQQ7`wOjAxLkXlvrMYyG50J&H$YnE zQ04p!jEdK1nH$+V^n{7*rFoC3&+=YVg`)EoQy_Wt#x{z!%qD04k?MKjrEotl9G* zKEK#Yj|{gmC=u~j9^t}mNNibV*Wck8`7 zx;&3b7Cm_)T0r6h2U3%MlX#UgZY30SUgUJy)?n7Xa~+5B-Z-v5qXrV2-Mq@>1KOHgA}{+>fF z)ypDAjZgPIui&zKc|H1bE+Fsh80kg!;&WV;IxRUCJP?-4cP`Qwwkk(-43*v*mb8at z#oDtwi~Cli@vSaIc^)9i3}|U3C)1UW;&)?!Ov}!s`N(l1M+{JN5;pXXp?R~ah50~4 zspE|eAPek~wVU&@C&txEJzkWs8OeGgwJTLS8t%2p%WBIrC4)I7NB!RPW)kfvPeAE= zJ!%kakqG*VIIw!Hyre|IhGkLHb01?8MbxR+v_v+PbP32~?$Ecty2n;8+m>xQnHG_e zdkksabyx^ji`5H?duko1w&U0aok$Wr@Tb)X&%p%^(TEP+%n?%D(xEK$)T^T4L7YmL z+qmrgV`=3FCx=BYAWw|V(qAdZg20r-Zpj^s@RSwRB+rugrgGn_AlLjE#o~?+eQ&d{ zrr+!2LMn>BeDhk^Sf(H8`IU%zl8i8l;~^a<=XQ}ql#lx=?I|DEo2@^eO@H?f9wY2g zI(csS3kz=T2ppsyC!0kBv2oh+Do|(sU~peL08O5-!(V1-+Wd=0#vJ;S$4vKKAPFps z4Nt%TX;L4>^dmFIyt$J!Lun#B+4q*>2FmSn3T6V98&f=AWDV9!a7Kfp22?Hw54E+ql z?JdBfLY3`V8MX{eI5r*$xVcUVv)n}_ zw&%jTXHUcK*$BFz%Pl&2kPuvD#Q=VG4!I7YyLO#p;VcX61w=+U?;cg}+FWomk48)R zMIZo2CC&XE0q&rR^_%R?5iyItz`CMNebdwhlDD)#y;OO{kqJ2Z)}xycjK|g;X!fy_ zk2N~?z29I9sA@@}YG{|NTVE#=FWQoNv~w_c#Mf6+Y#qpSj{=k zl2}X`<*?jjzP#a@zY%G)9*}5@6V1+HJR9-q@O+`$fQ#bGD;|at4#rNNmP9BQ?qvr@ zI2~C&4_bKk2XxdVYHIQRTsQX5zO7-ZdFgu_xbJWEeq8y70ruz5ejro>Lp}_GD^{`q z%=b*eUmAt~{b&E5dDs2O^25M)8}R*7^_yrkj1mh3CG7!-Cw=|509SRzlFWhU=#yw_ znZolO%!Dl-66Kwz)Z&u@#{aMJbva}GZm|CdQI9OL)xXNRQ!h6fco3AieOS=Yz?ow} z5~_jC)13G%$&Ng#RC!>H*(x(=fzFFE0OQm30PK`Czz~7d9kOzB55~WiHL=h-03n#% zq1}GAb@jUCDmht}coI7vL^11DVL8}#uHI>fJ}7~xyTW%6rN{LbF>A1HM)x3gkN$!IELvheq-enP>fNO!tGh`RpE#kwzta(<03D$Aa{~XMp=SivXN!-0zXcdSU!c|T4d(tdf%(%2f{RI0*;iEol;1n!MP14;M+xy7` zY{oJY7%_-<05XVN$t>8mv{RbYL1;?}`TO^J0Re#m6I(+BNxS5S*P;510FIbY%k1__ zcWsSEioPNMn95UtFcA%+ecX(s&`ul#YIL!vSod0jBX)Xq}jfF>$ z)79ay!!L%T17KhV;7|uaND3AbsQMdxvVo75|Fm-e6$WhR5o)c4-~b2Cjaro?(r0R#mZ7*&ICr@{aM0AQcTnOR}d1fuwmf(JM#LW==p zdM9*`LXM0J;Htdv05|{;1`m9Jazp=^nHLLzOc#CR1^}`ErGb~S^qk~zK%l4K2^atb z0!#rs0U>%x6w?kFq)e zvnLI{e4b12Vk8=i3y2DZ4ZtrA$^*ak;9pfAwU0XfKm+7ZM~QN3KF@$Nf*$CmtRd$< zN>>N)Y!n0eE6`$^5MJggMnngI)(B-#NXIkcgT6nokOlza<7`VvVlVxDpa@>**NmbF z{?GUL2@Haz8&{iAH~-r~mP*TFj;v31m}D1}*g>voUH-LC9)+4YiT?Jr<_s)ARUaem z`@jGY83Y(`HNpZ`ef}BCBLsm&Rct^s186uIahH7_|0Wq)%)o@_r7jEzV`~ay1%EK& zLE5x5b9W(J0Eh?e##tm=jV}ZlEn={+wkZDl#;U39|G+hKg53S*ypmu4?22J2jzLk^ zrSLI@1mST3aHIiaQUCwXK|^l3o*9RL7*dkT!r&M%yETZk@rj(}#uF0V<#-W800maS zFec-Q*8K196CefdqodbOzVRS{2aZ9ejwE3-kBiF&AnL80-`Fz&l(0ndB#3|S-UB{Ct11_5 z{CD^e%Rm!!0003&0B$D82Co2kFaQ7nK>#_4vH`2cusDI>(PqPFwIE8a;QhLWqi~1; zw!z4rpZJzfMzJJ)d>C9~Dw zCY~4aj0;0ih>rjR0MF}?@FiHJIFafqDk&sq(fN>`@-d$R-KDZQcl^@M^z1PukPZK^ z@HCgpeiv(tcYw1|uNU5_;eH12J_JI8=CsB^3%UR`;lPa e{-r>2-|!}$6VK=12$BE*0YLy2LTrF)@CM`PoX~Ip diff --git a/samples/h264SampleFrames/frame-0777.h264 b/samples/h264SampleFrames/frame-0777.h264 index ec031d833e8aa10c01573eab3348fd8dae1f7f57..15bc25f585394efd230acd59cfa7ea22c99f22ba 100644 GIT binary patch literal 3007 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 Fe*r;dfF%F` delta 839 zcmV-N1GxOZ7oP}!000012`~Tv0YRHU8oUK>6c8{_z>@$0N`i3O+kPf_0&fm{agG&H zt_zXA5+rE3<1-W=z66k+VQtXX0y4Kpk$@lt+&j}8L8mE)uw1?jMFxX|!B{Q|41fb` zZ4#N7k$eINI5}I_Q?YUwLAQ7SMWE!zxG<5_kLG+X7Ui;7hfXCFxkS6W9ZDFb9C%}fr zD+6lq6#=D$R1rkUpaUoX8oQW0O~ho^t^cC{06~NR1R?+cLM#9%nS@>A8e)g6aCtw& z2^Aw&JHVBH#TFbxwd^p`0U@wbz~)XchXDuDNBn8zfJP4oCt|>WP$;qES${)tLWuwi zg8&)ZPXV%+TE?)y{_%h^fDRkf)0wkiRUB#AfFlS|=bAvG1Ek3F@STJ(06hQ!!NTOv zZ|6(n0JuOsgn?*)m{Y(o3<3qHhQTxlB4(z}@>~FaH39}&zt}1&dz`@*9Zp~Z01nD< z8{^LZf5Maq6e)VVX-I6Eb-Q?hxX9}gz_YS_2or1I!K(qTgxL^M+{|ESLLzv@fCWl< z4HV#Bn%QyU8~_0Tz@P5#b`^q(LNDKmA+-0%m~20NT3HjTyuMpbi{L0Gpry z00BV&ZYIzMuK;*30003&06B@Y0jtKq;s<~`h*AJ!Zl1lM1mFBYGkT>NTSTQG2B zULc(i!i38#TIWbXruI-TvEW+Dvjf~EE9bbkAD$7Dp$agQe+w7^jFWK-J(I5r5D@SL RV*mgFK>!s(Z2)TU2IGplU5@|& diff --git a/samples/h264SampleFrames/frame-0778.h264 b/samples/h264SampleFrames/frame-0778.h264 index 311eecea622ecab67c6ce85c10454ae32c382216..9577e1fc3e46e38d94ec55eabaee7ac72551d498 100644 GIT binary patch delta 1385 zcmV-v1(y1q3jYg#000012`~Tv0YRET8oUKJL1N!7?_3ev%pfGMiwU0-jp`T#f?OaL&(LpSWccUB%5fCYeLQ0*vX6@5?MV*m$uY$7I( z)C#e&kyVKGfB=B#048sPTs(L%#fvQZ!!4}by>SKC&A94+Zy{PDfA|a?1TH`oSjwdu z4ze?`5YD}E@)G+3Kmb4_RR}mR*345{E3)MO04y>%i}yDW)h!*U00aX8X_f$JzQ~t= zTuKGK|8fo#VcMi|cDuHF{w?NvA64P-0SBW(6=h%O5Xo69Fa62@3;?HR2+*AHBp}E3 zlRQ$K00aVmKnEN)48HyL+6OHn5DN@P``!s7&C~+G^GGJX{CeO%<(nr2HPne*v;kqx z!|Ft?qv?5O$-xd_=z@KU6@tLTzyZDi)%*?x0tn&kK%i;%y?^H>Q5k+L6wvGZv>)X_18e@#`lA_Ec?*%gt-~s~$^qe-=V(GKOY}1F}11Ot~64`5_xJYXlrNZ!>=QSXv zi`rm+6aY{Ihmr5xG|0lnb|L@o0Z;(y2)q(g36oDwjbnxZBmit|L>hqdx98p{026=% zJg^2k#({UnX*}Qt04brrV3xGNDEV{11K#&|h2qgXFP>LHhrj>`0EiN|dE*0ltXPyw z^Z(oc1|YlgDHpRmwGeCdzGTR86&$Xs(mz*!s-OQC_mIf^$HX6!t`EjRf}j*&B>*>yrRPz$o}$X#^4}wqD(c3==k);4A>*&Bh41+6Sd% zq>Mik1^^6+tObW%cS@vA{b0cg%{(Nq`b;}0bHfN%n6wr|-ngRw{?Gsn2Rp1aiB-mb zuQ@1!U2`Qg0gh9oZ?}0U5@R3 z08F8QT*L{7bE}Ln5kAiXUj)S95XiB+Gr4T8WX-Pt06;vzLV&M07d1ipe?jo19(ceQ zRr>(v^@@SW-XH({Kl1>89bg}TjXPy@8aSAc000n0hZPUM34j2AAUIi2 z?+%GMD@LO%7(4+EzyJUNK>%(hkOr>+Z^ir$V0Z(F9R!RBh9D2mS>4D0doA+PjM?P- zlE?u2Pm$q$@8AG!$XQERk9D=u9MCy#@B9D%{uq0}>IZ=kXL(4)00hw=fK6|IhhZ1= z86S=zG`N3(#1DZ80~3u+Zs&)9Ij@(iFFXH0>nGkH_xv!ua#f)ZiJ4t(xf-wE-Ule! zj1@rSH{HhpK5erwhF<9o3r;heq(a1j7$0RXBXEdu0^?7U(F8k_uLKbg0)c=400BV&6+&qMYVZc*bT4IX delta 1164 zcmV;71atfU3!Mso000012`~Tv0YRH!8oULQ#DREFQNRHK0|dq=R+&Npe!3^C&j1)G z8aDQx*4u&!+6o!J01CN;q!tj=Io7NI<6b}zZC2mp00aP6`s@H852MFdVEBImM80q+ z1i^$dU_dj-5CCAS0)4|dv9X9X^QEDH1to)i57asKw*Opz0N}U)0RVspBnw~FAW-2! zW`*YWn4ID#p1`9j@d8eOpa38V!;A#em8;-cfQAVmPMY??0C7nCK!$NUK7~=_UElx& z0RTW~ha3|*Y!o_VH*ll4U=#oW05?G(2sQu$0l!{TFbKcA0pKVcQ*VTwG+-9o6G%mUmy3V1PFCN!UTntY=D`k5x{kq1W_iCQGfp68Nirmq6JM3 zgj3spmw*4<004j)z(EV9m?|KwpFHXofO-G82sjQ)!o(zJis~Mb2yu6V7~?@G=wrlA zP_5v(?|=XxCJv_p<~G&xf?|<4?l}z}j0+DSEHj9RrFx=Sm;lGdFf;?TmIV)ru{IKH zxGM!{8?Q&KmRFp300IFZv`7vnB8g+(*6ibwWc+am>OPMf*}&olz=Q#a$a;3`zVti+$$Yh0_^#_4 zwgIcgiSqazKtm*sgQ7x!1RxD7v{n>s{&cWy7mI)ET|=OPh9UFsN3ZO_0RYn@6mQ^i zv9a02TXW|VFx^LNd%&IGlDsI=)QI0i!n*^=2m=WSg@7FZMT-a_u6bA(&=l6W@BoM} zh^9W7a;_RjWfPAc2J5jnjD=z_J7@V-%iN`NlhFhlli&mlZU4re7ukbIEFdWY{Ap9= zxpw>DPND7)yGa;4@80t>U7r8oBL2VuQqh5SRCDycJV_;pj^)e&&SH;6qcAT4fD2|s z!;{?0zxtTA8D5?5R{$Pf*|qMEzBmqrv?CFYs=U6?&iiKRtH-6Rn zKWx-^*jK$;!%P4Q0D~1^_+?4)yI4j*06 zo;}{ES%=?a!IK0u08dtpY8D8OcGZjk0RV6S5Fh{n18@ZsI0yizfDTYg5ALqeyn13& zzzJb^Rx5Vz`|Ej_e~Oi*H`4g1shML5mpTgo9@lQ4JG}lOO3nZdi<`lyG5`BWH4r8I zQs}kE9njr>1_d|}2ulNANnKUkmoR((aexbf?$V`k@JdG7v;YDCi=YKPFn3?x;xIs; zmqJrW84Zd~=EeWM(hN6$F0j%}LRO3aaUd8AGr)rAawX75 z-Y0+tmv9WRhG6ik4GqJ$&}rgT5J4Lc{n{oD6GEWPc^v=X1p_FB5V0%mA_*?a91t=L z745tzVAUC}8vgJA1OZn911I6DB}>SP(_Wqc06-UjMKCEB?HN>Pd;+`wi}J%Zo~-~fS~Ddfyakxy+vq*;V88(wU@rkZ$lY6iCb^AF695qPj<(aX1GpXr1~>p_ zD{n-bNCa$0shEArroUNNEfDu6Zf=?Q-0Mx2ls>CnnY|S=V5hebM0DIx> zK=KEH6oA&G2w)C|q#goq!^|9GgRIPd$me5$ tH&B0*Ap{+hFa!w%{BhxYlWqhalV1cY5q!s(X@F|*2IE$8_}>5k delta 1103 zcmV-V1hD(-37iRk000012`~Tv0YRI98oUL8{MR>d3_pzv00IaCH9*s-K$cYiqX0D~ zid+O!X8;7C8BHD{2G9t9?EqjqbPN~Jo&#OQlv*$Sz+^qZ1LzIiM1CA|B7g5rgJ2HD z!b$_ecQv+sP9cxAh*7}yQ{}|REld2r0R|%h2SSQ|01PI755St>pBzL}l@)*s7(gXI z0uO|&st=6ktKKjO)K-uwOIIkZ>;Hx;Nj(NIZ&yHpt`LVWnrOhxNWxL3cpJs#-~TXP zcuz-Wq0{aLFKAp}mj6_Su}QF+V64XsGU`7#5dj(}O3#dc`fwk~ve`O*^8gu0WgUsO z`NE&~aDV`RKoAJ3l+bPKTJwa)FLT4e3PZvRk{>4h*`Zhfc#K74DU_lm315I_18BY3 zXrWd<%ItD521M@>rHO;761;2%0WKp8U%m{Jv>D7ZrZ`dNJ>pOHfr9ce4pJ_fSepSg z;D?+1fCB(wSO73Df`$#b;vC73hP~H2F61+L$0^`{qW}ds4HzaVX1tVgA#j`t1^^72 zGynn!>X)zp2r>Wwf{j23L!13?B0*sf00aO70KpS(cYWKM0HWZOhCucOI24dek3o{5 z10M(j@v(qFVDjjht{Lbjs;nRe00?y8FjRDyzJEh1j-2x{if`E`rN8j6|J*VF0RRC3 zaWyP|oE!bnwUhUl^g@6Dfd^IX03_|g#ZOR&e@taSqV0O z|3$Hr!`=swJP43LV=@Ei0npTb1DB!ZMl}?b)e@R-=L5(d1o8pQ2}S{3UhJE%*aaJs z85-iAFaQ60&>ljV6y?Aso)_mZkf3A0F0cS78E=LH5|;n~fFA&1#?Hx$AOV9tTmpi3 z7T`q6tuOySJS(YU1_h%+%_bM4u!p*TD46h7O^B3~adW;P1T0JzOg_}ZF>U@qP2iT4 z!lIA=y0^SP%lq^H{{9RO1PA~C0YLyciMRo)#|iizK=3>$Lf|2UZ>uP0=KEk-5Dec$ zt!OW`%=m%w`!s(ZUAcV2IGv@&8h$Z diff --git a/samples/h264SampleFrames/frame-0780.h264 b/samples/h264SampleFrames/frame-0780.h264 index a3ec87f1ca2f2bec40524b959075e48b79ff8619..a4ecc8a90a7fd23119324d56e39ce61be2ff01a6 100644 GIT binary patch literal 1135 zcmV-#1d#gx0003AFaQ7nL7IRXyagX9Sb4gDSRUU}*VL4~Nl0)1lUQ@W12)^`H$DIW zfG+?!K^RiiG=M21rravWjor00G-D0fGfu!l;3( z#Ml4`1Z$uU0FjL2`6HV&Lwr&rjF$^&CWkH}`crXphBpoX0D$yNKn_&f-`c=~`pe`+tF-s_fDpl0vOaHm zh|->4001BWVyP0Zatvsif7&201sPJ~P~%P4m>$0Lh#?Wg5zIM+5TJ0!Mu)gz*|_kB zjGNIS#8egqR7C%OKmb8yKy)lcQ$zaAmy9%lVmcym<>i12-~(G+0YHF3eCb4q!P}XT z00>1TLkospykph=iBp#`X*V5Y7R35AMQtbgKsTHdW?G0A+Lt zIGBfa;LRrx+3GmOpn}afkN*Jp0097iAe6VGK^uNUsZ>S1up$OHi#UQe?Elu^*1yb@ z76)bS`hE`pq9+0eX+EW3iC7Q74HV}LcpZPG0`h$2fM-Ae5D?B)fP(cKzR((gL6~$S z&strPK$q8yA`11OqZrYDQO)oK85%a_|1XuU8Rg-y0L5aC0FeJ)$*5pV8-0KVI#SS4 z8N;?1of3NqI1hKQCz4wDKl1<%kOS}|kLgr`MpqD1+4$AfN5TKT5CEDG0R$L5VuDH! zavT8;zyJUNK>%(hpa!o1To62g;9y&Xctda@-h|o_=`=??pcU!JDFU_M03ADKAjO8c ztd(9m?&s|{-_V`#^7tM=@CVR5aPWwhA=aQAK?^_|MZNi-KYJ=JnN0DCQB7fRD}Qjcj3UAcwbV) z2?`iS1eNb_FkYz%jKJY${nQ;DfEBz7o^J|T*X&;XxBv!tS5icY3w8#wWHfr6kgwnP zkn6y3pr8WQZbEMThbv=?_RR|)uV5yg7u}VQ3rcS|1#kU7X&4^ZZ|o2H0l?l~V#-B8 zjQ^uIf$sAKxjx$$oBh26dB%X5^tS=3F602(k7xj@0Z;osPAtS0qX+cL01`8Bn#*~{ z)M~_tL~Xt845yt4>`PMIGeCa;00BV&If!s(Y5;2R2ICSY B`Z@pr literal 979 zcmV;^11$Ui0003AFaQ7nL7Si&yakbe2m#v?2Vp@j00;mKI5_T{jMKoRC|M_`pa2j7 z019hs0WjwYEu5*KEqC|;SOy3XWUfAW;%R-)W{x4gDL7!R6H`+A0T3(>0SI6&G5`n+ z3^k4!O1hbuk~&LX00IWUfKd_7w@$hdc*=rT&_viEVNXI3G;$4~#854wWTl~ULL$8v zfDv2(Kvx+>T$&(=zIWpQKmZ_+;Ikw^Iu@Hqq=4A%;KDdS5X$nRitQN17RGSiSO;GS z030~(_dxf&u0^@%;fGBd05@SQpDjiIe(-<>C=eX;3=WbLBW^d=L)OLc05mUc0^9Py+y<^T`NZ27M0gu1Z1vgaii; z`K0v7x5)EB`{)9kJz(Z}L40xc7RUU=@iYoDi!pzKPyi4L7l+FSLOYo?=o16*3cg`0 zh$cqRuLWe8TpsdaekaK(M}tm>-~t2)73;{VsS*{8lfBDO1;7A61*Q?8KI@bao7Dgc zj+g)}dgxR?UiV8%umBJY0JCsNN8A7afY1tchC?Iq@MMVn+pqU9@`QjN7372fp!JLY z_W-~F+z@5PbzPDV*D+^%3Q)Rg41!h^cLcl!pa>Kt1Zb&6fsTapVc;3U0AR$j*^MI9 zTXt|1xc~#IKmZU9C>q7c10tlnfBV3MC_@^ugp_cHmT4;KqwoaX0003&0B$De2Co2I z5Ilk4U{ipb*Y=|$Ek&}d6c-c~YH8 z0rU?Fg90Gp2vti1h#^rdi3BnQ*my`HC4z4|?cW1iwgO`eSed$9MH99MkUa_DgX#6V zOV9q-g7G@*Di^>1a}^6s-T$~Tz0OYSSVV7~&1;Cy`~qp=T}u!oBrvQMPFAZ13&|lc zl7VH+@SA)9FZc`YcY|5hzGk;@2RtXKB1DBe4Ph!3p0bgS{r`wyNT3`!Du9@ov_uI{ zOcbU)4{7JC)f<2I0%_r0*;w$P%kQ!Qr|-FMOyOSJ!rArMfBd=>4RJihxfcR6{)qN| z|N4zw+BHVgzrKPy1At4vP9NxKIIb)38%TbjHPEyEZ}GX9`!s(Zh&g=2IE%9 Bp85a) diff --git a/samples/h264SampleFrames/frame-0781.h264 b/samples/h264SampleFrames/frame-0781.h264 index 3b96f8fde67c33711bf59ddb156b5cabdeb967c1..64a3b401d0197531c54e9091f915e5fe342c3bda 100644 GIT binary patch literal 1554 zcmV+t2JQI(0003AFaQ7nL7Jc%yahKwLsiXS%@Q8T!hCc-JXM6qs@@CobcR7?!VFRP z03>5ElbkA8QXbTBxJNMIWHZcf`{?b%WkWej;DRL$5DP>M5&BsST+X{I_}lRXt^mLm zwC6NN&~E4z^2>ef5$6tAeRVBw#hmeg0Dv)oaA^TKXZyy%7WCSFAOm&;HGvWwB1;2N z6NaIxnb3_(+VB1hcmWklOy(K56Tk&yyiSn@@$V2=3@4fb`ZuPr9a3RnKOvX^5%byv zl>qlQFu*UcQXQBf=cZfc00IR-AY4#fA^B#*WrGs9KO;aBvXBdW6?XGr-~sCbmz{lx zBmBThdmOg_02F{YlLns?Q6Ed=A!*{mBRBx-21)i}tnfqtQR-^ScgzXU5XP3)kwiv* zzW@MWCnGhZQ<;MVU;p;;0QWcmAaROMO^{5<9Z(WN12|zzG+E1mkH7$6=1UJHU`I`d zq$Cji@BnH6oHY$(5=m@Hig%04009610{{>N39T%2s0uHDfCr;D06~CNlRjL?NQUAt zx1a-+;Eo)*u4)7xq)B>_E2#QYd>N!$aUY0=04ncj1qTcEsoFB&07zn(ay)4tuxVm1 zvEU$<8`?oLGoxwb(TD&bLbn-{5k5BL2oV4aLwJ%!3#1VL+rR)22Q4rF8X5))QyX~( zWHGzQK*bJ}IZ9PsB1Jy~5ETqTfXJToIWSK{5H|1t0s*E80I19C(k0}fFaN#l%-Ch_ zcPU)9ZN75!UjY;ptLPx0crT&RNX-xdfK3Fve*U9mXqmzYxGR_^5kX!~zw-61|8M~U z(Y4ZeMN6#bJO6k9F};CGx_0&_pv{X3gAYWA2t`t`!JME0zx%;}j{q&YfN)4bWJt^3 zM<1_m1ke{?9shyAfbuwd5hq~w|I7dc4gdf_L+3yMK-dG9yaE6KdToFP2oiY{0tSKV zfJvYj2?WtW(49|SJ3xih)%7Jge+nB5MIHbQY=R?>yXPsZN5B{`k}GahAc`>WNr_xT zKC$2%`|I--c*pt@ZvX&5Jm-K3HgKuY9c`NM00IH5*Z@g|z5{6_9{&}y=1%qXn&F$F z@s7dZMK5meNO4gA^}nLKT58vuF~6!+ckZefVT?`JH~)X_u@RgS7wCvmd-(yBJ z{$*u9`M?Sut^o$IDbwunm8cFxIf>3e%DM+bETdt<);uk{W%;kZKc$}#DkaWA4u1Eu zuyN%`)%(5wgM+bUL^B%jf4EBoFu(%Li*;+lB(*p9ep&#BU;qFCK>%(hs0Ob9QZPP& z;9y&XpWBIR$9dANv>|(d7`N0o`@VzPTRoZl?gBVhStH*OdWbH`Jzw9xC)>XqYz7#5 z1Na^sevDh-AeNC(vn&aHNy5PD=*q+5dA*ZKdh(P3a3}GW$GET0_G4%*iaeyQ&iC*J zre-&^T&K0Z;3l3E)yO0zh$|>5Q}C&;zHhI``?wuBLa;>Tlxy(N&_3V+4c%mtz3g$o zDhQ&cFXlS;ETw%X{X8eT#D%;OmdFxoEq`fI222PySqvyaYiKaa{o~9Dya35}0Wz|~ z-{2;m7t8p=SoSZ0003AFaQ7nL7TuDyaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`L0eYG2#qV5&#DP1Oeb_U4u(CjiMk6Ng?xC^8hdoT~IBZcX{IgL5~;ojSFy< zpRJoE;1~d=_||+;1%r*CPy)aB5sW5^&B$l1X7~jF3CVyE8&WjMB6&#H{pJMXoHha| zDd>(08pXg3LNiw&Qerb~t_9zCXE>$vlzPi>q8ey0;pzc^47=9_MfDESm+$}}0|Nvu zN3@NQh~>nsU3hW|OJgz~d;5txW;%Oqw7!Pz+t{Hrf=T_qfgl6|65LQ5x?Ir_Rs0+P z9B2erBs^!9!i>voDqEr;01zVS#-J{+@mxOB7zl`=XlJ==c)k1p#}}e7vT9PzWhwvu z3;;84`Cll{!+R{R@6NdeC~=}(X8nQc@O|BWXB4U$Fts6T-~s?4lxH3Z-1baG1O^r` z*^F|GQOb4qfB+y88O8zKU?xvCCV2uuz%%Irz>f)ZlZQrMrDNX!AOIi?9ab2+BKSqD zl*XbS@6)F>JOE{2gzHHGA1iDZKx;rSC|G3$J&sKr06Yl+ThTdcA+Z03ZMl6D<&L z4hR!o5}2?6a2Oc^y4q4YL|~!$nJ53cU<3%B(!|M~tfim-%_8|Q#rh-w5C9lLB@;s1 zmXOvk_y9Nn7!c&@aF+K9*LVN_gHnR8&o0uI);XrkA8;tV)+(>3{?Gu70Fa6jFD88Q z$cx|a5C9;Rb%WWpWmK&X__vwteOL1`if`E`rN8ix|K0!y108^DL`_@PpeQOm$FJr+ z5TF1cLDhRe3pa4E&6ofJ0bl?i8UQ3KE#MI0kOk#d%00=GA7>b6hE&V^LI_R~fXqBN zg{cHcH0!&l3^~n2;0Pfcq?XaI5QvhkKaZ-;3>e9}Gynt&+jrmtKLSBh|AX)Z4OF1F ze|hA|B)>ygN?~OUL1}zI=vo&L7a8%HfZg1n=qPR1SpfV1!jzV07XYDU+N?#Fj7;Zz zVVm$|^IYQZ4nT`;d)6{yEa?wKH#QxLJa1&aXb3`>RYE!TS!e$24M$4hiSCl2 z|G#(!d4|lWUbo@j;6Pvrx&QzHK>%(h@CL5{QZPP&;9y&XIJ?FRvd8am7{}VgK7dK# z|Ii3&S7*`sz5sQFc8hB{`<}83#!YYh{qY>%;k%Gwu3eI_9hvKW8kP)D#Z0p#@`w6{LF0uvGo zjsoct53|1+Jr*&-yuE#YgZ^LgEtCKdDlRJP?&tFeCqovYKP_FSc0c}bOhN|gLLqdQ oxBmlyH1M8(KL_vt00BV&If=XhtH2wK0003&02M-S0BZ0CQ#}8BfI19stuC@&eY1I2z=SgTVO${t?H( z!L$o%JQmoPIEQq&H{x&uQW^J+4nap3nm}A&6nDj0Mu1yj0GKL)v;=2^fGmo@0@+{y zL;`@9#f`KjF(CK=2*jPr#B8N@W#9l92e3jY(T*z70|7O^ycGaQ0^xM5k+V=A!Y)7n zAQk`u1Hd~xR6d@yaT5gvJ01Xc01gL%+8{)zNcDMuE&)aj9-TCpGAa{Ak;KU}S{$R? z{~#EkdDQa^Y(*Mk?LP2B5Gka*NWz4LI#93x|9}Ay3I@9wb_E0>;+DVgVyuj){q37( zY{stY7}+iWFBw7*D&!g@(?;z8AP~Ug7%&UGB(UL_|64sFa$eW`6u=3P0*SB;2ZJgg z_-3<)l;Two00<(00D}r6002Qu0n@`^1>t?6j27e!00aoY06=%J*Z@Q~GoktckXL~5 zvvL>l0(CN|ge43Ehu;}Yp+-0h9|Hu|ybjO=Y)yV58i9k}L9pag&*Fwvit)K?0ffni z`*>VW31eV^5n6y@7y@MgC+obc$bE7i+-PVcVg^6@5=;OSBN-izV8j1y7IZKLj4Y%Q z5^h6Le}|nAS_l|_BOw)($3l(mSB4&MFY4ir&}be2p)m|b5rWR4uM4a27&+jOBBZ%0 zQ=mB1BSWAFVAvr51A~IvL<3F`p%D>^N{!$5fCvl}XxA*jq9qNM#PMr2s>a0003&0B$C*2Co1}P!J$^2!${sZy$8vK8xHy5C-0C zNnix6Ga&uhvZ4?hK;Ec@$NvEW2Z8@EAgFI1bAgwjF~1Ht;+yy7DT|^phX=0)w%0>r zop3y*dP92m0W|QB#DoR{K<(il(~Dsk&in*6`=%|h2t&#U11?Z{VUK-x&j{+|5)|PZ z)TyA43C&1Ii=_hpqVxi3;a`sm1NFN>k@qp4=8>`3T_=)YgByOinPLdJ5AX|aSl{?Z z!5-Xc5Z0%{xWH69o@B@SfH6DKG2Tno_8W;_fqaE)xOxTx0%_q`2?ziH0YLyciL3#u Tz#EJJ00BV&6+&wOYVZc*V*S3S literal 737 zcmV<70v`PU0003AFaQ7nL7U(jyak6RgsK2Ip8`pOPzFa+(3R){01K2Hw8t1Ftsvi> zn`(erm_9cE1R8(@0)rBzUDqNu+UM|&0C)fd0Dz!@6!u3_3nbzcYgKq^Z~zb{8A(V9 zi&;L~bV!fj1^{M{A&1F44FdF=X98tF##i_R0w4=UREUjmA#JA*2m)o9KmouiLZky4 zJseXl9)t5VLIxKA0tbJPfdU+{_6b^c14A6UykQVhS_@H3BG^#hLP4DI22%*6l1f-} z2_>Eotsuf0ExxEhM%z=sV2Z$5RzgJ;zdvAJUGD~HJiSyR6K-rv|Nekr03ZZ&0v7~$ zJcX#!#54d12o%vooLu?UNev`ky(a(+0}Ny)to=}w;mqwIpWFMu0|OlJN;n#AW%5|o}nM}n!N#vjK1l<4t0YLz6Cin)g07y^}Ab1FcFh%iakj7YnixvP3k4$Jk z_7mhn07Dza6OI9gz(9fER|_nFiMz?P;Ns->UrTNd{A_ z85%xD$F~_b8M(h-`zQg6v(X#t9M;SkXEhtzLY9~N27v(rY2h6F1bhGh0YLyciM|1= Tz#EJJ00BV&6+&--YVZc*jj|%J diff --git a/samples/h264SampleFrames/frame-0783.h264 b/samples/h264SampleFrames/frame-0783.h264 index 196156c2b8bf024d669db8e576404c8ae35d3db4..67d09676f81f470d6c7cc2527ae1815a7d57139b 100644 GIT binary patch literal 1260 zcmVk zl7o;&G6F$mH{nkiA5(Z>uxPe|i+|97jZ^baJqTb@eUpK5Gvlutk5<3z00aQb2mk^A zfg$@Qm%Q{Shrq+Q(M+aTstyVKoj00*067b#MoO z9!(0I7Y}uld}MO@IDa09yjj*fMHW~4zz)^lG$!E*n1`_CU=mIJQMUsk97~DabDlEcI;ZrdF00;&T`FM5j#E6?mZq3J@$CDk&u@C%FHE0&%ebL{F?f011(dj)yQo zeYOcQ7y?Qt1Zs4!nYkzRvQ$g!0|FV^EUDnCtq_?%;LJHEJx7&yq!@4i+5iB67y^p4 z%(W|$b|@b0?^l^*FeuLnd=e9Y5M^jzPxf6mx;u-&01y`t zVuKhUF%jg)w+OU30{<8Q!?i8}#QCa#)MSFc{;-gu{q25tUkCm$0Cj*r0oo^p_zDUn zC|k_K{8Y6qz7Nin|M(&Bi~s}zfZ(%W&xA$anWaHqfVCJ)k0KH9b+~f;apGtIC+x+~3jkfJ_)4fPn+R z{yZ2AE+hz`7ao>{?*Jn!;VOyu_v;cQr2$BesUcwiv?YbOJt{~ShsX?qI0Wr=I3**$ z`T}X;9KJ*G*pQGm+Tv`C|I_=7q^Vc`;PtU#2tgq}_%R#=D?qVy67a^bi^tekx6cXa zK*-S{Nlhw3JnVAj16q02DOWmYWA(8|8j7HUl2l7_Xtc z`XVe`1*}D5qdzV+Wl0D%kOP3@s0#`31b?_a?*yF~w64DHHA+|zDSSxnR7}FWATbM_ z$q@rgZ{a`x00Y3vMxC$kiWC3-Xa0LLd0>c0nr)=7|Np>$0%_q~M~M6e>;M1(K>#_4 Wt^upS8;k$|0YLy2LTi9(@CM^G>J?A` literal 1006 zcmVyakiQfp}0-00;;eCNny;N)Qb7(JkJ10Kq`fw{-Td z+!0F9OwITJdzd94u!f+^b^vYr0D|VGZvg-RfF1t300;pTxaRC151>ey#GOqL1jHoE z;8Bz)Cw0wIJN6^*FnFpki!&;a;FQ*I00IC)iwfR@@^%fDECz#M1fAw5DTkxk>K|+` zZ!iE55JCVj3C)+fBLwtDAmNNc$g~OaU6k<;+yDXt0&wIMxlOP%jF#Qz0Z;&2T$POh zGwGwra9K-=a2S7se-f-!{{Zv>sHB`cA$>YhhjrWkdH@`u#~NFaNfJx4PrwkucHV!W z#VO?IrbONe&Hyqmus8Z&B{ALr0fZuH5>i=IMH ze_!rwjSPa2oadv22%rQs=M4#5CbFGApZ+ag@Ic}kbYMezbj(j{_X_CK9j8D_*^1wQ z01y)pNC+&Jw0S~GS_1QC1`&lCX#$@ttM}dksUi>nCg;e}pFW?0uvC&k64ONyL5F|LQec%?W! zDo87x5E%q;4f1MeB{53>)CAMQKE#B9#u+`5K6l^ahV^~@fODGy6;V>ZuZ7#Dr-=S~4n3Ftt`(IHH5+D`XmIQDuM#MnooBH&T22<28W%fe~+46f@mg1cfhnlxSfu@2sN(TVYcZz5g4l zaDMZ50hA+EGaJ=C>HptgD)XsW2qko%dSAj?5(FWh(&hL7F#8xqmQJuolTY3Q&2$3m zV;VY2BZ5H^|A<=$fBN5*xU!eWvi+5+QnE3uTi&MBLZE zgbPv>00aWrb9frD5C7aCWubv(`Ae=rB1Lh3#j(-gAOtjkB*PB+<$5OB=l1&?K*zKm@DXZdUaSKHOBuV&O6CDWkNUbDcv!vXfB+yY1U~>W$^wSD*eswm4WJf- z&@re?QQ<&{n|?wYC-!X=il5T zU;rQj$e;r}C|)GQuRhRXi$^+b(k_lDmG}Pb3yVssdI~JFl>guahj{`N`8WE(rJo|V z0sx8>QBRl)36XZV(zpA-01ypy0|1Js9Kv;|N7)IzcmM$a_W%)&2QF^WwN8a6>_7m8 z#i$nY=>kMJKiUt}4F{?<2_;0J(nIpV0U|ORAgaG|RJ4c0fJ8(v5CC`rzfr(HD}w@K z!4N7GSO6eo0DuWEkLVtJV)iebBMm8>OvIZw00<2mcZZSp=0-Ml6`G<@#-bd-PzJjD z`2m;0!MUJ8aFnvq3K9gT9x?c!Z~=WwKzy>S_Nqh=`gYn1v4efdR?dI2gf^oK`fmv8tt1@Bjn? z0AS1}m4`~?Q>$N}3V?P^)WhTIxDQVa3nPsMsxcJE9}ATACHQO z0lpN05KIs}puH1F-J@jbup}K%*ZGKyfBtTO03a&FzyYabz&4Udhu-VkV}9cL*4K%E z6AQoqOdhz9jLPCc$_&H60WvX>(B=p)w$Ud3MnWqoj)f5`Qely{ASJk90b?WmNmLPL zvH!R~07I|<00BV&ZYID6uK>~)`~(Ob07QY{SWH?cbC1QOf68GP=J-!KuxDUKj)&m#*ZqOt!QU}$G2SH=Pwk};qB38#g6 zgaW{fEX3-!PJi#XE?abM@BjTHik)D8|IWZ4^W9R$J=?s@#zsdy@Fe8*c5^9cH3t@q zgGR4B4ekoG=mhZ(-B}q(FYxRsLoZDV;AfRFtp7?0Sud3gBlZCxGu?@ekC*aFOiZlt za117=AsJA(`~VguyK8FJXa2Mk`L0zxi{JjUvXL#A&)s0dfi&>GBgB3IEPwz20YLyc XiLe2yz#EJJ00BV&6+&zPYVZc*Wjm}? literal 1413 zcmV;01$z1b0003AFaQ7nL7E^Myaj>$z9iTnK!h3$3IGBC0DvKdPoIsv=M_{p!3FaS zfGz#aN(zl|{qO(;2Y|u7;E?tn+?_wC92A6q0|yYJ5m2k||n%O`H1`vZptLL6Ua_qeF{tN)= z;7f7x?t(5F2sy#=Farky#LC2T;%4aQNQ}whf*s)Sk@;FEb1)k}|6G^x7~oSG0Xl1F z(G3+adQ1QgItV6u9><^m-ZZaA#J zd5YQxLd9^VV(*{z^ZX$(h{H`|I-kE^{urxyyh8=`R2(VCAGlZgZ$EEh6DN+MAJFqMkPaWyPT zn!f-s2VMQysG&CzeYUw60Epc|nt0d~SheH87z1oZ8s8=ku^I*|3L;~N3wf4FAMF8y z^0`DQ7mYM+jL;^$5{MLD1be{$f8Zz>V?i8U0xPJ5ZjHZ>o&ymm#r3s~L?ug_c$@`S zYtcLmMe7=dF6SNqV8Kw7PLni9jo<-; zUV?)aGp-5B&Ba_Pj8iY14WTr^q97a$_y}Q{dKH8__oL4gU4OQ)IvN^)3O3CWO7EBL z4!`Uy02}}W0Kgc4yY3=CIwMTs&Y%DI2f2 zD}Au5CkX}I25-=jrTYXNmek>f`9;kHzEKX0MZDye*Bn-oQq)_ zt&;cv0svr!S}y`f(}{ChE2d)>{9F6H+i#Ek!MQ-M@oUdH?Jehm0AZ5c2m!G!D088Y z17IKY00=--H77^r*WX%(hhz73!(ii*$2poV!f#6tD@Bwy*>m?e^paL4NhZy;ZB03#ltlz2> zMnmu&fQ2A^CEmOuvnU4 zQ|qM1cJI4StIAMEu57-~|NH)smRQH6uqclB0X0QMR9uD1&}hgnmH)uFZHY^k+YO;A9s~LgmT`fYJu8QSBr=HA|BG8i^NG0-~aDsKn$s&Lx`Ood}M4;U-ygv#Eb%;0+w3> zdh8d#@Bm;@NuE_fyU0#K;I>^0l?KKTPsz>^9uB?`>CkD`fZ~$d$e#`FVEdCD4~%dZ zmklQ*fS3(%p12-22ay6F0lJ^#@zD5yDueD(<|1&`G9Oq7K57uy19AAv6gvm&O9R)S zAI=B~42F}F&>iregFyuD5B^|7p;*9tyi{l_L8x+61s4oe2ZzkSUT5K~05$*t0FVF> z4gpB1b^yD+XB~e2{sIsn<)mXiK$}G69uLDs00pYp1pvX%QL8%$ISc`n`Qmgwh9!Z) zMb(3r5C9-;BbCg3-~tbT+sYguCZoz!@UOrDFrng+LwA=o>XlCv2l_2!b0%Z}0v_LZ z4Q+69gPp443A%6;kl{%AQVIK@00aPi*Z>$16D5tIp&P-~cW0=xjmfE~h@ z3*GSNi)k>SjlsYG5H_oz0-K1t-<$yfWo;9vYEjfNfBx_c4pYqew5pCsg<0?b1OkR% ztFQJJf`yT{0tyc)mzyZIm05}W+&u3yjW-S2axXd5`5H0`# z18q*g0KhJAG23=e{wE#^Pe3IE&vEK|C;-PP% z2#q`lACOm{=1L0#vcl!BfuIK+Sr{9VTz06;LJz2s5CA)v zI1>`$%M#h>=p2230Du^EtdKCxWR3$As$*c8Kp%JLdQ^J&Kk;M1(K>%(h$Of+fs=z>jz*tLw z1*0C(FAkFoH|zky^?CQe(YNR~Z)kerTlN*C73hQqCH%ZqDO8vI1ehKGL4n|07=cZ| zslzwk6$k)OAOlha&uS0AmEoffm^@;+6@P(&Ei_0ozxH?}yY5`q)&dj{8A=73cAl;M z`|tqaKTDnp{D0?xJZwvf&Y9l#_4vH`2W8;k$|0YLy2LTrF)@CM@<^N4u> literal 1017 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%0Ao#ynbLsDHr64uSzzmNmwEsv64*xt` zkw|_2VAJ3R{Y7GjKUf?Ir-kt!kU+pufsOBNgdB+r;E@PPQrU%GfAJrf1btH|yxpL? rl8f6^n~i=C;$uSqCv(N$%8BeQj7QC!)7et1q)9-miU#=ybu{cKB1yQS8oU)C(}>= z-~fS);!S#v5yV?XMHAo%00aS;EHA}$>}FnwB%i9_00aV#z@lqjB$}8y^FRC80Kfo1 z+Qa=qAOduk4I$1a1RNX&&H;qOGH8q&oO_~R61tD1<}4z?_Ge=dL?Zqq2>Ti+kN~(6ipDjh zDSld!(r^YU-Lh7o}X0$m+x%~iQf#*}qF|jmhi#B_~ z3_zxm@goWn6zM|11O5O6KqwyUW!MxDhl$$%!GdA__RX_4V^viQJ^(KnLJ%tCnk3Uk z?EoMUz~dS)3%Vq*;fViRJwX|-YyKtx6o3jQz%U60Q$g^}X9q<@00Ic$03gTFfB+z- z0QsH@ItBm&1YiIlJJ@UhA{)8DxC0=hfYGy37qJ3WGPr~!0|FOQSJaeC#RGsuPzL}v zC%(h*aoiwZvjFA0Kzx`IH6FeIEc6PDwMyhG!X$N z2LWR_@EKDTZ*XuJSOO$t^D=-8AOj#cHq=L*S_+jp>!00wC9<1QLX;;@UCCD_9#ezh)_K60D_bN(B*3IfEGQ9 z2)sW&_yFo;cDH-_fF}5}qr)*xrUqW)k<#86JUA0i3h^RHM(ubTKiyEiTGh~s&i}lT z1EK;ZC>H_;j7$hS3c%aE{{!S90003AFaQ7nL7IRXyakUK6k0`2G#AH#xj}MZz|ie076njIaKrEH-41yEZ>a{<|{@?&H04#{d_bnA1WF^sQG<+VE zBajquNTu!$2^OK8NS?2K$N+#rGK(Nh+j82&Q_4@?1SUCH8!`Y~29^=fMH43g44?pL z&S3F35XMQ0-}t})5MKZR2!H?(i2w>FSuVyj#SK}|a(@gYNY$@fz@5cdGXf(KVJ<+} zXcWH!LK}h@=|Z@QAV34KU;{Gg;5HEnRL}qa7y~E(;k!*an>Gbe!kv$U2tbw9L4pIM z$o1%*ln4L_0YCsyAXJh4{O5uI?>_SQz%CFEVIWo@CNsb=3VU3_B;#fhN8f zHDEQcn<5HZnv4wSL{Av70O?ODqMQrUTP{39fB+yIaY0``J_1`B-;F?0074E)!u2-KQY6|tZ|03e8X@o~~1k}Ds6&I1Bw zfWrXV+R%)d&%sC>H~}|60003&0B$Cr2Co5c0YU-*!Xdl4fDTYxP7@-c-_*Jiu+T&V zm>dO)^WZYHE8gIUWq=uDo--%_B!B`S6dPb3>mafkUq!A_I7D=fghQXWy0ZY9c)Y$4 zJg8PUDZm8ReWE@7-+&7*z0r0$9_{)Bi6!p!U*0H4-Wm~r!X57ef^pA`;DjDvCjX`Y z04ab0%kbp9iG@SJM1j~~PytO&Y1%hD0+MBtpsCjG3<;g`(Bl<9J`06DQKjOEf9^l4 z7zju`?*ULegl=3c8n6I3iU0xxU;!SWz?yhhFR-k!5dkowX21Yk00acg03fLBtS$c0*8PE6o3YY18rOa z1dB1uS_r&m_yJoZNwoLs06kaY&YdB*=-}(m+%oVa>%jrQns`^tLPl>n{^u4ajzTJb zU-yzAaj=P$3kU)lCJF~}oEp1df@s5EM!}ade})A{kahn5{n*;jC~l2W_ewDR!S+}9 k6OTTA0m*;>00BV&If2c36==%Zd?Efl1w(v zrZ;g>=m20)k6E#QWoYumI3%EgRWK9bqLumBJTE-(NH1qFil zO)t9aVGn_Vka$CCnlga_R7%w#eMxX}~fY@086*unyKp1EdFl_fbOSOb&)KA{%? zh?wgb^)9}EAkH6m4RHUMDoKrip713cR>lAV0;CiGp_AcEr6*O#JOUA+hu-5PzA8|? zC*S}hq5c4103ZS|V#m{hvK&mLbI?ltyZ{^+V~76>cjO6m@pawcF;*&T?Rmh#jNTfGLX@R$eQ_O=jI4dif7$~VE40q_6<0U-e{B7#E2ySQ+?ex3jB002M?AYOeHglPWi zq}dnjdf2)bGokG8^4TWde|0j^zx=;3vBXZfw1QanAQ%sZAw}p>p`b{_u<c|Nal( zbU;ln;z2)(fFJ@6pa50+r9oXUYeA*BXafME4GTTy*MunWQI-Gx7y<%;tQRP;{{s_= zR~mn~0096n0HMbs8c((B!4cGHF@bx7@XT>adjzeth^W&lLzydUviE=Yt=80x_&)*w zMkowFLZVV6!*l-+eE{VYphvA9W#oSN0x?7jVPp%$wq;(eS@^?$#9su1xB&tyLw+ZG zmaVo==)3>{0kMZH5Xm9fw?=+BM6MzUj>F_7V6yaV5Dpk6M zyYCnP4A%gmJ^?iFuf_!>b_dXL>4*`dEb8UU%>QE`Nd(eO?}Le<>#ytI-F^_u{n}NT z|Ns8_3vK3?-}~r16_(p%AKOm~@Dd<$7!>295eWbQ&;dZdfDJa2JtzINBv`d@msT2I z{dfR*Uo5iEbN})Kbvq#aU}Im7A~+_6Ql1p$+z87)l_Vl^|M)N_o)!57cpmh&hvxs@ z|FM+ZJ@Zh1WdJc7YuE4g;bKn_XC>|bZfGzjo)ORI;0R&>00BV&If=LdtH2wK0003& M02M-R0BZ0Ci_@% literal 1114 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 diff --git a/samples/h264SampleFrames/frame-0790.h264 b/samples/h264SampleFrames/frame-0790.h264 index 63f941a75e8960727dcf014e89d00f1b3c1ca702..e58125131273833aa0ae4cb3d5fbb25784d64673 100644 GIT binary patch delta 1378 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 literal 1501 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 diff --git a/samples/h264SampleFrames/frame-0793.h264 b/samples/h264SampleFrames/frame-0793.h264 index 601bf824e7191061a7a500d72f0c40219cfcc157..dd20cb6c767d4e4bf876e64ca3c0e8118dd6676d 100644 GIT binary patch literal 1457 zcmb7E`#02i0R4RDJ8y&UC>f6!4B5yG@=Rt##1e_6QYO8;Y1x{>`c8(%Zc@|A^VDpZ ztq?iRCeJ|}mCYmNxsAt`NA0Fn3?{R-KVZ+<`@=o={&>&5=K=sA5^J4Y3+XzIxT|UN zLL%RFFHqC726Tpv!bRZ5oy8_{vkhr!!R#=hYh-FrNR>Oon) z2-Rst`?rpBd^eZ7jYUP!dA`t?%$XZ0yAh8{wHhh_-={3o(DO5+5aUf8WP0JA$`lC< zfQ7s{0Ku!Nzus+j2vGL(XHjYfz3-BQTUESa**m_G1L!-^Kmtc=%V;|_TLWqkLaTuQ zOT7Nb0jAVxDSy%-1uW-$y*dNIr8vzed%L0cQn?%8$?7mrMmnRrXe!b!{2I%VpuYBj z1rTitWZ?A@x`z58eWv%&bi}k`V_%Df?`u0&vqbDV=bm>*qdrH%oSh7L?AKL>zT*PA zksAuo1Rat=Z=iWVqSRv}t2{JT;FBqm3jj9Qi7-wCSZu5})P?pW+v83g71g^2+}=bc zz<@yu&rp)jRwAR}Q4P|LJy}(`)0hmK{3~~W146WUG;Fb)ENweXISh7l#5Mc8jdg`d znA^lwmLWwB=%8o5Ah){7oMY8Ri+rLkrQr$mKq+MEG4w#&%+0^b9vQ32r$qqfDb|+ z8I$9raMde71EM8?hdv!t82y_B}1Dd>WofxTkeUhWH05tu}gFkj=A-|pd&}D z^vGg5=Pq=sMigF?%;WBwi&_z7G3Wgz#Y70l0YQryZV!)iUYMKjr4SH*uPWQx#LvQe zEy`AbGs(aFv39Sa2z2&d7^?o|)0-BT;pgx0#jNdghDp;+h$^Jh_#B z2vr-LzV8#Pt++L?WX4{f(Z+V@faUYCd3AEf0~Ge8J0zf<+ct-81-6CoU;^)$NFu`c zP$7!IimkLmS29~<0AtWblgm3)sejrRTxLNMHv%UygDTqxm7`N^RYdQ;EcY=x*)z=ip>s5&z7(+G_)U$7* z24iy)-la>w@`H@E|h>M7vKjd zqTA%9UBMZWc%TO^G>y|>myaXA`!<&&;eyVR6qBsn9cP%SZ;?#?_BGUpUw9E`SQ-X{ zrP+4=VmvoDCdSlK-F904WU|hupddNdf<}CsbndjBqk`_AFP1P`uV+{skE!1WC9Pgw zco`;Lo{2nhgRNZqK1?H7<24a?+jh`Wxpny!@22m{$pG`u27T75{IKRfBA$i4IFH3o z!yn5$oU4{bpI!0LoV6hRlJU19Y!?=bX`L1xCpbATF^zH#Rb*|0Y80a4A23Gm3hbYc zX)4)n20hDgw6Eh}r86^c%D75z(?p^4l1g1-ba46(YmJT=MKh46QnjYz(qsT`ecGVo z=skYwK|k}8hT9bA{P(~>oT(6BrIxiwKoCqDLk}=*h$WHkg_FJ`y@p~r!z#5tbWgaKhcIM+Tsa$oqSBj~;1=tZ(X z#D<@FP}{C*k~X-ft&S`gG^Q#46YBb*YiaD8J<|)zivK6R2VLARc^tEDLFH22OJ9uU Lt_U=09zXRD;$w^5 delta 1186 zcmV;T1YP^F3)u;O000012`~Tv0YRHU8oULU6cm61fB^(74I_zShyWHu1?TZ$@q^$U zC6ZVR5ivEylwtrAfCXH_atjJ-9PD=K_FC7%>I}13ZBM1`Mz#%yXL?7lU5UU-wBC;$inC{cila@9NwFA%{b3DaK8z!XRNAVWBv zpF*heE%*Qe0DvTe#J1p>%V43?A-jbh7zF?TKn>JL0u6uwfNz(S%mPpE0C)-p6zLF? zri=pHf@v&&`X7Ka1zw6QG=>x+?bsNpU;sEAU{i{+zQF#ur+wl80ss^)t<4ZAV=vb+ z01CkW-~|H%Jw~lnBEe(9YfAZ$;U4<;DN+6=)i{c37H<(?iJCc@Jb{;69zzxKxAjY7yt+a zx`0wf8;OA-Yx`)h7`Va671nk;*9NQp_yh=bK*9utm27~Sw-LZ~mIPDHAi{tB;4wr| zR-P(2SC|;$T$R0BmmL&j z6O=g}fSCgju>l^Q@N}ImcZ9l304@SQ@0cC10)TGtk(%JVDUqNS=!@VO27I!cdyPMT zzN|rt6Tp;BMlaK|m3R|R=t-z>QWA1R1-(dk2`|7)JZVJ5!L7T`F|ED&s;^K$L4c08 zN0R`UPr?Qh6dc5uVkEdtoN$1-f8YE8jD%KG3yF8FUk+aqe&+}UsAn{5aj%>J_=~3M z*%XRjpT*eZ2OoDMzU83m_#2!K(v_Hh`oI0#&X9;XDJ%)6h4TDe(18H}u!E3f2RSB= z$>K_SBXUgs(LjH(uS+M212Z(qioL;m_q1STeULLL)4IBNUr`n?Em+nD6ey|%7AD=` z_fm}6jvKxJxP1{9<*i@$-~r&~>}M%l4ENTy|D_T~?0>)SJUB6c0003&0B$C0&<3v# ziTEDC;6cCw^BE2kOeFFNH)}wGQSew|`FzNcS>yiyp!nQDtt=#fsgubVd;gfg01yHJ z;DMFBTl2?+%#y(nKmwHYV;?%qfXRxguQA)58WK$W2EBxE0SxFxR8`em|NQm)W9yHT zK?N9-Pz449!^fACa0MfiZv_<{fHD{W00BV&If=9ZtH2wK0003&02M-Q0BZ0C<79pK A-v9sr diff --git a/samples/h264SampleFrames/frame-0794.h264 b/samples/h264SampleFrames/frame-0794.h264 index 57b83edaad4c496afd783589cf020bcc58ce86dd..e4c29c19863abb262fc0b5988bf6ba8d7407a106 100644 GIT binary patch literal 1196 zcmV;d1XKF}0003AFaQ7nL7G4syaj>3{+uWf-~z%h1Ar_vg)$%#3}blEdc6QlJ4aX+ zGqNKG;~DN){6m``{cQ@EYMuZH00saUbX`mb;Bz@M0XL4UJwyNk0Mk$i(Hv8OHT$ON z-I_pV|9}DrZ}pVstqy9|Q@;r35TY6_ouolV+f&0N7_bKID9&SpBMo%VV5k5ox1|6v zq|u6@(I=|pr?)eFg8*k3yOf5$MRNlm{tUnX5CZ@K0YCr{9{{pv0s!TJ6oJn-&Flxj z=}{j5C57Xo?u!4uyJjD!Dau>!@A-UGRLrrIbhe-<2Y?G@t;u|D&*23r8~_9WQFF8s zlVAV1LA?kXN0h3sapE`}WI%in3`>DzlxLNL`#N}2i~ueI?yZdBFi&sTng9U+hrkXe zvU3-I=Hf6QW%kgu-gz@+zy0c31RkeJdYvn%?IGcO-q!nD2nB!v695=6>*+RQo7o{o z{25^dl3r^=4iyn;|L#Nu0eiG2lLFsprN95QfB--g3>~~?LPM0)VGzTA?f?!n0FoDt z;gNBYvYGV7|L*}HjTsE#@-NLVm){t800aT@=+B@fB=BeNI;+vB>83gBEk$m00bdg;~dc}^+F0V%7mt3zn8@V zG#3Q`)G!|yDcT?)0dW}y$1=E-oBj5XFiu`zlvdXJtN&<_1_5UH7yQ~{j8LS=0_Ot|Fzr~pUMqyTY=pcZpy z`VWXaEm3@z^Z2qs`CtIV$Z3jYaXm}${YVogARqxC73ysPITSDS6K_r{?eg1Ov`|0Mlm*oe|bo$Pzwv11aeN1y>6*oAIz@hv7&O2?h&zMu{R`xpEX( z8HX*Hh{ylpx&Q!xYc>EH7Wfa8Jonz~+h%ORsm^zafFwEq0D&wDxxiF2V{gV@Xb*q` zW@21Y40`zk7y8i+ISZW5{@jW3Rk5d~|l>8YLZqJS9K67Y53v3i`TKtH##wCY~4h0z?~xV3nF9j-4jzwje=1LSoM`jSObz zh}RI>z*9E8%kQ89z6>A$00BV&ZYGchuMY|FJ|}=W7ytkPK>#_4qyekI8;k$|0YLy2 KLTLbM@CM_~8Ufz` literal 1078 zcmV-61j+jV0003AFaQ7nL7QM2yaj>3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxLL%|4%;s65indZO*!Tf+Q43K;cKsx|A0Pv0_#Te@&^JGH+06z(rO{V4kfKUkm_y92w8US12dQ+v7b07lDzz+2Q!2D)&Jp?;**Y1=`DhYX{d7fri={4g*vp`2J!7I-@xu{PAfN@ z_00@k(AVX(ZlKmFH)7KTWH@1$QTf111W1cg(mpr);CGW`)1Tj;fCh3A$6|GD71lN>1H9^ohZK*4z!h9j>QNShp>O)ubw z`MsI8=EP5c0z+~coLBmaQ{Jx(z#K6@LQWKl(oibzSinF+nVb%atwOlN{n|DSjwlvJ zUeVFN9l&J|hsF~@!xh5uXa95q0KsYcUD}~cI*t4Ppg_RF3p!!Mz{x53BSv5D7zh9< zd#nJ*namjqpKAO6`P;_806+)>Fr$HXe18T#N8oz*`M>;$1|0AJKmafd5jN*{-MOF& zE(u6v002X$0fM8X#q;_ZRCMQ=lv94mJuUx*fBxZ+00;mG3yG;@;NR|rte?Ecq7(oG z2s*E50Vi%2UcWIBITpjZ+Wr6o2t=Z2TXNDG#t7+|gYE?vn#EP{|J)js6?%DgpKfCw z5Cjnn!N7Fi$n1;_guo@}073^t5@cR%`{j`*zrp+4Hq6X=;N~3LF4t&kOJqAYcfEutYjF2E?&Ii+0^@*kr9iZF$Hb`t|FLe*6T;7#Tn< zenVrTKLNZ`{$Bwy1`omn4=k-4@Jl)m&$v%?_}N^;0Nvv&t`m+Q>%f|LU*Q0>?0=fn zfg;1y&L2p_z6_aadcV%y4Cc^43v%(h*aoi;3GqHBfI1ie00BV&If=FbtH2wK0003&02M-QfNJmt<78Oci~s-t diff --git a/samples/h264SampleFrames/frame-0795.h264 b/samples/h264SampleFrames/frame-0795.h264 index 1e3ba6ae355dfab3af25353659302d104f0f81d6..b6c92a1888e7a6cd3b08040afcedf5e90b686e0d 100644 GIT binary patch literal 1176 zcmV;J1ZVpI0003AFaQ7nL7HG1yak6a=;yk4kVYun05fgAQ*+<|2nK*qUIHC>Xf(5Z z?3XA@4?qD-00aagF8~1m&`3Z*0VP!fco-stu1M*UUUZ<5KWU}#Lk-TsN*SD&f?}cQ z(yQ}};W3s15AlSl1Wp$sUDgEezzKjc$0+qa-W@8FSNp&KC;`PmHquk6i23SjxEXGs z=|)vJ0H}n2|9fHpin-~e1z2ZAV6B(E_M z1Cq&}!XpFJ-jbhv_kaK(BfuE21#pEzH*hb~#y}ujVZZ00IHPVe4CCsCp%>&E%u*Z>&LV4&IG$YSIZ7lJRa05Gdtz=E}h@I5+Zb_tXLZvF+KCa;74 z7yunG1E2`;T{5s}`vQx-pN(Bhd>@ch|NH3x0%-^UVTXmLQ0ZaezU&r(gfS7+Ez*qH8bzygCC~yOR#hNU28+`9;wk^`fND6*xF{mt&%jMQFR&IM zP#iQ+S_z}-gL5XNVA5|(1}m7tKmhpy?YKGNeI;Uo9tzr?PviaEwKfK0zmaEvV;n3% z++I5^&XYgiKutU&pup-NNHOYttKT!L)L%D1fo12)Z=4bC%OaqGK4E7jACB*abF9SV zb^8M3WCoyxm*A`C_*$?FS_6(x=Mw+{3BV{}py5MPXaCH|Xxa5Nzvm=_ya4fu^}+xA zSP?ZCxk4N2Q!-Tl`uYH9)h$`FL4SW%HC2EA{1>D^s4GoCV(v<2k-|ZI2jERSFQ0=L q0003&0B$Cj2Co2kFaQ7nK>#_4rU9$K8;k$|0YLy2LTP|%@CM^w-}I3H literal 965 zcmV;$13LTw0003AFaQ7nL7RXYyakbe2!;3%#RWJ3KEMD#APOOz`TZ0?{tw&$EW#<`VKN$KlXJj9Nfh#%I(=7;AY4a_7B~#xfGGe3306A|4!>di zCRzf407=lTP{htrW)}vrn=zbQwVUCN=}srM02}1v!RRw zH3TYY&5{j=S9m}J7#tMy{0$Khep(&p02nRg&}h#f011&F<_y7t0DuetA@B@!+Gk9F z(dZq&02sU^5C+_y0F~{u0(f=JmIWySdAtcfNyCsJuLplv#@Z1fT#Q2qw;y3XN@E z(}?gFfV1W$aSx#1SAsG~o-cVYzccYtj|7(wzz8tG9lDCDKJ`MxZSK?ppa52s>jUno z15))s1xHK(EMn+WJ6`urm0$oM2m;N+$9q=X1^^v{3$VT`vH^N#B<=+$`cD-PSV4O{;64EY4o&R6;LcCxyYB&qSVwO={= z{rB)7^y^&@g@iYzu)1@4Q`so*^1UfB(=M45o`C z->d)ir0xFwFq3MNG_wEO@IZdwxe%DAeQ*pA8b3?o##8^@0979ulY)XQpZo;V!ukO+ z1*ruEf;Lug$bVi22AbMfKN-?7YYbzFh4ht*2z@(Ai`yUeii8Ql6<7-P|tjq)y$kAPlk-NjNeZ1&iS$O zzpMu)L*pgs6@33D00J6-}vL{w;(& zN3*+|JTq1MyYRzi3k1tIMq;#|FAnKh!qa=P#ykCZB7Y=@E?IR@V%(h;0CV%crX9}0YLyciMRo)z#EJJ00BV&6+&(RYVZc*l8~4< diff --git a/samples/h264SampleFrames/frame-0796.h264 b/samples/h264SampleFrames/frame-0796.h264 index 50c1af36e416110e27491382e670b64e6b954a7a..585f48f9c479bf9b6bcb03821031a821ba18d743 100644 GIT binary patch literal 1832 zcmV+@2iN!j0003AFaQ7nL7IRXyahKwV%OC4y-!iU|AY{UfC57f409JM8B#=b;Yq0% zffm~YusjM~ZQ+~O>AT{kT}3EH01h}r0fNW-hoMpv{1EE$LaVczpKns+A-U1@5a8%rW6UZaK4({LpVTRa}^RQNDLHGa| zuFwLWtLJe5RTvo>4t_uZ>KtH()kl@8H{DOD5Jyxnin!|%$b0|{ISF&^rFh7aDxdw} z20#M{UU0!}q%T{7r~a@300dl3mRJn56*o>!00|d>q8;@w>ig8R2t7`c^*UEk+Cu-} zz#j@e!vF)R-~$38M|n$xR!2Vo2LXaQ*7RQR>ptsW_rq`jo7uuc?T}45SEy!0HL!^| zT|nI02_FX{mWiTiAN{-lKwzDdhS=O)Hh4{%Py`SG(X<8~0Xpb~@Y!cguK*cD+-R1| zT@}KEIK@D~Pys*=2_ycrX_1ADZbSdvFA2_bQVMvzuEz`lNC4Q_h&2J_Z_l^`Du5^p zBMfMpE`|#>{@?}xIibH`hP1#a`Gdd#4|%9l!q5x>zrp}0B`+p;ULknYPYc(T!@vL# z0T3l_>&6E2Sh^IVUxC}^OotIs%CrA7OXh*--@sG=I)X0*l)|Lb!{Y(?pa4z)4D!Gn z?-~W)8l>ny8ejk*3nzeJ0H8+*duCbgz`ki=>rvj%=fe(*x z02qSr$e>ot^3qAK*6$`_sOsf)UX%5E-oV{?K|nw`-1?0dGC@dCtl2^u*@Le@BcyVO zJWYTAfM&V?Z~{VF#)&~5tTC#~1A%yMfLO2In5O6&2mp|Ha0CPeaQD{v$RZ9IB|QOX zrRY3BP{cw=X!JpUT6TOgMr1$+0V6>qAG^lMq|OjU!Cb*Oic0cx|C66<&;bI`vBr+6 zb)MIMZvX~2uqjr~-o*45v0*S_=#c>ks#X{?lmIvXcrX#*1-DQR2?#8S8GGpC_3S>@ zzv5s8!0)sU1P77B*oirNu>b)BfB+Cs{Qv<2fDT8z2tWW^YydFfN0BZdX@lherqB!p zf+!&9PN#zc7gE>M^yWxmM)2ZJ00;;X={!=7{RWd?1rP9y+w=bsA^?-~d4kt{|rzs>cwlpu^0FiVP00-%Q^i!3xbhB(UmCJt%kn-&<7P zfB;|=?y%M+R~wIvcJP2@a3HLmF()*bZ(^{(6DS}nnt?F>b#aCQC*DBe#vQ6hS7{xy z+yV%TAG14_$>xmG2%^0;=l{RnFa{NVz&ZV5pmH}tAO7&{NMh{WCovb^U<0fJ@DZnM zu7gJt5_of2jUyfUba< z0>HcgX8%{-r-k$aWD3%X3P25;k+^rw1=q(!-~N_r5fr`vVgQdZ1w52h7#S%5Q7WFq zhR(chaev4VLGdC<$_D}hkrE;TeilXpICH&MWN5|J6tM%bCcK#B(|hOl00H%UevVuG z9jSQ$9gjf``t(462S^!dU`#wG;)MjfKVs?%eaegqmiqblT8?Vr=l2M9j78J2{`&j? z{Pk;kYAgT#x^5&!S#_4 Wr~#|M8;k$|0YLy2LTUhN@CM^>BPmq? literal 1468 zcmV;t1w;A(0003AFaQ7nL7Si&yaj+y00cH>cV>5HcXt2y0QLZ6I0P&p?g$w<`L4n$ z=o2vkDhmJufCMoh_iZdwz#jM+nZySL5l0K%Z(kYek@vO?2Wr#fe>hJ>3U~krup9z< z;c&{P&6WZ|U*AX4yzjq zk0H9e9KITi4S|3gfj}J$fS|CI2hh9avHik)|ha14oY6TA5ES60DXm0h4GG>F3bO5U<@$AqiUl( z9xcF$N=^_0a0U(Gv8il>e?~+P+5iB6C@3W+MEt^?7zlUb&L9JVG;;Y#H|R_1e|Qg) zBLEufPf54n0B!~`ud!dDH_8rc_&fdp0Rx}_5DkftXjtBO36^do z02l*q&=OcMzyTpRBT>%?REds|Hb=lgUI4?1!H6IOuXRH}Xdl50sD&KE1X%?q#sB|3L=C$uARmA*r7e}kz$jUE zs}W`66FJ`)$WyBkz={|EDz<@v7Ti|71E0K20AA`kKk3`v79apv#1?2lBMF>*URW$T zqIa4kX#t9e+Vktx1z+4APf()o4oHh_f7mi%Lh6|G&3j*Bg^g^N=75GF#bkCq%PimB zqc9my1WzJJiTnG2&k$^^hU?Q#{{{p80%QvU@CaJJ>+cPconeQl4MhJ!3T6S&X^V|R z-+-M0z_{=5JQJ}6qD#$~7Um*vHQV65md5RfD@YNi88qh2I0>hP^a5lG&58;@33}pg zzS9lF_ryRkU#>>r0KH%c7;?ZRC&F_tQECU8pl2`75-bh-)b=u+-{a-Lm~!6VxUW4t zNRks!ND3xMh#53V90<{F^-g5dM#-!|>`6B!cdb2sP=2p|j$YopFgXAnjtK8>dLaN0 z;AN$OFz}y<6cX4rNFJc4oRm3QQLy9H!$merm-+p|AC5HcUVeVSKDN~S)N|kZ-ax)R zVy=$=$R#qRkW?D`?#w7Laeyu!aBwypOH1=mj_?B1xKYYM@G)l$McBX^H}DbL|55`4 z6m*wYEewD6l6&5-6-t$TQG0+sWAd=|7UR|L##z6aOHN<>@FpG;&-26xz&JmL2}%AP zgsDvE5TbOs_5Y}h2y0Z~biT*KR{h_f*V2A}e*6#60003&0B$De2Co2kFaQ7nK>#_4 Wx&f=e8;k$|0YLy2LT-R+@CM_}`gW@T diff --git a/samples/h264SampleFrames/frame-0797.h264 b/samples/h264SampleFrames/frame-0797.h264 index 7851c787229fb651b8339182e45653ab03b48a29..9e6eefaf11f0477a88cf5fd7a810649a2cca9216 100644 GIT binary patch literal 1073 zcmV-11kU>a0003AFaQ7nL7Jc%yahKwLs!(4y-7&$LJo6&Cd|_S{s0I70svqPDG#S+ z$NMG?FcC^G*?<5b6ami+mH;FW3=QbR1#MS6MxQoFFaTkCt@XJ82mk~E3MYdyfQZJd z6iuC=00;sOc=TqlQfy^Hyo>MNFc<&`1{6l9Xgh{Ez<2}#J-lC;&LSGK)!~Lil{){_ z)CfIDlJz22QS_Wq<5cs3CPbcKG>S9;EYg6=JOsWhX`v~J2fzSEBvO@(*-Grs-~ccW zpoCME8se=GFcVkcs0M&8S4#*RH38fp1|sfFi=%czz+Zp2Z8yZ zK&VNVm;&G&VA1*0NrNJ>JX;&glQB2SJB8@RuA9x{%6w+QKVM0Qk zC|Ce@zyOE^1Ko_f0)i0nJ3sh8_?u>I!&h|-V>kf3We7m4kZ6-l8?*p`Lj#Opz%KBT z!-ix1Z1jM>y|4I~06+i&Q%nN@kYz+44Aw(*5C9M<009DgSO7L3$Gj081^@yCAOIjg z*kk~FH*@@eG73ly8#f_)03}l^h(b_cLh5SzlAp7o%Ede!0SJTwSZhG%NG2rWcwtB1 z>kgCv1P3i0z$iw7d++(Yq4j<{sTQyW35a4aj23kbcwJwB!OsMP>Pr%(Is=VDG+F?H z4UDh=4h{=x5Dhp&ghWOuDmQ=L03a|?qg=BBh?IF%TT~cgir@c#FiKFsV4e@I7|Q#2zR;8d*1gs&wIcBfD1YxadG@?Fd#90zgP(nD`gRZv#^XT8M00P zKvI8XlvZs@V- zD&KqTAptH0fd#g}1AA#e6bZReUcqCc?yk>T{tz|seGVVZKfMJ*Wb-}|%iV+A?gk@R zCtZM<0>GaD=F8;c0p}e+?ndw=aPb{X-=6ab0294H0s(>Tz)U(DK5EAeLmM=bYJkN&{SRocl|619Cufx5}HULXNM2s^OG|D4_h{2H{U?i3S zVf+xm20qI|G$sDS3IGMNfNP5o2+cqy_)5Ydi82q^M-^0f#c3~o-jVeEbY2A0`TYD3 rumAu7K>%(hs0Ob9crX9}0YLyciK+psz#EJJ00BV&6+&u&YVZc*SOl{& literal 1071 zcmV+~1kn2c0003AFaQ7nL7TuDyakisNeBdu7~leS4h_p4Meqoje76N6ww5nT=}%g3?y2$CxF46Kv__Hg23Hbl&oDjP4EC< zAcRe)K!b*3;vUx_oKErt0N_dg02oIe0>U6q0T3)q@B#tHlom<(2?}9)XCx9c--6?n zfN06I@#HODbzWlO`2auwAe>n7@%Le@ARJiS0|Rz|LBJ}`)MKYnNI3zUfLH|KFaSUy z-sd^*d)((e?*IM(Ea-v7$MLYhfW`X#U?V`Sl-L%)j2&N~4010)rfv!}xxH0q4$? z$5ED`4P@WWQ@VT&7_?VaAcp^kCPWzY*We%*_6WROQo}gk;N;OU=yLV%u#^P276cbQ zm;lQ~4H2a;^{e-XEFK#h{{IEdve04DTmAY6O6zBej_>B+2p;D+8HHe-b^>Gz0)HkP z`6lBEn;mE!!fwEz!^~GBH1`BCfB`$=fCK{>0GN13uz;g_0=nVIms2WBV&2mIk9Fb&5}3OK#+0Q)<7b6UbAizu11QpAG#oc&y zhCSc_s*hR`)Q7o&)u_rf`tr_U)rLT38N3hJPY9t&Tzg3`erqVR!s(ZvblW2IIObx()yU diff --git a/samples/h264SampleFrames/frame-0798.h264 b/samples/h264SampleFrames/frame-0798.h264 index 0abaa90dfe9a1391c0e16e110d97b9d13417a4d1..226b2b79878498e3efeadb8179e558156129eaa4 100644 GIT binary patch literal 1267 zcmV<~A(bzChf!*1vw0CrX{{SX(6lSES@`+;A+JFE+ zPz#Q*0FnNbHvni{2mSwg2Pwh@a?#dY|6ljE+cRu^RYTwb0??9-y1G0Ev|?W4|8jr; zzygZ3oZ!tdDk|6ZlO1VA0C*Z`%ubE_@3aR!HDdtrEMODfC5qU<06;{C0098tG!j3c zs8*!sfP`25s7)zl`qzI@L7D_2ZgK-9AsIv(>g-pZn03aAY zrTX_`L`|c&YW@$v11Q^sjda#iWHb}VGjO~o9jufRc)qd$KmkAkgUX_b0S`zSIl)i= zcm==!>N8Z5_4(FmGd*4(Q@8&UECzfV`I!bsaT`b_4Oa)ju&1C15G)!iDJCi> zxc`F!ae;~miS_scAVq8=5Cnv<0@{)|L6itk2)O_t03bquf&s0jxB8cg^}(!KkH7xj z5{dyDoh&ADMg44*68gZvhIWf8cq*$zCQtY?1tjLE@~-rQ4gdQ<01yKJQC69jrE*Wj z1KofC0R=zdgKe)Sy#M$6^QG7MlAzaba{s=k*3^u{@IV=e2OXg^)FI_TUX6VL%5Z^P zv~`ye>mUi77z*~FWEtMCGRR<0o&;9HF+2fK%Fw=_?7DAqcU}MhfVhH`7{LLEhbBF^ zMWM(Tc)$i7zTg~Bn5Yd#NG<>C2?}@Xj?7Eo|Hc3gum|8fL~y?WK{SOR002Qw9O+O0 zzX-qpKqv|eHVpVgVd%e7T<(6yz((oo8 z6{{fdr7jL{z--V=n5?L{$l}_4IPO(ncY5~v1d^p%h_Bojo2~qN!F=uK;*3 d0003&06B@Q0jt0pi~s-uK>!s(YXEBS2IJ23GbR84 literal 1111 zcmV-d1gQG}0003AFaQ7nL7U(jyakiQfp}0-00;;eCNny;N)in9(LLXM0Kq`fmvqD0 zyKqH2K|?SAtC%Gqu!f<_b^vX806}w8H-LZuKo0+1fCK=FTy=I2hwvmz=K_FC7(*rm z13W-L0D+hU`;K#CLhx(fOM`#`$zb1u^$z~6zt;dbH~;|vfC82UtLl&_aIm986Pv~- zD2w7;6kUCIll%YxfENxh5l&jCfo0+-B!N0>+XMkcf8qo)iP`ijk0RfI03ZkgNIXN1 z37obGoiZD^QQ?4400aPCPXIx%01yxQ@|l21{ooG)K;oMs6nN2qTX0P!pFx560iY^$ zL1CnEp%-qz#Y+GK4lpUjQ00BW?Q=}=0096B7glHRDPu3!F#rm{|KJ4!0+6#7s*zx! zz_xx2pdgTa4QnwmP);GHMY-XM4RlS56B{HXBr9+jIsrVtpdjMGNT>id5|_qJ)pq{E za8Oq}=b~CY6RY2G2)_ut=Ow4R8rVo8=a86x=JzurLt}(rbJfBGPy!lp1435`tfx<- z|AB#cAaM;kEFrx@c1N}Qg>;F05{VCl!H^>m85!^f00IE+pcIj2;$T2p{@N@CEiiC$ zEJTpL;J&x-fIx>-3?N8ZR>%pPc#Z?8uri)(kYPLnI1>*P@l!)#6&D56ANzm+5Cu34 zA#_y*L=}_gokGA5KlcEGfaN$SMnZVDq1hOR7kDv_G!l-6K1AgT-V2}j00IIa>ToV& ztzRl8DHD$)kkRPCu<`=J_=yS^swA0!418k)Ks#G#Q23)0VJ6Fkz+!>C^m@r<{l|a+ zAPx&ffZ}2(mp$#3v0LvT7*GHZ2vbIbr$^v#{39zP{?Gsf0RI3W0{}tI8keIIxHUhx zgaHm90C159&V`P_y?6^C76*lL{sLqQ04PAQghHGLCS}k?^KWnhE~X~Kri+1J06*WN z0*v9yu-H4kzi&3*{|9OUdHr(bT|B?wCP1y0 z0I<@oD_~R?AhzBJgWDo8?(=JY2miT|-^ewIz)UJc%z2eFF-A=ik5s&<6CtXA3KKi8^>e2lNCmJ^Jw0WLDJ@ zcm3c@JS$c~;X^j>zW?|J%>?O+%DCwN@0(XQZ-34DH_Ole$OSS*t(1L38(p}2fqlms zWZ$Q$V}*jVU{3je%l=s+Ez)q0YkN5t3|Ch=T zUlWA8#w8@-uG|0?Zq-2)mcUt~{a&B6l0&{|{*^dje*$UYSPbX@00BV&ZYKB!uK;*3 d0003&06B@i0jt0pi~s-uK>!s(Z-8p>2IK2$%838~ diff --git a/samples/h264SampleFrames/frame-0799.h264 b/samples/h264SampleFrames/frame-0799.h264 index aadc8a5d50eeea3354b0423c6cb36a23fcd882bc..00115383584449abc9c63eebae3fd87483f1c917 100644 GIT binary patch literal 1692 zcmV;N24ndE0003AFaQ7nL7Lziyaj^93oz&aA$K(FB2tefmHiA5-^9QR8megidi1`c zEUk<-06cKTw%sfLzrZ@W+S-42(+mVX*K~gT3bJ$3AAWE!Q8%Bjzu!{LBs%d8ykdvE$01yFiW%f-)RNP1Y8@&h& zAzIqk3dn^KAszpv@U$ffiw%JYBftTN*upHbb%H#ae()MKOaj|unmS1%;26jRQjlT^ zl!XSES{{ZnBGM#)swq1pZh3$JAbtP>4?qARY5)QONuD48z&!hhQE`C)!ph(XQ$Pv4 zM=(@R9^(rksNey5zyO7UGYR35p8L}HsHvG_I{0epUIqZ*5X)J~J>BpAh!&(M00;%E zZvxhP{`QC)h6R`PE~x|x70}&+4}d@jX#n#KI)%&ZO{1^<#sCGtF6!Lm4}&`=aT)*t z0SCGO9B*VpRsY;00s}9%2ewd>;wr!V1l0_NVv7JpU^VPWO*y$e9{ds9c6O6MvjntW zJNUvVu4)Z2E*Iq$^f`S8&KCj@qlpR=000mPsN?~YL#}UM0E6(HF#>5EW)jU%BIcN! zZZ>)hTOQkBcoy&rSQ!`5)pRfo0A&osG-s=qL?89QAS7=ZLjA{bA~0T1VoMXbJIFExta1;ssH4}zQkIZ*WL^pdN@ z%!|4dB_PM~;4@)YMDFkd2|$515OXSXq7{G}tN=|PW%7dXLJ|-K0N6hn=0SLu2|W3M zT$ejhy6^&fN(RAKQ<(p)21UV0V>EIG{(Ig)WL{uXUM~vX^^H|u`~ObzfBKqf8Ejn_ zp5-xSDL4)rdQ?yG)PmR|(q$3L-~VM)j&S10F(yxth5#W_wyiBW;J^e|Y1wR_jUkuC z0yGx|0HiP<3U{~|0nn9-K~<@BF8_U^0|Ftr!&PJ5N0j4_JII?13~JK<&uJU@?~ zz8DM`f{$Y$Ae_Uyg{^c*eP+`yKK#G{KsS^Ff;Lgm`1WjGMpS+qm;eX_fI0V?aNQ7; z$#VDS@B`-tDw)YV)SkeP+!z~dMl-8Tl-YE@{@_56k7ckjU*E9T|N3*+CpZ7KI1EmB z`SX9Zw?Jsw*7xhL`FzF*hHyn6z&0Q^jqWK*JXQP#1nP9E3zFaU>EXQ5^L zzy?t1;`)q%NxcQ{;245M_JVkxFo*i?3(AfGA5>G`sP%+r#|X#fHm|&4_@D{^V{(;} z2q*A|!iv!OaFD|*x$ImwXNb{1j6tD69N|!5t&?H@{Ldj zzyUHbkvXs{uYGtyYKN=U^e{sU zdyw^b38#g0CLnO|v@GxdsO|vp)oz5kBn}zbTKGWdh!rGX|G22B{6pVtB9}UNc0%_rVN3;+-5E2BryNt%QS36(? zs1BxvZ=c~22=WSBoL@kT#)#q!UxxqLpTl{T2pe4h7DhQ)Pfv|{#Y_JkUjU6j0003& m0B$C@2Co2kFaQ7nK>#_4t^upS8;k$|0YLy2LTi9(@CM`hw)K(# literal 1536 zcmV+b2LJg00003AFaQ7nL7D&>yaj@YA%zIw1J#eQBbAJRArGJ`yvjhn)(I!3`_=Ho zc-B9sPAc%8iIMd$;w&masKLMhg8d$H8S2-j;~$E0rY2xcGxw1VMeJ&Mp1mR15Yc@& zeUet3|Nkr+!Ha`160Ms|E(5g&_;^3!kcag)<<-hlE#xmNM ziUb!UwVN_F1U;$BdU(&5zkB!r1S{s|;k?H`&X?oFM2`g^kYq9qG}LF{696d6xSfSC zMIu-I?|=gl0MG}%6NS22H?jaM#1H=mm=~A65htFnae`x%LkO$Yl&$V47gp_P7KIcu zN5WpKJ-~5*0--5z1`ei~oYZF?&N_mj85yu}!-PrWKH(hh1mq0k9F7YFb6ce(!-^Pc5e(zu$li43o4O%rho9QRTdWC;LFbc^ro$u9jH4 z0X5)^BxCRa)EuT#6y*2yOW@cfQUXK~6cjKD0j@9uj4(;rfL(B6eL4T$5CSy;XAFMT zfbJ~Go)`VYfJbEp4H7+Rnvv5jtV4#-a|kUhuE&+N&pH0;lwa)u><4q*weql zE;SiA_>-miH~;{EfdR&yk#VpuzB{NA3;;9$7;OU)C2Fcf8Z8G;;x4GzR9?+we82t3 zH3u3tmJ0iSNbgMa_Hl0!)Y<@OK+<}q3)Vdw{ox-6_>?QidvJQ(AP*}53<4R12#BLZ z>;Gz`C4OvYU;o&aUqI|KgAE5pd?jE8+shi72+_-YZQcQoqt@=oQ4$LHO(X%xA%Fq^ z0|1U6T*TV~PS7-ClpY9T1UQ$87*LR>iWVXaH~=`v;xa_LRtGq0&1dd-F*AH!Yu&o~ zKl_Y;0RX!WDO3PW!6Fh4@c9;;00a#j;7XMM2!KJn=P!cs07DD{K%jWxPmO^FYnH*d z`rF%%@W22-40Aze!oSaJ)^FOY?+ltiLVm8fE{o?=u0Kf)N;PWFseMYQjRYBnG0~7@K6bv_j z37R3rv_%^Kt1JYV6a|WaDjcGbO@0PY2kv?y4$hd3F~^6m@Hqi10YWa#cw|<#ca?Yz zYk@*)%I!LEe+y5`KPmnMst#E&bS)$MRB_M1nt1%a#Rxo1qk`NBzX9+4fDewW)dv3h zngyC!JI;tt{#lno@=)i!gM%(ifznv~Lo@-X0#k?qHTotO4qpK>1ppKvM%YMrQ@||R zG?-#{cfiH9ZXjndyZzv2r3yRo9sT>ky

    pX$1bf9ROaxqO>&dUSJqDShT6#_4paHAE8;k$|0YLy2LTCVL@CM_Gm7_TT diff --git a/samples/h264SampleFrames/frame-0800.h264 b/samples/h264SampleFrames/frame-0800.h264 index b1983d7a670ff8e55fc39b52e328a8b406894fbc..e80f7dee0b681e1c312bda086882e9c04c99b025 100644 GIT binary patch literal 1329 zcmV-11S8>4ny+|e z`h%qzP~ZZm5RbMH42gjP$Qc@RP+&lxT|34AVnzd-2CS|Gbkrq*-~oe(M8c^G*5s@f z2qe&fNWYLc6S*<6uJFLjAD?e(4gxW*OaL3;A78*wP)RI)nh|>c^8o=qbRmV|qJRae z*bW0lyGESUVaUKTH#GDCugJg#hwiK#v48{#q;9DXya5NGP2~+dbdwn>u}}eXAt-UT zrAxZ!NW7dymQ}Fwzz#wce~vK87qt#X)kKI<8653^21rn>*+)O_fB-*c00}srhI{}Dj-c>G3WSy7Bp`HKGuT8R zElufZ_uqH`0s=e$hJY)CE~^h{w9#TbSP;z@8EKbZy& z&%#3r9TTxK#BKw4)AH$i`9K8npdXq#Yov~`vZ!FP#tZPck|pJUegF-Ba07sVVZ7?b zO99)AYybiTfB+ytiqHTg968`e;)|e%2T)Di%P>BA=7jG3!vA{YhM`}zlV_AjV*P*d z0}%$79pRfJ&QmZI5EJ3UUqC=Xb>n>SWB>*;m?$=P@)4=;e90ze9oAUJ`;;2*u9 z8VEU==3*N}tLF@Pbq@P}2DfbBRH#YUlkzj4=pgKQ5~b#;M)KI%m4uaV}K1f-noRBL4fT#93?y} zq*EAB=ugoAfTD_&_0$U+Odx^(hXxnA3K+Rgg0H|Vd;9T1z>6$Ls^HC0uW5t(OYoSm zBLD-|paI7o7l~Wt!0d3#hC4ooEa%!%2^i3ZXFNC)4=(#4%~%3JolQCGPebR_1`XY> zx?efOncR4QT%7ZaiT{_`DJ~q0hM(bEQzm+?<@N@}J1fA{0|)@91lF(n5fU(W0IjFY z25KbWZg56_zyW79i=ver+x1ST<8q(>n*h|m+Jq4dL;v#z`xe_T1Nak<3g_Svr~m)~ nK>%(hzy_}XcrX9}0YLyciLe2yz#EJJ00BV&6+&zPYVZc*;|Mfo literal 1134 zcmV-!1d;my0003AFaQ7nL7E^MyakUK6tD>BwwVK0M!}C(+3*1F00IF3aSYz?n*SVEzw)44^&d(Cm*uppfhK3BvNwC=djj3DpcuXBA;^ zYEpfs6^NbMOL#tPv;C-~s?K`W9iLM}Pnz8aSK)S!V7SBQatO z#@8lG01yOnL>eGL6<9|267UoN0RTXhn<@{8=XP^vLl=gN2w6=zwn4N-_k;i;fPlB3 z+-Qh{($McH0Ku;=P|+Sh023tr!IWTtAOiphd;=YRnbRONeg|X#0~dsY0J@Q|61~Pi zPY$`dz!SL1zyLgH4g+8ZHn8)NZIc25L4~1!%liTb7YYonHtlQy1`y*%qvFpQ2qpKU zat}ZQ2P6SGNq5jF0i*y#C=J>II}}I(BEwr9tcgb7)fi2H&h#&!Q z$AucF%;9iB3!kAt06^FP1P-@LfB}GH3_kz?0fE&$nv4tiKaYvPBogItf&&BL9PA;K zn?I&M|7ZbGRLsM2v80WK;q{JnwW}S_4;r06-2$fB{V{fC5*; zu-qo*#eg^jL%dr^7apap`+&d)Qvksdo-wrhF~dn`{lKLjz!PO5+^~MudjP-;pg@fE zN!vIUDsw-8K7dCGX&^gTGm$8jP)N`K1OVQE1OVU^duL_7ie4I@-T)8;1#n>}Od*fe z=oprhfr#+00YU`>R*kSI!yzz87rgkIY8gXu~f7yk;JfQSPIARs8lK!67T7DK6ipL|{(UjaS@fE6G> zaRwg&J(>Za!SXHYV-VV1+6-;Wr|v71Q0*C7+zn{BxB^oIttx@4IU3(70U=% zy^&wH`e6Rj{3a|2zyS5A0CC5K;#T=^I~+3Mj?baXIrfx-Ml>Or&kh8`%i%%{$_}7N z5~-8HXQoTfzQASf`|tjj&T%Gp9v~^~<4Aw!(J3w*W_5iPX^Wvv(sjVFVzRsqKrw(7 z0GieRVj@Nk;0x)k%m~DjgL8&7{s0F#tX(3PDL3mfSJ>R=|L(vwKlY;th9Up?gKvvx zFh7Af@UDIV8h`)*0YLz6CWr>F0C+F}00BV&If(^b diff --git a/samples/h264SampleFrames/frame-0801.h264 b/samples/h264SampleFrames/frame-0801.h264 index b9c4f54a46446e75df6721815f62d4882c211901..3e78b88f357ef0a0c373ba2c8fd1c7f6434d6930 100644 GIT binary patch literal 6806 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 b0YLyciKGFmz#EJJ00BV&6+&qMYVZc*?My^L diff --git a/samples/h264SampleFrames/frame-0802.h264 b/samples/h264SampleFrames/frame-0802.h264 index a318bfc8c7b2d26d8208413f47f896df23225551..9282b569b3be01dfc6780dae8104f0798ee945e5 100644 GIT binary patch literal 2956 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 YhW6cfjHqDfrTt*mJ6@y(^U<9D0hnhDb^rhX literal 1090 zcmV-I1ikwJ0003AFaQ7nL7HG1yajI*5)Gi?O)&ZsUJWm}4BG%r!T$(yg~r1?0p}Qu zgc;xgI03E)ZF3K`2^c-=#{>p|^~RE-7Vwm4EsQ>?P$qx?YiQ;0B!ue%Ctv^^36AEp z0RSaX?@VC^oTmx$^7t_n8V(NyV7MqU01c+v5>Bd#`~n9!6rJm+*trWN>wEx3;N;h^ zFroC1?8pDO9dG~;P!TBr84u4~D$@TK`+xw%0J0+pa9S!j$V;BiX!x*h;^7>Cqk=_m zaBxVyKN2Ua-*NyD82XVQP1{oX!*j|%-Uw`RFg9-ia2i@i{wSF=0LlOcuI2=awv3|{ zzw}@L2rqyDgirtoM1TboESF;%Vuq~fI^ThYk*hE6coMlb#=!$#DLm4E7-B0GCCGS5 z@4oZZb$@fE$1X4cckU*{~{>H0*pBLJvIB1P~o2OP@sSp@0B@1^@>K3z9v*ox%(Wx69)I zxIjIGfk=S3&j7$M94$mQ3LrrfG&gsS-~sR;WvktSVu#tx5nEZ@ak5OJqV>ieG>R z1Ucd8&|!lSgU*&=MCs%p4huKH1;3901Hj$|Vd`gqAQV|6#G4y>h(e94+rwXl#UlWb zGRfn>Mx@fHt)bKq00aRMbYxw?O&JU7>wv(SpfJETw!g+q=isCc92Gn(z)pbxa8rN_ za&>U(A9nx{N9uebnYbMgeCDz44S%hKEAi@6zyXn{G?wjZ$p8et-n9^M_Eu&DK2>_= z6np*4ubu8N6QDp5EC58HEC3=+9su-vQeGL2-)m8H^8?5&Qibw48|uFk;bGoiXAkzT zz|aVKkL$>vxPSj}Anv;>BBnpzP-6de|G(cM;HAtj;>fFS0Wk2cf8s&`oNxdT0VO@3 z--8@6As7L=88!RBjev%$#LG*mkN@f2m7v7LGHo#xJ0I<#Ay-c?m)`%Ugmpv`I4Re{ z5<;M)?^=;xSVAZoZ93%Ii2YgS1kIB;5JS%&7yuUPngf6kwe$P^lGbcYBdBe<`y^c#{&3 zrwhg>xu6BHCVEc*VIE*ual_ir9!DD{)93HtdSh8(>5b*TrhFS7P6B%#;RfFC_ll~j z`@<fPfWa0EN}|`yZeKft0`l3}iEY%jb1r;g|qe21O3ihEZ44{pK(LcZR|uXzf6& z8yOW?k5~W*4uAq?_%*}FgA7=*&#W@q&CAyiU3}Y)rt%e{C;x!K&_d(^Rg9`ppz9+$ z5e)0sA0aQWBme{gMNor-4Q$0VqPs3n@B+glh`)1j4N}qCfB--+7MWlMi|mPb1;n6R z-}fNlMjfh07i+s`zvA9!vGrab01$dKAy!rXfee+Bvj5zm0Kf`%aE%Gi0zwRbX*0zs zzyLrb0CB@$%kST9pmNe70IxKPoao5> z41L%rg?H_EVpAhVP1ma)B&YZoA`N>g#S@G<{{gQf7fCvGf51)1NI>Cg>+pwgy`hY0 z3tk*_0bt=fjHlvhj{s?nc>!xh91p<`d_X*j@<+koe1U%m8Uyug0uYUX>g2)) z3s+x+JB95GV@O)?X1_nQeb7F{Af0zgp=S3(w zfE|EB$2%1YxMu>-f{{t-sC{Su;QR;yQLqFT0<_T!fl_W;34+&&&T7F{VF!C&qao;0 z3@cZ`27nXP4DV!v*)fi#75oEr0H9m2hA{gqj5<-~h640m8~_3UKwioBekA7#c=QAT zy|;kD-W{_gMVLw7Q!u{(5HQ`pmA4j4m^yTy!T15WmkMd&SNfxZc*IUG5{i^hHRq&| z3II?C3xB;}qM}Kb)$jj!6#x|jFApVTUq=jzTZRHi0dcdSk(DRw*NOlMKms-37|xgu zwkbik0AK|yFRM9>C>(I9umj%W@f`!Acuu&TfsCl&02qT*?zm7^^vV#MwEy=2128_S zNC~34w7l2re9J?bW0TfudtBaMyoSrjT*C5E!TF(w;NpW&9TGl#K=kAgK~uvyd<6&* z1qowRa9RK+*Btas`@IGL=7b*Kf}8e#Jn%Z?7;u-ncI;>a7u5y=g)e|wA&vYLta`B! za!7N0_o88cm&6DXaGQx981a?M4cLDo4!b5p&YHay=knjiY@$$%ktO&&rZkLFgl zBX%E&g8&SPtPcsc=9I`A^9(T=W{o5+g6>~4aKv#)UlPfiW1s)_00Du_>j_d-X?_%b zzXR~YD6MPX`~QAK%#{Yad%u16>uPU*!T3OAaA6rXN=$3vJqURR3LvdgIJ#TfyaKSo z2XhaFaieRlHW>bRt`;9~2u`tiCz)i9V7;#Z06;8&js|go^1nMr$S6GpzAy}Q`hbRU zYJmt^8~^o*3|*V8%5MVSE$C!@VD!cgFW zaRY>K0WIooOE3yDHgr8>fD;pdpZ*U|9y&7QX?OqM30fO)IG089Q8oYW_)pLhQwgaW z*WdAeZ)VM~CY~3>eUL!FBvG=Qtw*|CKc>V03Ly`IujBrt2sF{9D4cGZA_zn;b%<3& yfAjt(G%yXU0003&0B$Cb2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM@CM_AE{c-? literal 1211 zcmV;s1VsA)0003AFaQ7nL7IRXyag{oLnOUSm&q}76%k$}3&OAfKtRLeGpkIYAirG_ z+2_Cv6b&1DOg*c&1XHvWGXM&?iAXFVyyXZ0<8>eiE~*p27yu9hzgJ)bfJH7jy9dMg z5+(D2Kqd?!lL7(0K!5=PunPAK=EjBK*S?n~00IJGSU2GPL%(Zp^}r4rzyJ^mpam=o zSJNO!;bBI`CjMe_h`uF(Mc3zuJHP-40dV616(y>87G5HPNE0T#us{??{vbn0ou5Le z@-6TH0sz1uG)ry?oU{rZF&ns1-Y^RQ0DudqnE*ks01yrO@|l21;12=7;+-NAbkTrY za7!hh!M^}J3cV0mX$)va8?Z4@!~ig(f?QRV_6N1iF8jm)1OO;p+nOL!#-FfW02P7% zzzPBb5VF>)kzk?VwmuBtAh3V>)@EX$oI^~DbHfxG_?s4HHb_WFR@g3dRIa`kcnUBe z7_bIoHb~Ea0;LMOjDy-y`%=+dkf#VfGxk^sFdz#cTMrLRaW$YJI}8UY;QIYq z+N$3mz@QWu8)c)OL?Zu#Fz^(@|E%y+{%C0Ed!DR#lAnN}TtXH0%pkNdBl`g?#N?{c zD=Yp2{%FX(-eQDqV`l=VFX#w3uu>`j385)$WYtwS;1Ys@x!*k!(ddmHy~HB?BXbB! z&vrGiR~Yq(cmM1B(=s$RI7IgnjtIp7A*K*4C2*SBbsB&9ec}Fpf(H=OqQV>0Ct`bF zxK~J*!6=aUOc??(0g;~oU;rQv>H$g?W+ns$ukE71V$%l)cAZ3e;Ph|apb#OI0|*ip zRk9*xoK1@`|F{S^ z4pV}JWG9O19gzrecY%y?ppY1|M%C`{4mucCLo<1 zQ{edH4J06`uCo#U{5??@F@a7rU}#T&?g$B|g>v|lTp%RD0H=ZRvYG*gU>r2}>KtY= zghhrniFDKLz#&r#GQfm4w~U*+9C3h~VDy#;QWO`u$A}=IVsTgngSLpe@D#{_?jlr_ z-(f&pp5wwF^a1jKXkn4@$qigeq$?aFfHKx;KI{UIAtJy!!uKS!bHV6*=u#NmBr5m% z@De?5%?>BftF@sM`~OMp0Fu)U>kGHNvw5Cl>bwc3g>fHb5GV;Kh@+<^`-`XaiGTor zB-lmKYOnk+0RvUhr#QNKut*^gz48$3hyVZA;jt4I7zWk=00BV&ZYH1xuK;*30003& Z06B@M0jt0pi~s-uK>!s(Y5;2R2IC3p`t$$* diff --git a/samples/h264SampleFrames/frame-0804.h264 b/samples/h264SampleFrames/frame-0804.h264 index 32ff649b4050335a59b1954b4de35be8854fca3a..1ba15edce24ab36f9cbd02135f36ad21ddcecb2d 100644 GIT binary patch literal 1258 zcmVd}}73t#|=1}20Jx0;zr4~IS1 ztTey?Z~_li!BZ9Dqjs{r+a`DZl{;=MbVAEuEx6 zM%z=vBp9#;?I_M;gCh-e!vFw43;+ZL002OI0?C{R1C{_%2Rz?5upa}ZM0^02Ck-7s zcm4I-F#S1BQr}DBqNZhx<<4;C04H zj*I+R9GnCJ3veWojPj&%bnvJC;{XeQ_p4(#OcUGp6F>kU5cfa@6PY!N|L!9K22WiJ zT!V?5G5_yU(6Qlt0Fwp>AfTrJj}e+rm;hYbR(TPb>HvRVUT+<90NDqAgA9x=Bk}zf zy2gkBHVy<}m0XSm!)CQ#;y39=TJAvP7|WIh9KtBf!a=m-uICGJmFd@jp#}j8D1Y3f zYO`Pmcx8G(%-~fUtNJ12)DF{N8pa1^=2Lb|#AYg+cZ23?`p_@5;P$NNbPz^%?@Ss_L zDI9|7ivZ%ghp*+Rt@=?j!+#S(F0}rRbeWUwE4U2A3!S8aVt34z$qD z3e=$SEwU(zR-gN{E_h9j!5&FSfA@qdNI0gAZ)y}#mr~$>$`JA!Bs6s8IqqEk@Bjn> z-vI!rq!hY!J&Z3r@8AFg0n`DQz(S<$8dSLC{ipy(La+kJrF<51cfJqQJUu~tm!bSy z!Hk#1zyXno(-fV=N)nLxNE2*8zyyF-sk8*-P%s&@u?3F{<@aVmL_vXQ0Be?LgQ*$c zN(8?#Ro0<3q*#kj*WhlzGul@N;e@!i%iHcO7%s@QU@JTIw`Oi)u$+yW1S zr#`aZvBIHtwSdB8!~MK2 zCxo%EK!~kCFpL2*fD`{D%#8rU{6%_4@z@rgC!2^|&-_mS1R!NFC`k0dVlitmMDjU- z&^!PT40Fb>7){mJtf4x1L=8*^23-(NRcM!w82%Z-($HvW=?sOq3OIIzH(}<%2%CKe z_%i?mF+=b>jivW|!$-G1U;r*|rVo&XKR18?ASx?p6&bMf=$^99bPYw(oc=-zdoX)P z+d zZPsHPU_hTL_vhC4r0c|JsRk?H`_d4-1|I{j`5_wf|2VP0YLz6CYT1V0C+F}00BV&If*MC;$Ke literal 1165 zcmV;81akWT0003AFaQ7nL7Jc%yaj>$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6n761$pf%qR?7xT%Bda}>}@WKF?u8=TH zEp=KaH@)8RfFULAFk;rOQES)#1{LOs!pIT(DijdGBsqN3Mh0R+gtW<<0N*`1@Bf%8 z$H??6wFDgdL66=GD=w#Xf?25Dq|*YjVQ_uUoAOH{w0UZ*$1?IKCy%^PD|Nptc(H>!7gXRL}NXbM>U!TDT* z6pO~1HpeJj@UDPKg9DIIOMnqug%!~5fCRcqXQDPF00Mto-4_VDfL?&@*f8kJBE28c zYbEd#;NS$vIPn++U#`ADEe(=SYnS6?udALQHV#C#VDFmP3kN~GQf2SQ__q1wxC#(p z5aSfwTQdUoz^TP@(h}kxyLc{Y>zw`bd;tM6LR_GcB|icL1DPn!At*pD6Ek4Cn~``i z?!p=Xb1kQW9&hph3;~B=0FV-(I5;{}^n9ESim0yLm(mPvt1Rb%LjVAP7{HlP(filu zA=vf$kkKH(0h1#j01#t#>RvaD&`rbr>!X5w!00IEu0s^W|xiVKG zz?OpF_J_l8|5kgQABXpP35sq8VBu zEAs{^BJ(v}+BwXj?ihd=fDI+ zUw{B03Ji6s@GPA?r?sPeF}SvoA&dIR0$+?(b+42@Bq~2YgM$zQ0s8?j$KM4l z9g425ek?#>`(sx@?+p588?65M;ayCEB7#+a{*)kU4!lipo%-PfDM4WJy$tuzWCj>2 z&G!TiH+%pO-ndi0Mpr)o{V~T%l*SR@CY}@GLZk=*JdpgI1t_yW^ah{4zSVm(+VCU> z{$RZ{mU;%=W--MC3G=P_>SR5Sf8ZfM;ZiQW@O|RM9T0KwI`3qHHRt|uL$ZOv8Jz%b z#CeqvHb}SU`^ExOmZy}!CMSWZj9%j}|Nr;@w+5n~x&z=&JSza(KmY&%K>%(hs0Ob9 fcrX9}0YLyciK+psz#EJJ00BV&6+&u&YVZc*FXaM+ diff --git a/samples/h264SampleFrames/frame-0805.h264 b/samples/h264SampleFrames/frame-0805.h264 index cdbad849b9762a83f20fb0fe887f9bf95325344d..450463939444ce9779ee3fe990957b55244d1090 100644 GIT binary patch literal 1473 zcmV;y1wQ%!0003AFaQ7nL7IRXybrJv;J{c*0FQ6aJ`GMx>g1H%APSJiG66(9pal_7 zvTraHAi!T9AOIi|zzs+PJ5xMJcQ`8fbHOhe!|0bZ)^ITRj=TVs2yh3fEuOYS$;9&o z&9Tsc@B`!gk;+8DbAs0hQGreQxJKJv_|7^X6^q^4fOHaMUC%-}GOKtm%i|)a!W=M% z^oA&A3|H6V!RT~3Z#^Nu{!L-e00?z$=#y*U00;-D062phbTAcZzjla{9Y7)g0uZSJ zl8&YmNA;83q3@W48lCLmhl<|n!NPUx^7tW!=U}A_{t1eL$r8))3fZ{803cPy8pISi z&1?@VzzKjDP^E}b5;k<&k7w@y06+==ILIdYjD1m52vu3&&vyc?Sx`U#=)^bXVgSmz z6g-L1(gP!6r0BZa#sFeR0ZxHSEr~q#3*dMFFes$XDxlr3&B5TdT?>_l)B*wcu5gI( zbsqpFLL33mF9>w#H0wZf32o#|2=yKRr}zR5?qOrXdI2&Er4$r^8b2w&f5NV&kql4& zm>c454q4!YLId@{2AAFjJUBSp{!hPNB=lWrV2dBSQ{xc{5KZM@zkjcM7{tGq^AS!Y zc`<|ccUJy@8v5|^zB&Q#@DgQe&-AQ9pZ(hb@G`n$o<-2F-RKzgV@Ii(d*8njf0$Zt z5Bv0g8(;%>Q;w`mPyg_4fDpdB81#F=A2FpTARs$K#>#096Ovqs&C%tYkj05PZ}jum|#ym*rFh%|Hf><0Sr+54&!Nk-!Reb&zO0M z0PFlHFv!RE=;cQc*tH4}^%QuPlK=30004k+7<${_kzMGM@@Wy@Yy=^Kl$#1ETh#y7 z-`;`!uk$4Zf!TY$z6XFP$-tnjk>jNWW}y54HgQ^DkcBwy0@#wWum-#nqB{GrU zXa=AN6`~=(e&Y=chd#Vv7;;*Jgn1Guu<|?rffeC7I*k!GT{p|YumCZf!9laXkjcm< zF9cs;0AW_Qfd%Ui*m{)9Y!fH~-TVteO0#i*h0hA&J-OlnK^AmqT?gc3go%Ct?;JfHP;dRbHxhxk0LTJ+ zULP_OoeKQ1+(gI#4PXe6v~qx)u4Lm27vF>T$i3iX!TbRMzyJUNK>%(hpa!o1crX9} b0YLyciKqdqz#EJJ00BV&6+&tNYVZc*08WNL literal 1054 zcmV+(1mXJt0003AFaQ7nL7KoCybrJv;J{cz05*ADi1+v$JS)~r&WC_HLz$2V5NNaj z<1QLqm70B~61^{T%o`MA{Bp9v zye_sS_5vVS90Cx)TwwqK0|E(SMbNGyPH!0@uK)rDp}~X&`PnL{L?VB(E~0G&2qDNw zv1oVg48#Cag}E#Uym(8J@C51r!Q5x5+>_rE&fH)S00i&Ql`uO^n9e}s^4KlZ7^05kc|MtuVk^)yu zbNJ)q^)M-h#*11f?|%GA{u(a7$H(RTX21qlQCh5BPXF+Av>0DqjBvla8JohDzLQ}C z0R+RaOlcaN5`eKv@14{8{lGH`^eD+$UgA~&4FFq!Q^2x@Bt+;WC&;89hspq86drjI z3!u-T-L1(;KhS`H;omf#n3nk-Xuo{`Q-`b^&nPdBKEl}ln4TtqMp0%j@Javz0fO-P zfaphaCfx#HegRj^C2<7E+7;lelPiPXOfSUwEhzA5(EI>EfdajG6;&cav66SWY5=$Z z2mrjoGzR5zhpp;>1xHK(7Cm$-AFq3*rC0z61^{`uEFni-2vCMKWeF(Z4=mDE(?{Wh z!g_=y6cQ4EF`fd4(m{ZuGR!9g7yB~@3u>2!VbTps9Pg%D=YO_&Pb=ze@D|!BCRhkV z{P1ONUmy2EM;a)Th64Z`*87undV!(I5X^8qL7>k72H#6$G(Y-P{RId{ee*gFr4;zT~<6;6qt42i8va<=255OI0dD1%JzxME|G>32jkOcO; zK4M~>9rdutyie z{pkDfGA3!*TH@45C;xM3axs$ehfUbMSCoGR3SNy35Pj!@o`w>h5MqzO0U^1JoKjNa z5Ykn`VG5_fNeuHD-}*an*-*|>_#lZxL;}$R4e+uUxt+FW@%r$IE&wnC+N@@nMK@#s zua-pp>;!nArh{v#YiS&N#sC5Vf(3}Ado5_bAPl>!)#3mKQUeL`Y6XiFy%`Wc{h-xE z{#Q$Hrch(R0y`F&%ovt4AY!ZT-bh6Bd&CIix z#y`vgC2Ip^xBvjO08!_J61`m?OX8tvVnQQ00e3>_uP#>KfN24t?5U`izdHd@g|Ggl zB_(Tzpa2K~fMg>*p)1B`4i*2~!V6Z=6ma${r%5h+t`G^KfW-tDv&M)V9{>O#1_u@9 z)9AJAPa-ZDqW6FRZU9aROPK-+t&vfmGI?MCAP4{g0l~GF1yqDx;U)$!g}?|H0<5UI z_2q>)7J@&30tMiX9J#J)7(6SZ34{d%A;j@86Hqgl3@kr6K|f>_0096+8h{3$`Zza$ zAX!-S`Ppfgi5_8pe<0%B|LyS+x~42hP#3l){E(~v{$310^B9o@x&M9v6gZm~AheWZ zKmbD;tm zi~w2=fB@hCAP@jJ7Dz*iWw%$floA#H>;MJ|2{B-fZ)GAdowc9=>oK7dl%!&_-~fK1 zE4^W{Yv%w4I!#pva|I_ux@Y$QfXo6d7mg4RLm4iwUH|}qD55;`72|dza_YECzyJ^x z1P2H>qoQ!vO2i0e$3TO|NB|iB-EwGeWS{@j1-@UW;1NO0-lGlyA$mxKOMD-I0SFRw z%qY$_fI_ubuM7ccfB=AAo&dlAKr@toxi<4G0q0Hw0Dx^gUkw)fpfbb&gJl|~=gtL3 zMd3%syW{Qcw(w#4a1@Z?+48J!*c_JOm(Y~Bc#VJnfTrmH8~|u*nA0pP)q@F^cn$(E z;Q;ZMyfLr-Xd9qtClU+Bya50}DFLL~L{bdI%o^K5c;V<87zzqZIG&^<41CtK>5?&{ z1BODeK2yA6hRK{DM?mE`ZX%ODo&V_bckRFd0ccFI7D`O}1iX*^-~cemaC0w;(?WWT zZfIZ_dLkeQW@9ix4^RMi{_rRW*Z@eKz#JMDWg>IZNaOYGS>HSV#K2vEJO2T|Krp5s z#!DDIzwv+oflvSl6J9p}4hPq`7pedO04$pT0|pHfMA)g&FA@MzGy#BEI-(DT>v%B1 z;ay9RLRx|w^t^f48A}&%GAUj>Evnd8!_sVx!v;KGR7yxINPXzad|IpS<{?!0y zejSgsf$R@oz)uQ3OZfzf65$^J1E(#sB+v7J5kK{B|2O~zH~-RTPC~o8>n59cWgRWn4w6I?a0HH8!4{VxWb-va`2Zkx$~F#c1a8?} zGVFiBUlq_pgQzC%Wtbm4rTi#tEfs(R8z6|{uKCDX``{Qbk}GahAc`>m$%$lO&mm=l z{{O!*6v{FG5^n$iKs4vT4K{G8(H&)b=l}u%tk?i(Ti`yB^WSfQnw8 zI+*7p|Ngwl#?FN@u)L)3VdE2Z&Hvx~Y(!)YNWd7YY^VNZ|8JqA8ef&W|Iz?Z^-vgV z5}iK38Ct;Q$a52%f{K84f+VA1!&oUBw|v{%$NJX4*cB3ID2IREiU4DzB@F!E;AHV^ zSy2SVZwLE?utN+0EZJ_Ycw~~L{_pb8$>DrQi0}jj0003&0B$Cz2Co2kFaQ7nK>#_4 WssXFO8;k$|0YLy2LTZ3&@CM^o@3d?H literal 1454 zcmV;f1yT9{0003AFaQ7nL7Lziybq`H{sNpB0G|d95eje)B0XpmfFDPCSby=*0B{#l z-pzVoSBUA+lq7F~Q1JP%R2%`w6#6CjAJ|d?WEccE4@6+#j+1x|6_Jx*=CB5Z5}5ki zHv7lvYu>-W$e5F`^~R{sZ~owo?6EtawdNgXhZXAbkIVVrQ!vr{6>8vFC#V*j0K2yLL04eDSeFKR>fMMd`3V;3sTrl1{ zH!YN2-S`Cn0&^e%0J@j9Oc&b6zwa0bqlza1l$HEnB~NJJ15nP^$O>Fuju*ho?+jLw zZxq3ORR;@kz{7{A0e}NHbb#oUSWap$-~d1YfWeKGMw7Bp3t(dOi^Gs|-x-idv~iD( zQ`hD?du_J;22ytRC?=R`zqjxc03Zlcu|OwudZsM9_&5MK*aTu04+#4BajB)fdvrtq z0tL#78h}mUfxJG`34hLp}n^b>DxstfpL;hE%O*MD` zGmtTU^FSdJIMLLCS^&UM3a@3RDsn3xga3K90X&5W1_q#>GKK;EZAO9`u8MGc22d5w zE8wsPHh4@@-T&+WVFF__*cB;(@Y$X0vcL+!pjm97v6I#A=-mJSfG`UaFA?z68~zzQ zE29a71q2}zjKIKS!JL3$fAv89*#rOr0Em+K0jKmt?*M^E?{_$p(-OwTOe**C4n9Bb z+2_=O_YLAA^-Nfhpd;9u@hcJ7wC`xKmZT{1Ts-L5=NX;n$b`IZ~zbk0R?9HvOl&S=lB2rfw@4f@oUd_{jJ8C zj9c-q?(=26KlcCu2nvRz==|FI>@EvE;Q)nJ*9O08%ByN0@ixrahOX<(XB_m|Vt4%J zT>t&x03ZexVc1)Uf6L%tGZSOm@sC6}009tKzEir#-}&Fe015b4MdBuO@BI!x z$sRqt4gP-zadq%Q03C1O5h2U;zmQ0wE)nnmrl&2&WSsyaf0J|H34jGa06@@42#b}P zP))~Fi{GvbDWn;l$1ng+fV-uyA()5jYMR-+8A7f5;OQ-t0VBO&jav}X`Ch<&AOsG% zM#0Y=nq7bV7!ywj;yg!yASeI;0YLz6Cb$N#0C+F}00BV&If diff --git a/samples/h264SampleFrames/frame-0807.h264 b/samples/h264SampleFrames/frame-0807.h264 index e2b8dff844f86232b4d55257c41ea01216bd73c7..97e001b53dcb877b95d84f084f1586a42b25ac2f 100644 GIT binary patch literal 1108 zcmV-a1grZ10003AFaQ7nL7KoCybs6n_z4g|0%Q~kFj)=?a24JL{fI-;z*K!PAm;m| z7ukjmJPRu1Z*ze#9(T%OTA z5aQinCP7f2!69_gWlZn?{k}7Um7F1136X{NTIlSbJOyZM5lNq=qf#UPz>k!t2r;m5 zP+EfUhY!PadKA#|s8l8v7_}PYNw^WEfp3= zz!U%h07VN5@m+fwm!t`(>fitb0*-*oh8F)Gzr80 zoC9Z|7)&!ph{F5CL;wN-NXUQyKnMW>NSX%Dp8Nyr=n4l4cMl~CI=}(lpr8T*UqFLZ zuxRkEe=mj0#bQE3U<#jBPvrrwv zFMt3L4FCZF;2oYSA5U7@34&sswg7s74hMnS5h@ZMe)9la0*o3xI%yzeR3?jKiHc^l zIY+tu0A~OP2d9{0VkpxUaQA{3flVdiMie9|(uIHr`~U<%C?4!(*%lIqiQ50ch9+P4 zw%api8oQ`r@Bw(r5P?@9(I%QVXaN9*2N=PCUEw8%49EJ}=?KkxU-2*iqyVPa1_2<- zh&~yt;OMA803cET0tEJjfCFLqodJc63;+ZOzyLsZy8s^zWA6O{kWxTs*{KWI0Xmsn zLJ|WEo)ypRNR}XYQ^NoqRt6&4x&b2QM=^e$3veIr57L!WI)DFEWAf~A^xs#d@0fS1 z@y2^M;0JkQ^oFZW200Y~1fX4iBPakk3}QVq7r8`7umAhl=J*f)smF$U3O}Y|Kl%p* zJc41!r=0zY9(42qA4_BJ56P|xa>hY*p#Q1S_Axs#1#p1`K2tEEHM4I{N7Od zxKL2Q3?^bS2*D-L#{^UO3>47NRVgwwW&ry^x*XuPG`L^^VV}4#0YYB-bT%R;Fkiq3 z1PnOAPEkY86l)qwULS%Vm`dRQgTc)uz(kb1n3Okx%|H#_4tO2XQ8;k$|0YLy2LTdnO@CM_*<;j}> literal 813 zcmV+|1Je8e0003AFaQ7nL7M;?ybs6n_z4g|0%Q~kH4X}J9ab;p0|BtCSat8Dx7~xY z%>|d%S5{L!pb%R*2=2WNv3LovP$CeDDo7Iprlr7m3u~PLtO6p|X{+8r_C8axcCv0H zdf#7({1-V}R%`!%!>t~c96I0-B7C~X$!`rx00INTsVD;?6^}LA5Fq#i0A-DH4!qDL9HH4SKU55De*l1p2L2L>yuOc0 z34iYZ3>JqkPbNeQf%iznYeDBgIsgbNQP@s+B(YLI-wpBFuYV0570>Eep&=o#48ly8 zXSV zga9r81P=cq06;K{8(Hg4z~Gk-j~GNa>kmmReUZZao(39q>Fg%*$L=?9-SW->TnGnk8BQY;Z7@Yxt0SZvXLi!m(yiv+300am*VjgKT zCDV9O5|t=80Kj1jji)zEb{%gpMj-J1@Bx7gXm9K&!-___+BNRKAOIjuEC2-`5ktK2 z1P2yK(I&;)lMB(ccP2RS7Z-qNMUp;s1bvLOuz0!e3?~v`2R#+ZnGXacGL-(OPvN7& zx%|E)YY?#l0$vNGEqnwb+Oz{?)<-caqKVGnKmYbgRcEaK{b8Rj(RSC&JJM^cTlJ+a zpd{#bm_E}Hfkz^s04D~8{EVOg;06%Hrek+F$o2pKmY#d~fAOvvgBD}S^~^{AK+pnE rfB*miK>%(hzy_}XcrX9}0YLyciLe2yz#EJJ00BV&6+&zPYVZc*Nu*1X diff --git a/samples/h264SampleFrames/frame-0808.h264 b/samples/h264SampleFrames/frame-0808.h264 index df68e9e142e5a0a012736feb980a278a5097507e..68b53ddcfc2965ab73e16b6ebf2556f4a23b1c66 100644 GIT binary patch literal 1410 zcma)6e^AnQ0R4Qw0+OI2ih*H+S@?5_IgJVjn5CvA*&Mo=i81;){82NrO;9uP$3&A$ z(o(Wzsim%*dGd~^nHw8?#isva0n;@yfv4^Z(va=6kY-n@{ZtZ&(l9&thgqow z$l?ClQ;9=Az`}hg8_dV)j2V{l-u!DBa{NPCQyK*@J(870wKKDPk+7A$2 z?rkYts*mokdmW`)++NIpR782VnLb9B({YG~#J;P3BN~~A=3p0jkTbRv;4W5@7w6@l z)@7(G`Z1rG{9zwi=bE?F^x)}yRB)J#De{Y4Pysf!UIHj+CQHy`DEkdJL*zNQ$~6Rz znpIS3l-LXGSv^O!Rv496ys?0hAXzKVuLTok9cQ*?TC>rP6w1x;OUnH!;MwU+8Y zjObkR``x3*-{t`Xk72FC0W|uK+^i5PJ0QYrY+HUn0uuPx#gAOenhe`)whW@&Hec!e zPQ?#-x{SsK?XfN`wt{-CA^k`{u^Hs>If4p#&?=me%@yJgf~|CCEs(@66iZ{~g0dTu zUq+?@(uTohd-W?z`KmHbQI?KzNuVtBoH{50O0!JOS%Yj1KE3D^VFt+tFR*v<-(X64 zvLil9EgT6}Fx-$zLZETn4#2?bJp)PrMOFs?-0H|{03e-dnI8%?zgTQ zFcrVdzWdxM5m8mmW}&38(gN?X#NCzV?tImhX<0@XjKc|Wz6e(ZSYM9`%=d{;AMr=P zd3~hDV-52INUD*#Hb-k2kkwrsA~rpZ&oIMfDO@mf*)eYEcF<*bXJ2&Z;f@*s3@O`$ zjq>>7TyNXt-BwLZ`S4Bgknr#))n}wk(MRX=@3M4Gao|{aBtI0`I*}Z$Vl#|C;rG!I zaxVJMQNDMQ=a}GvtQUpwZiw2dj`*6oQmj@aZBCWBjR(<(Obq}6bR=Q-$vwPfFSvdK z?d|Ko^}1h?`ambe()v5<#N+et9?llnIlO#jH1>||*^t6QKnh7>v#p>1(k}_my6%(D zqY0Y8sKhTC!AZ5GE(yiC@qE(bD3YY}%Z%k{t4Xo_Xd?(3f9&CbE-f@YeLn5ln)OJR%h2jHL4|f9}FVD% zfrX4QU*|vjyZux6!3*}&FI!Z}ZCbob=f6;3qiwpdQvz?`>+iF?-FJuD1N z4CTMxFetDDJ)XUx#;#E*U8vN=L0Dk2exuQa1#_>Pdc4wc`^?_8m}|4qNNYckv?tH-Q#OlfhhK42q#)i0@y%)vQ7a6ikoRR4c*suE2 zU*PWn1_cFmK1c5;OYw6O*!4vfl3# zXI5wA-^w(w2~J9F%k^#iB?j|5E>|>WN$WoFpU1KJ&`tueGry(#=aEMTJr*orFy-`qtoAp!K4FT8 zj{)KgXWus%g6;<8obM7IOCQeV69e=I9Y$eDM)W0FzX4Tg$oz-&Ctw z;U|0K1T5O-O90@1a#D#}loXxNdgcZ(tA*7VzNEnYN|E%`1wT*^zZIJJSx$ zEX8u+*uB3RJOnQvU*MIszMz8f6W?+E&+~=iZ~sqcV7S9(`Q*iu7cnyzEc@ReV&Hi3 z=+$|x;xS=at9O|@Fepr5U}D;6#L~X+0Rs!u!6#CS7iX9(PdoJQr`3T&28(?af}e@j z{XUSF(ZeA8`bow4`ThqZwBj6vF1y(^^D{6w*w{_r=yz9n{K$m$r|$!SA_o@EZ1#yM zVoPqGSGanBaXTnUJg^J@_~6FlQ_)uxx;hfp>pY#5$N-G0B!N^r{upkb11$R)3qG{1 z{THI(Adz<9w;q1CL6`fgquLpT=jPLQ6QSZexS zZS4X9UUzACx2MYgDmEJ$sWtrLRXg%v^?~g%047~4EdT%j diff --git a/samples/h264SampleFrames/frame-0809.h264 b/samples/h264SampleFrames/frame-0809.h264 index 1b7d484505c38adee1a92c06ccf638b447884dea..7a65e7ce9784bcc0e1f6674b34043173c23253d8 100644 GIT binary patch delta 1563 zcmV+$2ITqL3)l>Q000012`~Tv0YRGp8oU?@_!?1$SpW+|I|Euo?nT`dMC`(TuO(a9}ZoAOH{&#{duZ1L&Sg1A2G< z4nqRqX)C{Mhr+2B_W(egkdneN8K?|Gi!)$596&$zz`ICc8LNz!HM9T!|NsC0|NsC0 z|NsC0|NsC0;K1;&1|i^xSarPwa0f;a*LM%>Fcoal*g6~oO^pMz@p8n6oJ=kqi54J& zf`R9}$QU1dr?j?41dQJJ-tAs-OlMA#piXd}6_ZW_9e?xr_(4d-3K_rw!39qtTUR9M z4uAVq{69bl1iR~>m(6jJF@iiY1VQ#AXWb44aDq-nQoa6jnj7r^aId#dv!4H*ptGG` zB@&!V`|E}Vw&Jo9`}=*<@IL>+pk)ZuOll)D)BElH0ISz40R*m+`RRWNXh;x-cHeQS z@4x|v*nh$-vUP$yntt#aHB1M#$24S=M+pRL{4s4E|Lfn5Zio;s(4}5~d4K>QegFaw zKmZ|X00IF?oFD+eK9D+#j2{4vmB0|D@Bu4gIRm12N(v+9qre6000I;U%qNCMdGAZ& zqNZhx?f+e?C?~)k%S?7{`Mba02o|I$00;%L=6~=tVjuswK+8h{%kr08f<%hq|BGXz zz(5FT0P_qx>y_A>XJ7k_00}@o>s;gwg8L_N82|u)gVcZmjr@pe|NDe71#Z=&?UEq4 ziqHQCPYU}U6pflp?MB3wZwb+S%L&)_I}Q!*SbX!r3TV56jDN459tO12&_C|V@n?_h zaZc_1189R)!Xj!j{R%)a)htE*IB)^Fi1|{q8;M9fOWxA`!d?*(Rv~~znAi%M$Dl%_ z#sEbPrJtfNx}cMVH#&i}Pr7z(ySqI`k@;|^30s?_B z`eUE~A;=H_9mT+f7kdz4!zg??gU_M7Zm{!4QN;og3u~|`^W$U z0*E*o&~(RWVLA&R|EE=ffI0R&B45c1cDPywljIjAzR$f-0E0-izb0TPbN@eR01N;O z4C)nsND*J0r{BN7f*=qokb3;%sy8U`egGsW4hV#Fwv4TE2c8eOHk{LF00b`_@M~&? zD01~gv&=96NNz(B#c!yEHL3)um&F1!7X<*+FdqtEMPs4>7YR_Ta(5D!f4x z)B%{lLS=0lRJhdrhyX{$AOea{!Dlx=+7Hwo7AU?;(Ecsqlpibr85s>ROs*%XJ`d_X zK!}ilfCYe8sk8*-P{W6X@gBu2K&{dP5G)?YwD*1a=l~pc0fC2_!3;?qF{sG6vFJk%95Yn0C%t>T$01z5B_YWiU zBN-hICZLotsE09BZFTqZ2k@|NXgIh^S!jg`0#lC|{7^UmrDZB`EZ0KV0U`i^NZnD} zXCw?fwu75YcmRMktye_Nnm#mW4M3*bj*T~9A#4BsfH6}+;eVq1CWa&DWPu-&S^yvb z5Dg-3)(4bCU@-h*@c>cF&Q;@IS-)CAfWd}8E|e5$!hpl-Y5z5dh?*gog%10H0m<4p z7{QU8Ry4D*s-;qR00IF3FlG}!s(YyfKT2IJk+w#Wbg delta 1435 zcmV;M1!Vfz4B88S000012`~Tv0YRHU8oU?@_!?1$U;@z2!Xs9dAveGX0XtAS45)Ze zaG$}w34g(ucoc_)hya+jN&kYupe7HcN3C4ORd>OFam6qIN?05A1;}3{JDH#OISdPd zsKb8Q4uYu{_kq47B(Q`dH32dc=t+Q9IDmg_3FeSwt~a@2t)Kt@|NsC0|NsC0|NsC0 z|NsC01_y<5_z-A44`C3nKSz8Jw>nK&`@4^T(Y(!k2M_Rp(y^d*9C^kLBuk$Y3x{Gw zh#;V#dA=GP3x%H0*&nP5kV4@OgDj1c@ zsubA2`@Ij>%=mr-Ljz}diIzQDG3}eWxc6ke%X)YJ;KP6d03ZQRP<1>=oLcDGYh?gI zhA7c$`R9KST&nIo&j1(ztw4I}ZIHXhhK=w2;ZSqH@e+|87+JYG(j+o)z=4_#2_KcB z#K2_!g2Dew_>6EVjDYr@Mu>S)0ofP;8?euU6hlwfx4;3=g79r@{+jv4$z%W?F@dT2 z0cOW1WWxoQpWa|2Q=DUptM{1Apu@!=Q!tDCcV2)02u(~z2^g-&|N6iDF;+>uQib(2 z94*Ho%jTLeGZGZyWXDJN`CL8v1^M8dDH^ADoD6=@Y)Z?i-9VOVwi8ShkW&J#!}Ea% z0y1{Ii-bRR;8&AnwBz^t@Bm_=o?Dk~Sf`)&dO!dm6aqS>Gz-0JesS@tKl|SYOgV*u z50-xmnIR<+D1aDB#bh{|mL*MJfEdHB|8UgMn~1*KT#NujZSh`c*b`W_gLY(^U2 zCJwP01}h38V}}cQmPsG&0fX|nL@5`IG;NH~>ET~v!jRr*^O|ud%mvpqg8k=+owR`P zEEc9wY6+kJc6cCFB$C@{{8x)S7ob1aKVVU4!&RapqYr-IzyNc)Sv~(g9RMBR&y{i* zL~V|K${5ga8l>F<^}==svoLM(NP`;24QUFRg59AuL?e#NaBsUWwph zFIdz!CM^-a|3mTs4mdansfk}kNB}{&>wo}Y=RL-?W@18#7gztm*Z?FByPyCN5{goo z2Hfz5n-D&Pj(9owog_w_0EQTI_y7U` zV1`O30!Y(|b6O{+V;1~d`@Gw4kNv^9K&|m>f6saSEyscYVUXO20kIwkb0LnyU>|e< z2tZUdCr9Sj-(44b{2#ruY;V-6?xFYq2mysyb{8Ta^7j}F#Mt*t0098-01y)Z4-Lx) z_yP_JfD@gIsQWNnDytOFpaNh(Q2KQny+RO^jU79K08C+;fxGol~DL!L#Ksv zDf<+$0=3|lJUx$T?)&l3067>v9*ZhL8(6u@D>wer7c@|tA|SuRx0aKi1RyKt;0VS5 p00BV&ZYIzMuK;*30003&06B@Y0jt0pi~s-uK>!s(Z2)TU2IC4hi)#P? diff --git a/samples/h264SampleFrames/frame-0810.h264 b/samples/h264SampleFrames/frame-0810.h264 index 5da61de76329a028ca0f107fc4a0690a79f5fba8..9078c84a128da0b1784613e0961ca576c578b383 100644 GIT binary patch literal 1344 zcmV-G1;6?L0003AFaQ7nL7N~Nycmi00%jm2VUf^8Ko(c&ilLG#z5iKE5fOk#QL<7S z8-NB3XG{RObsNM?E8oe&+zjE;xj>W6NlOfQ*BgJ95aQH1sLe!@!gDD2UxEP(*}S_} zkn?|b;0ysnO~~k|P?}kV@DP#t*sa(`9)JB43c#3uFXBZ6@UWnu0MoZCc6l%;m*+_g z98yTZs+0cUG9WJy0N_Jv4B!Xg93dso3jIqMC~$uuFmX+GT%UC;F)gX2fxKcVr3gV} z9`w#SER4@ds$ZW&ni6vOnEVJfCk`W%a`ZlIJRk9Z1Ot9rtoQhWQ67#wROmr9wP3@% z-Z+puit(}~Ey|@$uPDaDz2ZR_uK*0&Z;Ebw0098-3JK6duMGxP?!A&_31R2}9$)|< z9TU(15Df%`kDx0xBHjiF;VY6lWS1Q%Bv0yzd=SHPuu_J91joY5EmNl!fiZ9a2mCEu zQ}G89-C$h&0GIC!aRGncU<}a!1{MujTnOo?M+3kE2RM*Is0!Nbv=#^?(1A!90%7CAx)c_n zK>!fzCk-`t530zPfinHz^FJC8!inWF?y>Lxpn*Ob>$)xMWs(pOwR!iM_28He4@eFf z0borOAR4M`@jGY5#S710=Pos_jE7T!a#n;;lKb8Dye`3GZXKA0s#Z1 zXQ2^lMxOrA0t^a6O8LJ<8RimyfB+y2BK=)^u$~}G_TYyFy?7rBN1Zrgd?|WDFo@!c zLxp)HxDFXod62=`_(*X>qIM=&jevO5vgEt@KnZ0)IvP4_q>iz&@PQ=^7vWI^OUnTK z02}(?2LS-XdDV=T0dUCk5C8}g004moCtv`OYf7f@(!E@2)H+~8pKF~f*d%~ zd5|C+y}<$=FMpc{S2;+D5g$K4002NR0|K^_yBC;wBezO^Wr9PCv{*3KL7+%9++utr8nFF)Bu5+flyTnF0$bGC-;V91ud!& z(qAT3{`59D$xTz$`4Npa1{}9K*#<-~15yAOIprU;&2;I-zj` zKw-tV$qb>@^q>fG0003&0B$D82Co2kFaQ7nK>#_4vH`2W8;k$|0YLy2LTrF)@CM_G CM=uKi literal 1022 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 diff --git a/samples/h264SampleFrames/frame-0812.h264 b/samples/h264SampleFrames/frame-0812.h264 index 9572ace33603a6324f0255b2b9c6a7f60c080db2..73d35ed309ebe2e559671025aa16b7fa967d4991 100644 GIT binary patch literal 1139 zcmZ{kYfO^|6o${&mX=~Eg#wm)VNlvIp+%I*oU~k2N*NUdMj}^15P@}w8%jn$3a(r< zIB{Zd&N^_=$+*av&at#yf}jX>$W0jSWDJPtsw{#~`i=Q>%ibR+Z}Og#oV-6C06@sx z%^|p)Y~N{D{$fuO;!Qi@E{T@lN<8;9+#@jEQ`=Fk=GkA3T~1ZGT!_DsKk5^^&(IoC zUpvZ)G`7+ar`r=VToVqHAAEEa4t9D@J=Hzy}%v0@F_eb_Pyz)6t3pMFt8hHH734xy{D#g=&ondjSC_ z5R0!&-R)gFicJHJ_hnei0Xg^c%*L;G0}6b*pzig!#J(eJSyn(Z0H3`;Wwrl8{;uvr zf2>nY1RTlM`LqjIHr+l-{fH~AL)uXRcd*t?t6DAFJm=Waz!U*y7@a>kqD9w?xZ>_B zJp;bYyMX|?8Zm^%GGmkEoC-= zH#s!gewMk`xSuVvZ2}Y(O={}<8^gVn1EMiGd&PeNZ*8&XtCX{4b)xw88Pik~ zznXG}_*{d~7F_gT35vqDnzRpu&Ys6GBKcx;;LKF^gG*V@ugTRWv+N*~L)9U*nZGIs zIELfly~rma7ae&nPcxL`9T**4f%83r>eEA9%wr|_2l>FP033yV1`rc5NwmPfCD{Cn z4W<^a?7+o*aK0bUtVdr|M{SkhPDI@iqnWuN{E}UX_trQE+KlAVy)3caD1&rw(cfl z9JWw4x==H#m62<0mOPnJk0UxJH?XhGSL`_J(PE(;^pKze-5=+5Zu=8OLIR!&^5lOg h0=cXSVha?!K?>|D{{gw7b~y7Uu?fmSv-HH-zX1Zd`T+m{ literal 1103 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 W0jt0pi~s-uK>!s(25$gr@CM^((a9J9 diff --git a/samples/h264SampleFrames/frame-0814.h264 b/samples/h264SampleFrames/frame-0814.h264 index 3c541a295066867cedf52e8885f1601768a663a1..b68640abffd6e6670591d6257e890fad8b916536 100644 GIT binary patch literal 1483 zcmZ9Me>~H99LGQ3S+mfLkg$AL#8h|RYr3K^Q=u!rTB&wvBtOod{8<<`|@!})cWR%%u@JJ%ogcwFy4-jDa=_5SnqdOZOE&|GA8c?-&I zM7DD^bInbRIgqUGFA+BRVhtR+?)mP;`YSZxw0&`O8+oXFN2yrL?ar7#F)HJ3yC#NC zFL=u}%^x!Hyo4CW&3AOZGc!VqOnn-g%2dyAvh) zo_MSO-zem&MwMCjDZZ3QW7!=mjb`>V>6*wf>eV-kzw>>N2T_=c=@7%d6-DJUiF>@t zWFwQGv@_hV4h^kePq23aR#DibwBH;!CGUN&_UzT0TA8;12+IOQJ%Hv#g#ii<1u*-= znj3&P{YemmP7Y9 zQHvEV(%sb2rW%K}vBe)0vTnSTzyf#(1!y_Io1#0ZsUTirL>mzds|^$hHTkG{v$C=} zK;L*j%D$S?#vD7zU_857lpwtBAC!m8xz*$O^Y87b{Q_`}Xz+rXN%VPH|$E;iRadJOA;x-)_ z*#t~;`M}x2N3INq4R3vVivW2rkKm-+k#Nj?$=al44A#6?${%tZYWuSec4Ey%wP96N z1u9x#!SuGJH93*SHB+c0uTbL8xug2~F>=1ktBIZ~2qb&@(-Uu;1Th2yQt!t7W+}A> z6fbp$Sz^;zbn#MU4-!D~dLq>T4A`rrb4k+)M|;midhG&6msHM8E6;jxCgOc;CUTDO zj^7I$*8+1}esdgioV+C_|G2i%*{r<58CQX7LXwtQ)1bJ8xF;(c_@z2EpLOBhL&~*w zedtUVY+@)-gx8CXI;Q9bqQJcCK^WIKIng${;)3Ov_rUH$!4_<-`0NP4(Oc>Kyhb8yV3Ro46hY(Ac z8-Mx6%@c-5MiL{6E2e|Zt+yvDBXWksWv2>F%0IC{b4zq~z(A5YpBsXGNkkyna{Msl zW`U58u1E!hK1IRK65L-5*1W7i9ch;(p;jWBe z`xLuaVeGjG2SR!61ou^Tx9JZeLONnu2p|#;ZQ$UY9$rM@C18$?_Mo)XHLZ0>&of)L zMlpZ=?Fv`6peQjsE4n(@Cj1;F*#YjCdsdd4*>&vmhAY=z9>9aJlFmEVw~FjFkKThI z%K7dwtHV-v7h*Q`#y~DvrsDSMpFJvYJ&~_PQ+?jb>uvlle-19mH+Vhdviv%Q}2U`W(?u zy#FN%vS(ib% literal 1616 zcmZWqYgAKb7X9uGdEbO2$lE{&g0Z9+4O)DF;UO?c0TqRgSVN0|0wn^iP#?MBAp`+q zab!dUD$iPkAk-=ZNKz~eB@0xlVk-%P#wrzB6e1wEwEZAGojfox^U>C`S3=j_tEbsDC~-sNQRjlVY@_I})o^onHtV zlmJy%{#7mg zp^?AR0{gEpJeY2pX0dW@Y~m<6xZ?5M!J`$HCVyUFl0N@-ii0>7ob29lM*8|twYglE zAbgn-xvg^0IP+$4N%}v9$-hgjlsq<5R|t531|Yx(FhB`*w1(25kFF&j;}YEgia0zM zQN}i24%F}|)gjazgdNdO{{+~GR<(4@wh3XB5*<118@Fmp`+y@909XU#q27)RAuKbGprjvEKjMe*=@VPOLP3@mU1=!>N}{dWYBWV;COBGC zeV;aeD0b|UeqFZQ^%`eh#n_1n9~F2280QJhfC!#M=z2qQW|=J@is5f}KoMK4j~RR+ z5-Umg3OhZ(%gTI}9h2|!SU)89Z1vU6DR7c3JI-p|O-t5!uQg9M;^}Zre?qW(&4#N% zcT6oXSHbw0!~5vG*TYhFi=t`%r&Ob1k>o@~K7ey6m0QRBp7^0SMxNo}$dW+*^dGU{ zgF^E_O+0aR&3E|LA79!q>5@Fl(y28UH6{QX8DRgJF6n!iG~ z8dp4-dEdrXZrf6_l@K*od2%}A%mr=7(5{>6-YI;~)ykETX3CgqB)$>*2G=cM?yJLfg>tpxp_niULqCu#$hZC(-Nf5fRC+6z!V*jY2 zby0qG49|Uyf)GrCQ12A`Py)uo>|vp{+kusP!sD3~(`yVM;98T*ptgcUt$FQbo}urraqJm#r8Vp<6DgjSiq7A1?Z5b4A%hGl4#w{WP* zuQ>g9Tv3j8vI{wt>-!}qRMa;pE2rZE1kk3e1?eBCgXnTRF}w)V5B}%XuUT} zQz?mkjFJ62^iuVom=UOe+V$9Z{PG5R`7aoT0tU1~-E&j9c{(rvmwVlucpP7B+26eI zA#hkv(8TZYB&UbⅇVZu9mlDQt@tyF~kJLE`J0cS(?l(J;9hJo;X`gBk=$Um%1(= zq~n6P`V(ujegl38EUL;F_udGbWzxim$gxIr^4|N*YjRa zk>d2peR16Pl*?4COfdVsBc0K2H1)$Z~PqOE}wb<{St))vOZZs8Ab_)FrMTX4W=X^Wc9jU!jf* z%nOr0)yRCxU-Zj2jWoK(Q@6bYKm-s;nzPZvtw1Z;W&zC_Vp_r=vVM_d+4Xt-lno$} z0a8_U2b`PX#HZ*Wo=96ntLME*!Ie%cFY-{S4-s~J)Ttwb? z`lT*gto&%{lu6s)l(F?;ki-Gm7T5oMOZJ`#4QZ5i9LD1 zz3cVv357`v&G@-Q9V@;&?9mf_y#h*nwSbx{bhlV~-{!A4iaBncwQ#UGXiKc)l3vr{ zRn_}aKfkyv`LEEGcFNeib-=z=Yx7JL1prbA<;>a5V03VTnB!9Z=h7XUEQiGi7F+b?XoJje7rl4)5NpH({P(kzJz)1*0i`{x@%JNDupP^Qb@-*b}1s0v+U z+h>Z8r4p{b8%Vf_V#f|mb%^H~!Q-sFR3K4t10y^uapokN@2u@(A4QT0i9f98bjl<> z@88U~Bvw-Xch>pE#r-_q-0$Y|wO%^F1!Qx}0xSO=KCN^=p2bbwA6)2B0uiHmUbAc8 zx-pSGwLA+L#za`2nSA7Gwlig zO>Eo<6lBNLRGXbC!-avQN$yG_)@nR-eK<5;-w7bxhk`u$0AQ@n9QK}yUpOh>5GcTV zja+~bZb+i!6KNb@f0>i3^gORYLRvQdEEd!4S+;9Q_X43towCMBtF5{6%qQj{!{?!3 zG@Nfz8v%qt;epHT=9D417yZPVirvB&L6%sR;Yco__Bh`TvbfJPf`rj4YMMpL zAYSDfEm{!;)|ZWGg2rj>eIx|-FU((hU*fr*x-gR)eJ6e;xuC0BO)^5tB3;`#|H8A4 z)R#FhU{|Plr5%bpU34Z+C<4);SEcw@%z>;^-3itV;tiv1Zh1RtQ3TRZ5*i?%JdF+b z$u_d}sKe>UMz5kO(-9a1)4&Rr?#kVB9vmJ@e*Mqqfke8F&K!+1Q((y_;Yaadc!o2=}lOO>Vf5JRKQaT?9ev{2u zDs?jcKvTemD}r5*c7PHP00;qthGlSq83>>^B0tOb!vFyQ03ZX1SRzKWet$&}KZEB0 z2aIJ)#L91JnN05i1tdd>blKHjIpX4bSbPuxoDd9v0tBxegoj_S{u3<$K)@vER;XZS zII9bTW8O75v#meVe?UMT*b>4Uv5X0-Z})%{9bpoE8UQE*AE9CzBzOP<0ivFO01yl~ zsKX>?EJ3K+b3Awxu*==p`0xD~F=a)vBQQ!u zety5PMl4}I870AUyIulfuPw|ACRPwYRji^3Ti)@Bj$tA5^N?vW4nwgWhu`l)6In-A_t--ywjriB_w7Ix8~_9auMGi6E&v3e#>aPof_Uc#7DYfL6i&Cr)u1+T z00aQ!Bmf9$YXB0zLAXoJi~nE;0El;sSpwtKwZCu}097y!J{f-N8&9 diff --git a/samples/h264SampleFrames/frame-0816.h264 b/samples/h264SampleFrames/frame-0816.h264 index a3aa7a9fd71e1c491f072a948d2a8194aaff6d12..53aa0a31b1005ebd5441f9c8a8b1bc2040e2902c 100644 GIT binary patch literal 1813 zcmV+w2kQ6$0003AFaQ7nL7U(jyc`Mg_z5_HC?<0RLYx47QM)1obIuU*mVgD^{uF%m zpZbsg{kQvej3t&Ry|V#@pWyF2L)9)k6;jQ!6N>-@0097?1A@&OG;G$E9nA*yMR zkh}kJm|VTg0AUfSLs0+Tpg_)@!O1b`%TVCOPYDjwL@_m#bduRw3;}>yY1uI!6SQ6r z#VPIlzhMx;PC)}d0D&H$-oFD?BHnj2Y>(w0f1y9J)tYi;li)~`*=Ze)&h+lwD|cYL{ZrRF@VJm zF=vesa6bS5Km-aRK6O5eUc~YO;d(EC0Nena5|=U$Dz-&NeaYm&06-W31OtO_OA4t7 zyTVKiVGDo|Fa}w1b?Zusa4iIXfCMYl)Dj*Q-cck81Her>ctR9^`~UyQVCMqPXYfdB)Sfry0^*_k0YuNjm6umc}} z0;!KoJjPP{?*ITmVL@61CYmBJU?Q>gg#(6wK;@{DF#;@9CPn@Ds!BwXtjI+v1y>}6 zxHQOmVo+R99QJI|f4N9CS<@1PyPca64=)|gG`*N!jF$pA=dk*C1#RGvO+*8IfUo%3XaUDi0IMzl3II?7C6SSVVWfyx zuufwFvV+!yMSE8CzaGG$G+@t+Vx*P%Wbcwo){y)F0RW%?s0#wBV*(!_ zXdu?GAg-k47EJs9{%8ORETjQKuH0Y$_m_>fA^-sZR$v2$1Pa!b5FW2#qs)RC8-+0L z01$Nxl#GTDmIeBV1ecF+00sz`0~-swrlocO0&f5~fA}!?EWw!Sb_g-)NpJfbahOAW z=}bN5L=F5wj}BJ;5lqUd5WnAvfDP~mSMUx4fTFljgbabpaex4UkN^lCX5auw8d>)M zey9Kh0kUKO0RR9%NU|q}gh2d608x?vUO3<9rX;02o!R;6ZxB_6Sm$Y&!(X0q*_=`b}SWzyRrhAApY)(<=uLFe>on z@ha}bSvB|@(SQ@c_xLNsuOvvb-~c`b;CHP;IM_zsQ4c}=R><{+|ZWsVq z$p2RA2(#4x-TnZFU;qFCK>%(h_y(^4crX9}0YLyciM|1=z#EJJ00BV&6+&--YVZc* Dy#O7E literal 1433 zcmV;K1!npH0003AFaQ7nL7E^Myc`Mg_zE~+N(r38f|MKpeNnq20lDA+a_7X24wLVw z|Nm{jktMx|!JQ`#=Zw`q6I(T#}zrSG# zdbi-mb=zBkeZ|NwJJ-$dAo-TaWx3Wx;1B~WfDJyeg>C`IKsPjxAAkW+01y-aIBHN# zj|CrMyR#nv!3+{bmIa$}+MdV=H}D8YK@A7zk;jJB<-Sfe8m*!GK;8Sm0tMX$pD4`u z(19T{pcnZSz#W?0 z79{XMFkxa%c7Q_xQI{+M4)ugAt{mGS+I8@H@@OO?rVONi`v5=&00#OqbQDf)o=j3h zVTe6Hm&J&MqvD1@o&W&=ku#4K{SMskKKA{7{@1_-#>AcXMCb47fgq!ZOkXh+gGu|| zou&2e@BTahQ)EcP?8@i8ruHTwsRlqi*w9sZ4eP^UhF=Xv2Ef1#z@QF>Ku}m}fixqW zzLDh3f7mo&0JstM2V$*i{onuy4}n}99IE%9(zH`GrFey`@Bzbu^-oZx0dYkj06+jh zI0C}J!lMJ7RVwrl-^{>7@ezsBD=MO*uYduE5YhxeI@}{K1doqq)Gh`%11BgsP51!n z0BTk(UUC6Zov#5x%VSQn!0rVgLIo+}OdhX)hTw2iLI4Muw=^u7EnrtTUiJ(USn(X11A396{sC7wulyBuY>;N1Q-bC_u z?2G>ZgdwUK2p`vWkVG|}II$0x_aGET6Fx6}H-G=b58r?P{{|cqm+=Ao5XfJySu|h> z2kFp5`)=@+jzN1rrYKzm5e->|+aP`kKmb4xO`Rka8rs39A>c0oYy&W#M-$pdvF-Ph z3-do6DDX+2F)N5BMg3j~$ud~H0D}w>+o-Ce?^G;C-vH4wzcFaYcrU4`*okPFix7XjnS zFdr1<;8#O)_l#0$?Z&T;TU<+(~AdPye*qV4O#(>ecCd3}b}haRG6#1&u=beIodw z9JbOx{s1sjmh9tb3Lb5{MH_g+Vv3w&xo_T5z)3g&9g(yK2VZq-RD?bwAOS7ZD-ygT z`+*^V0H{IYN)!;?k~jXQIDuJ{=xce<20Ehq#mhQ^pZ1LkqmSqcNUQIA)*DhEbb`wb z&9AXcSl;RP|9~NmahXa)7bc!3_6FfrxN=a5Dj)mzKxfD{Wj|iLBm4}t)&2mRpa1{? nK>%(hhz73!crX9}0YLyciJ}3kz#EJJ00BV&6+&o$YVZc**Qa(F diff --git a/samples/h264SampleFrames/frame-0817.h264 b/samples/h264SampleFrames/frame-0817.h264 index 9f7fcb6195d59bb7d99f8b0b0dae2459e3fc7cfe..d07f30f6376355bc333a05a053fcb14107c8f45c 100644 GIT binary patch literal 1255 zcmVyc~)20%i~%C?&v1-GTn807-nB-mnT!D>da)fBFjW z%+U}ZaCo7kBCrGO$!4_oKsAAypva3Cw#A?4_Md>>mn8+A((_~;6ZplNLT&#==cc-GsP;$Y~a1#?KGo64}nx^A){Lj|9cY&z?gq8v1p-Gg$xQn zW6?k04u33~8g2BQ{!mbJ&wG>@`9;1x@LRA-L19fnpUQQagS<-~fS);!Pz-9Kyx@WfR~800IDt78T;Ub~7_X6H(Q800IF*@#pQZg5cx> zUT4?__4NxrX(ML0T_`=Rx@QQvloB> zU<;w&PK;@Go-h+v`@*0afVyQ%By`jVZiCTC&02~hk z^dwX!e7)uXs0SD@c5u>Qz^F|ZM)MTD3_(CCV8|5#3Nz>df`Dl>Z@hQ|phxcaBM+bi z0!AR9Fey6vs35T~00@Af9xGNKyRe|xG7CTm|Ni#`0ybg6>4PjOLuqdq0LlOy)&uyx z@CASb6~hN`0}7!Mt05!7;Tp@cvWM;gF;xZtG@AW<13>QENB6t{1ONyC+hGoa!e{!= zIwN?5=ypSssftH@rH;gx%K!hnfq-|K3nT{9+sMVX%bbtzATtC!3jtlw-Py3FLiVpE zfWFiO1BE(=VuhSm00~wY00aksDftmx|FAk5H%6;(F6}-0fFNMOj|M1_F6WeE3A(@= zJH+`w6x#s6BpFQy!!?{77(f6ZQUC%3_OJkKKaaQ-r$K-KffxV?4)z-W2!^hA=nR6A z1IEorUcd=d%Hj}|7!#fgksxagXerVf{7VTWf9>pNTmS?GFS~%FwjX!j^7u^-2C54{ zhCjq4VgW(erUaHu%AfBb;_wg#YZcSxnIdE`{DMYd6~WE|MUfB>n!E-F7m}tyMm3Xs zei;&oxI7bz4kd~AWd1R=Wx4ZW7yV%HSa_c$1hDDuU}`xdgO^Wg_Kn(>|L*||V8yjh z5LtyWuUIhs{K8iV1Rf4;E&?Qm1jL}jfFalb00BV&ZYF>RuK;*30003&06B@E0jt0p Ri~s-uK>!s(XaH*P2IG>D5)uFa literal 999 zcmVHa#Go zwQTklk^{F;qSOD|2uy@%gk~Z@NBU(l2t$Fnos8HKXD~bb1aBcoQ<;iCya_l}lJzAi z3-j0@4`qtI*+Ea=Td=qDQ$gC`D>_+`alilOCKG`${$C2rek5R1fC^eL7&lIhS-|7? zp`d3y?*Jp^8cciPh-|yx-|zgVS(tW(Yj5u}g?R7Y{&-ha5-26$OG-Ay-z+EJM}z=h z1!+S>00aSW28Kum1(G2d6$SY11Tu%5I(XQq42q$M9ml=|ketEj__W{DbHfC#h-ZF_+Q zg>-?f>a+}?03f_7QUDzWBDX5F5#--^00tle%7mdulM%3&DPD`1fDP!P20&1t(U~p} ziy5o>$e*dsKmh=P=@!8G3)4G6D4whPz=pyVf%PN;U>jOdNg7XF02#mlKpMN47BWE$ zW*D>oi~s=!@Bk2`009bc03eyJU9pC^pq8EvPw+5E9>woo36BZo{x8T71*Nj4&B&2cwLKt z-^3jtA!d6gqZQ=n^-%sF=za+~55Skvp<*xSZvqhv02PA(8P`t%@C#Jd7=QPS0h9o6 z-KLz)n*ylePS3%NLFbx4hlfd$=g~VVU;rQiAOI*jBBal66uvMEgag<}4B`S~JOcp0 zaJ3NFD1i)2)Y;}sfCs>Vl&^XTil1jMM}uWx1OOe;P6POQE$`kIpg_TE)#FMdWRtDa z!aIzFNVSF>ljuZ~Uj_|W4QwXJf|llE13D2C#ufk-DMA_{puIM<>%=?&0s+Sq74zfZ zCAF-CXabM|5OU5O(q>Dh;HS#fpztt85ImSJ;-H-|bc9VXOYi`|#}Xc$1{pCJJLzZ? zPM$#kP-&h3E&O*M4hGOF57RsW0mYCwNzu3HkINQ48Z-D@QZNY!s(X#i^Q2IHlhr}qE= diff --git a/samples/h264SampleFrames/frame-0818.h264 b/samples/h264SampleFrames/frame-0818.h264 index 3932c17ecf560ec6e920659b64aa276c0e2a4a8e..69dd9abcd41a73190bee7803540dd361d146b709 100644 GIT binary patch literal 1330 zcmY+Ec~H^`9L2vs_<<;(pxCm6XQrsBh-PY*cxJ7YmbOZ+lIdb*<(3(h33-!du1C5} zBHE?3nPpRL+t^Plwc7A#*Q~XIJfh1eJFrZ)ZFZ*F_s5$z^WJ}-nFj!fA@{Qd9I$3x zvM|(<%6`eAksg(NDeGtTNmbmvu>*wz{nR|=+Ori0 z7ftWdnJuoCU0D-!U++ha{6-bt&@5NEDf;#q{pg_oDs6`Nd$+fl9L~1i)46>~u4n8} zZYJZfqc1+}$h8^I*>$n%xPIp!_Cm(`W0Z=XC)`fN#7AKM2W8aHmOU-;uj_d{F*)@$ zWShE8(-9hHHiopTx!xMv0tUisx43mvits8}iA}Phs2xBtnqQeFniTjoS*Bg0PhFpo z8pGz5!3M!{b?MFRA_G*CEZcTQ#|dOIgd?UUc?rlKpG^RKHZY77ts*m<$I=APb3z)I zQwli9tc|pxn_h0l@joxL7+5n{>AaAsjSkVHYSqK@TRC*(FRp>Q?Pgwd9qY+tXINM)&o4RJE zTzY}bH%tc_-Wv&P{KyXu-&!KB7V!g$X0FlDWZgkx%;2I zts5|Hml9m6Dut7o8zu+8eW#yA$~MSg#cwR`(zLJ(Wx(i2!V5VaD?)DI#I5Jf_V6M` z%8od_7|uy7UJzjk%C(&}ik#tg4@?CcGPg?R*2eU(%&duPvnzP1E9OxA+VCNMrRV8P z^M|9I7c4u&r9{%EIfVZC^VlxaN=AS?-D-DV^p>=T9~62&hyM}#kD)H?@-bOr&VDY? z=r$Pey{YIvjgxtkk7||?Gy0@ghkcM?Rv_S<>r^B_(G5$GZfTFN4Edpv;;R(QF^cCXr3+&cY(jA%x1$qwdEFTl$D2ug?{XaY)EDspQalg{&3E1F zI~ICpl}g&gq;xyQUp|Xsx6_nOtUK9B5u|FVNde^zaW2d0JsD6w(2TXfJ4rmmT$u?L z(^|mrvKHkSH>5f@|HH^SmibW*kj%?RX8?|%fW3;UX%ihFNCY0guD;(u;s8{D$TXyI}gTG_Z3@3GjPx?4Jw&@ipQ&#$0yYE9(FDo3P=@{nW*crMqD1* zn&s?h@8od40DYuKr=37bivlzuC2C&PbB$~BIAD>4yaN;KMgD{38doN2j5bE)go-UI z-*mtKCZ#mML;;_yPO^UO6un-LxB8?D1suXpk8Kfk*uD(^v-xi#8!^WIJwe!L eUqn0w;xCT~KC%Yn1U9qeOJg3GB2Cp2hyMYk@G$NG literal 1122 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 diff --git a/samples/h264SampleFrames/frame-0820.h264 b/samples/h264SampleFrames/frame-0820.h264 index c6c184202ff3a88f1912ddc198aa7c5d0d312f3f..4e784a89da677fd4ff029df31ff998dcacfbd469 100644 GIT binary patch literal 1264 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 KQt?y^I`S7Ur}1q7 diff --git a/samples/h264SampleFrames/frame-0821.h264 b/samples/h264SampleFrames/frame-0821.h264 index 684e2b4b195f6c9c179d0b78634efc4d0831bee4..77742fcf0a637c9e7384b8be84e73eb6f7900c38 100644 GIT binary patch literal 1771 zcmVx=1&Vs^+2UU;rJ8=lp;L3rB2Z8U%r~$A6=oa~Z&>z7HW8l-E=&W6h z_ke`08ORfb@3o*YmadZw%hQP2UwN>M24n0CB<~3>H7!JqnQ; z*4DegU{ny<094~DmS{TA$FUI3y>VF$d<1|1fJmwkaABR8q_kIM$^OxX6iriiKaF{W zpK1UB0Ki&hfEq8tCEynl0cU^SFiPe!gK(jEVIXmr{eIrfwmw0^j5}10F2?rHZ~_lT zgeuB^&?SIY#nL{I2o9SX41iA!V(09>Q~@DUYbf~Mo} zocXt2-3^v4F@1_1a`_80&iPXHJZ z5<(;9K5Z1yZ;dKLZXe4|bidrU# zq<{AC0Re(`P8(x!blKrHX+RJ_2S(5sbOh_77sF+pHoO336LF$jEp%534C5680YC)+ zI3$ny(WXWgF}V-_aJ(lu%}6QY_PZP~2_OSwVj$E9mA^jV45|R2EQ~RtY`PdM+xvhR z0Op4Mf*R8Rqvj6)1U=@VPYXaW2LA{Epp?9s;dq7PQ9LhRR}TOHKmpD3PY;X-;(!4-05i(~bG&F5d}@=R{Aqvy zfGnN?fC7OWA?=xGy8-3g2m}IXV&G7xy#bW~L+W+nKAZ}jIs`sFzyM+kzaoKKGs{UP zzgxVSileKQ)p}3W?|TDv zJ9`t*Ud4pLhoVFTBB@wl&QJi~{oueyfEL|AI3yslBxUcTkJqsKTK|cF5x{r)1p))e zVdO-egK;nb5I6t<1rN{w5I6wjd!R5DfB>e505IW4P%a>72jU4*fQk2zIB|z+k=5A#*Y5#Ph_U-Gxon`&@JLTkY#yl60)?>8 z0*2lI0DyQ9sT79<-q4fI&LuZbzSr)68vH;ol8oH~?qLDcxTppR-<)6Y3!s(Y5;2R2IGTZ31|QS literal 1453 zcmV;e1ycF|0003AFaQ7nL7KoCydMeiJPF762oORjCBP7`Vj!SLpe1Rf(wQpEZtBKd z{sIgTh=4OP`)cqN_|*k4rkfA;$127nKZ6y9Bmw9xehUB&02YDtzo0*Y6vx0A1t93; zHo||vLMlYZgh{{qJQd4VO}ziRfgrTi~@B!=q$Z!Z)LEI2BbMsxIu7NWU5}=>}H~YzzTj)ub&M!n`nRzyJ^cJOh9y&|;M`bW;*+o0YW1RxFZUD5C8}W2csWtg@CB=uEI3M z1quKHB4Zo@GYCN7w*i^D;m?1e9}X^(-Seln{P3>26cBSlGAI$_LSwMb9Z0*NnSYqs zHpn0|+W`UySkN3m!Dhv(KJnDU{8Y!hKgA5-0I-Zb!9;;!&9B5tne!ttDjdqf@|V!& zBLFaW?|gvjiFn^r*lK$WO0{~#b2S-;{dK6u8S(=Ur8^Ol>CP^*P za*QGR`OqoZiFr)I+*`MbyfaA$=#4y>s<82a7=b3`BjO|P+|KYcxcgkeUS zK&Q(p{r7+XARZrF9UhKF$HadZ~$nV_csgYJ#c00<)h0D!Dafno210W!^@U^p_hkjlZ80e}J^ ziVW2tkj2Z0T9Jx>0E3bMAWK+0iy*Zo&RIr){Xz(+g$nY{Sw<2M^nd_B#70}qKnJ-M z%ZhAZHYgG24YJLs=Uso7z{VC5COkm#kObXAr9P25P>x$+0BgVo9Ob(>`T~cWZplX8 zFqq<|nCw|Th9m(Yhd#9Xuz19AI;!qxpA#Se5DxcH4jk(8Ad8r64F;|_+iFaI>)r%c z37U#%1&B`_$QbDWW2*TuCYj_EyGDgjqxu4rD*N8{hgy*Obb`x0XzW)OC$o3l0SsXV zWGN6#o_YVYHwv}Gm&lT$KL79x`2uHDH(tCe{1_`i2asDs0T|2fCwA}4`KqD?4cYbw z{rS6pKt%~G(pyjS_KeJSwzW1Z|8VcfAgL(-kgx!-0DS_fSe_#UdLQqAKFX1dU!tGK z?Ij-!7GmrTL4$(u5eEQBFaQ7nK>%(hum-OHcrX9}0YLyciL3#uz#EJJ00BV&6+&wO HYVZc*c4lv! diff --git a/samples/h264SampleFrames/frame-0822.h264 b/samples/h264SampleFrames/frame-0822.h264 index 7a57222603ce1ccd91297604f94dd09ee8704d4a..6b411e09c3111d326ad4e67beb75f668ab5d27b5 100644 GIT binary patch literal 969 zcmV;)12+5s0003AFaQ7nL7Jc%yaaLm0D%NHV1xiHZ6tp?!3Z~?0LNQ56mIMdJ!>Hs zrhn_G4`8In983VszVG|k&Cu1C^3Z?>z=32I0097=06|4otx+?7cQ9e)@DL!UEW!dD z0o~iDkdOO|e7AukBqR^`W`4nuAOt*HlxSQ2-ey*F4M;nfDjUV$%9M;Qj7Lr00;#DbHgQo2?PTJdN9FTRnHNp&5{fN7+$M=Za@M6 z0RV!D;LM;RF{=d=XJ`Nd0E3=A8LSkW8Bnhx`}d3n00IGp5vm#v;f`<~0RWG07v^(_ zhOG5?VUXoczx6c*M}>J@t^ZYnMJj)Ocsl6_0o8ILzpM$zQ#`;B01z8q zPy$--17rv27X-Z+t}*h&o2P|-nc*Sf34g(XWuz33fe20fM7BUbD3aU25H9cNCjyW= zhvG99U(^$3h01CL=zarz5Pc^h<5cP914yGl0?jB4qrgkz#+nkCkbD3HVnr!f&6KXp z{s032`UpiiQLZY{0|7OD3V>(=<#e!tvrrwv4nP1P8UO+Vz&iX?K9<$869olT3;^%| z;CLUJ1PX+id4Mhf#tk2xG?+3g6UDK-$ukptquk^CfM);)2B(-~VkpxUarc54flVdi zMie9|(uIHrd;kc5P(9eouqYu96SMz=|B1F{%r$pV#xsBm#!!R`xdw?e(Yrth1TZ+p z37EI4LA*3U=_>)QW`fCV55CV(Ib22(-c#b*ZOfB-=p00bD(fB+z>0Q`HQ0;eHB z06>HQ1PA*JfDeYcbLa*^Nde<#q%YtEs%3EiN(>bq72aYHAPrg50-;JI|C;e8_4)01 zATQA=gOIS3hyM1Uh+IgJfj$bPeIq8tvH_6N0;3M$yj;6y_+=${##^57qyX*;DoK~% z;Gzs#OYzVE%nB|FzcLLO;0#^yVhjK)BTF`xdd)y%PkwGhO>h6X05f@#bB~15E${jt z@zOBN^Z*DBK7W-xXbO@~03u3ZfFRCzQ zi|HHy1PF-807|V@2lIJD>ipeEJOPBvMnM=Px)|V!e*uRqG!;rrjTwMG%xs4^EsZV; z02Uehg8&pI@25jzB4Y*p-~;M1(K>%(hs0Ob9crX9}0YLyciK+psz#EJJ00BV&6+&u&YVZc*!rg=F literal 957 zcmV;u148@&0003AFaQ7nL7LziyaaLm0D%NHVbB2Z+97;W;fxmi00TEx&q9i+VW*_= zzhpo2s1IPI#~f?{U)`;27TuxtbE`%G9|Bx~-~b>Kz#5gkETo=i?x4fV;2=RxS%d^Q z2>s7OfA1=sXxtbI?vO|y@XY#^!L@3RH;}0 z_k(vxKn|;s2L7-i%)T^$0D#)kfHa+>AZ&pD2f=SfYK(j(gv{`-(>x?RbVA3j0JO3| zwaUOklM4AD4Q!)nH&Ouu=gR=34nSQaFoT~1azk9>5jn<@wwJ&{U(nnT$Y22M7yyjA zcnyR?l{NqW%mI`DC~nhEW=(-qai?Ygh7hCAG=UEelOxZfb`rn67nu#hVd6B*zb1_OnthT$|QB4&oqG28$?1PrA6uvAq0If5)39e@Y`J0hG1@bp{X zye&Y1Lf5OtltzgqTepOF8Ay?93p*#!i8j6r8n7DJO_2pH%*F!B-Uo=}TlnX@XyX z3QJ}*HBL|%joInZy;lQl$uJaIq0AG$x z#CZh&+6UrqTh_V=5DU~wU{abq;s3p}jR+I)J%Q(Lu#b#MyeYoWLClzVWB>oV{4)r& zrwmKq{KLS7IJsd!G73yKydD6D5}dY%jPL`S9m&FA2V`Y!lFwO)3~BGp$hz16|D1ps zJeqQkgwieV`XBs26czvw91i-X)`3zGQ`i4EBftOd2A^<$xO@R1KmY&%K>%(hxCXBP fcrX9}0YLyciLL>wz#EJJ00BV&6+&x(YVZc*udj%M6-H;}CnKj0V&qZ=RxRy3)nftNvEhn}Bmgiz_k$JzkN}{QUj*5G zGZB!+AJ-pES^L5LTSpVd10LEmIGPSuYy>gSde9{c$^l z-~b>T27*WQ6$;dx@DPg#F4mcQr$S0ldH@0|U*HS?98i@`r4HR=UwbkRUA2G$0|;ab z?iAnLd##D8@H3PXO-c6wgtM5vdH@3<0HZvLY?eQd0||5~bb%EDqRB-lkZvH%l@?(q zaH*Jo00aXE{Jc8nVnj`&w`xQ10Ll|^k*}J{ZHEF`25uLG;=@QC)b8~{rI1;+(Iv;wJred2%sKmou2KnRmS1rhVW zOql&=8~`u?Q6|xFw=~cYCS*te5%;y>55jdEKg5~PV@&t}0s!L%x&I&_ORENusTrYg z00uDp`YIc(U?psRMYb(OjL1t*pQs=JsZ_4t z<>-t0z)qb%)PxFu>%cU=@zxU&0=>Di{s+$~DPA>KA2x#o1_mf1BbQ%*G6Yt_F#w24 z0c}YL5M=@s0xnztfB=CC0tg1Sn&0YPE7u0GY5xBW;V7UHsnWt`q@UKwQ7^0v2xn-r zr-G`qLS+AgFj7o>zYF8xuP(9k-H80|&>rL=~3>$5EHRu1o z-<>YM%#{Yad%yklKDMN0AA$hPKsenAo}mva3h-y>4pW2*<)f^$k6Qpt;J{b810de@ zd6q*0jPRGiAv^-1m7#q**>v9E?mPei0dWQ>F@ggT9!z_1i$jnv@qi3FeZV-MF;E(e zkX!%O5)|*(9hjHF|BL_~U=P4{h~a($f@um@Y{UFiwQIf)&XoWA@QeTi0)XI?AkTzF z-kGUgwi*Bka9hM21RRc^Eb{!i1A@;wr4Ie;VEk@|ANJRcK}ZNQ7MNOWzRPczvNQP1 z(Y*->4TT(F*l0Khz5oCLK>%(hum-OHcrX9}0YLyciL3#uz#EJJ00BV&6+&wOYVZc* DE14z_ literal 1158 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 Tz#EJJ00BV&6+&x(YVZc*Umm!q literal 1465 zcmV;q1xES+0003AFaQ7nL7N~Nyaa*#{(c@&1Tdi-0D7_ZByzEk1R?AOUzt!D(%~f( z|GPdIj~d7H>BU|X(K0@z{6&RG6&Nr85H76oL}G8}?VK^JQCHN8;TBu>qAQM$B|PM> zOd|mXtLx!)RZ6t~|1ECAh&Vcz%&OgO`?me@m=zi2|^*yUZw!AVwk>>0Q?JW?L! zKliRg28f12%nX$#lYvp5-$*Qo`}tUxko!Rp4}S;t)}v$Zv;YHeZ)xGwnM7ttW41fU zaH#Uv|NXc!hFexxP(0a9?%kBM5PO9X$F&D0N&ml~2r zo*ceuqXRJ`G-PLh-ai+A{J{?&BhaqiBK^R}?F7WEx{cNeW}|5|!C7&^g08nfN&yKO zv(kjrEByn!jgwA)etrN9RWnI)?dcTr{_jWt1OotORJMV4t#9u(HIMga2Sj;kV27o(?-}9o)yp@L5&1Lm;lNCua5^d5Bv}@I096Z-53g^ z(~CLxn{VI?cbdNZ5kG^x4xq$DB5ZJ6$Bjc`@H4Ovg?gKxZs~sX*T=NTdXaA}A<86aa681&};ojKCde3B{2w{_r3IH9_J_vzk~6b8=uvcJkU7 zM)ry_I4k*Ai8;n#DmXU*O)opQ0!we+004k7C;$imfD#QSi>`_ag{I*LuL3#=BqyH& zqKzZ}umAx8V*sHdvM(V4j!?R|STF$i00;qtXbMEeF1c_#Y6is-Z&W^RKWC9im;bbZ zs1z(JuHQ=O3;5B0R)>p^T<-u4DS@O;rv+nwe;x>YH8mdM2 zBBOu&*V3U(nK zb;2+$JS*oI6o~)?2{01CbOyi(NrK%TWB?E(KtloVcmgFsPLF(LIT|(BzjsoV35~ya z9UDXL_#DoS5C8}P1Yuxl|A74F_t*2|n^{ybA0s{$@XmGs$X`$@vcZ)a&0#X%(h$Of+fcrX9}0YLyciLwE! Tz#EJJ00BV&6+&!)YVZc*m5FPi diff --git a/samples/h264SampleFrames/frame-0825.h264 b/samples/h264SampleFrames/frame-0825.h264 index 6d5bf2bc242371bbcc3316ac461b1de915af41fe..38eb60fc61290eff05a7ca1dc0e172b9b2465470 100644 GIT binary patch literal 1258 zcmVS8^9qOW*m z`h%qzP~ZZm5RbMH42gjP$Qc@RP+&lxT|0&V#Eb$P2CS|GwA3a4|KI_Gh(yAv3fAPT z76>HJfk?lQI4(RZz~T-}5P&O%T%^zdy%-xH)OfzL;s1aCU~vZH34lkw)7=5`9HhPA zJ8$6yW$s~l-1gAK(lkSqAMUD8tctU);D4VbcBfwUiVUTTWZ*T1cz7Mb$i0=oa-hG) z8R5oq5n@-P8``>O{mU;zSY8>&O^ z06}OIc|%VfB*sdtQ~+GaN*rzJQtr9ZFDDUYm25n)1CWJZ}8v zk`ya8QP2CJ01w%K0tOAgje$d#h}ZxK2yT!AfF2UwG)jo<$WB%{n4>Mhji8_xK*R>2 zp8x`*s5}uup(S{U2pty8_7MmRQ+ir`_uc>ifR6wnpbFtDkKNF>TO0G{Hx2**fmBRD z2Qnh}_OJ*QD?JE_QZ)DWfDkY#4J+pT6la`Sz5oD#FpKnc?ZQw&NAsA$FMj^tyk{k>_nG7A@gohS7Ct^j(SO<+iEK9$X0H0I?p`)g{Nb4If3>H|? zeisr%ys#HA0Bh@j90UVR=TM(S#eg6HAQcJ#Pnr$@fB=Dl00FvPxtAfwlXsclsm1 z{SaMtb^Wcn5avEK|C;-PP%2#q{(U4NMM9?yLaE-~fta(+w?@ru#q|fDki9K{P13%Y(q5*M?&S zEvgXLktUl(5%2<_%JAHX=O%0Av-`Xm002M$?qJ|dPm3%|XQPmD_5cC^Vb-!h!!?pP z3{t6$f@J`G-=XPI>)`*!00IDXzyhESK+hXs78X=c000CIVdAH6{``;t5hO4G!-Sns zxPg!uFyOTCo}&&Vcv1m(=)yQ5_Vw>5D0*A4Bn(n ze~v5v`{Mut13&=;ED<4EKR=;}A3^v4SjJ<|iwM&+o1Ov+NT-zP)2Y03#l&{8V}Q;G z20#G06>)+ zCJ%{cc5!Dz7zS$y^tdAAqhZ(H5CDb(0-k$;q9PAVL%g5^20UJ3q-THtCP@G9!H&uR zKn4I1_y<1iH>N;n{0>L}1}_N&0ktE5C5w#!o*i>#fLwT2fy5k`ApsPIQUMzP90c^( zY&<8=mHzHoAbkeo3BU(XWt2x6mk+S?v7oqzK$;8r3P-;1G?6Kb3#Rs_Xj?eKqO{=t zNf(7WC_6MmJfv_3AV2H>1GqUC1<7()#SPsN@x5KHfd1hw0O{`e@^{zRJPEi;e z4|hsaV7g!s(Z2)TU2IHjOoB99% diff --git a/samples/h264SampleFrames/frame-0826.h264 b/samples/h264SampleFrames/frame-0826.h264 index 9ddd9dbab2a39b83f66ae30f946607e7e413d7ee..51eead2ab9ce81007bd1f6c8120908d571bb2e2d 100644 GIT binary patch literal 6854 zcmeI0c{Ei2|HtnPW6#W3M~NBAnh<5Fm>FA28WJK5St`j^Au(ecL$XwgvK2nGT9SPk zOA;+8QN*Am>-aF4Fmu19<@^2p(eL{^zwhV!J-^>Mz0W=O-gECg_w_i>`+UCcy>9>j zAp8j6%i0T1lYIlhN=(5D`S=6?fD3?rU3ti8cwoPtKk{q``OC(G8VR`#f{XW|0c7%3-3^jEZRl5CBZ_P2y*pimEG9`)o>_IxjueLa_`EtD5F+py8 zNKyc-qJozRm9y@XEWT(8E@jN{wOeI|ckfC$y>75qyjg#}=2@f#m>6?*4b50GmtKj^ z?mNFr$JSAFI_S;Xg29D6O^_WW$k$tK6T0sn%?_e9a3bP()cKY5rI+q3In9$6rL?DX z=s-$3ce@Hx*vKIX6)J6U4j#nBi4)QHGBJP_eC1xV&7Z-j-2#K?gCvWU_; zx1dVHLZrxLT3z&29q?z>Z)lxiMo+p7MCk+ExHATVk^JnXA28&Yh!YTGDwMp6R$Hqpb*07AOY7kH=y z9x)v4*)c9*p^K>U_>|lL++Mq>N?$#c+Yy54-VBo``QFwnSIQgKN$(WA@Qih{4$O7; zSPyGG!KUj&Tqv2nQbqHS*V`Iq%P(;bKOLO~>+WAJ!FKkexn|)-UEY9F)ze_Oj4CD^T+O%87G> zKQWGv!ybE`wH@p#`&!+XJqzu#=E$Qj_RK;$1y-~7s$Dfz=bP*rq)**j&8`SY;LIXKcvO2@5a&| zn(K1m@>9?^iEwS<{4&m`p_QU)l<}RFO(b56d{u)h$G{0e?|apg|NR28m@zmBU>n9x zWE3`S%Gz0m2t}*%9Tr&Mgw7oIVD=?BD#`!61xI#8NdO}T90fG4dPu@2yNY4&ZIX

    ~5Mk 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 diff --git a/samples/h264SampleFrames/frame-0827.h264 b/samples/h264SampleFrames/frame-0827.h264 index 45d7fed236ddb62e0fcc6ce3950c81ac489c92c4..9785f8c1a39c56a73b9aa5a0e931b4f20dee47f6 100644 GIT binary patch literal 3041 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 HLFoSv0uVgI literal 1100 zcmV-S1he}90003AFaQ7nL7RXYyajI*5)C1cP!$3}J&1<9WPBc#ismUtF5AX71!xJT zvIW$SN=*rGjG87HFclOorUDGX8BhQlP?%?V+>fNtK+G4u1dxSr1L&t+tq`<227y2n zbXn2p0stj&Qr8?|;x*>{+`bG&27`maSS|_-fCFUA(2{plW$*|JAmaJ2Cu8KWqp$b? zN8l-S?gSVW(k8dA;5twM5L_K901tx^Tcvu4vH!dP1~3B3gds67nu#hVd6B*zb z1_OnthQUM#B4(z~G28$?1`M@(uuN3{L4qth8ejqd4(X=>yge5C?+Z{MP^Ieer6Hn8 z*6raP#6m1u!p_O`AWff!4Ok6yCdh(zregy-5fjEN04h_+Xr}`7*2|9&-~b2*98g!! zkARlOx8qP0fDnV0aORUTWfuhyD^vG@hGU151zl7Vr7e(&rYXJv7#Kn&Q;@?Y;|F~# z!gS z009I;!bQhOLP)HA`nU`Unga|2YimL>XFmlXaNuBgS3qe331JYI0WY)$_|^bKUWGct zJOEmj`B4A=sQ`5R^~@vJ)CRXA6vZ!4&3$W7e&PaSkKCY=saSvi`v)(9tOy`+0t__c zIC#+@4MINv=c0!vz&OY6+p5JA|Ki?fvGraUa6KXf)64*@h@L`=WB>L3$!oHd1vS{> zkrQnp=*|z!04Izqu-qkt6-7{IL_4;ZzrO%YJbwI0NC_cP{o9eX7aw_nV_RS!>L461 zI8r{cF<1G%+-dE90096z5C3!+WF{0)y9D8XuO71z3GHzqPoq+NR=Ha)&;WoDlS?eg zb;*LC@L&m&&MGW6*;3Q5FF*iGcnVUy*bzv8Z;XZuuH^r~O*|{yAQT6P5w1r-DVMGT z2+3o}^-^k>#rm)T_1DfNqMY|ILr1Rq&;RoHJ>9+*A6>+EHP4&MD-8-@q4Guiq!NH_ z0J0YO4(J9w!*HXIx;lML+0003&0B$DW2Co2kFaQ7nK>#_4xB;uc S8;k$|0YLy2LT&(R@CM_l&(L%L diff --git a/samples/h264SampleFrames/frame-0828.h264 b/samples/h264SampleFrames/frame-0828.h264 index 5505858f2405df0eaa0cfe2c0afa9ed228cb5bd1..759ce71ab7b8e16d2be6954d4a2afcc132726275 100644 GIT binary patch literal 1425 zcmV;C1#bEP0003AFaQ7nL7G4syagX9Sb4gDSRUU}*TEgU!U9V8xqt$`jC3Bn)(meh zPFVAG0I)sYJOlu&2wK*Ahv)#{ZeRh1G8xBaGrF+w%m6F{qlamNsHqh{af|>R;jcYlNJxIzHP@-c?!`J|G;2W5W4_W<0_PB zKFG$zLmzKxb&9^gkN^+|6+#XSGqV)ditM>RzzYn85ovRA4N_6sfB--+7MWlMi|mPb z1;l_^-}fNlMjfh07i+s`zvA9!vu12Q072-`g;`Jf1hQ62!~b%C0{|)A!Zas52?#O$ zq|X$m0097y0mlu4FTZ_`2Q4BH3kpZ~yb?#7s0D%MkWGE~^}v0_>c`^%0zFTCPLlOH zS5e#KFATv&Cl*Sv_`m>(gQ5xcC{_yt695MI2UqYo6bK`Su>ygo+V%hD0tWfeg_WQk zz+=LQ#e-xV;7Is6RJ2V&HQ)b(@DKsfum&9gI_QP)*=J3l@>H>Q5k+L6wvGZv>)X_1 z8e@#`lA_Ec?*%gtzybpV?4H=%T{d`4nqPzP0hCR~iDb3WTqHG&QsH<` zbDEG+#qCfE04M>&$p5YyWMN|)5dZgpr~q{YW(X-{$)~4AvBLn805&!v4M2H2^Y0V@ z3BUoKSOXp7K)d5KoNxmG6wu$WOIlzQe7WEO?|ZyL@o1hG&nuwA@Bjn=L>{+!<3qWu zSqf1f?f?OZF8qo`?9VMk9Q|*ZG9E?FPgK%-T-8tim*&XC{KrNe3qk<_@X#<+0*wTO z$%x2FNUVS0{MXR}^TPZOAVDyV0stKFFi8_isU`eaBIV#9YRyb|yZ|83!t#3p)O~4% z*n(_-`QV2`i+$$@F1nJFxdtdx-;+Qwf+j;SFwqn1lK@1(DEMA!1QIE>UfqZc6E>OP zECAxo#t6CE2c=}Bj6V|w01Sz&1&3XCN~BKxV8IH_JS4FCOgkuZ!w6THv=&6(xT635 z&;SevJFGQ{RmS7v9e{i=n`=#b|9|h**ZGhX8tv{~f7|P7n-9VPmB50sbhMn}VZDlZ z1BV!PsU2O8?S24Ep@Ce)35WBmj4%;C&k1}I6M#b^#_Z1JvbmEsyZ`|J^8p9~yx?5b z2kHF>!jO040AW|`1E1C^2P1fY|JEcic5aiHi{Ssv0Cj+V0yOQF&}iafKmY(i793PQ z34BZd1OS1Tk2(iFmRLMVZKd02a zhF8~MW&6Fe0mKO+E!PeDnjNqj0z9wt{1r6loJN#@qpu2^OT)2I;7KiLbjrvn!gpY4 z0vMmc-5zvm|J=L{VlZv=L+c4K|NrC0FR0M}x&S$x8>#UIq`^)CZb3(esv0AK2e!Iq z85o{EjE`B6|CN8s7&TdsjxPdbHt|@McVM2^uAl$@@VH3A@Fi;lO&}Gd4va~zQ8**C z|NSq^%R)i|n-_&`^Q@r^*)y>iHL{~2dfLQ-q_2}{pA3qKmY&%K>%(hkOr>+ fcrX9}0YLyciKGFmz#EJJ00BV&6+&qMYVZc*GEaf1 literal 1233 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 literal 1073 zcmV-11kU>a0003AFaQ7nL7U(jyakbe90!a@9fbs@4Zr~a0}c!~$D>v7EeaONZRh|5 z06+s8+Q3XXzD;Q=XbRo_02Tp)1Q{oeo*-2(x$J1-8={kziP=>(FR&2;z~B&u0^=Y6 zfq{m#!)aF&FEU3;Yrp_NN(coK8|!52p%#qjWt~A1Y%pO@LIw_h@6g0RC88uLfpS7Z z-4}oet^gn_%%ZML5ctk_;{ZSaAduj*BtSYAn@FUf*zMrPAW#s}(t@h*7{?aIaNbxS z-XH)F7XV;>cR=^NtVOx#;fF?yzzx{kDoIg)-@G6Jj06Wf!vn;H2-}VIkbSXvfB~U> z93Wx~gZvB_ld<4(8psq6Ib2j)`5-yXXb?Zcp>D<2B_Jo8!I0MaO@tspFzgc+R;L7{ z1na(cPw)2u6AAPv$!T8V-T(~%TYyu*vW6r?=p-k|q#uXM0ALgzc@Yc1&!OF|$v{8Q zfPmrOG@h83{T?YleE?I3tQ^lMFOELK*#DTECYmyfF@J(k01ylpXUhh{8<{oe5`*9h z{$f`UT#TV!3dth4z2w6DPnV@04?Z7&2oNAwuOhOfNLMmW_ijKJ0096O$%JSRy5$dJ z)Bq|vU;wa%(553^_e)B!01ylS^Ke-2v;YACpcKmr$oza6AU}5V>;yx~5&(Qxk`Mxe z)-V6u0{{nbL6;fTc1S;5#hvUaLg}b730Ps=65twuAW)QOsYQW)gz{zgfMSpVgA>bT z^ovmK*}zid01om10Dy5o)-FI97A58X-UKm1nAMadql7%ONmorDfPy?HpU=RYe?Vsf zNsbW-VT3)v2eE&5jB;}~06kMZBY*^7^2`5jv9oX5B#-{o2T9Nw?vQf%U{eB5h=367 zOybYCz*&))05ygIiXaWYs9xGYgmDf1V95Xg*8l+nAz*xGAW=X|VS^-X#{Mh}U`-hV zP!Ynl3b;xoFJz~d6@imisiL*}{_6k`O+;k7`URSQdb}6O_6GNNimb2J{s0#so4n`2 zIz9etNN)rY64}g7i?7@fF!avPmgEax|A3l!PcO?XR6xL_GB!HQ>-k2&4O9RiCA?Uf z%uj!3-xM~Qr)YOW!;zsZ>x((wX6789!CVEA+c`00aP$1EaMKUnoQ) z<^U~Gj-w#&JPZlN{Zx`cVtK8S?*0A&CGjCz(J`_`ya_JT>Wmf~OFyZ6(PaoklxN_t z$Uo3i_rC!7L$aOc51tGAxPg5GJ@4xUtm}gB01+5uO z;qCu;7C^E(c7PTD7gV;-N6vt1BLN;Vu1fFUsu=c*?_U4^M6`#%(h_y(^4crX9}0YLyciM|1=z#EJJ00BV&6+&--YVZc*upi6K diff --git a/samples/h264SampleFrames/frame-0831.h264 b/samples/h264SampleFrames/frame-0831.h264 index fb0e30a3233c90a281d1204fe98548a3006e7a06..6019348a2d4336b5329f865fd998f2b0d9a807d1 100644 GIT binary patch literal 1544 zcmV+j2KV^@0003AFaQ7nL7Jc%yaj|H#SY*Akle;jDJgLXX)56`g;U@phIx$d{T;Y$ zsAnmB5JaJ(0ce4OJ{ChdWc)Yby73BJ0Du~`V>Cw4Zs-;A$e+D}EKuc#*Am9iEa!{> z1Obc#g2)QTPu(^Mx24nK02{C&>j02 zI`h7q3ZHZge0#q8e)jNSI3)!kL$hTFYi16;0FIH$FaT3v03aEzfE)mjma(ExM~e(< zvcTY88-!j9aNr0C3gP5d`N$#;7$rXeSf%JZKv2X&NNDsye`J9`t* zUgd;4itG3;s$~0fKf0Q3j|R?z@0~X$7m3`mcFN_ zFX2OBXrsUZjgW}qruoWh(eMTgB#PUW34IxVn|@H~~Y|Kw<1kcKbYK zO99Ie<|jJ}DF6nBNruCQv5MWg_-|K%XDoiesFO7gA^YBn0gjQlXXgLbc(yF4f?~IW z{lb_bh5#1HLmKy#)a-o!Edd00Ux9oICJ0~&?r|7@_VQvs`TgYqL5s0bsDo zwfakaptEr`gI&qrGynBhz{=^5|NMAZ2HyTF2MUPV>BCJt2LJ38*YP<8=nJjuj$hTJ zEF;8wHwMbk98Xf#gpIdQR8^nN7Q_Glr;Z3f5qe)oplybm%RS2coM^>PE$`3EvUxr! z|Nj3V?`l91?jt`gM;ExmWkG?m!}<@n6S)THNOuw-L<8I#{=`2t#00&CwLiNF-*m61 u$G}uT0003&0B$Cz2Co2kFaQ7nK>#_4ssXFO8;k$|0YLy2LTZ3&@CM_W2D2^z literal 1412 zcmV-~1$+7c0003AFaQ7nL7D&>yaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`L0eYF&+$9KmZ&71ONaF0Vete8E-4Zzzs{F$+SA4P)e|jq$BNBuM803Z>F%5 z?-aX2K>1GqU;wA2CG-v@1_6hQfGPj@4RFJF?A*3ddw1Xz013>11On<_*)U&g9{;>x zB917W22xk?e3d<;fDJ=CTOcWMdN^MLFT62YNxV}9^;8@!#{&)?pauX8-O>Z1Rbe@( zzkmS%1_K5*RT@soL@j}f(k~7{%Y0@*BGJY^HBVod>Fu`L^chLp*r1wWrvBf+OaOo( zPQ?J7(dwA8@8IA7<6sepSUe-^;l`$x_3hCR00?b$Y)o- zfCdyNg<)k@wVc}1|NIyLX4`zGyRx$!bLpXm7(hKeKFnF=5f^xBGiTc z00;nMphg=%+4RV|NDi!E$YC0?3K7JwyZ`|K5JH3wW8qny8i?v2f{-TZ0bn5@k|l@= zzb97bz5qY~KsX(m3T;vSBIZitVGsFUoix?p0M0HX*>6w%zyLx5p{Y7QHop4{g3owBAyu`(uiCPz+K2p2vo>L? zy7L*wJvLaK|2daG|9Aih0fkt07UCcB_!tbt*!KKm(GCCt1)W#809c&m!(@yA0RZp- z5EB3o56gH04hn!1or|dZFkC9D6wiiHW&R-qCkViYmku%NL6!}8`^KOcnbT=I_kbYA zAzo}eB#}srGT8d8;9x-!tQP`5XTT@LOKbv&p-AC;nuiv(1|i1`}cq`YY6PB zZoM>D_z)NkGs3(J;87Mkn(zVC?Zr3u^f~MO{9e!$K!b}gOW;VY`sx6teFYeDc$OeW)<7twCHZoW77V1NJ1@v`m0U5U66 zP1@s2|1O1uOo(^Yu>Wj_-ii+!=xv-837v9Bs}Fzwd~iYliL{%e&?RBDPcHR8bOTX^ zMScC}4XCc7OH#zFi&gU{_H0>V*}%x%YdkW0003&0B$CL2Co2kFaQ7nK>#_4paHAE S8;k$|0YLy2LTCVL@CM^HPKiPQ diff --git a/samples/h264SampleFrames/frame-0832.h264 b/samples/h264SampleFrames/frame-0832.h264 index df5a07731b1d3869df710aff0e0573555e63232b..bd11c152945395e61be2c443147b1ff6616a68ec 100644 GIT binary patch literal 1225 zcmV;)1UCBs0003AFaQ7nL7KoCyai7%O9jUC-p>0Yufte7w?vqv7*h zQTWjCYQ%;Be4-SIm=;yQGWakCSpVen@=rO_?6GRAOMU20suY$prI?bgb)2;CrNP94FX_6 z!N6p23?>_sL}1+U5dZ*yQV|dU2mt^fNfSWf)8Byl{sMu*ox{m8&OZPH+8h7`2LLI^ z5KP~_O+bUxi7!$mbstN`;iQUTxDX5HX>tSucsK&ctN<+AfQUQ~d|2B;a}p1L0E|h> zRx@QQvo8Puz!t-iPK}A*%5QmCe|G}0hSxoR=_RX_4V^viQtM338jG+h> zat#t`qjrE02w-uH7zN%ESa8gLt)7s%FKhk@padWV6F?Xb22(-s&1VOg!~g;a-~b@P zh`<04Qvh`LKw!3zFaQuE009C1!yp6Uxu56^f|3KqO-NqA2~^6W0FW5^54i@zkxx1M z6g=tZ1U{C>-XD`(66K77^8=sBWk4gx$KwQ(00+nj3D9w0cmO6RD2YSdAi8|;f{?%yC_JnW1&Pe=66SWmsZ6op{~@sjLR|i7OC`$;KW+av zm-TRZ4hJtBHk)tpN*^Q9r1(Bu8lmH71{lS0=68F=gu@NzX z{_p|@9AKv?q34PGAkPZt^YAAh*cHICXuzi~ zUk0)2Ds1P{z7Lt7+_G~hJWdv;7m75_zmJ+*TG28BJ}qXHr2 z@VO!+9wZ?yLEM5_2hyPafk_5$gPsB03EzEYvv>mHDgt=q0U#;PKRV$XK(1PvDX zK(Yk!Mt~U@yYKyc71Y4!orn{+)1W{MxCXZn z1|DH1g53MIgo~m}GY=^5QRUHz(!+Rg@e}Hz#DxqA3aa08c)}(WrzOu0q!;FB@a!0E zp(#h4pdi%(5|0gMrh&6LA*wMmAOH6PZpaZDH)OYjsEgJ;ujTm&+i-wDFITaz|L23_ z{>85cP6QTx<&Nx!|2tj_84^iqVn6rt_&khs-$lg;yTFt+)Qw(O1yhSe(2xK7TQFKe z5eRqRpqR`f-~o8Jv5cZphO;nq2H4Jp`+)ifNcFsx-{z15{9o}h0Y_Zce^3%6dS{xt zR=@u&1Lt`YrzubV?G5uc;s5z)e0w+pL5v|iUoqb2$XIQhFyuK%u0j*Pcj17ifB*mi nK>%(hum-OHcrX9}0YLyciL3#uz#EJJ00BV&6+&wOYVZc*C6Ez> literal 947 zcmV;k15Eq?0003AFaQ7nL7E^Myak6RgsK2Ip8`pOPzYIWLFftq61XWX;{>(OHiN&W z+MpI@4~@V92A}}|pv0+Hb;ymjx%?x59smIVASfV3J(1Lc$vA}?)m|E$00aq!Qc?n9 z)=#$G5+nElfElC6Ve(G{K)oi}z?o1nmHq($hyu}-A|qS~bG1W{00s|%P1yxWfS3l8%o6|jWs%yh@8C}_@%ThM5`YDPfB^(X4})+*Fs!!<8R3Gg z1eyA4!a%6kObH6$2w@C(YN#Ao1wrN9wT83i)_?#&6M2*X90MpW@rEW;8=u#iq7X2+ z01!L;ga{DjkFZM9uo@WU-Qx&?lF(X;VHU!M`VtxLTf`YmB9cidVaz0!ctW&;2xzwY zp#>XlPXU4}0cBYU6juEGfq8el8KCm@P>4;ru`mDn0e}F25zGi&5#aI`qfZdf0N{a5 z6iLNTom7z0W$V�KhQDLTb;|2~Hf&(h2>)yZ|sU&jh1^rruT%@pRkUy(7?%c`0h|f%u*^2n z)BoS^{FaCLzoH_v1o6lMKu7O_In-mVk3HbAqWe4K@B67)j8VNfJ_{}06AANZ7XoSm z$QD4d1o1*3B`*K__&ZDvnHa$5eJBI~(6|TMgcIzE0ssH?%kPA{7na_l5(uR~^bNlL zeLws}`lzuXD1j2F9?5u9v6E5NXTV?nWD?#YG&=!x^iR|GTCg zq#k1m96K+A;~h7VaY8QeF#r$Ljb8iVQ8Y~xAs_$ta~Y(@WN&-)JVp`l0Q_9&H4?sS zG1zPkjOb^a3eY;wTIzTDjDQE%il4>6NbzoOG6WJmGtB7R|Nn7-K6R3{PEx=BZ7uWP zvH#D2`1WuS1~7#6eaAhXp<%zK9)&48nTc!s(Xn<<)2IGwVry2kN diff --git a/samples/h264SampleFrames/frame-0833.h264 b/samples/h264SampleFrames/frame-0833.h264 index 7064b052e3bcf3bbac5a1992012849bdd62c275e..7bedec9cd9e127c9eadf8605812b18d4c7769852 100644 GIT binary patch literal 1238 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�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 literal 952 zcmV;p14sM-0003AFaQ7nL7IRXyag{oVx+xFkp=z<_z=Z-060KVhS73_BrOqI<32y$ z7yv-P9OVXFr5KrhnYx0f00*!lK~0MlrR6i;1UpU`mdlq-qTVKLOAUvB&IkrT0R`47 z8VP!%c-p`rfRf{MLju`PI}%GX*@Hjj58=Q-I;d)#-5^TF$q4)apy~Gs31hGFp4gi2K0viB^S(b3P8Z!s2zzZHC z0ss$VXbM`x09y{3TA&lUmdpDB1{VklfFl^9M*oBuCN=*&6}sR6!?Xf##U;6M+g5MUekv!ub+#4m(+0N4fzVB;q; zPbmNYn4ARAD9S9we}Yf|A-E;su{~>;a2N-mZT4ME3jsWyjmm^&_L#jQ(f_nGn0^3) z2r{D5#u{v)XHTJk6#xpiGQsyn!jkHMDlfnf6tW+fuX`6O00INe!$dY{00IHPwFs+<$J_ZzGZC$Pp z;ND9<@G^)78m#f#f~|GWp_d>7ynp~^1*KL3rjGmn-Vuf{q+tS(S&bm4yWhYr$A$Cx z_!E!tCV_-lS^$^m*;(KLa+CJedeA9c)cgL2rE>-n-(moQNsmDKfyKqfhyeou5DMOa z>Ua7@`9?SO9@?_KSfvc_d#a{0|A3 zrKwb(tO>z1woO;d@A~l~!XJXU%x`3{|NifV*Ibx$wA~_Rb_>JB^9O}-_ST7vEN}$@ zX=)L`4^^J71&|sdqNA=vS4MjQ&}@LxCGclC1wm7900+k9YGn7lKmY_bSv29^9VOO- zmFSj(>`8P(8K{D4TYS8JO}?`L&r{WRomKzPb&XYj@0a|r0003&0B$Cr2Co2kFaQ7n aK>#_4r~#|M8;k$|0YLy2LTUhN@CM_iJeVK= diff --git a/samples/h264SampleFrames/frame-0836.h264 b/samples/h264SampleFrames/frame-0836.h264 index 412bd81fc7d36fdb0c17573cd6c269973a5391b1..146b577cee6c609fff2212ec2175b43c994fcc8c 100644 GIT binary patch literal 1380 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 diff --git a/samples/h264SampleFrames/frame-0837.h264 b/samples/h264SampleFrames/frame-0837.h264 index 6b54ecc20fdb8525971999e626ea888eeb276bbd..417df1d4eb7735bb8049134f77d8ecf11143576b 100644 GIT binary patch literal 1057 zcmV++1m61q0003AFaQ7nL7QM2yahKwV%OC4OW=7DSA;xR?ON^v<@h%U!I&lmK)_+R z03ZNhAxvv<(0Zc-D@?8IpN2M9lmd)axXR6&Uq}Hk09^q>jaRN@=IlTFfC3qeDJww) zA?CHjKY&01kZ2l)Zh%GqLTPv|002M$s1)0@Iizq)3IFdf3;+ZNByT9V24{SA9YVo2 zj2dt;aqv*K{r|}z01yDlumOO8X`~7Ui=O-s|G~iq6^dfXHozXxpa38c1}O!;PQXIy zbeE~pAis$MKE{f`0^xJ94p9)FY7_+-T;7SiQ9OGi00I{PKv=Dp<)Yd|&>mKm^Z)?> zum%FVpT-&(xPPITq*O1OX6S$fTqwG78m*rj!DOdKlr-z5@j` zG!sfpjTwMG%x;G`ErVkU00P55a9{$2z4Yj8L`-16ya0iR7%9pqdE$*@No&Iv-+y9P z2m~GuZ7u>NrR2n-;O!3p;~o{y=ip9(1P&$@zy;|d8w2TCu1oAeB1B_{To613_aIEw z_ksOGPy-Gvj}Gu8kPEmAz7_6?_fT+Gjg{jM8y?o9NFtg3`w5^VfuwwN0gwwyAUF(3 znV`WO;Ftc-@LFvsJTEhO;Xi&sR@}g6&F$y)v1Ocg7RAgsDR7%z! zp|3*@i7QeXW4Dq300BV&ZYJ0UuL4p6C>X$!2N6Lc@C!}=4F+|fTK9uWU^w^)fC)PE z*X%?p6oXDzKpxcA(9$a`zDLc8DRe-6gbV^FqZLy-Du+Wlz;6eCtD0m?e*!2N#D#zn z8F8Li^MKTC8%Koz07N9sH2}Q;0RWq<<=hHm-WX|Vr5nv55N_h5@12w1_yaH&lwxQv zdrbokjcYxh|G<`C5-rgZ9|U`&ZUo{QaO?9>9!m3K(B@Q_Z{G)wVGY$a1OJYJ?1Y}M zRy}V;YkqwzX&jEW|Ch|laE8Zm0C^oB%m&Ovmrxa9MZAUp7IOVqNnXigziti&1cbJD3Dj1uQO z-<_Ahf(n4L1z^ZRBw?Tczl!lXX`>Xf{2mGMO`nlz+5N zqR_yeUx6Y&fe4TRV*p|e0q}?=gV>{Uh6dmT8=n3Y8#DH2zyAOxVZ2ZD_kj?Sotefm z7H9wrOE&;;bc>yVWIh!62tmtX)`U7(KxxZiSF{m@SiMA7&sZ%Y)W85R08l6Z1ZX9= z%mzXXybb|AzsLlDdU%5Uf%5>7$R#B{A^1QU;`B&jfj$(J=P*pQly-n2bHh3O{0Yz?fyBb7Z~+X& zgJ54Wuc>|^M2N=>z!9YJZwB|@ z{_%;l=kLE*fkh|+0Nm^qnH-8+3tPj~HRvHdCVIgqyK1120003&0B$C*2Co8A0w@^3 zk_PcXA=&^x-2exMb)Zh)Eu_l;hylI++srr_NED!w0lKI~Eji0Se^x>ipb-nB600jJ zhpFbf2JmhkjLkI%zOOMl zG+}(-1=YzIB02pI0*OTw&-&gC83&=rVv_sv_~cWBo;!&Ok#pSe4hTe=fawbRAOg;P zNFw%29DC>jnr1%hod{x&|FDpmku~d8{}F;YZ!Mdc$x>3k|NLN8kI@N?m}Dst2#!s(YXEBS2ICghmgxWh diff --git a/samples/h264SampleFrames/frame-0838.h264 b/samples/h264SampleFrames/frame-0838.h264 index bc3aee56d8a93638baeda6ba78fd590ae127b12f..718ee1b0073de2c22e977640ba030f02607ab9e4 100644 GIT binary patch literal 1043 zcmV+u1nm0&0003AFaQ7nL7RXYyahKwV^`FaNq_K&2!UPz4md;sg2(xXfl?z%%Etf$ zX=6yLMygiy0f!N(CT)6{J%)Z;f`1}K08k70Ty0;>lg zlw<@8Qw&Ixr+8uDlgGZrLHr7T zC^Ik&dIScL4qNwtfX9F=c~cu}eS9aOa3KWX1uy^*69@vk=2Q)r1@MYd>F5y5KF$cy zTqx^GZR%PC9;8Wnkt?YBUZbmc5eh4200IGQPyi4F28N90AU!B^z=&`#TG~ymml#Lp z-~b`{!FUV+bAgx=oF!+8b*!K$a>@V*7{o#A;uf(DZF6Nf8C*4%l5PSBUhRMWnE(Q# z0*UE0$qo;AV_gVW!Bj_qOWG5mSIl3LQp%N2O^suQ0VDuy zY(yG>@^|OnC;$_H13a(?JH~-`#;H2s1^_9czhIX%z$E!&zyqG)c!lFpJTF{VKx{t% z06+vlmAlUx9nE6MQi%U>02qSr$e>ot^3qAK*7V7c@-A|^uSxp7)ZhOv&5+3IW8w;h zp#kv77%Blqf&yg3WJIJ^Kk#5e>RS4qiFlAs3E&6>KL8ng`e7TZQ!y1bXbcKqL8GeV zL60_lW&i#d2skAt+(52^l9!Vh|8M{d0Y(yt*ST7Zd`&yQf)@wl2&WlnETp(kl26dc zEXh%8viB~#;p=rbpWy(?;6YhBT265=-o<=@!;CXjj;_b{&j2P+z^-Bh!}-z17zm$d zguV$0z#xdxyDzzHo@Bi*002Ndz(N48I2ScR`hP+2q#gLc7*+cK=k0^w8g|O)G;J|3001D14nckRm;eX@0YgcLcyvw4S~VG9!+;@U!ukFL z5H#z{z!&Fh@0%(9$p8QWK>%(h;0CV(P@jPW4J8b6{}41JalQWmq(DGWq`&-l$v!Cn zobw-jHt5~|ejET08EH-OesBM;X*7jQRV1SSh5)r70003&06B@c0jt0pi~s-u NK>!s(ZUAcV2ICf7yN3V( literal 906 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 diff --git a/samples/h264SampleFrames/frame-0840.h264 b/samples/h264SampleFrames/frame-0840.h264 index 2341d3b9ff26f7139bd8c5b6469310ed919123b4..0c148f3088c974d1b7f3b7bbecde8d671e48f06f 100644 GIT binary patch delta 1349 zcmV-L1-km&2;T~S000012`~Tv0YRI<8oUK3C_v!`HVz64P`JMjA#{uiGgbzFL4p1Q z+u;r$hUoMuq2*AhOe`^KF)tDb#drWit8YY`MGN=<0s|li1Na_5kW^B?l(K7_KY40Rj*#5F0>UX;APC4B(ee47FL3RfGp9*h}Dlh8vxNlrWUM6BQ3em0z4+ z35>7=9Wg|y1Wt<$)E5u}U<^^pJx{x5N~G3)@Bj(`aZpXPlm9sSVID zf5jF&9cbZy*V7^K+6;U|svw8MyrvNtJnRLW*?Y>O2z)!rKV+~81{IF0RqaH07D`tzx{y# zfl||d(5jUq&wpqE1_dFceBYvs^NT-#01yZfevZGipo7QT{@{lMy?7rBN3C~ed?|WC z7)5bLbA)*WxHKUQsXWLqc775FD0EKb%M!2+8g^WleBcDKpck4tYo+$FvZ!E^#tZPc zk|pJUy8s6FxB);wFy3_|C4hG3!~g;WfB+zWJ&D)=C>%N9Lh5SzlCCJY$OkoJZ01`6 z`s1Sj`lxtoR1b*vKR^YenOHFT;;bm?>taN|CO8H*sYYoEAgBCn0YC@`0Xt45fb(ZN z+Qf2j8dKn)4hs{WR%vgM2kj0I1M!J~J6Fd81j!TU(OV86$a;qc7v-INf}j2mzyJ_` z8UVquYv>Oj=CP0B$W7orab16zC@c=k-SsB}z!X(rP*zCs(t@*4egGRdtuRPJoOXe1 zNm*C}7k~_yC@XMZ7+kW5|(zQ6#&rEda%3)Wx2^(mIvCQt>t_!^X&z7PCh0Cd0)z(9KeNX^R3;;og1*TN#W9);pJOK{C0003&0B$Dm2Co8OpA*2G ze}m99m>^St0^{w9kn?=LpyYB-t#nq}T`}f!7C@SUl=N|u` z#h@cgIy=jzznnU&m-!$jo)OU<4hld6Z@TI0QvjfLj2tS-J|sHvuE`ef2;Y#a;_G0VhJV zLlarWSX`RMc--RNtp5%H0C!MJ2zJmhfi+G307$h4N$_X@fDC?xm}HUQ00;(-dH?`G zFyf<3k(jXtqid5TfDi<7L>eGL6<9|25HA5h01yNVNz$O`j%P;}R55^Nz@ceyMac)# zx84WUsr)Qn6UbI7>C)vr^XRF5B!Y*{I~xe6!C_j$ojEbxC0tl zw*aO6fddPL2gpJ^Zy_{0_vi?G3}cNRngt#%5=-xYMx-171`6;G$_u~ZfExG-1p&Fh zBe6uFJ|e?=9jl2(-_+VRgFZXG|4r|d5Hr95h9Ae}iqzrr-$RdJx`s=MI>n z(&jvW00IL8vU4>S7xEyFiNGWhnToy^w2xaYm%u30?6LbIo0YLz6CddY_0$`sL zz?^@B&^4GL02dzBtww+9fCA9}9g6`~N_V zJo#UJwfr2Fc7ulM0%_qL5zyeI08R6%Z9Mu9+|V6@2>Pl|mXgrr?l2f3=N7>kB?JMy z3^3AoIRl9QK!V<_qeHXA7_LUhuJ@0Bq+Nt7K#q+r25=QXAhee90&#wS$Khi{Cr8pj$`Fah~^mP>d4DEQznr}>8?^FT%% zU&nwJB)_eX|CO)<>n-xe$G*LRM870Umb3nUzw-2x9tAEFvH`2W8;k$|0YLy2LTrF) G@CM_~uFgpS diff --git a/samples/h264SampleFrames/frame-0841.h264 b/samples/h264SampleFrames/frame-0841.h264 index acb10aec718284e11873263afafa016f2d8715d1..e0d79d3c05ba67995caeaa257909e751fc68fcdc 100644 GIT binary patch literal 1802 zcmV+l2le;>0003AFaQ7nL7U(jyaj+xC;$)u1Ok8#3p8lavu4ejG-%ngU;n@dk-z{z zS<3(c0MI@R4McH&)#1B%9%NK^EUcmM$am;iGGVk1`bJ%13{{lEYq1s{j5(50M)sis0g@BPMM za`!L+ghr(eL;re#13GsHB*&vILxUAOBs)zI#MV*LOJ!s*1_5QKWW;<<(Re=;r?>L` zghK^61PuHF1bTyd{0&r#gks142fzT?8zgN+>%ay8r6g0iDWj$IryH_;&lm6G;en+_ zi`M?kVxQLtp6Z~y^l0He?_f`0 zA%(7w(n?m(zkUD!AO-=Dtk;CEGsgJHii^~830AK(R4h^j=Dy$;!0Vpzr zE&xD)6@^7suPiCRv=ROQ5FjCSB1_bXG++_MU@4~n3sJBbRcMtwXa9Pz<%|FV0DuJ2 zHIe^Y9Rxr{J7|98*?PymEGxnJ%K_<;hz}JQPbqE{q1Vf2p@m| zAPfL12ZKK4ov@9LoQ{PsQ{Xf(6yySn;qaAGHi2#dEFcyFF1&yB_v>~9-*_Sb0RTG4 z08oLVH6%_R?`_AK2t-~vkGKGXs7xeOA?XlDnaTC5+yDazmI4SaNJoRkvXjAkJ|?1nz~5N~4yG$A_p=?2D;@1Kc*I0skI91aGP!}!TzeLolg z2onGRfhJ>c0MLB1{ZIf10c@B67&vH}2E|T;;y?-_Ko|vsX`t|KyMqE>6?s_CPVhp= zC*g?z3z|Hj2?|X`cy2< zlL;%7hWo%31XqRR>NG^%c;5r|00tFnco0^w{s*T_t{sA909(I-Xi2N@7yunG1E2`; zT{5s}`vQ*+UlOkDMR@rC%(h_y(^5IDbE%fjSOA(qR+Q04k0gM`SEL zzw-$QjKCOr5q{?n5RTHo1+r;dhrkLfv}XYhH#z?O0lpanyKMr5{|FF-;dcK9pm7Lr z1~E!(jU(R+EyD1!b5e7mm7+9GJ+6GQA35;-eqlYy^mw`~^$<$Bco5P4&Jw)HKkF*2Kc0(M5() z24V+rM3^{WuzdtLZ|>MUz}Tj$W8}UJK+~}}ob$|ocJ>Oz!Oali|2^UCzz)Fd zkakB*>ph*H@%`W?!H62jKyu@nGBx|z2XD325C4DgB@JRk3oJ~FCHrMKK%WCd%dVEH zqCfvvfuzz+aZ#b0ei;gnXh-|k&S(tY{0SNyDX$9v0s-kkfPo<#0Nf5c2Y|=KdcXk0 zZM_OQ?aNs)F44lfdIY4|0p$QGRkK0je>pB3r0{D6v`~-zm?=`F9uM=FNJkmLTX#G9 sl)L;k8Hq)$ literal 1444 zcmV;V1zY+60003AFaQ7nL7PAtyag{oLnOUSlLX-~06+l&M6kmQvdb(m!z{7?`~WGy z03advKmZUC0FW?!8E8v3MDF%rIJ)5|05}8y%OC?!tYKS#anKFTBgfzXQ~(4801g_I z6C=S#*skoyz%WAuk!68q+;*q30uB5E5zs?H`Q&lowRvxojYg|ze$Y35@Bo2#L8rGexn+mt3egHv=(<)KnCt)fPN5BZ60Kl0e8jHrWX(CL|-r2S{05At; zw*`qj5DXYtlU<+?z*J?+07JcD3oC~<$TppP9=w_f2&sc9AO64)0e}I%jNJtjn`e_0 zkl11mPv!AqA!zuakR`wXAQC5Gqd%eC9p~QPx8L2bfD1-sOnFf``}&|rSwto;nbf08 z``@1HtVjLhzyq7)ET!zqdA&EVkjCsXfz@MSRF^kbfev2{Mh3vZ4ZxrdhConAHBg!n zzTHqmH6Qk)iUyHisI?LCM*ZLb2oHm}I5|bGzolrNTUzl8r0@Yj0h=eNQiQaokN`jc zKsW-zz~bWrofRtd5Z}zeMDimcrdC%)MPC2`g*ZY4!8+R`Ed-CxCe$tlI0GXnJx!nh zbpSUk7Oyz~sLs}ap=GhBS>SYqAjAq&#G2Lb@Z1gxoUOogsK;3iwIJ{^8~`dgd^_Y0 zY-i=L5FivHFsp(vr@;UKfPi{2_Sjei(*7Vnf*A|-%T6!^1N7)2{!6?PkW??8e@sxi z2qGG@3${S~5`X}JAe%Z!DmAr(PD8+60@wy&K8`1}k7L{KCKu*@I#J-0K4Mo8OpE%w z5t3xFcmW0&BezjiN8YGdjlKcU0a4Qc3mCc-PS?Gn03ZSZ?InB2%TxIe-)H~=0)SGa zc1B~^v%^-cKEMia^@5e;57P~)z+eH`FuM!lyC4^)LM{Wxlwdw7%fPU`S^vGb4}d|( zCPL&q8NvLPeZZw3OX8vH2s3A#004j~N&o@?016*I= z?)TFJfQHF|JQ7#^>w*G4TsXqcQx^=VEF^$!am<&tf>)QYy_t3BZ#062X{OUAz+|W# zfKVE_!RFI=lFKxo|8fdooJXnZ>(clb#|gsX0^=YH8ih*zBJ`0vveH5L0K=TOXCDAS z^KIEE)59YaRMQ=cf1!y2Bv1el0cX${8zA!5sR(}Xl>x5m$ycuk-tbsJJ{H34mMkH= zL~m+`7%MZ-_u20#20EhoFfN(o6yWk&juj{jP^;uW?H(#febNgo_qpkc!p662`#>R% zAk2gynKbb~y8}?`Tsde&l@I;e66M4Ci2E{s0^tVZI6^|7 zpQJQ_-=P^Ei7 zCu2oNONUAo&KFM;E^t`@dPR)NFCBG>s8^fHz4@$o>VPAaa`|pxIx)ka`d402d8w59*xmq)pa1{?K>#_4v;nKY8;k$|0YLy2LTvzQ@CM_mLxTMP diff --git a/samples/h264SampleFrames/frame-0842.h264 b/samples/h264SampleFrames/frame-0842.h264 index 6b232b12961272c271d0fcf510d63e4391c1e682..25fb8ff920b17fe794fb49cd8b9ab3c164ff4342 100644 GIT binary patch literal 1187 zcmV;U1YG+70003AFaQ7nL7D&>yakisVG=t53tRyG^zePjd7H=ieS?sU7=nOQ3O=CZDR{00aV#z~}9-qD(+7=70B?0AK(habdoZ z5CIy?hLC3y2mKrYv(N}88IuI%ec~bj0RW^TAOH{o06>xkfwQN#fcmciK;bW8haaNu*6IbB427oSGO352B0o$VZ0098d01zGl+2UdJwX2YjCMnT?H~=^v2j+ni zp(b8n3xH9B2PVxX3<`wNY;Q43;KURHmJESV5TQ??1_}YB)4y@x4uK!r+>Abe5D8p@ zfWV~d>Y$3myZ{jaKoTofUc0!U;4%w92><@~1Ohf`!Rmu7DMM**7y!xu6xIPcUbq5) z0t(@SxB-P=h*fZr;P8!I+0jGy0GO(Q01GCsNPu7-+h+duzyLr1fDLvO*gPhGtn;Eb zh)#!OIXal6ce6#Cirjzy-+_QvnhPWb(%;C%w#%%K?+_V+9tD7&=xpTBQz3&_s{viO z2nGvz4+RS}SO5~NFaQV-08_9cx!Yo36jcFD=N>MPU$_DW3>ffcg%a*rMo^oq0kem% ziSmFfngD=!HkuEHYdASDfB-<800aqf3jhYg{Q4Y$fB=CQ00<8D8vq{-%>O`S6p$V^ zYC`q^N~Tp1grLBj@LY)lSZhJfkk{g1NhAMnV0FL%KvH@;fTOk_pYr%k4hE_VK!!iW zBw_=DwMz*snUw$BL9GD*X0bgwVVBI{!}19k24?~s1q&j4K5Xy|4lgB4f{bk@@cc3* z5%73L6dX#`?#cXHipulm#4qYW;Gp?FN(pJx+`!awM+YvJ)$JR#EC1dC7{QBbo*=Ud zV_vXf`}u-Z2m~GvX&wSZrUb;GV8ehR*Z=?lK>%(hfCjGt*ndBtfjIvLAaMwVI09Fq zLH8g99!d?&FQ5QyxA_5KUeCJ9e}|EQ4mbA06!s(XaH*P2IDbB B@vi^? literal 965 zcmV;$13LTw0003AFaQ7nL7QM2yakisNeBc3scrLj2HAWe;kXU}%lh#*c7gyv0F}U{ zwm3s>aR<_VUj`zBLBZgx7X=0o03No{6l3U};2aUEl&O2PU<_gpQ05X69tGR>3;B5?L7p*V= z1Q4E@Xg&>ao;c5m14Pw7KR2?dvpB@p)GLd809w9B@saHM>4VVSK8*oue z^N@)0lvweEfB{mpDdQdv*K4o5L%;waC@CVyiIRXzbBRFs0$>6N6ww46TsI<8oTJ;{r}HaZ_02$Qt7V!Q2&4Hz|aJGMS?D&Zz=!10k}_*3dT7?F}>g>o_}6fF`qCa2USIrfP!!OB?BQq2n$I-6K>$H7OB5LPA|~mR5VCV3+T3`H{J4; z>vPA>;4yoRvS;hW)< z6Hr62Mf$-wt+Zn$!{~yLAt6=apofWafc6Fue|3o{34cIuygDWC9dng-SRIr1QRTvp n{ex^8mVf`?9w-0+0YLyciM9c&z#EJJ00BV&6+&%*YVZc*v{;k+ diff --git a/samples/h264SampleFrames/frame-0843.h264 b/samples/h264SampleFrames/frame-0843.h264 index 2c4d4bbb0fac5e8bc5b687af7ec3a16e20c5753e..3f613231b5baef694bf75566462fa74b90a9148d 100644 GIT binary patch literal 1503 zcmV<51t9tW0003AFaQ7nL7E^Myakbe@Q4V3K`sCe4+(+CK@>2c36==%Zd?Efl(D8O znB1bP$N(4=Bh++X+1os+9&Ef3{>}4%1pqlIq64CDaAUIGS;52qu*AdJd>0Ty0*ePA zlw<^pDZc_s_{CJ-@L=$G_XEt(>{L?7l>6^N1OgTP2m&Qy#!MecY~S_(0s!ZR0097? z&|c}K_g#!3@G#^a5Zb2;q(EIF)kw7f0D!^zsnwg9UK5NZ~KrOIA9F*qpW}m z03S~eoCt%^0RdJ4Ms}eZfE-2xVO#)G-?#z*!@!AiXZhM)sND1gz*_&{1h@bQ0h|ED zR3gw36CC3nrrFR45yNWXjtSYqR9tQ0E^vtObq}n55b4lq)_~%Y+sK~{?qK_iwtz1{ zA;-&b3&hx%3?ap~zaaUJ8!7QJh3P*40UZGR0Kfo11Yos<6N1tlY@}1r zO!>qB91Jmo|D`+f1iD0Jhj`41f#;+krBIG)>lzaS_QL@Bjn=KwvIrsES8k1w*W*lhLQlhI2X& zKmec!?^XeWt#N3Elm708sqlmtrI0Fd&odEB?j!L9sj5)W=Zr#&(6d8G0wx8eW#yOf z+aSTQct-9DkrTjZ1QM`&Kk?yVfFOO`d>HxyI8dB-3ET*VfrkKJi;M!-7GL0>#Xt}O z4xj*4c9lV0F>gV&xo`sj;*JYD_ScWl;G+mG3^0*i6QtRF#?y(`n*X=}0RT_{p~oT` zQ^o5+0n}+RfqR4S%yCM41g*4)sM9J#m-sPISP>cVjfx_Cf_a9pk{BP500;>XAPU*n ziFqIl4o5OD07&Emf|Lh((dI+o0sQa;F5vJ%8|Tpt&sIJ`Y{Og@lC!``Q2j z0YCr{h?oFHd>`l;=>R{6lz}AHyBGcjKlm>2N&sP}Pk~egM@U3F`dGlwc%(hhz73!o}bU>;7)>&I)p-*fuI3wDvQ%6TlfEN0Adw3gueNJ z1HnALF4M(&>H%hwdnA9?Oi9Trh%&GIAC7=8wR`iy*{P}B_pnn28F^E=41e;3plx{o zl4bND+Z>Z%T;}hWfAzozMZnf~YRm>&4RH#AgfIMmhv0|oNkK>)!XJUO&Hz0~4z>m} z_uWAX0JGEe5*CU$YyR&z;2Hhh-v0w{u~O?$M~?z=e&q0mh@w5p4j=`Abf8Nh72!kQ z&8x;r`L6Wmg>)cPNT8v)GBlP0iG-X~M}yWQFA)*o%BCw0N7?mckhO+lf-$c3p8tF> zCl~w0i4mdexI6lOB|G)oP*yM^0D2X@A|?C(yHTC6e%7|(<+ln2Idw0q|DZr1T2Q+z zUw?5(00;)~8QTDL0f?5SWKCX(hYTM&9e@S*UwskZfCJ=XvP?i-DfiU;lh|%&e_YTB ztTPE6z3X4kd}@II{g3M!I?JJm48pg;hXBby0003&06B@G0jt0pi~s-uK>!s(Xn<<) F2IKMTlhyzL literal 1110 zcmV-c1gZM~0003AFaQ7nL7RXYyakiQfp}0#00;yG4UEM2jY2~oJ}tQtAAlG*3m+w} zAK2THN?i>dfCXA$oPyGxhb^oCZFvA7+pU|xKmZT`ulCpgCSQ3aCs4YQfC)WT9o4^1N4xj>-0@p&N3<)TF z@Z?M56P#u7WCtH#i54g500aS)I8ZXQ)qjJ`g-~q+)cN;v6}s-~a-V4(r7u7^wR1@^=|@c;mT5CBm6yHr5+j*zx$01d!@@B)Cq z=T259{L2Pa(@}C|8WTa2;AZp(P&#+1%_;)OF#90xtNy}gOt8O zYT%4;0R*sv;j9JMRw&i~%l!|W_#i09h>iLxig< zj%^aS|MrD&>i}v%(h;0CV%o}bU> z;7)>&I)p-804&K_`XhDgzx!|oAX8{c_m}`Y3Fq;4mn+vu031mt+7IKCr8uOyLB0>f zKoqk}|IY+`)Ybm`uu}#IyvzQAAN<0J0g~7tsI9&Zn%MU3fpeQ$N8f&24n@FC5USJQ z4D< zZOiHq<1>7>=dPe#2|0ByzW?AL1Su$gmM_1`^Z)_@yasl_6oU~hOvswO5f28lq1XU^ ztJldkU;w&2a!UvcrFN&~dkxI*>y`p&MiaNSEj_mJY-&IMzuP?Oki-O0hr9;90g`|K c00BV&If=LdtH2wK0003&02M-R0BZ0C3{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIFEqv06+jR0K=mCU_S$yNtg+|bzkZr01yV6fL4g=oC>Yo zHxBI5nZMuy(1%wEL82^@X!UylNaqlu8ZDiqK}OqC!z3862JI-$V}m0NbkAT^02JHu zfEdzf#ZdU0)pAMg%-O{NU;qdKfB=A?00<9&Su=qEa=;2e=bPsC z1K@P1kANMC!$(e^`|Gx0`f`=aeck^rii(+*GV}J7762a0O!+O%d-OqSLVy5(3a@B- zPJiCg4Z;SI)UJ!3c#eazw73uiEx?jWGt0lzXNAA^m;g!x?yXGWDdqeBX*2)=0S=G> z#P&{Nzk7(lfs@-p*LlTFmjCyuXb^gxCF*ppqqK*G^LtzEY#o@|8M|tpahV- zZw!l!m6Xq>FaLN61Zc@;50QQ;e7|_ZzyKf*mmuGe?fx2J`-VUQ6m2r1OfgkOUw_y{ zP?-rMO8@`3w!h7v|JX1W^uPc>V5A`66eRg&`y#+F`~VPzYm9S5v(*SF%PJC?ivC{- z0htBCP!a?Nh6?5+01hQM$eLQwb5VbQlz=cEZ-Iu=@wFBA_lV2@8(g3a(Z^swb*Bb! zSEWabb&*6;!rT97N_b6$E@sOa^5GJYiPGabvr{01ySRU;>G7 z99^BNSqn<%9RL783;=-`HrPf=G$uxLSL;INJH8anIixT44>3|wssHQ$<$wbwLrhb5 z8_=H*)PR{W0{{{MKBmwUk;4KPQrFbF+I%jAp8RZ8dzaA zgiu?ew8*>DxWe9C#>NI8{r$f^wite^|2L60%tH)71%(hkOr>+#-GpU;7&kE1BfXDd4doDai$%CsbUDw z0sL-b6jevusP8fa^+s3qf`K9s;y3_pkk4cpM6H$pmQdY;hh?{(I+f+x!W# zi5?W=vifm^F!h>i`Q(%HqZ=j+#k_<^Bla41W3Ynze^Ga%8*= o3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxLL%|4%;s65indZO*!Tf+Q43K;cKsx|A0Pv0_#Te@&^JGH+06{P-(@^E}O&A%83TVlm2J!iK|I8{loK|l!T;Rp+ z4T%|V_eg6Ln#rsy3K(V7KTr^WjS*6_;~)N<3i52Wxc&b805g!vI}>e5!k_nWfB--k z2&$COZR=X|g~pEY{2ef)JSfQ_@^9Un6@UkXtX4viN+M8|_y%A%i_Mmws>j<^jz$2; zz2da7Fm)mqo&x~a5rwbc21(imQw+(D6nSrWll`D!@f?REuNFv~91td#@I(CG%-eHf zC%^$AxeU%L{Y5G7SB78?7@wgh3Pous6?d#)AR$c72Srw+TxI_451o!E7Dist(Vm^a zWe&qfp&a<20cgMdiVPb1;v1q6kY%h06GDQl8`<{5+mm0-~h3< ziXCym$`^gkbI@4g{lau5zkm}U0G0*biU=JHOEF2woBU%54OjpO3=)tkID`>H(Y5|x z1|ool7zBYp@xp}jU_qMYux>ua_T#)T01yEj&{^=W^VEjWGQv#0LOru0Ac*qWtd`uj7pFI`Tzm|i*x`sG+)l( z!9g19NtzMSY$WB0zwQ761~4H}a@mr>L+~Rx0*&CpVjBQLH{S(_+cQh!0098N20-BR zBR+jXtY=L@;C6r}=l}o#K>%(h=mxI<#-GpU;7)>&IG7~>gu_0^-v9&3!;~W>X1K{P zJIjU~;NtHrK#>S$02i!Idmzj$tgr%RC}m*b*mO z4NNFpZTV>1Z~ynW|L-{cp@)8dVO9!2@;rgya*M%!DEtAi-P4_Z-a0=U5n29-ri5;P zI5;nUX|o8Ae0`^Y7>_)d5kj|i0#K~=#<*QT!myk#|NQsPm%K ziH{jagVkdo4vpAReL+LGCjqo1bNJ@@f3bid5faKW7|ueG08khQtP{Ui{RoF6xB!zN zt;ZGI&=7F`V3ukAtN{Bpabq}#O;$gBhT<4!#kEd3!KyA+!JJj^<`3~OxL_0*0003& Z06B@e0jt0pi~s-uK>!s(Zh&g=2II1=UPAx? diff --git a/samples/h264SampleFrames/frame-0845.h264 b/samples/h264SampleFrames/frame-0845.h264 index 8b1f84e6e097408863d4cffc9d146a6642a34e8e..5c3edfcfd6a9df64b5de178bf207497de081fcd3 100644 GIT binary patch literal 1163 zcmV;61a$iV0003AFaQ7nL7HG1yakiQf-yl(02#L5DY(GA0098d3JbtPuMGy4Z@rS` z31R2}DS!ZgghikLAQ}k>2p}Y?pl<^NP?gCYGE2^s5-066z6fEt*eOFlf?}cQ(yQ}} z;W35)gZ>h(Aip}e7cu}$0g4c#*6X-*noei$005u|6$IN!PNpO0sjARr^Mj|d8~{{8 zKl{AQfB--M*8>5>1dTi>EFdPoaey(n9N0Bga3h|f91idR!OkQQszSB7Ed_!JG$2w3 z1`pKK2t7!W^&(eM^u}pJKZcC}3%~$C5m5>NV1mwP%V_`jXrKXVwgZ6CZqcVR7jiHR zjm2p8x{ls5}uunI(9Lh#Zzo z_8~AWOxY<*Z@d5j0U7|sfGdP55xb#&mKWj%Hx2**fmKWZb1@Nn@DK!BS9$O4 z03g7wX7DDnm7Kd7J%s|rgOktJA7>5Y*NpKhp zKbVRR&%#5C9TTxK1zGwj~s0Zebn&~3eHdP1`SkZqM5=6YP7cc5&!^!1}9(upm67b3#qH>N`A(-BOhY4jypG^3V*?8%t!;ZJYXQ` zK^{90uHp@gP~d`iqb<0n|AXKF1O$L!mOJ5tJX9_8K@q2xzs!^t2W9SG;CKN?Rt5&- zmmVrL5QFdl*~MwYLlx)5OyW-Jzzlu>2&O$S(%DLHv;n9A12j|>LW``pJ_&tzW-wCP zp$&O5X|!2C04fZx4akmiX1-fLyTOnE1ON`^4g|!wvc$G}IR@Wg03Ze(Ya|RaStEeO zDwx%(hmVt3b2$NK+#1lW;6vt${zA>hn{0&VDMAF&H(tpxpf zN*HsWZ?12!O1@jC#y_*?jn&8`DWWSc04tkB-dag(7 z2N{C)y_{vaa4IQEdgSev!~_;4OD d0003&06B@K0jt0pi~s-uK>!s(X@F|*2IEpV>)-$Y literal 1006 zcmVeSP6n-RllKPzKn4I1_y#)d zGp0aj^bX&E3|qHSiD$17kpr#TtNEu->;y;$gq_Z-%lQxUP5gONUc%BM1Oq5EO2o6NP~X zk6!#kpy)8Y0+$jekFk|1OViC02JdE0401n4MJ{gS^?Yy zL%drE7apa%{lH)WRNyc~r;Kkt%y80K|9ceU=mKn%Kb8;L-e3j*Wda0evQF8+v157s z1Go&~O(X|v263elDhS#D0DuW-06-1_N49of_^sig{onxrKvsp4bix?>U-J^OQcwil z0003&0B$Dm2Co3_pU>y>@Fv3`B1|G3PZ|JJXtNkOfV!59dWsN;95NF*M8E^Z-XdOp zLOc0^NiIlC!CwFD0;cisV{et0eCdxhI>1d6&z)Bk(>S@n(j(h^)o zci?~hU&&Oy6Z^~H%3#<-*000012`~Tv0YRF88oUL8zyE{~j(`F~4h(Y_Dj8Blb>T^=7l9Vr z1h6~`U2Wl;*Xg_BrCmiRMgR^tL;-@w`-h=YBU;+mcnk`H8z2gtWm3%tS{U{s8P~2W zA+Lat01yckLJkZwvlNz!?72VMFv5wdZs+l@Fq7>-03aBD3rw&BMfgO#0^&d{@B79H zT*gpt6fX=U4l@6*+u63q$T(4lYLUg*-r4Q|LFmwhSx@=|vQkRR{|AdPN+in!|%$b0|{ISF&^rFh7aDxdw} z20#M{UU0!}q%T{7r~a@300dl3mRJn56*o>!00|d>q8;@w>ig8R2t7`c^*UEk+Cu-} zz#j@e!vF)R-~$38M|n$xR!2Vo2LQpHYky7f>ptsW_roXv&FtYIi$qgSRoXd`4QwJ# z7f?5UHiAdN$fcrann(X{01y}_WZ||q7fqfMW|RR00Ca5uhd@rcA$&Gj(`Q8yYT zve!j$pw2N+Fcbh#1A<8Ztr}!uV;hkF_Y1;voYaDzFKe;G0FnSUHX;o`d0X@D0Lq{W z0?5M}Cd;9M&A+$-fDUMH*deVj3O-=)07Kq?Y83Fa0|0OEfC>pq$(|R8UNsZK_2qEz z00aO;30u1HfxOl(g(#QccKMSb#8h&u|IE_)pn5m(6#x#Pi@_x@sWkBTz66jw32J}yUCcUI=Nj}r2Ss^us2>%P!JAxKBGm{v_~dL%$XDwT!|lfC2&pdQTLizd@we`9^~TFTpra0y#Ti zd{(WdZ|;iz1|g@6M~Xx7O7+pa2*JJFGQ{RmS6g;~l&p8C(b}CrnArCL7qSFa*j73g)0pKb>4*fQk2z zIB|z+k=5EqZ1(_yBFF5`<+6FBG=eCvO?m(C_lyCBU$72;Sg0J0(1-uLI}#YXH%ZJz z_m}|d0Q>}L+bf{a#KfK))?-N{jseE!guV$0>J5X{8bDCC8Q@UczyJ_`4+0e;kl>rz z5_#Fgrs?(9u%| zLoB1=!&q!a@4jox*OCG?y1=NHIRp{^diw_+Xw?1u-}>A?Jg9xKnVz1KC3w z_muVQKOcZ0*Z=?lK>%(hppz>ED}Mw8*`i=Vo7e!1e)2;sL0|y@$;H8>yxX^RF30@jYI-@@w z!h1h@%gDr#F}HU)@B4rbvh4uap_lg`bHlCcu;8148Ly0}m0?Bx{u~A@M1N$}Rk7eF z7vs2@M9n||fB*;w5&*L4ct!vOp#r4idhjS#%P2Df{`>P2AO|nz#oZuTEB2lj%kIe8 z5a70w-y9`HM^=vpbORS==1lfL0F@K)_rU`vi0#`DKmPCq88I@!HDpaw_dhTb zq0l^t;tMO_Km6YVQYxu&30eQ^{V;Fb=h?eK67NC5$@UR`z$I|o$N{tJ z8nyXN3pR3|`l-5`Y)pvko9s~!{)O;>ix5}}7ytkPK>#_4r~#|M8;k$|0YLy2LTUhN G@CM`O+#5sy delta 1431 zcmV;I1!(%L4z3G-000012`~Tv0YRJK8oUL7PXGiqW_MXG-h3Rh~gNWw)$ zQnYQj?U&GhW)>buKxc*!3Uk^B8R?cEjlF!6YFbWOPDnH6D55a{S!#j=8G8HPIxn7}w3Nt}xKVmzY|9@9k zd<|8G!=uP)>hREJUkyeEz`zZ_pbmyWP_UIo(7NS+l#G0*{i)0VR2jAo#MZ|B-~b2< zgQy@SHElbkN!@3rLoICp0Dve20s5{1w?)My00IC40RSu{97I4+Wf@n-!d~2q0Fo=DSZxNFlmY;)LQME!ysaUqZ#U~{(N?v004kl zfj|O_S1xfDjm2GJud~WEO*eNiBNQ4i3S|OV?xRv%g>uu&PkLG1Eoa zf9wnah8R?BRA+<5xDhEy!T?SH!Mrv#Es$^M!Ta`r03Zqq2}zMZFsDWW9r&}*1A;Vi z@Y+egB41O$)R7nf*Iyz;{OWK(#!*F<}5fsAYHSLjXhgPQ&h|9}8M=l}!* zVq_W?H=Y63ZX^I018&d~STMi=AvhyZ&j?hRj*v1>z(HOB!->I&AOo*;LqKRB!3?N{ z9K!@z1w0?>009D18j4Q<)*_h`+b}kNa7LIWi7tbkuk!d9!oqO4fVjv4%)s2LP;?MB z>#Tr&0K$}(XBR-hW!kJomyAs3d|@$f)GNS>7yxx_0|G9%t#8hL@iYLv)OC94*W4B` z0Q`eZ2qa-s&x`t4C_1WlmLzlo6&K$J(p3e0qeYO%-W-t@-1n?ygjp&cnB4m_PRoZI z*(>e=2vZ8EM?o@KrvAa045xx8kt9R^e()J)6EdN?-^YK008P*U00BV&ZYKDXss$^5 z14}k&j0jVE01Vsj7I)_xHyTteUTilm@Gt`)ujJSK*e;D(5Luu21hZf|Cr2P%!R3f5 zFc1WQ$;O;O0Rf+!_;?miG~sZRbN&L?!KCy2PTv)*5AS8H&+l zcOLdY0#r*w-vh=^5nHxkSO2^M0f~)M0XM9Ps($bL0XiK6$d8CDrrhZdG)9vF))g38qUJ l8CW#Ou)t8j0003&06B@i0jt0pi~s-uK>!s(Z-8p>2IG*bT~Po4 diff --git a/samples/h264SampleFrames/frame-0847.h264 b/samples/h264SampleFrames/frame-0847.h264 index e68c8b8d22efab1cfb4507d81bac96a5094f327c..0d129ff9683369da78adb76e686070256c51fb09 100644 GIT binary patch literal 931 zcmV;U16=$70003AFaQ7nL7Jc%yakiN2szF8n=?!Ug*X5p00;qqFr+@6n;-0$G{8kD zzh(dcfKUfKGFSkRKrlC>3>CFp@fv*DAix2I>bKV903ZMm2q>Nm$^s)Auu(R4fB+x} zIpfiq!AY@|3i2<%c)(x)AQ({^p`h*<=KS9;EYg6=JOsWhX`v~J2fzSEBvO@(*-Grs-~ccWpoCME z8se=GFcVkcs0M&8S4#*RH38fp1|sfFi=%czz+Zp2Z8yZK&VNV zm;&G&VA1*0NrNJ>JX;&glQB2SJB8@RuA9x{%6w+QKVM0QkC|Ce@ zzyOE^1Ko_f0)i0nJ3sh8_?u>I!&h|-V>kf3We7m4kZ6-l8?*p`Lj#Opz%KBT!-ix1 zZ1jM>y|4HtfCDH3iJ%AvgK41nX0jZ?009JW01##9zyJ_c0CzedTcE%IK#Twc2m396 z4~FJ{pfU|%LSh(TmSFo30yE3C~d^K3l$m_l?Kxe z0Eb`z00BV&ZYHP(uK-2o;7>oWs2)Qgc@`@GVsEV3sh)t_tc6%HJvw-}6N}*x5GRQ- zArPPl{lI^5K>YM==zZNuG+Y6Jz#|+Ji1TesX@hWuU#Pxp|7uu)cuMKB#;*VAd8Jlv zKKq>l0OLHcWE@t!trGf$EwY3K1OGkjhr_M@0C;WE%>(}RBO02M=kH;hqNGB9-TmR9 zwg6oq6}@i)a}0s>h6rUq0F6Wd1_27`&{F`x2`B^Wbk8Wa)EC#yGBtO65ig9*Kp5xk z-#jaq?l3?`AR-he00hSX3!s(YJh6+ F2IJq$f6o8_ literal 931 zcmV;U16=$70003AFaQ7nL7D&>yakisNeBdnrE8y>;AgFHUf>e7@ZNwR0#yekamER2 zNH^!@@M0)593Be6a8P6b8zyFikxHzKz#urI%iemy(pXT5ANK$Vv<_W)0D{7LHMM8| zxDJ#61Q!NMKm(w>R_R`%Jb&&00LB1WFoHaojf8m$^xV(i0xm8Q$PN@3H6y|CV^sV| zp09n#03aA#qUawXerISW6V-n3AeiM~CZzyG18Yg><2m!d12_N(16Okb#o&DmW*DAYR7Q@ z@9}^cKm&sMs`Wm652=k?ummv032k(mC=)PGuf{GazyLrJU;q#S0*A{8@i)@=z%CFE zVIWo@CO5zs0|24wA-H7%7`?&k{I`GyR0IWDz34hPB+zV+2AW_300O!Q0X`OY`~DW7 zARucNInt={H0*ltj!~408o==xe+3G;@L+7fE%4idieH_C2b7}6j4S{ZX+oYk;O#cJ z^Ta#=0s?}RFo>x*1h%)6kANlsAc0K~NyX2dRFKkT>(Y1_F$4yc2j5s5t1*>}r%Ap5 z3#=sf4~M3%aE{y6Tn0Z6TATcRuK-2o;7>oWs2)Qgc@`@GVrSNDYi$97!>YhTYj4To;7%`uKtP@(#DqeC z5&q!+f1s0*{}cG|pCuBD<0JsbZV2WbThkg~++r`(UrPUeAYB#l=qyLq#cJVx1P|7>wjPchTSca50BK84C|r){<|R#hYAfG6&otod5!8zyQD@B?0K_APf+$gdt1JqW$s<(tPZVUD-zl3nrR- zt9RD>=Y?|le}qDV&;T)|G6(|Kh%WTi-CKVE9jwuNpMSdpL3G`1v9rAPDjB3~jUE60 zur~VqfBSv};`{zXg2GZtk~!s(XaH*P F2IFirl~Moz diff --git a/samples/h264SampleFrames/frame-0848.h264 b/samples/h264SampleFrames/frame-0848.h264 index 13340e730c71cbc3c5bd9499a8ce62b01f4be54a..f18cf65e64083518fca7f59fd3ea39d1b5e1d9f0 100644 GIT binary patch literal 1168 zcmV;B1aJEQ0003AFaQ7nL7KoCyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zAuF7ofD9C7sK}3Vu5nkmtniEUOPm1U3_^bc=U(FhiEnvhi+h%Q#s;GPbAX*YpmsdxC_KZv1f9_BK z7ywaLvz!^GB}H2P(qpYCpbrC08Hv%qefEIormSEdC5!@l#Iai#00;<>-~b>T27*WQ z6$;dx@DPg#F4mcQr$S0ldH@0|U*HS?98i@`r4HR=UwbkRUA2G$0|;ab?iAnLd##D8 z@H3PXO-c6wgtM5vdH@4q0HZvLY?eQd0||5~bb%EDqRB-lkZvH%l@?(qaH*Jn00aXE z^uJ#0NQty|?O(z80A(9+k*=D`Y=(k)25uLG&Hxwy zD3fToTbgJH6EY+K2>aUbhv7PoAL2~tF{XR~0RVA>T>p>|CDnsSRE*HP0096I2j7v3 zhVb7pM4sF2lOXasUcWlcCTFX|>URI-`Iw4FaT|zw8mLIscw6%>;d6Wl`r zae;~miS_scAVq8=5Cnv<0@{)|L6itk2)O_t03bquf&s0jxB8cg^}(!KkH7xj5{dyD zoh&ADMg44*68gZvhIWf8cq*$zCQtY?1tjLE@~-rQ4gdQ<01yKJQC69jrE*Wj1KofC z0R=zdgKe)Sy#M$6^QG7MlAzaba{s=k*3^u{@IV=e2OXg^)FI_TUX6VL%5Z^Pv~`ye z>mUi77z*~FWEtMCGRR<0o&;9HF+2fK%Fw=_?7DAqcU}MhfVhH`7{LLEhbBF^MWM(T zc)$i7zTg~Bn5Yd#NG<>C2?}@Xj?7Eo|Hc3gum|8fL~y?WK{SOR002Qw9O+O0zX-qp zKqv|eHVpVgUHPh&+F-+gA=m%_0YLz6Ca?yt08i)OPd~z7c@_}C8$f>&HyoIA2f*S1 zK(b*FJd|z{`M_ySmNW^>A_v?e5O4tY)#XRBe*S<0@Rmd(`g-Q+!F?qG_|Qo7;RQs5 z=__mAmOw`JgK&_UGHCbsfwruTn$kx9QUBk6Se$V&_vZHq909(xhm0Ps;l|cs0B>TS z85$4z-v!0SFS!QyTjn1flQ+XZU`(x#eDEc{lb9nm;3p`6h#kk^(IWsLbd*|Y_r#Au z?=f=yKlSh@FXHB84BhY=J0JZY4x%5Po)y&e5ej+GQ2>GxKq{wtkxRD#FZbk(d^`a^ zp3r={0|Si?|2}U5a=e1}t%$vqVAxW9``QpGrlx54xTXF!YFLql87f=%WdcX!&-Q2< i{LI4({r~_0K>#_4tO2XQ8;k$|0YLy2LTdnO@CM_dLH;fP literal 1015 zcmVew&IJINFosMB z26%vg0|sCf?m5j33&F2_FHQgf0Who^@OGi!wYU1<2Mz!LKp+66fouAt3LGpb*u38J z6O={qE($WgJW1XF06+;tj097bspwgFiV0v&n)bl}Q6Kn$4I-9(3ZuBU-~b2$0Fn(7 z+k$5;f@e&I?i6@n6aWDL7gN9xYyboUe7vS$5`TCDz)&!z$b}v>U=`dF$!E|&`~c7u zIv}vp82=Y;z{Nul0K<$4ab{Q89@#a!?+^eG0mAC+{sgRL`sN@3SRecVpdcgEV%1VB z7C0Ekz|I2;2mh^hCTa=K^9gQvX8;svn--=vNJvOl;4pLod4E7b#e$Jg0Bj{cjGC(G zyaI4gXFKPjT0Ie?*SLgV40J(~(_M{tEF$NWn1AN?Hb#cW2%P7ugb1JnG~xw>tP@#K zpGW^6k$3nYaSb{!A-y_wC$;;9bZLANi4TOqkRuQo8Sn-G0s!uy6p?1)U_e^_+ARhx zFmNdvc01PwtA6+d2z5Zh1cjAsfSI?5;5wcJQ76d;6TmZpIMGiPG&&JaZe2nDxBvkF zQAaSkYJ#WS7v2p*zz;w70E2+#I4nX&c($S07>gHpF@!2z9SnSl$~C+eKkxtq1i{q6 zT*lhIP)t%K9mgS~g9n003k&8XC|;_{kHFvfNLEMC00aR403ZVZLCqPMqY}6_ zKfZ_p9N+=ML?1d9JO=gPEPy8H0003&0B$CT2Co25=ipC2!eDt85XOs$nNvkv;4rty z7&rw2mRLj&B^!XB^Or6lCoqT~aEL&|-~#<7RBe&^`T!5Yc!Xa|RL_tv=F50UugJ#w*tV;Mrp^2K9!%Mn;FiZ-KJA zFs|eq{l2k+tOcHp|F8;twZ=;AeR!N;MtuP}L!s(Xn<<)2IIZRp*R2l diff --git a/samples/h264SampleFrames/frame-0849.h264 b/samples/h264SampleFrames/frame-0849.h264 index 9edba5603a215d094f5a7b0d6d44ad6dabb4c2b8..1db566495f88e3df3c120850c2fcdd2112dc2f61 100644 GIT binary patch delta 1644 zcmV-y29x=e4DAem000012`~Tv0YRGJ8oUL9#0xM=00^0dIuYHJR7Uh*AiG}x)7Yd| zKJ>n#EUk<-0C+HuY?MFycnbU0(D}ZYpdD6x7vOcA`3Ju^G0WRlrFx3}pX>qvMVs_a zoEcRNzj>erITI4*ESX{?MHS!OqYQ|eNlo!*Hh=?AiOQOPh^d(W-Zy$60t`*&Xd5Ql z6mNg&d@Tt=V#8oU2=D-7WDy*8+KOY|uLqLs3u}x?)aHPpnSg4dq2nPVg*W&;7$%j& zh%(g`6k2(J03cET0t&zYAl?8NO!5F=dDR_6f`fp?MOb#008Qi@3)6(D&0|x506+~m z00<2b1<(0zHB6B)=-|OPD?XxqvPQ+e($k!D$;}&;SSnJ^-h#1Y&Re+)NN6b7=C$G>KAQ z{sI?Mq`gj)C}s^s76g_D862|} zet2MxoCF`@O*S-wjHUoE7jnbdGLdK}`4r55UjO@B61e7yN=cJq7zn-;#451THKMkHzZxa%01mhub=p*aY)2*@Xa78IzyQEfW~`&oA`);)5j-+Rn zPnMxyxL^h7Z1iN7^35OrxFMsp7J*Xkd1XKU#X7l%|H+KG@6G<7!Io@4k4yP{#t4RR zMIXRu!8G;tWgIp94_i0}R}YAMDIe|N0hrr*B;4Q)$Nqjpj(CV8U;Dt!92SIsD+9$M z&U6Px&IJ5}Eqxxb1hAqhbxDiwG5DZx2v$<31wYxJhcOY4kNe;N0s$zP0Fmo}nQ5o~ z?bo-N<{Ff)^1w)R009BG5mN#1ja`QM|12K>2F%2{*h5#`AyUg<|5_oZXU=DKcy=Hu zxL^VLj0&q5RNOxS_yQe(0004hK>%(hxCXBPS?BZcCm-1GJd!MS0Ct;3n102xR7l`v zSPCc!fs)g_$8V$Y*}yLe80_@NJJz=0c%bIF~EAg03k`4O?lslGc8=CIMlIJ|Ly=D zjq+P$jsL)AYBCOzpa0a8XjvLELck<^rUFS!4;Me~!N33j0YLx*If<^5p9L3R40}Yt zVj)dz03_f6gV1HfP)B2TPzC@CIw~9k4yyrc%m6yT&0e{}KHLfv!E@E``JMm&hl|A+ q0|3YuI83FzS^H|iaSkG%|LWv` z3P?y$gCR+v;Hi#Ra1JCzd}&^@_JTn3uwGnWTz&R{2BAG9j-=e|SUuZai3u?r6`3vFIMDl5(QN|S_?-6 z6Po4eF8CZ^1EDEU3>Qf<*(USomZ@|fj53N&F$JaUIA#{`FAKpr4TEfWOlo7?^34+Z$1N4cxPYHiv(Q4G+x#5YI;%i;)mjC~_$N)flh7hU%T|&-XcL&){00IQc zU}{qUIsz?bA4}l8KoG+KkSHEFQ|7@0TN0zt(-N^w@W26zSb34&=dHTd>(lp)U~p+( z?5LVzr|alA3BmjKS+JQ8-ndLI}72m=6Q3=AwO z*Pl~~=%O|rfF|ew00BV&ZYGchuK-!+^YAAh*zi1(EOr1ZBlL3f-QI|j4g$b9z@q~u z!q0->uOAO7a0JtH7^L!gL&5$nMJ|F|g%D77^N5`R1kBF`qv zWB-*iSB+KQ8~}Q-)r|^vFb$6uAX`f9#(nT1)JFL;CGViYv(S713FL4Ez3>x@`GjIX{yzhs!4zf63vut~fx&@6 zeT~LfzsH0ZNWqR`_(zxs5EXPN-;SKhG5 z9p)eU0dWVvpEAGe?*;-Pg=}R``v2=d0TUKN*)ufn@NfVC0YLyciKGFmz@5o}0%CHQ ztUJ9$sn1k7gmEAK5(|4m;aH|M@Br~3e9|Lv6cN}vSK~^Tuh8PckG8g~=0YLy2LTLbM G@CM_$Keagk diff --git a/samples/h264SampleFrames/frame-0850.h264 b/samples/h264SampleFrames/frame-0850.h264 index e03ff3022400a3ec1c090a56acaa3ee1e1960ee0..ae61228cf8f1c62a457e80abb03db2aa5ecb787b 100644 GIT binary patch literal 1112 zcmV-e1gHA|0003AFaQ7nL7M;?yahKwV%OC4M+oqNht?nr>x=*v&Vc%tyhtMz-~pR| z%K7jB1OdQM+zf58K$^X_m$?S;tN;|i06-#dKmb4tENH?461Q8ygi)rBDoyP=@!`Hv zOW=kZor07z@Jw7|mr{&~Bckph4Sg9!i~h|MLL?eCWj&jFWOHe(z5&>a*s}5Me7;K|- zT>HQw=q|E`7%uYHBB2lgc0%Dr){`R3oh4-EIPR4mOU#HF)dVQ1J!JwTMMQ{E8X4OF zGD3>Ylv94_01nxJ3=k^T6+{f)CcpqdBV7P+1dL}N$sF0D8=**!BHS&Ypcg>I2BDt- z3Y>r(1KlY0ehUmXCzR|$VD&d-|E~MM01ykH7?29nl^3&N4s}-N3Vb{O0t3+?Ia6=H z^H30UtlmT+7W?}^2w<#PA2+C?Jg1ky00;mWuE|%GhBQsT?hqIPjI0ZeL!9zx;rkWqtXuM&h3K8KGPcJM3 z@By!?0H8o1zEq+`0PUv800a#H06{SqfB+z10cSi2T}xk6(H+>~^c~s(nSiK(pAH)O z2ms*c5s#^%|7W%b!RP?N%O&ZuI6-0tig)|`$p8$lfd>;1?%Wxq;u}3j7_<;srxE|) z_y7R_fFP8&qd^;fL#b3nym4KBnJ6p{%L~4rgTN?>z=7INsaPUb55Nr+=L~oqf29KQ zeC2>=KmZUB&Q*Yd^&7s>9|4A8(2qT7c0~f8UNDF&)`E<4Mg2y)AC72}5770LMyN3L`jn!xN%UVJ89Z_5|`vUkCnR0nz||1abW;kVwkn z3VS~qx~TX+_rd@ZLI5Cx2dq#@LG0j89sq}60003&0B$D02Co2P=kxFak z9H0~862WaT_y!gv9Dp!ZR;HA=1GUy@@MizO!W2t0ZvX58bVwdW8XR&4{ffvaJ|^n& zItb12`yT`aRZkc{*JH+gv>z@2bWXLJ&H;14`nO4=C;#RHxPSD$L{ooW)7008mB0j4 zAOHXXK>#_4umP*UoL|I&?-B>GL4Xpg5wqaoE+ab6@DOE3*W4EWouoH+?c&A!3CEN7 zsFcoq>AQH_#NR;?P&x?cA$-fM;A5fgI1}n41A5=+?wyiL{9+u8@FU@X4Rg3B{_p+S ez@XoE)uWwI5XmxVuuD#rO2v)?I3O7S z2NzhlhN@t=U4LK@z|tbKLjsvhIXaeaW*L7d`W^@hiW3yMnLve$kTw9J)Dy{qKrjw- z+EJIU002M?QuqKAK@-Ir2&W6qs|pqY0Tty0Fvn3#x4`}d00Rl~?S@L~RB~d>79K1? z*McTkOe*`r0FE3jw)PNo(|4nLUy_5=(r6cqqQArBM%IJ4rN@39L`02u87cj7DY z;5oo(U_LYvQO$q_1q1mi#5yJZrLCd9bshayk!rvcBLDz^EOLX3zwn|#7Oo!=fHVl( z4otAjOB$-u_!fa22?h+I0Z#xJ$Ef=2u%e~A%{_|no~4m)c}Fa-Hx4gH009A@01y`3 zssJPx0t4^?0tHl+=4cg6ClNja16*xH2pbyYLddXVJbwPb3Y-803pOwT(9i$~DS%#{ zcY_;FI2=k=0pLzevTH;IPXGu7W`GP)D*)wi;C=CJ0${&1@2%2dH{fM zFusjm?qYap{@?@z2*Jk`DK$#4Ty4+z%>Yf%0003&0B$Cj2Co2P=kxFa5 zQGmfxL~t5rLtn9{=lBBAfB*miK>!s(X@F|*2IHfBQ}X}- diff --git a/samples/h264SampleFrames/frame-0851.h264 b/samples/h264SampleFrames/frame-0851.h264 index 3782d1450536156501ccdfce6c92db2474ad7975..c828bc66c1de86b20cc3e4182e4817aba135c4f6 100644 GIT binary patch literal 6741 zcmeHL3pA8#+kWPNaW=^LOi{=-*OF*1p%Xo_DSHectt4_jO;_^SGD$4s zrosbbw{rzVi6Gv1*H!3D&Z=^%@lyj)3ElT3$0oTstBw|Ijfw7OSci!hz}O6CFS|OXGmVgA_ZWcV)>;Z6UV%&Q-mU` zEkz0!E)B{;jGh;juuvctN$QPVQ55wzK6CJ*t|m}AC~3ye z&v)@`&svXIY3MCNy!9{9MOPa}oi}dAEWF+CBi1ER(kX7ijq{C+Tjm6pk-$;)w=6Tp;y_^J&k*K-e8n!8b#+C0&HRzojPtYTaVEc_r#w=vK$ZaU z8;3G`AMTxvuBu)il*B>IsD++ll?yW6;!eY9r+8~hvmI}IGoTgNe&J$ToZ3q~Hmyf~ zkFZkHY-`9yzvVWc_X1=#3s8xb0GS(Xs@JfhaIK>x7Ke~#UZF3_tt@FN9uN!Gd$UU> zg8*!f;@c6jmAncl-+QUT55u(k@xrJb7hZSh_7Bq?bLdE9mQ#yt9ui>Mr0Pv|8L{ zemKpy4k)}3F8XoKMD9+I%6$_LJ7Ag5P7=Jt->T1yLOyV6G}u!99Ie#1uW@DN_q-Rr zMfL9Xnb#@0ppd}U7x#^;LfJt8?{4u3+McK}+MB@0Lr9j!XBP{-V;g#vX|2 zsXVe5#WoxtSay`on78i6w2!1)a+O^j4&y|!a`wJDL^q#~Jk3*BO#9|~%FqMNi}o9& zO}7Qz^ikC8J`l~_(B>R(XPRk$%cS$VMJ^n{w2zLr;VbPA+0rChxtL|G<8xvfm*H#N z7i{34eg$f##=Zk0WCf~4Ldg)5zUco*ZSnEbC@bckM^gS&sV+@g7O4UUQ~(U_1^cc9 zE~U{YmeVx7oyLiPQBauba~PO#xJloEty%mOhX^We7GzBo{*ux|&s$U%=>Tu2Ps%OYTNS6kWtV+Od^Tr`eBEzR z{>V15uGs93t}B9AL#U40kQ)@0=|q0{>$WDbkHTZ7ZnRepHv(#E-yr7M+I#;dKwOn# zkZZeRXqqF1ZO*65N~preHB_5_uF)X;{r=!AbUc}bfelY8IKEv{>X;A7K@-iK{e z0qG)srV&7@xYFSMv)VMWev^9NlR7yY#Mc)F(lL1pEJVfWL??jKb(ADNe_iQ#^hvPmAlhBLF;RKzq$C2{bh$^yiujD>;P5nXISAr- zRU#5?P5hxT0@zNq40RXw(8mHvZjY;XAD#%}gmB#tZA+ftPe)_db~4!a&Y@DhceF`b ztDWZO^Iwz&4rUjk(WGuY@Pr0|uoT_`o1zHU(a=X#%3%$j4OCI9I375j**9s735ZIp zl@an4#9F;lH*!v6pEbyC@;7TGVSX-B(;EA-x&vM>;MttL=%Z}Y@~%5~9E-tk1@0ja zd`4c>h&va&wYLOslhL0!N1$j}BhA^~k`vYR-KR0FScRjnb|gH`MD0meq1)ZB*{aTo zs}TjN$;PCp1>+lCd9Uu4T76QOyU~iek^jkTjj~S`9+a>BF38m`uIa%x=N5LVkC|-* z%J!kj;AFo~VtxPxAtI#jMf03}`ltjcM9GX;Yunf=m==>cLGj+ct69d;xY<59@U5j- zuOjB`#W7VeLf4nxZN&tV&uo?e3%+#(R&^TFVcndcjo3u*mq@Nu4dHZ$d-^ z5Wh-Cx3$w71TAu&A7W=-Q1mdMPIK{NX+>9LY=9Au`G1&#D&^(#|2Ssr$!{PUGYw_~ zyN55`{T1@Ix`QBm-NMLsZWHpaWws+)ezcu2uQ-dpv^e^RzTxgN0!Vym34Z-U6sQzhLrsy^b(h~32*)q0+;2a1P!xhmuv+nAVN zvptZhQ{dMc!|q=c=kNz!_u!4fWx~lEO3(0G*eqNdddpQ1uJd`=U4SvbDff1v(barP z=0O>KL-p&Ow{jcq_#8X9z%noyM3G){x)X({f>V20(!RI%S^uw`mIw5Vhws})ld6(( zGIqV88aYOtWQJ>`C|E7U(HJR|ZD+jID#JxBSOlxv82zPp7HddTsf&JxJnC1)u_v_{ z$OR~#4&C)(tb~=v@?}zk!1!KNcAn7+oMvc~eW1U6VJ{)C&SuK1kmHf5 zX;D&=yU%5FJHgo~mz;$1SNHM8%hdflMUovTe zlJBxa-ddF+#C7m*&Uka&CL=L#w7C_>#GQ;FwkxT-^OkUdcoqml!A)Bd#4JPbZ7jvp7&djy2wcs=ulc z1x3IAr%XT5=c7%31g|4UCk5(a7~bF8#{iOJ6bYQ2pFcLh7}JswC!R z=q-;9UG{mwGKg?GXcA4HKj<#{fK=fdQiB%$mYuyUNfLj2lc{qn_#VNKRhA#)b={q6 zZxN&Q1$XScz=7e5 zD;zdYjcX5mt;jf7bO!$W(o>N%G6P$V;o@PU=*7LWdrkv63H|E5c>pg$PQ?YdboH8T^GVV#(Nv z4jP;eYp+A2l>+Bbp_(SQ2i7jlD)e%8B!q5;ep0V{fBVh~R_eDy?Z{$-;{F!KO6}S& z(uIU(L?izA|KQ&%|2+&eeCj!XC@oFc4G3Z_dx3Sw-^Ko=@h|io{*`{k-|zm-z~>l% zewaM5Nu-8|d@v-Fs)FdvXr5qX`eA_xSVkQv;BJVI5_1eR7))lAzptIjIH{*qDLs1R zG>S7RCDGw!vbJQJkOlFlC_h=pGCSKQ9D=x3vOplGu_@_tZ|=GS#5~UVZW}%2UaNTIfHTvB_!nV!iW7MG@+g914*V1O)}&8Q+oJDJ9ZvIp8Q01yEH z1_Vn&Vpy4T{sf>xy=bDxx)>beee1*k(8dlV=misl<%=k`!se*!_DV&f?quqpuX>f?-cyz_h1b11@G_5A$@dHJF=Ujd@b zo9iPIKWoYpY{bn7AzZEi%0cE{jf+}NJ8Dp*X<|#???6F^7Po9+!V0P{yAb{u1p6EW z-wex{xnN`RKqMz~fWU}frP;WA5{?YS>0)q-xhWt2_OPJHVQ%VIyYMZVMzG8`J^uax zSsKZRbCUN^BoiTS?;jCT|Ga27Y4UHCYz!6vDD*6+sLJMje^*c5_&ZsUHc=O=z_R#i zFg6ANZUq2zG6IVlK(v4Pt_thl_6}eb2)hoX(6#%(01yibfkP8gt69*L&Q?Tyt)Kuf zFc*o~GPr@;AOQdY004OK=1cCbEBL#(bzFaV1 z0FzKMuEJFN`UXP0> zulIle_!^56e}I+dX`6DsK=eQjfB--X27Cz3Zldb+{qNzC02}}w!w19*ca;(Gd%y_p z01yNg&gKdhh&w?zCfis52n-K$5GtGgbG$Ho@ty`9B+h2w=4+VE%rFtAiAb|#;Mea! zegkR_NHCzuecGEn1&RB{*iS;pcq)5!hNoHWphIhnv}tl*gApLqSX@9022uJY=j$7#nSwVr z{egiDX=9Lsw-7_Y+O%55FM*6GCku!RjDR_?YW>6W57S6seghTBRb${V;Y3O`?=d5l;R%X$W>6xG z00aX_xB&puiDat>{_kxmdqqbFPk3)Os>_930VP__LIZQ40# z!KwiqC3U^(8Du$eX&u$A`Ed1`p8DJf!ztArkhysz{;{xScxOfu5B>i-2J;&vFFWIZ zfq*9H0003&0B$Cr2Co2Z=kxF!P^IJ5~E zGRLDNUWL!73#c#XLrV;$qneK20003&06B@M0jt2Bf%H&mgaAA_>`CII|4smlnFLqc z9}?Y(OaLhWR_gE$(FBCR6dUiq5LOlciTin*+YCLy@Q`XKBmi2Q+&{cT)my-UjA0sH~=-aLfLk05X6I4oLw!FsLa#jscT?348AYlZ-A;ID%ln%UkYF zZ?&8I{TRYbc8K5)AR8p2$}?r6aa8iH~9!)RXDqnAm9674%w8; z04VZrA#Z98K|k;UgX&BJ+TW(~L`2n`P*;|6^Zr4BKZq>d9q6y22KWiXbM9`yZc@4& kez696^qNMLV9C=0yBBxcw zmCWSqpnz;{im8Vbw&zZ#A)RWN;zF*lO>fqh>x2geO^l%@sc8ywd7J7_`CM@wGgtyb z)BR!uSTdQz*u&M93)yeMIr5C-mBuE4`m6(eX4$mR!KnE1s+jakl_GW&<`k$J9xQ%e zYh}54Hqyx< zv_`2{>4QDZn2P*uB1$!W z*K>1EYE_sR;=imD(VQp4IYIjzw(rZ3|MV9R za6?lcpMiVpftFbwC(_DB=MPmQS>3|~EZ}2@A~9RnTAF6y1Y|;4{Rr~=+K4PM_lI;q zubpH9a}j&O4ua5tc*Aq!vNxg~1}79mhTR~KGTS=fI+9=rMrx-2&-JyB63C8*l~xzw zLH+rIU!+@)vKsWv2h$+PBH+E8P2Hk#A*^K&*G?_JuHth|yn~&wP-!Bxh2jpY5sf~$ z;m9A>1~_a_PWi)a@7spjyZ03!G`0^UT)?16&-Pws4Cs7h+wtggDTY5*E}Vb5FcT@*V+;?7$;Y}o^>6|d!}`ahj97By|fSk;R44g#zIe$sEwZJwKu0! zHN5|h(>BP5w34$jp`tPz*KwK9mhoxjDZei13`?FmTPy^yaG2#}Uzy5_$d=seRN9?^ z4aJ`>O<#YC<>cOxF@P?evJw2+*iMFr^G15<}9M{1D-Mq4FC{K z5eV0w5p$t-{UN_H?6wD{01_Jzbp}?(O<3nlDDFd{!dZH89+MBxQGQR(*C2KxnDXkn zt{UNO3^mPoyI(-28{a#h3Lp_w7(U=lxGlfrxaSAD2wITK%4 z+Dcm1y5SF}(qotSxJ8w~ugpYKTq;obO=*m(t&=`QaSk^!qzA?L5#j`mJEemw$i_KnbFVqC^Y>@=kKJs#t75gnR7 zx(3<;rx3$NA4?7^1%kA%=hnUbAq5+)cOF88L~`^qYv-4i&r~V{FKEJm)~Y5@Hp~hX z#a2yfl6-F~CaF1>qm1t_f@(_^)UbIP6h*H(a|$P}FOdmJeb+DPq>bCD*N0CR|O~I*%noT@qI3?v%`=}ptx{Did>f=>NzXVcjU862x9J<)@`YyY3QKP-Owb3r!@uAB)S#P9dwZQn;5Uu&alI1LV9ky9mY^a-MmW@ zOjnG;#I3Tur?IzCTz|=i*&f6>k}lPRO8~6N;~Ow|1Wg4s%(S4C&E}k7HS#d?F7s=< zlYFNXtYo@W5HS4x4BqfgwTsYCa*5^U$!5donlPhpCl*e?x!l#a%@W>{u#a6&+iU<|;!|*jm@g-5>ISwn3_P z7ZDoH`4K1Cd-*#ejt8bFxk9=b$w67Cm0v$YRo`a)glJQq{$i9f&6RGE^Haf^rj#!*W|c$BpDY@HyyS zlv`2IdTnN)kOEIUe*7lZJSe2pL3ELaI9+@y@V6eDMBT}AA}A!?j8{BB+#LXig^Vn< zMi*v6TtyL&_lh~Cm107l+jh3^dburWanpR$eJx4Z68sJ@g&`ZpjxvxnX{apTcWv3% zkO0P;u>Mq+?|C$ZuzB8c2cJWWn9aB7s@MB#`nBVBvI#@N$ZcnWX7e;}14tG$>YOhyns9~G zdiM?hdPzx`oS?472Z|SI<|~#YZN%x%HQMmijSs3CxN04woZvQzl$IL#8mL#5w?M+< g-Pi9PMm^xlE%7-U;<6;j@PFZM@{DH0N_3|F2KD99^8f$< literal 989 zcmV<310wtY0003AFaQ7nL7Jc%yag{oVj-?_G%mo}-3uGIU;tWIIAJ&d7^VFU!Hkdqm|z4|)4&ni`HGgc)RB;~l^bf&@~#*ktfmIZ`Yd-GC4Ptfm9_S|C}8Teq8f$WW}aXS)`AxG1sa^sH65(eT5ohtc#LUGD{uMaX3px^(JB`W?$_q4k0RRAjgG7ml zwjM-cT6*AM*Uw(-Etv-3NZ;9Yd5ZTI^V-eQW8vKj^!PyAd4tqZss#ZmDjUycle=QIO; zT*R$x4d70GDgeKIf#TfBGwqcscq4e?g^c-sHo1|f74CjUQwiiHaD znhbp10qd_xvGL?4Tict&ZUEzl4}Pw){AV+!U? zz(~}rfA+ofk5nl9B4`8Hnw5caB;#)sHUIj zR~5<#A@m#uKaId?P+M1v1LDXs2LMPffjc;B1%thhgn0NI13)r{0$>|Lc*q<94x-)v zg1#Pt@8|>^77919%^B+EC_uy0s1Nw!VU!1L3t{*#=x)7%fk?Oga8W3Uz+r?}+B@8- zd=>ck90Grw1V;>kz!MG~@53r@9s&R(KLR~z_aC4Gfs{aV%!YB{jP9&FHKUKBU9{yw7IL*n9wk(V+^mpY#b}td*Dk zAj zn>u`6FqpI?<7gyHq5c%k$^(0`fVMkvaa12e2}g#y?tv#-hJwp{Da;aJfWR(@IPS6t zMgu~cEsChOx&J-!kn%1^{CYE^hPvnz+n~M)e0B3q=StwK9uZ0;yd+BwjBrI6A~{3D z&jcg4!A8L5h;;`ufK3+oiU_di_B-8iSiqe00ff(OJZ6AcqQIwR0n-~D&@KU{61eO| zL!+~14u~h%p;$W(CIAia4zJ*FC_IiH#0kcqYuEpn2pi`@7FK|F0gnnJ77mbefg|AL zQqgq;)_?vFz(5B^z!-D{>!KIKWt}#dH7s3(QCTQ0qk>P?@AVl5nB)vQnbBr|5$Xat zE|4{|n);D%z!_8lKv@_=S|;0}0z}?47zOCM5CNfl==M=tJk%-SXbb^A!T=~G9ld^J zH5Oqfcqy2E01y}_WcJ5m>9fLY()=HQ8ARN8mdjlg!h=}FE*FI2tx|@bFKK{K0YC~K zN4;>;{Km(v6@Igx|O+7v}ju-@x0kN?VY6HsOpLn1EP5=z@z#Q)y1z#DY zNlOe=Za=Ncb{a&hn{7hgLfekE?2cO#^v#F1mep)#5((#ZmR050ypc5t| zAtWNPhv7`@pf|f13uCtzMhDQsQQ@w;)2%~6WuW_lSm;ozk8mNNJdPOx72w!(z6iNe zO4C_?_#z#{3?P~>42pmUTmTu8*dSaW{yzY32n>8K4_V$A2yF)pI1C*H|AHH8z{NTZ zVvqn+-yMX#{Eyw^V?+5P;A2U{u1VuLn4k)fu^>s(9uUfai`4^z{}6NtWfTj`pM(hn z@1H->M}hC6OV#^<1N#yYFfiu!J_$t^tB)`tpgpmWAx?%sbj-lRL{F|v1rq?{?=*r5 z6x%Ou&%9unw9f%x2NG^DMb6MYD_< z1QnB|q~{Y2>{G}bIK#C_>g;!G@B(EF3g#e8JDpr%fQj~a68I)30ER`4*`3Q}b0%$g z00IH#0u%*#z`3dq)A|pEAoIom!mro|Kde*^M)3dttVm+)-6t^@!T*>5>j3-&Y1=EH z(Zs}n004q4IH-JQiGTorAUIht?+%H%DMp)2T>}Chuy?V>dJb!1sYQO71>k><;j~3~ zWK;k?s2a8ltN;Pv2yy@b0YLz6CXfcN0C+F}00BV&IfmQcY1`Nd%}w%V+~06-`J1O`;F0}s9M6P_Rr;-VIL-s7-+@-)nc&9ujo z+{V+a7s9rUwY>(U9a{2UonZaBM+OZZ-@Ab1qJ}`#heEgp&SK95)~-|zqO@T z`~Y8lSlCB$yp<)z4nSZPZ;s{HM+f&(jU3p%Z@-2z3xPhO0=ANV&_BR`q`i?2i!jg1 d{9li$ul--pke%=k3;+NDK>!s(X#i^Q2IHgJ5R?D_ literal 1137 zcmV-%1djUv0003AFaQ7nL7KoCyajJCNT(QN1FsxjCK*AfuLCF(!A1lDai^~UE0}CP z-0R6c5*#`VZw){yO5$Kt41mdh1p~1lQV8GxMbV+0JDku%)5Q2tb59B?JUevWf?rums2eKb9I`5E9#m z6pGq4wM*v$fJ_)eCIkaKKtKS2Rt0;8b7MmAYu`(efCVLkeh<(&_Oky}0O7a*0RW%^ zk_D^kkR))RqeByW%uZ1kgt#cW`tc|D0096F9AGA#txrO$#862BWVf~m0*e2{2xk+s z=v5v?z5oC~5CjH^ZNW2^fkUQ4cM3a(0bl?S10o3kL9hT24f67tfJOb_2Z6xCogxx= z(STccO(dU2z@7l`Ds(}Cq;R1ZZotJ$5CFrB3T;+b+#c68yYCPH5CEZbZa)H+H2re$ z0IUQb08kJVg_xyQiv^DbvG6m1fC~UKqYc; z2!OV4jH)hnooxW)NmZBuZLv67j|6oqkhl~ka9+=ZNiljw0T>f9Qid5|_ehdhEWzI4Con-k=a6)dL6;7E!VSM%qUK)KJQKq!>^4yasS59w>oR zQ5^`Uw=baZ00ID~0R%3JpsDu7_k&Qd1JC`yAfP!;3J{T=EueZvA;sPdK?#{hLmwh; zg>OZV`~U#~5Oy#ZF}ClN6BLO@k@EqQE&}LA-K^y zk|t#1C?Uuy^S&k({)GgAaW53ALH%qD!{1BZZ31v-A^Y$1pj=DIp?;)t{bs%#IEl< zePbNRVORe2paaD(8HimuD$VR8LIP2Q$6^O1TGOlc09C6Q7Mj(1q>_E;5Z?jiD+tX$ zkQ&|6Vdqz6K|S6w009mJ{vaoyZsO@YJ>Fs0ehS}h^WFau_y>jn00BV&6+&wOYVZc* D&3WE# diff --git a/samples/h264SampleFrames/frame-0854.h264 b/samples/h264SampleFrames/frame-0854.h264 index d65ff2df3a38819c9dcc270273f3a4986357cb1d..5a1e7ece78cbe04fda62c7701d97b987036e031e 100644 GIT binary patch literal 1265 zcmV!uh!MXv_nJ zumD7Z6G8^t%}k_+!=CHb8ejl80SBt!sfzJYyI2jZ00ajlwg3t?Cp*Ds<^cdZqB1U8 zX2F*KRA3AN1E3Wj(b7bP4?sNO0;H{IRJaK)6~EyBj5-KeDj2)#YtEy1ZZj2nB!ufnWd#B!C=D;1B?! zK<3UeM}@b7FtF6SfDFR&9g5w*->u_Q{wi9x-!E_F@ljJU#uGo!Ch!65wX~l*y#64i zBY*&a3a)mCq}TuL5H}b!j;VCq@d7#v@LQDDr~3!y-h%a)QK-rC3PQHCbdU}^S&6s0R&Qz zgegi=5QQl}|Na0D1O*a6!3IRx@}P-BHevuVviP7zg5aPUh6CY1vFMR62moA0L9nRb zWG8=pqzp0_Sa~NYZB_rcNCN@pco=mrMCywBgk}H@GJp}Ij=+HHPq;FIwJ1DGY>Fb5 z7T^0qQ^II=2=Yop|9}z|ZZM{eZ)y}#w^ZQ(0w6F#9Vj?-?>zVuy12!KmwbohsZ}i zH-G>j8gsw|n>bYDjxxP;A3A}Q)PSOEg__a$*fK-#r+`KbaT0MvMeV=y_xXf_1-yRL zk@JU$lEH_Vh{ylpx&Q!xYc>E9lGqQFJonz~&9T2ysY-W~0FdYa0tB!s=K)a7g~tdp z4*&+t#JHpw_3{QY^`aVb7df5C@a#ZS1Teq?*+ZjW@}9en!TD$c9e@A;0YLz6CYT1V z0C+F}00BV&If;xi2%=%YX3MUD4-60VTi=4~%1` z=|7)&U;_GJ01yKJv+@FQeDMJ)M<0Q0_Mmvmo%`TyR8Y>52YGlz9*vBue0T$<*J-Ct zfJ!+6af62X2S>Qt@qcqnUuFV!!kAQOxR7NAfpo!`O&|ae0FVKHvqc%;CNs1D`5?GB z)LdljyY>CJ!lby2#3$;2dD-`K!5jbV84wTzc8JyrRofRR5fRu0)l`1Ki~DP bsZgY3O^4lw0Pw&700BV&6+&r%YVZc*xrQkJ literal 1136 zcmV-$1dsaw0003AFaQ7nL7Lziyaj>$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6n761$pfV>T^3;2R!-mbI&9AP96T_^(t zg4b9pg$Dn4z#%2=C}P&Ge$p2Y!G(FEaIyq`%7p|lNe*8$(Sewdp)h1;fZjdlm+%|; zuunp}P)7Zr$L$4`mr=^WEmUsOX@Plh!2+_kKxzRRGSsGgXaD)YuOni;JU@TG00wgj zE8!Ld4z%wmv4sL_!4Eh200scVumDIGz@VV150UO*DkJ}B+`2)Dd8Cy4z@Y#DqK8O~4P3J^ z3C0f7gYW=k(VzejRd(t?01$Wp0S6m^3PaaV^M9@6NGu`X0Du4>3IM^?ez_`6;sMt} z*<7LQ1vm<5Jb_3$WH5Swpg#||0|7yX(K~Dq@G!5lBL)BnbWo!a;-kBwj#bDAeT?It zn=DR$o5~vDkN^k*1OnzE6>N!7k`G(Ic*mj~00ay=uW$g78O(~FzcCRx7Q?#PFMt3b z1{kSS;P>gpIjt4Zn9tk=AG*z!^#9xq$^~zUR(sFsWF80shD&lF21K}_&W1Y;fPLTq zApwxp9UYrr{e{7IgZH*=jrx^c)IR_L05Gc#!sJ8#UgH6nnUiBTq>&+&!7TeKv4R18@)mhlZ_oag8)onnt{SV%#_4t^upSPan_c;7)Kjh5{xCKm+?D2Vi6pOPcTiw~#D; z2k=oNXSuj^6YVRCK?lWR#2zezY~z;EGk{bg83*S8Pz}NrAR`(jf9w54+Fxkl>Vb2n z)it{qn&}(wqrLVNJ}^K1-ve2bPQv6V-}dk)7s3HCAp-_e9gdrz8G1AZBw71$%^|@Et)U5UJR89w+H)4x!4H?tYWe|^w84&}At{|LP^ zvFI7p!q`^m#e+c9HjoC$<^a(Eo7rYOaL)h*d0Tvwb+VM`bd(5rTT$Jq)T7GYwTTW& z#RaCQ$Nyl+IiN2m+hVG?CjZeL;6oAj|Fhnti9|?+nJ{6%JTL$N0YLy2LTi9(@CM^f C)aK0q diff --git a/samples/h264SampleFrames/frame-0855.h264 b/samples/h264SampleFrames/frame-0855.h264 index 3cdc58ec39d5051a5c8b6a20cc3755fcb4c5e99c..35ef34fc7d6c9ee78938fb4dcafe1fcc675beb19 100644 GIT binary patch literal 1510 zcmVTB<7y0PqNl%jM)Z|H-U5-~pK1dP%hS00IGO z036`VHV__VyJmURD}aCi2uE-Mh?H0heXU=_g?*qPIXi+5FkD|1jFYclm%$7-I|V3b z;7nXCx>-7Ld?)|>03iPqO1Oc}Z-DVY0$>bKg&wEf!(`HHKX3pA02ESfq^Hw9)1|fV z48L%6_Eb0ksKkHF$N&TYjbIQAcu>=#g5o2$mf?UgFdW!1Rj?(dp&SnI0KlR?VKjwp za#{-yJU)!2pdOs0#^P zHW^NCOT>AxI*_~g?18B090=e8@E9l1A3m!C0lHoh*bL$o;3iPuz?b+8IVq|ijGPb( z3O*b`iO5+3Xi-oBEEq}{5AwzYze4hJV8~ruC3b@hQRZRD9RGx<5@>p$O5O(e`+xw$ zh$O?%ys&}Sh~!>H0ER?f{=jG;bgceFTA^C^cYt75G_RZVQAse9_y7R_ zVVCIZ-A@oD`+wXJ;J2>>p-AeG@be(S-S|jxL!xyiSe3zG zF0zRq{!jv0P!5NVs_B1N+4w+`#tNWRK_c*sZ~^!X6X*}00Gz-9ujK$Z91S;>SkY** z0hZG+fB-;<00amzTL1)uhXDZ7<{m)y&|l*14h#u@Vh&1bh7Y^E2Tb9wWgIP^szL+& zCk#O|W-)v<1F!x+2{11IuLUHi0%lGJxv0aA6~Dw2C}BDpPuLs>@SSL;Twd(}0&r09 zGXHiW0pnoZVNBR_P@-O z76)bSTKFCSQPqKgxh2PnjYJ^)05)-2aL~nh@e??cy08NufC4FxOf5u(G0n001C!4;4Fq z@Jr-?0Er=h1_%^+LgFSv(`pY-2Z0mo1NY^iE`Y_?$9yv;qd<4k#ta(Gm`9&=av^cjf!%f9$>w0wFmgV>kn|;%Hr>76dR~NIYSez+wyH z#p5@-M){{D=8(q^o?u2GiD3A!HqeF;ntByTh?n{Qnl3TA+z_8Xf#wHiYam}8p$CKy zZ~49fjEP95MJA7nSlnk%rl@1Fa{1uK(a(8N~eVMvkD3x z6qYam;pV7MI`);q~XrHFYs= z$6>u(1%Q6BRe<`|2kBS;_~EY&0Co5Z5zL}R=4n6hJN=}pl@v<%n+;Fuh5?a)0003& M02M-N0BZ0C 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 diff --git a/samples/h264SampleFrames/frame-0857.h264 b/samples/h264SampleFrames/frame-0857.h264 index 0996c8dfc8e73b9cff79957273bd48f98d404a1e..466d7d289e8a5857910e6dfd382cf3b0e5b2d480 100644 GIT binary patch delta 1128 zcmV-u1eg1?2mc6v000012`~Tv0YRF;8oUK3C_s2V=+f;_MdEnaB_v7->`{#Z@}MXu z;)}+IgH|Lk1LMSIPB%l!LUH&AI=Ct53iujIP=}Q%w0|$bm_`i25Gn=(3BUmW06+u* z1R?b3*#Bg~mI5h7`|x2i7H|Uvsg|n#M&JDq07d`-06hSIP*9cY!UCN%|Ly$fstw zyF?8IRQ~W>13(umsbr0sfc_DD004k!00<8N?D0_gTGqr&6cq8W1GoTiJP*+VB?3pQ z%mHu;FlhAYq=Au8nk|kdDVosb9_IZ3X8;EVr$|%AydI7!!?%82{)=Z~#nBQWb?^fhg;Sh=u@}L1iFF zY3WUdsDxJ%r-B9_$ZSH9L~kU7t%(dg-e1+jF$+!r!e%2Nj1pZ8a790W!#_4tdrvbDSxt5a8rN~|5fkzxB>+b z`ZB)&jTnf_XcS)bd-O0->KP1gkRqDzMI@N(hxDx3afVf)j6b*?g(A@SbcC!?HKqAi z!0mhh641X-rP}Tc1_rx}Bn)IR)jm!-Psb`WJ-320t&tg@Uv$Cc|IEfd?f;xevw^WQ zQKAMbnEk!h41c&*$}*|>xC3C=G?D^q(2-u~01nHj32yKU9{=Ka?LmSFymUIc$%LK+ zU}vb>-t-O&uggV_7|VU?5IwOX;k#z@K6hDuoC9qe&$M=zX_ry|%`LnS@~DY=gaUw1 z4Y!zqcE>Z{)~c{DwjqI6wOm2q|_!6;1Qcc7p~70pkDw0YLy2LTdnO@CM_G_1EYC literal 948 zcmV;l155k>0003AFaQ7nL7PAtyakisNia$Q3oXb!0YCy*1tq*-mbvE8cl6s-0?fhj zxBwv303Z|?l`8JJ5w_Pqgm44E03ZYf1PG_HI*?f>5TjbF!&86&fiTKSKulW6_S>RF ze*iE8G}SsBz!`!SE@&AgM4D0q2OtYk@W0!Y~A__}EYAJ+U3LEH1GE2l6Od^s=DPhbcmUu$6g9vE0`k@6IZBGG$ zD*9dfDz0HToK^%7NbuP&;TGHQ$-SSbLUkg zG?9AroB%KkF_4%(h&<3vncrX9}0YLyciL?Q$z%j@3`S=q;cmN?gvopK9Gds8c@BnawmLcX7 zDpfaxK1!Bf3jxK+#|1bM*N^US0-&*=>mf}(1ksk{ zvDXf&HnRs^LLC2F2Vq7n4~JnZ98Fn%Twq$TGRha}w4Zkv3=MY{NEpas`#5rw(aetz zzrmZb(YNDM;PU(CW^;6w%`1=i=FYzwW+MUEKTeeA-7i}1y1CB35C+GJB@wL?xg zy2e%bf~~I!`tk{i{};{C67>=k0(dswAp+fuXTO0GrUn+`O(kGmqZ&7R42C?wBnK9K z{sFygjSnQFXelnpT6*>d$a$jPQ4epmO(^}(dIE8LNbv$}QW@c^QnLcN1AN}p2l~kr z^zX<2`mjGL>+ztbx$_r}r$6r@1@MkP2k}!_7gPnX09f!beV_E>*hfeJI!Igc(hxdG z-nVLuHRKrI@HGLT1%(JNz(;5YHZzc2d-u#a787VFY|8JW@BW|m2mZu@*F*@Abc=Op W5D*}69xwm^0YLy2LTvzQ@CM_5`jKG( diff --git a/samples/h264SampleFrames/frame-0858.h264 b/samples/h264SampleFrames/frame-0858.h264 index e532c1ab098fbcde773b9e59671d17658aa634d0..a3f0189c8110c9953b161a15cab70398a2076c02 100644 GIT binary patch literal 1229 zcmV;;1Ty;o0003AFaQ7nL7LziyakUiQHkiK|H2?51$Y2BaL53Fkk9b=I!t?KWZ(cy zqGL?zLRUFG02nyVQIQ_yT;i|sS>YGRo;U%(6omc<&c2LRTgfmeXVq7ecQ1nC2w+Jl zIRs-MLM1tZJY}5E3>FO*&{1#t5D~0?Y3HE~3Qw|dGDduL<8kWO_y7R_GQt1=fFSVw zlS}S;6hiP}Txh0KFii&p&?!y!pa2jQ0^_UzEPtg9z#JEVV&C^5aNz)VDIHt^;0KdJ zrv@H?5IR6Xe5CBa9{dl4Fb9qMfFKxHGEB+M^^;~PGXs!t|KJ5M01z7l0FR{W0J*>= zh-Q;lKp@T+Rts?7mLl@o0X^X1irByaKtzWC0RZ4M5B)&LF+A%c5kx7Qx)qAEMU#Yx&~&$tRHd&TOI0l(+P_u6rw@6gECZEgq^??%-`SufMEZZhhF?hiL`d@SbhK*M&2ZA z=Q5jNz?MOqh2c1@WT25`db_{?PyxZ^(L{iUq);+uT0WvX>(B=p)xWOjF z07*pvjZT&mHzNMFN(p^nU_(2_mpm0!q7xz>48xLh)OlBWL5BbRpa2K~fGDg?%Tl=q zVu9}7MnWrd9SSFHf>6_eXJf00IKy3{YbP z1|mF|_Td(XAYbDEFzxpM;(WzGYBE7z|5!*-e)gA~i{Ssp01mJR;5$TczX3rsg)6pU z{wi9v-v{JMfBpDO00aVn;FBQFghk()saduRI07Aj0003&0B$C@2Co2kFaQ7nK>#_4 zt^upSJE!yc{QL>9KnF2FE*3~o4;f3_4}Z84I>+}X&+HGrH+j(Mlz;^rlR08%^8hS5 zlag!uv;OvwUo5l6Ha7luyfSn?K;6-R0Dwdw0b5{xqrZUv@I(B*A}mg5`A}*EvtN@> zz4@?gFu$Ju+u-jU4Iu7!`{m~3$j68a-ZGx_aX+!Zq4G46Ras0kseGcJQQKN`f4TYg+e^3KQ rsK8#Fc}=i9)kqJsdDTby2URL5AO0p4@Dwlr00BV&6+&x(YVZc*K|&vO literal 982 zcmV;{11bCf0003AFaQ7nL7QM2yakbe1p~1lQWO+`0uUH45%(h*aoivcrX9}0YLyciM9c&z&oe&`TYC|us{bfK@J2> zW;F$kEt6|||M=h%cC7rUTlL}gc`xT)IFJCpmg^!nAS61Il52l-`AE8dF(Ds$LIH%Q z+6!u603ZdJ1N#T-_rU+?7$}dkcu)J4g3h;n??f;$x*U+G#_5lu&=Ac~GjeJ|;2!#lA5iqaC41o49R8$RF ziZh2lBdsjZ6gWgO3Wp>Y?^R-Nr`4B1vT;)wdzYapBg`0ZCcyw4Nq`fy(jev54pK4z z0n~Vga$Vm;Kn;O}#VLYA%p{_LAO?(dx{tH*+#m9q z97SO0KN4fPfERjG0O|+o+Yk3uAPVU`uA_v5m8}r7b^<@d!oC8A0003&02M-QfNJmt E+Nzxqu_N(}QfDj3H z*FP_s<04}Ocw`8J>_*SJ91P(EoQkD;{O2?`+5q8SZl7m8|2sivI=o6HIG6X=3=M6? zWF`0Z`={W2|ARov5vZ8dMrWt@+xh`lu2upGT_y9<{u0oCkRc51zT;EhL4X4fv4mM< z>jZf;{opifpdQ;C(b7>IBoVLh#k6<-uYNhYAV9xDm3jT<004pb00=z*0EMUk2n8l^ zfCB)&;nZAUKryno0utI;Vu7qCVtufETO)2v8?5o*5zU{V$4&nU*p_H1@$F z7e)ZKT4%|BZfoDd1*r-E0s(BfybV}~|Lzbn(7>|%rPUyjBDlZcegXhPNCHeS@2*#( zZJvMbFaRY0`)^~oY!~S}2*>~g1PXuxjr@pWul(FY5LWS8KFLB0h^qha6N~f{1<)pm z1K9rnSONjS^i>Oh0Ey&a070;gU20UMxyG%Y004l0r~oJ?8($#@Stjv^E5yD4r49k} zP<)pyg;9jTm@#+)20ftnfQwTq^I#YnSk0Gs1^_6zlMJ5vQf}7^KxsN4{Vz+t_Fw>k zCIVOhI%WcgKkR>K00aQQ06-uLMJuQcwcc@8@9*G70Ra?&O!)#V5tMj800f5s;K)af zaQhd3EG_VVtF-1#pa2lq`@q)M1u!YPs&JMV03sWZM0?-tF^_u*S$~(s0yGx|0Msxa z8DHxFJSSt2Rcc*Jzu#zpz=&>e)mry|%l`o>02l(@pbQh+CVO-5?+H`~>8}TTkgQ3G zU2rpjOIn4x`>-5QE6@Mh2}OlvH3bq`ihuBb0z!l4q!QRc#SG_DNY~&LekI+d31pyJRj`> z1Na7kVua%;;TtZ9epmn`Mk2Bt%Ht(X@cl>$kqis~Gyy-T;2)L40%On=g%$t^8GtZ< z0?Xt02Z#(_#q*?Lr8CKxNn~&U5E?f34jDl2Fe8L;%|uD0F4kknlr&+H(tvj?+&HVlybDFPsWm>_vU zdM1gxCdt!c!yxrPU*;k)|M|QC0D!9#00x?AFbkxTCI7nfY%=#3*0sD$0GM6?0%Y~Y z1ZGz94sgT30WvX>@yrlkZK6#4jD%L^IuuVzz8M>00-J^a4sD@mYt%TF?S2d}1Umo# z0YLz6Ccp--0C+F}00BV&If<~7-2*Rw&;fmS+L@og0?BpdsgaI#{RFk_d_M%}0Lb&w zW}fdsd?=@;6N~q9pKz9yBYX!K)mwe#h&bS?xbF{NFNDV4p#9cS1l8vyC6q_<`jokZ z3@`*;+qM(4_``En(Oba({tW`v6#+j@(y@kz?y^;AVQrofJFsiZ*~C5Ne=LsHB`Uv_L+%s zNyslDIby_^;tZYX+`8{WFWtp}MWzM;r=)XB_D}@hrw8XdK-S9&zm$jxf8bZsq^m#w Y)ENv0cuoZv0003&02M-P0BZ0C<0u}MVE_OC delta 1373 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 Z!mEns?7sH#)BpehK>!s(Zh&g=2IC2d$qE1f diff --git a/samples/h264SampleFrames/frame-0861.h264 b/samples/h264SampleFrames/frame-0861.h264 index 30b35be64dfb1cc0e61cb211b82e02dc7ea4155c..1d849cbc4cef8375b54991ddb0605bff1750b5c8 100644 GIT binary patch delta 1491 zcmV;^1uXiF3ylna000012`~Tv0YRHU8oUL8{NKjbV+=rJ00aOG1SySv8V^)pWoezg zkiY;C00B!GEdV3yePf^~04fd%BM*=aR;i%0SsXw8pacL2=HSclxHEh#ku@~&DM-gI zuW-SD0TEE(kT1!U;^UC(|KQ7I@PH%;h5`s86&ZK|Ap(4VgfX1b*SzHn9{>Z>X&$St zcmN0h-H;RvER~ujD+l8kA_Z?LT=0Y29?d9j2tcLfUuH46ffH?RPyi5sDdB~iK2S;Y zzA6@$BqB0;aOj%0IH`UK0piq^z2*Z@0wH9rZihy1gTMeVCnGIle=>xffB)OW4^w~) z5K5E6?IKlw-GGu1Gle~72r+Pc01P>bHR%Oxs9Gn6t^2?OP#XpNR}CPpL{IaJNX;WK)80G)PI9Jj z073vzAYS^cNS3gP%bJMldwTPP%8n z2i5?84o?Aq7!k4^(~x_xIJ<%Z0)4@ukqz6B03fk8(hcK#DsdWSh z&wVSi$N<7)1KSJN?bjZpDtHcxIK8vk>&zW`1nC_}JevRk07-NMfM~Wb^ohR7iB|Xq z1>vyhr@!J^if)0RfDA3efFOgYODS}uIvOH>{Im#7+z&8OofhtG%Q;3t>s>QNfM95_ zw>$nf8YXcG@a#doEG1jN@FLIz7Kw}`MBhn`Z}#v3iRc)L3{3seu?0DtBNJRy32_=_4q>R9Lm9}W447y3!F28!*%GVH_#RM z1Q6lQVqPS(id!DAVa_eMh|LKY26K!5vj5)ip`$YNWZ(Xf0*9)Ag4UF2)pV*<4n!#% zm5x+^4GfYCh6z&HPc&>=gl|@nHx6L>I`W z*(Lx`Rgm(>_s>S8iGc^>{`HG%7NgEHUeHzm9D(Eki3j^ijR=zM1RTGEfHj1ri-8_T zcEFqw=HTgGOEJ~1186dWZd@LJL12b#9G?VRAAi@j6rK@*HVgpXC?xd`SjFu%xgKyVZZ<;r~n25{)3n5uGroH2yE=@L|3$wllifz zf7+yM^XTzlgiwHGZq{hu`mUMm&JM$WodAK1)+5NvK}3A#4z22&CL`Mfg()C&lgzJO_O!r>VOffG9aZ7<;fz<@v@1aJY9 z{acUekYLF;Zgv1{vI4EiP5{-6K=0YLy2LT!^j1x{;&dLjS- delta 1362 zcmV-Y1+Dsx42=ta000012`~Tv0YRI<8oUKBL4u^cN|Tq+5CQ;F3kSsv8OLw{NFagh z!)chhiApu-SyTjZ71ObXzks{KP z;r_{Pl6(L$BLV6(7Ftjh_rxSKI;6l8Ew-m4q7GH}jlFASa05AZzDCh_sfnor=3ktvm&63V(GxzmCkwqZ!e2$KL ze((UJXc82ETSAiM{C|Gg-tZ+>8w!Z>9`geNm%~wkurLE~Cf3>=!Zo6eNRlM;bOwtxUY3A{=;1OO(W>PmnBKs|sCjUO*M z1x#f)0Dz)%bb`UsDGVWwP=z&n{AK`P65|j7;{-UwMSD*Mg#cc};mZ_DCe|k52pmLe zp?LK^5C9l|W2~gG39knrOCewa%m5<^0BD(jiehUzgOCJa2s~P-6f6SZEQz2+cL~JGz5#%z$Kb`WQh*k~5iu%gKsYBg zBnwaXk_yGpl>-1oJ4z6j-*>DSVfWbh1{ukJ8@d=MTpBw@U7riup%g+li0pmE5#yn9H%!u1L5LHy}EV;-tl6#_4yaB7g6Y2c?3G5XCr14>Yhycf{ z`py72+-c8;Jn*bX!@B5Z3?0qeQNRFB03v|7k}O37->`%k0i;|2{W`WHhDmEsXyvG7 zb829*YDQyEw!;e}=YQ9}cxD9HFavm?!~mlz_J?o*BKdn>ms*T}?Su!bkPy_GxGa8m za|M78zzhpC9ahHR1Z}pcr8=E||LAyf7EPZ;i5e(C%a+q03=QAhKiB^Q8&Mq-z{d5g z;qSf-0L~}&>vRYE{`?o>iE%|Z=gZ!3012vq0|11U1k(QzRw@F)-jLuyG2w{jk-mJ| ztvAgS$+N@m>-5Fo8T(Gl0N1g0ch3yN&5o7(pjWvN91&SB;sruN5JZqk2wM8vO;Wa& z5`{ri{El_Kbx`~ppy)WO+#EfF-6#N>3;#6h%=Kx+~`Q2TR UhEoiH)BpehK>!s(ZH1YXATM diff --git a/samples/h264SampleFrames/frame-0862.h264 b/samples/h264SampleFrames/frame-0862.h264 index 7362ba5d832d1fdecb6d37d3c72fc33f987a02f0..b363bd97eb69855867cc718760a63995fab1af66 100644 GIT binary patch literal 903 zcmV;219fr!EgWq00ls$-J#7Rf>u}mdjP-yKypUvOMqT?$57NP6Kuh^ z0v8{K34wFSkN^k(B5VL)AR1{BfuiTX1OL!aL4{(NvM%@l7m^eJ1OfoXAjir0sR9>L zB)v$H1^h@6_B2)i7Ymh$a)^ZMP@pJhb9y%MMDeVQ00@`>2m=5d3+K{E-oT^-b){VZ z06;7OfUf)Z3A_}+aH*`t0O#fk00IhWGq3=2-?#$K7&v^1afn2K-s}E4X0$m+xz|8t z061Uo3uL=*4Pf_#VGJ?K6!HxiQQ`mqAXC5ufx#=r8H2^5l}!J^f*EZG|BHE^$JKaa zS-=J6F&I{gQKXbNXaNE+0uHmmHO(p}P9?&hIOXv$0%!#`fWWZ7&}?!}4k7>o1>gW6 zhu8oD1YkcOcqraFw2j&+5Om64;4UQ;0=tYXy0u(ngv4AipatSRNY2tyv;vCZ8 z4gsry!J)!*a`tvOEhD^m0|P!vZ~=o>#i&%!sQJ(^!x3M9H-Uby#Smtk0f>l5gdkD; zwh6o7W4vfj)|~SAIJ`=SC}9R5LjVgIYJ>sBms~7-B=nhocmxpP&SG99vx-|Dw}#_4wgIca7HRza3C{*VX)ss` zTGDIqi2?)m>vof$|N6zhQV;)>zF3coq(ORqd>FPucE$mn{XjtFgR-}A4f*}?Pc_&c zUrXbA{Zqp5CZJ#jP-F&?!H58p?y2dopxVgT4649QzMuW}IA22!Hf)UoUI>xoQg#;i zloMZBJTvTgW5HCTmQ2z9?sh^C7RRlu$Jc{T*hv#Z|KBeXCO9YjV&EA%8SDfk)%J_e z4AcMs0YLy2LT!L*@Fqck8pnnp0X>RNa4IG|EB@L@+9QN34gLctA*V5G9K#yBz|qTm zwR3#`%m(LQvbuZk_%2B~W`_TY(#8H`*C4;#TB(|WI|uls^9d3=aozw`P`_n@cmYDk diLdSZYC=Xs?e73rZcGg{VYb@>CIA0`G8jYBgH`|l literal 874 zcmV-w1C{&$0003AFaQ7nL7U(jyag{oVUl?evd7nG_Uj`zBLBZgx7X=0w05#l7X3;bPgdBi`Ydlf)t;JXW0H9Ao zwlzYUE8=;3|J)r=01z@Vpa28{Kx8z{Mt1nW+yF8F0*N@zh=M^}PqNd<-vTTm8xC+3 zHpazG62YBI>)&z!feVQ&0cOmN&NC+Y{oxxKupYz*z>24yW)c^GY5*i=AW3)}jK!@+ zU;qdqfB=I400<|5IGIZG0`mftybbn@V@O_X@F#LiATI;~pd7yfLL0z@NC23?5myTa zz*2=T|NnkqH2_h$|7Q6R@38u$0T_%VvRGlj@s97&x` zGl&U{@GvkS)uW(72*Cy=Epgld@WUxQ%(h_y(^4crX9}0YLyciM|1=z!quz z{0YwnKxr^g5V!aQk9?iz0s;F{+?ikh`qBUNl<(%3@^uIkj*zUS(`^6@A4mjYc1L7> zU*I6z(v%OC&D?{1|9P3yO#Gl(dm~$_`~6P}z?y-889|U5M+P7f>fqa*0-Y0J8EcRU z@w~e_bcP%->@*6&GFXaE!f#$sO#AC1VV`5e9t%n}3dP^KyCDU)n)bxQ`@x0WB&eDH z|Esd1VZlFH!G-}w4!}ZHeWD5Bnt%WR0YLy2LT`X-@Fqck8pnnp0lk$lU{p_qf87HK zHeN>vRbK}MwCt8M4C}SvY0GT4qImz*2Is5%x_|%Y@I@s#W6po_w6TA+)`$n^7AlxK zP!qI2!k5e>Nbeos2dhMEOMZL=3S)*nhhG+unUVYE@B`YnBM#1tGv2_EKmWiP406D6 A-T(jq diff --git a/samples/h264SampleFrames/frame-0863.h264 b/samples/h264SampleFrames/frame-0863.h264 index 776274b5ef339a0c0c885a9e35ec1fff4fa9f637..a935006e30a4983500ec92e7821f48a9be63da4e 100644 GIT binary patch literal 1198 zcmV;f1X23{0003AFaQ7nL7RXYyahKwgICm)Nq^)BfQS{~0OO5-!^QW9W9NsZ<{SVC zs?A2k)m^v&g*g;RdbKEO%lwnXJ0e)16b5>G10<0Y^BRBvKo~tLKo%pX%D`ao1P%Xk9B~2Iq-{_h0hEz*gAc(w2OMq$CuBg9 zaCk!jtHB5~+3f{yMf1`lFmx&%Jj?(D1TdCRJR2hjugW7L9(>1|oS<)on!)BY1TLpZ zdYvL31OVWzm;eX^u|NQU;Uc-57?3&Oh)^I(m_>|}6#s2N07BFJ1^`ll7&%ZEIg7LK zi0!Kg03c#I3tu@YI7U?}_k$~jvV56=j$ZL%WB>_>9R9wGgM;1}mq!x78t@=HbM(+g zX_*;Cm`U6LOu@f^5HS6}46V4bT*1?%L+}RXR20*~EA>YNu?SpVB`HZ*QqM_m015!% zulKAJR8j=XXhYys08|XTJe84s95N+t7zrQ+#?FF9QlGD0PymzwBVGZF>45uUlp1gb z08+wwqng5jrwSSXH|`gR=pUzqWG;l~j@PX;i_%J6tNGBBlKtk{XC!S1h z>eI~XdbA7_p@s~nlLuMToWK9Z1Qay}*zp|?N>2Ev`+xy}Q4d5*o2f!Fe=xX)4iC&u zQ5VF!*n0>ikmf*8YqIx#;5PkjQ+PiJ42}#VCP_(+d?TSBAmKz6sz(=Fdsl!~7(nh} z@UAp%b;iRV&lSSM?g0(fFC_CUk<1mP-~b2(kP*PnFg{o3X!!*Pptt4$j-5~t-Yr-G z2wEA~kj2@$PG?^S{$LKE3xKOLWb_g)nf2Ra^sZNX;Q!x=fB=91DEGp9GJUxp=`g{E z07I|<00BV&ZYJOcuK;*30003&06B@c0jt0m;r#x71kjv-0D>t^_&ftjl@d59!cJY55{5WnT%HcYEunlx$q#@Q>g)^Lf$V?oWB8k1 zCK$X2i;Uw?0f+!J0hQzzEf4?*0L%c_MhNJQ%>dYAa{t~riJE9X=7Hd3kve4&=Xeu4 zCZ0{-eSrW98Xg=pCJsL@|G<~B1mPsjBK!aMI6hC#P-hF-l M{`yag{of~37lkq;6D;aC75K?KGm(2I=>>7#l$@C+y< z>HDTfJZh!`#$SL1dlw;N6`Z2LX?p_~WESuc0DyJsWB~xLciy}*5X02Ia3}=9gfd`2 zGsr*$9bx@pl#q$|SFa0)004kUs6AjGU?Q}nLqr2JfB+Bx0on;iQ(2;p8ZbIbd6A5c zf}lg_xE8i3?wUyf+3c0c_ltNB(YGXqLB( zU>xvCa^v(w*`w7$<-jMG^aLDODHQ+(lO2qb_0#Yr3K5LyXuTYjvahIzVGEGXP^y#S z#40nt*8kBb83rPA8{8nA0un49d?pNm z7=XynfWQN)0p4*qyjT?yshNh1F^bC~ng0ayzW4}YA`TGIq6jc7tCt5;!4TK6&HwiU zaM(%09Uy!QT4+ws{@?%`f*4EQ0U>Oj))k7tQ~$USphvV|O^GrYglvqk_l9843EmDY z!S+d{G{?XI5C;l{1kCx9&kH#*0u#~eh5+EI7B6W~%Eb=k01Iw204M;6^8o>;7LgSs zv{*8L6-tzrJNm{~nrH#V5&yg&RV*ApgQx;f!_ou`{H#bLTw(j+hV%E& P-|rvC(euJN_yW;@tmW6z diff --git a/samples/h264SampleFrames/frame-0864.h264 b/samples/h264SampleFrames/frame-0864.h264 index 50129606e3caa9aeaa6c18fe74f7229592f769e4..136dfa21e99da89bc1131047791dce339cee769b 100644 GIT binary patch literal 1349 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 L2!}tP&%hCki)44$ literal 1124 zcmV-q1e^N+0003AFaQ7nL7G4syakUK6hJZ1g+LlhTNuSE8$-Zw1SVkbra~G78>Ilj z)P;kR{$NwUhChuSykLBQ3;+QEFaRJ6$XZ#akecH&qxt?A00;m900<#~i5ju_{S-j{ z58MDO##6<@uW6c9&jAG_Q3SSh>SPWeTu(~`AbUg5`2+>mXB-4jfctjWgm}A0CQ|55EB=zgz3>SW038kkkA?ci)6B-rC7<`PPCkGp%0u~B?WyJfzzo3Q8SIm`Ff3H&p8$UW94VxL z-C)K%(h zkOr>+crX9}0YLyciKGFmz#EJJ00BV&6+&qMYVak%ga#2|4gejlP1{yr>LfTtb~03H%{BN1!XuAl_8LQ*~- zes$IV;BDZnfCgUTw-+;FU@c})@;_pldqM!Nwr2(zl4Sev3bNT%I0T{rVz2C_I diff --git a/samples/h264SampleFrames/frame-0866.h264 b/samples/h264SampleFrames/frame-0866.h264 index 961428214de5448fc61a6454f49f1309388b4267..15e1cafca74e3e9f9a3f7c8fa43c7ff078fceb1e 100644 GIT binary patch literal 1805 zcmV+o2lDs;0003AFaQ7nL7U(jyaj+xC;$)u1Ok8#3p8lavu4ejG-%ngU;n@dk-z{z zS<3(c0MI@R4McH&)#1B%9%NK^EUcmM$am;iGGVk1`bJ%13{{lEYq1s{j5(50M)sis0g@BPMM za`!L+ghr(eL;re#13GsHB*&vILxUAOBs)zI#MV*LOJ!s*1_5QKWW;<<(Re=;r?>L` zghK^61PuHE13dwKeg>{i4-;$u@O%I@WZ4n5FJ1sJ1u0@3*-afYr4VliZkWG+9|2%g zXq|5C)-nEI2fFM|-~a;90Y;t>O7(<&FN%ewi3p6~XNA*WOPw?ZZh&Zd+nfKG1K0|L z61qQ12}0QqKmZT}0LWHbLf4GW954U3gcmKKDBo3mfFJ+}2L{fV6;cs*gp?UV7XTn& z46@?u)|M3DRtWw82v86?F`#bisS;kKNuvOcD*;V709uWJ!mC87<3Ib=hb&+K5Ci}w zk-W-%sRarE1^{hif)4Za0YRt$WM!-#f0MF=iOdFZTCs+Zem0$nt$WBxhT$Uxk!_yLnr14Ew%qRQr2+gGbm(C&)Jj5CI zrbfbihhnk^fM8#WgtlX?08j(~`7|!Uu~a-NsF{ouupYE@Ri$cQk6=)eIA_dfDCzQBe)hF#2k-y{ z0e}vH;Lo~WY$Id01Cc}&{RV~toPbe%5eZczXfePglz>?sR%icu_24J3(hvonz)QnK zaHk@1y=OB*5f{#5o&Z76CJ>QOhonIsM@QDK00D$cgP9*|Jqhdp9dZMw|AP;Ngb|FU zLBX7ql>e>l%tCGH40GH;uZ%IFNzaDJGOD3}zY_o>fI7c`;2;=N591}Q91dUrAdCP4 z3`x)c5K;hoKL1nz0sxUV00s;iCV{b2p!kpiji3wy!L-nPH(kMjG2n(lKMc?S1Ox5r zzyL4|f}*@vK}^{WWJF5?iudeC5ZJW}5cL#zmXiPX1HcqjU{F>_@zR2`R{#JY90ne? z_#{_)B>b90cisRSIIS>9LY#JiY)M%L01gJA2o((x4g2QUY-lz8U<_UWGM41Rie)9f z-~LHhs$3bnilFIaxV)TUbw!7_j?-@vpa)%T154wwPZ1bD8QSTucs zM~7lmI-Uf)} zRPo%xwNL;0hCg-R|L^^_A~FP$I6GeWm8CO3K7&UpUW!it^ner|t^k2mtH z%sUmWQ^kl5$^==0V38K7ta-BiZ~b^1`qsbL3WS-;D3ANo-~eG#6NtYz{#_4z5%Pi8;k$|0YLy2 zLT`X-@Fj`yJPFGJ02WLTL4XhWSaghi-~c&K9{fdY3e!L6UfMDbzqyyez#8a*0Knm9 z3p6_lBptwR0g#jc=m)NYVxAioThiDpr0T%!RL^;4F2){uEWf(v8e_Ra{3j|yRD zK~SXIYyIL@d=&$;OGKL+$FED4IPpoQzw6G{iXCIfsrCGlnKcP v1n7d+ptBDK2Iv=wX!MVd_23Vt*P$PiP(9gc2FlxOC4=wDfJO>8XfOn8e!T?8 literal 1448 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 akAXlU>j)eB3DQWElCt{%I-kZ8@DD7iD#e!o literal 877 zcmV-z1Csmz0003AFaQ7nL7IRXyakisNiaeI8!gG!YykiS?gEn7LBibf52Qw41|ow& z!QiYH1qKiR8(V0KWBC_=KvRK9=6tbo7)kek+yIL~$**8xL#hbYoB!MnxBv(z2$X;f zhv&`}X@8IXzyLD<0Dw41$M`K38{{R=XEb~s5d$D`!6KLUI3!yGIFUb5o`3`fKBh&1 zS8U5`4Nob41U4}k7gvC|4J;y{iY8A0HvjSR6wcMk`DJ0R`{?5QqQ)2(SR6 zW;u3X7nlVR=sAB3G)UD1dAtd{hvQ&i6kpKZ1R(?S0kDX2=Wzf3 z@qigX1A=<0vpym%(+^+20}N1>*HOZOQw00`Ug87*1Oc!B2mpb@<%GENrSX7VARfX% zXAl<|;0ytPVD%8(GJyrRCso~00;mIM8yyS{4EXt?**tB z5H*V(X-s&cmOXe!D9S{SV0etTf@NIzFg9Qo_+`OGFV4av%28v+5C(5H-eJ6*26 z@ecq1fS{y{A|^@!EzTta;0b^TK&FT!;^)n#NNE!FsXPoB&I>LNkW?D0GL?&`N&Wx~ z1Q3a}XgJxpKttZ-Gl||HfD{Qo-~!0y$W%fJ;2{Nx-T**2@`6ddAt6jJOyq(@eehgz zunieDo;-!Cj;qXC9YKHqKuH(J$K8gofOBJ90|7HYDBu-mYBA%es2qUJzzMnl00BV& zZYH1xuK;*30003&06B@M0jt0pi~s-uK>!s(Y5;2R6G!v;_!D4A0=b1ik?arhP$rx9 znL}d#I~*$lZ`Q*}w*>stWf;KNS*#D(2pNdRrGGzI)k@z${Co^kmd3A^BBOccz@SwS zbD_ZrzSoWdue-j~hU5d%1BvnDC^3^JCVGIN1e++b8#}?dOpPjPd-GZWG{4o#C`7?s zjmH0{0qP7PB?GpAf+xfVFSR9n!3Plu>gEy>3@PV|X8rFt3ZNmWECzMOh+AIv{qei6 zz?+nV!5-OG&O%qLvXT4y$~ydDKpeS(u|^?(SA=`_0#bShisLi{H+4Mk+ne>D=j|UN zKHgRfC;g7@2=|Bp#n^jHK(9OlR8nJrW#f6~Z2zNxvy)_P{e^KBO}1#-HS5u5hk$ut DMyhXz diff --git a/samples/h264SampleFrames/frame-0868.h264 b/samples/h264SampleFrames/frame-0868.h264 index 991914ee83bd7eb9101660c36bc184f52ae97950..e09ae0e2642eb84fb131343c0d769a86848e51e6 100644 GIT binary patch literal 1350 zcmV-M1-beF0003AFaQ7nL7E^Myakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zA*n@2paTaP>M|qTtD9B+D?B3E62|~I0}_wGMB|8JvR?B7h5c1|M=5+45JLis2OyMW z0!6Y+cxaY%cwn$-wt~z5(149o^G`hpU{ZaffpRnBuN#k6zpwxh11ul_2m%C$?3!Nj z*qR>$3gbmGnPR9oCV@I{wEzHspgual0>}DH+yTLO1}*<`2M!Pia*@@*9sqeXDsW-w z0RyB37s^i50q?;0LjZc;xB>uz!IEZ9Z>*a!NthgihyMU2zyPKIN78kGT<8J>Wnnt&9K!1W0fI5Do)DBl-%3YEF0vMT8e?jF9Qjl9U~Q0E)-> z0{{mUB~z)xw^&!+%tM!LU;yC47%#Rya&Y z_C0T4oCnURs&FsDZ2m;|9Ajk0Yunea`+|~Qc zPt1%mItt(dfJZtm2$}E8kkVRuz2*6soX(>+5cM@k4}(L2Py`4T4V4sw zKn@gIAtbwAq%fulUtk532gTow_J>Vq45IvBFC;#a5Uc|TGfB_HT z40L>AhKTl?%*Pl2(cl0G3y2|MjD+fJda~;}cOMD?b00BV& zZYGEZuK;*30003&06B@G0jt0pi~s-uK>!s(Xn<<)9WMeP6ijR-aBskXEUWcKg*sC{ z|L`RNR9K@#74p{Dt{7b=jSxTfR5o(}0x~@C_mFgV0lDHeM{j^kPYf(nDA3K3{?o!a z_!CRuPy)*!fwzG21b#djT5J~=lK=Xchpzts#IjL)FaO{ER2H`4!Q_yl!Osf7 znqQ3NIM9GlLjW@h2MwT*V7*VlQ?sjPqxQV+1>LUiw6Y77q22(kOtNhQBmTHOdD|?< zYv+Y>_>u?S^xk5 literal 1159 zcmV;21bF)Z0003AFaQ7nL7Jc%yakiQfp}0-00;;eCNny;$`A|n(LJ6a_yK}}qi*Sk zm3H8YR)S_=0aq}Tg2Ec7D6j#w&d|3Or4VGaDo%Br9+jIxBZy0(pNxLB)cRPylQtKZI>n zbo>HvP*%IgrdmA_o7d72d@#ArOHFmPuvo{eL!bJ;+{{azg&}#*R|H~!5Yvbj61Yue zLVX|nHW>IIaSb{wA-zI&N45KfbcuWti4TOqkRuQo8Sn-G0s!uy7@=ljXh>Q?Z5D$U z7;*)5orG&()qmdrfexq`K#;PnkP|lYI1aMFiX_<}!h8mBCLSr`W}-F`PjFpB-~a>x zP67yB6+u(&i|q!XUxIBEK;C*iWU~I_ zzyJ^l1){)lF%(Ol_R9FJ_lO1@00aS)!JygE_#2>vrDR{)004j=-~<3*9&#_4ssXFO8;k$|0YLy2 zLTZ3&@EtD#AQVh&Y&1X~PyT4))UeP00#Fr2ibxgmz^f)eAU|0&LI1K)?l1rl05Upq z-(eU4U^g^IsOj#&FuX9aRHMT(|Ms2{&%l~r0)Q4-1P#XpI0Iwl_5eh6vf zo+(4??`gjLq6may~EXriwVuL8JfCG@NooKM(&)-koz4xBO0t62mzvpNTuDm7@ z1yOPlW-`k;M-E>Ii^PqXAUgnGu8;lC+xxgeop%TR&>CA#6B9{K6#RI~5*b;a-+UaR zNMEOaf4_j_6#o_vWQQ334tQ1s()?#B#)JZdzyM4}fx~IYFnX^APQ|ZL7d4&26F&Q2 zN0G-V!v}%7r=;2jNB@t7uQ`@5_^+N7%kl^dhzN-Y4hnDrBi~ni<3Ixuz!(^>dv8y)!e87XAIUp(wP;2>! zGlybPq6`C`8zs;k0M-qEr)Dz&VQ!Ut{v%fOo?t3*n>-4^Js@#aR&WpKNV!GA+{#)8 ZwZTT!e$YN7LmN;xvIHQ4oc0gk8E76A*TDb) diff --git a/samples/h264SampleFrames/frame-0869.h264 b/samples/h264SampleFrames/frame-0869.h264 index 5e819e0715effc95cb2aa1e63e72428f3ef93210..ae6177e78541236def604582600b9cdb8b14f77c 100644 GIT binary patch literal 1299 zcmV+u1?>6&0003AFaQ7nL7G4syaj>3{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIlcqH0RR9%6aWkrGHQS)0UYKI28bV8`iKAo1SX&z!o0VG zu6IqtyELY6_yDvJbs%a_7j(nNtJnfUw1WzG_j;jbAAOGoOc2lkJz6!WSRy^!R`UR; z00;n|zF+~*Dx6maMqaClCz;I8kYEB3b8cD-B2}>`-~J5101yWN0RjL35H|o(Gk|~! zcmU-Du>R`p3&*AN+D1SCARtkFrpb;wr!V1k=K~y{-1P5DEYSBLEBx z6`m^W_nRy@|AQ+VdiO)~c#og}2nB!)8KFN*W}{-|B4s~X2}EjBj}dl0 zrvG5~6-h}~{r~d70U|LK5LIeil`SFqNC=FE0ss#HSL!$i<#525@jSrIgivz-%n)!6 z{-Akg(4qm>zkmS*;CBR93EqpZX9u16nV4>;dsY0rS^xn9Lkn&sumqKK&_n;h_zd9k zHWXHG9G_+=m_Gn87)s_0kQYgR4Am$@*XrU1O-{J03^c6fNdawFa6iH#{I?htuGS*CKrGJm_2bpDV4;7q#1{R z0%T(&q0A6pZK6&5jD%KG9SR~=q{FcRO~U{OV$ifT>Kyjmehe@KI{*LyK>%(hkOr>+ zcrX9}0YLyciKGFmz#EJJ00BV&6+&qMYVaK=^YAAZ{{ny%Ogms80Q}44 z08t2tz)0$E!k%dRI0JTKD^kvA$xM7lxq*@ShaK;a{0cx(7mf2D@>FnNUISlV2c1s@ z1tz-8ScjjtNjxtCX@9H=KvfhJ0FA59`RVr$@C4U`Sf~<#jUr9n(|A-F*o;7NqG!G) z75@|x2gzgBE`Ra^nB96?dow?;b+DfVGjNB+*^3b3iRlIa5M7sAlfr%k(*6YiDd127 zn4q99v>3TDWj$AnR^-tBz(c3s{%^ z#fS*Q$bO)>UN2E+ieJ|NJ(v0wrx5@4S<})&M&GYMB%2}(KV=9ljuiXKlHAaX+4|=U JJn*l8WuUwMCwBk< literal 1184 zcmV;R1Yi3A0003AFaQ7nL7KoCyaj>3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxL?*bVTf`9;>X1lNe$Q{Z7P#W+z04sn9P#PJ;z`G@sGCoQ$00amC z0Ru1VDzJeo&I)ciB36VO034Vv2iDH%gibC?AOP`*4M&g+I5|Bg7%aU0^8zImE;y{eX^h?v zfzUSE$w1&#u$(CyKl~UX|As4GZxq3ORR;@k$a49nj10t#*^@jC^WJ^?!FjMxLc35z z`+<&)1;nj7jnoNdt6?>PeFZ2g>_0dVfJTYhnemVRP6Kw4vi6+)_uv4|VLX>E-jPo~ z?(~2FKrjSlO6V7P*64Y0q5s#x(H>!8$4mvxkdcWLzyrcoDhxyP}R&$OwImtwzF0DuT$r4xhSrxfP2S4_q&_}BMYvfiKj zgK~ji;@6({`dJ5p0AZ5chyjr$f#RP%bBT2@e z_Fz*Qx~05~Yv!SX6mUaA@>uTj+#vT5*V1$X1=%7xPYL)FOZ>c|fJ7ZxbE&Y#09f)FXCiBKH0K;fJ0R@C>x=q6#KvHT&ybKY7S0r@FFFH_2pVbohA%^E*r40TFih|3fQ>PYz zF_r=jn8H=WPIDUr?63l03~+@ATdv`<={29Y00MvtDK^qms)+UKYQ4bA^#@8aoB%}P z5&z!V004jiJ_ZAx6g23lxPa~DykHDSz#*`5%V0}QLRcOE7&wGXCXlVJO2Kjbo)9Sm zL4iEYC};4|paEO}1OXKg;06dR)_k_0!}w^R0cy4bfYENzr!^RIFbs{&JwPS-7y!`y z)q|EW0D&}(*CF?S5LyJ@P}9drHIk|o?SKYIQQ5MNZ`}X@e(V4cFm3!S3Z1-0zyLr) zbbuTH@RsqSR7Yk)a4a=qAx|j$^sen!K^qaODgKmlr!mvPnSbAsvDiL8?B4YIn zjz4Le(FH%?v*Qy0cCU^G36dwzf|guCkoArXH_JNt1;6|sfB+yg0fS=K&>la{V;{wk zo7TU~lokhN?)sB~;0h|RC@Um*=|NejKL8D!R+uCqPCG!hB&@6fi@*j_+?Y{Jq_^4u zr~(COhJ<|>VhhP8z0YLz6CYT1V0C+F}00BV&IfcDtzGMF56+}zF#@SI}l;;$Or?N04fRw zFQ^h>xU~x~%f{{<>Limy)YOglxx@3hyVn@06=(v0jF9~K%rBJNMMTX zH0gVYDZz&6t#kkX-{7X-VXQlQ{qYfcbSy|nABW*9%fPUDN>9M>0SrqM17rj@#SY=uS Z@A{Kr9RUFyMGR5PLKa$o|2!Bt1s=eT67m25 literal 1049 zcmV+!1m^ny0003AFaQ7nL7Lziyakbe2!;3%#sruK9YKS903TogAQ=F0j^`xAFT3u4 z|8U0V_+S7a1O@;UQvq_eA&8!uDE?2nY@x^GWHEZ;|GM_s|76dcn-{g81X?7T5WSz)b>- zqRdtJCjbEep>}+*Y$3UmUV$(_0I%jHafHaqRp7jlEt}pUw|$M@#?~61o)xYu@Q;RsaG4fEI2E2>XBl5E=na zu*hV7J`9l`yLJBN9#D`2;=GW66dtjE{@@q@JAw?j&a1LP`sOU}VM-TGL6Azqj^LL7 z)Bys7rA1mS40I=>54;07Knxg`TQQ_si*C*WmmmOjNB{x>#RFKm0Ay5`kNr0097|04DpGusA;A=DbRU_Xinv+gsl+oZ=mbF!)V?IUoR46be(olMT|+MOg-nB{z7LJFfGp&&NUME*6@E^a^dwqKp+9l6re~M&gjV*OmSD= zydAj3OmHZP{oqY6^6`SOuUG~NB^JN>ra%BE002OG2ml&~bqQ$DROSn^VpE(Ndx#Qo zmi`lZ^?LW;#WBxia^YixL8yqmIu;}(4%Ti7<<;S0%E|a103iutV59&cJ~fyK1&<4p z!0zkbM4}QlkrQYWAT~M%`ak~M7!!-<5>YM$@Fx%04}a{g!(spR!C<`Vj?_N!-Vp7v zQ0@|MP>`n T0tR#xIc6nAr91!5u;3JUR;Rq# diff --git a/samples/h264SampleFrames/frame-0871.h264 b/samples/h264SampleFrames/frame-0871.h264 index 40d2b223478cfa302f75650ec1347f80c9350797..790d5a6771f39aa1c0058dd03948bf98f30ef625 100644 GIT binary patch literal 1781 zcmV3|AY{ZfC57f409JM8B#=b;Yq0%ffm~YusjM~ zZQ+~O>AT{kT}3EH01h}r0fNW-hoMpv{1EE$LaVczpKns+A-U1@5a8%rW6UZaK4({LpVTRa}^RQNDLHGa|uFwLWtLJe5 zRTvo>4t_uZ>KtH()kl@8H{DOD5Jyxnin!|%$b0|{ISF&^rFh7aDxdw}20#M{UU0!} zq%T{7r~a@300dl3mRJn56*o>!00|d>q8;@w>ig8R2t7`c^*UEk+Cu-}z#j@e!vF)R z-~$38M|n$xR!2Vo2LXaI*8aWW)_vB$?}I1+&FtYJ_Q)ulv$QiJ8rVdfE}(901doG} zOGME$kN(~OATUnJ!)$IYn>;4XC;|uo=-LAgfSq(g_-wPL*MJP7ZZu0}u8QG7oMND0 zC;*@b1d;z*G|0lnHzEJ-7lh|IsRcY<*JFkOBmit|L>hqdx98jel|U2)k%lx)mqP`c ze{cf;9MIpeLt0=Ie8J!VhrHA&;b;Z`-{Alh5|@)aFA%(HCxz?E;otxW0EiN|b>jnh ztX&FGFTm~dCPRp*vxkeRCRK?uSxp7?_h4cpr9Ze?tMm!nINPnR&1dSY{A!{5z;wC9wxv5Kr>wc zH~}FoV?>~jRv6V~fxx^sKrC19OjC3X1OP}pI06C!xO?k-@4N+|04SRP1RNyt1_TU&@gNl10RXT?6deiF z@L)pfTKb-sy^eM~SDu{onIVN6!-+TmARtGi@k%??8byARXfRLkP80x+PS_t7t7)72 zqOXC7Y2uUPt4=vlr+@wc1Q5#N3USJ;aSH4VJjjT)y2E`la|{ry)5n$_NtdM#-|h9a zBYFS>0nY0UVpVat_}6a;1X2M7Xz7YMq(eIuh5(sC0bJAxhx4n9FcCiT2M#dpQaZaI z+Wp`v5f(pX_brpmnXpZ@roI2a_lyCBU$72;Sg0I@;s5`5b|f)&ZkL#g?=STz6lBH4TIGhKv1?B;85GZ01yuX6(W$}o7xh2*~F&l_uBo? z17C;+5>cC=UCbalmlXiPJM)YF0f3+c5ED3WM*_C+w^Cyt|JQ8C>D*MN_&=R4zuSn6 zfhiaRIIW3FerM;<(T%Ul%K!9$7<#A-HHl80XH2bNc4j#V&Ot|F2W13VM#F}!OK#W; z&HbmZJb;hv3XL;RL=pd2fEe{5E3fts@whwXWD^wj2m6IL3;->X9UAwP_3U>407I|< z00BV&ZYH1xuK;*30003&06B@M0jt0pi~s-uK>!s(Y5;2R3_HNI1d{}ymvbNj^ly;{ zA$d;frfvJ~uq^>3SqHou$4~GC8GO<2%nATeD4Yq$58yhYMBTy<_s<^!X?zO+N93Ww zXd`3<{;&ZXe=Fzuoo7!7oc>;qfe0|-9ut&{NEw{~DBunXNqj^v#28>(Bv5Or1Lbx% z6&OW7+BoNF8;^Vub=vgDe;er5p#zCM=z)MZZ{wa9fi%AtVhor-ECGMxLO7noJ${ud zT)L@qnSu@-B3$TjhycR% z{J*uY!3wHT(Es6IX7Jzw?(XNKf7NLyu9}bkZlWc&kRlB4bR6)!39rds^2T=i4#@w+ X4yVBW)eeuH(nY?&)xO{2W5WUQ;-C)W literal 1396 zcmV-)1&jIs0003AFaQ7nL7M;?yaj+y00cH>cV>5HcXt2y0QLZ6I0P&p?g$w<`L4n$ z=o2vkDhmJufCMoh_iZdwz#jM+nZySL5l0K%Z(kYek@vO?2Wr#fe>hJ>3U~krup9z< z;c&{P&6WZ|Ug?)AvC3A_zyi^{N!Cu8fBL-z9K+S} zkz7mu_ZDu#03Zqt(Kh7S-?Y)EqK$ zrhyUyd}1oi*MYIX3*4R+*9vS$r0@_xQIUmMHwt_p01yTV{CSm@9Ux8OkH7(87<+j&1n4LT3Mq*Ssm4)Rmq0B}NF+`e+U9)&(3{X^KJyoC2j?;hu5DPFU08wh?|3q|* z3<^$T006K80}Ccl5)90O&}k*FT4BN1IVpPVeKvRO0rnM27sfhhyD$BLfH1=fjjD|B zc((#2DL6n0z!*1%#-*|i{TM%f&;SGhK|v`pC*~CBz(c!_lsu}}8{s?76DCQU<$SL6eNB{&0 z%xWn-1K5gWL^fb-;Ega%5?u!+@G*si;c)?RkOhrJ|MZ@M2Hka#55Np5NoH|y3Km_e z#94U6&Uc0r7Tx7|5kmk4R?sjaA?SwY!?8z=?3c{}2vds4M?T9e-`#0B{A(o{e9?*Pv**_8{{{5$*z3;{Pl0003&0B$D02Co2kFaQ7nK>#_4umP*U8;k$| z0YLy2LTmtP@C-Y^v;>m`p)Y|T0dnu^AkDsh9~yz;b_Jj$iv8o2 z2mbwtry>0yVG{rpZ~;MxCGiliFN!dyEsqNqg&GS~IbH&BRA8O+@$-(nA&8wo`;J^Yh6CbW C{aCL6 diff --git a/samples/h264SampleFrames/frame-0872.h264 b/samples/h264SampleFrames/frame-0872.h264 index 869ed7c5fee56ff1bf4db9ffe1fdfb54af7afbc8..478e3ca7efcd7020a91333f5857e02277f10aef2 100644 GIT binary patch delta 1038 zcmV+p1o8Wm2$BeY000012`~Tv0YRFe8oULQ!3a6c_?t6K1BEyMAOHvffH0&!otq!* zm^8peD8FU^0Dw>jJTh1SkU%guqYM?bT=5!w*&x6Hh3dD~80P`t5D4~v@qTAGh-%MQh8Yf2>;F?w zAoU_k)QMe3(sCX(PM%;iiZlQ$(tyf51imb3p(%+6zyL-hQk9I^O6@ZCfEQP*qUC4*(7af%%|7s7aTY z0^l5A(fQMVNrNJ>JX;&glQB2SJB8@RuA9x{%6w+QKVM0QkC|Ce@ zzyOE^1Ko_f0)i0nJ3sh8_?u>I!&h|-V>kf3We7m4kZ6-l8?*p`Lj#Opz%KBT!-ix1 zZ1jM>y|4I~08#)cv;lxfHlh!PD>yj~5C8}xfB=JkA7B6oDS$ukybgB*009Cp01zGQ zwg5gFp8f!4I8YikYW?g0olLGF2|&Pw)YbJR67X;YB0$y}&~qd;_?Qwz|J&9bZ~zb# zyhi~?a1p-$o5~+o;=BjI7)-=u5rRvhjtHml7;?iwG^EJUm;>y_$a8|&(%_&0VV}4# z0YY9(`gArTCNN*#06@cx6y+2=@kX(vwc-2uf>#Ix9u8?P0wks6#Gu1~A=m%_0YLz6 zCa4Cl0C+F}00BV&If<$PtH2wK0003&02M-NlTiW{e-EcTjSxCV|3Cy{oY+Vy`&0@f zvRf&EM0(8&?KSaAV&$T)n5ze+hVWW{dy?09XJ71*B78BVV8&4sCkE zQH3-BcA@q~KF3_CNOtqWp@B6^kRS%+ElLw38bH_U0{MN2g)hHoO=s)g0Q8pqQuTlP z)V{Dr5=UVIdYBj=%x5+mf4Vzy>xQB;*2^|NlBQMr6Y=hGpz!s|YjK2VZ^f$M4>XNSY~M Iz7OC&U?Bmq?f?J) literal 1043 zcmV+u1nm0&0003AFaQ7nL7N~NyakisNeBdnrEA|XJf=#Y0S@$B$^d`~R2-GU3KG{m z>JH1`#87BBJQafApvV9=nVJ^e)f?~x2M~FC*VsB!N)adi@B%LamtNpOfjyvSYR&_v z009NTl8^xCF%`O1tdAf2fB-Q77EB`cLcKRp1K{|$Baj?0FltAG;>M}?kv(4f zhyV}_E)jGNki9ds5{asRco0k>SP7{>5dhlKia5@C@Bx$n1OX$EpwXBgLm75#OaK7} z@Bk2`009bc03ex!UE>KcK`k5{9}F}|O9##1PcP_h2xNc*U|<0qv`7WYA*&q24~ziH z02~+9RhjePbxbQ=_!vTjvdT>o3799>;`b2106-D|0DuS-K3GeCI$szC!U60g3d9A* z_yYhS3Lc^y29TkP+#Wy4Z~$rs1X{o7IyxlKY>y7JSO6dZcR@fm!jPN&_kz?62pGkF zw5mK&J083vlw~5uv^+*%!9uP47#lDPd^X^sm*-&-?I^M13jhULP^XS~J58=U@eTk0 zfS{!eA}US+Ev_Wv;0b^TK&FZ$;^)q$NNFO~={yV>&I>9JkXRe5F_jBvN&Wx^0t!UR zbO<+KhPaDhD7la^l~>6LbIo0YLz6 zCddY_0C+F}00BV&If=3XtH2wK0003&02M-PfNJmzIsE>91k(NmfFR&t0yv3~vI!7qUf|{T3VcKWMRcv{JNO74LPgO>cya}F zxw3;$+#vRsiR)COmoIt}00ICuh5!mo4cEvGe2v}!gBow|22<*0K*epoVpChBys`rOk4#Kt5-#jaq_+Jn#P)pp|G#hj)Gw%(4tZ2Z76$N=A*~7{K_yA>G zd;)%cfWAZ1D&uj7J^TPUrDN>Q?^D-OkJw!Bm|#s(xw*DB z2nRR4yIxcGdY9G+!U*gjPl2(XQgjoY^ePe@x+05`@Bxd0KDUPqOt$~O4@c~h_kj2( z*@BZxUrqDn_@M_9Om+YblWs{i(qIHMK1oakIRAX;)QrVLF{Wkv8G6DEzXyL`z54t2 NqNG|WU%n6EK44``vMK-o diff --git a/samples/h264SampleFrames/frame-0873.h264 b/samples/h264SampleFrames/frame-0873.h264 index d2b206df1cb06830e8cafa14ac8efe1cbdb92ea5..17051733db526b607bd802219e4dc971432213ab 100644 GIT binary patch literal 1251 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 literal 1576 zcmV+@2G{uj0003AFaQ7nL7QM2yaj@YA%zIw1J#eQBbAJRArGJ`yvjhn)(I!3`_=Ho zc-B9sPAc%8iIMd$;w&masKI~$fpurx!X|!xS;G&-6@5sqJA{7nA-JgGQimnJVHgM` zUr!6Fs$Hl5`CxjUVQAB<4)1_i#~5|gHL!;-XhPH2<$cINw5z-N#`t(FbI4);y15V< zA{h%XGFGaN0;4^tNHmD+*;tp5`#_irdjf4(S5=4KXaEM_-qXPrsZYd!*KK!@;Zi)e z{_YH+n)Q|t4m4AHw`FYv9^r&Am7qpqkNy1sL5@u9?8EqndY9wGM2`d@kY_ZfBbtwY zfJ^{!)r1Hufv9p(63}h10AdjQ8(cre5jeRlfD0Ia)OZ$ba(YlOTRmR!fQe3Vjw-L- zV?T)jb!8`@E($budr@kaoCAaa0;y{t0l`(&JEE^fVb{i07(!{ZC@Bv+2Eihb5+I16p#V?=d>|~5 z;{@ga>p)H{iGTNk05i}YB)d8#fS)&J1c&xphX6wMiZ(bY`B#ZK#^x0q7htAPUUyx@ z*6#oSKp2z&1OPw@29w3tMFj%0V29Vi9|~87fzsy|7xNVx`~Sa-~Pn1`Uhc@7;xCn zf^+~AZ>%kJ6|pQLGLyg70L2F1aTD>u8i!7FgTVwS zbIKrKLxm5%V97vXzyZcc4N`a-*rDddrzIb4%r_5IS!T7j?+t*&1=b5<;s-ZQ zH2jOMRtPbiG=QkBLdqe8ivj!u1~}jW_$qt@vL${AgepHI02GWP)B!RYU(3b-Ft8s$ z28rmiO+gw;k#c}9Kmb5Fq(A|)jV`npI5XcMsFR(Wn42j7w*UYj00aL#Zfp2 zM8JKx7;aNQQg{CX1uved`^EqQ0zd*VC>(Tu>J+R(I_rdB1l<4t0YLz6CfEkA0C+F} z00BV&If=FbtH2wK0003&02M-QfNJm#vHbiAurvV-#zTk^y71-4f%_Oy7OSg!>RpT&rTGe9ybioY32_2aY>0sdst}~SGO{q2Iq-AB zuqK!7JkjAm?qX+xhX=<+*Z}=ptcFM3v)Vx6Qi-9!0k{xc)P8mzgsvf4$LH*Dl16cx zUw?N1xLN8iR02xRR)7Uzt(hq|;8QiW!0%vW4*Ar9(`6nU$~S@mG;Bbh;(hvNA=)Z_ a?f?7V`}gk*KTK?Zp4^B;gW}HdzX4S)1+$C* diff --git a/samples/h264SampleFrames/frame-0875.h264 b/samples/h264SampleFrames/frame-0875.h264 index 17632b8cd2db5bde34807519236137ee5a36f643..2743e1f9267d6c228585c24fc2017a4fa7a885fa 100644 GIT binary patch literal 1280 zcmV+b1^@a00003AFaQ7nL7M;?yakUG6wbO0foFuj!?=(}E5Jy)&d+QC0098-3JK6l zuMGy4?!J=d31R2}9$)|<9TU(15Df%`kDx0xBHjiF;VhCmWT&4fBv0CDd=SHPuu_I_ z6ecbe)~WLgLG$!51RwB}aZB^Mg5m&70ge!(*88}0s!nI_005u@icPf?>S8>4ny+|e z`h%qzP~ZZm5RbMH42gjP$Qc@RP+&lxT|34AVnzd-2CS|Gbkrq*-~oe(M8c^G*5s@f z2qe&fNWYLcKjMoxKxH!oTLZkk@f0X#4=0BrTFb;!LWW@ScycA9@)9;x-WVB!^X=_H zz(zI6fCGF3>-Y)^2_=uyLN8zbU?3;XgfP4`Pyn@C0l;XtXw#aEIT!{;=AM8x`4|Au z{ndk(FaUuxjnyIdfFSeA0Rx9$#=xoD#B2Zr1UEW z%u$ly#?Vj;pkf11&wv3@)E)?-P?Eevgbs^ldkBODsl6>e`|kh%Ku3TO&;@XX$L{D` zt%dpf8;1Y@K&mDn1DO$f`&a}Dm7at|sTzCxKnNHVhL!VviZjkE-v9tW7)AOz_TeZX z@%G?Dg2-M6LXqoT*q;hskc=WY!w^7^D5n8|hJ*7U!P)poaYLfDCR~+)@E36t|9)Tu zvY;Ie9aYl)m~5&LETMwv6%t6iup@v2e@XyQI2vy%v68?$GG-tE5F`Kr0qjn|0U+Ve z0&$oMhzaoFub?0RpkV~!g*X*MJ@FFEY3W6)b@^u;_ZoF@v4S)fR<_Zm+{Dv+;F?b^T00Rn@k^~p5KY{8~EwD_W3wQ7> zDK&f__`m?^fFFR56VoaNk1#B|Z2UDVt?+*pKmPbY0W=^1g&Y={Q>BNxVZadV0003& z0B$D02Co2kFaQ7nK>#_4umP*U8;k$|0YLy2LTmtP@B~O-@GJr_Far@`DsTXF9=EwL zT5&x<0((<5N2|bV9rOi7I10i+SL)zR%OU(?6o5mpa`+qomInYOlqf7DE)A$6r6~5F zeFH|w07_;3pU?0fWGe;u!S$gp{bVYu5%aPi^#&8$+N(am&<;v}fHejx>(0W~E^as+ z@vtVs0Wl#UBowj#@o`i`QegMoF zb<`e+4@Q6-urpeq0^LSYlBd{(tfv+KatXi|Cy3-f%0f8A qfD34k8X_;p_O%GFifM$1)P4WZ06RGrxUl+h-}()4r~Y~27z(I8$|F|* literal 1043 zcmV+u1nm0&0003AFaQ7nL7RXYyakUE6s9~51F#A{5L5zqhF`)VegrZ6Xioe9JAeRy zFdRcS%jQ4F6Yu>2SO5qB0e~Dr!4egt^ZFQp^dC3?S&XNNgvfE4P0s-Zc&8NU)9So= z10pd2|g977@Eo|zTnm~%x4z$ruc9O0e1dCX2J`Dg60dG*V4HCQn0RYiY-~bQ~G`PbAW-LLN+T_V#0sxL!gG2}-y9nP5 zJHRLa0sw(2HcTB6&gkOKhA<5l5$Rw>$p*u(ybu6}0s@|Yfs!H*OGBKX0|quuP&Q|P z047NP_Tb|*I4FClK z<^6#J3xx$h5XLajl>AxZ;RL?;Zb85RVB~-=C@$(n05$Lu3Ik(+j>R^h08lsu_-(iq z8~@gBjNzXZ&wtcuv1EhATT~T*h46|A*Nq{U;$CU06;@9&=i8;07eXKXLv9~jCgTmR02Un z?|fZa14n=WKn_QM0ZlDn0$0PJ+$QG5fII|29xbE`k5bnCz+eNZfMM{@7}|ZP;iR+v z_9;iu1<@#fD<8GIzzhJ&1PIS$owI>r$29l{@DaiqNDbBuWJ)Af5;=eXfD6z7fEWUg zYV5bsOT$O|zybh(t_vjTgfjNO<|Sm{3Az9P0YLz6Cg29I0C+F}00BV&If=LdtH2wK z0003&02M-R0BZ0ANMGwFCWy+MqFrjAPQm(_qTNGedFg z7TUjNQ|Gs1A1R5%+5#HKE=q8Sq5u0)W$N(H8Hq<%f`J-HH@Lot09y$!%DF9FyapKq zBE!tW<^R9J1|=rz;}tmlbxC4L0CG7Po~LGU763h@+KKc1D@5;|nofuQ->?U7_TjSx NoBwzmZ#m&u3aBv6u}A;_ diff --git a/samples/h264SampleFrames/frame-0876.h264 b/samples/h264SampleFrames/frame-0876.h264 index bd856a916946260582a55f61737b5effccf5710f..ee4eee25f842ebbbdf63762cc9b6a0e3897c9169 100644 GIT binary patch literal 6789 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 L7B%pPI?BHQWHZr{ literal 1818 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 literal 1025 zcmV+c1pfN~0003AFaQ7nL7TuDyajI*6gd%@q6RBK$fh(RqM%QhBWe;bd)JHz4GDWv zhS2{`00LrPuO9`80uvv|7&pL@E^vTuJ%DX)?EoYIT|<(dAkiA){%7>Q3`GWmgTYuX z3Jib)X|qC2*W_OSfzAXcn(8(#LkT+X01;?8HSP>3btC;P|LzA|00a~SN zr1%in#9(bm0dN{vM?n-!UI1&H0c(A*HhPyqNa0UfkR z4U|IFHUIyN0h9nJZ&OZY%z-p;r)B_#F$bP$0-hZtOOHhCA%FmY1ONvI3z9v*oR>c8 z54n6`7YGNikSh=u8PFI81BEEKQ342=sk7X7+yFiV45a(eR8;#xdORB4fCvCPrkn=w z@xS~0EkJ=nm#fZ{Mu{g|w}f{Y9U{~gc2A)KO?((OU^TFtA_`lXj11^RZy2xu=}#%5 zoD0)iE<8hk03aN3L0>*T0$Up2jX+WWLJmp8noQZ0-V{KsPu>Oy#|!s(ZvblW1W0}a=o|rPL?yBSJXl56BoF_1 z_yg^39Y6s8DG|Asx^shHt8|GM`b7RSJjWh@?*rf~87QC-fRXY0SO|ooJyY9zvsM58 znDK+mEU3Hh8Aj{>?aEqhxGiiKi!4g#6);8gzyrbHEAtD_Z~th2?LCJ4eg?o|5dAQA zXgx$&Edeioe-=}XNFFiC>=U4>W}|mM^b8ba*NU#^JPVPhUGM+@f9MdA5mZhUc0nQF z!=4j?G{40~;zEs0c-!V5I}`{}6v@w?733hGp^8{$dPO#&GN{12z!1PWL$slkT#BDK#sCE*HX^BQ zM57xT6nqO#KmZ^*01exq*B);SF=IZn?78x8x`xd#d`?NT_q9oqf>7V|xuGhy%n2ctq2Wk2W;$yqB8{mK9g0Hx3j@s{n)~tVfcutn)(L&od>kwf^&)&H zkhQi0G`|&?^9kVE0uHW+`E!>Ip?GVl61tDRrUaa`p0Gi!1; zgUI3RK%8mzy?^!A!&O0D!@LC$_s6O`a2G zpWyreWfO7YTP<`~2@PWuxLy;AwMrUjy{Z8~1pqjCAN|8jj4WevKmPC)01lvw!6huI zRPgxLIA9V$2FAoes1GZCed2%tH~=%t0Asvp7kp-ujsRc+nj7{BYfJ)Igm~Ud9K;gz6sz+C2yI+74C}3AH0%6?h;|v5( zv%r_ZF*pP=EN;y1TPv9}Yrp^y4=@m*E6xSYP=24#d?^Q>Fa{NVz&ZV5pmH~d|NUY^ z7iQ@>h`tZ}zz0|d;3H1iT?UROBme*e5n;tc@5I0WKoA@(n0JQ+oRy#_4qyekI8;k$|0YLy2LTLbM@C4%UKLZm4EFb_( zh|I`Ml&Z|Q2D-3Gi%Eh0T`%Aw0G1>{V$1+U-!+-*MkC|w`*dO1vHf6j007Jaa7geB zGV`_yF$KIDc?#t+7v0^J-)L0B^<4q_-^{Oe9~QZc zg_p|^uTe0NC)m|u%4=+J0=OyG_uy-MD;3v$F-3$(;Xtp%cu-UCkO6%11aqioyMW*a z>7=2D6^vs9*g5v}Hlt?4iPk%6-_ifec?X^s@FzS%Bpn-%wp`2XeJ}t`j1YuZYxDXe F40M9GVhI2M literal 1151 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 PLg0b@Q+%9--GlM)7%c5r literal 1063 zcmV+?1laok0003AFaQ7nL7D&>yag{oVx+xFlO7k%b9Vs4_|UKbAb=xO4LXDgWl#z* z15#+Ez(qE207?Or(c&O&0Ehn21_QT1!F>tfHQZT6qW|0mL)-v9fZfzb;m0y3{`BZJ z0PI{OpgbpYTW8eb82ea-91mqaTugG*zsv9tVlWVND*y%|4}<4s@TW^E=0F9oKnhC$ zap3uj;UanJ_n0Q9D1|#OT0*z{V9qIgZttSS^^?;q~3NA=|oA+kLXaEutv0D_%=5iGN0f;KC=88|#Ypkxv zCIA8e&3gvY#KH85UTg*dHX{pPz6_JF8O$>$gdSVS68&fxd`BUO>&2EP!ukZ)f*x=3 z01N?zU;x0r3K%x$h;t@B8uwi6yO7Q29H)Ye02JUfV3?(v@=?fz!f+%Q05WLM00<+h zUcdk#$N&NgH2@(FZ}q&11%x~R5C9AV1Wmc!_iktci-J-a1K1ScQb8^~21{|T z#sL9?%c5quXP};{uz(litFM3 zxHoWB`Q_SD+{Qd03?dnWfa$-H)fgHHfKBiKi~!Lnp(3(p&oHng5B@FYdmmL$`~VOJ zI{^5InYXP#R8)J9WWWFr3jhHCkORVUz=8e&1q^^QI<`^nOqlyP!(9MO5I9vDEZg=o zd?|453;|$3ML=`G*;baQH6WqD0&ai+00BV&ZYF>RuK;*30003&06B@E0jt0pi~s-u zK>!s(XaH*P1meKt2tfP@MTD>d8(Lp5Yc@hD_~nlPfB=9pz&4N#fDNIRY3{2m1_Y(S zbXjI26dl!}m}{(m#o~DQ6JU4*qJq!?S6H>BaliHfj|B%r>5@fH{m%f3bKxZ)-S9DH zfCB=W>2U&V9Da$}SDn}pVf-?^Jj28UT6*2>qSHx?;r;c0&=$D^pe#WZuGkX)I;+rY zO`taJ8Skfs;7u>_6)2#v6(ev{&`a9VGfVR?3<}oJeto&U&;tJ;33eN)fC1dSrA*3y_yD@@{+;RD+7emR z1OD2G%J07e0RucQ;7!g<0R5Q_a;h`W-TP9Z0ceZakA}Ik%eb&QGv7bsEvVN}Hs#D_ hg*oWblf~q_yWjk}5oH3nWmt4R3YU}1ID$T){Cpto(op~a diff --git a/samples/h264SampleFrames/frame-0880.h264 b/samples/h264SampleFrames/frame-0880.h264 index b9126445a8cac8504dc68fadcae4681e4a28239d..1acb98246c06cca7ac210a27abcf509ec04b9d16 100644 GIT binary patch literal 1115 zcmV-h1f=@_0003AFaQ7nL7IRXyahKwV%OC4olQz_|C3mAzymhh|CBWP_4#}d!*j4whJFOkkHkdj zgz@wJECfHrJs9cE^bOzx0L2uP7^hjX@1V8#015!-Jn{-zV3nC6k8p2w4xY+}03stl z|Gne@1WN-0nmiWa@gs!$(dGe~AOQ~mb~gv_fL;#(7%7bkMFY7JBMl92V)Wo}{YyZD z)QK-rC3PLXrUZiXa~5w5|JY;WCIA8fyDR{J0|L56gp@_dz)srI_#WJe0N~x#hb&+Q zA1K{7zVHZo3%sF*i@c@Cs86;4WQ84@D5m|;03EXc7$8-wDu^1qO@IJ^M!Ept2^h{l zk~yeYf5K0DxZrgn(9@ zsLh-or8O5gQ*gilKyo4gAycortOy7{th6F6U8lda0EP<1k@I`hMwIgS009646-b>` z*keW8{^0?DD9XUdI z;2!`0AP@u+mh@;NZ^(5jh_|)`K*teh5Jvr<`rG=~`I3Ub?7iPl!Qd1`;6Uvs)T|LJ z2jB*ZbA~()ztVwuK61b_pa2L6XDYx!dX3*`4}d}1bR*ANU6C-S*Nh?x^`N5^(SK2` z@B|qeHs${>m981(;jjS3VvYci|6a+cU`!i*fCf5J&`}w~wiulfdkHuXcd#dtTKGTn z01l7?@FS1uRDwoV5L4Os)zwGA|Gp3bBp?C^FnYxVlpg7a07I|<00BV&ZYH1xuK;*3 z0003&06B@M0jt0pi~s-uK>!s(Y5;2R1mb@`0%`+5kUR#(1-JkiET!1^#YgM>p}7aW zx3N5c4HPH8h}&RCVSvaVgQ6{f53%DXIH?rAz!!9}Z~Hi;{tO&EX+)&>N_-8HxC|

    !ufy6;-E$L02lxW10JYg zFlJ)k{_`^(0jMh#(n*EpDGWTsiXccrF#o^-s6(|paLzJqGDRN%4~N;p6+vV~JWltn zF}QkCMcRW>tQZY+!D4aRe}v!^03YTELFU;3Oa4GUPBTQQKRT|Ukn|wT3Zb8T&y;=t z_P|`dC?*0Z(!s(YyfKT2IE2LN7DcR diff --git a/samples/h264SampleFrames/frame-0968.h264 b/samples/h264SampleFrames/frame-0968.h264 index 66e44256539032446d9e92f8c4b4ab223e7f404b..c0ef55e89adf323a283158169f01e898976b86ea 100644 GIT binary patch literal 1823 zcmW-idpMMd9>;(0JMUaG3?>Z?-pMuWMv2K@I&U=O=S~v3c?oqC6ac4%TK}{>t5XPtJhZk;kKXL_&1E8_h6^bAB?mAJ zRzu#OtSpGJ5TX8&0xecl_y%ek2sIqq8q*ghRG&OsTRyOZ4izrw z*Zk2#(KZY6d;GyMoxRwW6|p&_l7;+uL3HZ--infaB|`6#A>}A}pjl?dIu4{=3iDZb zety`NrUfr0WELehR82LBeSiVC0h*Dos(%^;%$leq8Er{XYrTq>#eaBpY}H6^Pw~>u zKDFCan;i2vodO7owFHCpRA!y&I7;>5dAl7F^IkL9IKSa91Sx>nx0js;-_H4af(Mgi zks$KJSrb~-#`bHXxMqDlg7RY(y3#v=gL;ot^XDX3)107~L}j!HY+Fu2=YvnnNGaB- zCE@T9eoPL~e5%%Vi3d!YXsq*ft9$uYPcOL`9&62^D~Eq(7)Dw=V;h=Z+yL{P+YLQO z9eC{0X%^$K<#qRv7iux1;SF%59SYwkK$w>SgM4go#fSb=2Iv zJw0ki`gQwOg4Qff5Y(7_E z>guKp+W&5!?>{oN;ws>|$bG3JfANICS9g5^>i#=>t|t~6f5~6Q^}qw-MSMwX{KuGz zFrU)?@6M_>m0v9f2K9yrL>wcYLpkxj>LDr+HOC(gb_$K$R6#(_>>Ld?l6B0T`oE}d z4F+(XV}Py|rIWxZm3mi*-~|$V zAYdRk#b@u#;^#Z=K2b6fzfu)zjH45t1HKtHg&g8#01&Y#z0c$7+4q+i*?qp= zO3>oDnOi*77jJO6GZnO9K^`5N1VYyH9hnx5OFCcNeb+Tx*nZ`}zjeAiD4IfXHD<(Q z>gyKiaUQKSOX#N!v$@b+t`eb1R;z&aAg2hqONUzHK2-E8%lOY}tIP^smLw}?u?r9w zd9@nB?b1d!n5}D`k&bQkv{5b^ljWLFMMuGjeS)}=K8wUpcF)dLUMmszKB;QFI)$wv zT=;v(o5S-JL^);_8_l6bEZUq58SdhM2$7!o(H4D~y8A5ML0j013Xpsig_G3kRIy;8QKZ$)k_4n*X?{@|+8D8};? z9@fm%0M$dm_;xjgAA60;HF&!$*fM5`M=s6DS7}Fn+m(}+@@2<<$6@hr62@I@jw_OW zbV@IHuP;07b!2^i+9Tco3p-k3Dt}L)&45;}@r~GBSsSTJkIA4#P{{uVs?SijXS`1N zPX6v=b~{IhQFkSkyf3xZtRxSwLSYYk#>iN(Of9Dtn%j6;7bd>YwV4bu4~wQfyVi8? z00(ZcT$vZ0N#qjDE*C8DNQHJ=2F~^y<60iC%qEKnpE~W*H^Yr1ZsGkk;<$TQ>J{6$ zdd6S(j;$<($I344J+U(G%+{_@G$ALawY&fScyPp0M!ODaf8QT$JEcHs$@TKTowXjZ KMBFs(`Tqd)L-uR{ literal 1463 zcmV;o1xWe;0003AFaQ7nL7N~NyahK1g_hd^Z~$O87({s@zk2PKv+w~NQBxm8SQrq( zC{fJ)B8`a{0Jsc#U-O4>Q3F6Y9>Qn-)Qhuj`~ZL$`Ue}m$qnejrWdGy6Bq0FPsViFkuXs5DfAN06>cc_l8o!f^heaSEm2~fLQDkuttGz6&BiH z44eP}fDi|GH9k$Jix50`DqDGpT!lf@Fq(Sfjrsrr;Y9_}k)_Zcq(+@fiGkH`A3GAVgND34QW;u)D+b#yYC&#f$mNI0D&Uz00J6703!DLr_y1ug^RGq-x7dO1poK|I{*NH5;4F4KnNNLpITfq zU$>eW^Av7h7+9Yw0Prw;eial$M}e_021i{0Mqz@06{S$fB=a| z00@b#`owH701yNao%jF(1EUZqkNd%5Cl%n7WSAnXyqug0X19Gmo)+V|b|BuGEl@m4 z6zCC71nT3!JSh!yYxny^j1vLm;HF8FzVGRO!eN{t@d&00t}Mj7LMkWl{9^)=21{zP zP&UDN=){a3NO3|nLg=GtJpdNKAOH|$8SQWrs2r(Ok$gny@Bt_}pcwh@3!4LGl z2}Fm&V8{`O42<{;01nCn5Fo5d90x`#=fH)ma4RgzcBTtP{qPV%ssuRTf=s-4!-<2b z;6yaJVNcu!P;4yWL`e#aCa@>_|F{4HC>Y~jNCLqv2<;C?AP|4<0tyEqqk}F?6U;4g zbBnw&3?w)B5aZ^3snChPfB+yC9ZU_Fn%2o5KRW}FNKW)%u=Wofyx1VMOZh+nXNF(` zfCNXF3cY6jJCh_gXh?^L#uExzzN7mZzK)d zqxOLmW?Fv$T5zfq1Csb741@5>l;I8>2G%0HRyBUtox%pqNPPeI`*Q$2Xu1NE9>0H- z44@6;cjyh2IO1%|8UOe1V9x?r5JzLs00I!A!%{PwwPfwQC?>r9O#qVSi#T6Ko%b)_ zKY#Q@Nh+(~{s$}rnjOG9Lgy>%|Ml;`z&kJi00BV&ZYIbEuK;*30003&06B@W0jt0p Ri~s-uK>!s(Y=CO;2ICX-X-fbA diff --git a/samples/h264SampleFrames/frame-0969.h264 b/samples/h264SampleFrames/frame-0969.h264 index 15618266d4533b0ca42b03c9f379bbd27f7d081e..d8bf3f9d5130ea26693cbb997409340004c8c64f 100644 GIT binary patch literal 1761 zcmV<71|InU0003AFaQ7nL7G4syai7|W7C`e>B5KL0>Ur@fGjkHG9VHRV|dVdy#P!* zM_3j!vLgrM8SYs8Lz^G{Z3>7Qr+@+g0{{?ITSNq4XDI@s#!JomkN^k{T>ue7aZL`X z-8W9`&;vKW00a=5sUeF`F{w!m{6UmL9J9?y1Cm{Iyf%Uo0l7jmn6RLuO&i!M0690V z0HzWAQ3;%Su1fPcpU7Ylg)U_wExMUuPyYIXY z67H!~TH{XOXk=G`0FPj6$t$Y6vgQwe?qCJL_i0kF_$?ysCV&7y5p)3Nwgp;$dx*gT zCpM2PV@Q=D|KK6>U;*F&z<~SUNm_wc`l7I1cm9T85C9MW00uJ#Ko|f41(5NW0Bft8 zUZ3yi5&@_IfV%p71VBZXCE?Zo?aY7#@@XEJW=99bn1YZk4604$fB--U1JD9cxS)Vj zD@AkxvE-JY02%fskpKWdYybogg{6Ji26qh)L$Qhg0#5hX;s5~voj@=ErYPtD2n&D% zSNelyhyiE-1S5a|K^-jc7Bpcv461MrCJ(eb-VlfK78#1+P7aQDR?K}ehTtjy1pom6 z*-!uvfvkIvhnN^rMyFIxwp^RwzyZl%ahSngcvADjQP08o0u1VTI4a{4xg%r06EOqA zKxyic-~eUd1Rwq7{$ocm$`GDW?ktA~>U5a!&Tngdt%wW&0ww^#1z!lO9Nx$r5#f$8 z=-F9eo{qc?f0Dul$hxN_Zqsl*U$N+^COrU~`RWTP|_7NzAjUr0_ z|G2hn;s4kt8_xg%0iv-2fKZdgSL}-jF#G@zg=>s+M6=ZhD9b8K;UF_0xGDlbfY8C2 zi2wtMPG-2JZ*>2Flz=c6Zv%^=!ssXO?k2zkY@iupjKRTG-)LnH^q|wksvv?^AN#Z= zEGCCxn({gSzyt5B@|*LtKmuSRC_BXwR7TaiyZ`|J8w3DT+5{6{S~bEFIe$O^5CH%| zm@c@?lVtny;vZTPkm~rMyvC59*ge6dsZ{^}{ICFI$Z3jBrg9a-^+7Ub3<2OT#F+-J z;eiQYhz|qsm5M%q27+0L1PAVx8ejVWKrsW7PROnaL)CX1fKU&-01OHdm$mdJObU7= zZEO3}Av-CKjxtuSj5pcFpgJ94TSxRb#<9PD_?Vyo5}SvE6hNX(Z{ui5&F&G4BCoJt zhIksw5lDzGE3&Q~m_d#LRY(XEh00`G?;M0BqyPjZKmbAP)Vc$g{{$k(ln`eHoQkl# z9RNJc8~{982f!JCGZ#bvpaWw7RD>dL53VRhdmsQn1^@yF^gsXz35^{yBct#_Sd7BE zzzhKCaPz<;bQ7Eb5so$A470JoCkM1zq@MkFK%4;#vqs2HKMoizXbugZgA4!=kf;{_ z0wVoXD*{|=U;zLWDwoot05RSiuMc+ybfSj>x$YDE0bl?C5}MY801yEAHUaaaRNvy$#88y-~d8URSKQIStgwpJb&KI zYu#<@W#Z5P2oVsp!n6gpsR1wl2jJW+pA=1;863pZ!T1aqvO);3ZOx=ylg+K%VouPB zm>7Te|M#}T4>yrF%tH!51>aUW%v1At00IFeEC7>c2%Nu+t576-stkqr82Y2jWc+*? zQpG?K2?QR|n^H#17F0zz8>a)+Gz-SP80!%~&rOaz5M01z92 z6)+tL)!6QXFz^6u%u0^J8ouEQ{b+`rpE;G;Vc3AC;eZFSj0>v}RNOxS_z;f_=m_AX zSY%*e6f5{-02sLxKu34H31Vi71;s33rj3cSQQil!y- zFM^zSRmTj$*=K+R06qYr8~S1JDNI9I^+D-tZAE0FFv2B*lwKSNPWleV@3c=+W@k}P z|8ZcG!FDZZQO9mPLF@u_@(c3|FiOSyeqSktuMlBG6M?@%%kUt}#rb&t-#5n{j;R@W z%H?aeI{LrjVNk#^5C8xHK>%(hkOr>+crX9}0YLyciKGFmz#EJJ00BV&6+&qMYVZc* D{(Rsn literal 1562 zcmV+#2Ictx0003AFaQ7nL7PAtyahifSmOseC)CL?zlZ!jJ^%|C46BEMFP;cg#p>^f z8UPNKEkFoCaDI}6Tg>7<000yOO<^J*Wd7<&SLOC3MgmR(EMx!?fKG7Q1l|o3nKqDl^fl)j z`;0IIID6reG`X3R;sHP@cptz4h(q8_Xx^6TWn9PrvoHd^fH3fU#qg0t^?Qs6hbVn(zaX{d7fri={4jM~YY2KjkUfBeCD z;XNJO%%5mt_JzMKqjZKdNxMr-6_y+@%dOB7fQb{Otg;*Q3i52dto{Gq05Y+hb|%`9 z4L|PT004j>5m70i+s?P=g@JR!!3smdi;^EE{n@cd0C-A;WGNJ;a~%Ev%m(p$qSN%) z>npLyz!RqUtt?C*P?hGuU>jmEwfpGFJ3*YoGUJ6FTizu9Xc#UdkmMrqq=~Q)%l+a< ziotqnrt+7}A65K=U1X%fl-S^xn6U=EIt;UYajldu1H00IF(>kJ7^Yn+x< zRZi{K!w9@k)*%i)?OGml;9w5KfI#m|JC6vTf=wj(ej9>tuxxN68G1ki^8f(=IYE`= zSi0luBYI5wKenJVv6KOT1q1tMYqHA#vw*FIPOz7M2jEU9GZVE5gCv{Mkx@*0bm0VIbx0h z($wS$kbz}Ex6%L@00;$(*0OYn*#st*zzOgL?iWD2x&VG-XJKe(aRF2_fB=9t7hpC? z04H_gcnKhc55k6xogA&87#2WR50{Y)KU^S3(*OY=78!&F=mLy|%ZLQ3FZ=5=0098; zZuIa3fn3YQ^Gpoj_f{oWRa8U44>z+m+}NMM0U@~z&MW;zDeqT?U=A3cp(hGOX($zU ztY9D^OwI>IR-;^H{_PK)jwlvJUeVE>oxo)ehsF~@!xh5uNB?vK0KsYcUD}~cI*t4P zpg_RF3p!!Mz{x53BSv5D7zh9Fr$HXe18T#N8oFF z{NMgWgARBAAOIK!2%B@e?%dD?7X+j-001G=fWcAHV)^|HsycJb$|=8Oo|gZ@zyEN^ z00aO81;o^{aBufQ)=%DJ(Fy1FJG95oQq-IZGQj(gd%!yYqZiD#vS7` z2iyubHH_6)P7O*5y*#^5wy}>00tkj+;5u*Qc18yRU=w%%BLFlago??ZJi^F}!T-g) z&tvMUAAkY?$6y~36E^j#3W|?$?3e%o0bl?i5&$GCEC?Uq5aEyo}=5B}wW5R}xQI@O@^Kd@8{L0?g#nl$}z3^)aWFp!`N04XV)xLq-}xLgzf z4{HJwTYTQ5|HI-y1K=4)DW*zen@@kh7ai0CfCLdjNdye)7ytK%H0kt!c(EKBoN7Qd zFBy>J14dg0Vp3ZKvK~wSuwX250~f=xth17bzk0A7v}O+r$?~o_*2N_ zJgI}X?7$#5&Wvf#0%_rX1rQ*F0>P1p04rb${%z(pqXHcKqE$~1d?#!Qm!E(b8!fP( z?*k~T$axoLAW4Sa00(GQ*#&2%uV7IEDB+OV(S-+Kk6MGZshl!T?$cTzlHm{xI03P- z*2>lh1~!6Mu(Ij!vF;^B%v1q8Tv)im?tm)9zU@RMy>!k5gZV4 z@_YmF3{-PlF9bVl0Z&$=3~3O!k7-L`)#CdGKN^4lKqMfB3S{89asyxj5c(Jt?#;jl zz{(ZyGpUXQj;loHfDL>!2sEeym+cQS00IX?&}H6R3*rc*6^b;^XvElEF#SlC)O|6U zP|y9E026=!fD)n{0Ko;C&y>U%e+?7>EmpvA94*>3=3?$f0g<_rL063SN+mGB~3U;a*8E1{wnMAi>%ANO5E0b|zSr z*gR|5a20pX081+Y`J<+~NVLOcP{AdP7vXUvOUnW{0Biez91aE>%B*Ox4%%!$03b*J z0t6PFfC7QTo&+B9kFowE379%A1JgS%5E*|1*f9YPBtT#z030U)@K${W0C5<`OJU4J z>7$VHrF1Xu0uX({UOUD35iLg?A%VZ@T-=LOz32cc6d;lC~$=UNK-xsZWH%qC2U+4r&6~U_s<`3s?r?m&Yo#03a*?N8p_V4zLjXJTD=|s5jz5Dl07O z9$);R!rD@x_Js=UAvP!s{qG6f8Rl<96#s(HnGgUox&{m~G5z{EQN%WSg$R0zJn;yB z_&xvtKsXFNZTLv8^hx55NOw6{ZOYQ;yIr zi5n{bV(&6j>C8#(@zC{)u|9~n8uM5f4Xo|^_vfi(mH zo!s(X@F|*2IJk@pw9pR literal 1179 zcmV;M1Z4XF0003AFaQ7nL7QM2yahKD6d4E$?G+rrfJJf-gjv@e7x0K*fed)!gU}=d zyZ|p?03Zwp5Z!M1j`5`X|3Fp%1Oxza3lEU3AD_^~51{?P07fGT69|ygGMi_Bf|4QS zHf-9Y4|vFq)+}%t!2rkrAWHerNOkKEeSP z65CjQPvS8?rcV`wUk4u6sNHz$*@PGs`5ES$L4G|E2S{>&A7&+wS zL8B~y047QQgZKb20EfUa*J+(H14p2C`~YI{2tXTBHUd|;$O+-qH&y}{at;>`egpAb zH3s$K>J8PKU~f$T%m0cDjJAV_d>j-GxTwcK0njD`npgms00aQQ;_XQh&h4fgcptV5 zQf|pLEj^`@|G01zFqCBj<0VNQ%l;DtxV!)#WB>vQq9Xu!=ru}+g{bBI61gX)_wv91 zKm-6u;3i8xi3JH0;Qk0_lr3b6kn3Vzrc3Bzjo?Z8P8@*+hhea;)Y0StYmDoszx#k@ z66jGqqaY7s?K*c>k1xHK(Bx2}MJ6`urm0$oM3_ZSa~ za`XXVdbi*10{{-eh1g#e*#NyW5_bZWeJ6^CtRTIfa327H2PQ)=cr%dKDQFpdDSlofJeorrmDzD+13ohb+!T4ra%cJ9hNhTA3 zooQpD0Zawt{4+iG@Rm_!YpCBqfI!`}k|IKHXrGwqODKgCuMj z1MG-(!_){@?|~2-i7;Gxj;>fs|JLv(pnz8(mYnN*bPL`dtJP!Xa|P12E(F z6WC0C^!s(ZGdX<2IJif@aO;l diff --git a/samples/h264SampleFrames/frame-0971.h264 b/samples/h264SampleFrames/frame-0971.h264 index 24d442935853952e7db0b90d18a2c1fd484c0fce..3942343ac59933a16d4e70d8ef10292d477b952a 100644 GIT binary patch literal 1990 zcmV;%2RZlv0003AFaQ7nL7IRXyai7|W7C`e_(2Ka0Fi*e7)7c?eJg_wAC$Q8Pi=;v z0YD7q`T;RV>AT{kT}3F^065_g1`8kV9)(DaYinKLFe(UafGTm7OEev5W7vpiUbw7= zz5+l1KqOTNI55u4Qd%prxJHEMfguJzgVzDe zNQ48#u}|;#*Z?2|1Ya!@*_QBh211|!aAN`~N>n1nq!XY}QucxsGlUBAZRMwvFuSkK zxatRCGel45U>ypu(}_!D3IJTA{_qhMV}hpR@SZ^(_;+^z0}M9Amz{#MIuF1A#dd%c z^2^{C%drF9*oSTF~| zi?M(JfT;xlC~WvoAxYhN&%gn|!!p+1yTMj%mA~(X;08}u76GCkO(_>Y%!q4Y5^&TF zvv4GQ71W-Zhu44p@B#)Kx8aqu7E72qbdP}mDmDOu;8vO;a4Jp5Tfhy(+-awTU+Rtt z;}L@aKneiiulH;eR7oZeRe_w zTYqo{08+wwqnN^hrwW?@J??O)k3hgbw(uA`#rkl(Cn?QHIj5|bfB?(_n6)r4R`kjt zLUPa_FS5|$E^L{l^FZ`(;8Xxq47@y*k$oICBp;LjB>)K5fMYsfKG>xP0r{o?0su02 z3;=Lu=yzI4?!a+(1_cIxgJZ&*w-5jjJx;vic;PT<&_d(f01UwXsc=md#iiyyQF${J zM^h`UwKuEY_6`4Vpin8i_=*)SLWLEZC__!=4!r^@M{x&NZU#aDse0ly6ImRqy-=v;c$Ab;XRCH5liAZvYHWP~_J$dq04UiU z$8s>loYHv1ebfRFsJ4V?m*&0j05@he?o}whl=xwQ0%S%t%uMBS5x|H6xNxzKeYWz^ zVW|wQ_XvOhyNN)xi-;WngJ7%;`1OJR>`VA!1%M@o!H7ct01pEMTNs)^4Kf9u2-Katp}YOQwxn-B0AM-YVXR87Hy;}9;Q)$2AgvuSM>L3MVz9tdC?G4? zCLPX>Fu+9n`;a(shiZ}4*#6h=0Z@ps`!Bg{o@C8}ZLKx${r|jR3@ZJAbNa%b>J5X{7C>OO8Q@UkzyJ^z zK!yMimA2jtgK6Q=D1X1hd!PsYU@($Q-2$#@1F3OP3=RsEJK)_ zUTCocvVtU|VZ&IYZr$^5Zy)PGf3PYf%|nQO_o9Gfq;47czre}j*s`Jtirx?92H{P^ z01sshZQfJUaQuIP4Di0dvJwGe!XaUy+8zK_=(Yjw3<85wWEg+Hii)e>eeM7q6_yT2 z#G~@AAa;m|fniNM;MM^gmbd3KzaRb{7s3D(bf5=sq$eSW1YcGS5+sMg{JsRxeg%*u z<3x`YsUkqQBnr>e-}(dxC8$?81s0jV{c6Ay&nG)qf8%12ur{}oSU`ChzQb9sz|aWw zv~o-Y)57`%0G`K&BcT?eNO&@jX{5t&MVTeB?_{^O0Q1Inw#|I*pAZB9tqj4P)jTu6 zvINkGT9g0;0PqI1pb|f3YyknA`^b(vLuORIII^7eKowXTdWON; zQ?om1Z_kk-DzgckZDQ8TQC@f(3|_ITWupPWzv>UbCh!0N0YLz6CZGnd0C+F}00BV& YIf literal 1506 zcmV<81s(bT0003AFaQ7nL7RXYyaj+y00cH>cV>5HcXt2y0QLZ6I0P&p?g$w<`L4n$ z=o2vkDhmJufCMoh_iZdwz#jM+nZySL5l0K%Z(kYek@vO?2Wr#fe>hJ>3U~krup9z< z;c&{P&6WZ|UYuQm3%m+E4|LA~GJz-BD3j zzyln^h#DECcch_Xb4gd%1}FqZP-0o&0{#c&B30)gDkC+ZP=a{Srsz6FAdEPM3|m*f z!%%R^%9;d73Gs-lH(mzE055WQS6nHv9+SX90Y*j@VB9J2fB--kC-LT1Sag9Cnm8dk zHez_A@Bmmw9^j(Du=dyHCrI&AOo*;LqKRB!3?N{ z9K!@z1w0?=004nGjYTJbdl6KL?U)-lBTN%SmqE>6{JsV-u$(R+E;0b)QUCwXQ3Gzu z$O10_VMHXMz`%$i7sPpo|9^!-SOB&V z7+JpHS!0!JFM#+6IqwUYa3C$o=-)8mfU1B1fD1rjuAm)!zyLr6k`_3R1qL^WQ=~Hfpmhtc|Iv+9k`M4Kfh2g#y)jZbQO()~7bgL+ zXg|FFhEror>z7-?UvzkOrokBG-VbOM4vRp~d<4_N`i_)%S~!UNjM(=m>m5dQAZhC={Gv8}P z00;yWPX=WH5sg?Vn>#=N5Ck0Y=*?iH*vf@@7vH>KFaQt?D2-6icMNlY@CXEZc)v58 zL^Wrt!wiQib^ocT5jm${KsD5fT}RS#7Bo8ll!mBs1&IO$tKMKVgm3_}N&_hH68N#E zgr+1P009`0N>(#vE3-d<0Kh(i5l&QVinKt$O({g6K*+337RK`w%uVu-bC2=? zoB$jeo?(rMqfAxD-Uwm^G?$4OP>`oe762Xa03rcE_hT-=poBb5&;AeoCfS=X)!joF z&HyhNLJ%tC8YI(3?EoMUz~dM&3%n$-;h6thJs>ZyYyKtx6o3}m0Kj-Mq7Q~EI5{x@ z0D?FG2r=|v00=68Kj%aXbPNCl2*3b9f3U~^_-beR10b&f<7T8UVg%}CaR^Eb2z;1f zEt*`v;6dW3I7Hz7Vl(6afp{T*9WJH+1VNC%GZSBr=l}=+h(N0Z2_SQuSl%YL0C3O` z%fJDFsR=+3n%w|UDjg$`!w~Rr1R_9|8qjkjHZR1$k}tp39dG~;6u#~Pj@W+t{%v8BTR3k?0ifC>`#)1k2uF@pX8 zKp%QgDQzwm2G-L9f&{md5b;+S zvtI!;@ScifaUn=Tt&_py|M}np*9@X6e3cn2e0WGWtM^3!0Exb|Jb)3U$~*^yEOe6I zzq%wrB$4QdS5m?Q!rlb8w3=s#qCMfodLQX{oQMV-I|;ym0i~cnzOM^BA}Qnc-UQRa z`rLR>JjS*2y0wON{-H1a`@q(3n690U|Gn^&Uum{p57b*Agb{aCRZYi>?KPMAOC(?5 zb}WaGIDi0v5&(Ko0do7Tvf2S4ZV5JdSv+@d`nDu?07g<9#1Sq41@Uw?IrHB=GM ze?Mc;v_&r*OE3Jq5FXIPoXf<|xc|GC8Ux#x=c>N1fK8wP00BV&ZYHP(uK;*30003& Z06B@O0jt0pi~s-uK>!s(YJh6+2IEC-w}Sux literal 1014 zcmV90003AFaQ7nL7Si&yakisNfr_qKB70%^}rY&zGdhN04|{AuZ%obyy_4B zm%)gj&~SJw1;Ig(0Bo6>5@jm0FMvRC2baxxJRK#a36tOf7JyrCKgx0DN2{kQ^v5YD0tK#;N#`Jzo3B z00;&bNX^hb{pp>coK02m5KMBg6H-7X0mY>Baisa611JCp0#_k{V_525n@CU~HGDBK6}_#*Mt zYVh;J7M9PT6!L)RoemiIPmBUefFCFVf-pkM7GKcZ5Xk@vz`z0#bVvolA*&t7|Nq7S zWdIHf>Z{cG@HVCuuKWx!LRn=7i3H3O>*0HeU;rQqFaQVufrI5lxR=uSz%CFEVIWo@ zCNsbo0|3G5A;4t{7`?&i23vpw;2C|l>#Ic2CB?uV%f@XfCB*p zB6T_sIBF0O_PGqAcaT614?o}o31z@sLJ8m^1&Q7OfN|x86CoodOf6LChC+AnTyn4t z8#bOig{#i1%v)#>00=1_7CIIs3}b+%hPVa-W`IG!D#p~K=TT5N0h@q~A``@LCm-Nl z0*J7e02gy{FYo{VAOtp9Mr%NFS}&T+ z4}q%!3#yOIc!;cdyx_A))7CoxJwXLcN8o-OksySH1^650p&9S(zw1)za15{)=^8Wf zAVWNuLdEk<|JDL&;XM>W5+o@DH0C5RC|nZ%02hqHYNsYo#Derhb>ct(B11~$4pp3&4-1)2mk~Dt?~iA zw}h)f8R%d2z2HqeE3LzBudc|jBpX;9pTJ)PYUhrL1FVT$t z?x`y7cZdsKHgis++^Z*0_5ChVH6|Zw>ap?fyZV7g3Ng;d4;zwWudq^_G z5iS4)%+-J2f8`5hNJ8U%ZI=r~a?wPt|I5SRF{e6uQ-2QeaiBcdOlTGG3A6wJ0YLz6 kCg=vQ0C+F}00BV&If=RftH2wK0003&02M-RfNJmt<9V90d;kCd diff --git a/samples/h264SampleFrames/frame-0973.h264 b/samples/h264SampleFrames/frame-0973.h264 index a7e2472e79f0b49dcc4642074b88a470b04395a0..3aef4f87496e2e8be22c77bf9aefb23d3e6be5f5 100644 GIT binary patch literal 1293 zcmV+o1@ig;0003AFaQ7nL7KoCyag99sRHq_+7K`P5djb=R{#eN82}Ix8U7y!Nsnyo zoB#=wOlh4+PUk0}0|gn%G9%pUoK@~CJP~}_#{f72lA0hQb?zAIm%PBCpH*H_%-fEp z@)e>d`~v}0V`Kp8#+5YiGU(RAM;C8txr)BPkN^-39fJi39o?F%M|VgM@B(KcMrulb zD3&cIxRj}o+ib;ye?csqqz{Lbaa_jI0K$pOffFvb=J*goA4I=#jlaK-c0t4s>AQ;+ff2nw< zY#RlG_`A;uMF5RXmJ>H3{~1SjQs)1aDiO3b(WFqUP68I!1fK)QHFQ!u$mV z5)>`wVg4#wwciKlN`L+MMgRfR^7 z9A>|;8ZC6*`Gsrq?}NP#r{O)BvKh->4TIjo2Pvnfl^Y5U8n$D&P&mQA&>uHj8cQ6^Nrf2uE~RkeyPv~5MntK#RGTiJm2C6u{snn z?o)x#pp4r72N{L~mH+?&K>%(hum-OHcrX9}0YLyciL3#uz#EJJ00BV&6+&wOYVZc* DO}{RN literal 1123 zcmV-p1f2T-0003AFaQ7nL7TuDyakiQfp}0-00;;eCNny;N)ik8(Jh{Q0fK>}Zs~`$ zcHoM3LWW=gR+vgbVN2&S)&OmL0D@+t&EOya5Cgy0U;zMqE;+jg!}t;<^MODn3?Y*O z0iGZr06?q)eaAVmp?Ed#rNO`eq_A(n`iFj2-|B!I8~^}-Py?0(uj-H}aG;|@6MM`~ zQ5VFxD7yObC-?vX03{A65mHvKp=IJIB!N0x+XMkbf8qo)iP`ijj^f_{03Zkg14Opq znag0I%Mr7M9m4>i00;oOi2y;c01yrG@|l21{on_H;9)J12|8@REx0C<&!PAMpepo1 zVWe@P7jD48Ly!T$;{u#n4p-P7*);cv00;n3y0<@pD;avZhyYds4}cT|1$xX{t3_hR z0~q)jz(FAY^{&LtK{@_mEzb<#0*@17)W*pP2@2c>4uDTD=mJLP;dM8J(q$BtvbDWi$>}z1Ki=J1*|2MgrG#d&+`43kJ5kLrO#0v>rB(kAC zkN!SO!Qg?!H0Z#F^$D3C*X|Y3rSM85J`)B&j6h^(z!(4s1iFAyg_((gAzS-sv>3Et z;8HB?Bi9G3e)t3kbwI)dg_Uf8nYWR^>MRJSnh4EYepcqg95C~HcI2$@Y1C$VutdF1o2m#svUNf;gr|-`L{IYUxXW`Ewo*#@*7C@3BB)!C39sup_ zM-5A@;cqU@f7Bo7#v-mT6HpkyvIY<)iWdL^`oVzAzXiN{2EEXriJBUag$0SyUxz>S z&(`OuWfCHivN2SC+}|c33=h+Rt>?r!u)~%gjpxVPF{)d9@%#)RR}vKPc$)zf;jl1M z-${f31OU!s(ZvblW2IKS3*{uKo diff --git a/samples/h264SampleFrames/frame-0974.h264 b/samples/h264SampleFrames/frame-0974.h264 index 98bedb9a9e9cd3a68651884088089878df50581a..8fe70fc0adb030c62790a118c39cdb49a1049753 100644 GIT binary patch literal 1713 zcmV;i22S|^0003AFaQ7nL7Lziyaj^93oz&aAuEX+%u7-4Whbb?jrv#%9I9x1fA*Ku zMU}CJzz2>Pw%etD_xJ}_TU$@=`eA^Fy6%tPfmTj>L+{Q83MTdDcl+vDynna?02%Nv zG+yv<^;#4E+<*oOb<~tY&$1abcp+YpI_pCMDyEikX$d*F0096O247^A3@okyg){)0 z#B&8i@$N9UH5>phSO5^PMqxZMGv9h&6%{iqXI~9nOTfS!0vT&LC%e7>;R4i!0098D zT(8_>YA{-xC*fkL?cj1YVR07FOzm|@f|Ut(kW zmW%iQ_r?)Lb5LoCaK9+8q08t#aJUeK97s@>004knI{?X{**C9<5PlMbAWb8z!kMp# zxuznG#?C>DbK7hW0^R{@10wo5twlVr11KX9@tm$(JU`a}faF*M6Lk02E(Zbxvw#2o z1fzqA0r3S0U%2ga;UPV1{<_`(Vgu1F@UnhT2!A|!EoI{p@<(ogaZg9y4}zQkIZ*WL za+1r$%!_&`F2V`21Nc}KmwKkjacX{o1WPiB({{{lcNZH<1quH^?^O9yb*{0_{OR}|Mc%C|Hhpe zY?&FJ5=2{e(BGP0L&wu@u;=VDL-?XiIbHqX4$=fE@^AHHOg=?# z2m&Z!B_s0zVInTp`quma0RY!P5Cl~~_7kl_KFCe$zyJsbxB!fBIdgW6Dr_k~Y5)W- zLevX+bb$gJztDc5JQgVQB$N_^$qa(|U;xBqHba?8GFY^S!azh!U|<2@3jIdFLRSU^ z$AgeF2^v8tJ+Ta5uk!d{Fk%Wlj2Hq5NISS%*+iGrZ84%=U;rQ&$^pR}B-ng=HZLP8 zKMmLb2n2vR_nL6M5QNF)@6X@|&Ina82|Uz^(GT7j8*D}|t4<82%cb}bBqP;q43axT z4S)Z-^-(m>{W8H@16<$V<8%hQYK!mo?$`XjV+2DuB9GuUFei=erD{A){12JD4%Car zpqxFg@L&NvtlL7$vETzJbfCVXpi*x^d-wwwSiaCtBgPP+uE4ydAZ;I1Q(BGs!V~Fa zFq+2I_l$lx0)Q0lDP#f)d?E1WA~Es*egFVKRf&KDO*EJV(n%8k-Fdb*?k}xvc$fh& z`~U>Ng~bG>S2z5jhkycPV`NV1rQ{QjK1r?zJF)| z-U$7PRB2&@KM+1gnlnTazq@TdiF^=rJ%&pJB6GF7KmGpx0d4e%7b1^t0e4aGB{53> zrT*b?fJE2;Sh&0Nqbcb@=Rd#z@Z}V29coVK8=w;Jz1tvLmaWai>!C(TQ4M3V-<`5zQ=z3THmL5H! zgclWfFZwe(CZ)UUfY-oEzyJUNK>%(hxCXBPcrX9}0YLyciLL>wz#EJJ00BV&6+&x( HYVZc*eroF| literal 1564 zcmV+%2IKhv0003AFaQ7nL7U(jyaj@YA%zIw1J#eQBbAJRArGJ`yvjhn)(I!3`_=Ho zc-B9sPAc%8iIMd$;w&masKI~$fpurx!X|!xS;G&-6@5sqJA{7nA-JgGQimnJVHgM` zUr!6Fs$Hl5`CxjUVQAB<4)1`N&LA1_#e_L~_Jl1xj#u1-3rf4ctZ#>c!X85p{nf~T z(GbX4fs(aUa1|NtN@2D@v#hYFG9 zzxQxu2-mEzfN`RmUArr2AomO*gslQI6o2pN0t|9zXJ#M7JJi1(A|!Yr1%n`Vxv0}o z@6ZW=4mxlot_LzzBEP=)05J$I2G-BtQCKIAPe{s-ZT*PF#KPg6m{oO8pM z%`{+UBxeRp@Egkf^8bMzK4+oGv=QHM82wSYPz4`I0zS+Ui9$_GZ<^twO z$wZ1^1{1Ma4rM6GQrF-NVb_0lYG_TwU2U#L03s()W|}qx)-8D01_0X;hqudvq(*^? z!U&k*!kl4}XZt{4{Ek5iM&r*LU?#i~h%tBo>JCvg32Ht4QusCr6o8OmL{LzGC;`3@ z7D(}ea{zUqCl*A%`@sMi=noQIof5!Lo3jE#`z^zOA$vs|92ESk#GK=E3XTh~Qz$Px zuHtKVfB+y2N&o@?AOwR+;_IS)?-sk`u(lii$Lj001B`U^qyuOGv<9j4rPh zi~uwM1OP#_1twz`T&Nm117euFsx}Lc+2lfH|Lq`Z2MY_UukyM={qx_|*~Q1ZrN9G2 z0$9FA3da6N8^RY2O-h)OiEjqA!T@>L02l(DgbItNP(}Z>Q3+i{#eeVrVp)9yu*wWH z9U1UWzyogeg{$RkO9+ks0AX}3uk^K*D7pixpbvlo004j(0~8xw#82l0X`MOR4+IdQ z&nSU`4irB5gCzln00#`tGc0L4v=-s(wqLp6!gr)5x9>@lPycYl0|eFzE$IOoPm0Pr zgHt%503Z~C2iUj(G60*%lj(dHhyoa35(NXt8S`KuXOPzf={CF4M0hX`NRc+B>1Vv1 z$xHS<;gkVDNRBqKBV;1qmf4Vv>;MD;0*P&{XqM&J8RLGeDIL=L%+}V_q`|g**Wf;vZ2PiRJE1-Y5KV#6h8orbhR?0j2SMwS#aL=ThBHbfG?yO4iqNnlD&b*$(A`S=C0=`j5i zCAblB!6}@->X-Wup#x2T1%=1or4>&~gslGn1H+VvqsLu{!#}W+RB@19AKy#=ABlyF zAly%ls@-5O-~igt!c@jnDKFsT1}P(}{u~L(@gE=8+ySe!h9^<);lKxgH3DW|=7@oy z4733Q->fw}3!Zzw?9A#-OE>p}aQF#W0003&0B$Du2Co2kFaQ7nK>#_4z5%Pi8;k$| O0YLy2LT`X-@CM^fXs(C= diff --git a/samples/h264SampleFrames/frame-0975.h264 b/samples/h264SampleFrames/frame-0975.h264 index 9bb5185b452e72af02ea22267eeff7c77caadd5c..3c2144f02aa60d0b4bb87eba8a6525f29a3a72b5 100644 GIT binary patch literal 1410 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 O0YLy2LTG?$@CM_tp+}Vf diff --git a/samples/h264SampleFrames/frame-0977.h264 b/samples/h264SampleFrames/frame-0977.h264 index 4f93a82584011de9736bfb00660c8a20eaa1ee89..e510021c69ff1d5cce9ec1a6fea88e12bb7eeb68 100644 GIT binary patch literal 2938 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 literal 1005 zcmVBwv_;1R1JZ6CdfE81S}tc29Z>2my5tO5+GL#W42?m%)gj&~SJw z1;Ig(09wtVB>hnrz#wyh3f{V%i;%)iyTAf30+U|A!bj2(wMYNF4wL`{6a-2T05%_= zI8~+gKL7!k00aTTMnAz=sNWebdr70<__#+PC_q4^?am1or{YBQd+#6sfXC#>kS67+ zZDG0PC%}SZm4UN(3V_OtM{! zX^I-Npzkg)krFj;>%g7G*bRXXmd+SX1xduYe?xFn2|xp|U;{GfkQ)evDrf)yi~+a+ z;k`{cn>Gbe#+{e~Fohm@t`Io+Vu!iR5n$Nn03ZPDm~b262wU&GEkJ>S*saEt zhKQ$Ew}=@=M@W^19h2xln_mnYFdEoRkp(Tx#zu4^H;h;SRHu;9P6g?$mmVR&01ys1 zps$}F0WFPh#-J$xAqOns%qnEMZVDn&r3Zry#}6h7xTq&eTOtz7Qv3igAVSsIIXhuxu;G_;50f{^-pV%G1!UnJ~izZ}13_#$t z9hd*}h9C+YB*J(1gBe|W-{=J6%gqRd02uYxb--Of`fN-crv<-3YA9~r&#n9aT?k2n zp(A%LRo|fhFS&jo;8$k;W}DE}!JikPe-b^0Du4Gv_Sua8#{ZYV-Uc1qAYj#;L+n2J zcw+I%&-4Py*1jlD5dOZe9A|5feta^g7zY%mL>TRO6Hf~KAQaFz2l8H!Bg~lw)ssGH z$n$)_vW?_0u%rM0YLz6CXfcN8^{m< z1PD|n^}w>7FaZ`p6WgbOW!f33^C`(-9JuzwZVB?4SSu b0YLyciKGFmz#EJJ00BV&6+&qMYVZc*DN3Eo diff --git a/samples/h264SampleFrames/frame-0978.h264 b/samples/h264SampleFrames/frame-0978.h264 index 2f8b7f5de6ba265e5fbfb1ea0ba4dc53e72b9e89..ec54ff35a910576b2fd0b46338772c436eb901d5 100644 GIT binary patch delta 1534 zcmVH%PRq!V9$J#lp?g|}ZlD$iyT^cl2*>CIF0Z%QJ3t2mDS!qT$Y%YQ&g#R%Jk5Y1fO3avLnyfw zK5>iy3P@~4Qrd||HZ&;s7My?pKy&~bw?VEv-WX!WmVIG=mey`!x%Jo0xaw~qS|We= z3>^e6KowZZr5X;hGqDiPy>apq`vO1!KqOTNI55`CQ(7ysO}j6)b`eEnptgGVGU@TZiERFc+g-MqUb;dh4Z7?MQrm>r-h&}1pf#CppccK zy_w~xgI}%lCPRp*<#k?>`n^>D_?W^dHi3DX8#<8qgYwXTL3qd*Dgj1pc+(>w)$99g)*7dt@otdx<5;$Xl5ku`v@>#pfkiQlXkAz7z{mLExnWe#{@ z3iB3%$eY&`U;o+w0f6UqhOsKR+lblR9u}>gy;||p$tFhg$zzLLpFe{jWFz$76h5{$q;7j0`oB|mZH)eM&mCTv7 z-~b2*m)IhU5wZvCf#J8hir~Wky%y}*xcVX)`F+8J9gmnM z7zABhB^3=n-T|T~nZNB_UfaN%LUiw(isC=`034CmzWE&;w+5&H37k+cVI_eE0003& z0B$Cb2Co_?%iwbY>dGW&KrjGw7_3TObo%mSsz`HxyUxgFz@OMS!y5B{C~;LPUta>V z-8)qF#t4u*12U%*Cg1Hsu($vrvpc&pGrO}t|Na0DFoYT{R0$G6v#pXPfy50Xg4_T) zn#q_X{B|%2fB=dh03ZrkP=2h9BM62vkYxs84+)@^9>U$J7#FEe<6)>iqTp29e#sqWY7-1U8ev k1Q8zm0g%7|00BV&If!Mpc8M(j) z3I>e3rW&$WAfii2`1Ode(@dxyY+4L%o;@0h5=vz5CL=&0E1uvARFc7GXRtOz#amD#WqAF@uL8?;F?K2 zg9Gpef!Csc3k)HR2*Y*;3L1b09B@mDp~~9>+a{dx0096TE^W`?QpR7dVgMC^|G)|Y z0+6!Ss*zx!;I=*na1cm8{cABZP);GHMY-Xe08yeWS(w=&At75}xzSR(_!GHufCblt zxqm=G#e$Jg08I(Y<0idRF94i4E1mPvEk20R+uTBbFNQiG%USNmwhG}FJcPghU*?&M z=V3@*aVYTuC;<&HfniIa6Io85ML5Lo@Ic}md{{$zbj(j{_X_CJ_$3k_34UTor<}4cDXAODoPi00987^jHpmCL)nz-q~9v{`ml5Kmb4)O+esu===@P zLPD}WfB+x|_yK?z2b|HVdNC_=Q~Qws#}EKGNQ37>$AI3v1&{_T@T>{v_!~gdVb}mD z!mEj1IY^#EvH(~QC5n5Z!lnaQ7)6*hJn#n01WOJaRh7O19`*narhuXtJj_S|i7sk? zQNO?$3PVfCq*w0sIqu1ZUjA)Zt4<{ehGVB_HDq;g{@cTteFaUhpQKe7;zb z5%}P>4gf^~ib6(Er@krtb8HcxWEgM*F}JHSVKxdG5O4wDV!Dq70*>kg+dYk8b>@BzeyuCAXkSge7$ z@CGWtU_!Nc5MTfR0YLz6CYT1V8Yj!(a{}osqDF)Qzy(3k$ZmgU^qE9bOW%q8%M5=I{7zzVz5rka7ryb&?gfwrd+k(s+#HUc=Hya7{v$Jf{JhGaoU+6ZY= z1Gr%19S#cy@BpffWtb9m3cv;c0X={KKmZ3szsQ*x5rSbEsB;7KS_#qYKZwu&fYE-O zdyb;0d+%sW(VJ@V%3t%7aRncffCUIi{Bk!S+Du-PAS#yy`F)4`Owj@X@<0HocM93i z>H@$3AR?kbL-V0%NC>?H>rFxekVJp~P~kj^q#*76d_TpAVLFLYmA~hp|C0d*B9s3G kBp?2M0LWkf00BV&IfiQrFb<=Y{ie>d}}73t#|= z1}20Jx0;zr4~IS1tTey?Z~_li!BZ9DqjsL&Hesn z>?yzj23i=Duf zod5lz4aN>vQj~-t zN>Bg)fCGU6M368+kv4p&B2dkoz9 zn0aR@ZB_rYNCN<~JPbCMj-;=@yiI@uYq$X#IP3@xw9v{9^q}!AvM7>P-}|&Kcx{e> z9!W@l@B%`u#uU-)^+Jj=>Rb>R2M$AIhYp;n5Yn^zzyJ^jbOr*dkV@%P_Ab2hzrX+x z3E&BT3}7Krwv8%Wa(zGoIvjutB9lNY-tT-Lz~J>o@?L^)w}wmQfC5R7+Z5cQdXkV} zJ|qc~5D);c3H3&RoQecsLh4%jo}J=(xP{FB#P9$_0El216bOTLvT->DXKK{T;gmmrtUMsq%tUt{C|wXZd9Xqz-$Cz!fC3r7 zF9H47R?d}R-p0y+1vgU0Yz5}Gn?`8Qh?tI zcm!a_5hoNxUfcgaf0#%xTgUB5A2@i4ELiY-#6~~=72p5_15vO5lM8$X(jIgFb?vc# zzf-A7SBZcmIsgEHEDE{6R5N35#$IR-fCFY?Tv7~r`2!dF(G58ZoX%1_I}jAX3@`w_ zL!mGEk8Q_b{ImlUcwaxCfjIvIs2W9uF90{Jb&Te~16x-2X76xUmCdJ~vFn7F5R_Nn z@W5(c^%EBwSn`wL9C?7d4n~A4&+(3b_;H6ns4_ixivH)kYbI&GD^i#66&M{BF6shV1#wI#z}|_%lG2N z&3vF1zcN5}-DQ$5qy?+!1_I!28#0E_eh?6a;?2*yF-M-(OKt{{lQOlVAidlYImdBIon@{QLos ezyJUNK>#_4rU9$K8;k$|0YLy2LTP|%@CM_20t&|f delta 1123 zcmV-p1f2VZ3akl#000012`~Tv0YRF88oUL8{MR>d3_pzu00IO6&u|helnJTaI_x@_ z#?Ap0N=OWlQfiwe9p-QUv;e>r{sRa0F@XQE^*4+Ea16rE0rv~rJCuQElBfRkavXpT z=EBYaq1+wWhN>%$Ct5jY1{u+h8DkjKpZR_Q3`PPDg19# z@&ShjCuIXAm!I4)5rtchD=*q(Kfl8juQ!TdzN&+Txa2u}(?$kjMs+e~z~5KroBjpk z|eq-`*Z2Gr`jiVIjv%1h?Kwsp(_=T;(FMXExrK8 z9anc|CY42VNEg7Mps5d$?qDh-|7hHQxp#T7)he(VKT(dC= z#tzei@Bn1dpa2k6cIrR?5O@Fq2OEG2L)TC9f34(5EFs_kfB+y00KwIMxhhWL0oOv= zT%qg*I0|Syfk--JFnWNXKM%MA0YQe*J8Tf}Ft4*C1^@_jP@@szqr0MxRmcc^jN_i0 zEKYxao5~vDkN^k*1OnzE6>N!7k`G(Ic*mj~00ay=uW$g78O(~FzcCRx7Q?#PFMt3b z0tjTHa3qa5mo=jLW;6EzLU&oV-kB0EGKq8b zin9(Vl|Wm}1h9amXmI=dN}K>-LpJ~$ZNZ@gKRQeRD)N`&97X{;1_THI00BV&ZYH1x zuN)`X9ze@5kfZ=PdL)j7Qt$o%F|`qcBkptMs#xzvU;v=$){LjYgV+rLN}W6%=7D&a zSApaWApoFDo!ScV4oeZm@qu(Zm6x;}3}3#F0upUt05BtaQld%Lh plivghlivgd9l#k30003&06B@M0jt0pi~s-uK>!s(Y5;2R2IGz`;dB51 diff --git a/samples/h264SampleFrames/frame-0980.h264 b/samples/h264SampleFrames/frame-0980.h264 index 54c21d2e6c1c90e0f8871b7569001bb2a94a85e4..630f6cb8b1c98d621057506cb4c8374ead76bde4 100644 GIT binary patch literal 1623 zcmbtU{WsHl9RGZ`*%Rh*mgZs8CJ!aaQxcmgx+FyxOWAVWlSoSUw5x8uL#wo`bh%O4 zNOEt5;+DFL?@Cce9zt@(rszQro1B};Y`41qz&)q;53lonzhCbkUa#{y=M4aW2%evT zT?WsW8~I^`Yz->D8oaWoE5l?L8hUjQT@co|yZeLL{rg@KfRL(I6$UwlexcARe6dDq zZzdu0z1*(n>X`Q+X4`r02D78})=%JMAeu2Xd`Ke+z>mHoMLU83fVnWvf0=1Mt~6t? z{3oJ{22d7H!B(aXN|_cnNl)5_Cq=39#1zWiWX79;aSg|`Q}Lax&Wdcdx;W`f5SR^;XwW70;VO=pB6(tj-;*=Pecxs(t`Wg*? zu>$Sr<)x`2&NB&DW%2q;kdkanW+3p~g)iAi=MI!6562eh1w<7g3-)-#8=Yb|S zVIwAJ#)TL}aMorG3)5Ajbr{kb!bLXPC9%DRPYFRcI z7~`Q8)Qh-9JP4Iat>vfzt&t$FxKLP>#*B3z0w%}LHKf=nZvrs)1kiXx+IaE`!7&)X zqSwG58eRN6w5G5le>}Og!0V|@Mq#yLE2IEbSrcdxQo$4)mfl!YstKWaM2?))&!_+% zufcjliS+fe0hHItwBVS`&pUD~oaMBnWeTDRQ{01#Eod2!sn6x%GDZPk;qtEQ?zQ-qum*q<2l0E<|YVXd5>&NW>&UCm#bR=3WEUJ z%7Q0=Vdw9Y^fiOdQ{kO&s`K8jmBCS>ld6I}F=oDLYI=2q;$mCJyyq1a{%fq-9|yV? z zayfw8)!3{)we91}j=**pI@|5ZKOs@~JSe0$^to{Q*1tT=F(@TtwWE?o#ER-7+=Z#hrE0)Mxk=GUb4H0VyInGe2mRjYAkh#>5>QoA3@D7AOO4 z0VIAwG&!piMX{F(oMr)<_@^B29-o8mt&ZcBvTW2UuH|-Z@FWcNf&d^P_qt;x^)7!6 zYWw@HD|E32EqxSVx?!w!CO0Lj#DNOv5BEpqnk>7XPiBwvAUV2G5Em>JqP~0&kl`%D z);TOx{elh;U5w!SU)<(MTWCi5PXcWN!d$>f3Ib1(r6MW~ZGH>~~yJ zT##^18+`DOCSx`Z9ta6vbbg+mZ?Tv5>&weZF(26NtgPB?Zn&Z!U&3b5HhV(0`mr*`4U#33pmM&bPYa7~;QQgmK@wbx>9rD$eQ@UPG&FJ(w!P0MNbhMS=Cz`Nx)Pc{~)p&n(z@w9aqW*t@JFIk_v`C|(8423(bQ37;6P*@V1;8YGP0 z>IsQeCW^Kfc#d;Ig~P4Q6N`!%8Qpsr4_1I^?7X?g)Z?V>3GI=<-!^{urj+=0c1uoq wdKYWRanQ*rw%E~N$kS<>zfJ#t_EpBKzXrejNDXump^Co_x)V{z(3j=^c z7z>Pm0tN;e*9@h6OuWe*DX#zl15iLHkl$OUT^O`yLo4!s2$=>7Dd<8*jYG6C5D8$3 z320Q9h_^-H1XlnM73O}fOg-_PZLk3V0D?mT%aH)+T5Ted17*AzLInW~ttcq2(Ts6y zXAR>6{vZGl7XV;>cOXOlRwCT=Y{SPJ05@tSl9Je8|L+I@AwYoVm|%2}nHzDgvJbW| zFaR_!ql659L2!Qq1T5}&9qwES2b`}eEpreY=ClYO;n25Y`x1}|d`%{@4j2#_zyL^Z z0!rUWu!IOE9fD%Y)ZmnX*L?1u-|hjJPoYLjO7{}b0B8c-0-gnwF(M~HAwESQ{60_v z0HE{8h+YPL4()DA0se#p2M+n9^vJi!^FjOQ0-Qa6VCH#2d~x;`$Na?LCV@s#W-st1 z0098Oc6`8eBe|1afiOP+tL758g5+%q@K#Bc$?ql?;(U^ncs%HS03bktUc8E`ks(;g zJKVJZTmS?BT45Rk?zuq;y-)zC>3{;qu7yMO?{u`Q0098N3pWIWeZT++4FINCWHLV= z28fS;-n{>F4=6|h@m@$k3J+Mn|8NWd9l-`%XI0rC{c{#~u%!#8pvWa*M{rBPY5;*k zP)3TBSQzL}HXZ?-AO;LeEtt|RMYm@GOOOCMqyPZ`;(@GOfHEpe$N#(tLWD7^C`m^M zd1jKXnm+(VhlKO__z)lf00BV&ZYHP(uO26D;C%x~L@9Ux??syghktPZFZ-{D-T)I{ zqBft$umF>3i$|Yur@9L_COZTD>CRf&?B56S`B_$GCs(v!Y{|^7Ka;@(8h>s!EEmN+2k~M>>N9veOBL(WYB|=wRMnk`Lc|a8ts65)|-B&|G|rqMJ|&T4Lty z)Cw}J0PX-#LP`L%Io}3xB+!#hzo&(BlOP5flOF~flV1f7e+U=lmr$5cK&D0nDoh&v zQ+#_{HfS&aQgNsrFAwGz`kO=Gc-d(*{JT6{H*BrN!)C~B{WFLuI4m0Yb^seVc`Utv zCf`==Sct1K;}O_7{<_^H;z$3#(CA5t6B*xx3UJ!bRaydwAg;2o1Hdz}yHz|CjQd)t z`Q~FjmLw!e2{LI9|Np`Mcvq4JI+I@o3LWqTqW}N_K>#_4ssXFO8;k$|0YLy2LTZ3& G@CM@*KBv|I diff --git a/samples/h264SampleFrames/frame-0981.h264 b/samples/h264SampleFrames/frame-0981.h264 index b85f7056c695d3046e9b7f524c7311064c9624e1..713e39886ffc31a4b947ef2420f857f69ec3975c 100644 GIT binary patch literal 1652 zcmV-)28;Os0003AFaQ7nL7Jc%yait{NFZV9)CbE5F-712kle;jDJgLXX)56`g;U@p zhIx$d{T;Y$sAnmB5JaJ(0ce4OJ{ChdWc)Yby73BJ0Du~`V>Cw4Zs-;A$e+D}EKuc# z*Am9iEa!{>1Obc#g2)QTPu(^Mx24nK02{C&>d)5SW*m@#C58nU=pc{svtb$1` zkugs3d0+q_000950D(1?j+FsL@ely~WZ)2B6=ctsE)pTYlr880<$9Kb?kKX2Rz4mF zL5k>uw5$dY3D6n9R|x(h7yzripcK%ilsN!;2|xhg03ZYaP+P|qy!wc(FP#zp?qCju z4JARGTgK>;Rv$nE*35!V?#%4?0576uc>+R}7XTUDIw&KSB{~(2UcDt*u~@$UQW``f{Q;FJ`F4$YJyt(ZFW0y;-1zyVEw0Dxw? z0B{0ATE>Y%9xO4c%L9RUZWb)RcZN0p%>#4|1OP}a!+;$r+IV7zB-wOWosS$uooza91!*qLRFv|K#V|^Z-D#Y;oZeF0-8f z?ce~$_5~{0+t{9h_bem?!_guF5mc-&XD9$){_r>m@B-VY2Lyx`M2x-kar*Y~O#mZ+ zclrkc1IXd*M4f}P{J;P}=l}#1K6C&C4gfeigaRl43T*%e2oiY$;s!zKAQET<0>Kmz za3xdMj?f`>EqzZ{6jnz>VB`T9K&k@1xh4Pspv-r~Z4>|p3D`CtL!$l^HWrG&0ga(E zo%#rcr@jLOG-{cZ9Pj1czI#S8$nwh_=f5!&$}#^EPXGWwJm-K7HgKuQJY{<500IH1 z*Z@dd;5Lx+pL#mq01Iyx0U^);1PNeO&H|yE8-5&Vqnld!dAG1z|Z~%pO zF_M1i?v7;JWGN(WJzzQC!0}op^EsH83n62RdaHa@hfCaKp#=Ye| zcOO5?KoINz00BV&ZYHP(uLue8J|}@V{$Bwy2e6<>l0qS907?9cZKZ$$^`|7k;Z&#n zWc-SP1K{(%$P5I`8gLx|0#mb0(4eL~)BL1}ezWfV|J)dS4`6K{bOBOTSo{wRl}nI2 zQ*F`=dR+9f_&>{40`6(6Pj>wVJ=s?sE+YNFZVw3!&u5oGPi^37bd_X$j*s(xvy@42 z%ja}<`vIXy^+@7T$H$CKthHVOVK7?M?Ru11Ki&dq;XRP;BPp5(i4CB zD*zEXEMc1!xj*spQfCCy8$Dzd2>~w-sMK;NY^74cHe6{x>^Kvc2oN~q@iaKffuzuA zNgnZtdSo%mbPg5;E2qd%{gZ)uHQ!yZFHcIkfBpL)MntA9H!J_A{SZrpcnDsxf%x=H z3W}x*2uTft#UBJgEOY|D-Ie=4xtAMd(Ne3pzLHY@vGM-^f3YGqPz5rkW28Z0zk5xX ye@J&f-~aCbNG5H)v9V?_XW+mU^Z)<>K>#_4ssXFO8;k$|0YLy2LTZ3&@CM@z-OpbD literal 1464 zcmV;p1xNY-0003AFaQ7nL7KoCyaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`L0eYF&+$9KmZ&71ONaF0Vete8E-4Zzzs{F$+SA4P)e|jq$BNBuM803Z>F%5 z?-aX2K>1GqU;wA2CG-v@1_6hQfGPj@4RFJF?A*3ddw1Xz013>11On<_*)U&g9{;>x zB917W22xk?e3d<;fDJ=CTOcWMdN^MLFT62YNxV}9^;8@!#{&)?pauX8-O>Z1Rbe@( zzkmS%1_K5*RT@soL@j}f(k~7{%Y0@*BGJY^HBVod>Fu`L^chLp*r1wWrvBf+OaOo( zPQ?J7(dwA8@8IA7<6sepSUe-^;l`$x_3hCR00?b$Y)o- zfCdyNg<)k@wVc}1|NIyLX4`zGyRx$!bLpXm7(hKeKFnF=5f^xBGiTc z00;nMphg=%+4RV|NDi!E$YC0?3K7JwyZ`|K5JH3wW8qny8i?v2f{-TZ0bn5@k|l@= zzb97bz5qY~KsX(m3T;vSBIZitVGsFUoix?p0M0HX*>6w%zyLx5p{Y7QHop4{g3owBAyu`(uiCPz+K2p2vo>L? zy7L*wJvLaK|2daG|9Aih0fkt07UCcB_!tbt*!KKm(GCCt1)W#809c&m!(@yA0RZp- z5EB3o56gH04hn!1or|dZFkC9D6wiiHW&R-qCkViYmku%NL6!}8`^KOW%||s0zz|~) zuQnbMNTfy?Y<*U6Fd&H53xE#(j}R}&d>g;`KL9{#=Lfq^;!BfFe#V>=n0ZssDSSZa zS{D!(8S#xm`h6n!p**(2LHGb+&TFv;z!W^&c8WIfghGm%V=-^uSAh~J00;oH=n4+L z^44hxe(@Oq3)JD%l+hZG3m5%(hum-OP3GqHBfjItO0U`n{U?L=th*AI&evwStOaKp;8cE>L zD;UMzih==nCHvX{&KDrb#5n*5*mhKi#{-CY{YL#rNR0kHzkT`d&|&aBfwX>50a-|{ z_#O`omCuknQ$J)vhsV!TFKj>MrNFdnWaanW_=5{JWW@B4L%;AEz;y<1dlG&JKkeX1 zl_h;4^E!I{oVcDbGrBhV0MXm26iO-iyfFJ(db|XoF!g`&s6j9O@Doo8?1#jJfWijP z9MqvBuK)4=El5?tj1d`Kb-v(0Qt$*B-7qAL;J{KyP<7m7nXqs#|IGPnJ07ATJ%RKM z_>iW;Tw$P@j-(5YWSM3t0pLiZ*}jC+020H_kK^EP6Cg+rut%(qW--7^G&;S4dK>#_4tO2XQ S8;k$|0YLy2LTdnO@CM^-kBSxm diff --git a/samples/h264SampleFrames/frame-0982.h264 b/samples/h264SampleFrames/frame-0982.h264 index 62ab75ab810db79f18a9d84480e03abbce901921..7ca903b23ec36e10b3eb718362e200f91bda2dc7 100644 GIT binary patch literal 1046 zcmV+x1nK(#0003AFaQ7nL7KoCyagW;6vOD3RJ;I|DS$k06n->38dO~iK>kxH6EG~R z-vdkMreA|Fj2VI;R15}q03ZMe0DvHbKAjsM?3gmZMJT_13?^bk2OCd4R``{_ydVHZ z0096!08mhs+rkJ5^waIWM0f!J0Dv-ug?6sJjZ4u56m?tx0Dw{0 z98KrM6H|uXZ~u9K1^@yF79ZhOX)vSKa_G8A1>$f;SAg-8 zckf^Xs%23CN(MfG1G0`5&($FT>!KRIq^IOO5$R5doA?_~QLzIM|Dhzn0WvX>*yapB z`q5{@09eD%g2GMT)L-G}1XhDV{EUQFQymI2R-}d=Zzz3SG1!{G6eb~v!Z2CXHQ{xB z0fU|i2h^7(N^}PrglMz@3>z6_02~|^(jXdeg$Rg@QdDmLyZ}I8qei)A1raFnsuLBAE{(c1G z`UB`3N{0ov01JNws>AUV-`He3fXA#pVLhuo+ac~NPv57;seAxRr9MT9-Fe`ssZ*1G%0GnU{00BV&If<+RtH2wK Q0003&02M-O0BZ0C(OHiN&W z+MpI@4~@V92A}}|pv0+Hb;ymjx%?x59smIVASfV3J(1Lc$vA}?)m|E$00aq!Qc?n9 z)=#$G5+nElfElC6Ve(G{K)oi}z?o1nmHq($hyu}-A|qS~bG1W{00s|%P1yxWfS3l8%o6|jWs%yh@8C}_@%Tg$1fT(6U;sf8gW%i{j4Lg|hInAB z0VaN`@SrL+(*jbc0vJOc8mb2t0Z@5&En%$rx<=*gSgUi)IAvWg3zyIh400ICt@ecTxSI@Y=2vOXAYEI@G-Jf~W08I;UZ z)SgNI08P*U00BV&ZYH<}uLBAE{(c1G`UB`3N{0nF09*JiRvv^?|6m6m_}t_&X@;ge zv)!^BQQm(2CJY{o0y5O}UVKkUBp$jjmT`ivU~0;ML4m|Zutz8_l)D{B8Va}tH=x&3Mr(n0%_r0RH8yn z>vA`1Ad(h70R%O~juWiN3W^|)&4WBAu7rgq7HK}ZByIv6I&2Wj_5caKF)JG)JVZ#%|t*52tqIKmB;fH6+K?z`%9mgHf*g#&VEcT49+85L%v* z;s74Sud++8fBx(pTuc}CKmOT(q_Wu)X#f4NtaIBtvB9*>7<2rz+|v2z6=32zyJUNK>#_4t^upS8;k$|0YLy2LTi9(@CM^Mi(fbZ diff --git a/samples/h264SampleFrames/frame-0983.h264 b/samples/h264SampleFrames/frame-0983.h264 index 963b30a74a97199fb3d666fc06ab162bec06ff5e..940b9d5d473b323d0ec541d9c1948a8b7e0d127c 100644 GIT binary patch literal 1244 zcmV<21S9(Z0003AFaQ7nL7Lziyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zA-kNOfD9COD9Ddh$E0+;{@4T1nyQgwh_;1b3&ORJy| zM+vJ1v~P+NaczK}@NmU!U;rQ@Lx2E)a2g38&{Qi@bHG9@AiG**hfai)qVxa+RzJWD z031+-PNxoCVqbYN4qdf?1A_=)zTr*%;u~~DM|c>i5jAqWngUi?Ujw07-SegGLp-Xv?MGMiz* zmNAos;W+JNpph>1mw*7E0YRnFM1Y5+P%?9JzW}HJ9YI-wjA3&t=!i>N4ge*90^@?9 zS^-qQzVSc+AOzq5AOuOE0txxxE=VKMgMbDA3MASt7UvoQ1kDKm0zUSTK|#|CDnsyRgBR*0096I2j7v3hVb7pM4sF2lOXasUcWlcCTFX|wL5?E z{Kk%FaTkasOHu>jkT5C$fdav@vXWAwdw=*aCmRq1MDSRA023n_9S&fE`-~E7Fa(rP z2-N9eGm(y3&LCxBEkv@fT7E}PsP$AADJE+C}_FhF7< z$&YRkXmSP~Fad{exCayFDg#lH3xE2;LY?~Kvl93}@qh!Y0r(El95297O(94C01#7$ zI#d7Phr%!b5C{T-%!57=7kXx;cGwsgb5I030003&0B$C@2Co5Re+mEp;3L{lPM)Y&h8pYEVDD?rAcxS##-+8+>Au@1cp@E286dC(<3 zKm^awysGIC|Jn5i_WVf;hxj}JmfdcmI=~#s%{H1h`tmQlfDtP8Vy0dH>j!~CsP{cI z?)C)J!n@Q+NJ=1iKmR-hk{~hKo43=z@v1~ZGRt57uo;@;qfVX$=O)*uTk- zf8GS;;yyLG%n$OvhYC_8CwD3GSC>_!N6KH{p&kPUM?qf3KuFL4#?|mR6W)m*ji0^X zZ65jsnC~G<(pYzk#_U~@E*i)poNu}t5D?%9asU7UK>#_4t^upS8;k$|0YLy2LTi9( G@CM^VTNqjZ literal 1020 zcmV23VBl8-EkrKTE4RN`2?9f>k3r;` z_XmI%(hzy_}YWPb_&|KKCnw!lGw#96Y31~fI`LEvIa=3+CM z8}qR>0&(Z~;G_UDKC609_W(a^+YvnqzfoxRP>@#NIQNF4oaJWQ-@niQ|G|JBiDmGG zap=`IrT_o;fmuxh8?Jo+_e1(k-XN{?!+G-yVU=!g=K#kufJ}NOn;T>oyT}K(;z`qh zcmr>i${Sb&GIV6xX|?oT*Z`R-*{h%Z!QgRJd$dhEy@53Fuf&9kA_tSw0P~DIiySL= zZS?3cGBrq(GA{T2+jCswoqga{L*C1!J$;~t{=(cJ+)oMc5Fm9D6r2D8R{#Kj7z7DW z0&6owA+()fNkM}L!(`PzI=bRvfC&%uu-WNm_}Mm+J^y$Umx%bMI&44w{q`IxBG8@9 zF|qP}327tcdmzsNfl4?l`*C0-paBv2Uta+Iz9Kh{H~bS#x(gBShf=hV8~=aHPkjG& qE=eJ*gDJu_pu>P6$N&HVK>#_4umP*U8;k$|0YLy2LTmtP@CM^~Ft>dG diff --git a/samples/h264SampleFrames/frame-0984.h264 b/samples/h264SampleFrames/frame-0984.h264 index 3eb31ca90ec2519dfa0fe23c16b642007431f097..2f3e74b5d0dcd99086bdb5473bf8a9405ee59ff5 100644 GIT binary patch literal 1561 zcmV+!2Ilzy0003AFaQ7nL7M;?yaj@hh!it`1A+>iLbk3+(j5Qw$A{-?Z`^^J@U7548jUw@sTNagPujZ7?_`pPgLwiOVa@A%$+ z!}sqv456BdnBI)d|NnjL#nd z>~adNOR0DJ?GP|0H#l0Yd%xBHv`7JfEZP9UJ+f!FKK|hw0096LMF1J$Lh&RedG>=8 zN;%VRk#uo1@4xqGN<1pD=qQs+Q~!Vx9i#|THq>3mY`f-RUk-@4}2e}9v-Ol zB$Pb{k{^};2@@dE1y-blsc8?=Kq4kE5CC`rzfr(HD~1HepeYJ001z?&U|B}M49;+2(8R?D4vykGB(5oHw*wBk`B<@{K8wY!G-{bU;qFCK>%(hzy_}Y zW`92ddHw<{4ki`A1??uVaDp##%K-uh5oXDN0GK3@Na7BF0UQ7V0}cQ*T(Ac$N@b)O zV*lLefSh zpXO_NF~-;cKDG?#QWuZ!_0@_24hK_<2nq#&b(hve4bShq z@OTdP+o}(ZAYA-)Y2<$G{twbjF*~dNAXNdBgbQ;67y9@ZRUnQPkb}uy1k=K~ei7#} zf&oMT0Ehqx3y=U+r9=UZIDp5pn1Ao9z;#E~5#fTn`ax?XE)apj;BDZ_z=?cqtL>jW zE2I)<92SO9LUTjwG8i+Kz?h629w~oCp}(%Q_u{D}MG~&?%o5G7;d5m4eSjkPk%JbD ze>N-^Ku$spkl;uB;i5ecWdG9*;D=j>dxQJ7#1J{gN=JI|paV?xpM^!STqB?w<{Nr= z7RD)9ISK8+cjJ*!ifaA!B@06#5dp#W!Y_^N5B?wc2QB~r0YLyciLe2yz#EJJ00BV& L6+&zPYVZc*ueq2D literal 1427 zcmV;E1#J2N0003AFaQ7nL7N~Nyaj>$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIxr{s|A^?akBraluGO@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAj1@BwS4o4E>(9PXMhX< zR-ip~HppG$Lq_-h@TfW9c!@}kj4a%pX%ZPYU_i|VgpbP6Vqh|VL16!-{6;tw#z1>d zMv(HN1H`}p=AQS>Jr7#P;>tA@-)Ia^64v0y_f)ADpnIR<+D1aDB#bh{| zmL*MJfEa-ne|BmpO~l=8u0{YNH&AAtHU!o!c<=@Q+YyGh$%Cv$fr`S2nBl_SWs*nx zKw$i?Q3^%lO&enZ1k(TI6k@;u0Kp3cabG}+>UuXup8&*4IeBYSRS9Bdo+klS+UidO z5qidoN4!{8*b=?2}fRs{{ zz&7WEG}wXkWOKpK%xNMt-~=%^N&!E#*c^YV&-(xn2!@yg$0NnT`yhe;=ieuc;0>GV zJPi#@*Nh=Aq)+;Q^~>9;-T(lA009G}<65~jkPY75Lk@A^1_%`iMClVmh~5AgH0UTX zQ##wm4(>ims9tXi%c0!8#qf4v~@k%79e((UXkQ1b7)lC9j6P3Q(goR3Q za%`|Ikrk?Z0I~o903g7*z?HT%bGg87O3{Xd6aWMPy%@v*Isv2+cfOd2oQq)_t&;cv z0stY3l}-earxfP2PfW%w_}BM&w%;H7fw@4f@oUd{{VnH$0AZ5chyk%KD088X!(bnD z00=--H77^r*WX~LBUW0bFpRBBSrtYz`&e%M`;>3DF80qOvsFVSrA^Tz}P;%xpN>Z&ay6MZLZLM z0BQo;5K*oU4_(hlgpH3^fZ8E<2B0Mx^dOE0HP{cmF z0mMFZfW1G>tJkH^3g!4hIupkQB7p!P3)%`JPe7RAL{~W6y#M%M03cE9lXsZaDy#RI z1|7IABxT8O00Y;-WjISgG{_Gm){2)!48%$cm3O92o71; zT#n`OFau0>|1j};JwgE0F`cFc!Yfb~3SR(s;pnKvH-7qZghXaX;C--+s#;#eedsV} huK?x10003&06B@W0jt0pi~s-uK>!s(Y=CO;2IEE>X2Spg diff --git a/samples/h264SampleFrames/frame-0985.h264 b/samples/h264SampleFrames/frame-0985.h264 index aabdf762f5e1146740646b927b20b3e0995cddf2..2e60fba1c451a781ad879e6f9ddbbe9a3fe5592e 100644 GIT binary patch literal 1313 zcmV++1>X7q0003AFaQ7nL7N~Nyaitr5ZFNv4+fF9a`8vwGOvY#PZ9{iBDer%+j>)R zlsc3*@Bjn@z$hmH4!krOTfX*5m?Vdw0C|7_fOJnl06;Vn55^V_ zppieSCGbNH&cR9<{1Fa<%cWDN5`*TfFm%Qe&LLetFbx0<0g4cm2wU#i(yBF{005u@ zicPeZ>S8^5n$K`$`h%ykpnw9R5&!+>VgZpbAXx)LZi$wN0*5aVumBJc-5>`5JSDtnl@ZyHoUC&(Mq7e<%l!oax&|OM z4EO*S6+xl&DiT+Sh=I{$&p|N(@@$m*?>qnj0X_i5fGdQqKW9SyEHBU0+#CP_0;+%n zG9vr_U_cN$Rwr15b&8(;&;kq!=auuRRT<|NZ-4+G3?lstPEPMo_Bj@Mf00;yC!PreJ4wcNOR=++K0Q|^+0iDn=VUdsT z(aMe?v(zX<)KTY%L;u0>00IHPVe4QJKoBcLLw@yC@XMZ7!kW5|(zQ6#&t#1Mf)*rz1>6O?fPzAgA z7KEC<5By*NbifXPBgJ&e!K3U7F7|#kbuI9J6+iy^pa4w>0AYs(rc~);?hH5r9e@A; z0YLz6CddY_0D>RSz@C4ByaWk{U;v12hU`Q373L_N8IS{o!GFld8~VkH0RjgR zWDd_Xh4~tm1rb21k+*KuPyj!8DgXp74Hw)F{s?K7fSiP1|JWEJ_F{4GSRO#qP>u$Z zF0wM8$p81A1k?OBLBS{iZPR2T*UVlqWQf6u@2f$sn^7ht**EppGEo zCE0!s#rs%-iVDGAnem`{0Q(&x70`Jv$=!|$Zw+nU1tx}ub>g@1ONO5>^(Fh zaa;Q90IExE=!HN3Sh;p(0XcaDgO1wHTmRGaU_fR~<;2ph8T>6o7*GL$AoRT7xE_Ph zQYZV%>E@3jNh}C_Gzz5?`92q9pJ8nA@^iXeXn?f@1sl<_c`4Kqo(;2@-kaZQ~%sRN!eBejRY z02#pm$N(TtvCv2&{fF?GXbJ=YCqlJD6IsPrT$>)*jOYB|`kVp)?7)?f{UmDwYMcB3 zk!lQ+;Lrg87X1q_(IdbB5Dgsk004k-#YPw-F=7nH*G5YK5Cn3>8X)p2u#ND30)PM@ z2oj^D!O%8w zzyttb0R+I~uG>0f29H4P_yEP>Aiy@HYy_`ykQBqNY^((G{=k8S!h)a(VGJ~SekkFP zf?s?$Am9KnSAZudF6u>qHSiJ%!*f7KXA*!&u-3;);!(f#ZPA$qEicc1)hV&o?*u`B z4TcaBYM(QO!3VEj2*3uwh3FK>fjmwLTWN{FO#+Of%u;>{Kmb4xO`Rwe8rs31A>c0o zcg#xW0?>b}p&2Gm2fUbHndnrb!6rlS0t_%mZlbEMy-=|md^rH902Q)P8VB7{2Bqo% zDmq{RV^>0n%J;f-s{jE2U>0r*8TNnxASeYYM`UI_i##=I)9eS2D8PJEmw{n=v;TW= z7yxw+F2cB;$pz<-leiS4={!_DV~pA70q_Vo0W004lI*DnA)@R;jZu|Oa|;w-^0fd*a$Wg$f1 zsuxi=%~Sw8Xnp`8FhIWGQ(+p)C>L>``vw3u;&E=hf#eM(3E;F%F?W)`^{j6jUkTf+#fz7ZSG zVF+#ydk2M&`EV_Eay&odwqL;a(Qos$Z({-`_v3Ab35^by1kF+R)WuIttc z0VtrHGVU-g06!qeO72YWSue@jV}f1+Gkgch0q&`Ac`q6<%26pw`D$)DDt5F6V0KkxXU;f~PI4KjoiqDKZ z!bq?+{4@@wKkq-v5TJ{@=~A8l>P&bL9#Sxznn_C6z<&U}KmY&%K>#_4v;nKY8;k$| O0YLy2LTvzQ@CM_`jK3TJ diff --git a/samples/h264SampleFrames/frame-0986.h264 b/samples/h264SampleFrames/frame-0986.h264 index 3d2759fed2b74f8343f6b1a422aec582d8bcb6bb..fb0846ca9d81b9be40e4fe6039825153298963a9 100644 GIT binary patch literal 1542 zcmV+h2Ko5_0003AFaQ7nL7PAtyaj>$-^SKs3_x1|1ONsB4s&0Jf$NVCt~tNB7ytqR z04bxTpay;YXJ`rl1wf$EutcyWYUe|-)FprWKm-5=A@~uW8v;4P@k3Kj2})udy1l~# z0096*R1g{hzMWD$5(0n!i^v5wUkCy~h+rUsAyJor5(pdQG0g7PzGp~a_yD$>B0Wiq zo&W*>cV-6x1{SdcBXE8&!IV3>TOy4KZY82{&SD0v3RN%mVISrI#_g@R00e+2lLns^ zRUVhdLes^BLY8oNgK1MC)Eo^4i)w1#`v7|aqaIsYMG+a{-~a{!ax+>rIhZU(|Nn0Y zT9tu?3|hKn%IC?jQwr%nO4ZiRI8OQ)2>Q_^lF&MwFi+}=PPtCQXzHTnV;rkAJb(iP;sBB$z3B4DW3h2C5`vJS*|LN+vj<*)ijm47 z@iqVg0h;ImzzGR!8YKjJu*Rz_4h7-50b;*+jhUwC5F~|M!Cd9spZ)0N{{<$dQ-6jz3<* z?Q8xCpao!e+6Mvw1aS5uP{GBB00Uc5Q1TLkosp;Mr0s#f!paaMO*3evvqKW_S_wx^j_2YyB2mc}=5s*e6 z9)>s~o*V!yGxr7nC`$l;3ypJBQD66~zyk|X6T1Iz{b!3}%7`~J zct6}JxL^S6lpPJeh7#S6-WUQMfB*miK>%(h&<3vns-Ms2;7&ilNP)z`3<2L>h4=$# zH}pmXY5fVm|Ck7nJBu&@s2Zt$zyI_m!RxhId5^OiMDjxTtsJ4pOR3(_2n5r|=s=lA1)-#y zU>@9(WBS2WkJW?_OE(Gb7O;Sr$`bwk3y^2v43 z|L#C&w3DQ%T+d(c3T(XtBl!89Inlg%I7;xwIPu{Ce-6^Xns{Ht1OmXxY)47NZPZ5@ zhb{#zdEn(^#4k85uR;IpBBPJxUj?}`e;L2k+SoPpyL5m5>;p)fzF%Y1f9p&BB%vXq z$KyNQp~n0CgHQl=CnJQjXv3dEVN3Bba$|=|q5-{Wn*eYIk2wVe?}k^0ye7l<1aR4a z@FBL;fYp{S#1MZzHCuQI&&U_cMX~JjKetf<3*Z@Wk*-;941fU(Mgvd@w|V{&BRPlt s_f1ujL8>5?UH4(_z$GvM00BV&If=9ZtH2wK0003&02M-Q0BZ0C;}VmZMgRZ+ literal 1429 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 literal 993 zcmV<710MVU0003AFaQ7nL7RXYyakUG6fimD7@*iDIuCFUfh5O(8vPRi=fg2dD-FM|<5py2RU3xb0T01sKXNjvrWJW*1XsF*AE{jQ<;P|*jAaH<@OWT|h zFHgjY>i6700D#BTivn(2mew1c(thwEvB<#Myam8%VHE^XGI#;F02(`(G)@N4#!ZUT z002RR00bfc075JPD4B#^;~HXztZ;R-Fp&~9W$VD5#b9HwV*oj zU;{enkQ)eus%!uM7y-BdP~E1S&6xt|;ZDQ>7(xWDubOylnI63pu%-Y401^NKgQ6}- z_R&k@0JuOsgn-Tc0~{e z==59Pye&Y1g4e6gltzgsTepOAjE=Eu3_B;#fi}JvHDEQ+n<5HZnT!nRL{Av70I5$Q zqMQrUTP{39fB+yIaY3IxJ_1`BNCu!O03in?;msy&x^D`6rBB`l2*(d53c8>tOkE-q zOjCRSFffmmMnepki=K0{3MWqxfH*YI02cl`gbxE~6^F@Q0D$9393dnga|2Yis;u&VC9&;lK&H0003& z0B$DW2Co3qAJ6CDPCvj!f#k!j0Eqp8A21sgT%LgAcT4sM5D{q$Ld*iinwbDnfW2^C z(TceKl915>0K7OXf&d1_;4=5h$tgk;tmdcl!E}*kh>82GIO|>q-k=Gmgm);B1A>qO zrJoT!UHEtjuO=TZ($&I=s9JfsfrogiRZe+i2G4^MF_5o3<1Xqj*T5uic|0rNB0%Ci zDd15)xKwmL?~Ojw0z3Q*!f#puT}!az!`Xlcg#ZBoFb7tz4{QJg0f=w_5H$b;t5*gD z)55ua*Eo^kNH{Y54cE3>{DLNodM=lr_vhfNlY7AcD3UVFG`Qc|1k6w-Sg21Y4X~|6bt+hU#6vNr^uLFNFt^fD_d&7Y|zBWpz zf&2i0Kn)V2i2ZU;;k|%mv~gs1`(H*o{6G8+G1<#U_o8PE2E+gW0YLyciMRo)z#EJJ P00BV&6+&(RYVZc*w$Y`j diff --git a/samples/h264SampleFrames/frame-0988.h264 b/samples/h264SampleFrames/frame-0988.h264 index ea66925285bd42ad4e58087ce947bc793e070aec..f16e1547d8261ff94fcdc80ca1695bd6b9483d73 100644 GIT binary patch literal 1235 zcmV;^1T6ai0003AFaQ7nL7RXYyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zAv>MD02nyVQIQ_yT-vYmS>Y9APaFW?3`&0k=U+xEC9g0jU$t12b1#D82w+hJVB`>t zfe4a0hKXlKh6@IXXe_t=2ng0aH0#iY1}E7#86!SA@woMB{=fi046uLzAOsR0x@mpS zVu<_4jdp3x$gCvZc<7qY`lQ2045B>mC009BeKnnU!tPGt3SjLGp zbOH#$HDI?5@nSD2uoKJr;#jSW00aa`Z~zbt13^Rj3WaJ8cnHFV6?09niICD>kbnS+ z=lB8u0Ra0_0Ae6B&d$MESYob}00;~rkSF*{dvWc$BAdX@aBDRt+yxZ9;`GP>84Lv% z;;fV$9`G=m0~bI(pj2BZrVn z04_Kx1)vp6`|lJ00ssyG0suss04R^10;IwnSGWLR0HRHz;cjW5AWX=R03q*d!W{y2 z96!Vvz|RlB01yWlHLv+00$o@(g;>oKfB+By7=C#b4cWe8iaq;pwoHS_>3aC!+;^!0003&0B$DW2Co47pU>yuPCvj)fyBd*AONiyppq$EjQjuy zfxa=ERNgTk^?(+YFq1MCv|qfJ%L9lAu|i7-8<)H^6?!<4=Db(d&9|F_B^U*U{Gu5t z>;A*xAQ2#O7X@2r$t+|)UBQW+biVz-8wXXb0s}qY8TVc~-QZ0;E7?W`A%sKl2CK3i z#vk?VG8naSBo3wMCjSEh;!7>e8Eb-*{tg}}!$%ph=y+k?%`JAiG_1TlN0HQx9`(gQ z(Yx{`j*nUY`tJ?_s=F>datDwN#bT?`wtov(WaP60v04aCC;B?f4tjRr3E4;D1s36_ z%eWv8_$pFvfB!Y4FfBHY;s4#|f*O6xG-v;SG}GCZBIO;Q@161cRl19|{_nT;oG8gf z->^Y|xb%Z*_@(!+2*3-@-IZfUapdIU6||cGp%sML%K2}_x<9A*j)SNVUXYG2s2%<+ xh`|4R?}$_XlPkYjD*yIAr-uQr0003&06B@c0jt0pi~s-uK>!s(ZUAcV2IIbn6hZ(1 literal 1111 zcmV-d1gQG}0003AFaQ7nL7Si&yakUG6uhMJHSUCgcvb)i2pD{3b!e0z7we*XK7RmU zplI9LVeM_XBAuY2m;hAgGLTq8(B-=THobsBbyGKhfB--a|6PCt0E%37b`OW}BunQ4 zfJ_)eCIkaKfdB#qSQG9!%?%5|znv~d02G!D_&ZSN+S~n51BT!L1OfmGNEW}UK%v6I zjSNli7@XoSp1`8&=>ksh00IC?9AF}xtxp2%1W-u=WVf~m1ByrD1T=}+^eT@c-+%xh z2nLX7ha3|*Y!o?UH*llF0H6Q}0J;ePL9hT24f^t#fJyz}4*@{pn<5l+(QsREO(ma3 zLB0TJ3cD0oX&h)q8?Z1?&;U3bU`uMD%KL-cCYJF40RS8>t4CMPkPS*!UU1K_LJ3ti;VRIsPFnuMALY;%r)&*&!hzOMto13Ea@i8;A1!pdjMG zNT>iNgr~8RRb3a@P6`a>{PavmqI7%iA`ihAoW!)(V_OR2ACQHA{=dyLCWgY0yyv5Y z2%rQs!Ucq`5?M~4NBvTj&*$JyKfp_Y z#KWKg+A|=NmB`QE00JP@2+ne=2*jqO00Ib*NSg^zckj#Y2M`frgq9FDFBunDPSf<2 zrrQ3!p58bxL4Z&tBMR&6J`w>E2N7@!TTLVx9>0)f&QDJF+;2(uW}?VIW_Q9f-(GsY z@Ft!W?4tsZ>J34FRIKRt2-VlP$YSKg!2uMl1i*o5C|AqM?ha3XgNKSR(4#gz7DIap z`pUYJJUtIFRgyjNFt6YwK>8>s1do$KRZ$a^B7V&P3X$7tQZ@zAwLf!-*ufPi_0b(KJMv>%ZS-;{*w4`>eJ{{;Xx~85$Vo z{!s(Zh&g=2IFlh*2Dk+ diff --git a/samples/h264SampleFrames/frame-0989.h264 b/samples/h264SampleFrames/frame-0989.h264 index b630952d73140f60037f4695bea7e86cd0ae6358..fe2ee02d6e4235bb17385321a75f6ee429c5b12e 100644 GIT binary patch literal 1200 zcmV;h1W)?_0003AFaQ7nL7Si&yaj>3{v19|04&T1^#!g-;WOlqSEk4Q9xNr000IcW z03rSW0vgP`08$MA06^X7abN%;$dCXCL7uOFau1tdcZ3Yy_y8(l6c8M@+<7T+Z1AW4;{XeQ zyK7@OOcl%aCV&7yA@Bo<>>RaU`M8V_GIQu!q#jh+kNfd{G5UZ+axJ4kQ;hYy7K z05(k86J;v1EYT4KU(yoYmkVDG%wq|y6Z|A7$+Yql zGs_kYXcff@^ffNB^IjIZ-V z1OV|F21AibY<2zj5HL<&V3gM6cimbf0f6&-4mOvLsIR}cM!*A1paf{+@FY6h?F``W zN)Hn2B8eky|GPp_VHFGF9!W@l@B%`$#uU-5^+Jj^+FTGB2M$A|hYp>m5Yn^zzyJ^j zd<+Fm0F~3H^kI4Le*gd=5}*vl0uw7}(xt|y>_7rODF75ws0Ezd|7bsf;o^($dLPBS zKP&(knGF!6?jlsb57dDXF@XRH0IySM3CN*=3#n`BdUwPMJOB_H0}aZ}lj7MtSX~;4 zfB+yI00IO+03xaY0vQRA0oV~mFw%nB%7CmFNGQ(fxPkx|rgSZ9l^P$cbNnCm zKl3qUO&(+aARtit_ALgIDZZ3uW5E1S0f3>inKpMNl_WSs7yzc~Ve%2r&ENnC2AuE# zCe9T(BaE+bBz)=yQ&Iwot`=uE<6y}T!jZBM0wEy5Zy&WJeBt6Gv17sKOaGXN$N%EI z004k$HUJV~Z-ClE&VTN`wm0f^DNgY)1cyKX5G8?EI0}YrZTQR00q_89%u9+vk6$2S z|5_oZA#<6^M~7kpm?4G$7Rf^!ca-(qd=JY&5bOW|0YLz6Cg=vQ07(b)`S=r$@Dd<- z;3Pou5esLe2-?8XmNs9$O#1V1Bl7|-coR#_4x&f=e8;k$| O0YLy2LT-R+@CM^!@c&By literal 1342 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 diff --git a/samples/h264SampleFrames/frame-0991.h264 b/samples/h264SampleFrames/frame-0991.h264 index 8b0cda5c2e2233fce667b3cb1ee550b5306345d1..9fdb8b94c461f56f626ba45bab9240bfaae4feca 100644 GIT binary patch delta 1760 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 Qv*sPI1u;7yM@Jj|2en5wh5!Hn literal 990 zcmZQzU|{4l01}R~6r}dBwi{X~RTs=>^6)7*;qv-$JwxZ()6W_fFqN|F)+9{Z`8=Tf z%RU}gw&v!85qexa3Jhl39tGP9eh|=f?7UXB(cJJ^^#1~uFQOk;$$Xr`{igl@4%q?* z0Xr)N1{SshW?UwL3$NLKXJAWUu-K^g#;Zc^nDeY{AwTT&1S2#SHi>OBC|N4D=xgMA z2M&o_Gffyinm#FMQ4^78Q8kpX(`8mD4E{fPrMH8016$8iZYx#k*TMfUHZUm6V_@O~ zQs)>djjrBojAU45#rs5Xk;{t4J)BSf@;-3lbYN~{IJ2ulnxijdoB02G3DONB>KcoU zmL3c-SRBRB<1Uq%XOXb_{pXvnRwOWFG4OHNSzNnU=JE7nLyUslA%}DUVaW#u5;BS= zX0nbPdMEZCvu==Q;aKv0!pRTolBQUgSu-dwMv5G$=W*Tp`_L4L!go{u-s4r6sy9#J z&XFvx00Fh{>Kw)&4r(>ulnl95rmE!B-=1&i!0!J^tf2Ac%gF5$4=^aWa5%i1DbBQO zW^|Xs35E{sQzDyGJ^wB~E2?(AnPVAuiP@pVRZ7*1ZyLon@JJkM`RCpz&E!;*?H(*X zp`qZ@E{5rbcQVvO4mLzhe4tQ#T%vNK**>WW8d)l_A66b)5P4zB#yeR7WdV`fIT%=Y zy2Wbvtk~2K>xUjln7SZP;aAmPLEV{c2izX8+y$ishCH7Rf8`NO&V^UoTV z6P#N(dJ2=96tf$qUOBMKW1;h|3o;Fdj!l9D^JmZY1s7jGzRCW<{@-8O;FsZ37VKUeH`DHZ z95+k#zOKLVzvr<%dU0Z>*pmDTNe8fNEISu5u0EVpSzyFUP@NE!Qs9iW=#o=ud7VR1Gp;DQAj}IpL zE?GG<`p56E7rd|Lvut{KKmUL6>(DL>#=tGdJ*9u$QGUQa_gXgp*E5a`31=G5FiS-r zu+=g@uueE)xBX|?DGbRWN4ClI``Xz3RO0P3SpV7Sei*OOQHM+Wndb?ge+~@%fA#kB UNn$kUN`Qk*)G4DO>jT?k0FxEW5C8xG diff --git a/samples/h264SampleFrames/frame-0993.h264 b/samples/h264SampleFrames/frame-0993.h264 index 255273141dab5ed5dbae075fd73502aa13197ff3..53b5605c4894fe1c1d2723d6ce6b8a846ecbb8c5 100644 GIT binary patch literal 1349 zcmbVLZB&wH0DWErM27l?srZ43l#yj=xx!D-%*!EG%qJUeHubPu8+y zSW%8ykyCS)pcZeU?K>C;rGD;Uza>PrD72 z^V3>THHHn?xORXi5Ff7#ss*%A93F)EABWpISff_;k>4b^0(d@>KtT3Q>>`U(ZrS^S zKbrv-cdD90a#x_Uoa4`vd*)0aM@FPeS9y^RWAP5ueOtr!O+aV;n-TKiV7# zuvjIizIb2Qqiv;y1X3{$`Oj6gi4lIvI7(u4x9gPO#=hsf)~6mf@y{&X3ouYx6o9e# zJkqFZAmfmt-~eUOzU2)OCuk$xU>-mL0@yB5$SQ40d|BRZE?EKqGZ{W=?1;&$>!>@g z{aIJvwwyzIsqu_NAa5x2ZK2HEyxF@tcd=GZzxdshMR(ORwg*yVgMqsc0tlNKXyZEc zA(!FFAa*t+91w}_Mr}^?_fnT-YHW~nQ{700R4gl|;x0J-riA^hPBS3Ri;Bwe%~+_sEskA=CS!p|Hcjw2x~bl|H*0 z+-`SfD2k(*x5l7lwQy68()L9h`_v{Oi8PAN&VKZ?br#TgNrU#Vapt%D`f?aLqyVtB zmp3~E{Oa4d;un$Sa4%X!TO|`4CjF&`}>tFSE2cDubvwiWaNe?DA4KqkY8ShC^ zr!%+dr&oDxGBZEEsU%E(E;x5u-RnQdC%bP5IO)varFV3TIe9facER{zY$5LrZZp>* zD;*s|{|&lcB}%pfys9SD!SIm!iA42Od%Zwa==R6tveJbrB6lEJGsW8Tq(!@HSkkU%lg8QqAoQ;VLoRmunC)^+L;uwHgQ_7ZYECRZ;wUf#=ev((ogX+7 zAB%f1U6-2`AX#=-tAHw^UssfRSW8T|xC+8orr39L)3)F5DUr1d*mn9vHSm_0uFaP> XpmXB?83}&L4nyKiPpoUc>3~ zj*T$H0K$lW9MY^Suqmonciun&065yO9)i^@?NX2fa3}Z$0tR}DQmIWsMTf8OWdj}n zTX`+;x<}@?jO}=30C8u{oeI?>$3!d#jQ~$C=m-~a>wP6jyFk^rzvLOVmz&;%d* zfQJKrkkR3nCJE>lx;Vw&7={)b{RnmQKUC;Q-@pJ63l4<`#7%odPoABDxTGg=V6fK@ z9lY2ewL|$p0bRym0)PyJoD2k?UQ}qJ(O}L1I+-gpDLrYt0096nwD1u5w~Pwzs@SXN zkQkr<V^?Ke-?PL6`tRp^lm!3W7R-HGmUz z0003&0B$Cb2Co2dr}O#vGJpU80YLyciKGFm!=ioyWDg+_wgNr#@Z<7=0AwB%E3^A3 zIRaX7=ICR7u576TGw z-1&{yp`-$=f~NwAIGhzxA_YD}gbGFFA0^^V`=r+*YzmrqUqVL33=3Osxc}gQSv~F+ zOx6Fvy@80pQE~3ZlYj&rW&AwANP)!S zM}?ss^Cke!=kL@C%+`%2ii{1ufvVq80z}H|L5);xeSNSeGBH6P8W8Bcdb;at3UtrPYaVF1r(Ej1R)TB SC>Q_$0YLy2LTLbM@CM^CeaA}x diff --git a/samples/h264SampleFrames/frame-0994.h264 b/samples/h264SampleFrames/frame-0994.h264 index 66fa0a6d6aacfda9d624093a7f304f96e3f8e153..7a165323eecb6136fa9ff8556ef40f5d3eeb45f7 100644 GIT binary patch literal 1189 zcmV;W1X}w50003AFaQ7nL7G4syahKwLs!(4=KuO|p?CnWi~!&Z4Ixa31cMmfG#;-& z6AsbV1&r*7!T82|mOl{Y$NyVGrW&V!0ssMk1|1hu0r(uwOu$X!s}E5C0Dv^q0yIYy z;7xw%x_4%f8Nc8Ff*bv1IjcjOwUqC|Im9T2i)U#NQMT0Z$p$O|yGk>d;K;*WGuSEs z3T^2?3~4lCsB}r{xhd_;-ypyl#xCU{uaR89$Nz&c00aQQ06B@4J`@8;M6%{iqWW=fc0YP8_@>}UXGu#8x3Q{-# z2mq>ff>LY#_YiAF4I`>uH@x8-U&yi=2f%l~UZ1ATT09*&#TA9LNo?o<@ z0097}&;i8u4qCr^h`|FVHifQ1#Z8p|_o=85dXXjSM6RRh4-4k@x7yf1EC2|Y0Ktb} zNwXZ@$qF~%%Lpuz^I8~isEbekav&%R-Jvv?7W+jl|NW!@0sx?3?c*{M9HyfPh8zEI z0CAuMki2gUi;R_&&!#W`cnJh($Y&3cerbHZ_`|>eAP<)y-jMD78d>{>KmiIinMo!X zs-ol{^^qt{gpr~D|8m;@Hh=$Mz+XH71O|#i1pt93%P-j$5MlTLAqv+R=80#j5K)#? zB{LQLz7hj63xc2|2n`GsMh~JHP-C z1F&EMiD(*Kjp^G9%O@TH06-J~ff$L_!gEcrGBbj|+!C0sR6GRpno@rU*ff`ECXbH%mz=hP+^(8yQJiyJCgO^{JK|p750}3y{S(@DG5>9z@AFv|@XS;$H{g z7#Q-y3A7@D-Ik_B?w!UY?GRakhu?j_dw4MYSN?AzZe;bwDwHVlybDFPuN!EXrBBum#WLW=`1<+BkO|N9lt00aY3 zumF&^zbI-HfANoAjhweF@LQP(~!B$ z?nj4W0+=C&02avyM&IT=cO8TB&;&aG00BV&ZYGchuK;*30003&06B@I0jtBpd{2qs zPCvj*f#f0-;6(Zw`EVgSlb`{WlYUS2Wc3XUCi@c~seS@v46%{wG6$c+9t1CN`b1XEo;mr(1nhckhg$+e$sHIm|Ge-fo)z{G3q_s)V204(3^h>J zp|+wvjDL~p3rn6C)zF}~hLGMs#EmfM(U@>hNXcS!+;|Jp4LW!em1K!5Mg!XNi#xWD z^^Ng3Bk?=JA5m2{61`nKU1!OR{}F)`SQ}6g*ve8J>{Vyqz!L-j00BV&6+&qMYVZc* D&bkEh literal 1148 zcmV-?1cUnk0003AFaQ7nL7HG1yaiW5LnOxjAMp7205%u~Wzisc5n@XllD7CqKmh4- z*Z@KffqG05dozgnhqDxLL%|4%;s65indZO*!Tf+Q43K;cKsx|A0Pv0_#Te@&^JGH+ z06FtKMKuPH_q%uUb;S zgW&uo*t@|Y(o!MVvH#$~7yMw(DSYJ~ve+nwnujl%Xu!-!&Mh{P8IvT zAOH{q0xBgm8+q3J;^Sae&K?L-2?{bue4F=X#UKIUD;1EWQkl$B_y!=Vx0@|LO^>p> z9E<^xHiERVFnuCd8v%ezj4giHGEVyeoWn9WQRThjUu^>g8}+*u;*1lNKdZ)R<| zu|I$ULvk6MSNe)m-meV695FvaP85pLP%7_Oz(7KooDPbuM!3uU+8;X{P%MnSqoX}L zfXW{aj3$GID}~~Z{^$k)g46W7wL+M68~6V}fq{e;bi;{(l2h_VjKAD45CBs5SOJeS zm@*YU)%XANw~c@RfDi^@M*{5l{tSALz}ENs3ffgtdJ}eHyp!o`IpSVp-KP(27;s!JctWNLMt4;3`GG9 zFbM*I{RgtUAgB-PMX>Vf_;nyj%5f20#A1?T_>0xi%0*v6My7$|o- z(k6uRUP@S#{@efr3}EHO%VtXzPr!`e3O54@h-egz`@v#1%~Jj500IF(41vMsMtk;+ zSk9VrvBdyQ&;S4dK>%(hmtWWX>~b#1jrtL2zU-VTrk33 zx0i?4%@`B0;1U(OSP(u&4gcPF6Hf~KAQq7f$RWT6nvf2)tp+Fek%x3;c746tBs{)& zUtt&tkUWYC20vaB|Ey^mH)ji+Cp=CItaug$mOMop|KK8$57WS$ypVfZj8sAY3Ji_i zz1`&ahKANJ4FBEX59E_ZU5VL8bj(&?vl#y!ffHC85C*k9#1Fr)s?WdAe&>GxOb`G7 O0YLy2LTP|%@CM^Vap_3_ diff --git a/samples/h264SampleFrames/frame-0995.h264 b/samples/h264SampleFrames/frame-0995.h264 index ff292e9714d24d30bb0fba94a7e4813d6cf3afa8..d720fce54b5e43caedf8fc3107c8552b9507ba61 100644 GIT binary patch literal 1090 zcmV-I1ikwJ0003AFaQ7nL7HG1yak6a=;yjG;sQ93Mq@w$002NV0)p@m>%&2%o9|?~ zLRfkL3Sa;rArW{02nK>e0tg8zs2jk+6eV&;Op^1Z1d01iFM=3ub_!6=00<^39*ru$ zIKC4YU1pqjxCfZ7MF&{lmR|7579X(MF z03u-@|K8YuBCdoCe8|hfqT(WN?id3SI2_nDWoc=sM+5(O0AS}59GXJ4yDbHR2{a&5 z24LV%GfEl%qd)?<00;sqA;1g}S*-bOL5J|sKmyfl2LZy}qfTNj9f>286eb62dz&6P1o;D9dn`f`DBE5E_Pj01Jws&_xP_mEs~GbXhalOh9~_()};K z@Bjn^Xag1it`MmG+zfQFkO&ss8~_0V$d~};PoDqw1Of+2&q5;A+I#yz2pBt>XU?S* zXPimC004k6i}Ypw!cbA;?ZFNUdaynghg$B;_)_u{7-eyWA;P?pTnsn!Ai>%ANO41= zb|zeo0k#6~M7Q5K0W7Qs=8mf=BGxul3=&Yme-#o)yiBkMcpw}E<^USnPy>K~VZ5rw zOF`R=!~g;WfB+ytiP!)n968`j;zs0RP3Yc;DgOn6yu^SzQ^o=ggc0Mh3hp4-wGId; ziZa`ZfA~HC06<6v31hw(GsQyRL=hT!Yy8PUV0K>R{s({*bzop_Npa$%Q3yW(4V+e- zG%;R$M9w7ctN_R00E%PN4K0+W`#>6i5Hp2AR46*jgTSBHhGPXSsu0p&CYwbO@B*O9 z@Z5;!CTr!h`@9(d06+llVBkzoi!4iLqmXg-00IDE*0MmuHIg_CQmKuCWdMEOq3KcU z;Qz(|0swTt0-z2+&l_MC7F19G00a(U$SQXK;D@3B0RRS&zykycI-zj`LxBeuPy{;w z00BV&ZYG!puK;*30003&06B@K0jt2?e?OmrIR61M2a!Q89dy|&0t5ifw^9G@oBRaG z9z;e4a3ZK5AY6g_aqAT1VO2w*&p~p%2_4;7evGr>AFkR6!e8~PZ9BVs`--Z}x|qEvHu38#ep z3JM0`V4WAH`QrWzQ&?Y&c&$7Nz#%`{o&G0g*(qVZ*k?ZW33}Gn@Fy*+y zdH84vTKtJE0Xca%ETT-dn4uf{&cKe?!WeVtKlok+l}Y_2`}oc_mLDaF>`~|q2}E4& z^_)Cc9+=ixScZ6dKgVzlukk{Nas-``Y$)e{=aVHFr~)<>*{!zR2k-R{4~75& z003YI5Wqx@So}dn5I%$V01Gjc@i3V!GfBDNAf$?UPMbQb$2??5YZf>R;DBTR5G7dX zBs%?v@%5l65CokG)eKE#6=85|H<^P!QBCmR5C?Sxu!n5}7!y?A-~@|UZ$6Cx5CLz{ zvkekF0098e#NYypHFUu#ix6ryxiVM*07oQ2qC^o@gztt2`~?62KoBJ+%7dag-JDra z#sQkbJw6D#aqva=ga9FcfTy3}Xo!RI(C;V!!LKHu(j&+K0%V?pJpd2^fCN4Pj=N0h zkQzM$x8MU8f0T-jg=<^6#I4T9i|Q~?Gt#*bIUo-zz;8+AOBp5P`6#0M{F#Hj_O@2SHX zW2zJY1PuTHKL068821T?k)316VxCg#Qeum=E$ zcZ*>H#_4r~#|M-hV%zfjIvGG6$0ciWs&4+0=~J(|F(}K=L9P zf>;7pp!oxg1gW$T8fP=ol3<`Wm1sfW!p0)FK^^A@^7sj`Jb;k{k3->)s@iw|FuS}x z4MSkY%ZT{j`_2Uu^_ns-z2N6hEDVFcegx@~Bt|#?<>2|zvH8dU7J)SIp29j56bxuk z%~Tb8?c#?9DJbw<*_5`G1#|=_?{mNUQ^LCOK?phX7u0eT{X>9bR}dzqV3NXL=Y|?vU2?^8&W#E#ipGiO6=+$6xnE8<9feZ}AxxVT`xRx=+ xph(bSuIGP=#z8~}Ghm@>z+!s(Y5;2R2IKjJglPZ( diff --git a/samples/h264SampleFrames/frame-0996.h264 b/samples/h264SampleFrames/frame-0996.h264 index 6b1f2f596249b26b49aaf44c8757089b894dcd42..97eafd5d34c3fa976d92e26eb6e9c374fec6b042 100644 GIT binary patch literal 1830 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 G@CM_nV!IXq literal 1050 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 literal 1179 zcmV;M1Z4XF0003AFaQ7nL7LziyakiQfp}0-00;;eCUZK(N)ik4(JkM60Kq`fmvqD0 zyKq4}K|?SAtC&hbVGBc)ECILd0tu>xyaWIO0C)QA03ZZX1kPCv+$irD1poj*1=LJ{AlLv12K{+Vz$EYofS_SbkqSI$z%95Yl24$4_yM3Q zbU{I+asDpdfr^J90l?z|TUicQ*dEt3_lN)x0HJkme*%^={c`XCtOOqbC`j4T4hm z$-h+JfSfoho%7Qz9*NQG+(IwLIxxvu?zXlH2)X1W|JDBH$k1#l3+{S2K#BlEPH?cL z!fPrM=>Oy7ydDS~Lr#kbZ%&j)E7tBOZy-_600Au4A8UftP0*A#IoCvmB6&0XwJsz@I ze{sA30RWI(EC&-2M6vH|t%~1$0K$L(fHInaz}eCG8~+Ik$oc>PfE}O)08k!tHl^sq zt<8__L;(&U0C159&V`QwwRj5P1l<4t0YLz6Cb$N#0C+F}00BV&If^YAAh z&+rtWaWSwWellL4g# z72Fu;>jDg3r}aq!IL-i2t(9o-K*vv;g=HGu($uVZU6oJwp-oR8A!))bNKO)a8$YL)ERx#ocG)ZR+1*u zpa1v&l!BMsSS*qVG#C?43hEM^AQTU50}wF5HD&SL7r!_bME41cKr<`V> z;*M)TA!s(Yk+F-2IF+*^l|_I diff --git a/samples/h264SampleFrames/frame-0999.h264 b/samples/h264SampleFrames/frame-0999.h264 index 2f889e7ed3ada3acd4804fb4df1b9bc190c485f4..5324229f19d2afc9f4d2d1104ef0711ff8037c70 100644 GIT binary patch literal 1639 zcmV-t2AKH(0003AFaQ7nL7Lziyaj^93ot?e2wllL7^PxjOLE z+y6`9Xi5_n8v+nVfCC#Kj8LuB9KuOwf#j)xwz$QLk{{q0oE0i950Hffm0S2d3`9hv z(MR5*3mdF%(0z(HFaJ9SeCaW#CN~+L25?;0RR+T;PjgRy`l|94I|23 zH@xv34cL4H0SRy{l8o}Ca%}LY{^I}(fV-<>I7}7G_N@Q_fJ58>qIV}TU+u(Tfs@-p z*C6s{%YXaSvsq|hwEEfdYS8VGEW^b854-FO09TpJG3mEZND zk#O!(v{#M%_q_vUeC{xENCCj-C0Td4K7dyXyfuAI@3Xv6{$huU0hKVu0Qu^ zm>ed@V2>oEKl{QJZZM{eZ)y}#w^ZPO$Pn@!Bsg^CNQRZ4-T(lAJD@NXR03B{r?G|S zz5DR^8f(= ze&9G(USuXOmlt6_{|(px2mydn=B&Xua#Kq$et!UTp@^ktno3Pj&)gU`*`4U=G?PS; z|J(>9cB<4mU(c+!|M;g#%s>828FSy8{Tt9_pAY)$`FzF*hHyn6z-&O?Cw8SI(HHPN zY~T##2jmkBSNnJXL#uB@jjsT17xBgV?w_e*bW(`hqyi5W^ zpa2LGz^k4GLpC=2VSw-eY|Ki9AjhwiF_FCgS|O()bD7FVhhhSoh5#1HLmKrAdhR|4 z;0SgA00BV&ZYH<}uK;*30003&06B@S0jt0)hx70!pWr9J;$v_C_Ce`VdTf7|;3Yuf zEOdJ5gl;g4yNe_M8UbklHi12a9M2~EpscvYw}lCd`@k_ylgC{B|5!{;Q{cEafIm=O z+$`6CE+fQ8$AnsrAJ|@b>u62&#!-G>5dlI6ke(497Wx)c9Y`sUw%?r7 zEWi>$_|(TS1HJC>MSNHe4eEF^4rrM__Tb3QWtl%Y;C5)DS(G4c>;%)o`V!&?g`www z0t!F_K`PY()Splf2$X+sik7s|_us=gm?|R*cc;bk0+`;M3n;#7Y-vCO}Xg-t! z@l1>~^^dj;_md2JV9Veofjf{d<|D=YxLPes5E5_4PCa!1ARof6Ux0f9kN^Y#?SL?@ l9fJkp09k))u{3ivASY|C;Aij|Pyhe{K>!s(Yk+F-2IGYz*?s^3 literal 1535 zcmV$2?&Zzi5HsRHSUk!_zU});Gg~$2H17_g5kYh=oE* z9V$&H0-`m3koQH}%A}Rgv=al~!MU-h*!%4O15nI8>5U!lm=jaK56jb2ib`r@H zN&frb0O){d0dEB1ZkScffCZU=9qIwX1?BIAN$0EHU__@Vh7p&oAsfVjb!BTnv>=gs zK1PlPzL+PexH6Cb`q_`i3bB<3rN353!A*MVzeA7k-Vn%4mn*)6GyZ`17 zO^HQiRH-NXO_0DwhArh{)f*Pb3C?dZV@L&A%aA13|Tu}T0P5sA|r%2PQCe*k6!XuR2I z`fPo**5tqdKp>Z}Z7fV5NR{JYFb#1STJ`W`ouJNPnK8nTG4B$8v1OOU<0)TjV3|nkK_(E1R@9>L_ zMovB?>3&WC03aYhai?TlYzyy>>I8!T4FCokK*UK}s*whZLDTq)sx}oDvsoW6|7se8 zjU7v0WHXNR&3{jBEb$#ppaz5uC#qn*W6{6f5%7PBLcE8!2d%;Y@~{BFA(%jjiWE-2 z_Nqcx=EimZ{fTAt4#OxS1Ym%4De#qm8}F=oK2FYC;rI-F9=CQviM+3b(m))dumC^+ zU=hRXn44fh+6GK=g9s^Uh-SI5_lE!n8$e8xL93n)Xhv2+_B$JoRPsw(SKcuJ96oSU z6*M2TxNhO*Js6+>AY_P}fB+Cd00968$;3YufEOa|2=8$N_gZC0k00w}1 z02@I)gbHVqee_Y7>V*rN_kdk=n>I84{b4aVPl30Fun*K1R|_}b6Oefe+7PC4*a@eP z>M$+98xFcZ|MmbZJ*r!r#5wq4L{sS=iqGkX6!G@g6WY2xzKQvJ+$P_m838#hf{G|wun1jO6&;nw-D4FOr zCqGNm!~gd$g>Oq=dpr%rwACf+AGXRH#&+joHS`U3w-^h(1a8=fu)i}NHY9G|BFDfQ ztGEqrQvVpD4iO6i`^gP)6u+&7Y9fNjlP7WkWIxt2D3E!hJ{vax46BuIQ^GEujgSw; zF(_&3H?U>Ah%?)He6Zk7!s(YyfKT2IJ^Cu+jhk diff --git a/samples/h264SampleFrames/frame-1000.h264 b/samples/h264SampleFrames/frame-1000.h264 index 1e4742ba992ec95b5934080d116ed80436cbb618..98a22fbaa949c68a3373a8181bd7fef463fac150 100644 GIT binary patch literal 1409 zcmV-{1%CPf0003AFaQ7nL7M;?yagvHKn!>v%{|+2XuMA{fZ|X|DFwiZfyA~95gbu8 z0~iO^pd4UV-Xsx(d;l|TzEg07ZB=F900;+wP+o#vcxW`Yee{zsOAkN*@qhq;bWcD4 zKr|8(K7g#$i+C_c3tXYoB)s`SB41QX;D#HWf|N7(5etQvN~caO2h1=8AMliM3-g=c zJcs~H0LKVX>V4cgRVK6d002+{MJC!ybx|I>QD?j|{lU_zh;RW>h)2w911e}hq6S8t z6&Mg7##>AP#Eb$P2CS_t^$7p>_yAzyK4CNk>vCEP1QKXKqz*D;>S_cYq)B>_E2#Qj z3hW9x&V;NBToHgIP@XtMJr(hx0`tS{!TI*~pg0J{xiA24fPH@fK|v(3`e;S#|I7pg z`Ot)nK)fiKg792P?IIu?&wZp`>r^h{xpg9<~1 zc_g?D1|Q6W2WR0S#SV$snQ}M=*bBW9-+wR!vY;Ie2&(BLrW-1T2`FH{iisp%SP@_W zudV=45DYbySjlJ|nr0vX5GDWt0xVAe0YKr;0vA(P)Rg?ALl^7+j2J*o2OA0;p%cB4GFcFe$J}E3%L%@nHoY z{twKE02$o_1{oOs{T!&`8y2BM8lsOpQXl>gfB+B<0S2kw2^HRnKPJ%}@x^uiWT3D+ zEH3)^9sr`N0)nzjj+7OegYW>+#c6^<6yvl@Vn))y7`y;=Ey;xx%13>m8h{{1h=+ai zj5ahH`tgKe$!ZP}?~z4t_!g9!z7PCh0Cd0)z(9Keoz1=kiY~O za9U+fmH`AD0S>?b00BV&ZYID6uK;*30003&06B@U0jt0^r}O#v6OZr~AXzssYyv+r z!@oG75+EQ#fstWI0~fo*BvEXdJ>0*);A;~ka*C5>!|)TJaTgkMVF2TG-)#Y1^Yi9A zjBIldP13|S)uYE|LpanucuuIsRLq33ks*$XZ{umDsixLo7 zLw#ene)#c`1Go%}y9Pe2D@2w2*}t$Dd48|4K>!DVqP>&YML*o&BopVqEi##2*n!u_ zkOUeP^K9IRZ^lL@v52ANS$|pt9RPywlVSh(ARGPw1G3xzaG^&qD3cuh!&Jt|)=dzl{t`yeBEURgBg=l; zw4S!Nw~NpwS+wez|7QGDWwG{Jfi`R(6;CO_4;@PP%C zR^D9CzWO>k&6=JLQPcLH|Mo+`0Gms^KtKGv8AgA0uK(m;_bTuF4$2b5gz#hPdh1u! ze)H3A^v~#mdG9CgoBV@-?|vB{^S|*215ziWA#Jm7KRrNt>Hb-0_#R*Y P00BV&6+&zPYVZc*p)pz4 literal 1130 zcmV-w1eN;$0003AFaQ7nL7N~NyakUK6tD>BwwQY`hQNnWl>lE<4S_({1yRuFLYMG} zUx5r}l|;XQ1MC0<0f6Ee&EGZtH5B_`F~}oK-n=jXATR@nSRz8KAwQysA3^(o9>790 zOeRB(%5HcFDIy$GXHKf|#0!Y+V#fiT5Db6<0#%NJL$BB-%hLcs09nwjP{htrMi(iM zHe)!qt2fhtKo!^$$Gb@w(3+>YB=|G{Kn1@-#573o00aX^Jpce89C1;GNX*xR zF}2Bxzytvtkp_r8^;rGz!OsA&00;sEsM%0-M?0g7N*KU1SVyJ78)O?!zVJW-7zhh} z?gog6JuMFMfD9Hgat)(A00A;@`|x8RfdC)_00?~oopzbiAT)XhFTe&52?haoCtxXi zjR2kEyZ{0Kay$SEX^Q|9z8wbPFE$JT z;4&Se*g&}TEbrU~02NLHgi3hE)9lAhC7<`PN3a{vJV7oY(EI0YTm*>9qkhOhSk1OWjY7D>|x`(A;GX+QV@ zH$VUY0YLz6CddY_0C+F}00BV&If=3XtH3s=^ZED_kMI;AZ8v}oq-@|x%kO^yItLM9 zNJHtvj@Yg~cQu?Eh=(Dwm{^?a`~>J6Ma6=qkOp1WyxpM@{rS^hjKnLyr^C;Dn*Zy- zns`^r5efmV0rx;{b$5w3|9}V)XCwJ~D^NkIk-U%o5eD5QZh*ECQ8OOWZ=QQu|4(h8 z0Q?3;y9OE5NL7lTuoiW7j1;Yb=6}Jf5FWV&1cJZ?9ct9!|K$LXpDpv!c2&0ke0l){ zgnhGep}+Q!QdiXlcK)c`00@Fro<@3XKmP;+z$^dCjNyhXcZw zJ=z>wumZpUnnaauLGd49D9_LP`$qqL(*NoXW{3ab;Ge`qp%DlsAxI236RIFrhHB@{ w*Du#Qiwy>TfQ&o&-WH1Xd=eu@wMjN0_dRp^db|%X0003&02M-PfNJmt<7WBH+W-In diff --git a/samples/h264SampleFrames/frame-1001.h264 b/samples/h264SampleFrames/frame-1001.h264 index 4b8e0ab5aa0cec1b50331a1dc125b6e451cda83f..ae830f3e84109dd0a276d9a52d1494648b248d7e 100644 GIT binary patch literal 6777 zcmeI0XH-+^*2hmsLJ~?6gh1#J1*B;Jfk6dA7f?Yg0ShEZ6H&lMkdcJmn*$0e11ca2 z0x}jZ0trPx7(l>E3y6wJNsua#oC}URbMKvb@4WBKhxdceI_sRZPFd%-|NFo9dCmg> z00e~vmiOM~EX5uONpcKch(rnj02B~d*?B4uJxMFqecCrOmJgn>k%FZlSl>wkc8@&# zd&jc_C;#u8Jd6Y|EUMd&56u0eJ)|F80*oOh^Kx2&YfLj!zTcH}fpSh05Hv9NGzt-k zx`}Vn+4@5&1AUM;P+I^d$Ir`#>2zrcqt#|2t$&gnGp?>ME!0)(MdZO1Ou@YS;kxNh z7Hw5j8s&K{^?PJBwfEhudGzc6$F5;LSVr{_z7d(^GQ-AXo5J7_2a%Kuo)vZr1+7hgu`-ki&i@ZJYfNQ14--zQHLa?qW;e+9H zcYURP7e9wPY#-m8kgn7wa8^WXwd=bb<0khZ`(Yh{mGE-3A@@{^(@*b$+Q2@K?lLw* zz}iE6ZP8;RQQytfu|QpIA$Tzu6eiIz|CZbfGY?KV2ESJZxH9t6aj)zoLO{Ro&0A*T z1_t@LmUjCDW>@*J!LM)q1=YpsW$ia3(RjATp%YMJD0KUI%VY8 z*LcEDf^k1>U>OL12Pmf*PTF)qwJa~bU`V|>2dIk8$J_7XY%974gZQHYSqrcI=K<%+ z%G@o?eJP9WH29rlVX`+g1^oCSua72<;q$HAq*;)p)U55U^~#6G4rUhEHj@xWd`Ia;!4aUiH#6I%pQ>YAl?qhx*>EyJ<0{0z-rH;T`1@>F-3u6#2C zzxBuxK*BcljTm!6E{#;PK^F9pI47*GX_dvt*trK=UKF6*%YcI(syok@HSg_AJTCFj z2noC~?H`lzpMP5#Rv|7=V3ob3J6j&sIa=S_8?g{UI8%0-v||`tuwS;qHn-bno%U1N zeZ~6J^71E@z2l-M2d0b7!9_tyQf1+mCpibWAG=i>X@E|-xO(ez4{aaFe$=`86AFD) z(};o<-S5yrUFDnZJF6tLZUa)ePIkDGbftUz=krk+qxvBg?-5izOXja&gNK;IS88g% zfYA{%f|mK8i9S_>?9H0+v%9D{A&AQ*_Xjd!=^*77VaAt*(F!~1m{#;9ZmW3$r2dv%iCv(%IUxu(S`MV7!&FeN`yU1EE>7C}Gr9(8=YmS>h`^4wTy?Ig%k z=@UyYDDAOTUq|FjEZ0FTIqc{he{;?vA5?Cv>5_6Q8Q`@a>*OA}D zTnO(OEvfvoTj@NVo2wC7`xKJWL5peaqEx@KCuluQT6b9lAm$#|7t!KZkJxnL?WArm zV(X^dMMk(sw8ion8Vc(B;;!O*FPE>MKG-M}pAVAdqCG`2xBNVwd}qH$jMzyg_rkc! z6J)zIx}jwuZ-9uzgo#!^fzBTaOn>?Fx|Bw_`LqL5m&0+CCY{t z_75B+N60=nydk7%lWoOZ7T94gNnZlB9)y-Q5|jGh z=+ktn_WWd1wV|SAhnJMiFuG47A9(?Qf&(JhB0=@Us5r-<X@7AX|?jnW;N)vQ_`1^9_E)DT~Miazw(ynhCzOi34jb8CeZ>?vYwYQ(& z>kE&E+sGd0$z?!Y*w2rN-3v1te-?nY!wgDhk;Bn;r&Kvpv}K{Md=eT-eWdad(i@n9 z*U*sSS-90-(khaEC2yRbu^H3f!(?b*sz+iiw*7oYDzC00yKH&5Q8`x{@kp14cdD znyQ5UaYfkKTu2Dyfjid4Y`3>L3^-*W;98-KVkvXs7*eo?EY9D!>il{|FKyPw%5zOV2Tk6ZbdH@XaG=kQ;~fmmsX z51>v6IYn**ARvdPyhmiGwD7824rqMax&j!TOk5oloaDL;i3|-UD6SWMdFR6B$5K^s zp4Xm7OI^fzn?@Y+Nz(dl9mOnnm8o-wcQl1ZVACA8?;m~sNn{BZUhs{7X<47e`n{~* z-S|1{EXl8B^h?jGw@%dj?qojGWf&%Am8scR~c37NLxIs@Xj2yUO#fH;}I>C`W+*Quy`%H#S z-{hak5oo*}O;BB2QtYWebu z(u~WAno}PP7hrnWEEk{cCG(=DX9#Q<2RzvbR+ciyI!s)je!G!CE5)&4;pgzt%0h~$ z=6kq!Fuh&uG%;&XzDWbK;|?rm9%YFc60SO$p*DrMYYh(#ZR1yci8ttF-PR*DuBv!R zqUdW%b72=qvCu(foQr(#f1B1aWfkPL$S7-dB#7&AHa((|`rZ#f?a$hK_j&WWYVND* z=jmK@qw|#%LM0ez(OV7Zteqoj%-w?mb|T^3&K)*0m)Cd6m@yj?09e#$TEe6Fr3Mjd zA|l4GPAiISycZ8lu8ob#v+NR7TsFHv9WQ>FJd~>UYocUg6+b2K8G9DvmngKvyT}uS zCqjdr2^t%i&#^z7dwO1-F?_C*F&jV8MyAPxF4)wd*nCc(|Hmi4_+qu{BLC@{M^!Yt zPf5JEoJ7+6N*n_AlJ?%=Y*h0cPAI*PFm0wcAb15a88NWlPJfO^B6*#jTQ~UGF{c0F zn1Xp>yx@m2k6pp^GD&G)nEAw+m&Ptb*|QpvRtlh>($UaQFQ9xO8chQA$?Q3g6{o6j zO$Q@7HL!dII_9r<&jH z{A&tuS5_&2qXcD05eRap9RXbMhhu;1_zSBPe`ST^+q2&k_(KI~pImPg8%y#9!6jn} z0PgzzrN4D#f3yAn0|mfW+f@?bmsT0a0>&MB^8l7KYYSl2g(_}5pXC9NGZ_!87)Hz; ztRpv2*ANu2bhJ?Y!8G&k1|R5X-Ck0~t@^n^&avcHK70H~e*sK2wdZ|d(;LTqf9R|K z7BcT9clnnLph}vP?K>>4q(V^2AF59rW5`b%oGgRrE4N)Q2l)!JQ7GNQ>j_7gz-7>s zuV@-3Y7=y(lpkY<0PCpQdPK6?z@*sBP#Cc_QFq|oFlDrfVBe@IuZ-!Lf&VvxKSFn# zzP4n7Qd;-SoSWu@)@l23q8WVVkoC+l0V^lvDYsQTyT(nu%rqDRNvAlL(o6Y(!=?xL zqD-3E(tEchx$G7_7F4!D%W=WXa#5h3+UEd%Gs(yGjE z*=Y!Nq3hV|xmm2NRJ)iVdKaaQeeKdAZCmDO?LzqJKfB8G?;pPVoSFaW-^cY+&Ew1o dSQ#b=VyplNIY;g99e*V5xAWf=_$vx9{t2|{#Gn8G delta 3317 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 b8?LNOfXY*753V8Q|HEt5cd^Vk1!DL={n&0@ delta 2393 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 DUBme{e&Ol&5g4(Y^ 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 JSKz~dFG$Iv6vF@j delta 1091 zcmV-J1ibsb3DyXI000012`~Tv0YREz8oUKBL4u^cN|PQL&2x7E!}<&W0tf_JgUtF5 zT`(9}4&P6l3CWxQY6B^QPlNs&|Jnh8+o0p<55QNbf_nA;xEmJW1Lzx?op22;9Dnal zgJ2bjk0=Qnv3;}ZQwD9M;+z;~1w0V`i!GPnAjDuG=uu#Q0K_1;8(cf4K5>#+02VO; z==dzy-1MMevUi2PKVAT3VkoLjttAM5 z-J}2l007E=kAd}^=dC_03(Xipxuc1=GC|u?!V~~JMng>GQklq7_y%AmiOm#`Cbw5r zZbkvR?;T{H0?>Nnz`$#WqEoFZO8@qQDFkH4912_BdH&F0bF-L^x>+aK;DH00wTtDw zY2tam$N(?~6@UUkd=wy6o{-`|XeZvKf5r>yDFeKJ6kq{N2Z=r*R;~E7*{Wd8JOCh; zfB-=4QuY7=1wa50JE#H>=KovBkXX+E1ONsD44U)1Y}Bv}C>y%Ddj%*v!q{>Pkr*f8 zzP^jeKdFemKFaK9}t*ZUFNXaEp_@hL2p z744ya`N!`wQ49bC1~RW`0?gDYF%dZy!@Ak8fB}r@>7gvk9>y^58!+mEiOpja)w70U z4!ta!|6Nla5C~)@1Og?zM^qs2=nVP*BLGN69uJ}`u5feT;Q!*@XR-BOAAke{8GuYp zhS<`OctmT9RKNfb1pom6PzR684O8$C;Sdil%9Ug}kRmk3Fqc3k7$`^ov18bsu!XC* zFa?4JL88fuXYQ`%xm)*Zr(P=!s(X@F|*R4330uq>ft0}ukZ#8Np9$I?_PawVy5Y#Ce>ww@2N7rzKR7CG54QUwn= z{Df2Gv4961b;thts;CZ%x4X;+l_OpF59{D#yc|q27!zP8z|uk50zm`MIv4RJM}I$f zNeC1(zhs9$tK==N*aLiN2Zz4%9{>RWE&=HP;ALv%+}uU50QIZ01G0lQkbeuLA7e>T JB#ae-y~HRhK`Fem^6plSfl>jK+b7vsnN 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 Xm)$S_VCRK%lgk7glimad1Hcpv?{L#g delta 1365 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 F5`>BcR_Oo$ delta 1035 zcmV+m1oZop3zrCg000012`~Tv0YRF;8oUJ`927b$0R-*^z8b-lXqY+QECy)cx4I-5 zHPp#`n%CX!eN2_XPB05&qTVH7qqR+N2e2S61=c?Jyb-(y^45SF0~ku+FA3ugmhvf% z0m0WGPlC|^@je8T1RxT$+;h+b03~ozS6pzGwdVZn+f)L7%)#-v03g%=AQTvtD(<-v zw%0#|a09>qAOr;j2&b|-kXa`Xqgt!OQ-A=0Fv?0mOj^nI+oD8&05AhIc?>>D;Aj`5 z+c*;{1~R|EAQ1psGNeRnfev=4ao_;K@F}|>sW1}(=ZM8?fXBcNfB^z-a)YJnEpI>1i)hxu!juz@CZDX!vIgmgaW(Tx%l|= zS_QDA3?cXnnhA|iB$SkIsjrJD5WkKU|GHCB#R-|)yo4Wh#|4-8{1C8|09arFjFDiB zB5H~-puN0c89)I;dWx`+Y+IHDgs=o-6tU^}!T@A{5m~=TQ!#H~03ZRDWdIxoNbAE| z!d?J=W{5xn-~d4H@*o5Q2(h)EwCoNEap>`cLyoZYlE>K`FUjD^2gElZi1)wPV;=T+ zM>xefXP&Z$B)aK%3^Fi0n&U(iw>MZ)P0yJS%IG68FG?7l0e}GtP{l&}8A7~K$|?W^ z2svVZ9%)l0(|Az=wJ10Mz+nrGr#DP?9d9s3An^Y10f7u?Z|o?;iblHHHtxS503b~) z00kQnBfRhg2Np=tCdJ#63(>WACOGgH7l3F*l0J0=eT=lQcxs*)P9(q%dMlGM9tcQf zDe{x#{{T(U0003&0B$C*2Co2kFaQ7nK>#_E@BZB_uvH~cpT_Uda`FRMhIQ-V99WFEjHf;ZoJnes@{v#ef#?Gh zUn->-Mzx_shzVHOcK21OTg2s_#PrY~jZQrjT01yV$4nGve z01Ag|zpAhR7a|d<|Mu#~>XW~}zx}d+2hLq*h>qVVNQloG%KrP^jvy2nlZ$EQ{(*o3 FB?wVKzf=GK diff --git a/samples/h264SampleFrames/frame-1008.h264 b/samples/h264SampleFrames/frame-1008.h264 index 2056e0223dfb144a8f7078902c4461fa2184e518..4976d92d8673947d0b096453e625d9f177b14ec3 100644 GIT binary patch delta 1187 zcmV;U1YG;r2f_(|000012`~Tv0YRGJ8oULMC{fbo|H2?50zLo^95MhPBs2Uz4wD|) z**S$60_*@2DKVyXA*-C8fD9C8B*>3)u5m~Btl*2{SfB?0ViQCUop%t$WVPl64En0_ zZc_LzAchV>I5`9(AVMWMf_!3IJHrKoMYt4O{)7Z-o|<`o=tBb&-5d*%pB{MJezo`j z0RS_?004j>NOs93?>&kkco=dG7|Laepx~d$(|M=>1O))N>i`QM=|gY_1>hLB{m2|R zKpo0QR{(ec1OSON06{-I1xb(9dB6hz1rlu+ z3wup}0Rm=3fB_$SUJ(2zQN#Q}o&p$t004kEK-WLygb8(E(iLMgPXGWw1VQ)YVxhb@ z%uy%0dzms1F>?ItG?|{S4%F@c%kwcg3ZgdV`qW}KD00aQQ6jml>sa%7;JpF$1G7(#t=ur}tBrxHFZLcQ0|M&a#uk#?NwcFgc z|Fh+_S%=_&GY}3pLT9K$ih}(c`U8~V0=a1GE+^LbGl2lFXvjCcUS*KLoBDVWTL{Ew z-~<_37t{ThP4153@Bjn_#1x>$2n<9yG3~-F4nV`k05I+M0OEYbKx#5UZ~s_GQ@>nx zVqXXTFaULcKLOe!h4=~yq$vOZ0|E+g=SqM5_(lK%0RV7GkY~ao?@d&$+XDcH07I~o zZ~`%Z%mGBmc2G8T8GrzdH~|<94YOgy{0K8dujB{GndvbVAN$w|$Boe`j0-{Ev{ee%Xi53O$!K*X}fiU5tGPrK}+0mSPMaG^!|84?Q3nB*B?xPH@zj(Gz z|8YvaI33Q9-oJpE0?5IDO3x2P_$nZ8_uyB5r)l24@U=G}=&0XU?y7l@-0vUk0bbL7 zR_WkPJTLHoS~3PJVrC|4Ky*bzJ^J_sni_O?5MNv8h4=}OErdeL00czLBO|omboqj& z9ss$mv|1c6cWy*{@$HRI-S8(R$Z%awrZ~TmkV-MY_}71Hh$h1D5=WO9u|O4|6URI< z0gB~-JB&+~;l*{L9I67ARu-OKz3=|L;^2X|%G}_xUf!!2d`X2mZCT B@)Q67 delta 962 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 Kd1*vpfNP-0Hd~?q diff --git a/samples/h264SampleFrames/frame-1010.h264 b/samples/h264SampleFrames/frame-1010.h264 index e882188a98eae047870ab7cf87882cd6234d7479..cf587214e784c159e802e5cdc96c9834ef3caefc 100644 GIT binary patch delta 1402 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 diff --git a/samples/h264SampleFrames/frame-1013.h264 b/samples/h264SampleFrames/frame-1013.h264 index 2f59b70274c57cb609fe9e05bab7a4aaeea4ab64..90d4a807ce14337a77596bca302da5747daa7214 100644 GIT binary patch delta 1247 zcmV<51R(pF3G@kn000012`~Tv0YRI98oULOfAEM1fk93H4jeK7AS5&VJ`R%}+1WS% z6DcvKbs;OAy#N?E&PkCTWn9{?b5-FN%$6tspbAQ;fQi>56_V0S3K#7~wu5|5Cc3Q00;sP z4&5}p=b=P?3@eWm%4Le6@Sn<5eW(Bg1p)Ea02V*eX5bDBfG}_SkT`IFJCu&D0Pq9J zp;LnoKnNWmD6Z0WpbmZq!WaYA{ooJ;77UXzbB(1L!YMNYkZ=G?fB{MXkEH7WslX+O zXp>h!L6|OotQ6tCEKS8W0(-!aL0cFA2neyj06;Jc1dr$_6{tDjAr=s2t};WX!b(tj z00Jvt;0yp9K$T9X4qakjdod0jw15Hw2xJTX6yIEXu864cGn^XDS+@a2FL=FD05}i| zFU46b`1`?x+8nw8^umJKO(=|RAk38(VJC0}GY9y803aAY<>A*mH^o{za;!f945Mxm zHPe|*kkCsY$-?lQcCt`O<9f@$08jzJ<mr~n;7nSzXAb1LwNOIi*9 zC4d6sf}mOfRDZtlKmZ^B-~b>5NuUCV`QR!{A=PVu1^@~q+AbF78Uh5(2>=3K_PinZ zPNRo^_=7wKAp8IU0C9s_|Bw(R)q_Y?jM2CN0~mgN6%E@N6i&2reudDk&x_C%FHE0&#y53H($603fIU3ck>ocPm)X zSzX)#faeAYHQu()f4L?QTrdb62~ep84Db+tlNNSHUBn?4j(1$VtgI$-q|DR8-sTtt>5C&oa#^_A-2zgLnqd!1$oFG>%9c83? z*a9|+=b%lchY2tJH0U`vPa8rOGq}a#=djJQcUOOZt9sR(r@NMs}&;Hk*|KH}` z!vZi!POfbK9fkus(gq2UgJ1rzdx$PS*p^gEkKAAY%x1|mulW`2-ql#uKH?KUx~zXl zTHpT%m9;Lef9GH%K#C-i0~0CL;sQ2+5*=(5X<^T18>O>;}E^U%2ccxU5dWMR#1KuJIHe!B(IOOPPoD{IL6vcDLVr{sQVx(umRmm%jiEbN8aUufnC8X!OgS1(3eHNak^5itS$Fa70T+ikGLh+^?3(DVy7ILdy% J1~v_VLSSwa6iNU9 delta 1155 zcmV-}1bqAS37H9h000012`~Tv0YRI98oUKZAX4`e$wd6WgTeUds3B{0fH(-H-8nv= zumDgX1vhX|mk8VHu|hup$_FiUwbEoA>u=W1Qz-|9Ee?1Npa2K~3bKMJ=0A6MBnW^S zfE+=B+sz0Fbe-QTm?!WcfC*#Pa27SpxOrGJ8Nn7`I1~bZV8MtmAQ=H*AOJwj0)59h zp`my+@1@AV1CqhN2WlPrTYstmaNGa@fItCD0$23N6gW^>v3bqo6O={qEDA2Jyh;85 z06+_e7zn8?Q_!;U6cNCgHSEj*MStQ1Gl|-CDvu)H001Be1_p?2!83NjGp0j#3Oj}Y zU;q#SbP@o6gJ1w4ALZpU0F(Q`9s+^HwnQZ9vjDd6nn^x`1MmYtRp_F_NMS-S-GPdh zpaF*%6ym6IzQFFer#wIaKmvu;x%>%O%k|7a0+EOi!Y9 zd-Q}~gkE!!vt6xhD}-F336JgWW+l!+NKSLr!URwP8esy$mkKPWPow{j3z6`F#5Cxz zhV<#!o>%V`(IxOoBt8=cK#V|SXTUH35D9evr3*I`M}X-4tXd2hVBqevu#H%qJ@IelLI1b_0RU5gf)`CtO#5Q{ zL6}$p=lWOAx10NW`&<^HU6h0_e#Nb7;;W!LXH=d7KEU&om00aU-Xs{ei zMH0uovbHOIp`;h=chyWZU zLGz(gz-?XvxB)jnlSBh3fByj%1W{rz0ZRZtjhKKeG)j8!0M#6IxCYe=N4`0PCu?CB zA5@F?T0Z0i)5PcY0z?TVDBz_5zzb~@@tA#F0K_$>$HV?X8*!O~pqg{}e}CTp|L+U} zMDhvGhQs*dU=jT2fzVEl8~@<$fJA`=LEVZB>Qw>xAOHj?VijY5f1+e~0LlmWv7tAA z@34PxK1c@%(|Yg|Y`AUlQ5Rq&K#C;5@iJ@ekN=VG0LQlV1O4fP*x7Az|K0{~oaUE* z%-A#)7pIPYe()=-i-9T zac$k(?Z$U|xlOodf3NiLuK^+ik-OAGPA`YU<8I&BB|uJ!3hJfO$tEAx`u$|0F>g&vycD^+*aY`AvM1PvLO)|9U(vOE3ZBN V`C`N|e3STc6CVtZz<|SmLSWm+_$B}V diff --git a/samples/h264SampleFrames/frame-1014.h264 b/samples/h264SampleFrames/frame-1014.h264 index 7dbac860bfa50c1aac76ebe2b46e9c41797a454c..f73a8d8906427ae02b055bae5858006a0f7d60be 100644 GIT binary patch delta 1329 zcmV-11;-2=xW7NZ~W&k5{J0{vIqP zkN^S*zyKls00J7!yZ}-S002PU=y6~GA;^#b2tl5&e{v6-Uw4EI-uM72VH6M?x7>Pi zXW;~4-~fbkh*1p|&e9;GZK>gs3|IqplxH!)k%qcw(S=ZdNOs>b>A|0*5r!PV01yKJ z0Rcb&5FY@tX957_fE0nxH_hw^!0AyR040gTM^2speRj-0PE(Y(()g&UnPWQnrdDe2 z06Q<4@>{R(;RUH200aP4b9fSypZ~Z)y$BjdRJv{;@f;a!ba)5`CBU*vGs?fSXN14^ z7yw)cyIUB4fiO>R*hYW=Kq1fp#P&{Nul(Fb1Pq+o7Q4xXAym=11UfD&JlRR>1miI;nOfq9Y4pz_y7U`W8p%79s6{3 z)Qx06S^x^7@F>DEls$0nazh&Ki*tr|x=-r-01_LJ#Bp2dAx&zJcl^F65umsz2BCoX z%~2D;(X#q~Gtffr4`L1fsV$-Cz4efEW)qz{6@Fbw&OC;${F1u22Frao7?Y zX`!4I=|SRMWKk5ZKlf-{@S6+8JhG7g-~@$hjwz$t+JzKl)Vx3dhzL0d^pN4xwBj08 zd;kFecfi0@&13+Q9S+aU# zCyWWBO)vli1AqWPhyVmtKmbD_G5|XQD5e@vTUk)+g^9TiV5nFKef+_|1_B#2IOybm za?J|$$xFGtfWQDiF|ifEFs}xB0Dz1D6l?LX4s_BBCzJjdM6Bb0`X!wSr+D1E!wf@B zJYdrdu}j$@2L8eI9RP^tb1Df18QnJ!Kmzp6g{^X(;Qz)ikOF~B)|W`LZW+-~gi)P` z6k!g3gZ`)fW-N)L%zxwr3Lk#OpwdNuH`0vEcpr)YFcda(CeGxtq=yKD02JL!K0-P9 zyZ`|J)1Ck%*}|tJah2`_kDWluYCus{!p!FUd{m$}!jZBM0wEy5Zy&WJeBt6Gv17sK zOaGXN#DDx(fB+B;X21eXC9oezdC&dVn`3^ZQk3r#07!HI0RmVVbAYI3!sCo98V>*l z%*42)81?c7FZH4tau+$Aqn_=l-40hx{!zspv%)}lH)U!SKGT<&9T?3)Tgugr0 zhHs2izd5;Sn#T42eppkgHk;AFlcZZSrbD21u&myIC~s80q|jRGATfL^a$YJ nNow)f1nRdYbVf`%5DV4|bVN=+fFe@?y#@kjs~W0~-{264R&-EV delta 1483 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 V2IW=FJ`KeXN7eEF{d@c{7VyxQ)L8%k diff --git a/samples/h264SampleFrames/frame-1016.h264 b/samples/h264SampleFrames/frame-1016.h264 index 0e3a908ce2237a73b1a36a93393ac8b454282adc..55f822577c3ec345cd05b6e6b34382782d6d53bb 100644 GIT binary patch literal 1778 zcmV1B%9%NK^EUcmM$am;iGGVk1`bJ%13{{lEYq1s{j5(50M)sis0g@BPMM za`!L+ghr(eL;re#13GsHB*&vILxUAOBs)zI#MV*LOJ!s*1_5QKWW;<<(Re=;r?>L` zghK^61PuHF1bTyd{0&r#gks142fzT@HY9(ddhh{&DM=LWN@(eQDaP!dbH)4k_XG|F zM2ptO?Q81W@(2H}^0H zuoVa`bbgeQg{~d|03Zedkc`%ZuQP`VzyIyw1*>QbIC~Y-q?bNV2nnHp#SSrNjSxH^ z001BY2NZ*8^jh{OP!|i(`@jG<04D^c&4C40%&5<}ys!We1ONd5;M&TY0`)Zl4^kw(NRvhZ999CFZ~(O%0mW9CQ-*){s}5Me03Zke zO(S`f`%(%N01N=y#{?bc=mLXK0LaT&JVwaq(GppJ&MQ_h(huZd85^2<0N3PT1HlWx z5LLJbj?i?Id1fR4VpkYE0SBN>E@BoTilL;-9p8LQ65ES8B3Pm5Chk>md zo4VnkAW~HFGmPMomtWnDNm8r-{h0~Mf~%6mxEOk3Q1qTDs@a79ec>6jpYr*{LMNDm zKJ;X4C&+dyAa(`?OjIRt*&q6hD!&i=^Z_~z4dQ?RfKVEW0wiDV;vt&lA#2$u$9&u6{@_R!E#(171) z8?Mp*C7nPDr@#jQP!E$r>>CwB!nKnzg0jGR(Tmb|{V&I`C`lYM<1l3kpCz~CwX5*_ z0097C0Z=>{_bhFMY;@#wD1x6L@qniw6kiX7Dv`JU{WJo3SRMyen8E&Tw=chlumBJP zWS|8cFiQ%OCtkBm$RQDULmc1&4xuoSaqmciJdRJTUf=*2WUx7r_OsBQpaJI~Ie+*t z{769<%5_13T$Gl#wqXgkWiiij1A7=Dp-I=rNH!@)&p#6ZJ^)@)KTJEOaI&t08v$eL0KcmN(#+h z004k+2sSHkf<qOrRd`;A&E8`^EqVOaS}@ zc%GS1GAnqm0Xz#_4z5%Pi8;k$| z0YLy2LT`X-@D54%6VK=bNDxGfFiDUASn0J>v2szD^Z*@4VFahHePLd(H+%iD5fT6Q zU?V}u;$hhaG7`I4MGPPr8|;V0dX>Ja5J88)MuU)tmEbV8MraLkfE@=ntNV2;UVthI zQe9-R|N8;$1^!ssHD@0%_rYD8RG;J>s!sP1hfzfQi31OI_<>Z!+kW zFaGf8TO?OepF|)&XYv6Ha~qR-zqg_g-|IQF#Sv28zxbG6RVbjK3W1b)t|R0298d3j z2|prv+P19;tgPSv{`AKg2sJH8uiFa=YIBWf00;ogDqVm+I7#UKuGO&2E{yYn!{NRB z38#f}`9}9bf`BS8I$n}{(_j2vHq#1gCGtPIuvh~6ueXQ&`MhE+!%8Ci&-l2PK5EE4 z0 Uwit;CJtzQ;H9{srJIpfU;$V*mgE delta 1408 zcmV-`1%LYT4Vepn000012`~Tv0YRJK8oUKZAX4`b6NEqk01zpr7-6QGX@(eSrhoqc z3UB}j27S-~1OdQEFl`wa)@+I0?7(q#!Vmy(2mzKr2A^2Mw*cdy8=6OtzyPQK2nqlk zH7F)Wf{(FX*^hu=h6y6e0?oMXPhm!X0D~2#RHMR9!c-!UfDu3efigxl7ma4pM46wxvuthv zU=Gc03lexB7%;IWyFej;sLPfBhkC*mR}O8EZ94cpc{CCcQwCB${eU0?00Vs)x(X*Y z&n77$u*4pJpUdLJLecRA2$&r527jF{WjQ`MPE5U^J8O}qc^V}>*es&U~CKk+zJ5b zWCa9+R0*LR<<$f;RsU*nfC8XL*d2g@J{}2Rf=%=pnzEfQjNG6Q)*GPK*2i3@C<>A_~^o33w!ado`hO zV}LR=la$|p51pTvSqzK_kc#|5v{uw~vsmk03N{n@g+fpwB zA;1EEqnE?FK<37NTHyi#!XsCNW7$6h00II5=*Qb*peC2`0sIiiU#?nczz_@5q0aTX z@RWkW8ig@J=pcw{%r4mj@Javz0D^4kAgI>X4LJ`1cne?|g!(w1(mjuFyqI5^_~}Q2 zO!{;QfR-a%6IC{ZK@(1aL)Zj1xtQcK|@jZ|W(=jIj}$*&5@j6+^-J>>|5$NEM zzySDz&kQUfyF_n&Y;v$wWa=JT(gBXB-bk5ekW&88^HgxZ!ATW;?|Q>(L++6DLvwrP zDoz&fW@Q?5?1l<4t0YLzhUIi?F zNYVfcI&FDO@i>Y400+p^#1e^2`ocY6-T(IFL_hwl1ZX)O!8eqchcdq`Q74E4C$E_w z`~6hTYASx%F!z9o24N2gxDDLAD%VSdU4Tl#=2u=$qNDS{Vs_tsWPkqkvIq*i9np|@ zg|9pq6Hf{GMg<@NZxxSZMC*uHFl|hK#niv^Gbf1pMyY@QhhbaONo2#m(g6VRoogWJ zUpZWezx(YNCo2Cr9LF0nrSJbdE2^8zL}1O?&o@iAYXd9$tiB;3l3G`0%85TTTOa@BaUR zDDs=gxx9z}>-;JKiFCFPj=Bg9^}gF=KmV)7JlORS|3~~>I{x{iy^MBV`yb#o{J+9& zBm OH-@_%e_zn&fVP0CB7nsJ diff --git a/samples/h264SampleFrames/frame-1017.h264 b/samples/h264SampleFrames/frame-1017.h264 index bb895a988900a4118a06a5b6282eab9c0c4b4822..d23e3299b2497c5265551c2d95d7851e0c77b6f8 100644 GIT binary patch delta 1209 zcmV;q1V;PR2iggL000012`~Tv0YRDo8oULQ;9(Lw0SjCJ{q*pC$$6W{`F;(;FlGsX zP%s#700;mA03Zk<52r@Q`z8%A5Xvu~frQLSzzi0qTC4dhfAl~Ai~s@vdH|rIJJ*B- zJ8A#i01z>pNu;Rbm{`B8qI>{=06-B!Li<-v#%1V&YC5lf002NJ><%Wg(n-N>9eJNH z0Kfo1+QZPJ-~u$44I$1a5Ay2F(CW^35h$EjN6sjpTGcM z3!%uT3pK@m+8|&iufcE)09>x6kT!Ay_(jM71Oq?-KzIjdiigwIu0lYVqf=l900jfU z{K%9EpD%fUE&;|19i23oFe(#8vBbqMgAh;(STY4bLX7$VV4xaJ8}{A+_!0fR$iL_T z0F{U+3<^rVst7DgzycsB2a45~uIwr}3J4@?_B;Yr0nO(gCZB%b5HMiJgEUB&a>_7- z-5?EJ;(VYAZGd1r8BGVnHM|{SKmZ_)00InsfB+z>0RFFi4ncqbffxV?5B3=V2!`f= z0Av)99yV_M>;Roit|19Pz?sM{AA)z&!GQ#S2pJc9!3F^1ybEJCZY0+T9%fBLzyLs~ z(1-vvSIi&F;WRiJqzgcXKg1F-fZ%4WVMbFpulvLtUIPGUF?|sb?JDrY@(Gy&JAs4& z<0%OO$FBfjIQ*G94>i2G0G!NND&+7*6bLbjqtfV)b!ncw*oRN73kQP*d1)r17rB5i z)N;asET_GT$F9x)_kckJIM%3vMVeb0Lji~H<_TOd7$|MDxeApU6%>I4903l%lPdx< ze;=n!pc)yg0~*M%1i{!p{6mg}1d~7ot^{jPN|wM5ln<)f#PXEIpnlE;`i8ci-GIf; z?9etR?gDA!^dR;T3I>pYfELG1a&h)F=H38&-SYJR{{39(QctI-pbdbFbVFmp9k^G0 zVY~t@VQ&lHghU7l)F6_Pi97$V;>$x{f4u28n`hc!{fG#Fi3TIWUK^W185!Pu5Tw5- zBZ_qD1G!B^VWYp=QM$g20rcZ0a|9dL(PRJw0oH&gfF_<5+$azdJShj`EgS3E`R#@l zO)dR%%z=id9O>Rko0nrnqz47y4=&N3iLlXzuHr?6LtC`|w;2ah7~&;IX z1^^?jo&w>25T#9j|Kk8|061>bPG-%4RB)$e0EQ5Q&oqHV2T76Z(K{(%03ZP%04O+A zk^SZLzAy`f1K3Cm;sRql0|3BqwGh}QfecL4-R3)h2f%@puX+lKpJy;dgLAL}00OdN zoCo;yBY0YY0)?+rohc0wPPcCe?lKW#))sP0u@Y^6d@yRjYoRto6t^=N8PJHHFt7l= zopfN{kIeE9eYZEGMJfTiF;$vATgn=Y%upDR=Mfr2oB6HGxokncxTxG?Btij=e;FSh4uo zpTgoVk$_04Wbxo5QfX9H)5stI5JWV1xbX-_77xDH0f93>VSsI2Xhw|U08$4I08P-7 zDg!fr8{KSx(8p{D_GBs(i%{3`f{u^?R1^Se;7+vzA}M$*_`APtVtGq}`M47G4J{Jg zfvoA82E_lc6HgzZ2e61xbbRDMK+!Z|9mSq z)(wbaG6WF!G6R9~&sQSC zBWN%um&OPp@fgkXRigj~Ko6nE-rwNcZo(kxcHMly0I5J9(hfiDA0>rG!dXj+M&)@E?JeP-mOg diff --git a/samples/h264SampleFrames/frame-1018.h264 b/samples/h264SampleFrames/frame-1018.h264 index a4cec77c91bde96bd39e04b0f05a2ad6be1ab1c5..55e874e0ebae659f37f638fe066b88a6d737eb22 100644 GIT binary patch delta 1272 zcmVuCw000012`~Tv0YRD|8oULOfAEM1fk93H4jeK7AS5&VJ`R%}+1WS% z6C{|^I*^slPe29^Gt^{9xmPx;{8o5H^Cyk~a0Veif%A`W#bv$b1q}MC@@{4DP=qij zpmGUDLyrtomhb=s0Kfu*sCY?~-tUkhnoTGgFer`y1+?0K2^kZY_W?ivKoszR03ZZB zKV;JPo`lf67*`r8l*Y)K;QtT00IMGfEDzeSQj`1 zv5eB{=m;Z!gw>+jH^qs#roc}x=(v_EV*mjG5()sJGb8#6g(^;X2t|e!YfZ3;kiuUO zfB=f;OTZ8S2nfoQ0}%n9c5VvF!xeO30B~Un7u+eny!TrZRon(D#7$hQGKDXAz5h&r z0dRm(og%qG!S4eJbTM=R6#|0UMJSAJAka1fAWR500ISI0G;5K{tx&70Rb=r18t$#&i-DcTY2Tv-T(oCfw3ts zq+P(sU4)WmD*2IyM?qWwPzdWq!4o}vp`@3*yuULMNL4Vjf>6~UJ{XP#KoB5YHdazh zR!?#N1_a{&1pX=jfDlvw1y^WPHF0Sr>0KjvD1e@<$M?c(>=q?xp4g{!7f`<4A zPI_c}{lEYS0Dv4Q#KK7Qy+~+Z6iOh`!T7=`q%}vFk_Mo%=tGzIF;G|$8S@(y#c`j? zEl+ZT^Z)_@OfVIa?LE%`@T^;S05oy~hX@36(bdAB16iOwcL#(1_=vmHH7mBk zhX6yc0003&0B$CT2Co2kFaQ7nK>#_E$pRRE{JsKi76u@m5(T1yTmb%~Wia&s1i3v% z(%ye#yoCrQZJz!F5x-hyuZsoLzkrDa_lUCqC@Vxj8;qtHL#TnM?9A!7g%JK7A)rLW z_6duECvI_lt=4NVfQ<$qAVE(<;CdLmsgMH`ue+$xH?H@N0D1G)Cut zbQoDegp@{y{O~(XHQ|1CF#wb3q3S?QJSUg`gAqYOj`T!#lzD)LRq<*eZSa{Gy{4Ys z=Y@61C?w{rjU@tt;0P)zL4(}kdHrvz1Y8^U_Nqn>Quzo3F02~3m_x|Is0rPTw^Z!@|!SD1^7$3}b;AKQve7x#{f7$_9&mP3^ ig8o(S_xkpsB$QG~|G)G-caWOlkV2L5R;=5z@G?O2u@Mab delta 1067 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 N{(09e4yF&_V}O6vaNPg^ delta 1265 zcmV$A%)7}D zom`(a-SLJ1VMR)UrKLs5o1WLzm4oU}hvKp^=*d zc&dH>^9AO@dKKD-Pq-Lf&|FH(sNF!8YPOS13(JlO5q3HPPzcc$wIk?n^a|-VS(A_7 z@4x|^!f7sDy&|4}-N675XC)lS-RE2T!oa8C=#MCWutC!SlLTa9B`^T+or=gRy>3dD zzW^}@UH;jsr8g0Mwz(Jph@C;2X!#RZwc}tI16)QL-zE-`S_Uf$B4dUNb%sfw?g4}J ztB^vGywgR;C=*NgBmQq@ZMm@%-~fnjK@smK*kcJLo(w?qN~H-9H5RDAe2-YbAUSQ; zLT_1rr)YKl?hlJ7Yrt80CBafO4gs7O1;UBY;6m6*7=QOb7y$t)p)U1s_Fqa)|L6k@ z1{i3Ff(Sbtr?sbk?c)Gc019sVfCwnwVCZ~J-+%r8JU#%xk1WuP$jS0=^k@Uuzs>*T zNHFJs0ssJjC<6yo`sArQhzDH@WpaQ3A<;sAj7N%&?ut2AAR+cMj(TjdIsR`bYlc7o zAP5i(n1ofbB}Pa+ZvEpPh;RT9FzUU)0z_vrE$j0U6On8?t*hVw2myvFRX9ERaZYPR zbj)Jkjem8UE$RQbHz+%NTJzq2OCaz-3^H4h05&DT4sBSy|(VB z|MVF2F;^@+5leix;2}XsLxAOxi@Wp2t1uoE4-KcI$%1cB0$ zv^jur%jbd)aXhcrxG5sr#aM5>3_J>sL>SOelX=V>$j{ID5ro8`{#{_;Qv bakdD-!}Dn65`3B+*cX2YS{X>vLHrDG_y9IE diff --git a/samples/h264SampleFrames/frame-1020.h264 b/samples/h264SampleFrames/frame-1020.h264 index b2eb36e35148b0024455be446f0ad1707578ee2b..d0669efc85cb4a8179721fe8c38dfa0cb260c298 100644 GIT binary patch delta 1228 zcmV;-1T*`O2Xf(5Z z?3XA@4?qD-00aagEdT)k&`3Z*0VP!fco-stu1M*UUUZ<5KWU}#Lk-TsN*SPF0D@wn z=+dk6i{UYr0E7HdXhBn*UJI50JOPRjq#n23!=+MVJ^%rKKn^MiwvwGpN6%AL;LG<1 zN;09q1x6tsGavvE05!nCaRDPw3JVAe{^I~*a5=DQ%Hm5sLRcN(0fU_ILTL)x?6emM zB+!9KF#SzHgVc#HQY1l|P|x9`Kmzap5Cl|0fEXaNney5{{u(F%TCITKG+VT3%*EV{ z10!=!P#*k$i~wkU>cPtx06>~X>yZ1v2rU9{C~4!Qn#olP_P_%qDD2rsH|~G{KXw2J z7&iVE1y0^0U;rQ?x~WIv43<9t{OHV=~ zRF6IVpacvG=9TklMHG{ZFMt3L1`&RYz5n6_yKnn~3JW249STRScV2uadL}T+;|xQD zc_g?F8~Ko6?))S;q48RjE=J(67kNaF|1bi1P!5KUs_7%FHeMJkp@QfY5=gwT7hnM2 z*8n(w91S;>NXcj&w9G&NAV>fL1Q?xw0ztE$1kNOGMkL;i=z^c{SS!p(1GPM0Am~9J zI}ono4U16Vf_S4XxTpVv-~a>!fMAw8;e$L>E%ZSVr zDm4&;@BrDxX~RPm=fq6nPU^r6egFujJuuRL*-CG;0jL23v{Vy9gRHnb3H^9xFjCr~ z4I%Prv`hW~R2g0yksRdBe71jggCGD103FO635oG#iEQ+84nDvDKnyz8NEl|aM*)ge zF|bUa54-d|Dm{E3_`m=_4wwK`0mvESYy!f{iU0ru0D;Uo1y0}n^gsYakiY{33Ob<& zaRVd6fFanED*`Zoo$CMh01AZ#OmZj4!1YRQ2^8R)yAZSafbYQWjFY*&|I8f#4wYX~ z?!ig{i8ib=4BtC}=vStB*dDfEC;cP z#(GuL@BvSM&1NBFqvz-$8aW^y5w1ULVoH9L4MatSnhJvme*j~0YbKBXrT0VP6e47R zdL6Wm65OZw}1y6PxOuN_TYw2RH4wSgtT8h37E_^TNVI+ zhS*Nv0?-CHFvG`+9KKN delta 1008 zcmVbjS@Jf!pu_i^5?5T}apnUfVz?hg8{MVh9t>;7A`y!;m1b>^2mQO&(Ad zIL_ev{_qUKeH>3&9>>4*AV5IRSx-z#dXFE!eE?I3tQ4;xewb}S+W#>;O#+Of%vbm& z0096&Hgu3wYikC4hk(2V-!UqPeFyry5t3x`d&z}=`JaxIcqGVv06~TyS*dFeI$+^3 zd^rHP06S!-SRZvr8mFiLsOf+Nj9m&RYu@S7tN;W80C~71XW9S&fS?qq9dVfUEb!H< zPp}yt;{owbUVtnwR{Qyp zR~dzGox$jLzvp0k1R~%~#z<(SQWanC*7niJHvnG`?}G|#3I`?4RswX$*qns6aH2Zv0Huw8EHOhH#emFo1^@_vX+FO>82k{C4JAJv zq`%_nuqUVwm(Wm1SCDwm3}3#^-@tbD3WO5|&?W7m=cg>D=C(Z0?(As6AHX5d`G8<# zcw15G*$NQ@#LR{OC^rD4Qf-r;M`r%ILt>}OMgWPjtnsI z;)ko=90|qu8k@ufCHm&lXNeBknBfgK``>|r#c;KdD5`~mNDZEl0Qw3$1Oh*IR{4%% e3*C4C1OO_-00voL6S9{H^0_nq{vVgi55iCdjJl5i diff --git a/samples/h264SampleFrames/frame-1021.h264 b/samples/h264SampleFrames/frame-1021.h264 index d70ab4011cd0c1aba8b226c4faf57a6da6a0cf30..ab220613d22de06cbf7625a52c1a5779891010f7 100644 GIT binary patch delta 1681 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 KWY9kC1{@;|??wm! diff --git a/samples/h264SampleFrames/frame-1022.h264 b/samples/h264SampleFrames/frame-1022.h264 index 1e53f756ee88d12de58fef93f017d622b57d6b89..352510612c604982cef3f51733d4bb95b1feba20 100644 GIT binary patch delta 890 zcmV-=1BLvj2bBkZ000012`~Tv0YRFe8oUKJL1Nd`^qose@InrAekRP*0R8|701N^g z=D!aE*B&2SbANEm0097i6w%Va1cCzx>_Jjh>KcBJ6`o)NKK`?|fCvB#L+~R$HUx8p z;)Vi10EH}1=8)8v%j%aOe&YiG0RSgD&?FJE{7eBszyH*K)521ihc2%MUO|;Q|J1Yy zJxG%EB2CO*7@w&;z-bg{06wq*H4Y10&`Sod*?s^7$e7(3Cv`+$02m8nyVyxgBBM_U zq42000Wz0$urzz90e1lKgEnK+jUeB+nIzym;9Kwwy3 z=r%bi*N#8{K)e715b}TkK$HjL-VYdH03a3s2j&-l08DS6=o=hRdC-eBummV>r9%K< zPIx*3AcD*h9-Xik9R;ylFBjJqGR5~%*Z>F-5s(0t8+0Gd;9slpQIZb;Vj&TbMjjr9 zICQUo!A%VW(vu-VU=On!A^aKD}Vg}i5?IMm?;1YQCX} zDybWvu_UUr^z({0d2rhLz04kp3V_5%Z;#1 za`!kO9uA5^VH>OeuoF)S^MyzfqT&8a09*g@=2a1;-`F78YI#Uf9RK;WK!LgioF{>x z&_|J@x3*_m60$P*v0wtANB=j;c-oAX)#fJ?%? zF@zFg7;2A~!HA&HaCj>P!9kD!h%LlXkD@OD0+bk?XNwhT$THvifG41&#;_sc=o#5B z|8P2>03djEKmZ60fMgSBqeHBJ?f?wH0CA#S*qrb?jE6OUWU25X(ug(+C}@Sf%pECJ z^%v?hkOBraB=7^o*OAf?m{5OsAt{KUnY0Um)la?7r49gY02;H9EbIiMeQJOHL;wN_ z-~b@#00Io)2b;`Sd4R0Ia}Exj@WMoiNz>j0?rjYKUSH7M5Xk@v!vJPnGz)}As#_2L z{}=|~1qsi8|1zaPf8j>A!HB}kC5H+XeeOCvRSWmoj z0|5cT6GKtd5rYhi+vB(a&|r#BISif(W+_91Td)EE6;Qx`3`F1Wye&Zo9_e4*;Mdco z%fuU)jX}x>3cbm~4E!)kz)IsQ98SEPNKx?Z;}!sae@`K22pguA+<6=T0t7&g9n&J< zS5qs2NEv_;1$ly&M42>NJmE5Kcrc1^w?ix{8loq=J(DE(0fQ9KpU6Q%krO^Oqp5?) zKqz@#086;;G!qISye&xZ5IC0%ILNDi4M-F<6E65v<4`QU0m z05^)v!Hgl(`_t@ww)NNuP{`~7wY4|k0UIPAE*RhV-u_;3L^wkg;NSo*02_eWmI&P= z>Z+2ZR2X~@p|S82am7fMP4T~A5lj4NXC?LolPvp~{5SX9Gm3-7WNXg^R{}kh#|(AA z3p>7lIEOnxE^M>AOa1?WFz6L%?|iBe)a(0T9D{L}LG_ i0JhU3V4O#%r|hJV_+|~HlJH^67SHf)@FqiiLHr?)1dP}K diff --git a/samples/h264SampleFrames/frame-1023.h264 b/samples/h264SampleFrames/frame-1023.h264 index 17ab608d32f6b3a1a19d4aa89aee4e35df149ab0..83604c33141670f1cf460f033cd2070b86a725ce 100644 GIT binary patch delta 1174 zcmV;H1Zn$_2(Sr%000012`~Tv0YRF;8oUKJL1S0cl$}jVU;H8hAXk6`ju8N0vHoG; zREW~DvA_XXvq*i3T;$$>Fyb{OO|LTtu*xO8BH5C~08k3_{sc?88Ocs5LxlNBYwgo+ zI-AH=h@bEn6$CCo6okC2^B(r4h%E16qbtYxj(=Ol!Xy# zb8!t)QJR1NKrj~>U;AKFauN+9suC~ndK z2pGgc?czP68p|fia5A_hmXhosh3^+X>W~azQ9VHwNj@GJ*FqEURT0oq`h@6KbD0fA zm`U8KW*@)=1_|jnZH>j#XN1|M55NqfZahn6u8QG*A)I2D3&L}p)PkNbYJgAyKn@8b z|Fmh5g^X@P|K0+i0n`zAAf^>2o}C!S3<5|1*w~0Q0p)Mcyifoq00wzr4tI?L?~KxM zzzhIWLw>;xX@E)c=YR*j!to2nqIh1su7QW(00;nx61REd1GubN3Q;fa00R(R`4kG- zo?1wMIr`r+WH^eBPgUtQyQ-)E%kwfYolGrr(6n%VG6o8OQJ|CpM8sr7q*f5Xh19k6 zJrZDIf+9I}_yZtsfkFV0cn6et!$+XofU@8O00aflA%G4_+iylewD9N@3q%LR!GHrI zYXM=Gozkfz|5z|Wvrh>uI+G7d9`M2(lA42mNSoIbZ~xi=0f6UqhOsKR%zSIL+c5n( zPEy~0!wI&u*T47v{NlR*GE`da?p^oKTU2j9!2pWjL0UdyPH`~a#XNz-j5}10uE+Mz z047jCS2Y4*{OaQj1W&WVUj&5U5JXu0ncTKdG-j8803aS{FM4zLfvMxC;{4IE5J000Og!~5`<00;sDhLaBP z=$n$Xsj|U`07I~on*uC6oM&hP=0{$wYAw?QSkcy>aEJc-wt7d2*8UiId;}P0Lc|y$!!dC9 z>@&ItwbkEmhGDwy$eXeWLxbi11eUW%p2Tzi=Y^W8cy{m1Z31b3;hkJSpuwJ{u%8B0 z=zt6rUFS)#0f9)Y784rPaWKw=2#XXH$XyAAkMFMsR?Y#DN(MLRE_oq2*bW$X(IC!C zJ^?iFudzWuDcTJrhVh@XF8R3Zg2s5e(Sy;Vr~j=0W=S-G{~jC9Mv9@2fGKee)Bpeg delta 1013 zcmVh6@UT+2re-$q+W1; zZJyQFz%ZcE7IVY8dhYUdhetpHtuVVD5Uk{o2G_6{+bdoI00aTosjvcokN4u#6APfZ zFPsViFkuXs5Df7G01zUFa}M)00;p9cY{;p z+IYbM1;nMdnHXj&3ZaD4*Bozv095L|N$V6i3bgaVw_f`#WjIYd?l;vWD2 zAOHjpIHH4$R}L946|_y9yxm@))n10y~GfC1S+Vgwb5LxAYTeE1MF!wTyv zrQ7gdXTU)Us1W0V2{Q5H4kHIs!I0AAf{EM)P)sc0gh~sHCb1~{|F{4HC=kNlNCLqu ziE9skM<5V??gTg(hK~%nFi$|e(at{bVi-to^dZ;GeN&+mUjP6=EIJe)F*U7`K7Muv z;-Hzqg2P-ie-mJW)i31$1(z9s6aXR;U^o(ed10c9g}`S39ZZ&*5T3N~00aR-)4)Tf z-YhG+s^Yi5Kx2Rdki-fE%Z)+Lv6&<8fB^p>06+)=3}(ca^KkiG6hHb>Npnf!IMVnCFo+2dnoc;_W_ExO zPk?I>A{ajYE^5>P;YqO$F3>B;0C^w)C5jFIc4Tgm;Ya8gd3*#IXF^06A;K|qK06BU zn|F0iGkW1_*>@01{%-#ROIf0OGoAmr;o*`==o`xF??5J=e;L)p3Je*mP2gurKnxWn zgGrbGU|5z537OS#FwTSsixd>`FtPph!c@)ykxm3&`N3J_gyQhBk9^|6m8bLs)55;R z1pudTX(P1l{$n$Br~eQQ;_pTeN8$uGm(|23!X6d#(r(YZ7td%P4$|EqFGgUMIBN^} zi~ar-AzM1kORo5V1x#{?{DPnlwbv{MG6BT#5zm*zik;C16M-vQOaMjNz23Dyu0$qZ j^FY17NI%~&VCa=M8)sqv_NV~Nl5GS2JS%TT;XvcywgsqvMVt6eoEfm`UfVP}ih#~*@1q{psRT&K( z2_7lG!RWyxsvJSKsHmdT%m4ubkN^-=009Q@0K#Vo0fBW#VIaWpF;P?=CGY_^kZdnb z7Q!0Fr+@%|fC_K`5EyV5Kt?e`4*Fje6*DYnFGSt|T3xw3M|uCmDOtb)QFC-P20#C3 zgHeaSiCq>rB3zgMfQ8hFFH$7R8G}(rfg+(VU|h9-nmHctKvFA;uGYYLVj3sE|JzeW znKLHmg)gA_!r(v{aU%_Y00;ows15XYgxg>~5rGJ8cg20E^S^0{%!AECy-Q7?S{Cp< zP{^;lYk+?sZZa`vBYg0~>u?ZuNDTVqwu|7Po5>gd{{_wf!U0mNAYh#-x=D|{|J^(T zAO~oF?TdS#1*{L24X^Q&Vv3gwNMC*7(4_z?P5%2xFxakHV9BA_X0_el-Vx4! zAw(=%`$&RIvX=+|LyeMGR8Lk@s@Bjn=*8&43fYs8a_E@wFLLKn}obSEC3l~V#OzOISS$WkS5rH06YcwlK{=+ zFd=m{eMwI6at7?a7z`MKk7FPqFojls7Dl{Q&{yL`yubiJ2Dls|?kYMZlMh4xo;NT6 zFciC~DBcw*cU<-G4wNIQ8RV1YphxZ)0WSp0M@elo(f|8G8?_dJknVY9H~+^}xrhJB zjGXu8|6jB>w8y{k8ehxiFhnw-ia(&yf<~U4jH8A84;wfJRS$@Il>h%%fCg=Ux5S&A z0MvixkvyEL@ul9`^?;60Kfo15ZbI@ z82W;~9K=RGKkuLb2n3^G0zz8>a)%iE*lp%{hNUUTmI6bd00<4i+6WJXYV3Exn0Np- zW+l$T8ooeh-umLnaax(4#WjF3;HLxtO{38#;L%kxxNfS|$Cmw+JH;UCvj2(!*aU~LcgAWvTYF&oMepF?ZG z?T`V0Nq|eAy$g8;8c!nME$qkLdzIY!h#Nu$Hw%CLzZzE%5rKnW6UV(Obvtd>-@SOy zF%SwhUY9&54OjpXZCDTb;)V!b{Ph4$-$I$=v% z7*hbjcEYSuxtZfdDvb&=uiNNy{rRHttusb%G})9>Krum5a+@#CxGpgh;cmH+?% delta 1367 zcmV-d1*rPH4D1Sj000012`~Tv0YRGJ8oUKBL1QKIYgN?AGKe9C4d4UoA7V##G60BM z11qbb9m=C?Nm-=$W)wO>t{U&L5cfl-5i0m}4vtVim!-~Qp7m@@3!1j0Xh zLsPaF@m`%Fm>?hO4VlCYxTRx%74No)8XUxBvMU1Ilv-SdDS=cWwFSY-@^Z*)$^pZMJbFpCe zZFi%MM}Pg?F^H9=;sVOQwR+cU2w77Q)bU=^_x-v85RZx5m|iKLseU{}Nbpj|Lm<t$f(O?Jy&!1Rih|U5Zg+%)pKT@C@WO6{g0O&j0~6015#iZ{pKO4h=#=uAT_E z)X#;3CAB~M000mQU{NMyOjI4+7SW#!05kx9VJsQa7OF3TgkYJx->z&bbVU-rZ~oLi z3M^OpcXLR$EZ6h(E#PkrpbZETN$G-hOU?fA2ZH=hBiyv$wKPC^PyoO}uypIM3V)iZ z6E+qjum9~YpmrHShJ&L%5}*Xz%NCCjqZarv_zYVXrt;*GaXud<0Qdkn0AM2q&haXL zv7uj=EyMr+gd>g+haM=C!W<+`@L|9K&6LKVqUNBsi`J(7&kRbx6I$;qxBvadKmr5Y zIHgbm?ih0GxNJ&r01zlsgHo6Q&=F}c`du$Bm^!?$u3Joval@m-{m)%Ey&0b&tAOLVBh>@Fct3^W2W8eUQAXbz>i5ZCE zw@iq?8Sk)$Vgj5A1z%>+cGCm!AVLZNZXGHH;`N9~R-4Lz^gpR{bh@ot0+Nofc9Q@wl`pVZ;a&XFmCGbCY~9~>_)|i3=9l#F-)6)(w?_TC9(hi z;5lPSwEKU*m%#u+Nv=GBVG5jya{l{!Hs`t&gFJQTe?|J1rWFH!u77sAK869B0~|_# zw}1gFs0G(yOm!NdCY~AYJS_pQyG~uu=%+GlfI!~wJQw_rkYjtSNX;NPK498J967Jv zW-nKiHfr?X5zAUQ5Bpg103`>c3DkJ}tapJ6U9c+wMTt|SqCfXAizz!gy#NjW?3_1G Z0s{dEv1fcRJR(8Bj=fCg>6A*6!VWQM)L zz0^PUR4@S%8UOv}Vgn*zz;lNK8$Kd*e;>TSGeiI(;11T{{qzgL;07GVg(Ktp6C(|c zFJkoK{)031Edmcyq`gj)@P&Yo#+9loa8|)gIKx^424MXAPig~zi1sD`4e%ZRfkOtr zhmxmG`v3EP0RnvJ#TSg200;)`umS)C1oVvwNRyF(owcQ)32sDySYqnKmM{hzDBTx6 z@CbSftf7VrytT-vL;?0fQAezx@BQ>tNQDuhov;HW zD6H8!o@K9y3G^dFPgVf%?{ciif01yk{7?29nl^3&P^roWc4172M0t1mT01&CS zzqSB_`b|efq7komco-`dSIzHH9#hHS00aOGS7hp?VT}_{`-BDnqbmaAkmEhqm>#_% z1ZH4=gmVmG1TYvFZ|w{_KN=7~$=wn#`vSna!zJ#J1hSw%G*r{~&0|l-8bF~R5i~)0 zU`GHN`rrx<1Q*JbNT3ef*nj{)SO5eBEjs`j37qgDbuE2QPuSE0jZ^Vs14w$17d23P z%mqXQ_;Az+0suHU&-$7l_FG~g{2qW9Id6J@Y>qfMfuddh|1v-WE1*Hd#5=bJX*h<@ zQN}F<7HPzP_&xvtKp+SuE$Glj-;nB65pNtFom4omD zMLEMB2Vdzxyq`H>8PEU(1T&RjAiYNKfRKC!8HYkV^`+Sq3VnFOAg@{qF-sTq9RC1X zL6M_wU-J1{;htU_01Q?r;0X`)?3#uI!ME4|W2G$x5u7_=iP0yplYsYo0(m8`ga0r9 z=>R_hIR2GLBxP|0J)ezTRD2)%>VO2$fCwPL>k<-7`%v(31Ur*^0w{lABw%+EV3YyJ zSC4-H1Dnv2it`^ig*~H+A}9XZU+_GM19*{SH4_pvfNPKkgVvz@;8YLeWQeVr3Hx1yARIsf&K)|3dR*x zXEbg7;b&JThyQCqcg9W}Gp@I`f{B-9iWn^7{|(yA#<%u@w_!w3zEOJPV8;Q_I<*QO z)-Lat$TmFYf`Q%uKUV7b{rLgYX%-H!ILm{a%|tg7r+`TH;rsu12kn-zw?I|;Hu6X| Gq!`%G;0Esi delta 992 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 literal 1485 zcmV;;1v2^o0003AFaQ7nL7N~Nyag{ogCxC7mS4vS69xi>6aX9m6M$7{OOGBu8;j2C z{=)-Mh;kJ5NqX>1dVXRzyN><6yjhM zKlObK00ICYQ;CZO<{tnEWR}lDMO}&j0yY8BSAR;yrC0MIJ9LdZw$o8F^kMiS?ayYO$g@#b7^&8ijLQ2yA`t$+@3^8rk)5MolZ+7AOm;x@x0kt5ky}h0xd3hiSh^}x5 z3Wk1dyN%NUC{QyKr3=NKmVf{6YYPnLp6j~*@4&VuYXm_ZFJHa@E;dU!q|e{g0!0*q z#o{`-@B7{~H)-;3oopJQE&wQh6BK(=lI1^t{@=ZUTE@bvJci~DUkyeEz`zZ_pbmyW zP@%R3p*6cG6!{PPQf3>>1ho6d~JlM;bOwtxUY36wd5f$w`8x#S16Ne;0 zESp%Hkb%WUYZs4G;Q#@L_By&t0F+;Xs4JjR6@!8!*qH@^FzQdh0B{5Z5~|Fsby1g1 zivUtN`^aGO1$cE#xpqQrV2j^@YycI&oB{=`Pe(A}x|{WqPyjKn)dU8}5VIx^_yXTN zx|#om01!(+03dd$djJ4}pa2LR)Bz31hwK!f?+anbE<|9ThXMHW009610|Eep5;|ZD zqzF>ez6N@pg^;jx_Ui;*$G)fsZE=%Elco4E5)DO##05fx>G;er6??4(?J;`Q>#iVP zaL+VEQf-^O12|&Y6u%hLUwRb>08Ix0`jzM*O&(gt3PwZ+fvgaUp`shhf1Bz24nQyp zej*U=fA0MNj)|1uYIECy`}_ipj^tg_$!GuV4dm_YQBj}W#v2_7c}N{gBR}=2jz@^3 zWB2uAS&Vpr)NS58_kaK(CJ;ejmft;F&tV*wfvEZ_wjde-v>Xh#8alxrhkEeCg=bF0YLz6CddY_0C+F}00BV&If=3XtH2wK0003&02M-PfNJms zgnwWpU~3X!qyT-RHG&*uhjfHTFA1_CLa;c-G&{@Rej zWkJ{mpcB8r_$X+_SRCWl1>XmE5R~b6_yttwcBfh1Q-smimA~)&eWQAZyKv_pKY-K| z!p#EVWI6xn1k=KNaYqIq3_raO_R1|%ZKSWC)fHFtFa4_yzgaEQACO}pjn;=y diff --git a/samples/h264SampleFrames/frame-1027.h264 b/samples/h264SampleFrames/frame-1027.h264 index b9817e832b787fe374c5d44dfba4155493ccf583..0e9f82e12e33cc255e6ce85fab97bbd621e02b7e 100644 GIT binary patch literal 2566 zcmbtWdoz6xjh8WP=k66gO)Fwg5>?zf|?y_)_^> z1yWahDx2`UV2X=;#;J{Et(|R3EJdy*U*aN2-kpNr`d*s2ceBzaV~7Z{_+0w3tmz6d z5869rD>2Gd$|Q>JWBwr@w)-DQ6DpaLQe+QJduHwgluxz2H`XY1QlNNZo_OfVD%|ag z@c6&Ma+p#$f{jMT$4>pKg+v`&r<1Fc<|y8(1s@w(?e>!op$ustVV53bKl9s1zm+F5eQt_@~WKH3e?3!F4nJ(pW zFz)_yD(Z0r8fzW|hK7Kb_5f?C1yCrU8J`&JJwjr`E(ue=eLeT2M<%lUj+WI_%9L<6 zybN?4@OyAHC>bF)$^9vEMOMXNmyboTBb-@ly%gV!M=7als)XB<*Ek=q%$)#Bc`b>~ z|EosP^3)GF_4*zi;RJM4p&FZ}DzFMH%afT{ruG~utZ zXj^bTK_M55n{HXIOu&h@V_?0uWx(-`+s@^t(FY2vz~P=HUMK`m_AKjV3r(Shu{+E_ z*?9}kK|hJU+qpw7whRItA!ToIeA*_g2BLaUvg0fK==v=KauwQ zpElkg4L_YsblTdttUsL}8NOAWULoML`F4>nv-tHt!X&MMIIlB@92#bdSQj5rF5nB; z2Fs3NG)6DcYFPL@I+02;w7pHL?#8IPU_md+gzcdizu!G7ZYIc1mJDs1ME{#4J=VN| zYfdr7&b{_5tRMGecJwbQ|0u1o9jB0>+Cjm+T%(ED+4Z!oqwA7NeihBg?b~)%ry)2K zlRTH8ZUGQdV><>`5(@D;~Bl*@FB=;r@ik!^yWVIB}Em zq{jx+2RE@qL^nth^^1FE7cxLNup6XHiU^kl1PNnDqZ56}q?R9UFe(mayg$7l?pk-E zfY9e28I($j%`R8|i~$e?)Er5c9cTt%FwjKe&wDcw-gI62BaQDjZUrz5@Y1YjzEQ*6i1x03^8>{N{pzkKDmuFD>+=zjALCn#%2$(5BE! zB;I#Nf8^Q2FSe@(XM2_BhQ7?v1`sL$tjECBo6qAmWt_4_FvzA^Qek*1HWEr;y6WEj z>EaG-A0RWqwJNDc^wIQN>5=7~_SAFWTTqKa9h}%_YeEXhp^VEdlL1Hx1?q-lD;7QUA)CKZir zIMsrr-MZEO%d}sc6H{E)dLxc9Y9IN|ev(9kvHAm|GNh>@%)1~8pG=u8Z3tsbSiY~oMoN%q zB0D+}zDL;JwPtsKNzw z7TsOIaFoIQV+eD3*GwnioKzj4y+#yK5g1im%D>WO7SSIxDHl6%k(spSTl9ue`~t7XW->2PaTK=PCfEfuBNh3PG{Kbe5*q$UFui4 zl=~ci*KV$I?EQXYeSB6-3N@Z_^!r|P(*YiGv;xgrXvR^kcEfvzu0;$NL z*2x8lNpTfIn6FD(4$+)<$+}@%IwIua0Lmn|*la#OA+9copLmuWScB-oeSu5;KRgFr zA2@MH_Ij`%k&MtO@?R6s+>mT|OU_~-!qkb+xUw^r*A6E!6nyJ3j!`WUP{oxpI+AX{ z5luZCG+&y)s-k5gFM`^ZC(vU85^smno}iD%Z?WSf(4O?TCb2uH_UJPmZks}tPN!u6 z1?%cC)b)%UBr0K{y58ha#?*1pddT>owyDY&7D&&&2=(kKnpv=69ZfS0Rx@+~8k@te zL$C7u%&5k5`Sf^Ld#LkFfN@=hFR>wQMAcrA@`KvrJ1=?PXcZm)#vdd653YXkT7#kd zK*0F}W(0LFl$7B>1wfA z@u+lA{mSa60U~zZP^$*RCgew zw6F9^53yRZ)&alPPKn&=Fy7|a(N zT3Jyfi#zS;Kh>G=VDg-6O8NC$y?89MEVz=wxcN3hJZ;$-h<0OQhqU(|O1-*gIDCI- zZiwnTJ-Se#e$doTw>yRP$3K#%+KPPBy*1NXuwk>OwfLsm)wQrS>f#W)LmTUZUG9Bj zK>zK2bq?ka`CziBFJ#yKzUsb=UMv5*j=#e{FcJ7G$BRh(aa(5>$#k_qW_0GyOqW}N^ literal 947 zcmV;k15Eq?0003AFaQ7nL7PAtyag{oVx{tHRn)0`lTwF#!|lL_QNH8F4jOsD8vzT% zBO?)@Edk#GNwAy4Yygl2)GO1DEW|L@8~R@cB7;G};H(z~20#I{+lfrtN5DX(1}9nK z#M-h9xBlP+^gH8NF~a^YvLF8N>wo}(;n5HP0s~+f1ez$&?-zgrAOI9-mv$#S4&x!s zTPl1WltHjjLqsiXTMzu1AOZ$9B=7^o*pSu{m{5N3LQ^`2&7fosDu3>GDR2XD z07%S0v#=0_^{M~(zyJ_W009Re01#&Y5KP5)m@({%-oj-PiC_c+1G-oDcro;;^zjDbBc$?xfj7B0L7#>RSP5KZ zQ;FDEtZo19Z~6k0XEpK!_2;x@24m>Sb^#126(1-e9GXCPfyGI8>`% z3?i5<(Ax?I=t=I6WXXO2V1_g&^b%C8M9+<2>R$2)1rIBr33nZaf?-S;1*u*E0YtcA z<;2uV#&#Ww zTk(t=|J335f!$cQ@A{J%Kh_HmNd`d5K79Uz38V%M8-NlWUi;!9UDhNmgA`db%lCcj z0uL!#_97C~f70sI_#9UW(1WL5xM4g1k%WoYq7Zq5GfM$T@Cm1d`A8580W=v`4+$b+ zW1n#WDV8}bTE!>ZgQ=#8wTdwx-OzTv>u!$r_qo0Ue2qKd?f@YgGEir2Mf0FA4I}12 ziU6p3Py-`z8K?CyIavDBD0|4w58L#zOT%+U6Yqcp>3)E*%0u%|j2>Ji V`y>6U0Mj*xbDIP|f1>{b;^6&dn@0cu diff --git a/samples/h264SampleFrames/frame-1028.h264 b/samples/h264SampleFrames/frame-1028.h264 index 89398540d233947683c55a1414f4251c39936df9..fe2d98f3618e36a7d98241b32c12a8c12807fd0e 100644 GIT binary patch literal 1276 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 literal 1163 zcmV;61a$iV0003AFaQ7nL7RXYyag{oVx{tHRn)05;e6LOa11}7zyKhCMW{T_p!L%M zg@En!`M{i+zy_c)m^Ao5;lKT$7#+F}K7jlMdWa{lU;BZvZU8=kxvAFx($UBM^yoGL zSeWvFk-Hb$KBX{b+D<9KhHz8C59qSlegX_e0uF^101iYC!L_seW9JtokN{blfE>2~ zaIwkkB*O*2Z!i(5&N0PhrKU4~!xgVLieSE~gN3-{IegPb24Y4MjW>f?`|tmlR9KW% zUol+Z#mfnca?fgjmFPATSXM%W6;z*`2!S$mwU!Y5&w@4Owa4%G-~%fWPGa$V!=LwX zfB--M84)RO>FdE`0mFr-sGeMNXDr1fXDbGCrXc%1X<|D3_^Xvq!Vz3#(NE+~v z-UxZW$N(?~6(9g47r{aWS?LZW27-O+SNveUqL4emMgSDRc$4B4YTt`Znx+iXzyb+q z00a)zFJJ%=Q~&`3x_}`LZ}q&11&r_jKmcGc$*()M%}W5nfxD}huu_A(Er%ev5rTdk z2jk2D1ONaC0t`UufG&_BNlx?_03*W#1V;#;MX1!H0)EV=3-Z$af3Y3LfB^^}5|YVb zUfLg=e)BaDzyLsFD)xXZ%|eqA6On8?t)JikV>)_hOESl?YdfaQKA@s=Sf;KY`-Wo< zy)2vmU1FXP2xKM%0wughR3Px^47va!07yk1527osaC_h2|Ki?fvGrabfCK{>fJ{w> z*wT=AL~V;)zyJ^j0096n293)NQ}7U>5D&_gWIB){G{!KOKqMF_NB^;7$ep-_qqr~y zf(AqdG!>OeDk9esG+w>{o1g#y0YLz6Cg29I0C+F}00BV&If=LdtH2wK0003&02M-R z0BZ0BivvhN!#D#B)WH?8Vg!L?P{Eu4A(XQ{5;I(u^b?Ggu0awdqG(>sZvcQx*roXY zaF%EG)~cHwcXRfGxBE6b*55p*CcZ!A@GFEfm?m(C21Ne>Vh+3D8rvr$BS{aUGf({I z6#nyY)BkvKEakW6hheJh!6ewqbxwn#r zQ&#@y9Xe^2(>?eAL|-K{X*vUlTo?`#Kr(-(7u=bcoPo@=tx{MAV>nDnljMxF2yX2E>D4lKU^6);Xozo!jOSG z$vblZIhL+MAKVDBm+&X&ahfLo+13&I(=>0;HIdkrI^Tc4n91aZpamcn@&E=B004k$ z01d25_6!6BA|W1~xN=h+v;Z$l_$*Sf|4dCb@_B+I{J<>ok>CZ5mNIxpC{nr&NK%{v dk`^ZU4TE7m&`+Gef9Ztn?9bc%&rLX-Vqi*V^wR(U diff --git a/samples/h264SampleFrames/frame-1030.h264 b/samples/h264SampleFrames/frame-1030.h264 index 86a1941ea00e71b5fe6a5f02d0ad8507654d4e65..d68bf705626a0451803ea1baf579c2da5e0fcafa 100644 GIT binary patch literal 1374 zcmV-k1)=%?0003AFaQ7nL7IRXyahJ|L2e#F_!8e2b~zP}2_Avh1aYt!D+G#wOQ2`3 zgu6u=F!*Kae-y~HRhK` zFem^6plSfl>jK+b7vsnN^B_R)+&DQxC;m{=>(}M*Lk-TsN*VYQK0gr?rW41{^MHr^ zdO6R|>I?V*Fbv>gg;Q+Vl0I7hZ~znm&Uxe%vcW4dLmu$o${+fw7yyXGZ{9!vM6fV9 zqrq+;5;!Y;;{eSN0Ed7(TZ8w|F9(1aa~>3m2X-b#8XDfk>BDdaeh9oggYYH3F6?qE z91=YPgWhd`qiG%z#=$=sABzL>R9k+1`XdXjg;@ z2b2U`;Hq#yj{vg-2jjpXydW?oB14||sws?TZJ*SM@mS!X^M(YX!~?**Mm&5AwXCA^ za~5w5|JY;WCIA8fyDR{J0|L56gp@_dz)srI_#WJe0N~x#hb&+QA1K{7zVHZo3%sF* zi@c@Cs86;4WQ84@D5m|;03EXc7$8-wDu^1qO@IJ^M!Ept2^h{lk~yAwb=Krb5Ddq400ssapkt*`A#)+r>!UF(NRe^EH zbDrzWk6w`kA~=FM#xQ~u2x0ulVcE3shm4uwBLr9$1y&g^bwCot2j+^JXm<9oqVa~j zNS}zBAiN0MHoV ze*Ow^uut|9BN(p;5)UW{v>$akS0r>x|AJg-)AA#HwQ&-K%W{B-X1o|0UI=AKau$|w z$?uZqqW(jT5d4|w$4`XeygTs4SNukXVU~su7!_Vi1A4P!h=iBp#`X*V5Y7R35AMQt zbgKsTHdW?G0A+LtIGBfa;LRrx+3GmOpn}afkN*Jp0097iAe6VGK^uNUsZ>S1up$OH zi#UQe?Elu^*1yb@76)bS`hE`pq9+0eX+EW3iC8}XG*g^0;C23#3(51A0i6HsMq)c42>Id|Ch?w4D#^U0AjI607!qY zWYjPw4Zgqw9VuuijN#i1PKiB)oCmwu6Ui-nANha>NCEf}$MmW}BP)n0?EGr#qu~F> zaDW8RfCwPL>l6}DdpP(*n8=KyR3D1`WzqacG|o7Vu#%(hpa!o1crX9} z0YLyciKqdqz#EJJ00BV&6+&tNYVZY$e_(NegdkwB(YQ%Z&;uwoB0Pm0t^uHkQ3_SFU_KEW55ClLIPb8<5a03H3q!heG*L!0u0n4A_O6$34kd=Se6Zo zG;p2f!E>y z0RXTNH#vaz`J(GGlj6NOunka@eQF>5`@{eO0K)_gZDoYsHtkv35iOZ$00aXaA_fI( z_4qsi7|$yj4CX2v9cZY8jm&{cT0?|#Txy7fcoI||2{sUc1&+dFjekVA3i@x4 z-@F4cERJV5+NP`k8U;8MkoJf{l3@cLhy(GlfIwjK=$Wn==qIVHAP4#&1OR~by<5nd z(d%EnfHxZ8V{3)sWzy|`n4ARAD9S9wOW`O05Zn^**q*h_cZ>tjHTy261)=<&jM7A5 z_L#jQ(f_nGn0^5S5M@QBZ8X^;#7_G_DgYI7Lo6S3Tq#FT1x5G(kxL=*n)k7CumB)D z+&n{OfB+yI4n>T(j5!f>R<(E74?V;O#TjroAxwYoZUz8!3L>I-o?IWEN1ee+Ew_k< zq)}Tq;Cu`y#M--DAHlqqec)vf4mDZhcLiGOpF=M|2YCPh%nM4eU@BzqzXV~7DHuSc z7Gp>#fbxJQ=l}o#K>%(h=mxI4ye>?j3_uBi0k)$) zL?$b$11LbqA;uAVX)o=-7l^t~(kEqjUe5E)0IrKt_h-F-hsF2HfcLw>7)n-&1AVan z-nZaQJS(7p$f1FVBiXd#yw1zcR?Z3cHJTIHk5B1?dpb}Fa3?`Cx zq%zLjfVym)*Iobifcv6?E>}wkq%Q^;TI-JA%7PNHhkbmD{Jye(N+;fMGyI{VL%;Ta zMsOYmp>rSw#)4HJ(4mq${(o})Rw6sVEptNf0yL7r*rRQOGb^w*p2E=@@!#ZMkK3`4 EFmlY1bN~PV diff --git a/samples/h264SampleFrames/frame-1031.h264 b/samples/h264SampleFrames/frame-1031.h264 index 9895a7564de10cf9b353f16fb95517e96f1d803c..16efcdd45f60d000eedda789e45bd97c9eb0fdcd 100644 GIT binary patch literal 1499 zcmV<11tj_a0003AFaQ7nL7Jc%yahKwV^`Fay-8Fc#UFqIMlus~kLn|uzTt5OK}WTH zV?W@C*gPE7PtlhX-0GSubH$3e6rtj1YQ)7x#Ael z2{qne03ZZF6cX{--KGSFno#KR05xF6sAPqnAzpAM|MsI^MM5PlOTYLr;1N`m&SNJA z@CRFZMo|yn-XUNi>_7mtglVkj5#b;|BM1Oy&R8w*2ybGmf*S=P*@7Nj_sjqU2!Mm* zTm%92~v1n zq{+L42_phHK?*EEgM;7zV5KnEq!qH^h@Km_?*I)zY!mHVG4*jGA01yBeY~^C_ zfrW880SKAEA%Mz!xe{Ye?0!Am0n+eC4mBC55PF>@>U6G4-cx)Tq+4;Hh=u@E&d?YV zC(?$fNq_+%oH0o8F7-mnI@;a>8p3x-e4OaN?pTBXSdMfPG+kVA^Z$SVv}YAe2gGB4 zZvX&54e5XZAz;Iqn2dr~F;me35GqjBDOB3$2}DF{3vWK6nFqJv?g&=e8eq1@C*>~YGxF3=)=8y z^~7bCJOh7yeqzoeAMqye00aU`SOF%?5jlSuR{Q_}fJ!z1B*(4-`L?O$}!dl*C-nz3< zh0wT%Z-cOk{W_@%av%QJ^lsNW?|F@VS65!Dp@thvTyJ;&+YuSTBLL2EWk0ho`+bcW zuaS$N{NM&2ssamA6Q@@X-|o)C zk1ma0yWjXYc6m_@guEZ_6x=WX{X?Q&@|v4|zyAP3umAu7K>%(hs0Ob9crX9}0YLyc ziK+psz#EJJ00BV&6+&u&YVZY&e=mW)1`xzGghLPsuO!jn1dDM$l0)M|03z=uIZv1X zY`ED8UmmYG*>Dl9E5@p;)(kzC1+c(~sqHaaym%ld52f%R84+?P3wMTn_j|X-ZY66pKCS(1w3{iv#`IPuPGMjx2($73F`BY=}F-3;DsoMJYr^4HF8mz?yhx zNX#N6FirrNp`NaZt8-eH#a|NjOY38#j61P=>A zVSOcTi@>lwz#<(e$YD+ZUj{f`|02Eu`iM?Xht))lzA6}fDOTqvY(i( zP>UP=3KxsBht~#clS0nGJwpnbPtVne!Q~{r!|m$9#lR$a5X0*q(UhkH9~oMi2O@5Y6)pGs#u-H?7=uzv4jF}m4j3E;0A<~^ziU(I=4!H}pC^n!t!J(n0Vd}Rv$_yGU`03fKag?=M+S;ahQ zA@2U^-8=xw!#`R`5z;oXKMH6J6bhcj8)^GbLjqEDns%d)FW<1rH&9Bt-Rk|9}Al#LC1Q!P*4Zgr+P2 z91ID=#T(F0gUPCp)AW@)vVY6AOK*7 ze*QIi!ZDl2hGP!BESddYXEfP|)D%tY6jQ_hZ~%w_BdE}QKDzNVHSQ1qhOMj?y(=oA zZ~y=CZ!_7p&)JmW{@!1&cA*{s5DZoUF*X}xN@3vX^denhC5~cAp|D~!K&e*Y8bxnegF&s38!>70ETxV zFIblxiNeW$7wN+QL8joa01z2nzJM3#Fh76rcnS}xL)`t=ypmi0?2U;?FEt%{Ul2ML zg~SEMe9XYz)x)8}ZmL`lz!>Bum4v_`Nmgn;!_0_fd_yChSdIiyfB=Ar761?giD_D& z8vWwX1@5Dx{+YeuVgMd9i!5Wsku2DZFi=%i;=@mL13OQYJ$fLI`$rQ)I-nSVtFiA` z$%+Uxw2U${^}Wll%{q{Gyi}80hVDiDi>?|cla;_-2eaq zK>%(h@CL5{crX9}0YLyciM#=;z#EJJ00BV&6+&+SYVZY&e=mWK1`xzGghLP#4wE+k zNVY&jNcQ7E7#%aTzz6eUWpt;QW-2oly@XS-k)M;3ypuPguWfMOu+3{9LI1X4;O z8QCzY3<;-(bd1M|3kA1G+@TI1F`=$y_*x{Ho;6bnjp^yumC$k|kNk{(LCu>pkr}7ix*f$@ziUh2ab6XWGBHSeMjHjC^Mg z=R^i)?+ySr1U|}sVe6R#jQk7&elCjpSZE>9TGM|sJ2u9SUG~wXecB$ZeZUz%q8R4& MFZ4G#+Uf`K5D6wamH+?% diff --git a/samples/h264SampleFrames/frame-1032.h264 b/samples/h264SampleFrames/frame-1032.h264 index 7ebee93a7f51daf512695623a9f87ca964d52be7..bc141b6f1b5c2b71850605b13853c97a2aff7ffb 100644 GIT binary patch literal 1074 zcmV-21kL*Z0003AFaQ7nL7KoCyahKwV%OC4y-!y$<0D>E!3a0Y@MaN$FhmN0fWaI9 z5CAX`rZu=|JyC&`rdIY(!xFQ~0Y)oZWoFE?!~mE8E`WhXt5-CE&KQ6H00c7_QdWWp zL(OZ5ZvcP;aiD5h$^ke138vz>0096Zpi_3x$B=-PmH*zrFaQu7k@}+`8J+ReH422g zFl?Ygv359)66CnfqhadnD0RRC2penfd@3WzaprPKg0oVb-V7!oY zfWud?R0?n~E=Za|qmzl8@27u8~ei9F5AOdJ>eKb4044$gGLm1fB*;- z@Bo-NC3wRyc(hWfpZGC_0srxDGuZmC3_buaF^IynQjH{`yFdsLfDm<_39e~TGI1^x z`NO60FaV?in?PV#U+6YBC&9^(000D>Py004m)5BcEs7yt+cfC2f1z!e+${)1zj z04Ovf#e4w@8<|kR2n-0^m#n;-)teA85Bd^Z023n_9S&fE`;8K8Fa?Zx@bShjXeH>w zXH|??e>0bedEHo2JOpO_UKFn^5I4px> zd;lyn_XYqcOW#h0#6-pm`@jeoae|zphn^_bG?u(EZTI#iaDYMJ=F;FGN?=S#Y`2|f z5ByG%2+$DdCQUEF@B}#k00BV&ZYHn>uK;*30003&06B@Q0jt0pi~s-uK>!s(YXEBS z1n}@Pf&&h~1L(|VuS8sP@&mGfKVUxrjt=kDha&hQfD8em;y_TcF}Q%1bLv=-};eb zIvya|Wc*1@+GVc$CM2PWJG7cQWB}=vVB!P8cK|%fX8M833f0KA1d2N+- zPJg+uEQf^t-uwj8uw*~b@`fp^RQfPj^|UO^uVzq#l?=y|Jhi9<}9I@06Fsu9oI-C@zzJ~ zgoqXb5=|iS03jg44*)In!jvmL>w0XW37a0T0OlhdFRJw$|L}JHHkpwT@B91-q9J^~ zbBmVZ0^No~IuRY;+k9sQ#xfxIdjl~e;u#h1#$4KU6 s03v_@fI2`EGSy_iV8uOW?*P2#A~7jgJG+DDRhv`^j&nW?IG9{Bz}WQ6BLDyZ literal 863 zcmV-l1EBl>0003AFaQ7nL7U(jyag{oVAV-CW0~6p$Fz5*Lbb0`Q30ynV z9AV-$#(d1%R07Pw@uYwP9{_=ZQSyTfNlS4E&Y&{@0s;ysn|O_uw33SCUh%Pj0Dw`I z5CNgGWx1FzhrnPWPdg1bz#Ic?^Bpiy3_pPe;Jw08BX}>|xMRQ!dJvs8)Wzlt7dVGg(v_EPq+euq*S_Qh(H4106^*dkO&ye2|!s(Z-8p>1n}@P zf&&h~0H+wp{Kbs_$P$(dy9eMD(Ej~l&M$&%fEWW@fPsXgf9MHrgD$EDSD(*d3k-sg z)R<}r7J{lE7!#mb3>yJ2tPP1lc?^4YLL3rh&}KM53x4bXNIB)XB7a@K;0gYbCO5R0 z;Qs-n>xt!vzkv71_}v4%J{1xo4=6}DDwvgazez3xs(`{D-PB~+i#x5*fYGAaXI)WW z|C-EfPx9LVw!mR*vkBYY7`|Yj>VNA%U%liP{6ruo;sqAc5C9MijsSBys7W%)9v9D} z7hZK&zju}yjJLM__dFLHWAS;>`d~Cjv&msf%>VPT!c18LXg~*S1a>!u3M7>g^AadX zf#3*3NK8fqA;dR;9^}H5J1pQ%n-)SwO!EN@As3T#zd0QTjq$R0k)z)Gz?yhpXN1HE z3vZLm;Tgn#W$ZJ8bjED{ZU)jm6O)vG6Lz_ffE=P|T189qG}U4+=GP}4%H)z zfN%pTW2XilfFS+_5y}kA108_@qyv`y;2<&J3mjC&+FoA?=v)XvH~~xm1O&nWuKARM zrU86HlzMss8Hd?{7%QZmX)V1=K!eojFH@y*Uh?wtZeQ0D#caR;KrM;@0sw%}!JNbg zr4D!zjspa-h1U5|nbT=6rY0V4+59eCqlEF$x&t!cPg2O-~j=G_D^kY zE}J|i%`d_D0LmugM6y#Tt`Zr>Dsa3fIn78ZqV~Ih0YDB3BmcNzk)@36NB`aepaIko zcp#;fDxRAh#|#2U0NB`wH38*s&%96oCjbU{U<`MS0`H8{ali}!Q$v2i4QYT$^2dM& zeZuhz#-ey$ysm+V-~b2!h!VGX;{&*?Sqf1v?f?T2UHKG>*`8WRIr`r+WH^eBPgSJb zT*I|L{$H7p$m$~No`tJ};gB$11sVtmlM#^;kl6pgz`%vnwe>ynR`T*#8r_=^1Vr#y zd;l9W65^0!*T@*SU!HUg1B*5xSJt%hJge%Ni3nFgZQNRCa z00sk{)*8gB<8kqh-n2tbLgzEN95CU8+gfYi`~QBm{$!}N+uXbFp0=cCpWy(C;6YkC zT8?or-o-qD!;CXjj;_aczW^psKvy*aVf^aj3!s(Yk+F-1n~msC@`)76V2QvcOcLI_61NtEOP?_!<44TQ^(hx7@z_qNF0DV z2_!zt0|;PQO!TTx6adKcL8Apf_qGKyHk0))0%_r05U7C=z!83UaA(qh|G&XW!iQVR z4CCWf{%AL*aC4-BcQ|+3gBqbbgm!!QLod2Ego?o_GXToYp4T?#0Pa*AGUo;F=zN2K zb|fL(n3EY9>!=B*hIGb=6euhXUX{K8v@_^;Au~aKx zZoCnu*UfSN@B2|@mErxLn*epQKBB$%gbK_Gisg!?B}IDhbdi}5-<}aP6l6GiM4C?T z00@H7O}Rexkg2&6YNbC}KoQC81&8?p^m1qtPOKSYnU);I*FbsiLq;R1kfLk8F*ZxS6Yzc>v@EiIGem2;v`dVg|nV#}xC=mbv literal 994 zcmV<810DPT0003AFaQ7nL7D&>yag{oVx{tHRn(~vU%^1^NEC%&0Ehq}9TW*t=rBLm z4tSsd8j*(RVrLyHSNH}80$np4zS?{ifiq&uZec4QFUO)Q+ezyLri5CZ{uvbFi)*`YS$FoL>JdkAf6EB62b1`WdyLa$|k zFWu9*fdC7smr}sF^r4P!3oGKB3@-49ZhE+52`!cu?}uP}dbo!++i02ss#8}7`ag=8$)n10}4K`D{_$SY9v zjFi3p0h9^l{Niz7q*MSK2}@%ny>$M?!iQ^oYGkL=cxUP${vq-W>n)h=g>j2nivRt8 z*2$rv#!hol!U@1JB{)dchZ>PzkNz$TuLwDZ3lKBv%Dxn;*dhLy>?c4$TQO_E00;$` z6aXl-a{r<>N(My-HkfdB4oY6TT}|Ekz>sE6L1;DQxE=ue3Z@I=9W-5c{>}gf;6obw z6pV94wM<-*_65BLEufIYf-HiZJpfJ60003&0B$CL2Co2k zFaQ7nK>#_4paHAE8;k$|0YLy2LTCVL@C5M#2rMwEgHQm}?B>UPjPKYLK>)FX!tjU= zC>;4Iw05-{2H-k0$PRb_=rx!2SQtYB=6Y9v8AVw04(a;>im#W}|K0@C!uk*;2ndD% zN4|bY47Ny;5BvTD6X+~0&7|S+s`>cvmp1?VHR2GS@<#jcbCkqWgB0rT_8DG$4RN=Z z<@%dKMFpBviI@gH)c(D|Ffr1gaL=3_|Iql40Cy}o+>Cs~F$@1t6Hg2Lcv?k1pYNlD zLuZo3@4OIYnkKrW_xG@S2zCH?9k%akeqWn=X@R<0i!2{v`~BJLW_<S0g9gEs)saEo5i}fRaAQo@@8AGCOwnHC`|BX7xe{y2ezOo>z*tuRjSk82lY^Ik z1Hwt(EHTIYZ#Dkj_y7AJ&~C#5aENEP@zzex0QN=wWCts7>Mh;oU4;oFfPD%6-}dd~ Qv3W-JM{6a2c)uI@;FrC*BLDyZ diff --git a/samples/h264SampleFrames/frame-1034.h264 b/samples/h264SampleFrames/frame-1034.h264 index 104a6501b74e4dc25f31e259db8b64d5c5441ed9..c2afa3dd6962625f90adc5195e01507cccf1380e 100644 GIT binary patch literal 1467 zcmV;s1w{G)0003AFaQ7nL7M;?yahKwV%OC4y-!k+h!iJ)1A-s(m9=vJA&viIWPX4k zEbhkgtpLEvJds5?mjCh`r1 z>B87USk&ME5CcvC0s{^L=m^FpVed=gqNZhxmnpmgOG3^7zFgdw&-Q;1rDp&KMa|&U z8vp&o8_@z?)T)bIaoi0Ihz|k*31E2ym(^X_a|gfnuma$H)u~u%DHnh2CV&7y5%2{y zbRyM%=Hg(16Wd3YDWuAh|M#h=5PFd%>O`(e)>8fx1%QMRi2{iK09YV!Ur`qT0SU;! z0d7!2pZE~N>#^T(05I*fyr^+fDz#7d0w8S@6oTfuMc^h7gO~rffB--dg#uU#l<5h8 z`Nz5^{`Q%K4lu5#fff#uuJ8Z^0)rPob-WNEzJp5vk<<;r=wyNAs2Cz(kHIQ;_oeXo zP#A&$NFjkBA@~ddi%g9F2GmAE(%%@}%2gG6?@HFa8zF>|m$DIAq`!U-fCA0}fTY6u1h2$TYs!S@?Yi+WadkJ_WPCfnv%U;vSrh{|)R213?}d{84na8M0H0r8faARqy8 z84Zd~=EeWM(gqusSa~KXD@FgfNCpDU;Bj<066q)I6JP^Opc!I~!NFDEXk`x6pwq;z zdFqIN?$I!CnjHpf$mjn6C>g{sg^6Ej5J`4W;Q$DLf{@$7#!XS0;jixi06-0JAToX$ zx>S6LE;Z}$00aSe1cfLm5;l!0Oj2Ax1YGO`oJ)XkjgR(&_#76Xoc8nZmWSnl115%; zt=!JVaQKiW*nxl&0{cyXYVHIE1TLnpsV|cCmy&?qw}K#4DDVJ5unYsr+qMLp6}5|o zUXIg?F=-qC1OyG6!rk}gMmAh?DF@{*q08WE1OcuXj4^k@zFX8nKnTz}RDfZi^TWrP zxqukYh@=N!$c$$#;UGY1_;$j`OC4k*7Df$j0096642wXuxK9Uz{5X`$XES8T4FIZ0 zfyiocMK@Z+`XGvPJ?gju1!TgH{2jr-4GCw6TKi?RgG0gZvX&*gDwA1_{@lJQ?mmgaEGjQnNQ8&00;z>umVk# zb!s( zYyfKT1n_@ALj(iJ5e#Sy0D=bF1lGpCp(Y36AS>0mhxu**aC_Zl&*Gc&5u#Oz7}=ly zLvapY0>~%=cqpYG#f~O@kQN32ZVwz~hYjEYoDNMKBxYt^w>8)Q|CjsA4|hI056 zK~NMyP?3=%0~X-!Yv<~@c54fk353W5TN2yv_%?oyIR?>q^ohJB9=cu#vU zB5uHdKLBC|)ER_o_l72i5z+iXY7222qLI13>_bDv!Rl)W;1OXf;l37r8-)N2xbEq# zp3{ZV_%hbe0}Q|3Csx8M_jsx#Ne{v1DC}fznJ!=fd44&gFsA3M8u>J_YM*kx|Ni&+ V;rJYNlg}N?%lI(hP7w^^KRj}uhROf{ literal 1267 zcmVv9Uk5m?ozwgF3F(P=fdGCL$*y*hcGQ{s0VTPfZ?u zA;|6@rp!K|qH|cLt{?k`V-CGEng3l=9uNp*CIkW{yhl`E_~;C}03rZLMIH~LEUs`N z@9=-|Z!_5XuMfZi0gS*VCc`XgNIW7o#j0Qc2m^osfCvLeWrhg;0vsX%`BJQhG6Y7L z#uDfR!vzTc_AGl7wh*;<1^}=?$bhDTvZ*ITTH;1P3Az9P0YLz6CWr>F0C+F}00BV& zIfX3Q##QnaGT8JiWP{oIdZ? z<%9d6bMeGjytSG{0cqR2k?;NN1k=Mge$|MvAz(}JJn%kJB!KxK7{_pe6T*Gpq%0l4 zf=zf4t7zXtL)-^XPYdP#gpP?A7{O4`3jF@zxCdJS1U2wC!L@<{hzKCo2K(hnB|me( zns{f}@W;Xzv{nCr81bzbpY_$@iKB$9{vdaSXE6FP_j7;PhKGxTvsMwnBEoHjFAG1L zhJZ31+}fJHK5)7Zf_qn>1`+SC8Czjgyv$`HM3wkF#T`Tf+Ub!H0eO2I(HK*6)F1Lm d*1PxZe}Dh|@A!QO3bM}?OW)9c0(ZniK6vY@H39$t diff --git a/samples/h264SampleFrames/frame-1035.h264 b/samples/h264SampleFrames/frame-1035.h264 index 41146649ccfb41b40ed5c56e9c3983cd10f16f1b..fd62487fe4f63845e326ca983b12618e48266f33 100644 GIT binary patch literal 1714 zcmV;j22J?@0003AFaQ7nL7N~NyagW~6xjz*v)&X^n9vMh68uSU;!s+_Z<*oW7Y3II z@$gDE<-go8f$Sx2178ZZ2OY)^15+2s@PRjl2f(ADijV<6z)_&@1>r6oLd|#@ScXG9 z0r)2A5M;X0B^nOouY^24fH~vf$yP-lG(863R)K^52zkc}pp|nAuqhwm5mlJn$*iTzD4f*5Xg3Q)|XfYC8=#+7Nsp!fdY zy9^4LiY-VW&vke%SOD+_IOQNhUvABnNv!Yy1ppjUZK$VH5$n{|d%?Zj9Vp6&02LU7 z{jmTt;sPD}h5*Ej2Q~~@Yzb+oOaK4C0|z*eLTL)t?6ejLB(eIDTM#!- zG=Vk&jtYmu9N|ImD6qvy0H1)PLEi`5OmG3~&IdV~Mh&$`mkC@p7~rDlYme%b`oIVL z;BoMErTin)oU#zem!K{g-G3cIz zo&aD0zv55;m;t%fhb&+K5F8AoZU6!kU;$^|06^##ud-4^bQnTj_y7b@xIh3P1_8we zB&u7_fgTYELp*=)5C|baamZYOMFC=~lqm3*fDKnr7q9>j2;LN0fNy4m?f?P@Y|8SnruI)lL!DiT+Sh=I{$&w>*J)XmvH@16hvfR6xUKo!DQAG4uu zwioBjZX5ss0;-q*uuQ0QC0096&7pTkKN(d7E zKkf){Ti21$w0hHqA_kYFBMh!6q&QcSLxF}`d5~c2{3JM`(K?eXM(kJ%tPyM9m;jbk z0Z{SNWh8Ztmxc)_V7diF5ic1IS~)@)KTY(OaH(>002NZ3^prwf6+rpa>D7A-{g(4GjkVykQt}T7!gpyC@XMZ7! zkW5|(zQ6#&rEdZY&R@XwDVEqKP!D(TB`Gz0ANark>3|=Aj}y}>29Gc-yKMY5E3NQ< z6+iy?Kmjx$0frtHp;M)YlWtn*JOK{C0003&0B$D82Co2kFaQ7nK>#_4vH`2W8;k$| z0YLy2LTrF)@B~y7|Np=Uhi)WoeuV%21z)F5X#WCo0?Y~^z{8*dpKA*pP}4w|%><%0 z$FKB-KYcHR0YM@}V~GGN>y|va@Br}n{1A1yk#_Xo7qdVFRXPL49S`N?014YgfC%Vd z^9S?ydp_hCdkMgz3J2Oi0Wbgv05Af-AeUCqWng;-XtIq@=qQ2 z2zYm38Nv_%!8n_L^?^81^&?0mAV`rw@wf(1#)1m=>EY;7t(;??Dj(L7n9;%m;Ic(*ba-`@vGl^)iJ~C%gx6U)!LVgD<d$d?2^kea%TLh^t@!@A>jN#MQ94R7B(?<0td#Tm^Ae% zrOd3Nm-7Oi1Tplz-pKd>FaQJuKmmYWLekAVgx49JAJ5@{0RaFULctO>VF~>VK>iP$ z00v?);$<=%W|i~6K}i(yojQG2j(E6_76?HA8NmR^03cm+ppfnNAHrpzC=djj3Dpb@ zXBA&?YErpQ*Z>2SRzlOKm-6;3Kij^M}Pnz8ae0y0RZER zjW9-L#2Jn5jFtdE5y=o>fdo}y8{kX8C;$QgK`A~|9}v#$;?9OI4AuzrxFY0(Y1iHm z0EGeqo_~R&0uM_=yr2UG44Q*REC2yAZ`Q$_Fn}Nf01SKsA9k73U^IRQWB>yfgo6Ot zk-!qgwm?$`sk*=ud5aqfr^L_$zEUq0R9-;9%liTb7YGcGI+om84n$UmU;G9T!$MI& zqlLmreem3afB}NM0Xg#Tq)-D$0FY1{90YbKl^`rwZ(F5tDBJ$SIx|pW!gcTH$6R>> zN@wHGU-$k12|z#sX$2euDE$;@ICM(>5#Ru10KxAHddigb=l}j_ zFboiuTCbe_{`>q8dH@dc004kN0F^HXgQ5gHJ_te%Ib2ZWm~)9Nfa5?DbN~PWK>%(h zkOr>+crX9}0YLyciKGFmz#EJJ00BV&6+&qMYVZV96aW9f2#0PYZGMFR{smvBPH6uE zasx~XAi%*00S_!Je~HKl1(~3^3&5qy$Oe9w!@!`^h*8!I04_V;0+$24cm99{fbaRD zOm{s#vA^h0jEC-ke5uF>1T9VZWyk>S761|O=J03`Jqj)M+mC|}VK@{)K>MTti2xPg zv6utxonc`NExDG()>wc4`J{&W*+y_-vG8FxIJABGvJ4Zo!?67*=NL8>u z{s~(`;BTDZ`|kp2e?nEUP!+p5s$v5sxB&-fLdmT6QXHzLVgy#7cnQ`?U^oww$r-|a zyVRS{c|@n)Z1m4foJWi^zigmj-XtU|!Ygr*X8CMV7z+Y(6OwzkrE9r;~v+L?^uQ0Y=fJ%g`HhNzs6m zb^YL~MAivIu#?_!j{sk7s7yhX_k(mAObT#~39r@=m`IFp>>Fk`!G|T0UGi-Tb76h; ifD$3C(}?xY>nu{wsxlw$y9(CcA3LAe7#vJ07!_c^X4F0a diff --git a/samples/h264SampleFrames/frame-1036.h264 b/samples/h264SampleFrames/frame-1036.h264 index cb6248c4f6ea29516ffa66ba51092b6d9e6ee02b..909df332a985dd4a1938422e829f0fca415a7d1a 100644 GIT binary patch literal 1443 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 diff --git a/samples/h264SampleFrames/frame-1037.h264 b/samples/h264SampleFrames/frame-1037.h264 index 975c3fde03676a7130ebc18d949840f65e447eec..b7ea81f5d1e8e8c37a8e91141b29700d3762b34a 100644 GIT binary patch literal 1119 zcmV-l1fcr>0003AFaQ7nL7QM2yajhbLQ*~lQ71o?ietdwDbK05J^8(-~b2(9f8EwdOE00ag=0|4YwS76CdQv{`Jsfhp_UNPVRAqK<$009CH{`LT|L4bfv z+0dNGs7ouU$(gMVQSNW#0~7?EPcp{DQKl^G?*uUdnoGotC`ePK3jh!J00@9kJ=n{# zEF}*Uwf}<{P+3fWdu_8eVXL}^9{?AOp$HXnO%iFNc7PBFU~!EY1>F)@aKwMDo~EyB z{t2K2AO#aZ7!L+hLGaCI2PPl@5Jvz320n}c0R>P8{P07#7yt+nfB=C1;gA4`Zae(} zkWxTs*{KWIfhw6?LK1<3A3%lF)%7J3@j&1~L-AXF0N@7Y0HAmfIa@jriBLjWDtG|E zA+m9R0HEeEatnw}MZ^HZn+O-`;e`kQ#6lw=j1pZ8a790W!#_4wgIca8;k$|0YLy2LT!L*@B~!?NIo}!2gk%Wo@7_P zrSK$!fF^^10#tBQfCuv5ZV?Xc06Kvqf{LQG;3S?MM0E+DdC&rk3V#;-0U)fIyPMZX zt3ol z&I#%xOK^j=_!Uy|32ufSMu|%i>Cm zhbZu%E`pi4Lm(sH^)J2$`_g7zU?3%3CuL?S{++{DS95Q#4Ibe6L@&@tbfav+B06(^ z|DkAnBY;iZn~cB%?hlg?3nn-J91$O_daRPo|NI?Unt%X6d^P|OuL2l@|8N2z2>)mQ l)@YEYjj}+)SAU~~UWB3wGSOSYhjz@|X06+jh0ZIai>@dUR5KxMRW$wEx3;8NpU7*Og$HmLvi1Fir93IZh{17Z2=by{EJ z|8M{qfB--oBxC!QijDFUXS13<4@w}&9B@db?am06p`1vbuYJe>Kx6VmfmdxyX$?;) zKX@Urh``y90-!Xoih?MaJOIi70ss}9!QyZ>hB9l`m;eF{AOIl{00I$U0YuKx`xr}# z8n^IswgwUgt$lOAmBQt>DaH-qL7;dmL78h9$CHR5s{?L46mdC#JpiTn5)j-J#7xJ4 z2VlSkb<@CXq7#yzj#}Lf`zYFohXeGPPcCevT+*iDfIEzHISbRs8=EC4U3 zkkL*B>8+PuL%;wa9C1NkK0X3lTF3^VDF7h{EJMsHWXdlJAXcRZg9LMjlLg#V6Q(VZ z38pE202mnJLs6i^CF2L3EW&xy$RG+0Gr$Fq$AR$RZ33|QE5HyOSp$R}8Fq+9k+aLQ zUxh^@0Fg4uGG#vnAaLLW-2eaq zK>%(hpa!o1crX9}0YLyciKqdqz#EJJ00BV&6+&tNYVZVA0!ThLfEGg|#rh!ce{+E} z91aR_0sT*L1b5mF#(;4GYT?CEQ{WXZ4x$x8XYWFWh#XB7uK)wqdM_jfQJE+F{o`P+ zabos@3O~3z3NRppf$>a-310u!99Cj{lTyK!4{K^brerwUP5{P78uQ}_u+ZlUIboOG z9*)5(ge=0Q3l#GGVnvkT3&8<#2=Oa1z0Z^n-Wf)B#$V(ZDgl8uLyDR~R09ocmhC^k z;2U%Yv;!~zY2#L38J2R(cmN0iVGWEZKhpyQ4!f#>e2&c*zfdrcV3B@iW;IitTwhxJ zFzGj^=p^!))Z#7ucidWtiFgq~u#lBVNmdp#|8u~YBrY>SQ)R>d{~CY+Fx9V6`bK~V zBt&#<3LR7x7gco55R@}igGj~_glGH$zz!%P(lf}XY*!s^ja0SQ^*6W)q9Hwr8bc2X z0gAy$)Zvu_zwG{RfdBtLmg=q%|%Y{4QvaDM-n z#>#}Z2;e4KO!{C0P#VyHdpJY*;6yKa^;sp8|M)I&^kL+I!|)|~CjdZ%kUxIU;k^3I n6iJ~>kTCwm=l}u$z@BVC*kx>(m%HZs`V_^p9t7jX=kO}Pf;H)X diff --git a/samples/h264SampleFrames/frame-1038.h264 b/samples/h264SampleFrames/frame-1038.h264 index 50669223a1e5f35137b361c7e5e9889ad5e051be..e11f8e384cfc3a4a01f9ae913560c704742cb199 100644 GIT binary patch literal 1227 zcmV;+1T^~q0003AFaQ7nL7RXYyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zAv>MD05EZ!qar-YxwT&Av%)IKpEv=)7?l13CtpS@C8V4bFY2sHIhVmg5Wu4cAe3Y{ z@U6>u00IDD0YOweB*IU3&=AWdlZ@CDM*srv+8#0|FYW?>0Du|c002M`BtK-)_m0HS zycl;LF_g;_^MXGqP4=Jw5E25@tN<*3q|Lw_7l2~l_aJcL0Cy=JTmj$*lR~EqNId`` zbbzAyN!oxt_#X&h4_o(uKoCeSOv%nQlV=E|%nm`o0VMzem;qf$)&X;XPY}^2u7E)t zCae_Eo-9q}wgP*=fKgi*00;<>-~b>T1%g5u2~BDacnC&>8EcD>>Clpt9)JLf$9@37 z0mKPV;!x$*CKt01-Q!pQI536_?iAl#A-6IFrzieVt!LzyZp!cO5+Fn<670fYKquXZFv+Bn{KSKnDkxN8|)OB7u{el=uZe0PGCR5?c$ISC51>px^>n04_Kx z1)vp2`|lJ00su|`0suss03e^90;I?4yx;+V0*N+@g}J7Hfiprt0GGY52y`B)K>m51 z1|NU`APO*RU-AM3y0C2uv6?r403ZS&`|>eR-W%p9li2mKbbO1CU!7)?Gu7eRoxk{) zz+QNUfBR%II*7bO(A6M64GslB5Fl9q(NRe;Sv|xsCl~P`pT$5B0t$cttL-X>awKn@gIAtZZRq%<#zB@k-h z{9zPQ8l%if15jCXA8ejo|zc24Vrm=uGtpaZq2QKR|MvAXhCNWu*Gp z3TFZVUeS!u$mV5)=Rc0|5m%bEQB2{3ZYb z0RV7WkY~a|?@ZLL(*_&?4!{5a0YLz6Cg29I0C+F}00BV&If=LdtH2wK0003&02M-R z0BZ0K+zDVnF(X5Q0JEs&5g*E3z_G$Wjt&Km;ET7B=#1U_8Vq0p;7hVCVvqr`fCS)m ze1oqG2&6Aoxle(CDlJ{#v9J09!>Eptow~n(nt0w+Fe$@|fCY^y;?6!HMmsH+ySx5E zl`CU+=s3NyN56eNpYTDVD13a%*TMh!)wlm?<2U!u_@mhW{`?6KkG~JwS9G)U?Kju~ z1jdN}C4R}xWU!b5Y2jaw3PpCXmBat|1&!XLLyi6ZKsZ1w0dFi%&_nA@|DWK1D}Y3` z8Ejn_hjXqb8FIe`s`-dqv*6B8uPBgG%@Qsl#ARu6v%=*zNNH51k_IdCI z3I>h4rXJPTk}28>8Gr>`!d4a#v^jQw4XTg?7c~zr0AK(>4&7aV4gnOn=IkF2ph%a_ z1pt^ZhD-=%FqU?A`U1O-3r5{VCl!H^>m85!^f00IE+ zpcIj2W@tcK{?;u94KQ#i7Ir(=2djSg1PEnN!UTntY=Dubk%83kGM;G#6Tj~PoDGMH zc&Vt4gj3s>PZZUx%9jvq{d{K$O zi)F&#F+l!$J!G=}%(hs0Ob9crX9}0YLyc ziK+psz#EJJ00BV&6+&u&YVZ!&PCx)a0D$7!X{Ot4wwh_S+W-Cl4#Ug@0))@o(zrBO zB)!-@2LMM00>^hZvU(#o{n^1_0Von=fy0O$i~uJCtEeKs6bOditemGX^aVuI26(p$ zv=03ab61CZ`~qp?c~Ib|F91Al*&&DQl{eb6Fx~plg)=_<4hohm414|{DueYtt>CZo zKkIOP(lyZVqw%{zcUApJxBmG4m@T!rX}9`b2AJiqEVS=BHT!DZpZ5`Xz=X_@b|qTL z*ux-AJS(pr6qnIpmEr&WfJVEx>Gpp5xF0Y9U=F@S{|N1DtXNkM65gB!`zC77H`r|; zfeTF+`Ur&p-zESC-*GvT0368DxW1yX=8$@jO|b;!70e-6Eo9v7ul}HT4Q#yXgANY? ztki96H!#nAgYrm(n8eIxWbd5kJ;b9K{ sZ^mT~00IEyBE(_54GTzpws(xn*qmlV@qez}PI~(>RI9iDtRH}+fHpSgc>n+a diff --git a/samples/h264SampleFrames/frame-1039.h264 b/samples/h264SampleFrames/frame-1039.h264 index 1c28bf507c519d77ceb84328cc19caac40165303..7f025328483cb1c042d4b4485fc4dc72d493e83c 100644 GIT binary patch literal 1502 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 NKL4A~;CLec0p|?#v0eZG diff --git a/samples/h264SampleFrames/frame-1041.h264 b/samples/h264SampleFrames/frame-1041.h264 index 91514cf10b50983c3b4748a58b7b178b74929426..f939416b66c5322fd139d3c57816727692b8122f 100644 GIT binary patch literal 1772 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 diff --git a/samples/h264SampleFrames/frame-1042.h264 b/samples/h264SampleFrames/frame-1042.h264 index 62e9ad60212581f72be954e22f30fecb4f37c79c..40988a0de73ca70dc5ada8ad2db8e6dc4342f541 100644 GIT binary patch literal 1248 zcmV<61RwhV0003AFaQ7nL7D&>yakisc@jGT3tRyG^zePjd7H=iehtDfW(k2naACLr zAOHvefFOiEjT;~Am@>dcD8GITHgZG<8&5q|_>Ir{AOMU20swjdprJdrgatZn|J(o& zF`P-HsN+K;pyw zA|L`Zmkl7!CJ+7sTm_rq;PZFKw+#wv9z-(>*hv5YAOHY4#kl~$_3wZH_xJ#Mz!xL7 zw;%x&8@U(|KvD*fP6B(uz!pc-(trc9zyOUwz)RxB+7g(MegFhwMJZU#l&;KP00RJ9 z4*GOsOSJKTn!nx)fM^2cbu59ikRQS?fB+B;009Bu9iAo#rLA0qfiX^-05||B9tY+` zpiKFD*ag5S!Gp7=Qw9Y>Xtp?*rSM`30Z5=^3V?+f^Z>y?G@3WT5EKK&YRlJl6&wZuXaOJp-r#^n%s3L5Ho}xOm+^oMpaIKZ6Q%E< zEC3*`7`uQNRtTln2_6oJ*4>?xzi1$9SvCW4sD+dV7= zX5e5rQ>b_-S;b%gU15L#KzIV5lj@)L9sxyA6y9;-Y46+t0|yLvF+_!TETb4r)&SMs zC+dJHv;lxfGMW#DYhlq)fB-ffgSZ)fh6x^&S8M1Vn^D0#$6m{Js-IfvP~X2xI(0 zL?9F$idaEZ%&GqJ99jYZ&0@NI(%(hfCjGscrX9}0YLyciJ$?iz#EJJ z00BV&6+&nLYVZl^f58Y40XPx`gt!12(j6vz^8jz)_n-{Z3(*Gk5H+nZ zD=Nraf`9d6gcMzrv%V4r&v`x$qufXMFeaWSFN8uBb|fSMC#LzdIrO=wP~?g4g$Ptx z_B*x=4d9E_W-PPs|AGR9LC?>Kg!Cj#;zF2vq8wP zzzkLZ!P?XW)55<91p#_25R{mjU*335IGH3VAO1kJUQ1?^{^ZczuJevl3YZIpUF{~X za2x-C@D&6lO;^VD4C}D24jrnzS#Y3B^1~ylf$_Yt4DPPb1PXU74e literal 1028 zcmV+f1pE5{0003AFaQ7nL7N~NyajI*5MqyqsshGiZsmLlAqeO-(JwDL<77?(J@UMD zUKw&bAU`@+X+QU=IPu>JJIT#yK09*!E5l}@FCjbnf03ZQb%n1{1 z3}qOr|BL_u1`q%chyVcyumGZGX#I>O#SL5dJnO-Ph>@!{dYSk561bwy#*Xe%{)X@& z2qLhbXl?)%fq)3hqCjjS6sfE~|NLMLzygK!H0EsB6-OF&ehgv+uBr<>I!Kp3iP%E` z0RRX93Jw({e}6h(7zM%s>?8(p0WqEdfM7UUh;9==h9+um^Buqg;9$#Fy#&P%vzQ{m zvDg5B0bMlUKZl~d#7VXAVAX)vLTrdBZe}nu zp%J`cU;%wRhKg`6O>DaI9smIV#zpH@2nV>MhHm%(h$Of+fcrX9}0YLyciLwE!z#EJJ00BV&6+&!)YVZl^f58Y40XPx` zgt!2z$c9Ytu+IZ*9)K6}j9!R8??3+TZi#_6w8D}v@N)lx@FoLrBnyNfF5V6^-QTz| z0J(TzkAL^>=vqW7MKu&p80*#e=}isN&sZ97+6QG>3m_-n!AKMeH-RWlMeX1_1*E6j zz?ymZL?AdM9D4)0cuKrG&u8E?4HkWp*fE%JDId%q7ekJI``Um2x~KpM0{|kad_*Uq zB4-E%0UqfND|37E`~Z@H!7nVGK8lvZ86Uofo&aL71rOG*?xFtUe_(i>nE3Tj+{9cU6H$-fs~99f zg`WV-us{PB7a{{<3Td*)AoHUpysotX4XZKSnO7hN1oNdonTh~O1?1 zpAIqj5!T>u-vBvoUA7Ub$W|0{f5$&48XP}4`~UBLN%jZ$5Wt#vPs4X+GZvX&51OO;1hlH6;{`vwLWU_&y0-3-7xB7>SiL3j7kN^+^JRkrF0uK+_G`-`Y zG(HSFjTFjdilES+$101yBp{4Ql|GfL15a|RkRhHKyq0+53NBPpt{ zzM5fB`{kx=d(rkB%P$pYNUm3IvoIrzq_&BpKBrTJy|{ z04KBnehc&lwHqq`xUc|30098+00XMPYB7a3U;)?e01N;*{0FWG#g~I+`s8UJ+%E{= z03cTPN(%r10s5wW-5G=%P~wjt|BWMIov@#E>-wmqHyuh$1M@jA&C8Mt>-^J<1Qz00;#zz*bAN z_dEl_v2EZ0(Z~)QAQ8()R|0SyFkKmRfhwjh7-03rM#kB^K{ z(H_%znBxE%JOBX!aRn$bkex-BR$XUqC zf4~8S3mwSPqrXYw8WbTn0}t=QFaQt=1AF z0C+F}00BV&IflI(XPhg}8m_#WAEvNJVun)IvUxzkGReD52{z?Eu6!fwZ+5#=U^C~n+&I}Ly_<&9ud#LC~#M8=CA+& literal 1044 zcmV+v1nc_%0003AFaQ7nL7PAtyakiQfp{VmfC2&r37pQY5`+T$bW3N2XMhY83mJD$ zYi+>Ujr0;f3?gVGj;NDHQsbMjd_I99UpN#3 zV8R(NARFQW00a!MC){(I8W)3KIo_NA0s>)JH{k6dNdnjPND@3y zS+RM&;}e|6Vb~O9T_8!`002M`Wdtmf$-vEIQs2D(yvaOI4HsUxAqQJ@|(hMj6-UAdxmuP`g zQ5^^;w=SUY00ID~0R%3ZpsDu7_JdHc1JC`yK|pd`79k@#TTt|fLyx=+V~qr(p^p(c zMz@0J{r~`gh&r4LnA=y%35rDH$mle1U|1!=VVp!o3)GTKzy>!Mz|;=b*c3h}#NbJ? z!2yZ}^U>=im-i=t03Z?`ivh&MQZ9Sj3*@)oKro;HAP|-ya5i*)2LHlBvOa(SAP49H zfEWjy(W#0tD|1u(kpRaK060j4=R(JT-n<2H0&ai+00BV&ZYIzMuK;*30003&06B@Y z0jt0pi~s-uK>!s(Z2)TU9new*0e%1t(X1BwI8rftp!7J_x8R)m1N{gS*eL>KghG%2 ze5l<_Q0i~|09aSuc3L^Rb`+m^p%};NKm}>1rMUHaVQGqoFK#nVdDuuCKG1{5p7{^` z!q+jVf4*S+#A2pcGpwisf#2Sr%iyF60K^FzL(J6kNc}7nZS_Cg3%Wx~9A|qxUHWeo z3!j^hFBvuAwf2S<-Kzh16SD*{@Bk11pchIIKr2G~wkMcB$}cbodfG8wXS;iF!JZY^ zkpQF#!4RPE5Qe!hcm!h{m;lH=u}UhR`O~0bJu&>VuH4T0}#e z`|u|h`|=zK)7HFQ*?#Ib=**#qf2sd@gornEFk(>{;I#wVUdjM5tJn7b@1>6u)*H{F O(53{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIlcqH0RR9%6aWkrGHQS)0UYKI28bV8`iKAo1SX&z!o0VG zu6IqtyELY6_yDvJbs%a_7j(nNtJnfUw1WzG_j;jbAAOGoOc2lkJz6!WSRy^!R`UR; z00;n|zF+~*Dx6maMqaClCz;I8kYEB3b8cD-B2}>`-~J5101yWN0RjL35H|o(Gk|~! zcmU-Du>R`p3&*ALs5mo=-CY}||?QgZPfKUJt7yw{k ztnpW8yxC#L{25^dlF2>bp+zm+fBT3)CF_GJ_Am0R$^ZIEIaP zs}xz+Rsbx%5(6>|f}kV_4Ga~`NB|rs9EDvisM)B$z)C<20dCL+2Fs zwMPIE;ezlaC3&D?iAQ{G_uU*#EARc<2}OlvH3kw{od4hfYjR9|r#`!c00IC|fH4>a zBzbp2IJf=a00;%x7yx0f0jAp8wb1tDbCf^a*6D}?Vw*RzAp{LIWZQ@yJGUM&CsfuV)B5?BIC zx@aN);QR(~c^e8VH;zxU6igq07z`zI21pB}zlLg*A?x*VCo%#yAYuR4?d;oZF#T8l zZz6A)h8%zko2i53Ay3WV00;_-+5|>yJvt|?w{Rpi7e{OP2r2Bz?H`Ydk^_7x0w9=R z@`ChD6Lw9Lrp1p3me=`+jDP+szyJseu`mE>rIP^KK?0xquQta0#r3Uk696U`fB=|1 zaUmI%#Dkn_!@vPDF_F;b2rszNCjLf3D=ChJ5i3$**np!s(X#i^Q9jgT(STN`Tk*CYI&_ePR zQ1(j(ADUkdfj}|^BCUx>xRs31>*w|QtDF|S@>d2#dt9Bn28Fq}VL{{*c7Lc~5m^@f-5bpS*P zTb#P`HluK>gaaV~PvT#a{}3^Vgm5LNj!MBPY8Uqa4>`FJO9GthuNNU8a(W+#;A%g67Z*q@ul@g7vAyR~l%clA@>~BzdkU|wct`LipTu~KIrs)fn=D@^ literal 1376 zcmV-m1)ur=0003AFaQ7nL7QM2yaj>3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxL?*bVTf`9;>X1lNe$Q{Z7P#W+z04sn9P#PJ;z`G@sGCoQ$00amC z0Ru1VDzJeo&I)ciB3B<6syAY(^g6CIm%|12}~dFoD9|VUlP2Kw$i?K?+9W%^P4Q zm+(jY-pt!`Vkf`>5ZrW(k}&`7fG`3ARYG0r;q1PYo&V4V7z{Ac5d;u+IZta& z{oBR>r~nk*_W%%4yur};o4)`1{&;)=fgV|*8IhCZ-{{Z>uYa(>R9FcyUH}LH=nVLm zaM=(+-ZKyY^G!H(@M1*UVfVS{QO>p%KvUiTSb!Qqx1vV@0SPV{0UJ+@VIgY(0RW;B z4T_-*p=h$(FM|<4Lkt2ypm^gxGXe%_3vm4+*LpyY1_8-D4HYd%P311iUa#*A;2Z^? zN2kJUgj{mnG7>$20DwT@6?%g7V7&tKqL}yq1OQ-nnpo-EjqcyAjXyRHv?9R_XA2-M zD^RkCVIskt@DLc`07iuDLfBbMd|>S zfB=AVNPq)l8eMQ;;Ld&J#2xI`6BC6W_W%GO00t0Ik@K1r#X&e9iNO1CFxaPng>(J{ z3g10b_ly7p1b_xmP&nvAZw`JWI_rdB1l<4t0YLz6CfEkA0C+F}00BV&If=FbtH2wK z0003&02M-QfNJm^uu=ts4uBB-ZCUE{5LTmJ7D;fU^Go6ICjyAYOm7LY;_klGqgboBCB({#$NBh(UUlP2-tLyiJLPf|du+k6uOXm{q zEd&YhhrLXh|JS{z+`S-oWUv{8KwW$M1|nnv7Af`ztTF$pa0t*jZemwyeWP-&5E%#@ z{w?`0uumL0h=gc>*KB*RN?L}$@&FccdPGvdryBQ*q1X;jhw~^J#J^Yxl9R>7@(U{e iarv7K>Yd702Db0*|JYT#eg$=YptuuH;ygwi`~xEdgjt^e diff --git a/samples/h264SampleFrames/frame-1045.h264 b/samples/h264SampleFrames/frame-1045.h264 index 1d6d494457e2c655e04d1003cac94c93f6fecbc3..6a81bff239df0b05c0360fa6c5597d040cfb4e87 100644 GIT binary patch literal 1131 zcmV-x1eEAFaQ7nL7HG1yahinNdu6G@UVQ-fy!clSvh0~+9|^q^8|4qjMDG` zKmZUE08oDeUVMBJU&ci*&KN5-6JDDHDV!If zSucVZZgvV#&HxAz4ujbe$?*!|xXS=Q>5MH%Ds=I0*fm%H@B$SJY$ciu{FDp73S*fl`d9AOLh?8S^m!WnBs!MDXk5BZ7nb_ly9d{c$W6h}wp|OAfv~`f%Roi|4aFIy4E`D&01Ds$AQ0$>02naSne!Th z58cPth01!Tr%B4Q=0tLWsWeyM%P30>3 zQ`3N?hYs(RaX)kb0Dup(00RO7WU;n1BX~-n0jlx=An9i@s90NOLMcotxh`vhX4bz! zKrVrZ4MRQv0^_I}3#C}1+{J}245#}9Mgrx|mXwoy-~b2;@BfSF`_*M?%JcaVr73PHypfru=pgAEJJMFNnVBot^>&5Ic+a7+U4D3Sl=029i< zIvy2PR8LGBF9Z)Xc-lrqlrIwm1XD+ZFPIP!zyRO!fC>YEv$@xgnSt9zVE_PuZ~zDz zVs-!q0b`v81mk)jr~DRtVn7wC;{%R_5aY264j|a|4hScTGTVxO_&xvtKu87&W4;(Q z#X`SC5SjUF{K-LJc3$PLfuIK+Sr{9VTz06;LJz0Z?UlZbWmFHS*d0-VA^MAOLqT za3&|kmL;>%$T<4|0RS-TSs-z`$s7hLSkA#RfERb@B`OfU5By*NAO}nUDgfjR@wNeB zWkmo00{}qg9x8VK@1g(#X$$}`;YXA%AY=jo2LMB`0003&0B$Cj2Co2kFaQ7nK>#_4 zrU9$K8;k$|0YLy2LTP|%@Ds}fAXpX>;0zArgAwoG0Eu<#V+(u)7Uo@m*MoT0qTq=E zQRxWsF^j&ZAJp78K!5!I0?K-Gy?y)$Yk5q=V;kQAItW0pD7*ocX>M%wyXFuJBP$hv zV-6i&=GgDU|Ekh2NDsF`?m;_(5G90OOX7_rlware#EcB?d9oAV=Ys3r*<}0rGRl{* z>^Yh{wj(fS9N-DNAej8ffq+EWCfbet`ma!ciahy@<}ePsGRDEj5BLI(yCz0{^-ezF zvqGmxtWp4{=YJq288?56_ydm+^YfsQ(`mSy8Gx2_qanrOVj;^*6<(Q#ze2v?O*|); x>$@O;3huhC-hC&wWCY>^zxNRbYY%b(5Fx+aAJ(AGc7J>~|JZk^AL1fl9vITY*Rucs literal 1037 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 Kj~AcMz&tQ~ikWx- diff --git a/samples/h264SampleFrames/frame-1047.h264 b/samples/h264SampleFrames/frame-1047.h264 index 5b305a2c3935bc9778f7f32eef26534d7dbaf70f..f98071b4d1caefe32c0bff9211755d19c1f375de 100644 GIT binary patch literal 932 zcmV;V16%w60003AFaQ7nL7Jc%yakiN2szF8n=?!Ug*X5p00;qqFr+@6n;-0$G{8kD zzh(dcfKUfKGFSkRKrlC>3>CFp@fv*DAix2I>bKV903ZMm2q>Nm$^s)Auu(R4fB+x} zIpfiq!AY@|3i2<%c)(x)AQ({^p`h*<=KE;7Sqd)@9C=8>(OX9|w5}1&D00d%1DOk;vuFU=b0|5F6MLAKfD$xT0HGT?! zXaePQuz|Bs9l{Pk03aFw0t3K0{8T=c)v^->1yu|H@BrX=ADRRTgqeAOE&;|3ADuLq zGAk3svAoGM6MUoG|f*65KCE`XDBq`E`fCqd42!K#M*vqge zArBL?|AYUDwr0#VcTmPNfD6V@gbKL^i8Rr>KnMgdIK~VD?+Gk8WY0fCYwr;J^h5d+E^Fh?v2D03Z-B z;{`cI4?Iz%(hs0Ob9crX9}0YLyc ziK+psz#EJJ00BV&6+&u&YVap8$QZ056yO@E4Yq(X@2{^zBS_B^_xuiNjf6ww&|9&p zNl9PuJig*SA^|7Wj}$BzB@;vTnKO=IV*!rZaD$-6mCS_R;A#yO^54V$%yZ9WVGqF5 zF3ZvNxSr%c1O4DV0lfGY31d%gO#A)M1qyXbW!T^U-^WE5ricFvz@0@1K#y?$F3UjN zc(u%Pn+Jg@9Wmel63E2Q0J}|T$DxAuM(P@R?3;ly7x<J;0zsF7{`QfG zO4NW(g^n9S4)gHzZ`3vl?-uD4%l)Ake8!0k90LiQ(jG0L`~xiep2t;r-W&(7% G0x^IcT8d== literal 962 zcmV;z13mlz0003AFaQ7nL7TuDyahKPN>%3%E@{IT#Xba(oORW_01gD*!RQJA5~w+A z!w(h28$til_%Re34i5!jxF|9J4W?#9NXDqk;1C=^A($13#^L2L zsu{$E?wjJ}M+ zHh=VB00=jL0EHj`2vdLo1kaeh@rIb7wu85S0|bZ(VBY=UP2?{PA-N*{hTw)m00m%R z0iAS62Erk$ox}hC#sFsk1qJn0W_P^u90)gag<}6^ILr@CE?DFmi})8A66HZg~GCzya_uBGd0d(ZL>rR9H2&fCK;z z>L>*GQZs+P@V5g32C-kQY7Uf6$Bzi*8A!3M4-uB|RI7gm2F?QC4Y(++`Pe{vN-TI} zzyVUUDdPwS>9yD1A>aTI6cnLkM9DxUxx}D+0Wbjs3TT2(E_~{w1`;n?lfc28Kv{5n zf}qt|jI3QcP4ECThY0SGNj@B#tHloU<* z2?}9)cQ52ezXiuD0MV04b%9H$OHfa3B`{eA9fnT0mY4Q304C@F00BV&ZYJ;suK;*30003&06B@g0jt0pi~s-uK>!s(ZvblWCosqutRfQN z1`)Kf8ps5@uDYO5T_uZ zO556+XTRRSu(wqATATm=3pNf|l41W7dwRr&QCxXaT=1Q*QucjxxGh-e?+ms6azgzffEiR25Kux7$>?*Uv8Um)ZRk0 zME`)ms3CFys>W3)&~=eLh=z6Rh0I0v1b_g5NU9KUVV#(yv{z-x{s2s*D2q#*h-#9I z)BpkjfV9g1G+%^Ez$_#JzW=!g3NYs?0r{xJHEMfguJzv1Tbn0ML1IvzO1;+Tb~95P*1=DgEkN1RkeJdYvL3C5qXA0DxN* z00aR6p@TVy4@w;HBNPM+TMD(Z<4Jtv00ck3z%T*M1z<{0ot7oGl7OYVH~=7G5eKh` zOGPoY&6MzEC~GYx+yp&)#mSHWDljOXkyMc2_k$YfLVgOOJPKb>or?~0Ag!25+yP9( z_yB;xJtqyZ*t%@+n>3;L0NhQ-iEO3OTqHA$RN;6|D%B`y;`XQo02Bb=l0WN4nHX5c z&oawvLAo|AOavt-Peo_;<02YM8CKI3_*9~QZHtCY9QC^ ze94gFDmh(Oq<*heKmK2vA(7O@MimP}1L2Ths0A7c36l|#5)oMc!GQ~@YwCI=z|3HX zjy-+=$V=dmfFxc3wuFi>at^o)ECE0OKs*Rg#5gAQgr0VBDZeM*Yw<8(0LYraSZ&vI zs!0FjFha9W2{1a74@sQx!WHH<1(A1dD8K)-00RNe>kVR6ak%)$Yqn$b?kZD!AHxWu zy*20mzu%oMzs!K3*Kc?4-u-P;cs~dPR{{#r^AdANhjuIE4jf_Hq;++_ws-+Dh6QsF zCLPYMFu+9nJPCXg6Tnm=EPl)GTPK+_ZvX&5JitPLuQ(SqLHd6|@T4Aiz!+8g0O$3J zfymwnfBM9Rb-xu5m%;y-0P6tw1Yz4NpwYzymu$oI#_4tO2XQ8*{=SU@*u4vi*6sKv$f8wg62_ zgG+59ZJ?qNhr=yG;9wX`1dVyT*nkJ&jkip~W0JT)`#oGbD8d$y{C4=rR-2pv`k@N9 z1_$#19kd7`1>4S~fg2I||Aj!n5b<8k%6)BWLd@>=18k!9v^96U2|TuS+ro(d-)KMJ zim)cdCs}3|C;t~Cpa1{?K>!s(YXEBSCqf`#92kwAz^kA~N{q)YkIp(gSnvV|H4FxU zhmwexXD@;fH3SdNC@={A@ZPBd6lg~fIFRD8vT#%YAa6n@@y6uOQX)P8od|)Dd16tl z$1hAR_y4(W@HGyizo>O6k5CFEd1SUMbZ^)|z#kAsli-P@xoXgiXw96cqV-W&;HXpg zuPbh@rYVF!Jhe`IEfRP!_6h732ZPv}TaNGut&(B;i1DBW0tTw9-uS`l+ZZqb*ir3J e&|95ZSXynB!jza6arwv z889FUc?19;MT0uSDPch7_Y4XE0te|QIh!NfM`( zh_qZ(p@;#65HY1#S71|AuJ62n0swKdUOfe>UCN~(2H;Qd3Iq)G6s1y%M2ikz;K~Fv z0M>F_;dGBpZyMO~g8*?SOq~nW6URhs2aN{=3FZ9(2NnuNKmoBBb~cy&KLSvpn%^3U zDD2&teIg%*K4Frw*=;bf3t65X=Jz&D7>+V?nvM`o0gEZZMl3emlH33B@?H-JIfn@l zGwRBa3RLV6|4ZPMNPH#?ff#_u&w#)H?4U6M3&f$obYi}I2wGvm*=1C-(poqE_y{3Y z0vvEbCSE*Y#9-=pG8$aCr|ttNH5MVK$_tDpuqXNdxBvqv5W?O_0zoYZ?GHyF5P$9h z3I`#>!!Apc%q?_ti@Y%mBrp09U07;D5lKyTWV1IHTF^m8x;KvOQ1wkD^8o&v<0003& z0B$Du2Co2kFaQ7nK>#_4z5%Pi8*zW|h!_kMfDgYaK*}@Sup*fq87=stNPIHKfq*Us z0fgWR4+Jcs`G&)01P?|ojmV!P@;D@A9PIcbQa=OtL6R6{ce(ILqJDqjP%sOa^id)D z3)gdDk>Iy`xWrfPx4_ugUN3GU-u-uQ0003&02M-SfNJn3LLguq7>6E#S3r)HRvo4P ziyZ(UQ&7-o7;AA84Co>TNyP>LMmN9p!xofi@C-eKfT|k@1waA@^g?)bgLNSy5rCZt zfslSB>oNKG!uSMAE1(`+!I1ZA*1=0QC$&E`g%7=IowVMTmfFcH`cEQ^KUEnHX%moJv@}#trFBOTD S<1wnvg935koJa8=fG8MrG?M=S diff --git a/samples/h264SampleFrames/frame-1049.h264 b/samples/h264SampleFrames/frame-1049.h264 index 813face33dce76c289542f1c49b60147bccd8730..9d08ae39dc7273bf5d8c78e6f4ed9fb41d37f8a4 100644 GIT binary patch literal 1590 zcmV-62FdvV0003AFaQ7nL7LziyahKwgICm)y-8BU3o+mTiI`KN9oa=hZ$<(OweSr+ zibZ4ZOX?!Z*u!84g9!G?L;tscuf1&#o9T)H)n~ze2U*XMd-H=Fy|rprsIS@nz#s%! zzeMT5l~Bv~ngC;wF)m`smLfz^UH#fH$cdzs-xhOd05u4lsi=yXkNx9!q5vSo-e!Ta zZJ|c@{+GhglqM`T1R#$91~x$v$6cVMJ?h|jE`YY2ScoD2_yr8i1636d83`OIzrpCi zG_D*$mZ+$r)64(?0+0X@Q~&`6@BqSR2myihM`0kK@G((T9wqPrH;`;EP7=p8ix>b1 z0jB@~0ipo90x^l0Z%g8$re%!f=$pU`OSdP8??3p3D>wiuE^dXOxBu-BZZJ#wrO|7S zJEH%F1vn50O9Ng(epURJFnj-TfD3`{(xq|mN=DdD0097Hz!cTci%tKVh`|CUu7sxJ zNS7i1?^949^&(5ui86*@)KOqbK$mbPSiG2y@1Q9aMOIsAEQ6STKmWC%nQWP!hcBS{ z!r(v{aU%&}00;o0us6}#6OD)vd?Nx7-0zC}V3ogNk%B?;9F;9Cb_a#L4^%2E_Z8q8 z2IC`^Vz18(5z~N!sz7(wA+%ow1l~x$|M)I&1P}?8Sra6wPEt&L@BZoF8Gt)RbX)xR zFJK_p?RVO2R&=;p<)g!+kN~fZN|xxTthlhJ1S*CLg@dvxvAu8%NE~Fcb96AxARD3q zm-N0+UI;=$0H7NO<2=wB3ZlZ7c+ZI)A+_KV+TfUGxg7smHe4$ZtvQDNd)|X@*mtzv zCv|b9{=xAlf16WYO*RZFGME6sUCR$-%0;1_!c#GO|E)1AiddwinKrr@2)dQ0(sRLp z1}|&Zum12wFNy?cE(!riU_LXS%oG47BOuu1?rV$xX$BjURBOsoR*U~}AQ&EJgNyr- zE`omYYyfF;fMtp^2L;z~We(J!(?qU#g<>K9v`ic(hhdu1Ise`f&LKoBO8ZEHOR|Ru z07M29hTax1YK+${e|P`_0IPuklR#?8Qt~9U+poX?5Cc#N3Q$sHZ5m9Nq_}_)@kjwg zC*kIHKiUuAcv_-!+s(pWAC>?NnGG>pxtxV?_>d;pfq*;(_>&;b+!zqLn!co`crgQZ zUkC;aM0*(l2*fKe(mkTL`HIPA2j=#ETW&;EG(00RNZnzD^Rh)cTXuYh&J zI+5O4K1v0C;eap0cB3S>mU#dD!3`a#v%(hxCXBPcrX9}0YLyciLL>wz!>x*27?UX z3_j-%`7`<^g*H zOY{h2azSu#Bj3I9U=gIZZmd3}W(ADAz5@sxKUh9qp7@w#IevtTp(4cw0G9A1TcD*d zfzSTxyFb_osuL9Ty9O|*gQ&qf|F|x!!vHf%Fak~b0003&02M-OfNJn37sKFS3Jg=l z1^@@)y}s(IybKKa*}!2fWR6srKgQ4ujsrjtcPyq)?*(r57byyU)+}hVw|bEOcjKt= zny)a+|G?jf3ckRjBEP%TSO6jmaTI3Aj$g(Uf&@Y)fCIV|unXaRhd3eN2daF|_&j;p zt6DOj|Nrh-4J4!j$c1bf7&~2v`u;!*$t-rRBFFcGf4}a%;7$?k6{1UxDz9Tu@Q o+W09@Sl0ka2tR(*#zM;&f^`1>u`6QgltCh0Ui!zB^?m@fV3usp!~g&Q literal 1504 zcmV<61t0nV0003AFaQ7nL7D&>yag{ogCxC7lPH21P~HGOvt%f)hCmS>fDNek09qOk zTJ3r-j3a}Tv>Fli3!vj_OZbZlkSZ`>03m*lISBn~^KqM)WlY%vVIRFCFl>VUE7PuK z1SDQw8*g@)|NksI9LIsksw2JvW;ll~DPtJB_J}+xl#7`-5i*_o4e;QxT(v3xy>dVW zBqS(7kd*x3sg8AU3M560sa~`81i-VU<<|AX{`P;y3%J21Rc5A>z@@ew1zOk^?*JEK29m;#+}AsZg^ z(kJ)d00%-AhtA94O_D{cfCaEX9qI#(1xi~S6P~Yo38_jU49nG!t=J2ycA&IyK|B0U zFOu(p#sE4K>;Z!5Bv&;aZ4y%7fQ91>rym%C{FWRu3wUz*ri={4g*dd{4Pw`ieu6kG zPAab%zHnzw0c2dW`k*CxEsI!ILWC7`pPUPU5j{p&NB8FhYs+ho-|xT%Rw9a|+Wf%} z`@KK_AOH-Al+aCQI`fH)U(>-w~vr0?>Nnz`$#WqF1egjQ{3%w7O_ z93r!ojnzxw*d$T{K!8M0!T_Ke;{Z_w9%f)RsD5WK|K1P`v=1;#w44TSR{61i+At%h z1Ri)5U5Zg+%&`Li{04hrdhBUk_kaMBfCT~JZ(`F&PL0AsuAT_EluyOMlH8yDfB*;t z5EMz76BP${MYLz501W^bO9yr9RX4#xP)Ocy#Mo3^tz>+k{iu8tNU!wn=5cOWZ|9eZ z>wg>o@d8O`m?m{g?cpB<`kqI*tHEh$0P>&#fQ8`c*WMKWoq&@z3lY{|{+G}@44}px z8Ss?=Hr`mYc#Rsj!H>XV*wnX|B#Vjg`3MI^00aOS48e8GOR#8H<;w7b!V$*^Lyr_m z;SLfe_%PrBX3!-P9+{xVPRQMS$74}q8uz7Z;02HY3@&g=)hrjRm{!TAWJ3S}0&bgt z01zzz1)~Oi>3kQ60vKQt1p~(!^I(E4i$I)xOy#C{U;tv49%OI1Yi_l=^!?))3JovZ zl@mx@m)%FrUcdm31hEn`ZWU;_QOtY*5CjU+h!ZC>=$%m@m*kA#Mi9(EQ-L6>%-Rmx z;C=`Z#Q-l3l>>2p#3U%u<&pCkbK00c__HZ!9B zS{P8Rb!18%NXYpT5BmV10t6^xq9n5+f`;I%xEt;aN#_4paHAE81y0rgACvV68mY#|8|%B zCI*BCfnxv}Ki7jG6)y%+?{Q9US+J9e!sBMm+d$Uc=yD^AnX^!`m{8~ceH8|80ks6hJ!-(F8X?p`oe%zkmuxTsEQ5e7f6xE`0YLy2LTCVL z@Fy3+2p59Gkq*TM01HDe_h0V;fuA{?1~sgZg$r>0{|pVBobR%+<&@fe;O%=ADGv9n zSkY$)P2J!Azx2`JHT*|5|A9X!3a-H7qPzY007Mqhl6UBfFXIkD0wEJX1KNc+7eaD| z3_sU^1OCxWbrDA%8Wo96RAntc{_9{1O2AnZ{nRo;^+-X+`2nnnc<;vX|EN0q|Nj5) z;7$?k6{1UD@R{w_| G;0s3ZTAi-| diff --git a/samples/h264SampleFrames/frame-1050.h264 b/samples/h264SampleFrames/frame-1050.h264 index aacef5b57386fa64064737613895b6d499060c80..0320103ca470c430af3d03f61cc2982a125b7929 100644 GIT binary patch literal 1124 zcmV-q1e^N+0003AFaQ7nL7M;?yahKwV%OC4y-!~V@PUWcAPnn_02a=G`j@;&BNgBQ zn}5pqW_$nv0B{sH0~>5qB(G(y?oqrf00l4r5DJOt00;qwj2J*dQtNmyiZs#1$-SoD zI6K-&d=SHPuu_J72_GJskwX*4|KARPhx&Rrh56Sg9!i~h|MLL?eCWj&jFq(Ji&XTfo9Cu2OCFVp7>Vgzhp0a@vqM}47jSTI8 z86ibx$|=8e00(Tq1_%{v3Ze#Y6JP)!5w3tZ0!A~Ba|~e)P+^}vp@(MULI@c$1s~()o?ciH zzy`Lc2Lb^F@}&|d1Gh6E01z|)0R*nR009F43pwCI>RS4qh~p=$d<--`hE)n&pa+DG z9=pFY0Z{=y95wV10m05AA5%mA&ukBa&;f&%OVeaz81Op(N(JQk%K*-R03acps{sY-H+`T!0R~~vk3DI2MFM|bFo-MGf{bIu{YN*z z5M*fEm;Am~xM!D!zylSE5D_oy*)|mrG0Eb`z00BV&ZYID6uK;*3 z0003&06B@U0jt0kd`KDvg*Xc}k7mUHyT~E{7;!eW%3LOEpYu+6KcVU_Ho; zO{*VCOK$PLjXJ;JPdqQ5fGrs1Hq6-o literal 863 zcmV-l1EBl>0003AFaQ7nL7E^Myag{of~37llk;z5m+**Rfea&{H~?+{2o$3CM3CN; zN5AtKgasb~Z~+DYhNvdR7@Vursk}IF0DA;TDRE-7oF;q03eyg9Ldl}RExA}2I3DU{2TrpLV4%V|RDa3CtES{mG-Ld9M;@Ct^8Q1I{! z1Do=kW#f1N0sv}{ca~5E* z@lb$#4&c)wQXQa9;$!0r=Kuhp8|D3h0}F)(KoN*T#P^OY_?NrrLd$>* zc7VF^75wlV;5INH8VIQ7zy|~a_$tgiCH|$Y!z^_j{a4n|0VXg22m;425M|zl5(u?$ z_>2LdN7!;@h2m7zR+qrE2;fLCWe6GI1~KXrD@J6BmhUw7E5`LKsbMA<(mc)_UXB0) z13&;EEtymRNG=-$0q_8U0;*E=Gzz8@h~I&Et~QW^1;+Uhx-1yaAHTXmQ_uhqEcoCD zXaEEhz%ft%?+k4?;Bg382LU-Y$)y+-H~=6Oo&X_4r~{SUeg(HJf9wN+xmszA9w9or z_X7Z4P$;OrR@PB@;fUw`p-O%L4~|}x7ivG=!GJ^#FI-77@FYOp{0`vCFs1+(kPpc~ zqJevu0B=AT4h9#|yWPxAjX&G~fPok|;)N!eRtk){{{SZF0003&0B$CT2Co2kFaQ7n zK>#_4q5-SG7JNt=1%)^P*1k+T@NG~upaFvb42Lq;DRL*uwh?=cd%&FhP>3q72w5w^ z2>@xHVQZdX2RwlyTm6d)yd2YDr$XiZzQ>AiWMDt6ht+&yyBib#*Nw-c5vl|{=j!)9 z<~Imh5o~~*!XS9DSx`i3Y0mMY6XGG?Zm?NPCMrY<->pQ1@DjAz^QWF(`D8sEuV-%X zekdUp@F7njI97v?fJpVx+8X3ciPrmnxDD3RQs@7m-~a#tK>!s(Xn<<)Ckgq$&>$=T p-R#B!?Iwl9zlU_}H;$!B-yWeNmfS{&t1JE*U$giV&kN_^3r4GMWLW?J diff --git a/samples/h264SampleFrames/frame-1051.h264 b/samples/h264SampleFrames/frame-1051.h264 index 1ddfbc7eccfa837575f6b88e685e8bb50e5bd29b..14a59e146d2b5c0f026ecf39c0f7829d54bffa3b 100644 GIT binary patch literal 6629 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 literal 1647 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 literal 975 zcmV;=12Fsm0003AFaQ7nL7HG1yag{oVx+xFm&9jcfMys`;rJgu5R3pt#Ok;_;rw7m zI1@m>p5OpA%sv>k6zOfea6roHi@_hDFeTF+K;hrF2DQ0C!yOKp^X*v3gm|eQ~(4F3a9`90FW6C zvQM49KlcC(fC0puXM{l@wl}${{!Zp09gGy`w}Be4gEnwYg{|LDK~5JLa~1^@sMPXKWC)if{wF#rk}Y*BrD>3m=p2nVo`D-ahM;9y`u z%SS+j5rPa#TI09_po1wq`HOPyh%5yQ35_z-@9_Pa}W;Kxi`sY^aDgrG)sq@BL#8KKot_WGG8v6;uiSBeXTXOYjB=Lq_&T3l#y12_6CtXrhfObn8LZ$rhd(_^`yF^5as&VQCSG0Va1y91Ii! z7Ui8ojF8bl@<3dFkR>Rld;T99sV)ZL*Z_QZqqcrXcb|X**q&&z^0GgcmM>GuY47fY zAkwH9Tl0h9|2P3CJ^1EIl>A-3@QaF7RUiKULk~g#;VAL|mq_Z^iWwz`Q8_4Oce{8a zW8^o+`Rp2Vpm?l9{+=|{L8X^GR?(p5F@+YsWb|;2%{}XV4prirgn-mrsG|q~U7*_#8=_mr>zGYt1 zfWhy201SD1>i_@q^)_WYz$X{_@?|#8&@|-sNRCX8_F#rbu91+>|H@wwWF%mQP=P*V z2aJ5~z?L!0Au{JV!s(X@F|*2ID;4p=|&F diff --git a/samples/h264SampleFrames/frame-1053.h264 b/samples/h264SampleFrames/frame-1053.h264 index a0c70cc2a1fb92468f182cad72a0dbfbc653414a..a697328acd556d38ca0e30906b0b20c96355dd09 100644 GIT binary patch literal 1776 zcmVK`=Y)I{Co}pKh6RphCtv6hYt7Ql{b$801=;o9<=+9&;h{8AUWnkIPk`IRvsGj zHUNeJ${nT*qU2Qh#xMYPg~UxQsFPn)LXUxHX+Qv=bt_Y@Ja{n0i!A!W?JVTQgX}Mx zan#;Iv_${#7!?FIz!f;krJ4@1FR>8E+uBWHFR&y41OdfRgM$q0#WkY4E>G|R!y!ak zT--xcly;y15DW#TSOKE^B3=P;C>D49$T(4gHAv#^e{1*rTg>)s&4<7UJsJ?JDgQv0 z3dvc2?oa^03U+Xf3C{vT41Z}e#VNo5KqLTh!(hwr-(x^>(jfrw#D9CiKc7$YfSk9* z#z5c+1@I?l4PdZ$u$VsMECR(A1v@AXnAq-tKs3Tv9f+uOc5jLC+l!+*gXwW8_#xx3 zn>u{B!eY>ug)_2%-t1s4j@(>T2hhS%;jX)&N!FpDvfm1G1ehQ&3!)A?tb!4M(58!G zsx9t+&wOM&i;@2xjOgL6x&-#<6X@F7k=YR*j?(qx7qIh3Cu7eMN01yEXC2sS^2J=|4D3|B|xBv`6cjQtp zW_fBL*Xw-Akm4#iU00-juT?+(CNK*?hL%W!&+U-e)W^&}EgX62c*qzk0Y(B)36l|! zk`Y+L@TPW98{LcrvD=HI1L$EW@Yh}G)}f%X(0#!ybSPEFxDe1D*vJs3P9f9mt^sEH z3-!m~h2m}KceO_KU;rzgnWrj8TzMc3;Q^0@!RtH20S%zxhXI42zwkqCSQw{4tWp39 zd*iT|zmfaAY-oQVknB`{lRSo;`Bc~9BcR0ajyxs|nfna{bB;IfxJ>sSkAL}Z$sQfe zAm+uyLx@yY9A=~ z5rz#=UoqsamX(L$D4-Fk(!ysXU)IS%AFKuhGqhP#!BtuzG=IUEa!z`WD(^@z-~Y4# z0RS)s6^Wa2RUqt8J=h1s3AVCp-~0c5bh`gC0)t(>-~a6T+L5sQ5C&oa#^_A-2zgLf zqhCOBoFG>%9c83?*aBw;0zIf126wB>v=|d-fKu3ICx9v$S{Kv(mrd?Y>%agI7Z75D z7$7kb%(hkOr>+crX9}0YLyciKGFmz!7nO@c?cxNH~l50P)2CC$+>sasnWC zEIt3s4$XQ&|Ic<{I0^%R;$TAP+VB-7KW1zMjPeAOP|pEpIkX<)8ofIi>^vfC>Dt99|%LtQZ3TFOaw-%=8V6 zf-Nq4F(3KBPFw^5CN2O(&?+zued`n7?6qhi;S1VnyYC0Nse2lKfqg%ZWWQhJ0RxI; z9Do=zEAPj65f5N_iU1VciI1kY&5@{gkASLGVeWV^4aV?u48;O&Bw7ylZ}=0B3g`3i SD8K*!0YLy2LTLbM@CM^Q^bpnn literal 1218 zcmV;z1U>rz0003AFaQ7nL7IRXyajI_60(fU%QzhYm^-=D`0EV7@}Y8|myee82;tQ8 zLr7D-@Qid;qCsAQbnhW}kAeb$7r}_DsTV-0l)&50@p%i3kfKA=;TLviOwSUvICB;f(3~100IEY3J?vg zGh5*E5mXyM?KQ!O8sdKxC!}uU!F(!@ZvX&5AO?^uW3G#zybhnV2py^Tz!U%h0CFg~ z03i4P2pIi|jKC6j0Pq|I8tG8c6Q=>*0gSRMjR3p=Xb!&=a3q#AqmG!Hs$c*ZDB$N; zL$&w<`(hmN004jh08rY$G(h#vkhX3B4Zwf!0)W8eEY>c>S~w(OuYsHb4Fjm_VVT?(~1@lxJ_j`eINY$-JksP;DN+6=)i{b z>DZpv?-kLd@Jb{;69zzxKxAjY7yt+Zx`1LunTeqxTl;9V7`R~IS6S6A_0g!@fdU;+ zFo7XuTOcNA;$U?a22;91gB$jPxZ9P+)zW@q! zk7;c8d(rL7Z72KxwqQ641AyXS2(QXEfi)gRfp|Or(qZF(cn>4yL74HtIv;i|Z$GSt z9`OKh2yoXliLv(ZE5lab)Tgii0}>55joSRRU*DiRqeS^MU`|2+*dPuAJON#_xbS3F zH%w>Wa2s)(9{BrEteku7Ke4)hp2&|HPhz+MDF{rNv{i2W|NiPZcMv!;d=(ZgP)<^u z0e~B*ToPmC4UB>k-T0Y<~8x4cQ g8s@W`rKHjS-+#cIcvb~C0003&02M-N0BZ0CbNRmyi{)118V>Q0m&_Z0*#5z@LBnQKo01Pi&-nD_RvU0!xK&_&?(gf)+}KF8bQ@srY3;()m-j`MW+ z0tk1MAw)^P_6;;ln_djqG2j6`Vs)r^G!t&G7ytqRU;rRk00Idh2NO6104R_-vy749 zZQzV7H7?)-FuaFiw{Q3Bc+~%jmaX^8+xdJ{RLrr2&-2N=0DCQMC(iFbh$%?m03ZUZ zouTP9|NBG@#tkE?T{k>Hj)v%bOT)lG5Vr!!D9+8e7=r_c9u{w~umy;l1O^h7z zSy4;?3^svyG9CC4PYLIIF@ORHr6CAXl%ydFQh)#a02~MkB!PkqiL>QF5{7KV0ApqG zK#c{#Ks5{p!hvJaB3=*xxQv5gQNGAd{`*K6WG=AsPEy*d|8S571I+L+>RyS}7550t z02*ZgBS#&90oI>zWd&+bc$V1|MJz49_JpT|(CiW9l!yNSBr4otO&Z?RD5Gwv!T)B&N41S(e1rAv)Zhyag@Km`=9 zg3fM#v>&KAJyCp@^Z2)hOXYwA6Ctu3-Nf}L!{H!Jkb!^+0IyVN3CQ5Uh1AvcCGvGu z)amstZ-NZmLgs(scmN^*L@*2r1W6NmAy^=oMKB@)-~fS&Se0W5vYNAmrw1EbRRl_l+=KtYlWK8_}DT-@TY)A3~>^1L`Cht^Y{6Lg9W^P z)RFUth?2pFn25*!;<^9;fNM4Y5|Y>tlsxy|>&>yhQmIOJlK_zD00IQCD(3-E&4tGZ zGYCX9wBPCbm*Rln5bK048&{?PD~%i} zRa-y%&~5LM_NvS82Ld6zPY`&y$BF-ja0$imfEkg_bjDx|W2D{t(Ec19#veyQv^2!w zynH+R|Gl~JKDz)3!^wae8a{;&Ai>O1MBKs5O4na^`Qd(wJT1&Helkf|2c)`!#Gm)q zmoz0*hy3sp7uyV*S7OnvIt+yHgr1={2cje!XMcDjkgpzCq>iHsqAKSKTI2-i;5rY% zvTb#vbM{Iz^V#SA+re$RWXu_#%mhj4!N){DH-RH*D4Vp4AtSu^Whn?Q-WjO+t9o<{ z3HCfx_=Mi;5@rFYEi#MZG(p|~9-Qr5#z((EE67DmWGVa(E9c3o1MRuM5R*GMXtEIJ lfKiO`tVJ>|SR^<6>nS1!0(XF;fB*miK>!s(X@F|*2IDhmJQDx_ literal 1150 zcmV-^1cCbi0003AFaQ7nL7Jc%yaj>$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6n761$;1wcN!Duc?4da|$qVT1uIpbQfW z+|~*W=d0de5R%rIF=|(7w1t1cg?XZIvIKt0g#<834qr6UftZnmp^=*bmlvOZ{K0tn z9))+I)9wa3G#3(d+BsMys*R-93+oOD6_vUJPzcc#DIY^W{DEB~WwLSm{rCVeRL?ET zwyaan`@J9l5DEbq61oN6b2OF5o&7u0LBQr zyR%bDZhiJz6gbo(t43j_F0|(`Dh*CEi zXxjlb;D?+1fCB(w*Z?F8;80LhhsgIZ6%qfmZe1Y6ywXa2;81`7QA4Cg2Ci9{gyRQk z!T10&XwU!%D!X+c00=w)0E3Od1tIIF`M=ikBo+|x06+i`1pr{`zg(3kaRBR~Y_3rD z0-Oaj9zdiWG8jETP#=ff0f3;xXq~nQco|96Lg27c-rkwyL1O*PKQM=S32{_TqxG)698K@j249?Wuarspbh4cY8KmY&% zK>%(hs0Ob9crX9}0YLyciK+psz&pkN#R1U40F{9*Kpq781zh47aB2162f}^r?RP)? zq!s9Nr6|9P90vgaa2QP(0oLdmn7G7-C@u)91qW47S$E$#zvtytkDed-3H`g`fZ!11 zR;9OXs>}U=oQ#eNS60sc@FZ-v$<&?5{`ULU47C;@@w8aK`*au+i{St>Bb@lm0K;u8 z)~`dnI23^mo;nd|$bl$t9}fQix3|9d7S~_^P75ahJQRL|g>piH#B*)egM=YowDG=p zS8j?ZCEwo6F*s?t-H`<4Z_EIe_{Ga*94pt@}-BH3zN#18NPwC>f} zjGOox)67}KY5y+0yw7IFs?el`g>;l=8TW$#<6qmR(2{gZF3<=*63g9T9 Q0003&02M-NfNJmt<6N));s5{u diff --git a/samples/h264SampleFrames/frame-1055.h264 b/samples/h264SampleFrames/frame-1055.h264 index 207ccb06588531221209a85ff23dd87b99bc815f..2e0211845861663885a09031ebca351e5c87dd8f 100644 GIT binary patch literal 1459 zcmV;k1x)$?0003AFaQ7nL7IRXyagXHQKyj^JK^*iMvZxKxYh&wvGHKQZAZQ?fs6sb zI0Wz=tNgjyh7oznZ~v26bHD>Jw)B%}@Bjn?)Bribm~0?C%XZB3s8<0101%Gg0}&{& z7W-Pii3FlU*0a1wmnUDYo0UE#{81SK| zMFqr1Z!Ntx3^dpXN@_9|+pTl87cxa#jYPJJ_@qW>#Ef;by42{h_0BiCv0pN|*gO)G=fi#WR zA@_g~S_Ixu)5l3QlByN$fCflW*|Lsr-2ec7>;MojZTu_>oxDcC06;@@fE)numhqxg zM`l8DvCPF8ZctDQpkf11&wv4O)E)?-P?Eevgbqt4dkL5xrtFmaZ@d5j0U7{8z!kz* zAG?8mwm0YOZX5ss0?4?41TrG`_5(o!rDyUY)e6_UyaNKcrF`F_ib;f@zyJsX48KQS z>Ue=K+y3B(1-*D33P-JYW_T%jCNRk2ibI8YBsdsv=0StI@Q~t%MCwejD}umXWfDL9 zpaim@9R!Y=>3>++ctDcI3;3vlMd29W1MnCp&>ublIe-IS$^dXU8gDAGqS0gnEv8`r z0D%wy2oPen00{>U0s*JYJb~??zs1@d7!v-(9F)}zA8{9e>6|qjelXq-_F7NYf&=(Y z7=mWZV)$wYU;IWqKmJ9?F`z$WkkScwHF!=sDVGa3*c$Bmvr4uidQ+=QfKnNM4pqdn2Wx?Q6 z>%%dEmemMr$dgT?i1-0eWq58xbCWgl+5O%OfB+x>cQ9}!C&iW}v(d;n`v3s|FzZ<$ zVVcPt1}Rj=!7_k8@6hz9_3(e=0096xU;$7EAZLxR3kxbJ000952QcwdxBmn_NB{_u z7yx0yPN-Z!$OwaruZYG&fTiOL9Y6zc1UUcz0YLz6CZGnd0C+F}00BV&If!6B0%1Hvvv?>lpU*a2V%?K05H^Te2c|LU_HpZJ-O|M{?h9ENb*|6n?1WR3Zb zb*;ZGYO;h2f~&;g!Ow1G0MG(R;l2a;Vj9VSkYKF>;DRG-ld`4#U-#vLq~2+NN`JlE zg8>^ex7DB5z!s(Y5;2R2IHv|gT(*< literal 1005 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 literal 1455 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 literal 911 zcmV;A191ER0003AFaQ7nL7M;?yakisNeP4uel#n%0!7Pm4?qwACnyxR!UQ_!kbNiS z+MpI@4~--M5PSf@;ptGS+f#8JQ&`#nzyJsW2Mjt-Q`6d_(R|5o4N3q41H!2&10ofV zHQEp$_yYiCjdKpX&?Fq8*)Km-3~he^fQSbE5{bONk4g!D?*I%Ihc8biL<@oUNW^PF z=Ri6D2r5z7PIx4-Qa|4f@!GF{0&g*FHw>kai~N5A5J~_P0e}F2AgI8o7lIIq!#pT& z3>}~rbrsu%0nn#x35&i13?UNiq$$8kC1KBCB#B*3U;rQyo+5w&z!hPzdUBA-=+%pT zerAY30^k5Z?oT2BKro9NS?f-~;Fk`M7(_Vh4@oS2k;43*4PS_EK@snNu*N;?@Q!hc za?d?w4oP*=@EBxZc{Rp}DQ<4Cq??~IA(hZZVqTOnIs*U#6rqZR^fHBbqm)zt2oQ3_ zJkq91rtqQ#YEW~p017rD zM|t1~4lI$PO^dfC7o%$KOmW~YF96VsBz)=!`x$9q@YOspoJoKj^j9WiJP?q|Q~I4h zfF|ew00BV&ZYID6uK;*30003&06B@U0jt1wFu)!HfOr-X;0+z3X1$9b0O!T2gHT2n zxDMDlE!{OtE8cUp7;F7CgdyNO3za}I0M3hm@+m(OpUJHAd+&l5o#~F-9g>YCK|nkwd<4}A{02V70zXvhhx-(BGK8l1WbU)aIDgX9#B)=G6w2fc<9~x&uwbfPk z|NHNU(+QeI_W4X(-{8Z6Ilw?1K?H#`Pc!s(YyfKT2IH8!e;5D& diff --git a/samples/h264SampleFrames/frame-1058.h264 b/samples/h264SampleFrames/frame-1058.h264 index b019e42d68206ac0c96cb7256745de5c6a467fe8..270b121300bdb854317c1fd649fdb9fcda59dc26 100644 GIT binary patch literal 1210 zcmV;r1V#G*0003AFaQ7nL7LziyakUiQHkiK|H2?51$Y2BaL53Fkk9b=I!t?KWZ(cy zqGL?zLRUFG02nyVQIQ_yT;i|sS>YGRo;U%(6omc<&c2LRTgfmeXVq7ecQ1nC2w+Jl zIRs-MLM1tZJY}5E3>FO*&{1#t5D~0?Y3HE~3Qw|dGDduL<8kWO_y7R_GQt1=fFSVw zlS}S;6hiP}Txh0KFii&p&?!y!pa2jQ0^_UzEPtg9z#JEVV&C^5aNz)VDIHt^;0KdJ zrv@H?5IR6Xe5CBa9{dl4Fb9qMfFKxHGEB+M^^;~PGXs!t|KJ5M01z7l0FR{W0J*>= zh-Q;lKp@T+Rts?7mLl@o0X^X1irByaKtzWC0RZ4M5B)&LF+A%c5kx7Qx)qAEMU#Yx&~&$tRHd&TOI0l(+P_u6rw@6gECZEgq^??%-`SufMEZZhhF?hiL`d@SbhK*M&2ZA z=Q5jNz?MOqh2c1@WT25`db_{?PyxZ^(L{iUq);+uT0WvX>(B=p)xWOjF z07*pvjZT&mHzNMFN(p^nU_(2_mpm0!q7xz>48xLh)OlBWL5BbRpa2K~fGDg?%Tl=q zVu9}7MnWrd9SSFHf>6_eXJf00IKy3{YbP z1|mF|_Td(XAYbDEFzxpM;(WzGYBE7z|5!*-e)gA~i{Ssp01mJR;5$TczX3rsg)6pU z{wi9v-v{JMfBpDI00IF3P)V?7!XocX)UMM8903l%0003&0B$C@2Co2kFaQ7nK>#_4 zt^upSPeZ_X780O940>M29{&LHe{HDU4}O3O(QbxHTj3#?3j=OeN#DVMv^M($KzJAU zt84?|fAs~noqT1+u77{;fjI&II|2YZ3cw2zzONq*_+O*SPV0ap{+N9F6AmB3ToR%3 z|N9f5AGX((e~HEWwmk{=FZcaL2nGL|hWI<*S}{hz^t{fe8($V1U z`;CGk|J%TuNKm2Y*c6@uepo<#)5hCs$;Dv9|4a-6*x`43q*N0hy{S9dGBgIX{c}R*j~fsg z`e02F6R!{u@FEz<8X>#r5CNzq$OLIv00;xG044MLK7>ll9YG(BCf!r4GVlKX8Q-1} Yz?^?SpMYdw0003&02M-OfNJmt<1aQ7Q~&?~ literal 967 zcmV;&133Hu0003AFaQ7nL7N~Nyakbe1p~1lQWO+`0uUH45I)7ycrW*ae^dYokr-uR z6^VLS#rOe$pd^{u?3opOJp$*(mfXTp3kYf)kRk*j;V1|hKsdU;08D@b`C+C30WG+3 zNUft=WX>e&Xn-amCa(fzp+P&YYLV1ft>zCEMipjdQXCSRt^fc)2ytOs(0)$2vc-VN zYygkEWHOj~J)WVq!uIn30RaRc0|30)d!j5)L}Csxm^l`qeoOM6A^U&;KtN6$f|n__ z29c86xWFI)`ne+-0&CNUklYqh;+zH_;NQfn6@S1z0BS4F9uUTzDMPyL|GfYXP~(m* z$fSt{*(2ZxVLNX>&|-CRbW;M41m^%57uXy9FOrz=006=i5*0&+(n8u7Zco2(7$`Mz zsNADB2BvtlkN5@@3FZ9aabToW023i8d?IeEx8M?jg1O#3GST>r9=?!^@s5l#T5Gkf zg1AM`a^w4Zn z=fs!x|JlF*Hvx`$IypKQCTJUlIaxJ_iKwp%e0S6=iK$ft17C~xFobnA^05<3V0s;;L<$oLvjy$BjLI|ja3i8fb zCJ+Ek&;S4dK>%(h$Of+fcrX9}0YLyciLwE!z)wTKcoq`C6m_YAT>;@+erkvRAO^+I z%}Tivh5=x2E@qX;wP%!t;Q9=O^{K^~P z=KiqE%O=P4d5x3954)>h14;VwixZ2Xdhwafm?8-5coTFeQBrH>P60RB0uBFpBnBhF z9ZG%&1)lK^g+b4D?uEVDm-`ea2$~&28JjQ&-~`E|HGAv59l(3rlLP&X0*m^J!JGNx z`U(d8NU*j-(h)rQ2EZ)uBIJJpXo#J7fQL{%>6}5cHS$6L9Z+HL0{T^e0DwBE0SE8< pKAh~p&`ITseN$L6z5TzQ5rH`Ve?I`ozyJUNK>!s(Y=CO;2IHWnqlEwf diff --git a/samples/h264SampleFrames/frame-1059.h264 b/samples/h264SampleFrames/frame-1059.h264 index bf67928233aa7ef31a8da1e0a5e7b26a1fe7ba59..472dd3a772897b403c6da91c680566327b4b80f8 100644 GIT binary patch literal 1563 zcmV+$2ITnw0003AFaQ7nL7M;?yaj@hh!it`1A+>kLbk3+(j5QxtN4C^5D9nJKQEf& zB4Y%2WC(-oM$ft&4B-Tviluw}=QKCk0O4P5pJzS)J3(hUyh77XQ%hu`T=0}ru;S!C-3c{Kgt zG;5$9+Z@r-Q5+-@ukgjRcmJ<`Il3S~ze1IH{pJ7wf%pIjJpcfOr~n8BCUAfQ0KVbW zTwp*kvbX{i-T)f5BbYj;grK56EcqHUgk?l1r) z0Q+xaxNH~cI|#@C1Oy6z0*(BLVz2z%Ll9Q+T0Y4_3y7-!@Dq#l69v#Fi38aG09XP6 z!1PrMfB=c)U;sg|ja_O~q`Aheo&W%Vr~oJ?8($#@Stjv^E5yD4r49k}P<)pyg;9jT zm@#+)20ftnfQwTq^I#YnSk0Gs1^_6zlMJ5vQf}7^KxsN4{Vz+t_Fw>kCIVOhI%Wcg zKkR>K00aQQ06-uLMJuQcwcc@8@9*G70Ra?&O!)#V5tMj800f5s;K)afaQhc5E%1M< zwB}8q01(*wz}D9VFe$pKaF!SVA{&rId*AFak9!GOf0xAqG#3Q`)G!|zU+VxoCu5LR zYF$ge-)Mlqh;DGzTK9j;{{blg7y{j(3=`WXdvova2~-E^uLpdPtVxMoa5I5RT7|m% zupCh<&;Qy9MTKQG1rk|`fA9iBw1EnIoBv?b50P7f0E!ezFO~}l5q7uKxBI{V5Djzz z07X;}VLH?!?1bLF004k`fC&y@Idgc8Ds(AMAOJ$r&iY77fh;3xp+(h)}*tapNC~ z2LKqXrA`GH=vx6q0RWM@qqfdS7Hkj}M09#tFiJLHdXwVvgO}8ByZoop<|NMXq zRL~?eUxg6BAohqw@=HJj00IHzP1?XoL`DM-#xD>B3SM%r7)54%X$AuZ82ma=QI^Sr z52>g8)*>QkhGG;u?gR%XXy9W8MsZlu&c>>hQ@{Wa2mymInpPbvkxs3Cd@2FiH&YLg zg+Did03a$WXcZZ-^ysd(-N2C4T^-NtAg{9rvwk)Vko+kEAebO|L3$>MyC%ugV#6Ty zKVRk|G5`6z004li695L9X)p_EzVE{$AU;u+QQ`!L_lN>!g$S}YV>;M1(K>%(hzy_}X zcrX9}0YLyciLe2yz?;qB0Dyr_7)ixWom7z0C96?jkPiaFTwZKd!}b`k2}22mz%cm0 zBPAGG3Vv!)Wylal9r+Tv6*fMg4SWf#6al*!JAe$^ZdU)_06!gHIC^1Pqz0>KKu;!G z(?9KCU{Hq1pzB}P`7i?j22eb^*1r;}s!F#1^cdK0;sW+XHaY99H)x$U|AE)Me&fQ- zc7~7f1IW|)b|{1U!D*=)vTyP56d#qPV$9Lk{trKgGYJ|H3r#=>00;m)1(!+z!?Y3$cD}U2-#^cR(M%}Yz{Pdo?ERV& zchmr;@jSl9C{KS+3;ZG!2R_Fo1|?)@0oDkJ;6lJfsPkEW-<vFRMMZ0DRTJZSxJm z{Q*E$ORtvLllK9tAz@^*-oN3$3#63?;p_R~Ujl3y0DvHgEgSYcC2v^#+`xZ8{9*Wk zk`nF`(LeW!s(YyfKT2IC@(pOyds literal 1433 zcmV;K1!npH0003AFaQ7nL7PAtyaj>$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIxr-U$!k?akBrfx$>e@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAj1@BwS4o4E>(9PXMhX< zR-ip~HppG$Lq_-h@TfW9c!@}kj4a%pX%ZPYU_i|VgpbP6Vqh|VL16!-{6;twv5+3q z$k7ifAUh)f19lnkLWpVl_V@rWm@Wp^&*`L1E=wQ+%s^Uv3pP1FDj6)EuXw;jqOHOZ zr0>-^S`0i=1v3c0$93=Ugw(`fk&5hp|EvGQIIlN~V7;n?g*fCneA7k-VnUouncz2% zPagdO{P0c`jZ?eM20v&vC1up^pi4Dd38o6jDS=mE`M`t$89QD@!XLYEE6K9WIQ{yFzdg(H8iH;FSges01+E}SDH2i)-8DO1_0X;hPTOstVV%~!ibpR!ro<)NBclv z{H{?7MdM8yV*&)y|K${7zySck3j}drK#J;mH%5og0K`f;d23Tu31ViRCjnL3>Q4g^ zdd8u-F=&nd`X7)0alybvOiKDPKmrZNTmS1Ti>D0Y9|Z9Dl0M`v4FKhL{7#BgMh{Ac6nq-zSXV4V&sb z4Gm1!j3FbQI@xdBrPIQC7_$yAxQD1avb%EX~M3oQT03I?1;ipqH32;(Y`RSo%DZ$CI zK(WX#`zAeoRD8MX-(5$$S6-01!hZ z6M-aY#W}4N(=m&FE&bkYx5xhA+@MzYwdb4mmgB(yFv)I20N9rVInc*}un+nG1RyFJ zlcV!%@2-oz{tw>Swm0fkcToHQ1OURQI}4Ey`MeAUVr-jc004k^00;?y2Z!Z`>G%Q; z3V;)xi>UiBSSqU&&!7arfT7gtH+qbIPBnDy3;{8QY6l4eGqpEZepN95zJMm^0003& z0B$DG2Co2kFaQ7nK>#_4v;nKYo6X<=fPqaINySc`RFKjot5IN(4+6ql@E#$7aOAWL zgrg3EJU|CqQH6#7_i9mi7)CmX-PzGL)L-CDV4w}y!JGg$l+Q&sJ^()*P0k*iOT{7q zwzfcx@moDqKb4E)&Kok&GJ5;DumB(cjsr`jrg)Y6=~v(WgBwG?5EZgZ*z&JafAh`k z41;pjYzvc%e*b6gJSkB*`?@&yT)NYH>%1waD;06-bw7G3HG zQF|bmd$;dtM)cl32Ekq^Xw2NN}VYl4C2^oF}(Ub-V_R{evL8@SW n#M{~H+>!qNjl)O*uleI(PCuW|z&tPj00BV&6+&$QYVZc*TxNW+ diff --git a/samples/h264SampleFrames/frame-1060.h264 b/samples/h264SampleFrames/frame-1060.h264 index 2f4a260ffaa4b5700a1bc806b7408047428d4a1f..ac0910a1fe1693f37a3f69cad2c52fe466c642a8 100644 GIT binary patch delta 1173 zcmV;G1Zw-T2dW8w000012`~Tv0YRG}8oULMC{VE8@gR&>fCTkz=}pgo03aFxL3#*v z;h@Uh*Ro8ZEIj}N%m4%fqIv)V0ickP^aW<5Tfo5_C2~hhl=Gy7iTh12f*5Xg3Q*6$ zOk6Cw)#nz2=l*a32l^!(L-Q8b1MGkafH6W8df#^ql}W6B{lEYe08xpylATOPk5g6d z48Krx_EZo6R6;-hy_*0N;sXD?z!;H$=E171fgLpoV0Zvv=Mo52AzIy* zf}sSO5Gey?-U4?e0EZl|4@|&bXZ_#?fB--Y00aU6q*A(o+g;}se*XRhU=R^V6wi<% z!5K$`@X0ixZbPHHgZU>O^ldjR+3U;_aQs|PG#0Rm|oszdJpL1+_sLr)zf z#!9SLzyTq^I5H9ATt3Ci3w$5y?KzWZ00cHZ@HMr;ObTwQoF&@;43ME&vW|b<004f> z01z;3{A>ywyhgwPKtptZ902f^@uE~mW-~e1z2ZAV6 zB(D)61Cq&}!eRo{&X%;k`@jGY5uglM0=Pos_H-}S#{B(F!N33zDyRTMA}_z@1Of+3 zPeLM8jXnLZ0KlX)uf6n9NjQ`I0097D7wGHTgrI>g(}Elp_26_V9<||#@TKVpM=Odk z4iV&kl+a=P$S`((5*$$IokFX@KLp#n=7E`d=bOUnT} z00y^|0N@}PYbvp#z*(XQ)tzsH4vihyR1% z00aYo!`9z~itj|9lW2~3iFN*Dps+hEF8cT$0HUh`g0f4FlogtT@BrDxX@Wu&9KenUxh=4E-~a#tK>#_4vH`2WnqLI~dQMDmQUF*oYkM(A!_kle2Nzv$_Me?PGG1fq zgAM^KrXs0};`B<`%t)8s;PK9cQCUc80xHdf5jNJ^xjv?(hIg0{|09 zDBu@I=%Z1?qDR6!01SW_HQ`TLQl7nk|IAJTXcT3C7Gjg|N&o@?f^6wPsMgjEIS)aA z3%+7kFcyRTT?ok{c|GL9{Le>9JQiF(06~Tb>C{wJ_o@~nZ-$^300Ok9SRZvr8ked7 zDmq{RV^>0v+V{G2s{jE2U_9IsGwlEXKu`))j>ybA7I7{0YLyciM9c&z?y+j9sxif2L%lv4_C}c;o4vTCX=k$5x3O=)wwOF zEB{h>l&s%>Fk!=g6k;gpi{{3$VVSE}1-S%(kp0wFL0D~Ae>?aGS7Jm@aCzAR7+?vq zg+zJBUgJIHUv?k&_W2dYXHDR`fBB)|3p?+DG`|zjSqYT|BLM{}@JIK>3v9d|I&x~? z?6j85fE?_;x0tX)e}8IVtRc6yz#fLXOXa-(`>LA~6mekX0tqyRBLb+V*Z`g>^U-au z+(nv`>Ocr@&~mVLjNv%`hu|~9uqNn0LS-|q+y4)1CV-7|lCltAL-7O=H7n+EDlv_I x8w7P*ev$t9-}?&D`lwm6_g_8BeZ0B&6Hn*!`S=1cfB*miK>!s(ZGdX<2IKElj1~X@ diff --git a/samples/h264SampleFrames/frame-1061.h264 b/samples/h264SampleFrames/frame-1061.h264 index 6aa571dcc118a91a0853ce51c75b0151bec720a9..1ccb3001497bd3841951f88d19d56a8ddf655151 100644 GIT binary patch literal 1415 zcmV;21$g=Z0003AFaQ7nL7PAtyaj>$-^SKs3_xQ51ON;KDUE&_4^&`fX`Q{0zyJ^c z0ZSPz03+*tW1uJiDh>%F50DI2si3r396$Y_1ON!;;LGs1Gkh$OH8k-lNXIU(aKV59 z5m4ZeFUgeRC~gQqrR85{F}Z;gZEjEi5P&J+g_}N5N%X!d7M3I; zGJ0_6nzlHpehC5M)Rn#F15g4XWUX$8MsI__05B&bEn<%vAfPkNH zXkJrLb zDGr8+zbyh2cLU56XGOc4a?VkZde=F)KEzbXq#)+Ild^-?tO9@u*{0OuG1)^gK z5jWCfTm8HMVtNK5xmwxV4Aha(AqS+8BNGz@IaB}w0>AfxFcIJu-+-gUkwxhXB+lCW zOaPw)ztB)XL%4M^AO`IK0Rn&k5H{Ta0Rey#k9ZJ(0+V0{6lnAd3M#?u0-HcUSWm4D zNca8VOn6`j1Q&t89>9NvhRMG5|Ns5`!{raJ3JCg<2{8y9eyxJ;!HxhHGSvtJi!QiW z_(|z9{`}X1XyL<`;A6aKPu86B_&B^ugD_$DGav*Qbtgj45^#ZPf%~8j{J_VAFJBR3 zNF7TZ0E6MbF#`ZV5W#bXa9D1=6z2K@zW{<9Im}DMmT^mC)(kntw-FhkBLL2EfA(Md z-SjkOUW}Xn(g0BPP!L+ujXJKCN`c6SAvsv(NC42DL2$t;VmEI2uf7G113C(t-2`*@ zy%Yl;XrS>G&KTK!VG=EWD+|cCi;SurlSY*Zpu4kSGBF3;^gTX8=!Rhf*UBhC!LoNc-1- z4x2L&&pw)UX5%~8vqVBcQs5aut zpZsjVq{t^s*2n+w)BpehK>#_4v;nKYnFauU6c_-|0Yv~XJtg2QSBb+H9%*Uu>^K9j zeYQB>{em+}AmdPTzjsy<3zQ@9HbCi!>dg8*{e1$MfWV=gA=_L5{0njTxPVb})!+cW zzdi{LQhn3L6NOZ}^+1?-fudjsykOWv2)dxcj4YuTE%u(@@3+cIU-}F`z?&El5I|j7 zFuP-VhI;gaCwz^8yYGb*bbwoJ2L!s(Z2)TU2IGrVVs8Kd literal 1402 zcmV-=1%>(m0003AFaQ7nL7RXYyag{of~37llb6sC0svAA2gM8-$8Z2Z5I{=%RK?U> zwHZ_30I)y;0TTMLejwh22=>450>A*M0CL^|s{)G&Um*cpXuclc03Zxf&jN#`CByxa zT_o@TF)$vZK}DqjUwi^ahO7WMLCuhc6EiO}G7@>dU<3y|NMl5FmYb6uCBdW!01I~T zfGuni3&-$O`}cr&03abs3)**wbqn%_0Fmqmae|f-0c9ZRlAjVsyhv;uV37$OjtCde z1S`lpaZ3QPMmMy{ElGs}fxjl~V73+@3vi&U0GOTTFsoz#RRTanW8AKVLn>eJ0Hb6q zV`v`)*6aAE$bZ_LzzT+3f~_?z zzjy!w0wL5ea%$FZIx`wf$^_cl0096n5D&$03A84D-~d1XKoAQF1v+RQL53;=wh{n# z@=T2;Ov$GF0ArA21cYf-%kY7Tbc@@AH~<=A4y3361OwOr=*jB-02*T{zyt*oo1_*F zkw{|#IYN}x@9~TjB5r17-uAI=wP96Xzdw*BPejlfCqpB$RH{xXTY?Zquu}!+yD>;9M5VF z8H+wcKPug(00IMp=wRBUKK|E(2k#0<2tHA*55Tr-*!eGo!7B_10$T|T_y7U`JOrb~ ziP&*@+NWN#m_85y*Z>3qrw1kmX2)^Gn!oW|KpCDmgSr@?&(5$0MmeSJ;{nhHphtmpSt$7?f>@QF)5E&;m|;us+WWC3~~~x!eBT_R%$-O#zZo{A&{q5B7qcO03aey00;uawxv%@{_YyQEOC|Ptp zBVOm(P~ux9`#_8`h^Xv+l1YEN24H0@GqX{l|G#t$y9t#`)%-jB3;{Pl0003&0B$DW z2Co2ZuLb~kF|Y(rA`YYQ8KC_5Alk6+th~G;gK>m>M(`%Bde+PYl0{}S+6&(m@ z1p1he{gyycr%tXOOI#SBXTS%l!=^FMkie#BhzO%pI*)&W5JzM3K%aVrzKSHC_!yIX zA~6rWo(%+MHm3j7e87mrOJKc5!aX+v0!P1Ei2sO}f9n7n&-&-V zP{;nS1PJt|eEE3~&(IOW=&Z|^qosL8fg?FFg-fs1aX;($8C((&gPAj*RpsZ~N&o-> zK>#_4xB;ucnFauU6c_-|0Yv~XJtg2QZxKTm9)@j)wcuTEv*E<*26HV$4n_qL|K(6b zE>Mp^xKMCJdU+C>|M%tm8}SiCI77C$1i)L1g}^AQ>#zVnOY?$4l#l%|*J>3|s=n+S z4-){;0472J0Duq#B)lDtv6w*&JG#F4`>+4}cz=O5Fd!g+{R@+#8RQuTUPyc$^f)(H z#Md9>9cd(4p-2=TH4VF%qM`KxDecJ<~6eE$X>cxOKXY5e|wKLAiL0003&02M-R I0BZ0C<2X`Mw*UYD diff --git a/samples/h264SampleFrames/frame-1062.h264 b/samples/h264SampleFrames/frame-1062.h264 index 901cbb6f8f4a849267ee4b0b171ff6581ebcd03a..3b29cc89077c57bc1af370f6f6967a1113642504 100644 GIT binary patch delta 935 zcmV;Y16ch32D1l$000012`~Tv0YRH!8oULQ;9)38l7?me*tO6|OR~rdQGcL;xPZK%-TwnmNM{{@?(HV+u;pK}vb8 zbDO{*0LVNKOE*9w|G_l87XSbt08|QH+8ok2C1rp2unYiy1P3H;q__p=e02>%!8Xhr za3OK{V3-#?i2wkA0w%x)0s*FxC>kz%@IUPN6i*t+zyOJW0Dv$7z`lJXjqD0QH(FKD z00aWS7z*!yzi^wuOcx58%uo(~V4wgXrjt7W2R-|MEa8KP$d?#|NDc14V-?th@z;)BkFSgn8|Lvt$_0|Il!1A)akrNA5m zR|A7Xgy`k$>~LB~c<=@We3ak=2Ca)wsi9Hxpkan0zW#3l{a=b8%{T)Q5RnK#qxozT zcfiL;c+j7%Ipy$ic$E%N!VEx$02VUU2m^~QxLEi}=`#NC2qD9q#Jovo6t+EY58upP zL=Gf1gmxA>D0Ju;Am9jg0003&0B$DOlN$mYfADArfq{+*9|Qft2)-a^w6UNT5BX{~ zgTDOndH}by9f{lU&e?<$Bb{QhY1Bdw8%r6ceQsjG3->+q#UP# ze?WAwFB=8lcoU24f~=+x5ZY523T#NOG=Eqrou;e=6K}F)8bJ%A2vvdJUkHyQ(DDD* zzIbPYAU*^`1E9W?Gr_=_0#_4wgIcanDAr=f&~BtRgc=T&pVr+&Hg0!s( JZGdX<2IDxmev1GA literal 895 zcmV-_1AzPh0003AFaQ7nL7Si&yag{oV{STZ^g! zfjth`)e2~@iR6d>ygHx&AYfEP004kU42GE}%-^;LdW(;3l#Ijs{8(a8d2y)Wu(XK8fRh>!00?LmMZ1RM{gCH7|9$|sN_N?`bkjVH_^7t|X$951f48M*c7at9*3l9!! znh<-P;a^L3JM-gaoPf`71F7=BU9eZa-URHS44422q5uN`u2h@>WB|d-OBg|*fLlt{ ze1PlvF52Yuz&ayPYUPr V`S=3SfB*miK>!s(Zh&g=2IHaIdHVnW diff --git a/samples/h264SampleFrames/frame-1063.h264 b/samples/h264SampleFrames/frame-1063.h264 index ae77b444c57f947118d7363926fb8dda53220ed3..06f2d2e60a9d0f2a08643f579d8cea0a365a7ca5 100644 GIT binary patch literal 1075 zcmV-31kC#Y0003AFaQ7nL7RXYyakbe6d2$D$|E8ke8-xcpl^km!R9msE~iO)ogy9t z0N|~d00;xIKmdW^BDtIxkU8LpP#{W}MU0aa|7}13Leu;P08)V%IZzili?i^E?W+g? zAYwWTUpXl_MpY{JgDZxze3^lcUh!gN011d3{=SQYgWedIM-spq@E|*L^w36WnHfcx zN!$TU!M}hIF#W#_t+=vW!PBHe@CN2o6w|^h^+yD;2wYwzDM?sT&q;3p3IO4+_pB6D zQUuFrL*P^ZR1Ca4m63fMG9_*p2_OZ=&Voi#pRZm}0F(eDUIC2hfcs*U8gK>xQo?$p zn!Lo7L|x+eRf)7cjh@;P_-1eherya7aM#f$7iqFef}nClvrdLhu78o=k4))6D96 zvr0S(qKB=anh%oU~J00;$;5x~wcK3C^x`2`1{x8?zkolp?oEm#2vS{c}o z#o4+}XI}^YU=E-QfU7fP^b#(a_1k0gu2*~D|KEhb06+i~CGeh%pKeF`EHGif5bOW| z0YLz6Cg29I0Ap(h0Cq4!05R$MTYvl9XD&X(dV2=|cpM^I33wq{z~B%K?G}r1coHOhR^5RO|F}5)4wzrx_q1Yt$9^H<+sTv$J}&CNSb;?;&w22D zU>ViR#&7QMCYSo;6`KG7NdZe$7yt#R7CeBmpF%0U#jo~?bR_>*CNVPZv;XWQmc@Gi zpFh8`LwIqeApJ_P5|kX%zq{9BLXg7-M6^#AA|=7%2PF(;*>6UiX1G zzqZq2HefIU`=`S}{8M3d$0J8e=050W)25(>yIv!L4gpa105Gp4K*j&N9hzc8wFmUV t`N>G4L|uJ%+V=ne0YLyciMRo)z?dh*_?`gB-~a#tK>!s(ZUAcV2IKoU(1QQ~ literal 944 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 E;~t_+o&W#< literal 1501 zcmV<31tR(Y0003AFaQ7nL7U(jyag{ogCxC7lb6^Q1cs0(1o4mnZ~;I7fEYk$==BTH zNo(xGqrj*H8oz)}$uTex7{j^72M}RVN`Z;M4scnLPuNBf;2eo|z>A%&L-zL>bT$l5Dfqv0Gb7l&*3jU z>5u>j1CRg=n7{_N;jR2403!t^Gqk&$k9!x&EcP&ihRuiceR(!8I$GBQo`FMu!1F2pD^`jftQ*HK5u= zdf@-Y8AT@;gHlTl8HJ(C=9(}w5;LnNY#YV2vws7*u_?sfW7jk>a>8Afe^i98MY~C+ z6_ykrilxvK1W27NqTFc1`{IP?9WVeuKvM_n!F*a@$*761v57yuB>!C=c%L6t?8)lGn40HO$j zOiKlJ6qwT-m%*qk9vTBM7eP=LMi2ym52yjw0+AJsUg9T;ELDwFM_~Lg1XKF%fb#YLHXLyvdR%76?Ra9aZor5s1c#&=6Cfv>0Cj)o za2Y@*EL~W5c%v^qSegO=0sw6w02BdRMOSzPjf|kuKP8%dA~&x90Dv%t7Fx^XmO$U) z^;Uln1h9S|N;E*YNM4Bb-~#|AhcDZUFFaQt+0LT~?SWmA%rxejfY5+~p0003&0B$Du2Co2FaC8U2h++W9 z_gMJc01bX$*S6zBrStLtioOT`xB+q=`rB{+)C{t2yTxDl7L8nru z|IfkTI_aGpqCc|mL`DwFHFY=L!ROaqcOWNhW;4b#NF>0IR+In;mjUkws~S~b|KH2$ zjtIhQ^;*NZ5V z-HLz$CEX>k`H($AK0G>xKG|=N0rs;fH5VQJ!Osl%6JYQU1PcM6Y_?KaaSrqR2DX~^ zvTgtKfM8>M-28a|X?@9ZN0aSNX)nQAhT+1>c;X7`1Y-BYc>aq~76t$;dU@oJq5u1s zhSdgv&Y!+NtH>k%|0Ep!e-Au20&)EQe&7HA0YLyciM|1=z#EJJ00BV&6+&--YVZc* D0@8-( diff --git a/samples/h264SampleFrames/frame-1065.h264 b/samples/h264SampleFrames/frame-1065.h264 index c3170675eee17e6540e1255ddb4d8d0572ff3290..3c654f9f1abb7bf0ae2338afd7c0a7103a2b79ed 100644 GIT binary patch literal 1325 zcmV+|1=9Ke0003AFaQ7nL7TuDyakiQf-ylZ02#L56x=kt0099I1qbLc;sfA{?h+|> zV8RT*0Y(4<0+E)00D!1GG$??kzLmTN4B>8;6IPo9svQ@hSucVZZZ--~%z7^ZA=rB% zm*N+*asHYBKm;sI$u?v0tK5a)c_W%S?6oLY3vZh@nl`roAz&xWy zpn?#Ggs07~8$bXc0Bi#Qrv?rS6mQc|^%K}*Fh5w1RI0#c_cV2+I7;YI- z;&P2lUdsMUY$3_7+%mxG14{=R@fHoX1Y?7Mh3E=iJ3tbLQprg0AA5%5g_fWlx5wrH z2?i92Vi-1e&~OS-%ght=NPpk}fB+yKAA}K3KTGy5Re?*x@XXm&f^`HO{0Ia+R3^z(aONWJ? zEO6VjEd#-w`swfYbl@o=!jbZ%6Zb#>2mt#q05B*fOB-V%SA?nn8m}M{50!Hog~fJc zB9wUWkGaq!?lf7=nvR)Sy4SO*;FuTqsGuKETMQ>GGaOl!LZ;1vj71A7hX^Sz;GCM zI`Dy@JTiHN00IU803d0q=l~c6$E~4wj@z<-@mAOjCTDe^ENrbX8KA&@+>wwcClQQ? z0qVlVL;eH&lAc674F9=Iwo=RlA0~8Hedq%;yqr4*8(dLgsl3MoZ=EUrQ!N2HerAxO z3V*{;1ptA;x%^%Ql`qbE49Ua?b00BV&ZYJ;s zuK-U_AOYaSfEj}`>i^&RV7S%FZ~j;i0Pr{=pfHC4+h%KOh6b})qVEXkAU}Zs4+G&h zq-gLB#h|yZ7Ndn93EI<#9p6|0gwKCj(KgCoG^gIXDZmZ_0$tlN-vy9Nf8Ws%6Mzg3 zIpuDY@2I6W|1aO%fSbirmYM@R7Dm{`Zy+A`S%@~(8zt_Ks1S0TH~Q}pes{&ngvcNN zd8?u#b;u+rai;7Usxto>7f&oCB jc)b381xNq@0YLyciM#=;z#EJJ00BV&6+&+SYVZc*9;PyY literal 992 zcmV<610VbV0003AFaQ7nL7D&>yakUK6d4DOzzYcBK-^zApqd^7fFUyneKHWxAl+W1 zDUf+({t5UH$Lf#^-~ix2DB&DYNRlVf8MYAI|9mhQL<7hsBOzKpKcR>p!T10?V=5kf zXznjbp70Rlig_)aI;+PJE+@r?!@y?*10Vq6RgQ)l{m1Z`e_#+m7IY_6F*TG`g~DTP zn9eQQ&(z=$2W14Xhv@@Y6Hwpa1qWDUpGANO0JrE^hDja(0Dx$x@Bj!09$aaXGZrAs zYjk9=0sxLkgG2}-s|eo$AAnE*1OWn6Y^XLPo!Pye3}6|k5zB%uTx>eK!T=D!;HRJ9 zY>0!>(C;V!!GiBkIL!;E>YIxCJll2pC)_GCU8| zI08ffh7iL-Q9!fB!U=uo)QivnV6Om9P*v0l0BhhP6b9}B7n16b5-c~Z+PIW$|66os zLl+b0zv_tUZyPvYHf7zS9nLGS<&7#&lW zsKCFG41P`lAeSRZATT~R=tBs&e>{HvwgFMV06;?c0#^V6P-SEPTfo6QbAwBws1gb1 zTjJ`_8#n+00CGG42x)5o62C#HP0fq{U=9HgM~PViqtvy(a2NpUa2$Ly#x|d3IBP8b zy^3-40W?YhSV-mo0stkT0RT7! z9@*J%qL+rR_W%R|0bCYM;|Tj-^Agfu@B(gt0003&0B$CL2Co25P#^)|#DEcu-&g;? zf!f{iPyc%Y03HVfB@{Rb3J3P8T?f&qANYZx@E`%;e7GJ%1)PEast9}n*0O3b-(3JA zMgP21O_59MflPR=5Z7fm0l*+7+_N3!kW5GX{1^bh8h9kBWFPo%hbM>w4V(* z+mIv^y8w$uNNs5qF93PgS~V?oBzO2QCl~+6?F0f)YlO2EYcQiJ7u?pZ~F74nti$Wz1hVVZfYty#9U#NB{r#_4paHAE8;k$| O0YLy2LTCVL@CM__K$dI( diff --git a/samples/h264SampleFrames/frame-1066.h264 b/samples/h264SampleFrames/frame-1066.h264 index f5ba07fdfc2d6b242fb2533eb6056528e4050012..2f219cfc603475f133cb4713e8aa44bf3020cfa8 100644 GIT binary patch literal 1830 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 DDI+K$ literal 1182 zcmV;P1Y!FC0003AFaQ7nL7HG1yakiQfp{VkfC2#l0^>0rqfn5?&kJrr@BxE>vGO`$ z^_}`AmEg(H>~H~7oX$b%Pg9oc0Bux&5N%k^;2;1909X5L02BkNb<~Uv0@w%=`M{tP z1`x@C0N)S@00;=cJM43amlnjI``m^A3R{Pw25Jh>S;@9Q0;b>q1OosCECsTKN*EMS z@zKbZ@rlkd__qfgU&t0CzyJsXC~%-&5KoH=frywGKcmd!z3Ng~5!Y57xoC6tTR|F5h z2EgsnhJp#>N;v6}vZo*ba1#G!L|KjK>_#i092#yNzQk|fV+knoYFM?4a@R%|L zVgn;S0Kfo1Jd6OvjXM*=15%5~TKsdO%W<-9rzAMrB0AauY zKv8W#K-5gyHKc}xirlm~!_OK<_hLRu=^g_leWfCYe_&*ZE?{_ng1^o|ec$iYv|VZ?$| zRfNpHc}|rdZ-*~|2oC^O1Hs|L4B;9%2ZT9$&{}{2;IIJ1fm+rDOB>6C7>PgkdSS-I ze**|hW93CEJ-|%>ZlRi-SiKu8-_Sb3CoBndP#4sUaDMyS*I+3IL76jz{_X&rj4TQO zeiLA}q1(?-1i~Nu0A&C_@mwjl`R~Ijdvh}#U;&8m1P4H&AjcTMhhxC5P#(t};vqdq zBv8Pof-ThGiq3nUjLhWhnAhi~@K!fLV3E#!f8YWqZ$ymH9Y6>O88$;>5xw?Q%)mqk zHRYbKeDJIZrTJ~tcu-KyYmcR_gX+HeZvk4%#I-MAQontzoeUledu)PLb$;ss&B_gw zfozBSw}6{u(Uymib%}g#CbC zrg%JHgtg{$0BXz=f)aauIMq=9rkBJ8VGkXG5dA}M=p1L<1dn6!%Lz}Jv=R}&OO1BJ w!pN93IIu85=Y?QR_>brF@Cqyd00BV&If3{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIlcqH0RR9%6aWkrGHQS)0UYKI28bV8`iKAo1SX&z!o0VG zu6IqtyELY6_yDvJbs%a_7j(nNtJnfUw1WzG_j;jbAAOGoOc2lkJz6!WSRy^!R`UR; z00;n|zF+~*Dx6maMqaClCz;I8kYEB3b8cD-B2}>`-~J5101yWN0RjL35H|o(Gk|~! zcmU-Du>R`p3&*AkG4pX;wwM=1k=K~y{-1P5DEYSBLEBx z6`m^W_nRy@|AQc9n;!a!z0a8v|=0ilAqi2wtHi~5dYu->9m;pZv5{E0zwBN83|;& ze@Jt0-~b2(_!t0Tj{(No-o3#5-XrJ$0s$Zc2WVH)xv1c|NSRO8grYasjS+ScQ-831 zic(an|NbAA00|Qy*$yV9$zxI4qf5S7CMW5n}Wu!;^}`GO7s-_#E* z+7v)K*YE%!oDSfM;XBcF?BMgiGcyg;?`pr7i$DM%Xkl%{mH?8jnh1aRKLMN`M#75C z3;hLogdi`8U%z%xE7=QKqdp6q)KUM#m$eZRNhadvx>R|Z@ zQ}cKL0s^A8fl-?ePKonv+zAau(VYH53VSklH{;@@fZqy0h$a|3puH1B-IHYLv17sI zwf_IYF3s047E< zIvl|T_Sz)h$jC)yG0>tVYD_y265KEVv6*b7>Ijoq|J)ydA=m%_0YLz6CXfcN0GvRO z2jdQed^}L=AWTS7DdPZ9kbjzA@FfA@9s$@`fCoEm7^{D51pHwM5dt{=kD4>*#R-wO zzk>sKI$tnJ5W`o%r5JMnf=2ppy?@L81%NyOKn_CST#$$s;7SkdSKJ1qqV|#lJGX{C zu4%t};PA<2vr)$#;7%{%1kj-(p%=b=@@}5?q#xm|;(G9H5lZK7o*pcPkSX!+iG{_O9+#GZ$L!30;3ufFm>=6$7d-+hf3yn}(v+@z4Y##se-|#(*l}7-`5p1@t z75!EaPI2F^31TsL73E=f@HntDx^My@3BF`O95VtH1nALb`~VU$PZq7vMgPvQI8wR< z0dDE};7kplMSPY^{rg;y3~9%uakLTbS eXaE2KK>#_4qyekI8;k$|0YLy2LTLbM@CM`OIaG=O literal 1321 zcmV+^1=jii0003AFaQ7nL7IRXyaj>3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxL?*bVTf`9;>X1lNe$Q{Z7P#W+z04sn9P#PJ;z`G@sGCoQ$00amC z0Ru1VDzJeo&I)ciB3U}+iN8Qfl|V7q-_82V2l13t$Dmt1@%-MEyp3t=9(}w5;KD)YzF$jJip*xK4+m_ z=puc<$L$5gojQ%y31+KdHG;An5Gw0GI1NA}L|UAWjQ{^Q736HToPPg)fDBbL2P3z;J&5h;KNgybtR%%>45TYLb<9d~zT zrj=a#thMl90wVPWX`^6GV%}^4fHuWpukv6-SkN(8Q>M6Jr&wf}{?HgdE099E@#l@O z6HEAS`MsI8=EP5c0wK8sN4%e5j3kzLF$2vilq5jZTB8B-J!1fX<+oW0y=I-E*Za6W zETOLfW$2d$NYFS2a9kG(Cqsb?VI*Py-2h+&1geC))x+6+DLen53@{jBq9O<&>~fyg zo%^?p0Z;%byY2uWqj`g&@i%?{_x$kq0|Gp=LNg;L$-mK{4_^OafXJ{CV!Qwx0O$<) zBZSH19pdru0C~2YI(RW6ZLs^_Itvu<^LnvA;x69zfP!PiakSHEF&zk`PJchU@NwwaRBf)@j#EG>pOFiW7N#C*W4B!d^ z&!f}fHUcgAZJ7xkzyLrXan*W)^>i9+(G!fW`<1>Q2NfiIoJ%B2oE3HiQxKfC-T0*NgyRU^c)G6wPLvf;5!^ z^#Du206;mUKmoChuCy39GoN`;Cwn(BI92~{002M$3?QQ+6PgvpVK@jx;C;9lY*WBO zdH)BB-#t_Ji~s}#fCNxbIN<-ZDcFQH*9d?Kx&QzHK>%(hpa!o1oGb|delW;ULJ*jM zHYO<)UJG&u`l)}wlm~!#2Vr6WF4JUUCwi;|Hw?p6K+hB4t47_nQ3S+K?*mwHXImg7 zjB)D#(lg7b1Qr!Q|6w!-FZdP!@C5)l3+ckd5SxMN71-an2}@Buq97Q%xC%VYG=tv- zmXb|ouda82IKPM!LWGKeBW`!eoi^K23;5P}CxMP)3wK`W;o@WxAaQZ;iG@SJpa&sA zA&K16S71}CiU{MD_k&Dc#Rk|s|MiogHUJYeo93 zrW*)3{Zte}R#+U95PkR>l^ws<4zRzx$bvWmn~W+A(HawA0MUgOb-D<@@|9c;9Hmph z3fA2}-UPsC`YYzTU+=NX0LG`j{*eFlfJEiVmWTiUwg5?!G9=4Iec;2-3HTF)e-Zrr f11$gm0YLyciKqdqz#EJJ00BV&6+&tNYVZc*^zt@x diff --git a/samples/h264SampleFrames/frame-1070.h264 b/samples/h264SampleFrames/frame-1070.h264 index f90a490b4cf308dceeb874bcb1ebf04b71045c76..fdf7e5c72dca6f1f81708d729c6a96edd313925f 100644 GIT binary patch literal 1215 zcmV;w1VH-$0003AFaQ7nL7HG1yakiQf-yl(02#L5DY*Us0DyP}1?VByhJ#CY-pO+W zu=D^FzyLr(C!hcz8VLy>KvHT&ybKY7S0r@FFFH_2pVbohA%^E*r3}zN1jRvR(y7yn zK$yb;2mB>mNBDR|wb&nJfDZs-geeED_VDR78qWX#Pyt0I+Ddg%9=%OhyfXd4(u{~8 z0I9?y?T`Qn02AO~IpIT2ii?O2-dlzM#NZ*YYO3HzO+q*w-~of2NFg+Z>vCEPgc5i_ zq%s%~z@BE5Gx%uG0ImQ60E&ok0|XXpK3h;>{4`JiwOaweXt!w7nv6LZ21e$dpc4Fy z0BC;d!OIu`K$=GDko&+0Edp;SY2&1t$yEyWzyl;G?Ab>*?tlP4b^r(%HvSd`PTnJ6 z03ac{Kn?(SOL);LBeNknSmt7kw*<|gpcg>I2BDt-0^+DV5kjFQc!-D{7EJh%m>(u| zwWaR+zyJ^tpbS_7xJu*qbT87zKz_40H~<0#Q7{3_h@SuUun;O%Cm4ivi=O__0t^a6 zO8dX+GtMO5002N3Mfy7S(t-rPPy2xd1-)1u3P-IsVtgri35+th!jRz}NiGH-%!3DK zS9&D;n?!TVU*<{+1G4vj@H_!URs{uQmmMf8H3#4Uvx?IMgek{p7Q~H} zfH8Og%3G5OE0l)&Ks5kBtq~3T_ZVnoIrZZR!;;h-Bi|y61QGBBK^5V7I*k!GUN_GM zKmcPof`cc2A(N0yUI@Ox0K%r*d|Z~yZ9D_n!XSGU;uQ$4uB)Ybjrb_ z>M1@P0v4|L@8G38Wwag&Y={Q>B2zfFalb00BV&ZYG!puL02lz#IjHuqOP4 zwA7=1fCXv%kToIi0qzvifcg}Cih7bpt{E#Y_!I!(1wc3pgIFi>g*^bTJkbx40D8Zn z0Yz-A$UNQm>r0Du0dcwlK;uHh$a;cLz$YLq0k8_dXcgcFM&lwj?a))pfL!7OPk;AC zKmecwhc&8qVhRMEkuTL)N9XlwQc_i4U;bxc%6c$ zgRDGk+ji%J90}2J1AiS{BfZY!bL@&0HX3D8-(UF4)d%eb8ZWC7_iD^<6!Sj);edJ| d0003&06B@K0jt0pi~s-uK>!s(X@F|*2IGd-1gZc4 literal 1100 zcmV-S1he}90003AFaQ7nL7Jc%yakbe2!;3%$AuE7m@fbe@Bk190*Ge$B4hk%UjNV) zfB=917yyD+2$8D@Pw1it@OW`uiSqLmVlr@7HlU}F*B4^g~74r#^)C8XXgjl3-HNtBBqk8 zJ@vR_EOkSG0D+(Y2pw))00O|v2jBo85FK;bsL;QW1b$8dAeSQuATU2W2xTV3G|K+{ zvH?-R06n$O?>n_z3~x9>mD?1fIZ7 zKv)A{6@btvuu9nZx&fBs9VSxxf=!Etm&<@?532SW zc!9kRHdlRlM{i(hLN*#@lmD0gGWRe$XmO(XvCnQ6HHujtUjG2}KmY&%K>#_4ssXFO S8;k$|0YLy2LTZ3&@CM`MHqv(h diff --git a/samples/h264SampleFrames/frame-1071.h264 b/samples/h264SampleFrames/frame-1071.h264 index efc04af466b90c2a0626a18da996d95b02da4663..0669d1441d53248116bdd8d370e2d0efbf5cac12 100644 GIT binary patch literal 1825 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 NK>!s(Yk+F-2IE*X!Hxg` diff --git a/samples/h264SampleFrames/frame-1073.h264 b/samples/h264SampleFrames/frame-1073.h264 index 9d2cf485f45cc94a8781c3f44da9dc1152a207ad..3f05aa2ded25e645e31d97a58a7ffacaa418deaf 100644 GIT binary patch literal 1330 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 XiLe2yz#EJJ00BV&6+&zPYVZc*QuFHH diff --git a/samples/h264SampleFrames/frame-1074.h264 b/samples/h264SampleFrames/frame-1074.h264 index bb937589c122a0d78fc6f070948ae427e59a437d..8f7436f1ee749fe1707f8203b141ccfc46200d8c 100644 GIT binary patch literal 1585 zcmV-12G02a0003AFaQ7nL7LziyahKwV%OC4>kur(fC46APK0-56%oA{2rk#aH1;VK zkG(Ibiz{OdfF2AZ+a(YF-U7b$v_5a9Csa~SLXZrwv5oY}p zrv_C+FWzVYjzq+{izZl!5k+_RXu~2Vl2d$H&7c6(B66mpDrP_Tjoyd=gA;k02FbRC z8{hh03qnwsu-FiSJOCKk1Vc~Xc*scMP5uu?38ir2 z47Ei?7M@@L2o!(-g0KJxH-H8cIDi-*SalK#4g&QRVcK5+6L|*0^x-OVSk&ME5CcvC z0s}+=bOd7*F!!bLQByL;bndBM09snylM&wk(iE(q0O-4+Xf6MHL>i0|?xl2E<4@=s z4}k!WV0+0g%Da;04}b1p3xW31rE&0DM%c6f0szl|DeHk4oBuZvf&@-&9$3baDntLk zLh5vvsnTT(!KkCakwDjQHk!&qJ5ceBp2)3^yX+nf`V@(U;q3UI06U+%B+c!RHrE>KKK80@C?8mqdG1Ad>60~Y<9ct zHY++@EppM}(Z~Q-#-&SiR90MAQ-T#k1;WAE6Ch*q4#e?9L(x9mIGZxgz>(*I#Q z$^ZGaHRRJ{NGQr+0|9p|J(DRGf`5@r#qa;Mu`7;fq@u>~!++iY0Dv0cKxF(iWT^QPTy4|900;u822z5NBWTj3MJMb)1YA}CrxxHGCsX~P z`41joz3s-~F9tz;umEIaG{tVFayy6WK$$ZJ07wh*CIOqsU`%`jc3%V`gAjS_WCSA+ ztiwq5irCb-?4Y(xaj|F>^opz=*=*9huHd2jO2EB6cm zejBwJCA_o8|LzEA?M0wuJDyoj|MS+9nE$k8Z1aCVPn1XR!?CmZe8vcda77=$Xu&k~ z^<^A2{12Nr23HS=hr*Hm3;;75Z$z7%0l5Fq$Z^jR1Z)3z8H0k*gwAeIzGE~znn=06k;0Sd}g;HUdD@a7^h@&9}P06--Z01`cL6D>6V-MaSkJi}6z z-dG6^fB+yj0xDoW5v#D@Kjnkq0NI$AI|yp~geqBU|La6F?D@>@&kn=|Hw*wRq&hY4 zDXF;ZAAlhMoH76ijL3-0%!rK3|M&nnhk1gO`4T^9(?m$n8Gz7p4h(P-wcu{-qL8@! zLdjqOm86ZQ$622iULPsEkW2^EEy#ld1Hi}zf$$w8DQsklSSgc(0$2IJgNJ%`fu(Oi z!D;;ilB?TVp8I|9Gy%A$19PpW2~1PJTjfgZ%vh>*&U0qN{(@Qc5IU8M8AS zo!{U0hF=8u(;iuEi!0Xt!NkPyGXbDTSO7K@m#$ccHvOrzgLuVtGb3OGA#P8`fB+zA zq__e=1Z|po0eS!?{i5y%P-)U$Q6KLySx}-j)A|4Z|NsB+BEZN7f&4HdBx$&l20wd% ztgpK3{(#m-$0rApU>y>`TYKW jKcCOQ7K{J@0YLyciLL>wz#EJJ00BV&6+&x(YVZc*l_1v} literal 1499 zcmV<11tj_a0003AFaQ7nL7N~Nyag{oVx+xFlPH21P`&^@vt%f)hCmS>fDNek09qOk zTJ3r-j3a}Tv>Fli3!vj_OZbZlkSZ`>03m*lISBn~^KqM)WlY%vVIRFCFl>VUE7PuK z1SDQw8*g@)|NksI9LIsksw2JvW;ll~DPtJB_J}+xl#7`-5i*_o4e;QxShgYmy>dVW zBqS(7kd*x3sg8AU3M560sa~`81i-VU<<|AX{`P;y3%J21Rc5A>z@@ew1z2qYN{gGXvJ@Ckq@iLi~2 zdFc~>-uM7KKxhKq9)gw_i&p>(V1PSR2O0~Mwl*g{UiK4Gl))WS>vA`g7wD~MJsc2L zdzY#`z~cZN2}=NAx=EJFN1H^Hx8Qy-$}91REiYliFt>*fqA0{;Tkxb!z3QFEFnMx#K>rcWpg)6=5r7I;Q-4(^8~v|z-IMtn-~3~ z0y=O(=Ydt&r4}s95HJtGXSNrv#+BcA012o7;5;qt8ffX!xJXsg!50#V__#7#lmD;) z0RVymi8CT%pzi3ljPzgupaThD?!9WJ_$W#V8_oEe3X7GjkCXqk4}ysm{+-;;Ez2$Z z^6@=yVHf1DiRCLB-WUZ5ORg`>bMR_?p*yWxxOKG5`=B>BK647jUzeUBhBi zfB=Cr92%8C4uFeUf719b5Cky5Bnk(PGv>hrTN0r->Y2+;@W26zSb34&=dH@t>(lp! z;BaYPkyEwH-vyXA%#E}Bg^@DfMUSf0JC|h!tjsJ=jsCV00_1~ z2F5hH;KGG#Y$8zV24X%$gZ|(EL5diti7d!qp~x#P2OEPLxnQr~IuLfjdLO)C03Zwj zkT5W)r(S$N(ZUA|o?0A~P@l-~i$s<_c5fNd2Qt5hH<^4FiK568H`L z6hJ`!#>dUI0xXwH75{&r@G=3Qdn%1%3Cidxsxd`wRRFd77ffCFJkdhd``Z`zLR<&1Z8 zG8O=YlH7P;01z@nz$5@fx_dXnAOKC}Nn{S7@}#O!AMY(fkdYBI_doyt|Ns63SQ!A& zG6dj6Xw!3B0XyK$`ly>`S=k}=kxje{(nE8&*$^`_yW;@0003&06B@W0jt0pi~s-uK>!s(Y=CO;2IIY| BtX%*A diff --git a/samples/h264SampleFrames/frame-1075.h264 b/samples/h264SampleFrames/frame-1075.h264 index c93662b608e6977578560303107b2f98c5e86b90..14ba891b0865f2de81c27698bc253caf40e93014 100644 GIT binary patch literal 1293 zcmV+o1@ig;0003AFaQ7nL7M;?yahKwV^`FaM+oqNht?nr>x=*v&Vc%tyhtMz-~pR| z%K7jB1OdQM+zf58K$^X_m$?S;tN;|i06-#dKmb4tENH?461Q8yhEZmYE=}z^@!{T4 zOW=kZor07z@Jw7PN&>;09OVo)!3B#*1&Xj=Dj1rJm0c^qf_MSxnz(g&HfCGF7f8bET zui@mW*RTID5GT%zQFzIK0Dx}G03ZOsu92ZB5^^vTwzRba+mRp^7`m|Ki~)wqH$~69 z0v>|vC}D!{EpjRm02gE~6kTaDEVE>{93I&CKw;}20}TyJlmPIN z!`D6@W&)xDd^l_9AOnM(Mn0y8{hrt#2cQE7ESILp;RT2qDc|q&BmgqH1RP95yKrWc zh-~#7V$eZmoJaqI-~a>y0D@B9jRbA^4y92R@x^uiWT3D+EH3(f4*;Sk0tab6rC^Cz zKL9jSoH5{a{*(*J^Ogaf002NkIaUG-)NcDgd;$!^p&okD?1}|GykQVmtpyn6i~5dt zfFQ`xw=em8t#HpT4S)tK6d)pB*RpCD5{AEE0gjZk6h?6Eh9^Xx!cGI->+3MN-5KqKk^eDB;+4f#C^k$^Dw^=JFk2mLs5_!j`o2Ou;Zj6*o+GJ+3+kHBlO zSa?DUp5->YuTok<2*fCTE`@0wl>2|E3X~QJkN_mUa@4gtdN1~zz>#apS{^0W>1+S2 z{s1y5SyFlvSMLAV_%(hzy_}ZBn<#$7#0B^S_52@PQC!2)^Uj;U3~`ezg`wJ(Yp`X@Ax1bpIk3hi#G5Z zXEK;hC#Jwb(Dlpp`~Tj~%i?H;6it_x`AUjGdMsNnAh2)ofKD*@FpJ;;5ih;q48ETT z>Of{|W=uLUDtz z8xu2(5?Oy>K*Hfc@YD^z07fB1jYotUA~o-P6}sR7g=hrd%Cq7?E#N3R3QYnl6xaYL zI1J>wFkoB#W9ZF6pE|w$T1Bhym_QGPIB@wiLy87mI(|oh8wP!Y6*xN+2W%zqEdn?a z3>iWKo&Yd{_}r~ImM&|&@00IQtl|TbQ@W`it0s;qA z#pWP>sA4Q40Wsz_kU+qg-(uKFqj}@^^?)jH01!IZ-~+S(0uP`KR$cdl3E~(MNfiNM z+_!B0oDW<82m-sn0~S)i9Jc{j(}MT@z&H)e@hWhbwCnHO3;?KL5M+N#>oCMrx=H_V zDMhd!L?PUyW|Vn=Uy-9@E^d8IN|^X z#S7o=03Z-ELP$1M9_jp2M*sX;0EA#>13*W>2D3t?axX%6z%v2J4F_Wo&K8bZ7;F?A1iKZG@Pr<@&kmC1hD>7! zg#)R`R#J9R{{LWe3>FD~094S+Qqp$x|K7dQ=U0@nIG10gAN=L~05UtG?`YP)clI`n z!svE#BfbK0eRO0H>wFavaMA|=F;fMeK|NsC0z=|Rn`TYKW pKcCO%^ZES#egMc|0003&06B@Y0jt0pi~s-uK>!s(Z2)TU2IHUe()s`Z diff --git a/samples/h264SampleFrames/frame-1076.h264 b/samples/h264SampleFrames/frame-1076.h264 index 986161bc9d38b59a9122338f295c7596cf3d67a7..93cbb3f335df4a6daa31db183c14c32baabc3dc6 100644 GIT binary patch literal 6748 zcmeI0c{G&$`^WFu7>vv$42iKu$k?)E8(B*wl_lA?LY9yz+h8!3EF~0Kl2SY&ibt41 zmP(|MWKCr^^w=`Y{i~jydVas}`JMCo_I;jne&6%$I-hgjf82ju*ZsQQ@9W(61pokq z4Gny{y6e$|`ysl#Gl(K2k{tkG0QB?4RS55@`}z5a4o%Xhn=2&}QVfFgi)H}N*$=1x z(g=KM`{SpTfCg}Ax_|ac-JE~UN;n8`=^m_S_*)z-6AUUlNgcaZ&oW{fkN|Cp+i=8`G(X_-@#dOB#Vt2XLX48Z$(#5{gtG3`^S@-p~&IR`j{wT4dRi&=yQHH{x^fFpb*Z8)C=`;nQOF7LGn z-Pr?n^Mb=|uL>Y;0LqK}`1CSA$1#N@r_0+#0Kry99Su5q)}fFrz2!iftf)$6mE-Je z!v-N$yH5)zwE%8N3}Di3l=hoQ@5IyRj$5J{Hf7dxs;&oE(gxU)QXQ=PbV^hl@80dH zc|FS+IJ8)z2QpZAb!&=@dva|_ci>MPYq-4exeYI*_jVTcQ^6H}%A&?Ba+u-#hS##BXKt)$8~N#G=66R#+yIl}8Q=Q3 zF5Jz(IsJDlOmkX!l~j7)Ut>2p6cail6jMV#XCVS^kSw9DWrM6$*n=Z?5j}c_C2Mo9 zKCAyD^|SQV0EN5U(ogzaKBp1d?hsuA{-xn)8Ri@@eH(@TP|iotGY3q)wEDX zJHrE<;_$pvGyQ)()KRdJbeo&iibY53jj+5)+d+NfR0*d04EHjba>Pg8UhQ@XFw<99*OpcicP ztjstfrslGnTW0Dak%rTT?^-#+HCotmI00XygY|!75Y!QaJQ^j~qSsucAeC)LK*+)%sUvB@=o4^?A$4cw^tuQ7J6I3IMukz-c#tj8uY&maK8%nf)|h zC`#I;9nd?LSiyH7AI$9%n9tOpiF|xZ38|Ch7}CG{zZU$mSzBap1%r8nOSF1@|mtGeX3m0x9yDh&9xkXJ0OfziyZn8T-h!ahukyv8z$0RSw`j@wYAw(`CO3(4S&Uc=Bwh$S^Pg1 z$sfJYl1`pB z)J1l06m@;MOJL*=|9>v>i+yWV<9knhvcw08^js&bofjdS$yspy)XW6Bj_tEqgYI==T}GgwYix+A}4nAO&@JB z_T#ew0V`m7AyF*o?0Gws4^K%KopYyRwsmyZYEu7K1GmZ z!VbY!8|Zw60t{xuY-)skZbf(=t(@c|12-_tU_kjPrX`hOHyA96^+ox=Vd&Q_lSbc5F8y3rRm1M^!BsrBRcS_C3?dPB z)=E@Vnc9bL*K>8v*T|a2K4usMx$Oj@O>(-F{hhT&c_BFOKp%)if<(of60^tN_M*UZ zY+}anVwaS{%VvTP`Fe1CwE1MCyrFmKhzBkltMywz({MO#chV7|0uK(=d7{=`yv%PO zRM+52=*!k84%}Jg)Cm%r`tDJlsj?~<%PBp$T|Fd?KI z^W>jkQuA>v?B<0BK?e0VG}tr_$ata97bcke6~&@rZj(l7?4 zwndq~t7352tL^VfwD{@u%$-fY& zx^Mx=d)_j&ZKfE*%oXvL4Y;o^yaH7#PKR)g#_Y@+PvK^?B3W-eYF`KYgqrK^=GBs9 zZ9Omb+62w-5IHTmIZZAywY|$t9JAuXeHN;h;NdF7)u13cp^ne;QPT~g@!DLtcJ-a2 zh>kNqN*jcL4`H2+DUgQyY7sAXguGpus{QuHl@e=vj8#`t9e|X&(+cM>_L&ih3Z(hj zOoNmMXzQFWm=`Q}+%pb<#R8VU9{)CCa8cFOZ@`-nnq@5S=ZRzZp%c(9E(6_Az7H5FA1hb^%o%Cc7PmyG zK!u+D=7j^yUZ>nRej4i<8@t@C1UyV7Q~buL5xryXk`y=uxDWT9>8Mp9Y;&?>*y^Yu z$R>rW_D>0?z7iezyov$5MR6n#5M0;V0wC-{vj5c(;Q-(kb8`Ke5Z~{~i Le-ijR2#ov}Oj1zL literal 1827 zcmV+;2i*7o0003AFaQ7nL7QM2yag{of~37lmR|_On*|6|01yBX3aTEHIf`^a{t&uB z5FX9ugpGqdvG4!{1OpA;3jr9={Gp5Bqw#;k3R8@i4u#+NrcU<^H~=6B0+xZ&(+$OK zpL;d22O)-O@%Ygf4}k^=Rj&0fw8P&<-l;Y%e_Phy{1KWO>-W(0uh5eKAyFJq^K;Xm z{Qm(!!iq$O?vuSQXU_?L?*Jo!9sollsnI}`ACl{<0n@{nU|?~(zOK%*rox0AFvJN` zGP%?9l`)2p7*rro1c}-v7H+MfCMc?~D zW<>h=7?Zoo5fKbTY+!|RI03nbnR+%Ys}R=cP*M_D(*OI=2pBNMyJJrhWl^2mhw3l{ zU5*29f;RT{nC}F6AQKT>;20GQ^xJm_(3Eg96QzsAoS2XO`&dw9Ge6yLVJeNmHM;&O@?Z8GzzT+4f~^#>e((SU1VgA`PzyN>%fFKqU3UtsqgA7y$Y$O2fS2d(EtI5_By&&0F+j9! zkP_C`I^jYtLx2J?U;=9UfFxAd(ozvxx5F{Ql=TT~s}o74*5VB800$rkqc?B>BU)g& zz(E@+C>NMuXTt(PPyX-_8CF0&uu}VN;Ob+NAB?ap3l}2-fvr+xz9=v(85k}tjQGF+ zKoogUFn|^+?n1DGfX=(10fUG_tdgm)7D6s_07~r`fCT^w1|1Fkw*im{$pt1S|3reZ zIG@}9-e3U$7*|V=*20%hFA58s4~cvJnZi5p0AM`Tj=YLv6aSetzy~dBU=hF)Rub+I zC^Eo6y_#%J!BX_z%D^}Thzkn__6f~>-~oV@hy^Yc=135jMsUZ#2S6hEm{>2)V`sAX zd;&0G3qwyN!xZvd{2F=|Lc!D9tTEPm>VXZeWYMJL!NfE}R$+F@&Dq*22qmR3^?S&M z8ED3gP12iitNM&T?uM2MJ%Newb@zn8Iw8gLQd8yc07(JKo7DjW1@l11^6#hs1P91! zarh5fD7s^S01yfumJtn^jfAjo@89b%Y@rrG_(867z%U1OoN0pf9g-Q&BCZ=CVgq-b zLV%El0!Q2cK$vVI7CvNpzPbOs(=!_+Q<#2N003YUg9tPe_Ki@l8Z12Pg}~Yl24)W@ z>+)fhtjHPp`j-X)*wVt7gTIhbAi#N785mVr`~emh+lZHuY%H81lGG|56ht51_%f?~ z|M&;gq2_+;UiY{E*%^sQDjJTxFM*6GCku!RjDR_q8@jl3I89Ycf%pbF2~}Y*93-n1 zA7SGn8D1DnOLr0AMHm1G2a#X{0Ff;zQ`0}ZO#ol&D!=KM-Y6gg#&Kngc%o(<5vFkk zMNRVC%^+ta=%BUer(fJSyo?&K2;r=;|4_>l&!J52uWRhIH1^50pnBUUY;Arg`1QljADvBZ!A@DT@+0i=ffqgHwp6BOk^pUkRgi7~O&`S8b z$|v9|6L_zB-g6WG_&5`wYy%MC5ChU?gzka&$O9g<|FDKaFOmI*e&47%zN_?LkFU@$ zHT&cJ&wwJHdL-T7wia0#3*$G%0uDl9frWI4m}EJ84ghEaKo+En9vJ<5PGs8hb+GJ0 zp1%ATp_r*iebw+X@@CkQ?Z4-Mtia?WJi=3=0j+=m5C9MmAOWX2bHgwum+=K4qp*Nr z4iOB1hmxWJYA3-idb{c{v4c20@CO*^89_*2D2baq36V0`=<>ba>%)4m1BkXd zD3@IyFZ>9=>m^{F3mZ&jDxzZ(|NQXGTmS$8K>%(h*aoix954_j00k$bnKqk$|AAl% zLIPSa>{=yPMuN`&esQs!E}!xK;Goy9@5sRu8JWXB;$bl2cmsQY0003&06B@a0jt0p Ri~s-uK>!s(ZGdX<2IDtKH8%hN diff --git a/samples/h264SampleFrames/frame-1077.h264 b/samples/h264SampleFrames/frame-1077.h264 index 8748064c82d01acf1db6d44dc96fd1bed7e80574..c1d1ea9d12a15a0dedf3abad014e07a335af3392 100644 GIT binary patch literal 2665 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 literal 875 zcmV-x1C;y#0003AFaQ7nL7RXYyag{oV~+jO7_|{D z;4fL@2N*6vD*=y+UNZx$@W@6s5PF~hOW;WtQ!zl`@Fw~XKu`tLD^rXlq%hVW`dhx=|7dCe0tbgh004m4 z2EjIpbUMer-~h}32No&aiO&PL$g@_;p9iH7$P`e)3tJaFQiD2+^%=+k0S&1<0MRw% zbcALUAG{Eh#6bD941vW@{!XPW0B!&pGZZY?gl{cV|3&}+f_MN3IRF5II059#OR}fV2Y1;z=NgkiVh0F^HieGZbI~ z;J_J|4FhB~Lf`-W`G9T!P@Mf4l`0GW3N_#e#&Kqr;|2=6{~aEzmH-DN02~k^@vWuw zzAy`f1K3CvhzX4F7zhqMY493?Fkz8RSP5KZQ;FDBKDI1GLh! zk0XEpK!_2;x@24m>Sb^#10Vt*q?9paN|QySjuR&5g9xSzd^W;?sv>)%$ueJn7%@!= z{Dc-M5j5pkI+#3!0*95*1iOyIAuy&40@SYo1BrOUjEc4R)PYk`BJYJxHUiFsrH

      sO%hhlgC1?~#KAxXMOJ-rP5x4^31ArI>iI)HcH7&NR+rbb! z<`fkBwl;VIfla7P2@5*`J_i6W1VjLl``d#@sGwtXSwVrv3*b-~BUZeKU6^!)9@)4Z z|HKQH$!rJ55pk1#_IrCI1kv-t@FuSy zLAkF3W7^#0!2z@B|KbfO7@{#fXxO|YmVl3Z{0@X>LGRF`IQCJPuMU`fT8g=}Bs2Q- zxYphr@SJ1-00BV&ZYJOcuL2mK6Tlnn0003&06B@c0jt0pi~s-uK>!s(ZUAcV2IIv9 BaWnt` diff --git a/samples/h264SampleFrames/frame-1078.h264 b/samples/h264SampleFrames/frame-1078.h264 index 4a47538bc15c3f43396197c0bbae3bb797af77e3..489f5bb0095f8917cc0928de2d18af558e4c21b9 100644 GIT binary patch literal 1341 zcmV-D1;Y9O0003AFaQ7nL7G4syagX9VDX?U=AJYJ{#&uo56hph9w(M~&=&FFAO%P0 zicZ(i0l~R|3@LDpx+|TfMg?FAN+?y3B8j?_)6BpCKumC$MEm=Ar*wEA3!H!eKvV!G zUV>VAyfB1`B)w^d0y8$T(3BR!Tg@tls~x z+u63*d;tZ5#wNNwz+(ijRDbSJ0e~r)#vmJ5JTZUmmz9P90stTe7%m@i`|2Qekq8e8 zLhbJ~@t`O2-Hw1@|B2BZk39+t^&(d$z-MBC`Fk>NmWN=+2Y0CwxJI?@HKgB(z3;h9 z9S~2kLX;L6FaU3W@AMoP7XBU0iJ@8kU?5MO6rkz=b^{hU*r;9OI1)Yz>Q7BW>p%Yo z;6MtEfFQUPrife$lXBQ1kXrFM%~&eT2zJ-%G9HB>!nJ%5XaPMy&h|(>lNjnzU%)p| z3I)3eV-K>(!^GZbU@t|{zyKfw1?-=9;!bd<_~kMQd39pa0B&px1A5 z@4o$QP4D!4Cnm{Bjv^7zhmdfh2-PEtsokr<3k)E3u?NDq(Y4nc3*I*c2iyW1 ztX@gxStFP$OTYjS3m_o?&M-b#=cxGw2cWaY0gjze5Z*0NAsa(q{;?sQZ_db8 zs0YAS8M1f@7fe6^00mXJ6fAR z_3p`jp?imb%UQ@QdI}1{qNMqAITTY6RmZ*%jIiVf9v$KzJTtrwfLat73ju^&>12I) z01gRpI#GxGhs|k>CI(0bD_9FnW1a>mMJXW+z3>B8j^;}}zoNqWKJWkTcxS+x@Hhcr zfnaAeapJ7c^KW(r*f)W_KN$+tVQ>FREW`*C?WN*?Dc%IChkU4|$9x<>9X@(>XZu7G z+uj8M&Toy#zw%(hkOr>+crX9}0YLyciKGFmz#EJJ00BV&6+&qMYVZc*Ix$cR literal 1111 zcmV-d1gQG}0003AFaQ7nL7Si&yag{oVx+xFm&vO#qq2;tFA5z11PCy=#JW*= zz>eEJtET(|3Jnu$JUgeZ?k$J8Ow?ZL*6*vjsO&u3D_e*x0;K65C%>F06-7}yc(Y- zs`KbAQqI*W05<}EfKV`JsHG~DR3un> z{{~PYpa#2=-wdRBYlzOrj4%fhblK3oQap4<$av5M^8SE>iv=Q}0GblLjGF(a;7Sw` ztnsLlk4@Q^D1-3FMiDD5%xhs|7O@^b^Lv{khQ}E>%|{3)0L7HyBUT)4Np1i55Fdmb z!-bv&da}=jDz*rJrSM85J`)B&j6h^(z+eD&P#A$F=1|Z&FyfEgSd1 zK?;ZvEiDv2UEe2^5uj-z{&~5oG6J%i;O0)DEr_544^{|c_0e}v?HuN9RNZ9 zxDeoST0Ao3!94=kM;QCV5W>TIp$@!b>YWK2_y7U{Vbs9+iLYph^YgGd6ok$U79PQ) zx0?hOsedQ{EV#@7PyvvWfq;|i%MFxTEDYcRsglz|lh&KS01yKUM1jwnc(A_et%|<+ z0~`PdO9cWY#$e~j$d&i@fB^jfKnMa1X2h5CaRT%EkpYTe0Y?TpXm~6L>HyXNw-@j{ z0b>Jz7zKC%k$ggaYs)R3iW}30!E` z|I7r&38wdhnzRCyC~5gFWO>7r0Gwx&JPIl4f*lM0ny=3p!ENic%S>r%pgRFfnEzPR z2LLPtBQLwnzm8~Fxp3$kQ##7&G>~q4;5j#T;61sh=&ui9MWQ~}0{Jnr73tt7Kf>LD18z(>kIa(M? z&jHxc_1!eDNMKiDq)^}e^TPfF)K`!w3-?Ai)xByq@GUO|xp-tN1{(j~)-XZHFrN&A zu|z7mkJ*OUp@QYygJ1!b_yQyleE$g6bP^eleYAk=v4BUQd3!&z`d<*rAW1RU0U7yU zd;q3O#^yu4*&e7TP{Mv=C-VXcv8#LjKcKrN?uYr|m=llZ^YO3%00BV&ZYJmkuK;*3 d0003&06B@e0jt0pi~s-uK>!s(Zh&g=2IKW3=V<@{ diff --git a/samples/h264SampleFrames/frame-1079.h264 b/samples/h264SampleFrames/frame-1079.h264 index b7c1fdb69a0c2258f62ee4bf0ce48947468bca59..a5b748d1ebeb4a972e53c4da68536039fdb64bb4 100644 GIT binary patch literal 1474 zcmV;z1wHxz0003AFaQ7nL7HG1yagWwfoEVCz$KMFQjmU*9m7DE2=VYrBQ^*Ao)|#( zO9s1eKaL8A#gS0*D;yF%1Fi_;U@%q*6#$n&&tD04iZo&H%pZWEunXe3M%x+#@AyN8 zAkZs-fLNRW%pfeNkPPVXzHU8QGXUXi01+U>(1Et|Qz;?v=eqTVm;ep{LF%|FV!Tvt z)&pw*0RhP^fC7z)&hT0JfItrDjEk0;uw}p17y|%6=mkggbde!L&<{93sViC)E&@x1 zZ}>ms4uTd+hA#Tr^Qrh{K+^eBxB0)n%-x3zfC312lp#b(zxE9@Oq*T|*fHP%Jz{mJ zcr+7kuNVLV0bl?iSO5YEAO{mT1OOv+`vik7YS z%iH;UR8-8dgwM96BJ>yo*=ur5qjrA?ElA)1AOee>pp=~d{lpDu!K8I-s`s8FfuMc@ z0gG@fl8pMKc5Lvc{^I}zz+Kg`oF+-_`x8I_AQ1Qg#O_U6ul(Fb1Pq?I7P$u#He3JR z2)sOl@Fl)3sB$YD5)iATT8&L!S7mDU4@rpVaB`Sm2=Zh6JL- z1HimSJbVkczF#-;7lvTKo)aU`Somhc2rODWFP-ql00<(Kgds{&kc25o|Nrm+a3Cm> z1_&}H&y@s98M6=pjhDp&G#3Q`)G!|k1)6XGxJrd%lem89Q;mXuu#p(WctDVOKt-VYsnhJEz+er)6><1x5}u-EEG6nd zpf}hxq>D4x5JH8^a)5|tycil@2xUle7M5_y?~$$#p4{;=?aS1}RXc%gJa;pV{zn|%kq3IGUa0K5nHVOu&?gL@k) z02JL!K0-P9yZ`|J)1Lq&*}|tpb(Qa+`P2-iqy!aQEY5Go#YzKwDc})<97LQ^5qod^ z{rv(#f?g4#XqT*9g#s8L{$e8^|BC1U0s*Yp07y$ShY0-uE;fCc3ajepF0ZaW9x84;9f zgA7;WE{5<=Q{~%Wa^67$ z*=hzX1wu@|w-*5IPDH|Q>ma>J-iy$CUx6z#P=3OH0(0zC1WGA^|E*88R3X*{@05bh zKCcEWG6Bb$!JuXUC@f0iVQ}lk1p~yTF9Yv32#;;`4bA_{pkR#bfj9Cgo`(Pg@hlPG z!f7yz;6mMYr-gh8usi{1P*4JwjAX{7TYGp|((DoEU|#R;_v66<>->vtQ{Tt@To<~o zcK_wu5(94aIW*tv$!LWOQv%Nd9Sq=&+tLI%zx~xp5wIXVG#VGRsbBrz0QhsmTC=E| zoDrq6@IKfO2()G(^=dp+GF1R~y$nGEgV2AT74Rnr{v+q$UVs1q0YLz6CYT1V0C+F} c00BV&IfOEI{*Lx literal 1102 zcmV-U1hM-70003AFaQ7nL7TuDyag{oLnOUSm&ss9NMw6FE1Kr+0f+ISKmb618SVl_ za)C8Fhh2wL7}>xgiAe#H3QbdFqrA=k_J9}yzrbMr#xNiDKBn=1?g5xtz&_!7XL67% z@>Kucjzf?E+}K&bG&_U4Fx5qI#Op^a;KMpG<1Awulm9QkL5RRX(5wI$gck#Ahjhoz zGD~0r#vnBw1{)lnlnfS6SG>T9PH~PaFWzG}{4rYdc%}>Ls5o1WLzm4oU}hvKwWBrz zc>Jfo{$TDtXC2yt9=V{$?*x^nQM$n`Rc_HV!C7&^0xq{eN&t-!Yg$FZf4&2EBW1Gb z`^*3t$S0EJ+g2&({oaTGgEzDx*OA?M{+U#Ef|Z}I>P z0f%4!kS~EjK~f(h+`v>v{?WN~gA(&eDffXw00Bh~kr*1eW?~bJ9j6E20Li0303fRE z)PMjW@Bji1HvkleuAk=rTgZ@DL%;z506-K0gR1>L)Z#%6wrABkaWmk z^#MSBA8-Z&gAJl~*dgFyUuH%O01)V*MkB>XcSRhlkP!PB$2~S!oc}kJHNzkP5CjMX z%t9*J5~Cy@w|?=DL^uEl73{$r9smLYU;*K|V)IA%0uBm*6P=5w`!HN8 zs}#?m0$@N;`gI$nOktXV!a&UJP1hflQ21X!Bd|OHV8Uq15Ci~}SauY% z2CjiB@nQiInc>2iDx(hDVf{CRTrSh7tKbTPBCq<~Tp<;57cu|(!zpi2a8B`Cey7d% z;O+eJ==J{kRY+@&y~Nj$$|f3F1JHA0dNjFpn07G}ZcePr#b+ zJOOA>NCK9_88NLI-rfp)muwKFcoCidcc05%769tK|8V{Hf5pM;r1fL|j|JCUnr?3l z!?9R@<&rEYFXRno-jEaz?<$ldDo{L?4#iS>)&JfA4}rykP3&&Fbq4KylHU9K#uxw> zdb%33{`&fJC5BWgHp&EHo$L?u!hQtdAH;n83(x=n0YLz6Ch!KY0C+F}00BV&If=Xh UtH2wK0003&02M-S0BZ0C5Be(#>N-PDw*0171zR(aHoxukfE-#A4 zN!PE-;D#HGf|N7xCN37;ES)&M6aW3d5Om=xK~K&ra2NFefDBND9=F}YrBrJ_Z~&YN zLx$Bv$+Gp*zqkei&RD;DlHtqz|NZ9R07jS$1u!6Cu@O_ie=r6lU^%dAt6)n_LO31( z7&woXO(9#{mV)5~nh+@#(E*==NdjyG92E(#ggL^4;8AIcumL{-MuWZ&dA6ao?EFk{ z0qf2OIhsxlwMUl;Ts9csqUe4Icx3@6B7A<-r^f&v&Ica{T3^CFIm;moiFyLzo!9Zy zEC;zs)Z+lHpa^jk-oSxiekN31HW0{{v<^U*sT1VejEiq1iX>57Or1M1pxXgx42JN} z;jpK}MF0y`up9@A_Ki7cyODroZfWQPUy*m;P#>; z;Ok5Hx)8{hpe=|qy5ReWj{pgL@cJ)oarpT-E>0&%d^l5~l1zz*iO2lW@H1KozrhW) z0B~sH@)G!|NGy$}qIXHURL<`cEyw0?;4ijSl9Jb7zSgk%>2>Vu*s5z&vK4 z0EQ@j2XVB%@0e)z=gd6FfB~J*Fkz98@6pPRA+yvdL)1~{h(rIu@BjhJ?9Os>H)fGyv^v?SH=f8ziHrT}yS z9xJ9+4If}pceC-Usc(b$ssHdp()=F-+zvok z7F+;rZ;3Onf+g5Ef_e6^Tet!200ICIzzJVrFaW>+5IA4}8a9=J0U1kxf--=ep~=Rn z30O`?)1Wa*nW3sSqFw@Y4**ycA^;yYs$l7ick3_^F1V5)bSti~0v#r7NInA}00y9K zFBBv}^s2!PaSTAz<+e0qaTMez-Jyv1$s8}QL2)AE%^7>+@&8PrTw>Fg05k3Noqz;w{ac^re=ox%eKD-FT(~VyJDc9o!oDkkme=N%Egdikq{*0*CqV` zJOw|WfX2cDRe!-r5lBdgfu12p|2!)JUjP6BK>%(hpa!o1crX9}0YLyciKqdqz#EJJ P00BV&6+&tNYVZc*2W5$V literal 1061 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 aK>#_4ssXFO8;k$|0YLy2LTZ3&@CM_w53;EM literal 1468 zcmV;t1w;A(0003AFaQ7nL7D&>yaj+y00aO60mnZ3&%E>RKKswT`~Wxr2ylF0F|l|- zcYR{{|K_0h?{|o016WU&|=x^R7U(2MHAOa#n|{#q`H_Uzx{LG>cLf z_y8aQj)53#|7X)8=^#3>gCT@!$S6k=zVHA91VIWAIgf>AbZR50ehNUFqy>P4f=HGi zD*T;Wp7;R(0RZ53XeqTv^oyA*jf6ktdUVrQfCD)L7w&(9 z-pecitO^B|$_p7iUha+100;vBu`=-=4MD%)O?XOTzyZK883VrhloLwm(46$E|J^VF z0TbG2+B5Z*!~glDUnUs7L`VQ200;nr87Q0yBTgyJXs7@<00;qqg0pd9vQ0`+xw11w&GFer@CDUVKmzqRbtN=Lqr%1j0>>arC5s+hNgLat$bng3&pq#S0gkQ2z?o-~Q|%2J zp+f%!Bwg|z^@iMs-5|2#b71UHvAvS{pb*D6%%yQQdE$R|2I11!a!`vhAN%)!F=~j+ z$ZowbNBA%qYXJ}hBNWC!0?N722zKU+h})~c0dNBd@9dU>@@P@5`<^V`nZv>;Pyf^h z;3!Num;r^YUjC*I+ibB0yZ|QqLM>tN@Ju?Tn)w1Do?+oI%9e`H(y#u89|PbN20%kR z=Arl2uFwTW-{=u%AH*LKzwE8rfZxym0jqa+SO4g60+#zE5C8m7@K=8=1N-a)=iK_| z|M;*KaH&OX#o6!mJSzfee;yt-78Dc&SRE#!FkZjs;kW~~z)AoD06cmCFyFY%03ZO% z15J|fCI$p@7H**0-0-ft6gz-mYhVof1gx2@_v3h805w1Z1)Vs?!Wa&5o%a>NvfFf{zyECnU##im zKi2yJZ!hxQj{VP#P#^E`R_=}|6kVUs3Wfyp`S=S60003&0B$CL2Co2kFaQ7nK>#_4 WpaHAE8;k$|0YLy2LTCVL@CM@{Babxz diff --git a/samples/h264SampleFrames/frame-1082.h264 b/samples/h264SampleFrames/frame-1082.h264 index 106004dd207b4fdedf4e0147facc3112a0414be1..c00e8b7eeef08d16b526bf7221b658ff7bc246c0 100644 GIT binary patch delta 1144 zcmV-;1c&>R2aXAU000012`~Tv0YRF;8oUK>6cWY)C8J66x(oSjlrVM0AB_(NtVm!7 z$B4|FZikeF0VkpxUarc54flVdiMieA}Dbj_22YdhoKqwyUW!V-Ihl$$% z!Hh04$M0>nX3RBrP{ZH?@suF~u0f(rG;YuW0Spc?g8;k2OAZ;2^|R9J&oB6x08#)^ zHUWU}Wi%fRR&aExAOH|a009ORU;qdzfIF++3OWV=0t8?HAUoJ>03sT>{(#6SAT(^$ zh3o)-l}xT72|pZFhig}VKE&z0uM|1f5+gDX4wjJm*wWyj0b!rGFabhd`gArTCNN*#06@cx6y+2=@kX(vwc(3zf*+VAaDYMJ=F{LJ zNMKG#3^}MN3Bq8L&;cla10i@}lw04HgtJLHg|@Kk^nVe&e!(gRvBa}K&J4f+Mos_% z0?<$ZleidPfP?~oxF(=E>OcZ`J^A2kBeF7X_%gSB`pYfvd6>%m_rQ~+_x6?wqCNY- zodEy@!BOIDfL2dyvk#v*B^e`KKF7UZ8GtQ zAN8DxszK2@CQu2EP>2ghncR&Y@!$}L5Sf8DLWc>D4t+lmH-R?#560sIOUd%x;)wI_ z>MjUNrIQy^{jUQ@v|lPp?*Bi4GeFl}YE^l`2kQ*K;o$H9Dh3{;wOPHCrrBJ>|@CK6Jr_pW$(_!DM`5yF<7FO%UP|Nn#n8hBw0C0+#Z00;$0-~tC#ORxJ0 zt)Gy&jRQJRRv?PU^d4~e_yh(300BV&ZYHn>uK;*30003OK>#_4tO2XQ8;k$|0YLy2 KLTdnO@CM`TZRMZ< delta 891 zcmV->1BCpJ36lqZ000012`~Tv0YRD|8oULQ;7Kq_0Shh2Jpn)hR|O@!V3xV&(0BCP zR07Pw@wfmW)Bqq97?mpSxe>P4KZI}tzyKfw1q2AEvO17iClI4rtHV=(0D&;dNNFiYtD8z`VQO4A6Ocs6-~**q8tP0Kfo12<8MX2=I9eQKyJ#01yx< zqKP=U^Qw{>M8$ee02l@s$W2-Lp((?e+Ce|J_kadd207rAa5US>!X7T0dv~k=1Pi3L z004jpTt>UV2n8BYK_{rI0) znTmRo$v@zF3Bn+g(gG-d0UBElgkdM|%nPQLlzV%GGn`*d@A-mM4P%LBC(aGP0F0af z1O_0$0Y2b=z(N5)ToEV_dXNB#2l?P@M`G#y@tfZ#x7lxPnTJmOd=SF6){x`~Z@J)3 zfPeyEs7mm&0W7oIT`E6#5RE5fP16I?LFn@@|Ja~^fEpYxmUWdY{oHk? z=Htx_KhVe|$mbAo2<(}FfC6zwfV9yKStH)qf(T=)yznOIP~eE}4{iGofSYOq@2Ut# zIq9PWdGC6Qfhu&LmL*>I*gdCNT9wcB*bGeuyIS14``F+Dq!D}1!QcQ?2sKG+v!IS9 zV<0I3zjDJtdM*%u|N2l8wcu~=@C;x8MvW9u6LW^`aU5VRBCsibphx}>0B30Fz_Uax z>-k+>R?siX7DSMJu$p57?Qrw(Ce08dz@4~NlBTlX{rvP8CD#mk$vx^&00;zGTmZq> zSRVhvXhGxyd5j2Bged>rrGt<5T`$kTATR&`0YLz6CWr!s(Xn<<)2IKG`eaQd- diff --git a/samples/h264SampleFrames/frame-1083.h264 b/samples/h264SampleFrames/frame-1083.h264 index 2ce221335b31cdb8a048af5322040c760bb6fa1a..f9122ebbf06eb5556eee8c5b79366999f10f420f 100644 GIT binary patch literal 1254 zcmVYGRo;U%(6omc<&c2LRTgfmeXVq7ecQ1nC2w+KI zBf@fZLI zu5BLxKmZ^kDo_kW27A%SD=Q3D(f|R$gfLHRmipt}bVWya7^yo=S@!{jFL{uu02~Mf z7t(8%e7)ddE{86FeK4T5QA#8mh%+E4GYLC@DVRTi0RX}MFW0*gB5fVJSMYuS8AjYB zYo{`sA)uZ?n}y*x?PQ>n#`Twg0H6bdOQMMZ4@jV7?!|rqPyjmvGX)mH=GEijEoe9Z zmH-Qm3V~<^QvUnJ004jkfB=92CV&Vh=YXjohgI$X7yu}fXt-ONXb2NBBmfC}+VF=! zoktJx25>XO@Bjn>#tm!!NI;iX4WU*uM&JMpLHYDlH)i>YBt!P!Y?%j<()Ib)X&XIW zJx<^JOgPOxV@D&njm{+vR|mrpz^VcS3Wkb`NlJkoheWMd6CxfA!;*8hv0xS5Dqs&XQ)HU zg8do#1C-$cxoGPxBi6tZI4~9MK*%$_US*KLpF9YygkpFFLn}i1ce3fd!Q6NN0s`U+ zP-6rJA{?0Z;TDG=VdDTW?e_rUeAPf|GC@!OSV&R+_LH60!T*c^I=~-*?GwWM1qBim z000941vqjgKmPn90097iI3(CJ(Ghp%YF2H74hj$m03`r`0${HIRZ=mK3aA8oa&DIQ z46=?afZLA|5$c5%@7au%RbQ|WfJhMm66C<;jBRT>ud~f&P~2Ca@1cBtl}(luz*3&c zqXZlO`@iMz5I{%+zz`nC!!CXfnf-jhF0ICv&u?O6dp-zC=|MPSKYjjJ-c$gotjM`0 zQD2{6Vn&Qzg@`aEPYS@AU)PBg6fyx+y=t%_g*^ZRFXn1@gML78`J5APvPTN(^4x!b zwrWCh$J4^Oe@Ej51Rg2`!mtukeFOWD0ScK%Y4c#_m}`x|V72dn4%)AS=ccDS7O_Q? z|9W7z!~8rE0Du4!(jXLpL}bYZgTo2oL?BXE;RcU<{0WFc$SYm~fElFgDL9{N6aV_0 zV)OJMK&KO}i-G>;@WMS~&g%^3F+owi*$5Eqf!qW<>mY#`0kzuNAI3l}y1eX_6;q}W zH~&P-ikFmcl#(0@z${P3?o0&)EO0tEm70YLz6Cb$N#0C+F}00BV&IfiiD>jjk6z*td@<32C1<-D zV6G8zj!Zq<+{}#)g&}x{ql5^c1T5kOg)S3WPM=5rA0^=MK;jy7U_*Lz%ug%#3aHZ^ zgy;w>W-ERG06;`RARw|@(%~5?XbcSx?HD)}!3$9fw2JNT)&f9~>EqCOCcVMn2go}d zKhAtfe{cPq00VFs=aZw8p>k$|oBjY{f)0)@tn?_l;7$Q?;g@6VD*)(8OH~IfSAb^loJ~jLd$K$Xi)tqRyc+Bo5 zoyW{2lSG#8hX>dbpgjD@xh8R6pLi1_(TlLL1_i0%SQAV7;2;2qC@38oKpRv&bPUKa z2I~&I;K93)96o0R+wOsxg8FVhz&)CjLoQDW=^cy|5Qb_3VblpIr{@gx079i5Yp*aE zHftN>a4>K8z!Hsm55J2xinzho*XeyA6aY>qVGt&TCdLDOXs>U*z|f5lm7y(s{0Wc| z08SvU1OPHu;##_4qyekI8;k$|0YLy2LTLbM@CM_)UZSr6 diff --git a/samples/h264SampleFrames/frame-1084.h264 b/samples/h264SampleFrames/frame-1084.h264 index 282de36cf60d9f7360c2afbc2f85d17ec3e5faea..007a1d09ff3b84a733249f62a9b40c7ddfefeae0 100644 GIT binary patch literal 1540 zcmV+f2K)H{0003AFaQ7nL7M;?yaj@hh!it`1A+>kLbk3+(j5QxtN4C^5D9nJKQEf& zB4Y%2WC(-oM$ft&4B-Tviluw}=QKCk0O4P5pJzS)J3(hUyh77XQ%hu`T=0}ru;S!C-3c{Kgt zJeNQ{wlSk5qB=+;Uu7X|3;XZ4HxLjn(4|jTyubhuKL7y-pa2lH0097`&JX}#A6z<% zj0gr6cK|}0zynu^7Nol|AXNI)P(>60JdD-1*}8=_XrtiU|D`r>X1m0JYVtg2cUQe0SzD?VTaJUeTlYp z|G2;aKm&k%*15%0R16kN%MPkkvjYlWaRoe+MPrQdrn06>!g zEC3xd0Yjho{?Gsj0)PO3Ko#_^pf=ZeMPI+affxh?S_L!j5n1_1gYW=Ia1IQFc*hT| za{`D1{avRrZ2$m<$KD3ExG8~6)l-D9zyT24f+ODlVT^m&2~)r2@j#6Q!9X<(2gXi^m#0ALF?fG|&NneETNxFt{@v%#GtF9Kp$ zUuZLdNm_-vMbYIGzW?2!ap4tBK?Ig^pZoxj?I1#*CjVGCv*c9pfMp6Kq<&y1CPmuc zO5cD0AR6cf0Toa=gzHd`vJ-mv00IH(03R!NSO@~;%~dyzYo-anGnFh1Hcpdjevx%7$mZv=!s+CeZ^QM%9Voy8Xa9iUw7>)n zZZ~J}Ie)-K0U!iG5(U8&WI$>KDD;6Z;G-H5MKf;6-sAc{8P?ih%I#hV-hiYi@Blz! z2Lfy8#(`o&`W#G1T0vf!qsydFvsE2f{eCI7=2AY=CKhIL^BYf-*6x~J4XW;GBb+CmUcB%s-6G8}AmhJ?GqUg?lVFi7dJ)`mQQ6M+MkRl0! z2b340X&ba`oi+r6srvsh5s&}P&;SGlScm``mP`Wa1PFcZy|x*9i|bn6CICz?00A(1 z;zBbki3d4zz&-#8k&KRqFhPCBi8t~x5m`)hD2ZB=42`h?O~U{SWT5D6PdJwE@9_K+ zm;1m%1EEnUA|XJjCOd}(Ak*Lx*IEzt1_}EB4L~eIh6-CoLF=IyBR>D?_?T2WXyb(h zgS`ut96m(w7~+4hOo^lb25epcZJGnzo&ewpBf&%S=sW?w12n+hrS{XpcoSX%APEA3 zfK9>sgb3_!Bk%WxtyrAJKbXNz8i(FjjDoqCha2Vjf5~MR1avQDFpFRR<>3B^zHm4j z_yV1P_|VVJ#{dNShL@Ly5CIbPiE(F9gE&V59)-|(4a{vrUx1hKRa^d{Mk5>i0DBkH z)c`n8e4j*)r1@a;6pEa`@BM2JtIh1vAHVZ}q>Cq2)tSHGL5#zm6%Kv`(I3QrKLDw~ q0003&0B$D02Co2kFaQ7nK>#_4umP*U8;k$|0YLy2LTmtP@CM^8vY93T literal 1390 zcmV-!1(Esy0003AFaQ7nL7HG1yaj>$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIln-U$!k?akBraluGO@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAj1@BwS4o4E>(9PXMhX< zR-ip~HppG$Lq_-h@TfW9c!@}kj4a%pX%ZPYU_i|VgpbP6Vqh|VL16!-{6;tw#z1>d zMv(HN1H`}pUQCgN_k*CPNC8>ll+8v<(K*eE1OmN|EGRY(T zpfG+{D1{>Nrj4UuXu$Ik%9N;!RNV^s-LW}YVjRod!L z0}*=0p}8?=jsN-|kN|PPz(q_-`Z7QQ4aZyn0|zoHzr`-kleBf;frUelI;Aen>49n20A>X~^3xD_MCEU`;UQ9- z9Gff)WJPM904#t2KnO4{a3yVx9PV%%lC)u=1pom6Z$>cy4uEL{UGJtMCnDHJ>twzF z0DuT$rBi_bliX7-;u-FIP z00Iyd4N1}YwfEOW-v0;hY}*_4D!ZtD00IDER2_xLhy1<<12HyDvj6}D(9sV+_;|5(Z~#Zn*rahr;>_ zAR>T(VK+zsE?oohw+8asU+@qBNCSWp1&9DU-ZKzTzhFckLAFFRt_5$)y+08QE*(G; z;35^ENq{YN12h0Vpf6wY|A2}DKnMUJ3xU*RKt2U1PQ-t~gvNq#L~7nEZ@KWN#v-;7 zIUvH))Q~=5RY(l=emm6m|DF&VZjJ&Xas4%P07*!Oe{;R^qPym7u0!Hhrw3;|T zR35IyT@-go;KOVC1c;hI0Lh<#G3NsJF96^gMu!b=irD~ep_Wklq5m}St_0jbppX-A zHTX#i{pc?L;K5&3#Y$tF`~$9* zg028Az!#bdxGTn z3H|^rihTcQ3K4IXd6GMm>;uemJ5F``@2nqpllYS#zw^MP&nH>+AqWUCKzZRmpMf+- w@gL8?DsTV*0YLz6CYT1V0C+F}00BV&IfixSu-@??j8}jJ^=;`*&wv0R9sxmm2zBA0(%tvcOraz_00Ybb1OuXa00IG^ zkdgESW~5ud!5AfSM@*FS0`oua zKmgbP1OY$*Kp+bGS5O;kyrQq)-U5igAR^EypLmMT$~+&2iU1a?U^opH?HY4Yha&*U z+|$?xzasz|AG)w|#sCl|k-DTl@B|itHkgKy(tQ03w_00IIVqyXRtgtv_n zqB}AZm5yd8%WzLwf1scjK*R>2p8x{lpga*mp(S{Th#eNp_7NBsru3Ah_uc>ifR6xU zKo!CjAG4u;wh{yNw+;XRfmKWZb0R0d{j357O3y+fRF6IVpacvG=9Tk)iZjkE-T(kV z7)AOze$&JrKHv8QI3?@A=vo}>y72=`(J_Wc6k;491dz~SvhyIp+4x9tL!x#jSdBqo zE}|#<@_-V`fOI@`*-0HR(Re_Th70(pf+gjE3*Z3W(tsQU0}ba^G*}MWW*`6%Bme;c z>`uS|K;h2>&jAn*g<&__Tmr$hvJZZ6k9z0?1OWvBm{%ZX zZ@r4Pau>}bzKE1Q<`^V*b|C@NC>#~}*QnkCAP57=xIiJxV#o(aLBK_NnG@%p1=C1! zrMEs9n)I4`!h%14^+o5~Z=wi|JP02mU4NM< zEDp;Hmc9po6m?)=Zb@M9?yLaE-~fta(+w?@ru#q|fDki< zK{P13%Y&e&*M?&SEvgXGUnZMHKi~yHmEpM&&P>;MD+!>we2hHE5n7^PDi1j+#WzeCca*TMgc00aQ(fCWGtfu1(NEG(#?000Oa!^KYD z{1Wg$08I=4FhHZq7ZEZ&;miQCAAi&>zF5e0Z~%BEfQSMR`~!sWWu8GN2~P!xbakF; zp{iyRZN_)69A7|U9^TMzVBme*bK>%(h$Of+fcrX9}0YLyciLwE!z#EJJ P00BV&6+&!)YVZc*3fegv literal 920 zcmV;J184jI0003AFaQ7nL7IRXyakbeASvKO2!yZ(ZS}wXXbK1b1Oq_9`CcT3LZ}33 z4K=?9VWsGQ;J_fDaU}%hEJHCpJXA*mrvL|xBOsBmsV+N7p701cV+bwLHhZLDg4X?5 zd=LSg5DkC=0(Zq>psh=V*}7;71_7cawnr11M;S;>jhh>a+qQ|ia0CGE;MS7;By&RR zpZoxk>jYSsE(C+DIeeLwJOBX!5Tft^(+%G?PI}Y}LOB7_zybh58YuBXNv`5|z@LCn z00aVqR(!Y@7ts9j?v_0Siv%pLifxc=5q;o*0vrkte1{|C#Yj!TUXTDvv5U-9Bgg;( zbRYH%xB!3#00=Guh)~U4o`lUKnJ@q$ct|h=)UAN#FSY}ic0>zB1slsx0(pO6K*Hfc z^aI1lm_P_H#~K={28bOECqwXsD}VrCQa}sJOp#E~0?7dAW(o}f3(0i=NZ?Ov<*|rI z{abW3LyJxG-}Optb-TeBAON^&A%|;q5OgOXB77l%P;tHj8yGK;fVK9RoCMG)$}Giy zfhYh71`D(11EC$vn{)}lfC8_WO5zKVv@5|`CRZoCm|uzV^rOM1!|(wD1Pbx=RaA)z z#!24kr~=>sAOiCU&>NM?9+#>B6&)}DSW4(r5wCltrC0z61^_JF78Uk@03b91nITyp zkAox!?_GU>hfYN56cf|;ufEZOcY(DDO|IrjhcN^2xAn*{tKoJ4I zpky-kHD-X%ME;_bKCBw@5H^9~W?z7a0s#7CTpH5 zpHFl^+02_*5JR`q!f+X@kKisZ7;I>6Qf7?pybbo`W*h0W^26 z9(GT8GzbRpaTu1%RuXv4@ae&?kCrPY%>JHfZ3|Zr|o9-JSTxQUO}81 zwT=|pjSHay8wz%rNK?fXlmvm>#CN^Wi~x$TwXeg5>9nF7ZCy={@5_{ u!mte_0003&0B$Cr2Co2kFaQ7nK>#_4r~#|M8;k$|0YLy2LTUhN@CM_P%Xmfr diff --git a/samples/h264SampleFrames/frame-1086.h264 b/samples/h264SampleFrames/frame-1086.h264 index 8657c7b6d80df52f55f1794b45f6e7282615bc65..e196a18e1111aca5e9ff327c6abdef3a539797b4 100644 GIT binary patch literal 1572 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 WssXFO8;k$|0YLy2LTZ3&@CM_0pJXNg diff --git a/samples/h264SampleFrames/frame-1087.h264 b/samples/h264SampleFrames/frame-1087.h264 index 7a7691995cc0ec08a0d6d012bec450cb66d0e3da..d2316cf4dbb4c24b185e1437798246b4f5502f19 100644 GIT binary patch literal 1045 zcmV+w1nT<$0003AFaQ7nL7QM2yakisZxT3n*_#6TbjZ06P;S8Ozc0b~MhwAlDh2}$ zzySaNKm-AWA@uCn|75|I0x3oN@L{tSa03OYma60xCB^_4)03Z}}2NzoL1lGZ~ng8Bk0{{U7 zX$|!VfCwj)o;InDSrVJ4gf?0;RgutMW8pt0Yh_4VP8_4fEN7_A;~lDfpJK*Bo%Lz z3>SU&{M&3DxCsDoA_Ah5%mcx;17MkmwR(7fTA((Mo*2@^tNP;3Ehq$VI1(fw0Tzsq zZB)uaxORANo3!Gr|DSLjVE^ zKmq`ejv4jCn?fiBw?@4H06=5_Fb+i}_6(H;FiMuXn2-U*;~oG45Ntp201zPW?f@)M zU?3AVbSW|^5=!baQ#GN=JCEtGb3C02hp*2o-V-5^1A$fDi~^af}!R-V#`F%zv$( zmal9637`Q;0Yuma0U*kVJ{hgx;E(_aBY*&dA4dQHf|vua@LP~D01zbr0RjHQU;z-^ z&)^0@Nde<#q%U9us-;l~N(MfHLivTHg91trxF}iI0PB$#D8jM|x`BjygbJ_M=*|Iv z65pYv`Uk4bgw;Z+d-D1=x6calA%RX`qYy4zi^z7{*ud=CM7m!8c>n@kaY^SG03xj^ zoCwXpTXX=D*5oRa;B*uaR-5yY?q2`k3^UEAC#X1-aM)xpDLgCSo#KJP0ssyGZcqvb zfdiGZp%|3}C6cFr3<4V>6az(A#mFupH5QNq4sR%ZUqXm7LEsD~VloK9CD6wNQ}_%y zVW6r~WGGAl_G4sO!DMN1mOui-KX70IguV3WY(z|8zq|l}hZrf!D0$+IV@Yen_wxj< z5C}XR+FS%lOUa2rhXjuS91aNpcv@{S(fD)ymR`;{f%OwUWFczQ<{9SucRUU@5a_hn zI3zhGfJAKQUf_%(h*aoivcrX9}0YLyciM9c&z#EJJ P00BV&6+&%*YVZc*sq?Lo literal 994 zcmV<810DPT0003AFaQ7nL7KoCyakp7lMaB6w^GGC0Du611C$PX=>mw7@`TneFM|<5 zpy2RU3xb0T01c+v5=DN9z5)WA3QqOZY+Qwsb^ZV%&~j^76iDhvdRzb84wL`{6a-2@ z21E1K>U6)y{@?&H04#{d_bnA1WF^mMGkhMDL6A7$kxToW5iLVFk$S!NpaB7osj(nU z+fv%YbJ|~l4U9$x)PNNMrG!)wM9IJdC;%EWm^@9yF_U7q{xARp7r+2QAOHj+zygVy z;_nzqiXOwk-yeew15`ituLPz11W-5u5D$bLBf$Ox0s#8r<5L;#e&7aSkSHl;9>5V2 zMA0B(zECi??$6DeV0Pdn0ljl1wYB~-XFmlXa^Ol|Ai`{5Kp_b6KivSpXB4pWpHO1I{(|d> zKpiW59rJiPP;!4N(LQ|xSd5i@lI4GQ!CA7Olbine;atC=ygVo=p~D>p4NkTOLXvv2AEVE>7G<< zAU?wq*k}WHh|0XK=!>1W+&*Xab8w zZ9fjjkCvc#_J)8PLj%C1pePN3kjNcIi995e>hg;&Kv#*eIbD!aw2@?G1ttHGA_5># z&HxS^G5{bXGyFadlOEaGH~;S|$d7WaZCClK@Qdb48~{)TB~(B} z>)c>sOUW=OU)5KYb1#D82w+JlIRs-MAr?`GA%a=YJTO=^TR}zt=s-rP>8D}DL z+yTLO1}*<`2M!Pia*@@*9sqeXDsW-w0RyB370OP`0nfnrLjZW+xB>uz!LnvfakQHe zNthgihyMU2zyPKIN78kGT;LMKG)b$VAkG(73TWS!Ci0sCLih;)UAIH90|>cWhtoCD z7-#drs-rOcfryPa0i|sA18^BR-)g`H1z<4z0gxuD38G!_VYn>;AP$CfWl7jcUKjqT z$vj=UH@fcuVcC{m-QZSx_U2-|ii)m&y3>~(ycU8?xn0Utzkh!EBG3zfw3Y%Z_sT7#Yf5n%<~<0L+GB&8Ri03xye0Kfsn2~^^6?baq2 zvk=|mSO6d}hCrX;E$zp)=!$Lw6=Eu`Rhc4}%wGShKnDT=Mfj^FpC5P_O@Ygx2&NSl zN-0ERaSmi<7GWoFshPjP0RX}OFAll*krQa`+K~JJGL861*Un`&!$CZQHw(gXTFF5t zkLs@g0YC=_mqii+9+5!F&C2`&pa6CTW(qNd&8xy84QMz3mH-Qm3V~<^QvUnJ004jk zfB=9ICV&bf=YXj&hgI$X7yu}fXt-ONXb2NDBmfC}+VF=#>XZ-Xnb2YQ00ID`2DSen zAWN$T(5o4vZ~y`TBM;9ap}RNCQAfXH*2U5CEs!3)Z|=2riZ0gF6|n??T8{PMLR zz^4HVuQ)znzL*b>Do~;R{s|bYrHVWHRbT&ufuRnIOFreD#lQb_3lpw5yk#JL_pI9u zd0+Rx|LrVB;pc^5pudR({wOE_fDlvw1z%}QJC&?xEUxVUz;lBHn)7RCKiHEC|NJlr z6bVqN1q}EQlNNSHUBn?4j(1$Wq7#)|p z{0hU?)f><7KpBV!8=*7QA;m#{jQs)1aDiO3b(WLsUP)0mS*LfYfAypZ>6rqW$eJ zITykIi~t>A55RVa;eG;wX$n_t!~9gWYrYT8l>htii~s}zfS|J=&xD2_nyFc)3^*fs z!s(ZUAcV2IG$@ BFK++< literal 1157 zcmV;01bX`b0003AFaQ7nL7LziyaYSINCN{5+5ivUpcKk3`HcN!fQkkJ%>Xiuq&kD* zKpBdFF`rMNpaOVh`{KbsCkUhg(cHyfDxKXh|4?3&0TIqN5lh zcmd!z3Ng~5!Y57xyh9mWSsM`e0pNA$qd_F`r5tp`*;9}JItmaR>d1J<0Ap-H-XH)F z0ssyhR_E|NbEGYrfCG>SJODtz5U00LwsFU*pv=)45rpssJv zM6`M*N3U@RzZmGlC1<+Y*jPo{5R?B`zW(N9Xf_mu=RF(|iU31QAZSYAHI(V}|MPd+ z&c6f>A;(38H>ga+_P=xA@Gli!HgkODClG4PEoDkvG0HYAR-RO0_HZ| z;(}t4IPy6S9*heQAS^SOh@pC-S(pIJ#xOMlHMRv0iZM75Y_wPypl>}Mu32AsyZ`|J zkoZ^*CL)P*-q~9Pz4`%;00IFCVh00fN8oaT5*3kj0096$KnMW9Jm!qdQHfj{pWK82 z3?Kk-kq6F&j{&`S3nk0Z_#`i(n2?D?gd&7T+-BM5XwJNK$G8w5N3ku3VV|7?^Q2(@ z8nJ$XQM>P({0I{-O=_+~_to?Q$c;8npScV=k+B~ui53-tzF22!=yCl{krn5f*pMFr zQvvgFD-Cis|I6_*wJ_kP0v5Hu&?;Sk)LUYNe*5$iGqSpl-b7dTz669iC2maIyO3}H zpfo8Ram7KDp}+50wi~Hms;~e5`Qca-UU>vrbb>n$z9k{PclP9n6-r*BL1p(r+k*yD z0!!EXQ2;8SQz3jc=#DqH{;VfU^E`dkUdQw_FX!MNcmMzaK>%(hxCXBPcrX9}0YLyc XiLL>wz#EJJ00BV&6+&x(YVZc*(&6aW diff --git a/samples/h264SampleFrames/frame-1089.h264 b/samples/h264SampleFrames/frame-1089.h264 index 84bb0156b235e9d5b8646d1e3d35f07631179ece..c9faf1f74d762ac152b23b768a2c45361324a6b8 100644 GIT binary patch literal 1440 zcmV;R1z-9A0003AFaQ7nL7Si&yaX|S0YC}>Oae&)A#MQLd=s19umT7tkXhXZ00!3D zRqjs&b9i$g5TAeRf;;4dBi3)Wn*kwIVG&t>mG}SkSUUtF080Y_{8C&1a1ujpL0ACn zAAmVPPql{tdK-bBJTJ(P^K0(#ft%j|1xzA>1D5-bPE7nDj647kj&TYh zqS@L+6m7LUGC_*~ZqkhAI5IHTO!_dY2@c!lJvcM;f-u9F00IDD03av;0t4U{OyEEq zumX@d=J~yV_#G-E-~_QaXzA0x@2=U0>B@4J`d<|lGc0CO33?&G2LKPtP4vEN+&vIl zk-z{z1y^_ylb`pvLA?kXPgJ^YAn_bu@!<`VfdIv@7D+~VSN3f1r~cyr3xM})Q#ec& z%k~kV01ygv0C7E&maG3a5rPI^Z3|WBlQvub-ld?55D+Ij)wCw$k*sxAo=2L0Rt@xM z+(a+VBuHCv4R*a)pZWG(q|I^gh@KaMbAS9ee4GFqCT$6_m06Z(h=Q-_34%}nd}M$D zK%ySU3kd){m(O{C2EvRmaX;$Aqp{H$+tFI10B+|BTv;Vf{6k)VAeH4x^(`!qf&zSx z+Nm`}TOeIWyaohxmI6zKuZLzagw~1v5)@?Gc?t4L6UBqz15j`n?xHg|i|t4mN&mKR zi^dmAOu;t}nSyZX{yrbT01yKo3KRJ6+oP_eYa#m3096-(MiG>u>xXla7}s=LoHM=B ze^=lDklcnNir-NRYgBu`i^m(0|2vp4mPKbq`$wsO@ISyxB(V8?1>Jv(8><I?5B58}xTp!r|`#K>%gCviOs@cl>#n-~xP zunO@ufSigLA}{W)GA8Md~%QP$2B`oIl0{{U4=EPS3f_xe10s=4qQLo0lInziio=^B; z60?p0G)p=YM(MeCh8TvLc)_L_VwbW)4gG`aIsp;P=2Q|2GrDddfCcHD3tHtn!T*e3 zAO!-MtuB#f+%uw~2%|d=D8d~72mMd{%vlphnE%KK6h8fnL8OXrr5Tv;KNJ99C~W3U zoylcM4iN?bDY}?^gmd$F00IH0JOD|vg-%H0E8GbmI)RkbfTF8~na%k4sX%XqBV--~ zLP3JwKWa$%!^BBq$Aiw7|1lAd|HX6w0RYr&03;=_8%TMtz1OzJ{Z6GRUM2vL=l}u) zurlWXP|bzM7&IOL4Vj5?NHOc=3}5R+G~_OGIY{vAKvQtQ0@)~IZt|YHkAe6j5exkO uegXJ^0003&0B$De2Co2kFaQ7nK>#_4x&f=e8;k$|0YLy2LT-R+@CM`ev~uGB literal 1609 zcmV-P2DbSC0003AFaQ7nL7M;?yaX|S0YC}>Oae&)Ax;3{9fW_oU;_eYkR&Nk00U*S zM5b*gf;)J7FbHqI^}!wSMi{o6?Vtf6;)Wd-2P^OY`|n}cArJys7!Tpn-~q@4y3jF@ z0DfSo03m>Ve_^NtP)i;1A|I0ey#XH9C3I7Eted7$m<)&Wf7c;O1cGX4Z}>F^UWO|G<$Gs!3qTPGa4C!m00V#kfEEA&03ZVm2GdLEFDQUG5GwGloEAXORQaDc(pPN3#s0i*&-+rMi=Fem_}#eW1QVne&7{m1}- zOrih)Kv##BC;%z}%%iXVmH+|_^Z*I~0tV0k1;8~8_yKS*Fet`Ag_9%z&D26Mejn>r z00IjN015yC2ABW~0CX8Zi<{5^3<%^Ddm(>KESxpB=3oN?g{+7^uLKk!=6o_^KmZ^! z002M)05-tD<@LS)%+Z7ZI{+2AU<#qov)=*`2tbn|pQl1EFro?P(hY_nmy3TwB;w5r zH{KuyP=cBuBh9%L6O}zF=4c8W1xb|9lvzk=T$QEqVgyAXa~S|b6tV8sCC6-JExxwg zxF3N8AmNH2P@z-joFsgxZ~$R2Tn(+A(;qm=EPx9!f#~oo;NQ1{$P(b z3Fud92=BNU{h*kYmr=UGEmdtMuvT1fK&!FP8h}QKwJ9GN|Nd|*qBdJ6AHUy#133ip zSiNe+Jpa3d00IF(BPv%wyVke&iHslN;OLDgutDUU4A+wm4~~{=y&2t^cfcP{ltyF9h$i z1RwyJ0AK(h6e{#42gt<)>rLdAjsOe*1OdV#Yz#d<32-z%uO64ds4N~D127jsP!~oJ z0l)x24O{>f;0|0XD__S&>hE2RRVtuijSBb+fG98F3+^G!0MYxjZyrDp9sYvMEC2)m ztjE9rL7V~A>;Mdap@)ESo@m%-?Dpg?U=W3zXd1v02oxE{00%ezcc3$X8=4n#Mgxc3 zBv9iWf&c*la$-&Z0RX@Qc!bCJ1rCr+9Wy%+M4yFp_kaK(5CAYi2OQJCIj{_;3|q)P z5GKKB54DIE5i$(c3myOl00^ES90$kvXGz9p*iJ6X;K*oHDi8$Z42<{~qQ_rg+FHmA z-VRd(pbi)2?wUXS{`mn68=EhpLkRlm?cZCxfeF)y$3NfzfB+x{073%mxQO`Jg)^r+ zLEr!xzz8y^c@Qee4KNHc>OZNNAcRWa9BC$&YhMNcagY00;weF#r#MX$)KclK3wW1TerP3I~oe<6saY z$ZG;{n_c+=JQxQo@FY~dEjE+6DSF4eGk|aseIB0)un=#{Y{W+P00IF6j;qucs|Dzn zo)pKx03ZVcywZnG+;4Y1Y-#!NyQ*APF_<)fsI5ZEA$*1g3&22Qgah;?UKPa4{Kz6v z`9L&`BjrF70jsYV0K&j+02(Qx%{2sRDn;r5zW@OM<&gje#&){kVBpSmfhFsUfn!qrN^i^RxCj{1-KMbpQR!`~qaR#);WjPyf^o z$r@6`|9z!^*aiwCPg7;z|K3Qr!a85K|M|(SyeoYOB4{Z2v%aGt9|b+>{NM`G17p%k z`|r>S7vfCiY<%6TUO)pFujF0#=kI?H`Tp@Sq@WL*N{bEt-~s^k&#jH!=B&TJZ?B02 z-fYh?9>BxT3c#Er`TYC?@c;k;K>%(hzy_}XcrX9}0YLyciLe2yz#EJJ00BV&6+&zP HYVZc*3DKCJ diff --git a/samples/h264SampleFrames/frame-1090.h264 b/samples/h264SampleFrames/frame-1090.h264 index 7f12d2f9e6f63c7c008155f7e82f970526ac39bd..79e0226993ddd8be47c619ba2bdea37698d5dbd4 100644 GIT binary patch delta 1227 zcmV;+1T_1b2;2z_000012`~Tv0YRI9PZ9{l1h@cy zX4`yIae;UM0sYUM`|2P$5-kgFn=N3bbTF00W~C-HB)~5 z{J4v;Jb%Q68!wfwX+qAbT0~y?38$=tu!YP!lK249d2W6Gx|tX~X2LbFD#^sRvOhmO zl~!=`PYS_Nf_`Za;Yz9G_kbXOvA0Rsl##=xP=#B2Zr1UEe%u$x$ z#_#$H0dx#NY8mhVE-Hh;6el)n4G01y$N3}^y>v_hlzbT87z zKz_F1-~b2}RKNlm5k3Fx2m}t5o`giHUVHmM2rzOQSIwmqQcfiQ002N3Mfy7S;V2+W z_~3^HkgSe{qt?5zJ`}wZ7-eyVbA)+CI1C0E#0SiS2WR0S#Se+tnPN2sfVzmE@5%sA zDgn^()mYuuZhjN5b}7=Jz+kT=hN7X?OX3LvNaG!g(% z1P20h_>uw)8tYooS&(T@g#h8F>r-TVCmTE-G!M*31GPM0ana;B>_)SQY+8j3CyFxL zihuY&002Np1__HD@WHMs75X5A&T(CTnJ6p{%iZ3K<*U;(4y-tj)H$)8H^ORs6$>%nr#&S01z^~ zHzGO7n)z)0>%ou!1ON_01_EMSSz=o}9D|Rr01yKXwvq-JtP#Lkm5gi?C!s(ZvblW2ICvL18e{Q delta 1032 zcmV+j1o!*g37ZHE000012`~Tv0YRG}kqje$9{FJ>J$?-RUVkJN)1Q5gt#i`&ju8T1?<1=^dSCpU)aIKoz zZGX$aP(+vE)?YRs_s;|%Zz)zxnE!nGP9HK81ta;EJMWeh8r9|6-uL{T5rUq=k=IX$P0!R`H7om1Q0|-nrOaG2203U!5HEPgw4j}{N=%!Xd6n4Aj{#=$M zlVU9O_A}mqB1AcZ@7IN<&Hk%*`}7($5mggicAx(=4bLC(AwihiuJh6nXH_jCd*Sw) zU{#nQdyen#05oFSefRv!cpmwG68B(t7s)SFe?Cg_68Lfd?s!%Td4hvt)1;KYupnV@ zpr`^2V~q(<#hx+{NAHHD8~_Fm@C4-r-9WGgJ^~>?Y;XwdQ7S<3VZDx)M8j|U8>2M_ zEiYdFjW#V`f-t}Z!w3mAPl>|7gV)c5U;`jAdIc^ZPa}d>nqLCYBY_})!IU6pfCCIa zkJ8hb!{Qj>bJ#ASlINXd8gRr`@s2!oLx2E*pa2LRc2@ubz{p`&fB-;XWlv_K0^Sef z@^A?RxmrO1f$`458AY)S@%#G#3XT8*0vCn=lotR3Fk@po!Gd_l2NppX^(}AQ1^^XI0|ZKV#?$P_4JDuV0+f3I zO_Yc7q5Dzh0Kg2uK#cZ9+c*{~b5DSM0FD&WKz6Wa8c`y^k<0)D082mu0B{ODv$Ees zFAZPs00;sCxGa;V5Xai|3(HBt67lmNeTUzs4*<oBRq0q}E*7DM(LBGS?-k^k&o8IJ$t zs6sUj@NNEhxB^Ll0003&0B$D82Co2kFaQ7nK>#_4vH`2W8;k$|0YLy2LTrF)@CM`Q CIj=wf diff --git a/samples/h264SampleFrames/frame-1091.h264 b/samples/h264SampleFrames/frame-1091.h264 index 532ccc26b4f95e3b8fa23ecdc112a406130250c7..c746d11fb18b3c9e27850a9d814cc69aed8109b1 100644 GIT binary patch literal 1951 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 literal 1555 zcmZ{kdpOg39LK*uyV_3}b`WODWpk+|NzOWE^Pqc5jzcBoQZ&yhGL-#nDKXMir<-gp zoucQM(^YOGL^pEjrpq#FG$*;s*g2>3-#Jg8Ki<#hdEWoL|9Cww005**|2w=dFy~j# zrxTeHbub&jt&csBVn65>0zG0819K~n9;ADob<2|I@xo2!DsTa*HmF>H2EnNGu4PaF zH%I3>E|dDY^>!#<`=1+*hA4z|9?0Y=yYMwCt0E>r_`2421=Lw!LuD&N!SZF_Kj{nqN|$^>K+hXD-VPRjg`ysOF|-7Gi=p%Eb0_w z0?dqUcLngCacozeo9S_HR$zhpnWDl$0108E*c&=#1X1MzND2?^9oZ?i(DNS9)H?gPSev(H(ZwxwsmWmo zu86TJ%+Z0bEk&nWvUX1AuXZb_8LUjMd856L;1+uL`k4lvNXfp%DGgbZmK5CLX|#Eq zXSjbVhVG69aTpNqsw21;sVlV@8aJ@tHP^R~*|G4;m7BybzQX{GlmD)-9}rtU5JEfi zteW+V2NcL-ahDS-WQ#uoKtKV*C|IPQ5LDK}<}Zbe8+{$tUMqc&Sqre1Y=2`+>|W6g zq8H=B#ye&TJ&~k;xdNqvDuZt(wP2bLR%2k7Y|l1SF%8Qtu3nYBU8^VI2KL9HN_;&V zIaf{7aura(!}o6}2X=Y6aMQqhVp+oywTjLJ6be~%_;i7s8P;e)G}(%95ZmK>@fkDm z`XhR&S&}Z*+*iWLc}&~sOEmt|3N9`(EbEk!zne_0yZK44QFqqLx%$2fwW!(7Nv%6r zoR)aTuu!I*M&K>C@{Vc8WvF+(UxjPQ)zYOI#z$X(hWS7~#VIR4>ENIpBR$K3H-522>`u__rak KI3Q*itNaVe($Omb diff --git a/samples/h264SampleFrames/frame-1092.h264 b/samples/h264SampleFrames/frame-1092.h264 index 6f5b151b8db5c7eb453a5c081c707d3cbf400fed..51de435b07bed5fb60c35e82472fc5dea6650845 100644 GIT binary patch literal 1299 zcmV+u1?>6&0003AFaQ7nL7D&>ycs}D294kVfJ3zoM(yleLK9+4c(9}ab~r{W#fVZ) zpt_U}C&K}7JxDc?&BJIq01N;D0EYm0xd+%n;@}KQz*WGV;cwkS4A{whAx%DAz)LeW zW*>6VTj9jQuqLYkFc1_J;Zn4~_=_pK01m3~>4Orzsa~^Ln!5rz6pB(55kLRx3=uvc z=l}=^EY1KDKkxPxPE4;Szk|w5eKaI4C?UN$J1yD(KpLF|S4Sff=dJ(9YdRQwk~c?^ z{ed1+3rdskbPPx26CCw~Tj~K(AaJJ$-~dj;kPAQ>7eDV`O?Y4tgIVfpuYB=vSoj`9 zj=)0K06%>^A97x1@%~?faEuv(U{nkS8-M};0DuSr3Pb79vEIppECe!(=itM2BtU7j z^VMI8TmPZ}2tXfD(IGq6gatZj|J(o&F`P-HsNc7Fd*T8Z1e*OhG@|kFL@FG0RW_A zzyLr90Rl*x2M%7|1MBz-2Mc!(B?~n001yG%8~_9d04eDZRPBT1{uIQB6$L(_!Wo(9XL;hdvSwNh{Nz$lE5W9b_fWXFKUixJMs9%2Jg`tg5 zvzZ(({`t8OP4~U@|N0~b=IawL2$BK0i^ZtvC`X49V?+p9%|z}Z;Gg$A9wdS-u%=)3 zfZ?(zy%qg5|F{kVY-IxM&k_V=>iC(;e)yC`zt-LV2QQR&R>FD&2&gDi2~rsJrT>2P z9Chm07|Vgr!DGR|7DWW00PL6m5vVu`d|2B;QxXrr0E|ebD;ctt*^9scFa@yhr$#ip zPZ$ZS{ozmzKwUDWk~(Sww?Xg#0s)`^AUp#vr9TC&02~hk^dwX!e7)=f z;2dDV*~3YL0--cp8_ZJpF$DmngCJA{D9@k<3IU|izVYA=fgiivj6OgF0!JXgFey6v zs35s700@Af9xGNKyRe|xG7CTm|Ni#`25iHF(*{^lhO*u;0h9nasseb;a0LJa6~h;B z1{Ff3Rl-Mu!ZnviWe?l}VyX-PX*K#p13>oMNB6t{1ONyC*I`bB!e{!=dLnp;Xm&w* z^+`wmnk;rCt0n)O3c_3);CL7frxGI8&(j zDp|Ou00q_<00amCDcKQR|FG~1D}bi+j~7pV;1Doi$AdITS8~cQgxz2bUE+M81vY>% z2?kR^@XcojFhBr78~_9u`Y-?l6+j=)+IIs00Rk`p5FPwB06rSM{(xi^;5=;I``7_G znOs5=gAcvP6Y>%v6riZY4VRm>m82G65Cu@f^dIFyJ|Yqsn1W&oL!HWnTLEYfEJpr* z3tkJ60sw0b_!LA;lZnBF5B_OV7cqSFdS}7od=rQV2Da)EEV#2B8~(Y z#edT1j&*sSyx50NtP2N&1$k*Ef)}}f+;YMJOr^Dp$FEKQ_kckJIMytIC7fGWO2LQk z<_TOd7$|MDxeApU6%>OG0Eb`z00BV&ZYF>RuK;*30003&06B@E0jt0pi~s-uK>!s( JXaH*P2IIc~6mb9m literal 1151 zcmZQzU|{4l01}R~6QuS?I{32j&I(}I;Iy{m|eK~Sa3SKmYvm&p-eCtH;J@ zna||mqj0F;cgY71sXOh4ry3L(ydDHca~MR=bNteA`oWQa3=134rUwfSF)*iYYnd3o zNxz}-9IJNKD>FT3Ppkh7f*F>k@3>TImH+Dgf5+~{z{Gh-Re?G2=j&Fh_~icu3=$1u zF3Eqyx_UneJ>N3Rj^9h+giL|Q(!b|8rY$(9;(sN50TZ))u#&^jZzTrdV z^#_TIT-V%w&p-V~u#iH?43^_ea&s1JU3%^CgT#O*f%~Fc>aR#1o1LL|{?`AbQ%rBP z{H0cST70yBka}{@o=ic9Rl@(bBsvOOe$6_szCVajufzB2-?VcLQa!7=Llg=xxU)69 zS@vL(l=t^1f}RtqS9aaL+pzPZ!Pcz|44>HRw}&*yHFX~4u6w|Af0Of-QX7^-*2{xW z9a}SX+oMHFP80tBt0*?H|Ig1-!{8wBgiT7JctR7ar3RZE);NJjSBoWka4+wc_zU+~ z6j>aW@aQp!Ha4)8UQ7_@Xj@ax|Np-P;}ix9^;N5bpC5QtadqbhgEsEe5*ZC)z2N=F z^cDaEPMU$CfkVPB!n@xpUV`-y;~N#WLPo=R3xvA`3>dD7jv^;`zs+o_Z?h(N zT(g;qE#B7_eULEj;MU@w5F)kOa4L7Y<~{}<7J<$!F9dR~C@8)!kv#HVp+Q8h{s8O5 z;|&`cgbz4z3)?UUh{&=}F@X`_n z76v8;5so?XXa4_x_+F56)+OcA`h7e$*fR}0f*O=1KqU%8p4ttz^$Zo@;)TJoa~tF8 R1JXTU8BwR)hO7^4j{#^D{J{VK diff --git a/samples/h264SampleFrames/frame-1093.h264 b/samples/h264SampleFrames/frame-1093.h264 index 1a45ddf33dd37e164d208e9074637598d5f661dc..a26b0abf1e5deb467aa0f0abcc80212fff37f7eb 100644 GIT binary patch delta 1275 zcmVrz`*ey_MYm|NsC0|NsAybrNIXJoTIwqXpB|$nW~V zU}_1FkrH14A`pJjNu2b+roH^`?FJs~N^$SKyKK$ox4w8+;(|fh5t&9Gv$z<>?(Z&L z{rc;?X`W!*+x7vvnN5;5FEeg@O-RT z$%E-FoBqH6Kz|(YzyKf=77N`p|LehoJ_a0v$2O_L=@1u4wNfoW03a|2$5;R~FY?Er z2S)%5+y3MS4j2PHXzL&XfCtmV=K>(~06=wsQJtv$Kn^1Tu(ALuZ{7faFz_N^;r@1* zYY61<1;AVYNk9NV4B!QQN7@1+W2|G;yE*{^5I(LN;BSr`B}K-;i`Dn)(LazgSe+N;-LDC%4-|=xCsvlp!!ox_q2gl^U`i}4ceSa(S|NnRa(=!!M zC0#%L;431@ed^;t4z0&dnNfd!1PDUt$IVyviJHv+`=Oj!?uY&T4w3O9e0f15za3p0lRrk|PfB*l&@SFkG$w4{* zZ))%W34j8FS#+4t=^rdU2Q&|!0R;j{4O5hMmy!(Yk*#;;MSwC|026~f0j);LzwRsm z5dZ){F(3eSSPeojrtAPa{onzB1ruSN%wUU82Me{xlC)kCKmb6kWA0I403cQX2;K=_ z;QxRC5ETF*HrgG0@8#*mx1L?S-~bp14T(y111<(a>?E@>SImquDhl8NfJa&`2$}1w zhLYW0^8Cz(VyKP85~isE@N94@0D%I*qN0*wqI-|{F!+d9livaslk5TsfBt?FFYr&| zf`AAC1wa5r_Ju=vUe1E*?%)guI50`CHMVp8h_Hg-!X5;uRpkuu5R~l5|NDRd5CH%< zQD}sc?Rs#~x+#=FtAp``QAlc!F(eH^WzdH&@M55_A~WVTDT?Dilv; z_{9wo?Khc@Faevu01y`tQo`8@)Y)}q)^zGV6MSH9;YI>iS1hW*Fk0d_ScqY^_J9CD z2mk~aqyTMvAK)_50AC9r@+wtE{f5PV@4_$u5C{W;OoKlW7kXx;Eq2&2;0SgA00BV& lZYGEZuK;*30003&06B@G0jt0pi~s-uK>!s(Xn<<)2IKtmC6WLD literal 1181 zcmZQzU|{4l01}R~8>IF~tYK-WILN^exx8cJ!%(*P-v^jlirzG2NQF$?b0K<9TuZ8h zd*1W|-fXrUGCq^FbQg4=_LqOrVp&mrPDSy+2WT5phXCjH=l3~;cs#^EoEn&d+P70VrB6B|Re7Fqw>V9HpQk}{p~h(O&(&f^F~XDv9wR~em;y-NLVmc*A#QcS>PGJ!7VG0Z>t4XL~49iS!h}ik^UFzZs40Q~mHp_y!xvJ)TY~Yk(cx`#W z%4yr`S_cM>7xg_3lB-pCgc#nf{j>GJj)h|J79vau2RjTDB%g3FaBy6(eq-DzF6J`- z_njUFk?Z^}+*d>wY@Yn4fz|f_0|y%eR|ID)*AxSlg^v$U)O{vAC-q|`)d*So~b?*m&yfk^gJXBWRY>=tZBCpPi$A7E>EebJqX^Rbu3%ZaO| zEnqn4#2g#TH~j(k+m6adKqDEL85V9W(`bA>Pch>TgLH%A2d0LGCmXJ=Iud1}lDNLH zOW=jHbGFX8>*C$7rWRBfI&4zbjh=f~u`qD;0|ys=%>w~Ui~&yb3fX0fjz0MLKPtIr zTET-qjGJU!^c7Fm{@qx3K9q6axw=RHWSQhdmmh!L^MUctwpZK#|3A?5*R%BU!vFtY zN9;ST`ub{GgY0+lkW=%&KRL#?+iY*oZ&BmO{ogO7i&d}uzqa}PK41c4lOr6(D)Hyk z#kgEq85m8}^;>*@zu9+CLqmJ+=gYcs9T(qU608xd?DIOCx^+Xu@g<7>f8*b!xwScZ z_$$8n$fUu@ZF%TWxP#iJg>EyS7VhJaarW!x$oHGs`L^z1tW-S9BIkz&DI7=G+-jJC zAy*#26R_FPKtZ=YSB#lWqCk7i8|7 zff*UcyJmFUaJAi8$_|WgRtp}*lB=x#+jRFxwKmArzhh))JXsLY)AKTxd6Oca-iKt4 zkW)4iABCrASLjqf0H&_yl?QhAZmn4`V~LkdpR@a7ro$(=xgRNM#I2c>#$fodhu7h4 z>O$v7-RD@M*K&1TFrU{Ssk45^JqCsb4_z_l&W=Sf-=~Eg&EM0I=)mBh=qtlFSH5u< zhew$E-vtaDjQjX1Wh7 m$)NIvAy4fA+j@oyaN)yX*|~#p^#SP~u#Biv9z)g#w#NWW6C%3+ diff --git a/samples/h264SampleFrames/frame-1094.h264 b/samples/h264SampleFrames/frame-1094.h264 index 94d942dd92539c6897ad3d13b23dec905ae1ea7d..f4084f167d0c04359914ff7334ad9e6ed0b0649d 100644 GIT binary patch literal 1398 zcmaJ>doa{_0RR4W?L)iv5zDTmmGxX|!yQF-&%2JhU8aYeXEN%-N)JhPS+e9<($t|u zQZ0GxmN;Tbm#OuNqT84_=^V1YKo#X&;c(A22sq){_8-@A8t1eof@-zqwBYRMhnFR;h4wQ&m_(soR)i}>{E z-RJflN;|1%#=TV#8qz+^0ls{OI1PjI3GP_Gx^qsV#~EO1Kub3w=1`9zW8b@sO#-S} z{bpHA)bpvnvtywt2OQoWlw8+dG#Yd}2QL(u+?F}=J~l3;`z*r$1{$S3QsElbgbAmS zqOyoIF6U8=V&+2EPjlR0Da>|VE+5R?bn0>Oc=si@E_R^PQa|qP;<837V3+s*he#ti z!$VmZJ`|A$_=rxgSp)FNEQ?f?@&Nc#CiY_r-ig(*bSPJA01iuwSqBM<*G!CFjH|eL;?b_K=Iz>gY9=)plVr0b09)7I^ z5MTk40e~Pi&XP|j?1%hJ7E{L+sf3GUHL}qqc4i1Zds4~%Ca@);wd2iuUXa7j-+B(Z z%I;&4LX2$4eOF6;n%Lft3rNtOdE&1Al~?ox4|L&hUFp^2e7wxb1&g*&6zz6=QutEd zRlaf=6k}8&w62J{@P;1%5PH7G=)c^a+p(C4S3I4s_`Yqj`l(=L_^wO1hKHF>I<;ZN z-E>FZGvuc*9P;_x(hhd3!XlfuZ}t6Xf*XtJTQh}Lx^RqR9Tz+upV-sl|K$rtOo^sXp)l#XQ%aUjd{X?)-8`bVcYXO{yMS-zjD7?<9 z@3tnv^K?Mch0;S`M6(QPZ{dA6zqjMOpekINXm{;l3!F#SHh4Dpdxy& z5%g7-tqBVYL!Md0fN8Kf{;Xa@wP)$H12O zYN8~I?YvgrmKjSizWc{-bxmU&$#Ce#{yF+hxm8k{kL_;4BMw>TA*R@~s_D%=y^^VV1z34Iqb<$&4Uo4#v6{sel}| z6%I^ew>A%2YJEJIHu+g(W?YK$6CX(mGwN7=x$;h!S~@s<*FJxKois$hFg U6;z|xkoVc4cpL^t)aYOT1|VRAN&o-= literal 1354 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 literal 1585 zcmaKtc{G%J7{`C_%$Nl;h7kt0W{AexWXTeFqnI|iwqy`fT5T0wZF&vHaznOKNmHmS zMMYUMUZzG!(R!(@S&Dltr8`CDy4^qTx%YX_dCvEo@4uhtd;kCtiM?>vTVBPe})Krc|(G<1yfR951&J||Z)?9e0ErMB)JS%Af6 zMm`To{FL`ogKZ~uQ}}mLjZ51;oI{6J&z2!mzsRmw$)9TJLXxY`jCW~#T_dTev!y_m z-qx2X%qww6giG9h)m^&oRy*sOta0opnLgNh;ZG@k#p;J<*;|}EWdELdg^k}|aLTg5 z6VU&##2666fIMC^9`#S#8MUU{@(_3I7glEKNPqY;v&-KKZyYo;dbI+|w_4sN;W?(X z(;@?z-lA%7XwSCZTPZ_z$>b|Q)m|bDNwXhNwr(A$FS^mA$Hs|NKKfOvx7npoqPIF+ zdOGsy>)iaw{|s{s8VZrmUF=%ecMbEv9-&hp1>!0`-Zf@_rB{bO596r{2mnL$(R5LH zr~-_W6rK)Im2h?PqIs9(;CYe4=HGJI7~~?yBDd073F>j!-4x zLCbt4QQ;H(RzD9!Jf|hi;g!!e;pIx2DlO>s`-f`GiIvdx!aO@>s;ztCVJ#V$gA|vA zj(k&ezv`O8+dK*mCTbrDTeoz*X^R8EI{{U)`5@uU%9TY^gu&Fa9lO*PbKu&rP!3vMFDV_^hq$-f?x607y?LCaArLubCJQE!NMJ*D#|L=1!TTt=q}Y zcoZe0LW%%(Gq!}!DU1Bwrgu4vX`>j76+G^h8hRf<(4(6}G{_-kx5QfIXlICmC^f>h)!O81GI- zo59YZWhRwCNr)ffy&Pev(|bBpjqh5F*-=gx(wnm3EZ_QhI^0*>`j)WaR8-O%_vKh7 ziYYiNu7!ssF~0p6s7ZHg{En`UKm@?By~eDOL+tJO93FG~+bnHELfn_yqMxVI3B6aD zo>MZt$@Z6-T6H7zhLF`&M_FStjpz=9`T3q!G&si8y;3R}k>rx*CF|esD$7g_418#jBXeJ@Y*#D#%S*$5NXCSp(z}DRX0_ zUjZ?>w;Dj8;t2lwXgArQtD;$yHVw4t{hP(5hOPo-F1l||JRntlvDiIPT){rYc+OG% z8qDckcoV39rm=JMz29+{sTj`)Z~07)j_;ntj=hfn4*H4$M9#9u5Z64B$C5qQW)b#& zu$ly9bVvT?Q?7#b=jFqtt4H4fz-I%Z{DVhoi=}LuewYf>m{TV3Ql~)(h0ikgGCkZ9EPlV$)ZiBKo6se1 zW!uVvi{;Z&ji#oEYNYxRMsoSY>I^%#G;R=M4g@{n-bqJTN3M=%?;Rv2EV5`m*wW(; zCtEMjd1q9SBAR}+ml!iyiw%8WpX{$(-yZ~|T!q^{6^SOw^>=N23~!$xn*@R8;OVt( zwwbAQf`t95%Y_Cy<@K_N$h_0v4)fdWukosH)jt#UQ6<(N<8??`TWGUR5vBe%$CC|p yC+3l-r}d+(0z^i0ijWojw*x?!z7$^$qJIbh*d&XfQdH~Ik7ki$II?dNKlm4Han1<< diff --git a/samples/h264SampleFrames/frame-1097.h264 b/samples/h264SampleFrames/frame-1097.h264 index 021854ad0e451fa9e48077a7bcb4408c398a378d..f5a35c8beb5eebaceac096393c3392bb433fa8de 100644 GIT binary patch delta 1048 zcmV+z1n2vp2*L<|000012`~Tv0YRFe8oU-jOc+o@fDqcgz3mGYl3;oVKY#&6&~9N8 z^=I^;8Olq5$2UsMb0Nfl5}rudI?8jPKmO8$uFBu_sFFWf6d(j)t)s(?RS=Oj4Mi2X z;f(ff_uB>tdkC^e&;bBEAQgag(Y7S&!k%`n_s;V@Ioe-;@OXPJ@Dh=MpR1+NAOLVP z9EgrZCvu4&|F}F;_~|%{KXy^=kG}ps*;~Zakc6f8zyJUL|NsC0|NsC0|NsC0|NsC0 z|KPB{uM#M5cr31kBFClG7L{Ncl!vQgnBMl$%VA_Irho7cKcX;8P*iKkNP^M~qxcLL z+G(&XcgC?q!GDm(695#=VIfM!DeCkIJ|k=H5wt;S_y3_nV2D!2AUjC~lh^MCTZcoh z=RW)J10Ki4Cg?#+1|L7qd*fAa|M}x{lTiU8f9K&Rf)I0?@iu0d2MTZiKmZT}0AWad zJ2pSrFlm5_QGUz-0RW&5cx12vAb?g`<|dCVgd#LLL!V%aC=+0S^@+C^8CtRCIvrNxMzL`@JIgN z0<6G9mB8SN5r3ue2SovY#Be%!z7+u47X0898_S53&>sKr05}^y>lTiU3fBYfHIyFw7U^I#}04&mg$~*+VENP)B zi3h*{MkG>|jM+-;&)@(s51@ool^Wu$5HJ&0;HU}wk8#MvkAmji70iXaNJOi)A zL+Nc>Auv!?P{0oW4hMnxpg^cemzVKF%#$%U%013M$Odo#aB6vm ze>NhGF;^dWA&3;xUL;{cLY*jB0C&Iuhy?@PjJpDY5b--d_&@lYW^BV(bqr%T0K8=g zK&y~wlT9160DwaSj9|bn@RGxZWBqLOfWE!2_?Q4v0H)9e0U*j~J{hdw<_G`?BY*&d z4@Uq1f|vvO;H!{e03b#H0t5YqKnKHpe?QO}1tbTJn!kGhB~vPhLQr5r>T3FupR=LL z#XKAV2!sMyYe45nCM4o`VMpKV4wL`{2Q3}IC`N*N@A0003&0B$Cz2Co2kFaQ7nK>#_4ssXFO S8;k$|0YLy2LTZ3&@CM^Hlfxze delta 1026 zcmV+d1pWKM2%rdm000012`~Tv0YRDo8oU-jOc+o@fQ_y@{m^*wO9vp0`~V3T!MTi4 z)%((b8Qhlvj&7Bh=0m130TTz3833(0&Vd};vOt`t=h*$#ltfS7Wl&&9mlI=ch}yE9sP>7}W0fk+Bnh|NIsg_2NYi4+Ry_ zqALn1@@x0&mRd0stjY za#tK-;=Sh3c3%b}gF(UItQQ3aKmoMbq9kKfPrwigAoBOGuym%BB2WFm0xbfUUf|;b zdo{IJ|FjIC03ft7QUDzWBDX5Fk!0U+01Q9{l?fxsnAk~>t3}j6_#4qg41l3QqcS`n z6*YfT@gaMszTyA`0|}H}1LQ8vZ3LofuigX`2v!Hwpa_6*aYY+!^tPAz}`e&aJh{s_K)3(&?yq*;m)yqCls90dM^ za60k(5`b+DesBt#%S21y9{=zFST>2+>um_4`|mIgcMiW#rl+GUrq~*an@yYF1`P}P z8-f`i0dQafI_cmp5eit&7yte+18@PucA9fCYzn1~J1_)e5G8ed!2!}_dGt=o7yy3= z0AK)caJeJf`O^5nE)Wl4AXXqQGr$-I1BIxL;WP*$W~T1(+yFiV45fR}R8;#pf-D;x zzytsa>8Am_Jr?`#3veJ{rRwvg5u!=e?cp89LL^$k&dKy5Nxy>ztOm9dWI;=FF_E1J ziQ@|Z3+d%FQ-OMGY1fE&00aY$C@X*G$G}T#Spd`pAOs-foH>O|mrcQB3e=$RFwSuD zV7rQfbfwY}EX6m#0|FdKYBU&V#9;5Gm{B@;1OdUOcmTKY+?2mk;8 diff --git a/samples/h264SampleFrames/frame-1098.h264 b/samples/h264SampleFrames/frame-1098.h264 index d9f0cd618acf9a3cd44d8a07b45dee1c4a9fca89..5cc4471ad0011c4129735629deb59b35f36c96df 100644 GIT binary patch literal 1260 zcmV6cpeL56rO}kO5EgL}Gise&)=~90pd+ znc#iEgQ0G#aD;RO3zh+Tz92Zj*nqe0P;z+0W^*C!o0tsJqigJoR(@nTNHm~Dbc^?_uv8mByjTnXc;9YqBD^R8gIYA z0_*f*wtZG@=eM@po)h`_GcW!T0T3uDzyZUCKm-Jae}}=+W7|6?00LzuG|r?YbCb{k zf{fJ}5$<))D)$wh5q^o|fE)pdPvCs(h+?wd^8$u@QF%uxw;fI7D@0HD1_G$Y$N|-j zDrw+l(XE7zF5c5~6@7sq03aGW1_}^6yERsh?vNkg1kOT?)Rg{FELyuz00;^Jan=A5 zKhlQa4GVz(zwbchI6$siI?JEy{`T8uZI7y`d;lO?5>b~|M}YQ>OWc3%PyiSJQC72@ z8KxygTK>{wttg-m15Fu;(Z7B6faj*HU>+rm3>(bn{|}r6HYv&CnaHx=|Fk=b47!Ol z6wU%4?}GtMMeDvUH0v7iANs&hM6u@R3bdOWCxbws1<;9>0Qu#p0iZcXYyuBWDPt5y z70u{DrI}igHrRz$_uu%4iU9%=XqmB6g1jjt;B(iWkfE5z0c9#u&po^tdEro1Ax#-{(_-elb!+*VFlXLFLdZhN)JE)MQi*4fCGvWsnns{tZVOPLCdzV z06<|3fqlZ8`;T?8HC_gCf@!Hf;4qeR7q377Y#Y655NF`VE&iu-H8!4j@_&HKL8A)ZW1-qSxu18Paw_0@SJwCP)XwY$OQle z016K(iX;R*AY|tSKmFhr00XcyGEs~!WnL2qYeB#SumD_eR0}{Vm-pT%00aP>00aPu zGyp+AJOxRQ)p@`J00k0l7YlPu0Rm=3fB_$SUJ(2zQN#R6odz_|fB+y4Fl(Rk0tC9S zX$p~=7k~gD0wDYHF;Lzc<|vcfeX?X8M@!e|S)|PMczsUa{J%33n64vn1fi-xd>RTT zLQIPWipoifiS9q(z?@)Wf+Br>0LT$r2*d#)EC9Boju2%66ap?l2mlBWpdf&2X|4XH z;=OQd7NhU~w}hgAMyE>&oRNQ9B}BfkFd?0y%AN|U(Fv3O48ch`sywT`Aj5zD&;SGg zz!X)cWvN_~@j&-r002Qx_+Z;>$*({C{`~26{$!{%+uXnJsr9uZF#He(Vgbi!O!WwP zP*d5f^%9rFNJYgMcB}0003&0B$C*2Co2kFaQ7nK>#_4 WtO2XQ8;k$|0YLy2LTdnO@CM_z7#$e^ literal 1206 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 delta 1534 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 diff --git a/samples/h264SampleFrames/frame-1101.h264 b/samples/h264SampleFrames/frame-1101.h264 index 156367945ccc903dd62a75250d9d6bcd67bf8e5a..a57882d394b252039ace762d80fc15e06a2dec3a 100644 GIT binary patch literal 6631 zcmeI0do)z*|Ht=SFvBp$bzH*8{nm^WN*Y6wl*@4|VUUzMMN%%+3sil!*4lgR&uhJ(_vd-` zvjG5rAf8rx-KcKJP-UEGhIq95bZx-I8---ZfM zy8@bH{fhogwu%R1MRY(KapL~d*x?1s?pP*B6)V!^z!J}DC4a*37#Vk*WFC@%whpK3 zYXZ`1O0e(rGmlC`x+wMiW}J`D{9$1_8@9v+voV^TG#2HVmUKP1t=t%M@jc>*4+_w-A8hk8lgLB_~ssq7}iHA*|FNtCN8@r=Jm z+IiZ(ROOa&%6$EdeG9%$gJL*|Z6zUORf8GWm_UoSJ)F zg%3D%#RtpBB;(4rrfxc`v!$3=Q#i}l%mG)4FO%ucgjwRfc|f8^E;GI%g>;TGbB?~t zuX^Jf^_Pg0?PR~^9V+1OStq`s?YAy|x4#g{KMd7qR2N~xg@W%etUnkeG)!(Pf5AH5 z>2_!0L|0J-^W*w`*`n+a0B))y)LSA3)6d7^p(~jzc=Kk=w$RHHHOIMB;}H`J^*!Yv zAff2xj#Qiq2cx@zd)4gFX>K?OTD#|+g9a>8mTeH(khsak8JLag#uaL38LO^lqLzo6 z4nPOu0b9)@qvuLRy;ICn0jAbHz-jeIxr;Z3^SsD>q5}VtD!RfGEHv2BUd@$z2s9aJ zB{4Xh1o%>X{|8L~4qY`HQLxbXG-8$_@9@pHHP>a=2F%Q`1vVMh{hKuOK7s=6H<+wz zl>^)KP4K)~PvxrDyF!P4o=1&JkIZFG0hfb0@Kj${SiG)?4*xyz?& zex55V>L@&(w3Od=;c`HSWWHyCmc!`mIIj4TR!|56c_ z7c{tPNURp?%$>-(8uEO`UtsfdWS{T%=0A6C#Trp`%(*)DEXTjJyZc7jLq=u7ZI*>= zw#@Umi?8q8<;&UpQlt!bX%s9zsdX7U|H$IgO<8>WK|PTBb|;|#Fxd7=9L+5jD=mW7 zB6e+e8J(I~jHs+Qg^SRUV>=@H9&Df0)) z?@YfB{Q2Mr(G^hybAZrZ=+#mD(x__;N@LUy-OZ1YW&tz{sgN7(g?)`5mNX=eJNhGR zEblNT`9I%Ty&Z73^4h6Q4>F<+QA*VCH#(S;vrrkDQ`D``+iTaSzw?FNXmiy!tqTC0vAvJt7O93$EY(({0+^_@(i4Z4D zx9NVzaF1nRpYqhcG^EzL6fhNlaSg?Ej%M45Uon0Y%@(M7slS`^sY+-gIK3F)BjEUx(^$r zB*>p7=1hwg#%tE2$%|I}jl@aa9z6^vEZi zHx>=@Q9x}0C)6p!15TPEt_ssui!my7;7ra#fkO%ogLNWNB~hEXC?41-T!d-Z(L@5| z0^7%PW6ZMM3lDUuU(0gwS=qekB1h5#o&y19ohIsiC1i=t8*0ge#=2@WJb;se{zXb4_A$=f|3iDK!O=BK^;BB1teSzqZRSa- zSG)&J4}@eItUn)R`i9h}ghtFnY`;<) zj?&14&q~5`Y?NT(byKv<|6ub#()^u z@O3@<%4*w?;d(cZeQ{Kwt|Qv!$iIB=EepP{?Z2<1e;)YHfg^ky2x}&LU)HkCA=_s% zEK=jLl73xsPkacqR<&%C{WBfm3iOKDX}r(F36~>Pv3tp0@25Fa?A5?9-p($1jW7ZB*t8P9imMsYHt76{4rn=>;#P*Dv3L?y>^ZSZpQD%kBI|7^hM&jt?8!0x7vQHq{;$_^1JMM)Cn|da8 z`j+IEYQKT@tR0}H{@l4;i96?_wDsj4amFhD_pf&_^DoQ`5b=Ae8E;Q;xWZg*(G81b z%E!C5u6=1KVv@i5rqca|xYGC`i{1o)MsQa+D7}Ptp2VYDjA6P9`DsQqD&wlRaMpi0DoB@R@ zZunAQb2K1b_#Q6fdhOIG4x5Y1PBV3udPe~H8I;>PGCGI=l$Q^SjWnT+Jl3{G5q|N{ zvgo7irLvyeqn!*~0>{>(R%vVNKysz&?cnSsxUI)q0wzJ+mMX^6fXc3L;~mYqncrVb zY!Tu>>c(v*t&7fsVhMw*q0G(uKw?s$tf4XTB?l4&40|Hz=XB?x?2AQq zChvz=zba7T1eV#k^5&Z*pO$mAs*fCkIddEq*c-v2aOS(4%fjjG-t^YJO=!N&Guekx zW#o^vw?2&5g3iOZIgK2yak~N9_3kz%6QU1eB78^ZN(A8k`3_cPPh+K!uO*l}cT#2} zhc^vx8yp`!Es_e0_SV!iWA;mTk-nVXKAZOvF3dA#yL^QrNxS2ua|)w}6PiWed-9d{ zWcpZ-QJ!A-{F+dXqdz(&EV}pChunWzp?*B}&ndwF`ZonQtcio%0zv+q3m_l;>(Re8 z{_Sq_=bh)r_=f`jkOEQPTyIII6GK68Ws@8r;&(FtZ;i`8Z2v=n|AGR3-<&H?(v((a cf*^Ve0P!l+{d?mds=@z)I6uh$KPy1}A3juSPyhe` literal 2024 zcma)-eKgbi1IIt#?`DQ!*18R0GsKeTiIUC5lIk|8?rthWl#-?=b3J|SDTQCl!_Ael zQc`H+=H|xL=qS>I^rTBQ$wMlJVlno+zx(&^oZs*L$NRj`d7tzC?|ohX0LZ}YZwn|v zESeTg@qt~OL#*#}(V+aY7A*}zD}$ujoF9QjeBFb!fw~C2m_oIu@d#wy{1>s4$c=ax z%1#Xx+I+(__gIGNPvaXpICU}<9=tJ4kz6-3&lpOzO&l{R@6Nb?Tle3E9@L`M$&eQ|7&nZ7+!k_Pm-E!z ztf{B$kfc#J6nlq{QUbE)alT3H2qz!tvt^PCucOEsX|*R((B_QTBLv>YH}qe}#ed8Ykm^JmsVz52#y2Q_deIE;V?}%eBA-GfgrNKGkVV z;~@dU;J%T#>4GP_C|xX_7AUa*t^X{{TZVQtkt~Mey=-|9LPX)xS+HQWceD}pJJ(qu z#0|m<@PJ8v0Ez83`0m=rq*NO0tw{q=E_8FV-52i!*RsLbv$}D2#020e#A0knlK%t` z#a--tnKdOwHVpq%X=9T&Er``kFu4tfv=6383beoX6(xfuK%eMClPLA179N zjLi+7J9cV?^va;iIL>(`yQX)hx8L5x`{$OF<4Wj!cCDNhJXZ*HIvPNVpIy_xrETm= z=ugT5pze_LbmSUO8?_-3m)7=_UZ$V{3%zKJTTyu0n=d)v9d=n^#t86#qS^bnM5AX! zC^&MH<-IT&VCkMKlHj7Pl(>saJl1>DYluVj`0a$&jEwm=2$Rbcz36HoBz~iO9myyM z)C!`<+?xDzy)j`Iso^=yZDBli!v!;yydH;NVQ9gU&GeI`{7K z-G29;1|K{2k!RYf`Z0uIKZn1UosHE%m=tG1;cQFFm%L2Bm0p(NuDMD|FItvt5_vZy zBt>@MD1WrpX5RI!j6vZ@?Jw22p-_G1fw#GX`yV`r>0kNS=Kp-x)HhAHMr0s#BM-Dn zp*UbBLcBI8gWc)p0@`8sQhuS9DK!$-OeYx+%WZ!qXO;V70vB*pC^kYew)omh|1~SI5Z2e$I?B`jDKC7G#-^&FEW^E# zpB!6?J6=XGD~_CL6F$J$eP&P0nlr5V#2vEH+S)?y6Iw>dHeXHL?X5=H+@o z#SU*3bH;^}qdwkDBj%E@K&dq6LjRfLO#rsyl9ndzoXRWdSSP(#k><|(d)NCI6X}eN z->+0=gg7BfJ>nm-$c&4TrjcYf6v3|w?&wjT-5zJE#1+Ch*1O|8YtkpS@D2uSGOFD4 zeLKh6@B9+u6`Hp)t6zN%Oue6s6q=Eradt4bI3_~;M7EVq4$oH3SEsz31U9w;zx4%S z(`isCekPb6W$HV*xq%_%%4|Az-63`fUb=5asptapLV|mr=HmFNPj(RE)6h%kCgtcN z_rgnV(FYs_jNj%L;6Ue_&PgFuxO3U1Tn#JGm1N+pNfqw%xqo3yh diff --git a/samples/h264SampleFrames/frame-1102.h264 b/samples/h264SampleFrames/frame-1102.h264 index 1c620c703a7c62e98e63b8a4c9d755793abac78e..56d4dd9564522be34f4cfce727377e4d7fd07208 100644 GIT binary patch literal 3013 zcmZ8jdpy$%8~<%{&9&ST*@#FvRved98#)XZ(oH6QRVWAD)7Gc!|b2`OzxIbqWWNlODHR2;_BBrRfOktU6s6KM*&SHT< z+MSC}7~6{v6z70#*v_+t@~0RmY233Y*g2`8ZtU;VDLD9973RUiKW#V{>vQ<&5qWSE zFs=ROnzap&eTHG}^S}o7Jf8wX!QKijbLrX^o2Ym|fAv;dih44?Vb$8VOYymzCFyyY zCO^B&m6Z2eiT1M_>9-+~;IOxUv`ud`lE0ubvg%mau8k#?N5aF_!X5J6?l9C3^*5~d zcTAOX3&KzidG4VKpECV>tGB2d(ux!8zM3-i`-!W?B0=dB7>SM`@33VYV?+JpjV7fx z@*i}fdPwqk1AW%FHA+$0oJl5hGX|4=3e19}CK6!Wmo}XepL$StVU#$nqfD-1n~q`oJ)*+r zP%cl_&?p&++>NS?^dJkDZPg;y$(YRJrI>-ahrL^(5bO|=W(&WFNu&uIxoPCs07OTo z5gDdb+~Z=27R7W!fi(${N_{(tJ@RoI;Kb*7c*^IJWdc|{ z(A8J2Rj&)c5rCR;G`echLWMX+Zd@D9OjYhObWzD=66?bj+%y8Kj=jtu7ORCcNy?bMl3^OkTJ`~Zib zi=v#%G9+1isan|GObsF-LH#j;b(}p93~+~}ZbgT>A!t)Tf~C5Ry>Uyli%H#FrbIOC zMB3Op08EYn6o6^@?z}*-Gj@FGwW~y%3FvFU{MK&)_M*@vmXS^HgNkY4&tJdK8?h42 z!oZy-@V;)rc6e(*!=D94>g-FQSH()^(P%&)eyJAjY39gc8k#{$za2K4u3wxLgiV?T z&=kfoDg-(Ln#v#tb~*k4^m2|fpxgidF0bMe$oWsX8i|R96vwKRhW>vBx}Unpy5e~w z&O;AUG(Bh>Po@uDT<+J%mnyuCRD;mA38;mS)A2wuAbhO3x8jis?0L4S#S6BaD8dC5=H?#3*ce82MP0U{wS{bPpo>N_uV z{_V;hi25WffT)~X6dZY}YE^_|3mbS$Ze!kx`EU^DA#c9LW~M_Q!!zsw}TW*n+O6dCNqj3%*Lm0Xd-pno3K&KT^b|Qv>&>LWP2@jN}8O zqkkvr!(GHYsU-N*84oCvWYklDZccK|8ad*maZidl?RvfG0stPiSeJ9avImDWQiQ9q zEBxj1KXcDFL*$h%%3g!Bu(i4R+BzdVh_kQgr>|Z&Tj$BM^?gLyi$+oJ=PojFmJ1;S zkB?gh#+W&)Ck^ahhQNrpzQZKJ9ZorbArct5ag+0$iK`Suwa6{Q!LY5kqw~!t$!Bhq z<3Lw-GYu)+`Ne4u6TZ7NQ@=IY?@y;UW2MV4r6#|avE|uS3gcR%tov>%$eyQCxJb0HE4@rJ@B`o{$ORfhV4X+L9k1x55 z%pu;qIwnl7G1-?|Y+Q9|MaX7Sz(c}p}xLz7K%jYrJloz;8-UKxDurqQ( zEB;ZU;6$y1GlLb)#N1QAb^*o&m}m0}9{Dr(8_2)SJcg7V#{m`;zz4fe1SBI}zrobn zZySce+Z%NRku<4q4cGYFhmP=*?(?6ETk?+97Rnw*2WDa@BLj#P2A}{ap<&kvd;*}M z52#pJ{TgCCnhbIl&W+S#MjFH`#r_F-p>|t0fhn2xJK2SXambE^N$X^UcyYQrNhE~| zYt?#1Ip*0Qb8BnEDZN2(922zxC*Y@k42r|izJ!?4DlX2YT+LuO-~f?gw%*`harj~G#X8T!8;d7>C%5$p$kKbNX0t=F&|2WUic)FCN7~Z202lR*#ZYwYqz9$aU-t zNu1x_7Q#vkIkU%;iEM5TdEK@&j@!To!5>oq3v6Yz{~*h8xE6%vZlBAm^)X3b)*UVk z5{FN)Q#V@$?n)hGYTN_Rni}IJ79LNmC_xt^-vcUYSOmcG55#}M2WVGaYE6TMil|t? zOXs@L(8^lPhTz^*7$vLw#lEb)za0y>>tvAfXk{=-t|27@56Y{z4mDo+sR} zYK`HH7ZX7TRIqjy-@=9r^)s_RK`$T{$0>YWdnLXD2;O!T<^t4P6>LiKn(U-WdthTQ{8~NLffU!kipt_gtz?K{jsj4(0JwJI%C+kNMWReh0k{0S zOvDO1eusCSi5Y1^}o?lCa*3nD^`)K%3Y z49$;gP3DN2qx(xf!!WA?^o}i3hMcuTW!s??Pvt(GbVL_${Ej zVaNqpr@RC1%KhjuEEmor*zZ)A7Icv(!OQZ^(ZT8^lRKc+VJ?FvysdgH&OCWaG*)i~ zs4zyKM-sVHECt7zhlh!GNKW+!P@K;TbY{Kl@`y67BP}P;{0B@RN zt`)~o#P0Z73^){eTsV>2$R@-Qr*&1#FELnl4G01!H>4_Y}lnFrYT&PYJiv)TRa&`{HYM>lkeKtlgw z8;y31Tpx8T{`7$O^Ux;2-u|I@^EXFHWF%w+uggqiM%{JOsaAX=#w0`L*6`y?NCHTA zSO{4L-YaMdJA2GP{nWqrk<~oG4F~5}wGuzMUf`$0F13cR<=^fQ=>go@F$;P-wZm4n zREoJW$18Oaa*JH46iZ#Z9|$>|L$)9Y9SQVDu*dm()Sl~FZ45nh?wUa=SkDJwFrF_; zRig)&f|Swh4D|4{;?1HfV*U32%zSZ%jZ<5JUo9FnpNY+{)B2Ni3^?2ktHAF4R`M-rD? ztS1!u#atl?4EG{K=sBVHhjEbln^W&C#uvc;21;m$SkI(N#v<||b592L@AZgtaY1ts zXvgJB`17hJe(&^4)IJdqbKIE`-9A;Z_OD|a7yqlv0m8=XYBV6>yGRGzvmU}~m}WP> OdyKpyC{Y5niT?l#4j2Of literal 1290 zcma)+e^|>29LGQ3eb@HgjCL(bWvw%l$FE5=(`hU8!!ViXqBcB!ESJvZZfb0;%PnHW zqZF0sp|}dodDPXnOmc^|NIk@Q?9eW1nl5A7-FfccdwBoxe%{aX{`393-T;75xc`{2 zu+*oXA&4a~7$TVAbu+FQi)Qb6cQi_^6*SJ&%xtw?F*{6*+U#-H-ZQEs%7NLJ6k1`m zm#?36^m1^W5RWH$2bQ;M~rQQman{aS&};Z>r6b*_GL3=l?T1+Wm~`l)HvE0|%!00xNXYC?}6`0+Tkw%g#I)o$2N4L}+qMpk-bkj`9FQ!|C|N0xTf+ z`rJ(bSqi{n0kV1EA+j#A(}Hgh_09>$-g7nbdY1s0L!os4G2ex3OZzOp^M5Dc*WlO$+cOGeI&v4n5#^bkN47%@}zGdeU ztS^rIUZg2$=8YFI+V=a*aPqOV4Y)hEcbR z@s-o4n!uy5qt~d+WtDGY1|E0q3a4@W`JcJu$F*DR#8YRS>(ZBNP^8JYu3VT<%xq*~vV9)ES$SfPv_!SPI|2|01Ol+64jD7F7cGztHY9nw zH6t(CR0FX^fr8ZgtA#vTX@oZ~ba!44+^1ps3|m@SA(8G9%%iUcmOHux88Ooo%{UTwbczKdZ`Hqe z5`Y8UlYVOBqG-V+ef{%b@xza<>e`BuA~+904~Ie zmSx@b(P`_}?max;Ku5FM-a@nY;5fQQfeF`dR@14WrFqL+Z%Ib2;(vMQq|?jq0=jtV zSzUnKQfVJoEKq|m%4V`%4BX(G9lQ$XGJ*+Xkhr~H99LGQ3{cb}nG;y`9u(GmLGK#fS=v?|GkIAELO@2Ob4wDvNRH*Atk4ls> zOVKa+Ra_QZB<1&yW8GcZ=;D~79h>I1bNzphN3TELkN4y8`t$XEzFzY zJJC;BM@5;i4gATvIH+|Kt@!UU8tYu6E2lOss}f5nhK}D1xE*T{iGS=J!?`S$TdhgVH_(05002Zs)1dbPC3+reOGz5|D|&O;r)9{a7jc zvxE)td<@zQA59{t*wVY`VdL^TbLSk|6*dAn&4AEkWRouqvxgNIyUn=yN#hNmHDs;{ zD7~guy7sxUQVy8B@@% z6UxPTh%D3y+mKCpbHXHy?rG3G7kJBiPayCPg}{Z!*QGfsmpx z_N#6)<$9GjUtVPvw@PGpm*XJ5`q3!Y;lP*zX$D_UVC$l*Z+9PG6I73rR0Ra@f>zE< zj=PwyZzTygNIJmEepGx2IVx<^40Q;0DMP?jj59UM5iOX76$4MQT z9X_l1vt?*t2~_XW22EWUmFKh5^s)oMJ!1pPvP#g`cQZ%@`vO~A3ygTn^*QZXfKq}k zI`q@DIAr?jcWw}j506#YKVaZJ4^IK@)3=o5nmvTk%iTQP!ktkU2TP}m{}`a3rv0o1 zpm}NP4(e=Jp2RG*w!L66b=2{0#Mbi2Qe&G&z)wAT)9iFHfOX-dHPFrswxC(CswB{B zDm7{>10S9F*XW`1kufgIg~k(lx;IO9q~5}gk3ZSX08QN%$TxEuPFM~4GsT)C6Ti9= zIpE>*>vg2@s~&_6wPmtI`ni#>#r6x@@5kuDAKjRV{g{aSLj?ATHKAhOwiwd#jWEDxNN%0R;YBy8FbF zgH+)J1{WBivd`+}z21I<#Fjo6S2@f)Uuv9%0hjrPci*pk^9qt0sXFyLCu&G&?f6YcIDKJW>K2HXp~b8b!P>^V&1!X_?tbLgE{_c81CTrfrkaP)Rvgolw|( z1Z&_T?<1!yN~6m&cP$|TfJERbhKsc-1~5lq32VMl^*Gvx_lIU;^}PZmF8;sA4`Lj0 dF%LoVmlgoboD%4s%=X7GjukrsL{4Ew{sqTB0f_(r literal 1379 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 literal 1144 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 diff --git a/samples/h264SampleFrames/frame-1106.h264 b/samples/h264SampleFrames/frame-1106.h264 index 7d6493cdb43e5a358b9108c3de68ce194510645f..35637c98915d5e4fee9ea95f2ddd0e948a568fdf 100644 GIT binary patch literal 1602 zcmV-I2EF+J0003AFaQ7nL7Jc%ybeqS05Jhj3&n*nBJMQyjInCvAd9&GAV^B7mG}u# z4q9mMhSU-b7i7?TqAi~j9EYKnS9;liQ38>04bl)s?a>0tb z_VM(-`;e|?A#Ww`o)yo*+#tmc-~f=^#!e|IaR_ND;V^|$;3S55jPLy&xNN9rDSQw_ zp`rn3fr363Lpo&qH{rVR3S0ny8nt6IM$m5P74pcRy@D)I<%ic2#?UP1i~s}yj01wm z3dc{~HVC(+)8YUdup#USkl_+Gq9-r^XlkZZBUARZ20Q?YrKWQX+zH?UwcaO4gE#k( zSPUoH0{S_wu^lpDU_T+401@-r1eE~yH!#32uu>hEXPo(OhUGD=00atvK$H~;dReg9 zV92ib`5FM7lz>~ntG9Xw09wII&c4iN`GF~DbNT=PB>-_|4L&NOK9|Kp(!_*Da02}b zr2XQy{0N{td((1z>;dcwjCpNY6hvo-fB+Z`$g5b?=3t>0|NXonYSso8F=^?SlQRA& z2?z*4!d7UbUJd5}0Kv|1pX~QdhoB@7{qFz+a0J1qYapUaVoXoGUmyTL03ZkxIav8n z6kib#55`Uag8-{0e7SIu4aA{uKnE+q9657b)M^1R3P4N(aaaJx)%?4sS~Ty#svC%; zRcinOF5m_SR;hfwR7vQZ&7nda?%sK6(f?$)$1AV4`~Bd?CH)ULA(9KVx8J|1;6zq} zsCdAqyL-XMmkfstPxaFM^5TCOSXCWI33xNqZ3ri0{`IsQXH~?b#YM_l+gy>%j{@@^G0;v{@IBB_!=GEW;2mqWB zf|jorqje^m4tM|p0igi~1g6pGLybBF5~Co;#z+8T{&mS?`vm{~m@V@CKLHdJtLPxW zBzBhvhI}7@1YkIMSW#PL0g6&uq%Z;6U;rQsCxBo8p#Bi{%){M)^6mrz1L$JlNT0m{ zl>lSvb?1FJ6)xx)Onbije)jNSI3)!kLbGKEYi16;0Tm;hU;w7T06;Tc05}05En`HW zkCqtKWxyN@!*l}0ei+yPG!4)+6Nv|nvw$EVD~FL==OBnUWR&~`VyB?-0Yec9A*0a+ z{b||o%4UcFz$9oSllORnHm3+8;I3esMFn|T|H;p_@BsqRwbFP+ORVQR|9Ai~y@5)) zcJ?Qr&5H?x4@8IvMN+WAoS*@}`@rBMzzc4m91;*&5;FJE$LrW!n%DdjKnUO+UqIkM zc^o~76R>;t*Z>F}004rA&42)bzy~jIFH`^pG{6A|3OtE%13>jaD3}Zdf+(QiPNTi! zv}u2h;>8wp07zf~0f{IBRHAHx$?vFOZ002NW8vqRpdFJ~rU+qx2eO6}f0*^`KOg0zi|+2?53lB- zZl~-@x&XP(D4g4Q}b#IdSBz__j$SR;uX>V4gAR%Ws&3FFH?RuKu zd6#H0{w5KCAlLu^0YLz6Ca4Cl0C+F}00BV&If<$PtH2wK0003&02M-NfNJmt;~DJE ARsaA1 literal 1433 zcmV;K1!npH0003AFaQ7nL7N~NybeqS05Jhj3&n)60v^AwLBiW&uPBMZhLdL7TTk4>9s1Cp5{RW4>i0L}gRo zZbv{0-XBfxeSw=VOmT(2x6cXZ;Or+L03ZPaoO$OSamSo_=N@(=6#x7NxM93@Zd)k5yYLDC1m-{j0d+5Im@l=Df8H<= zM-)y2DJ%HCN}kcc2BDp;kQBJR94~>F-WaVU-YJ6msty+8frk%J0{{kY=>gFyu$)0fQSVjVENH7Qn^n7l$C_zB3?^XyYFmr?1R(_S06-9@ zVt`KQ^-NiJ@NfWeun5E~9uf8M<5Np|_UMQJ1PhfEH2|Bz19*L=7zR{ON?S){Gppag z0}2zuu(GRK&TVP`{tN&!ZN5`-K^-gkWgPx>$QGdCBA#wa(Dit}nC|QIIO>LxYC``2 z1OPG6BMqPI`ea=s2Uaj-FpXIS2;x`X004l9AwmZ+@T|^_M0F3rNE38`un>?*62t{x zldE&z03ZM$91hI|HmLrQb0u-Ghy1TjnriR>XCPwz=72&baiggOv;lyi6<*6sROD7Y z2mbSH0(lA$3=Kg%WefxS+KmJ?T@>K>44^BVSHWNoZ19++yZ_h#!UV==uqsmn;j=s0 zWq=idK(g6EV<)TK(YgQu0ALm-UL)bCH~ew|FbY6S0&!RXhRV0rtw5;I5dJk_$|EM} zC;$<1fCd8*RTX28ME9XXQC@V?>Czv@%`wXAx3BB>;23^?8UON}kX<HsAd?4T`iE zta1V0`|H5xiu(#-N-y84=M&&irSPjejuPMq3i=<-LnFQh3Y6kCLu2DX9W_Zjd>yArCyGC;$i# zbzaZ{&fF|BW&i+ySO5qFfF2c=@CYbm0h!gZk8)(k*~S{-iiTg}5JGT_3s(*yYC#gg z)pvCPhdHR60Sreg%V^h#L_t=c#rkky#!kVY03cS|zW^Ed5(=OEAAlfgr3JhD&n8JF z`WnJh3n*#}OX3GY(71rO&zYDF-O3JvhTV0L55Np5OJ;F!3K(6g#94U6&UeN#99!gg z5kmk4R?sje<7(FY@9!pn7rKsw{W|-?#sCW#g3SmdVN;Kb%K?ZxD|upb*nyniI4vbm zQ*O}nT;lHzK#OjB)-qx&=?_FVHXVvQZ)Co32tu4yM|3_*EZ^7~j+Mg`-6TW*e(((W z2F$2!wJ=BcF~$BjixgQf04zWO0mvl;vWc>SMBlMmqwn~*AnaSDQj9_Q_kzZ@PhlL6 zx&ek9Uv8Jl{{Ne^|G%*&LIrpN5?SQepP`wsS=O;7iyz%^0s}XeGX6*Y_@E8e&t$#- z|KpHM5wW585Qz5yE_|IxA{L4#zCAIL!MyOC38nYl!~{GDs9AHhbY-9DdZHBJ<|P%I z_kt-!0|I{ncg-WdOX?u2h=GrG0SnQgGN=3m1mO}?RJ-{;zFds(H;MNZygz^-=l}o# nK>%(h$Of+fcrX9}0YLyciLwE!z#EJJ00BV&6+&!)YVZc*-=KIH diff --git a/samples/h264SampleFrames/frame-1107.h264 b/samples/h264SampleFrames/frame-1107.h264 index 9e43f10c14d3532231af7b270a4de65e24a257ec..f191cf4c9fad0c0cb49bea30af77cfcbef549839 100644 GIT binary patch literal 1236 zcmV;_1S|Uh0003AFaQ7nL7KoCybee6@MFplI6;krf`Zf+ggAa1qtK>@l|rE~u#L97 z{84z&@M^?{0DPhpiI^5u?}5Zgaq~vFFm+(7%kX9qgD^x2fq=qr06+i`0RTY=eL6Nj z*)U~*icx<27)-^84mO^8tMMzJct8Od00aQ^0YO4{uLvL~(@+240D+9+O?r$ug^5Ka zk>CUX0szVu72>;gH7!IFQQ2?+0s%)raW$@xMQs~-pZ(?l7yt+ySbwbe0G%bnNOOt7 z2Mz-x&ica7bVK|=HgCu+{~XQ!ylPcmwYUi&Vj^(?09Txa&42(s$xL#K zv&V5@ND6_p+=aFRwmn$j45a~o{y*qcaDnjDTv#O)f1D~fKimNH`iXdGf2Xh{78fRK zZoVczfA}FpO$g2lO*hCW&Ld>3`@ono^WFe&2B@0BZU0XS=itY%k`y$G$}cp7h7Aul zej{KZ(Cf?<4mUT2{Cwed0ZRk!08pj@j)zc>gY5bqpPE7XFTDyHMP=rV4NxqBrNT3* zLSscRP8vlwpw%I~nK(yA9YuHJB4l~-SPHmD(gaLsWoi4tz!pVd0Or&JDn*Z@czwZn z=||uIMkZ2~jM++35%>TD0DA>0ts3I)6gV4W`@pCJKns>s!a^&eCBiR&01y!X0RmtS z&lLt$+Qve_*wbSGI)DJ6GzVybGU1l5FaqET5D*ixdW>c;7)LOce3`8dQSN_`1~?59 z*0`#*s&z)3ec*x=G35{}d1Av~E?@u_@Bj#aa27@~?2QXU)o%ab#yM>U3*OnbX3RBr zaK@>z01IO{LWW$U#hiHEpacN~0}g255h5(OP28i!&Ze&a_(A|e04SOOU>*fkK!|?J zgUn(80R=Ds5P3vk00=dJ3ZB>?g3n<<0U!r&g0M9-BiWCrljtO-m$E$=*j0P(JfizVD2UU!(YGnpL`~Yrd()ab= zp_sA1?d!MS`QZ@f;Jc7SITZ7su|v+DfJ5nQec|~v!7eHpf~mrESU|w?n19(!2ntwX zJL0@Hx3xi6qhba>`WwIjF*!s}J;Dp8&j=?B0WyQi!0=d{&fy+MY)X_%tpWZ+VhV)0 z{L+?7mKc89{%->PTqr1D1|ks|1Yol0V}dFC1{|=^RVgwQCII^}vK-*H7{dSoVV}4# z0YYB-bT%R;FkjvPK*Nj_f>j6v9u8?P0wks6#Gqh%|>{}{#?XE|i??f6@%BtQ>@0l*n~v^x-t`Ju94XQcc71^}N! y3gkaLD}W&A0003&0B$C*2Co2kFaQ7nK>#_4tO2XQ8;k$|0YLy2LTdnO@CM@p+yX8D literal 864 zcmV-m1E2f=0003AFaQ7nL7PAtybee6@O#PODu50rz>;8;0v214dIEq1t_n+d!7X#m zpzrCns0EpW<8S~$r~p7HF)CHvawBc7e+b|QfB--U3J4KTWOX32P9a9MSB9qm0Rmx^ zlz^DElkK-ei2eXz259mae3QV?FG;p=CR7Y%e}F(D0JLRDh}Qxf?NH;u0fXREc0p2L zCIinAiq`>;fE@q=43uHe%neq3mJkPZWRsf(}`nD=2p+Th>+kNOoH zAbd3k=)-v{{kjD~!{z`iw-WGVAMapD2?eRoy!e=(o(M>Zp$X^H&GH92G={C0zVIaj zFFoJ`coxEK0vrCG6VJi%e~-ZoBoY7$g8&8*7!d~GjA3DJ6g$HXuoh?OuL=UAT`(mo z_%MPxRa6cr0$}pqT7y~ht5^UC0%e&%0l+Fkp@5|e%+UxKTmT3i{z3!@a>v*uY1j=6 za_;ejK}l#WMKFtDLwyMbbHo`;B9cidVaz0!ctW&;2xzwYp#>XlPXU4}0cBYU6juEG zfq8el8KCm@P>4;ru`mDn0e}F25zGi&5#aI`qfZdf03aY!MG|py=T#&$k$Uu;05A+O zkeajgLQ{t`w1R(c?*I%8bHOO!X}6VxJY6>S?^pl`7fEaY0RRxVjdy?$3N)aCPhPz) z9;R^mUVY#$KLAKw!e4g=KaRDocx;b`8;cMeMGq;~n+9bw6!j;Pf5w;ksl{rqKnAOT z%l}})2qp=__KXnz``bYP4p1`99t+ZYXpEb>OM*>;cx$5B;gTQoE z0YY`U0uJ^vmfD+v4*(y_Zkw0B)ESmC-k+&H|IY}AKLTPB5y&&Z4oYl-bebcE3>Hu| z4YH@#OCSIKc*Zb5Y^<3!B-|aAk|^1apZUPI&ZG_-Zps5_g|Ym{00sgJQfGK-(@DnP zW*RY4$AKUQg9?h2e^w?tP!fZq2a*Gg0T4~0*^F(_7?>Nff4}1b57!znZ4b{1_yP`q q0003&0B$DG2Co2kFaQ7nK>#_4v;nKY8;k$|0YLy2LTvzQ@CM_)m1ENY diff --git a/samples/h264SampleFrames/frame-1108.h264 b/samples/h264SampleFrames/frame-1108.h264 index 335e3378299d827c247b88aa87d84ce89e330d1c..f0111d538c41fd9c6c723bdab9bcc52ae6c56d4e 100644 GIT binary patch literal 1199 zcmV;g1W@|`0003AFaQ7nL7Lziyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bD45ea zkd?(ppaTaP$}%I|>zh^XD?B3k62|~I0+64;MC;r!SuG^Mp?=j~QQW=@h#`R`gOExx z1R_(IFBu&>!v%vyv=(3fgam4znsw+y0+a0=43VE6bliHi_y7R_GQt1=fFSVwlS|%v z6Grf1+-Rm#FjWSG{!W|iKmZ^p1;n6?-NthgifC5|q3Sb3&Cs+nf0W3pAnz{lA z!8Kr~4e??wDX_x-;3k2|ivToUL~VBf3jsv4$vFA%%mLVyOH}B9kJr-v0$>Sdo-BdK zaS7c0Aaa?YZa0{(1M$QhAOScLT8IXcC;MR_7Xak21NCJ0W6AsNP*{U>09_ERZHx6k z>UdTJ2ZMr&3Ru7ZKtzWC0RZ4M5cfB=fe_yYh36d^;Y zL$`RB-poUnZD0W4!Wbv`OMP+fwkE5*4CMy1(rv(DYu+R#KmfQvD8CbAu;BNBgt{2I z0rdic$weTLZXwKopv)xh6*D*Z03aAYrQz4V5+ZFKyH+2722r<(8tKfY$Y>>uWZ`&D zD_JNcOTA^_04M<9^5~*KL((W2Ik``OTmTNh%)v#lxwUxsOIi*9C4d6sf}mOfRKLFQ zKmZ^B-~b>1NuUA=`QR!{eyh#^7yu}fXt-P2Xb2NBBmfBe+VF?rI*uRW4Db-c@Bjn> z!UnnjBp^$x29T>6qHq8L03#32BB8rC%uz?bboVl39%AM3*3^FQ9;a{q2>xSdAyh@; z9)_s__{4B30HFft2Fl7wiplNakD|-qCIPQ_?F9iJmurDgmNMO(e_MkCVVib#{r#jN z`XUdcHM4=I8u!WJUZcX9kJoGAdSzi4^|$I4fX60y1zI*92O*fLgTynHGI&-517ZM( zo(l{qfC6M=BcaR?UvZ*Mh5(X^0UDhwCT>OjY?TuFz`%xfi!OLBt53{`cryho=BV;6 z^n#23`#=B?0{~H2nU%9c6_2--d8tDGfl#H@#hDkiefj3iuW$03gcH zzMt&6Z*+GTfB+yaAjJkSKw=}wk8TlYas~b{0f%q62NUM115%R<|N6p0i}$pi zFaYZSegm{m3-A;aN>I0%hxn;#Q+ywhDgXE33;~6kG7R`gUFn*Y+F-+rFWv4x+F1dR z0y8HmkKdjKrjzJ6#b^Bis_QG66Z`wk73$tBvqhA{`@{eDhP0OV35-D=^b*0@3ItHS zUNOj_0nz{&V6)nSs!=eG@1kE2E{iac#NjU{pcUTXIBofO3$zWVrZYP@zXkwXCB9E6 zqWVaE{o2eRl4*)iRL{Tv`RU!s(Yk+F-2II8|3nl;n literal 981 zcmV;`11kIg0003AFaQ7nL7QM2yakbe1p~1lQWO+`0uUH45%Kuc~M zQY&cI*)xecnji^?Nvpu4C{Rx8nxuE^SKeUpRACloRUyGCtl$6y0EHG6y$9s%8!T82 z2EYkB%uZ7eN3+yE*k0aX03aZQ0ALfFFLXu;=!`+b7=@8&6Xd%o;vcvG1O^1*$SHE0 zU}+gGyUYTh0Jga+8Ukn2N0Q*OmlWVI{|5dgSgZa4=mSw+aPWpS=}H~fZ~f>1a)%so zZbc+WF3BGNLkZh?{(}^!lcJducqcdj$iBee>3o#OcmM_vppdE@Hj)<5yK;T|fWbkl zl}6}Y7YMl@>_4L1hm;za+ ziy%?>D2`j?7y&p8qIrt&6Y)|92mnL^18qoy$u3{e3IHUME&!~oo3kYU^Q=j`2owkt zkr#!rS5p4C0}+tYF8_V_bHcD77xRh5f{{T$0Bj{M#7)&xe_)&x70vnRmXAc}_uN7+ zf;TvXtk+viD}-F~5_|gpb7W|2aErt}93VviA*MKJQsFg}>Gc2dcNcr$fy6ZEu!i*M z*q+z!715?UPJorO6~6!gAR=HW0667(O$midKwxMfv|!*@1T91^!YjMKSP23;dJjS5 zp5S-^@(#xj^Pdu5+y7?(0Ne&S;1F^^1PN;gkz^L6+0P)=zyY_w03aaXK3DO;*yGAe z)F6t8V6QCYl3@Xb@Dl*nx*gyQE#2OD5rkP$ZQ0NH{5WmD@csU8jSLNV*0~z6J;vW6 zVP2!cn8W(zyYRCmh>mT(gI>lA9!xk2v}`;Dh;+qEgTynHGI&-5()_aSC@4};0sqsa z$KRd^O)rCtR6ptiRnse)CI7xtY58TEEU=rv)Ax)lLa#U?8H9V#Z5=EEAYc4&*#ne- z0xTLP>I+tu5!Ccc;snuV5)vaz!YzJY1nhyd<|8{e|8D?hHqw6h5k>W=eErtka7i@9 zD0!cK?f%>Pcvb*|-~a#tK>%(h*aoivcrX9}0YLyciM9c&z#EJJ00BV&6+&%*YVZc* Dr+2EL diff --git a/samples/h264SampleFrames/frame-1109.h264 b/samples/h264SampleFrames/frame-1109.h264 index b45fc3c8e2184603fce98e8f668447418940725c..14cc07bb32cbad6b9c3f796e108c78634316a431 100644 GIT binary patch literal 1523 zcmVkLbk3+(j5QxtN4C^5D9nJKQEf& zB4Y%2WD$k9jh!N#4agI7DxH6n4nDE5fx^Ds<}2^>v z=m*xuG<1|l2?T5YA#EN1>)(ACfP?M|T=jd*009H=01$cr0Siz75DHA;00sekfs|Ze zKryno0uFAz+Nccw~p4^u8)8W?0C}Eq2fgDg(d+*=e67 z`LBNn7NjTu2nDj{@HJu||F}TQLjue4mt2BGisJu^W23-82x$OGh8^|F^i8wR{l)+U zpciefat6VDm9;Ve0Raa{0CB&O3}5eXhA^$#^nH><7ZFwe;fIBD`S=hJB?kaO1Y^RS z022}`zY#*hH1}Ju01+|(1T-PboL=iFfj>il01y!X953tCNfsVx%9Q0j-~wa{0d-g| zTc!dCf`HTi^m#0ALF?fG|%? zn(fcOyhdOEAOhDo0L=&$fiWx11}Kzwrr#py;)!2>?$Efjs;BW!EaX4<0TAyXLfWfnt@SPb@Bjn@T>!u$ss}KgY7zEAZ(jfaKs`VNhd3O$yhhbJ z6rT_PA$e#9yvjh44iEN&_zwlDJqaZR@uY|4fCCYTt&U|V$x_lEsR0o&fq(~qEA<-# z^0;E4CIRU005M-*K0g2jtjT84P2T|1I&~yuqNIoazF`Ssu96xfH;}e%GGx+dz=4Zq z{d@oDA^JxPCM;P35d{H@xwr{KkpKN~ClVzB$K-E#KMQaw^Z;ApZ*;-d`=KtdAT6{8BX-gqRJMMZD_|L^_)X_8qG;hOX$>i!SY~fCfB=ConcmE$_{8ofUyGF^=U`RTjuk#TY|NPzn06_IYF3s047EtVYD_XV#00kt04!u%D_#hb zSl`?qii%+gPzb0ezuqGVoh7rYybb?F)lQT9If6ScwPk5xPX)#oY!fuefeVJz-*vbx^TqPEW~;M zhfbXDztlE7$)~mbyqEK*aUNi-kw7Mn6<`1C3L}yL3Pqh(Kpbwd`yM<500aO~0;vb1 zq@ff;@?Ujb!2m9#x7h?~_uBxBY{{$Ax!?bU<`uLN0B~Rc00BV&ZYID6uK;*30003& Z06B@U0jt0pi~s-uK>!s(YyfKT2IJ{{g;@Xq literal 1371 zcmV-h1*G}_0003AFaQ7nL7RXYyaj>$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIxr{s|A^?akBraluGO@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAi@-Awa_5)43}lcncxEe z6{-(iPO=wx(9ymByebZO8X{67p9?o9S_Fnp7zhZ^Xh`&}7A6BH)D{o=U&Ld9N*Mv| zJsLyGhz}D01CE0>2vJRc?{9zu5J7M@xPMK2;^ejfEW`$(t(26>i3uklvKDv z6rK8}t3ii~K&D|A`0l;_5So~b5;0wm|Mh?PVyu&Rh6~!LI9pFcm(4U_W+W-F*;bG6 zn_O?uBhLg{721b)+zfuuTuIBQ-9VOVwv$c;bT}YJR_}n+0unoV?O#rR`*0(1HY&Tr z_xtbwVxgW(mv3025Bs=403Z|sGNmvJyz5_h*wjD$o(_mf#DWi&3z;D$5h#EdO2uS2 znwBL^Uw{~a7k_qYC{4uOZLUTDA~#TGo;C#5EqL$-0NW9Ux5%A2ml}$Az+Ow=svohjnT35z%i1JUs~AJLfF}- ziNIBMx|6`fUa_cdOj;v<{)glM9B^aDzHA5aSguanK>I2s=ZmW0z0ssI64wH>)K6o4^olnk2S- zXB<8N2mk^AU<}~9?jk-oBT(tika!;jY1s-Z?u{<6JH;s_L-&9MjDfmEom9{z(K&1F zxGdDC2PVq`*%4Z&fEFMKP%dyOZjBr6bQ_W^VW9;80RV4A06GDr5p4bWF%dZy!Z%wb z@Bjn=Llr8V2_sG^&1jyPj9c-q?(=QFKlcN2fm`C&p7Z)!&jbL&CAkm-Vq8$?Lmh^| zKIi}tfT(ItkIk>Xx-R$lKYM1_->FsIL+}6)0}7z*E<``&@Gu#PvTc|E0s-IvASM6_ z4$BAl0uBm*6P=5w`!HN8s}#?m0$@N;`gI$nOktXV!a&UJP1hflQ21X( zz)Sdt|L>MiT~|nGhv(cyLee%(B>(g=W;xTp z|Kklh4i-#Wkb(*ZH-?M{ve3)#_%HwgdBg@xqW=aX<1heWXaMU1-RKd~r)Ug5ALqW) zd{EIRVFCpfC{`&Ov%z9Sim1Xvny?y8?vtiLTK2fY_K8G~-~T{wzzilyWKa6fo)v*N zK>(p12!F+2yacvGK`*${UI-2X7_}DWy5>i|4j=9L;atCc&_pRE6DOE-2t*tJi2ZjT z`q;vNN*7l$!Yfst|MZgMBuL_0ygcx%38`@bC`oheH+yg8xZ~g&C>8(bz`FkCP5t@6 z8&2-;yBi$Hnp@BQ@?XxK#Co8tksuQ|c~}4U1*4Jx3Pp(QfMZraUqAr>0RR*L%aD}9 z2%;ubyC@(4PIeOGB;Ppw|I>hk>{77`tjvo4|3!s(ZUAcV2IIT#SeF0* diff --git a/samples/h264SampleFrames/frame-1110.h264 b/samples/h264SampleFrames/frame-1110.h264 index fab0a0d0dcfac5eaaad16e614af920dbef728382..9e6d497709a680388b05ee82f3daf617315b09e9 100644 GIT binary patch literal 1297 zcmV+s1@8I)0003AFaQ7nL7N~NyakiQf-ylZ01(Y>=}q4N0600RO7WU;g~BX~-n0jlx=Ao*7@s9aZOLMcotxg<5g zJ*|F%fL#L+8isrT1;m<|cJ0!;&F3d;kFep_}UK{e_^R zWNpBLgUVh4Ws&b*S&ALrLSYC}4mku0K}Ea{8R6z5fnEGqDA22Wl`>ZB9uodY0<>Kvu|9;{`E=pW>iANhd?fR+LX zx-Jm_tSS~NUIdLePnp0^lu)Tx^qlZU+nZ@u`Pc~nBa}?vFZMk&^A1Tvl#M>uys?cM2JVv z&%gi>3;@8aDy4#^GcVQJ0ztsr9%5h>spA0$LJ0BLg?A8aT89J^#TjkIKl~p603aj- z1hL-?8RDUDq6m#V2p^DFU*<{+1G2*9uYsTk9a$I~l3aGE%t8;q0kewphK4K8h#APG z<$xIc01-@jVa4*4-)I9+0taxYCWRMSaCj8@@XTPPwL%(0m^c#?;>!}*=;R!IfB=9Pb*zvu&18-P6slujnLrWS~(23dRw1+UsErW7!Hqb>I{01457k3*@9naHU#&kDerU;hXN0Nj)& z;_O}1|J8AEfVfJ#YyWlq$pKkxlVSJ%csvIGYuHggJJ>v3UvU4L_#3s5ofL8Y7mMj| z@xVIBs5eId8&v-i9Q%OTE7CZ1I(NL=myV#o;6e6Mh>Obe|KI^^D=k@VW%(h$Of+fcrX9}0YLyciLwE!z#EJJ00BV&6+&!) HYVZc*-xMUJ literal 960 zcmV;x13&x#0003AFaQ7nL7Si&yakV8LnWij`2kM?7_J1K$Nypkf&c*kP;ktxkVruR zxdHy4uK`#92mk>92q9pJ8nA@^iXeXn?f@1sl<_c`4Kqo(;2@-kaZQ~%sRN!eBejRY z02#pm$N(TtvCv2&{fF?GXbJ=YCqlJD6IsPrT$>)*jOYB|`kVp)?7)?f{UmDwYMcB3 zk!lQ+;Lrg87X1q_(IdbB5Dgsk004k-#YPw-F=7nH*G5YK5Cn2W8X)p3u$}PDJOuy% zKoBKINrR#}-JDs_#sQkbJuV2jad7MJ2mnI^g5H0DvLX*lL%g5^1(`VpjPd{gnJ4{& z8&CuQU;zZk10Ya{;l+F26%Tp|5c<~zX-zs z7YraI)jnqnf)8H45r7SW3(zT%0(l)0w$l@Ungtm}n56s?fB=9Xn>tV`HMN62L%?1F z@0gX$1)%>|LNZLA4|y=ZGtj9=f=q|t1Q=kB-9=SjdZA)A_-X-A04qv$f%jB_ih7^| zqox2BHFPMPuY0FTumBJQ0cPNlpJ)IA0)SH_c1B^?v*T8+KEQbLj0eRzcor9{Klir* zfCXT}>??}wfL@u2JAq0*m&HTY6lTO62f!fXlY1|CGn4r&`@m-y1_(={Qv%_mp_n$cZ!gurAC6qj6)u|JWFC z4QFKxqpo;V1#KcA*?I4Xgmp|vKqv-pBx;)z|7`dM=C@R5`R@ZPUc(^y`vo*;h7WXQ zuH!HOmZ1TJvhx`;v6DRTtO=$6@PJSqNJ+=J+JAQ*3y9iQ-s}5-@O-vQF!`zBU^cC_ z${qN5@OtX{$Nm5N3zQMLMh5;Azw3+RP}bC?;FqsrNC90x5*$PJ09VwnQHJ&YocEhC z#$G1K8Uhb%L|#^#`uG6$6`oqmEBNafAm7XFzqKf${QP`A(Y_DQ3cxrp0003&0B$De i2Co2kFaQ7nK>#_4x&f=e8;k$|0YLy2LT-R+@CM^1>XpF& diff --git a/samples/h264SampleFrames/frame-1111.h264 b/samples/h264SampleFrames/frame-1111.h264 index 8e9890ff6dd30d51a6f25eb2e22135e25263d8ae..c8a513edbf7c47c2649d84ba0efd70c204ab9c47 100644 GIT binary patch literal 1548 zcmV+n2J`s<0003AFaQ7nL7PAtyaj>$-^SKs3_w!=1ONd5Fa{Kd)3am!lLnXwr5ED> z06-`Mo*69w3@=r_w}1c;1fVz;W(k@HuWU#cg^=0*?mz+n0RV!D;LM;RF{=d=XIsVj zoZ=y?Jzn6)09K_0jeuYAM3QjO9Dn>6rpw^~ND&MK5JW06@B%=9$*@5U_SU}ZNMQH? z8zW*x`fFV901yYLj0XUt%~+xEj30~`8G&EhSsZv@aeWhp!GWbjiPr7SV;|-Ko6g_X z-~a;90Y;t>O7(<&FN%ewi3p6IoqY?Y^ts!92!H@h4@tO|cbEg%3WO56JxWPR*AGAd z5CZ^+Mr%S{m~cRQWzo6G&h&K?X4K!T^2%06+u^E6u0TYuBDc zTroxO007(ooD!C@1QlN*!(Qb10096%01yrhoiHk_BJT+>GK4MwK!6ox#aFE?DZsQ5 z{s0i5CcMBvF<=0J01g8JxY=^W_ksd~3n+0K0k=*>m)bVkb6g`#){kQ`?B)Op0|ql_ z@V~5K2iZxW8NdR9QM@gaZ;%LR_kaLrAOVL`x}3;}#r=dF022a(*^IXW2BM};|K1Re zI6@qFqE8-RpRxY*p@hq!8i z-~gGnH&U&t>*(s&`M>i%jY|~x0@DBi09iZ(00jqdhqh&&><5={AP@+li-97Z^afM` z1j;q~-%bTjx&%Hw_yQ0RO2mV#o>W|{W0huikN{wuKoUe1y&hN$b}l9YP*M~tHc*DP zVC&EkQaMB(CcpqdGhF~U0U<48M4*pW7}aHgz`Qp=ELZOq%>#4|1OP}c4gi3Ft{z2i zoPr?Xl2h;%ie7`n1q?(ahL1!S_NQg$k(m|%U=lV#Bsj!|iJTydg1Lfi6cyy_|0h1z zpaKP>V~+@_b)4saZvX~2uqjr~-o*45xnUqUdL%$XDwT!|)?O@fxrL=D17Ju2ps@$=YWa;0?DudfdY>p zTtLu1Pz4h}Fct}*gP}T}3`ya9{(b}(h5&#;ouCI80;S;E6-Vd)zu(M0(E9Ph1~dLd zLL)GY5>*UvO-yZ=09a@43;;neFsStsHAOQjc=ML~lzW$o- zWdY~{0Rs*&Q!rFMKc4Gxxs3M=D*~sfVTT5&%H~ z6a*0hal#-1pHyM73Vz-IA3iKlbh)QP{D!UlcrDaS1A$6%|A3Ihh=PEh3!l(^&U=t* zKlTki<0N!rh=_yMX@tNHz=PmSO-hOjir@Qxfx1LNKgEO{`u+kJJHGGy1SQ!!6O|Uh zNDpX02Vyt}w`zpwr2qrA{KJJ6uU+7cnq_?e|cCd`b4+5I8!&a>00RvHa(89xR|};zbLM8@vexS=O`} z*v}b&uBf{b5|}#>7J)>>YoLyp0gjpbu>xm#1~ffh){g)RvP~asHzE}lR3*d>+Wy%> zE1l=h3c#9Q5+rYN0YEpI$k^~^nEhz>XAAfK3e~16?B`Z8*KuLQWC#X(!RY|(qkxVK z_33;<5+ZCy68I1fW(?HG2uPFajY$Zg4@QDL&?4K34e`5EUnm)zy$BwpfFp+m_zWHt yu&QHie*n3_0003&0B$DG2Co2kFaQ7nK>#_4v;nKY8;k$|0YLy2LTvzQ@CM^y%8aZ4 literal 1490 zcmV;@1ugmj0003AFaQ7nL7TuDyakDU0RSKcAh3K;!GTOT@Bsi2FdFY$7N@URNQbY0 z0l**tFbtBe)Vx4Xs0|kRc)$Qa8h`+R8Rmcscn>-^Fj4@{M1KRy00IL-K13iTUt}@( znpl_M02pZC644-O+3+t()Db%ofCmBsi;1EPi^-Srs*y52U;uy=Tj2LgZ9f>SJ8`Je z0RRAiec5233S$Jph$Vrm@7@4t00IC&V-^hJH?59gH;6j|SC|3(G3SE71e$=LfnWK_ zClM5Y;lU#lT#5}G&jAHA!I!tb43Rz5lcn;32LPZGO)^l)%nJ|&xKLIAHW6PSkoLI$ znXnWAQxIFPPcI$$|G)rE@ULk8V04Q)~$?6lK zE-9q|2mlBN09aTURA6(erCx#?`IrcvL}WC|%BZNT-~eI7G=UISw#duDBjeev3xSRR z$jS~=egHmz8}(U<$FL*bS zIfRD9dH{n2FnKoAI3OB~pYiYwVwV)O1WcP;>dtDGM1_dK~Y(s~+UD36srMWygDjuVB% z1;%`1P`;l?ohU~wu#kQLFy<}TgXjt#ZM#Jpc)}q?O)=QF>J*S7g8%^l7Hk25x87FO zArIaoAOinzs!C{$?*)ti1&l%BOBfK{k~i|fVC>2MXpy7?9Z`6ZGR~l-{o&@d3O~mN zC|&Xz8*)KvCn2)yb9O0<8riSf0R%C}WFw2S&lCHwHx9MKmZV8g|KGd=7BShG4fp*O z{unwa@UDM90%E{O19J?313bt|rXcUd6#g5X0#FhH-z+8Y5&%H~6a*0hal#+~^Z9CF z(h$GE1MS6>11QbyF6j-@oUzon2M00Fupc7=+6I6p!mIcb`rm3nzku8C;B?>7jv_t{ zHfe%j2H-~c4WTpW;JDBIclZ+0h=lh%AiuwWMb4W0ya-n`>`Lgii;y0WfCXYW2mZn1 zF1fB=AUz!qI7 z1Slman#QAyMr)~h6Hl_8-!rY69S-MFx&tT z00aO)5JDeLjgR(B8DJumU%v($F(&{hTA6C6#I60|00dwF5ChN!1qofeAb_7tzyE*& z1~ZE_>M%zUZ55PHfFJ-61YoeQ71P0)dLWvPtAGFy3OfUdt#p!WXxohc?=S$s06^kH zP@~`iG?xt^&L$7`U^ZF-gu^muiF^N%AOH{uMnnJt06+*5K+rgJ_uxLhfxzKT;pCZT zAAkYv4gdlJz!dZdDsR9~FXBLtv7)d5qzOe+8qyTMEm)xdcm^ujwpO6y&@~8P06{na zKoSwdKDu{kMF6_!*Ps9h41fj!$fT~plAxvuO4m~o064s3zyLxGhyDNp1ReeC0b+vz z0GYF)IgwD7S5uQSS{$R?-^d0i9(6p+8xcmBt53WT#0qII5-_15PLwPFJKz9B0)ei^ zU6DZuc%85O7{cK9_qJ_~`juVOF!ul#jG+h>a!nFxqjrE02w)(_3){0WbtK_~!uGVZskP2cVSB~sl7@BQJA7O#s`jP`=g0fxAvSqEYP23ksF zc&Gpy14Np@@*n^#0Rx_oF=K>}(V3=ss89F*aTCMhOm$pvoh`#AH>XZ8O0D`onYK~hGAd%N~LG_ym#w00BV&ZYJ0UuK;*30003&06B@a0jt0pi~s-uK>!s(ZGdX< F2IFJZ%<%vK literal 1056 zcmV+*1mF7r0003AFaQ7nL7U(jyakp7lMa9|4vCL4@Z3-Y00aOWpm9Bh7<`A8Cb2nu z7>W%C2ZFF%6c}Itd2G;2V+A4&)QV?nq82qy@X z01Suct`%v2kA2_(VgOs?5dU(~QNBW4_H#gbQ3gQcf<-Uxa748RaUy=BG=KsFAA&%e zwxzX(r<9+b1U4}k8&UvV29}Y3iRLZ<89)HlT%qD_BZQ*$zwv+oAi@9w5dZ)o7624X z*B5xgOi=b74!GdMM2%Vho4}pLP(x*hhvcu&<@gd1+!V)L4~~bd0E`#_&bW9DghG`y zhyVYK0k{C+yG=QpG6m7XosWTpC`#&}(E-wAdGt=g7yt+WU;uDnsUzF@(CIwBFbjkO z*hm$K35@Uz0|CO+LvW%55i>(~c`g7S0tQmO=q4zAoWUL)ZomWp3hE#a@#&lW_l2ks zC{p!#(umn4t9I~?QILxku(PsV2$O5z!K(qTgxL^M+{|ESLLzv=zykVtO%&i>n%Z^Z z9smIV%=Ro&YWUxE~G%@GB3KJOTklk~m4R*Qk%mmOmRa_*_yj2^B1! zJOpY@DvH=-5C8}v9uhJ-LJ`G-@7cgGCTI*W46UsQ$(%q60O7z`fRX}8ylgZe1I;UJ zytGFjfy&d|EdTwmPRez1ECMY7h2SLsk}d$>VudyC0b)E`U48QO*?a&w{I@Ot|EAgJtKO*?_sBdna;}YJdBngV zi%ATR6#xUEB}uFgBLD)x5IOB;EO3yGhU?d^j8s2={GZ-@3jY6-&n}moLv`dB2+`@! ztpERWfB--}&+W?NikJVs_#3DRkNZY+f8V@JD5%nIz4!PCBZ6?3o3Cn$Z~x8UNG1jt zrEhpM^=(h};X%OyvZOhszOLuFz0Cp%K0YDq}Fs43KElniAtT6**P(z;s z0y6xC+t6k={^=RwT#BCCzu(3W2t&tPxcmG201{+Om8C=9)m6j!!iI8b*L=33JI~vn z_`}?Ao8yT+2&5Vdw&5HA()hPO|E2(g#LFgDFDSyFuwXs;)Iour_wW8d0bv*2CaS3y z*O&qh@{#Nn-fHOG{{YT%bY^2GLX;>su}u5{5VguGPH}klpZp)BL=$5YF^EDSbH%`$ zQ3U*90dOHDGg9V{QXf`$U6>$VvTAB;)z=im}Z0003&0B$Du2Co2kFaQ7n aK>#_4z5%Pi8;k$|0YLy2LT`X-@CM_$R?chy diff --git a/samples/h264SampleFrames/frame-1113.h264 b/samples/h264SampleFrames/frame-1113.h264 index b43e0a3f03e1053db60f490c71f51e3173e1e558..e721b5d4f67767ca5104d427d152888f381e65eb 100644 GIT binary patch literal 1299 zcmV+u1?>6&0003AFaQ7nL7RXYyakbe@Q4V3K`sCe4+(+CK@>2c36==%Zd?Efif&fU zrX_Jvhc z84f%hPu>6kfG7Yc5kW@ICPU7^#%XlGAYf4(00aQ_HljizC4XE5fB=9w;eY@@C@dGc ziGSCF2z(fF4;yCH?BSR0p#>#wDp?Xii z07pao0Kfo13}CfSsRd*hnMkLgmGg)IATY;3-{DUDfeyYdv%q4kMAzE$frA;$N>qRc z0|0}*UDHpGybKd)A(Vl2gJXGpSgauxW=e}Nleh|*gZuyp0|NebA0hdb7kENKyb*W+ zGKBstc`*w0^w>3!diGYBp<2mNBFOdM002M&02~W8nq-B)DuKiN7x)6;03Zs$Mqr~F zWa~aA7}kNn16TkE0MACiS^>nLzVM(1NCzgk5=(+1YJ*P<8~_*q9B7Vc6^ zIv&3dCP?$wVcMED*ZjXRp-fj9w4&73C_W8^7okRmffEA4vhutC_%MImd>HxyI8b?i z5()fN0RRwm00OVoDhla)S`973Ko|uOXj$(zydg(|jIaOjzz`G-V7Wz)_!yi@xYPZ> z00;qq1r9k7(tWR92#%vkj0@Z!hGU9T*d=YGMMjxY9LZ5@viE=Yt=80x_&)*wMkowF zLZVV6!*l-+eE{VYphvA9W#oSN0x?7jVPp%$wq;(eS@^?$#9snI+yH?Up}!NpOIF(_ z^j-h}fY`&92xO4#TcbZ5qmWDje+&RHR-}LqFU?#7QkD*X`ocnw_q3kmUkCm$06IVi zKn&qrH{c*Ll(lagi?;Q(ZN3lsnz#Rc5WoyH>F_7hR0VEe0{ggz>^Odt><##3@Dl)00U!k4$6x^dh?w7@5#0@8q9t)* zrk;7A04@SQapX2bkl_D8#_miP7J3;xJ{Mj*m?ee6^Lvgh*FbNCK#TJE$~Z)ljDu!j zSaKYMzWf$SFChbA*TDLNB?=>rwesY&&Y!fa=U@0N9raqRFzwOaPnVjg6v z#EJX9Y2iHl35EKSqeTS}0;NsMz&Nx9?r;PJd+!RAz%o`~C$9|o<|cQ(bsygo3hE{( zP(#2`7-pJB8nji?(8Bl|kN{wL^-+x(p+JH`>;MF;#~OGO@F=D)Tl@~#>x=R#)KB~v zhrj?pS&#w${Qt8FvD_qJ4bvent%9_93}n{b&Pn+fl1D zjqm(A_(dtetrNfG4gPpnz$CB$00BV&ZYJOcuK;*30003&06B@c0jt0pi~s-uK>!s( JZUAcV2IHTQDNg_Z literal 1170 zcmV;D1a12O0003AFaQ7nL7D&>yakbe2ZQKH6omwV3wx*mz$3!$oS%RF@B#q<6#c=2 z9w~df1dI6zrp4rxHf_6YuShz;wXv} z(l>A1z7)s5002NJ29PXcu8W_(4xh9LU8?ZF6aWDLawxC@4}buHiVRHX0F(Q`4*;Mj z*2;$no;VJ03}vxgXaEm@4FTJtjsz3NoN?0=Wllf=z)*naRzs!u0{dbgcz^&v2mm;3 zTc5!7&XBfl01iMQ_yIs*au#aWVl5mLF3-Sc0E0m4I@xM=xU^qXtAoLc1d$tR*^7Gy@)so zU?z?v04I?#uf#`mKZAlPc-M2z%>V-6Zu9}RbrK#d6c@l+o~thScAde}Sp2|c#l@R{ z#rdAc`q0D62WUyen)iIu!nybp3;dNDC@824!lvpB1A^c+DL@z%@4Ohp6@X?! z0Y3Z2Z;hGP&b@b2!nzVRC{RPdQ5Z&=LJe9f>1bX+2D<3{v19|04&T1^#!g-;WOlqSEk4Q9xNr000IcW z03rSW0vgP`08$MA06^X7abN%;$dCXCL7uOFau1tdcZ3Yy_y8(l6c8M@+<7TN0!NmWo4vxn}XKzJni~+lxDRE?# zJMj&A0D@PQE7Y{IJ_rf&KWe1a5p02V9`G0u(pU*D7QP*r#uHj6_()NcY2+u#C{Gp- zfDJ*wW4egU;xDxzWhegG!Y>$IEi(k%I%WyOr}+4P002M?d?-)jziy7Yk*tU7Kmk-< z1sFzBhprvYNMl{mZg9@`N&R1d0z+~bjw^jcDXmfN|ChxAG#3Q`)G!|zJs=nWTt-2V z=I$gXe|@A35ev)`n%v)Yf8Zq`1_RCTFxp-^lD_`&HUJH-Py#G**$^9Pz|Iczpz$uU zD2iBHf9(sN6GN~^yre()0U=i7ifGpMp+y;OE(i>P400;xV0s)gq zC3LC%7hrqe-~b2%r~^Y72uz(PNtYU*5CD#aAOeb20JEE)?FZ@yg{m*T=zbRP{ICFG zWHiMmD4vC+KT-rl!~_5&0)0)OCnAOfE~T%j>E8?rJOB_H0}aZ}mEzevU|lMSfB+yI z00IO+03xaY0vQRA0oV~mFw%nB%7fNl%6EhR7`{LX1v6S*BF(sGMM4oqb{tWJIsOm&pZS=w zCXX@ykPs++`xb*q6yHiSG2nhE0Kib$%$qxs%90!+3;1Q=I{Un15S7VlV=K? zk;Yf350gbM^`#{Y;=n@5g{_t_pXfk~NfA;9g3wpt1 z$Nj_vaK|M}m9l63{F$)o!_s=cBU{kizfs`KwLCBIh+3eL?$wGX8~{GuHiZRS zpXdW9P5TK{A1Lv%E@^Rz{tkFv1l8m>g6=XPG%?8h-?ecAfZywXZQe5IcPl<)Tez{p z6%^qs4T^X{phk@_Flws)|LmdFZb)dpT4-w~sd?%D1MnK~0003&0B$De2Co2kFaQ7n aK>#_4x&f=e8;k$|0YLy2LT-R+@CM_FT}uK0 literal 1524 zcmVXZ}QhOI*03g=68~_9+KmbCQ006D-24DaX12F&rMF4ueaRP$CC!2n? zU;rSnq9cF+K|lZm3cdgV34Gpw2w+DbquCAmX=LG@zcT`qm4>RF$kN^k_ zzyJ^f01dD(J9{sG_Q+%a9Y6})tOZc$S?_@e1RzO}&(on7m{A1t=?23POU1vT5^+|A zd+#6yP=cCxN1JdeCn|nZ%+M4t3X?0L7_yMowJS^F$Ra3MISGt_rcp$%0wTCL5ZP09 zV)#D-2tmUXK%qjX&p1%&P|6wr2Sfp&0^bkgA2_)zfCI)LH9rNL9G}8aGFy4Lz(hI5 zII7=ijJ^-R03a9^R?)%L13|4qX{fQm|As2wZxq3MRR;=j$a49nj10t#(UG15c>MeS z<_|~6QQfE^T+lK5K_zL_Zm>%=8?;Seytq?>F2_J>0U9#aq`|to_ zsh&%htyrg@_j*78AQS>JrF09uYkzpKFElY8VPJ!%0_I4`L`tXtcuK`&IG&azO<#a9 z2VMTziKRCYb+*0?07Oop%`|)ouv^B!7z12a9{(l;MU4X$gb_4>!rWn!XZt{4{Ek5i zM&nN#U?#rISO6wK7yt+b3cU$|@-aa=(|IMMfCB&l0C0$#0}oGvTn!Ja$EEOU3kQaP z%mvU?1<`~6Z~zbkR{#Zg1D6WQ*YVMMyVqk?N~joPLcRjv3Jdr`{0MXSX#LtZk01yR z|3PLJ00ID3W8eTF&H(E600uze$AEI4XxL}$_T(*K5rUj(7SIw1lo`e#2RHtApfi9Q zniq0L1BaX>Oxv<>KmZ^zTu6Wl0@@@``~-$UG<3}LK@xry(_R1ofIt9&1RQfu{MNuS zoH1=6_<#hkIs@rqMTE?Q6@tfr0e}K}2nPZ2{yEX{nYI&)^7t|!RG}bFK*-O5oDKs* z88)7>16RY8pzH&M_w%m*|NGbQK z`N0}zPIiO901yKdz{sJ@f!9JBFdQzh2Y41ZS1Y-@UH}#{2I(4oGeDO_<*&BTvlO7@ z*&tgYE7b4-WB>vHL4k9DD{OG*bAaTLqYVfs00;weF^B+k14ts@eJ_IX07DD{K%jWx zPmO>;%^|D{(rj;}i11(vNRc+BsOhww$xGG!;LZS`Ec!h@6J#Remf4Vv<^Tc#LyoJ| z6{`j47@ZWuzyJ^df!=9Dr)oF5ez-LJ*!Bg5qQe=3NDGS7tfCl5s6PP#j1Ujhm3Uhd zFY_RYN96&gVF{H0OouMKU;`clYyi&6S@__Q8)-hzOw>+;`t)eNDJ&bcY2TZs*ELyL)rO zuqM=aTKkor3gs{v8*38#*R zhZ!h5f)NtN43!6Y@9_l+Elo(rA4`oHt1UAQm+&+g4}jNz0003&0B$CT2Co2kFaQ7n aK>#_4q5-SG8;k$|0YLy2LTG?$@CM^E-*E!~ diff --git a/samples/h264SampleFrames/frame-1115.h264 b/samples/h264SampleFrames/frame-1115.h264 index 52665598457c2cf581e2ad007863c855b41988d1..92e8dc5f1e68c54d6399ce359619f3ec6bc2dc4c 100644 GIT binary patch literal 1284 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 S8;k$|0YLy2LT`X-@CM`A4<54s literal 1433 zcmV;K1!npH0003AFaQ7nL7HG1yaj+xKmb4l3TcKIX{MTCh8k&~|G)yA00IG@bN~SW za1sm~Mn*N8B6oW*99?jP02~4UWsm`<)-bKWIOqoEk>l_HDgXikfCmjq36bEV>{oVU z;20r-NV34QZaY)i0S5j72Nk0ANg!jYZ>Gw2>xf?`+!}fEWX_TY|)%2nGx+ zNv_ZcU@9`@fFa(ng_XmbWE)Pt4_-|KgjB(lkN;o@0Kfp>Ms9+M&9ljhNNh0&r}Fr* z5VU+y$P2&#AQME)JXiEPbG-kH7hD3^*i?*ITmdwYEZD2%jF!s9X$i21ZbFoA3ej0Nkuv zy_PT-;{a8R9>Ao`k_T`Wfd~|*h%kD+{uw~vsmk03N{n@g+fpwBA;1Eom&3Y1=Eiz;L zHD(uVf%qi=0RTZZbdXeQYX+Q$fV>5;48naJPiY>`yB z$zt#V3@}G-qN6nv%@#Po~igNHQFIIo=ZUf*DamkRm z4+e05C7*C9N7DGHdcus@gMa`K1t~xPKmY+m7u6dF$0U#2(){t#%rjx+*N(}=EcJW4 zKzI^OvjX@itl!;mfQOe4G5SH41_6xku$&N!qm3sylD@o$WKWNQs}N9)B21X?It9=$ z6b)S9Ta@o4(#w zHrssgg?GvUmyM(`(7(*=sU&Z{xivB0WW}&(V#!t%$o|4 z`4ECLFUo;4AUmh=Ld^f|{p7d+ByLOoudINc?u@HUfBssss>p`4-Tz9d6srJ4zyJUN nK>%(hmLZj9 diff --git a/samples/h264SampleFrames/frame-1117.h264 b/samples/h264SampleFrames/frame-1117.h264 index 524a63a63a92e97bdc194602e6bce2a685dc0e52..bc45d38e16cd74e496c588a87279e1e01b0add51 100644 GIT binary patch literal 1266 zcmVyakisVG=t53tRyG^zePjd7H=iehtDfW(k2%Fc@wC z2mk^AAP6B3r$)#7CJe9;$}gXRgv?pM3KpJPE%_UNbU*XHRbd^JD91Qo*s! znm33}haw7#)g>SHXtCIlWk3Jrz`!fZ1&{-2@8n+JW!5+Mhz3B1fnY1DJGnFz#$MU! zU@x};0O3xf;Gt&4TtTX`%Zy?0D%|)2oClc00@Szf1oxT zkRCQ_LiPYordJSzpun8)U_w9~`~dh7Vex%YgDhWB-~b>*NJIc7R?HvE;WRiJqzgcX zKg1+L0YTWMgcVH6pYI{Xpdbv^E2qseM95+J1jvIcfer#il0F|bcm@X(l4e0>Hj{XM z7!rv1JP}R+AXTURljz45mFLZfRQkc-u<=Gp31Q3Jz|?X_2C$yhtsAv1|K0)^;Y?zl zAfpOf9ae%l;R22QbaszK2I1OcFbdvYx1Blddlz;EjShI~1! zs{H+oYWM^e-O);nC1+VJgHQn1AOPU%I5v_Q z4r$fV+N}W&SupeV3prwmAB72g_V{|*UZwZvg>w8yEshF!C?(mC!hi;qz#JN`^O2R^ zCBQuU>=5Q|058+$p&g}&x>T*7=ck2WO?U|aERY}u`}-pp>07W123;ZaRzL-iuK#J7 z7>-WDp-Jm8M8p##OjTIscd=4>*_PXH3T#ktFK14=d?AM~9_#D{&7w0#O1KEvl7rn{ z;30utfL|YRKXU8@~#bq~726>(?4xj)40YLz6CV&R70C+F} c00BV&IfkKx2?JI>wct-L=x+xCJEDLEV88@r(I7Sv3RKn~|Nbxr zPyxewnsYX638RfWKLZFrmDfRshe;CW(K`rW03ZPX0l~uLkMHM8;{dooJ%oV9ASN@w zFboF^O$~yG5X8+*o@BTHdI(TbYau=tNH#SO8y7DWaSU(_2owL%;wa9C1Nk zK0X3lTF3^VDF7h{EaA;6WV&t(e63HO1{sbXOcilZPMEetCYUAo0ANFj4@N@_7>phC zvV`|ZGBOwbr$8&_Hpqd0&R0mFbOK{!+Z5D=|n7}m9{V;a_f{{RO- z8AKRZi0V3gE^tcrfJgx)g++|?i@?qa^#Nx#PreDkNl*YCAH((nu#wntb*+%H^IK_< zdt$Q+g`+P|8=rwSfQSOjqk^0OJziksW`TyR05Oa$VyVP?dst6+{};3!Bc7ug_Mh+= z33tdgd|9@;fc>kGsXK<*d)o*wp+46=~6g7{$n6-UzDMXlm!M1Ko%R z7L$DNtO=#~zY=hOP~ZSczypB^E{p^HpvZGqR^nGb0T#<)z+i)t#Su9r2|u~;du9eG8{#09gv{;3nA(4o-rhOY1R2#1Il`mc-^)uAG4f)>sydlu0<6OR=bK)~iD&PmWNkMKd=s96p8^v}dHNMtKnW)D7@36r3FGyo_ z?Q>5!ruY2@934Oa00BV&ZYH1xuK;*30003&06B@M0jt0pi~s-uK>!s(Y5;2R2IFDP Bt^fc4 diff --git a/samples/h264SampleFrames/frame-1118.h264 b/samples/h264SampleFrames/frame-1118.h264 index 25613ca5601f547a4500ea768806253f9769be9f..c21592110d397a7c5ebba78b9c05a6c9801e0c65 100644 GIT binary patch delta 1127 zcmV-t1ep8p2c8Lk000012`~Tv0YRD|8oULOfAEM1fk93H4jeK7AS5&VJ`R%}+1WS% z6C{|^I*^slPe29=Gn8CMxmPx;{ML9y^Cyk~a0VeifQiQ@25vjd3K{iP&;3NP90Lusf0sw&_ z`zDXP^eBhHhamAxrdX;D2>hKl+JFE+NDGdz0I~j)Hvn*60gHd!fy0CW+@y7I2Y?<; z3Y-{v03dXLqPa=hfIavh2w)Fe_kch!kYtgQo9!mX5lNUFgMb2D0199QeJ5B3P60e) zG@AMX4B>TuXtxdVVs0(46W#;^irByaKtzIoC{)P)f}u)-o&qqT23pf3I&>tZ7oY$l zvHk$S0mTVa>QL?0CHJ!s<>8vzg|1RE;00?XMCbu~tH1yd0AK*1wcRE(I7!D3kP)V;gwsZZ-E`s5JK;TM*-bl{@2~SLq zf4Bev01yL(7KlkM)~5{%qKQlzI6oLg6o#nt5^Lk^)Q-1KJ2;fBt>}_9pv( z@BktFDUXkgP|+UKd6?q>8ax020Z|1gF_4{2msVY8ZsXB6!#!Xqz*BGL-*7+@u#6fK z5TG^ILyZ=aC_mr;!-bCIX;I&#@eK+PoB@aT;V=LY2m^vlgFX=#dS<0|m@wcxPYUPY zPJoC534%}&)6?(-y|O~gmn1OPxVaF2F&PI4a+!WZ1}PJWa1*In_VIv_0?9?-`x=P# zK2d!wP)`#AZxR%MPSu!ifD*h$1$-yRG;DV%f3&5JF1TYvv0YD?6TIuet$sVva{C7#f5C?%us9r|l z0_%LkwxIuF@a9DgkT_kcj8dC!#h)NHU6NL#0Lh)TKR980q!^9+ubfGsI@N0YLz6CWw=h14$F20jt0pi~s-uK>!s(Xn<<)2ICd}&2Rt! delta 951 zcmV;o14#Uy3GWAg000012`~Tv0YRFe8oULQ#DREFQNRHK0|drrR*7Oke!3^K$M6FO z14dob4{L3~6zv5JzyhveIR&IO4qI3Ox8wl@)ok7Z0096y{dNEl0x5CT*ghY?kuQVj z@gPzt5P=xafFg$BJ4~pkrI}|c7)4Csfx?twG;a?DS=a!70x2K+fB+BzC@2DcK=^g& z86j{GkO0%X#N{zqcS(k^$#wt)0E7MgYvBZokG6ma!<2xcEsROuw63Rod;kP8fGjaZ z!bRN^(7q9dP`kqbpa2K~kpzG!41o6a6p{cfe|T9-if|Zs1s)arMh77TKLE%)z(KIK zZexM01HymVx<58LQ@a`yKw*n2qKgfK(XTD6jn|Tfw%yTbAh4-!bUCVk4l@s01yKO z9ILy3L?ZITp8Xf+&7^<;KnQ;pJ&81$H>v+z0|HPNDq&y{3rcbdN?2Y10Dy=(mPfFIxn0AL6?qf-=OR|co| zA^?Xt0C159&V`Qwy?6^C3K8L4{0Yke5C#(jpb_NsJOMY_17c**Rn1@`0K($rL5RpW zLX^w!bmHm{0XwB1@biF>0?9?-wT_I~Q|}kcQyJo5P2xh3Csbg4%mnf<0ja$qFoh0( zIQD$d03iaGO5$N%2|f@C42w|EtN(yfx@k<$`gyk5zLeM!{z1edvS69%CiG%6e>ve; z6IB3)0|-DU1CJqBH@R>&maGlG=X?VIEDg@4t-=l8Ful-!M}(CZ7?J&dtVunKJ^~V& z%XQXKUGNId=G1n;yY})#8vo~CD3d}OT*EbVWR6SsgGMS~0pHIG!PEc%0YLz6Ca9A_ Z1W6OB0jt0pi~s-uK>!s(YJh6+2IG`ff;RvF diff --git a/samples/h264SampleFrames/frame-1119.h264 b/samples/h264SampleFrames/frame-1119.h264 index 61bd9084f5f0854ec75f8d1670abfff2d2598012..d3f9d13608631662f99ea03b9d1dce36860dc757 100644 GIT binary patch literal 1421 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 delta 1023 zcmV;MD-fT9`B zNSOZ|PrvcM3;+ZG0Kg6*V2KK``TYz)`VZUyEMXM$>cTk8rssfyyhDm?+0{rK@o_z@ zSl}~)0gwPdmGYpF>-HbV)&PP5=R$Qu6IsQWTqZo&+~VDTwEa#20Cr$Y2zHV&ffWsY z08n*=N%Uv{fDC?xh-i`E00;(-Cjb;#yM{>2*n=^((UQOj0y!cL5+I7KCwwwN@D>08 z06>(RDh`Nec5!7x7zS$y^tdwQqhZ(H5CDb(0-k??q9PB=L%g5^1w5J!ncx5kl0W9) z;0OS~0v`Z>$6cm$$PFHW+wcL4!eM}I$>0fM+dwCWRM}t&T}?`F20;2w9DxOgVX;9q zG<$%t-+UkU?*Pmv(Zu$V?0bJg1OyEAl=Q@>sPX&v&;>Yp!AkN6>4wxTuk#bc&?w3* z#Y^Cn00aRK;belNTUa#YJO$t^`H56R=s(rqjFTsSgWgOp%=C1l!6w7-0t_(v%}ZE$ z(+3HQ;m8F*0IiapV13mfVqTyEqox27F?1-MuY0FTumBJQ0cPNlpJ)IA0)SGac1B~^ zv%^-cKEPyqj0eRzdH}G!TkrP)fCXT}>@SJzfL@u2JAq0*m&HTY6lTO62f!df$&kz5 z4CF(9CEs`q;{d@4Wvcnl-|xS{2cQ7&AOHvi5D8N7a5^AE!{CG<?nDa)>;{?r@)?f=*J_Exr(t!OZR^8F=5Aoz>o9)7S(pO8c9HH`k#f3`Oi zO#|@r1fgTbv3l)mlJE?9*qMLsKuBlW^_GmAG5_8$KXxP2ew;{=JRG%k^Xt3(H8JG7 zc#qxph9+w6U@%O5SH)x}0Z;z4j~w166VM0%HpUJLKmzm=s!?t(x?lgv01}V@ zKzb?|W9YEVvB44{-M);LhE_puzmpLJB7gt?{3Ks@Qpd(-IW>#OlXUSI%LC|K7OH6@ z1S9=jg^&eR&1mV&kxE4X5dRP)Bfyodz&uo}abWIY@Bk1f-~b>WNI(PtCV^mT3-E{) zd;n?%@2Otrx31Uyy)u9UfD99-ce8q$iNE_nW|zESBGsP%a0h*5@_urKfB%#3v;v+H tlg|Vrli&mrli&mm9q!s(Yk+F-2IGp5%s>DD diff --git a/samples/h264SampleFrames/frame-1121.h264 b/samples/h264SampleFrames/frame-1121.h264 index f6cea8cc93de53e88ce97f046e46f1d98bf97ed2..45b3be9868eb6617271e21dc8b43ba5f79557a99 100644 GIT binary patch delta 1718 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 E^&G?%$Oau4;AOHvffH0&!otq!* zm^8peD8FU^0Dw>jJTh1SkU%guqYM?bT=5!w*&x6Hh3dD~80P`t5D511erGs{YR^}O84gtI|5H#P z^&(5ui8mB@)jSFRFaO{hN#+Acqd)@9C=8>(OX9|w5}1&D00d%1DOk;vuFU=b0|5F6 zMLAKfD$xT0HGT?!XaePQuz|Bs9l{Pk03aFw0t3K0{8T=c)v^->1yu|H@BrX=ADRRT zgqeAOE&;|3ADuLqGAk3svAoGM6MUoG|f*65KCE`XDBq`E` zfCqd42!K#M*vqgeArBL?|AYUDwr0#VcTmPNfD6V@gbKL^i8Rr>KnMgdIK~VD?+Gk8 zWTmSFo30yE3C~3603l$ob zl?Dz607I|<00BV&ZYHP(uLwK@P#jDn00h!zXi2-fBH<>$#)uAyb0#0M!=eJwVlYXR z0Bal*#&_NaZ~>;g00a!EU!nghf z4HgK97VP_Y7R-GU+dcpM9c?zeiT`HsShcwPCahy#>ET?yh8V^T;zE#1iVkDQmANnZ z07{qS76UL>I9F%949c~R7H%b+zyNr>knho`VQqiG&kDerUsdu102v1#IJ)Tq&(4m9 z0qiUH>%eAQG`aFFTPTwVAajgFoRUKP4+l!5&K;eDbA_VJhY3(_<$S>LEA}kwpc2G^ zX6|Tbqht5&FQ%?0xBr(Kp07+NghdTv6sK~w_7G@8z!m%e00BV&If<$PtH2wK0003& M02M-NfNJmtS{@Bjb+ literal 1030 zcmV+h1o`^_0003AFaQ7nL7N~NyajhbLQ*~ikeq5(tTa3cO~7+V0stjYQdb;N=PAN? z%)Sgo27`maSS|_-fCFUPM3XZiFMxoi0~Nh_8yO*lpMO9Ipyb!MFp<=c^tS)F9Vh?@ zCJ3z87u&X>jkaDaOW0*T z0y`Q=2B0YbAqOPk%_?NNFAE@2r|$ytq94S{1k!1fD?2800BV&ZYIbEuLwK@P#jDn00zmA z#%!flXVOPtVJ3kSDs0E~VbK9-u^38#HN^zco!f!l03ON!0tQq#1kUUoW0KK|B)R+y z!$yBF;2;3rB*F#Q;G_iJ;3eGv6m12ZwHaKs9)hGu6!Y_^!&uFP=W3Pi zhOgHD2jEuhz)-mksv;2h>L^$L{;)&l z^uc*{0|wf7Rs_=gA+b0>Bn70NqlQ4VLM8Y9& zQtB=68Y?xz#gXp_dj9>W0G#liUqcNrR}vI~4-}Acp6Oec`@+NMf`(|l?5@s#HK1l* z#|t+S#4+Fi^72EkW}$_({|7uP0%?6$$PfXP;i#?md;-mP&x`}uSMS$=?wn#pbGu~00BV&If=3XtH2wK0003&02M-PfNJmt<~A(bzChf!*1vw0CrX{{SX(6lSES@`+;A+JFE+ zPz#Q*0FnNbHvni{2mSwg2Pwh@a?#dY|6ljE+cRu^RYTwb0??9-y1G0Ev|?W4|8jr; zzygZ3oZ!tdDk|6ZlO1VA0C*Z`%ubE_@3aR!HDdtrEMODfC5qU<06;{C0098tG!j3c zs8*!sfP`25s7)zl`qzI@L7D_2ZgK-9AsIv(>g-pZn03aAY zrTX_`L`|c&YW@$v11Q^sjda#iWHb}VGjO~o9jufRc)qd$KmkAkgUX_b0S`zSIl)i= zcm==!>(NNu+ z_9&y@w)NW0u%%g4Q(~Q)Vx=&4Pw-N|Mu{d zPzcoNVKb61>tv{x)&>MKv{_TZRazl3f5Dh3CpAZvccd6^|JncmfEWUbw9K_Dl71*2 z>;M1=DgO)`ZFx24|G(dzF2Br`2D^K|{q;V!q-Gz20L(x*?FpWt4=M`uYv>MBgbL-O zthkR^08HS(SGfZq-t~EwLjsKOm%$-C0Z_`&zMt&6Z*q5D004lvgA^FS0f>(#J-9`o z$QSs)1|7cO98Z|24Ms>U|LX|~ck7PKOW^;;01mJR;5$TczX3rsg)6pU{wi9v-v{SP zfBpDI00IF3P)U$y!XocX)UMkG903l%0003&0B$C*2CoPS@jMC71MnP75Wot5nP;$M z1mF!uNRH~vf-G485Egb^z4#Re>cIuoBIs^l&JL36%s&gu3L}!M0G?#o979J$4-zES z(EtK~M|=yLCPa8f-`C)N14%+S0)7T=-G?UokxA4~FHbB9usi{@a8dv)PrSP9Egt`P z0K;sAu8ZGMith5!8TWL62Q=1M2k`V5ahVpp4lqwG#Z^?U_#~JV1Ex|Oz3_1muje>G zDc}g=M&-{%KDy^$kdJ0VrSLEW(Zft8$%ZB+t5Efy)06m6B8HdqQc;(;u`=P@iR02F0P4WgLjF=CwlA`bY z5m*csrUk0!o-gNs7TV^Ci1#cIzH?JfLc9C>ln%7)tKK~4#;JZfo)v*MSp{y!IF>Dh zuVP;H`zkR+7!gJX}`X5wG iA{YX2fB*miK>#_4tO2XQ8;k$|0YLy2LTdnO@CM@%bvvQ} literal 1174 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 literal 1518 zcmV{h>J_Wu^jRk|K7O} z8X_4BFfvxEjsl}SsYo=4>)BYBko!QG3wr`>SXWht-)H~^;NH{07O79ffY)tzkl|81 zxBl)7p_=uU5Dqj`YquqB1RmjpFqNQ2Vvqg&06~sS?Cdv)bNuOkJVZ$FLJI~!?PE~zMjqcT1Vya_ z6@)rr0|mOn1kd(>!TDT*6phB3HpeIvUK^Oa0Cfi_nuN6;{;7N$1d2dN5D1D25Cs4? z!UD-2Fiv0&v;^YFm;ZPm13dxaOS7U_3G;SfNPlIxa0D-Cqho@fm3Wh!ZedZub_!($ z=XKmoZtwsE0f|5WKm-7gX*^wYP*5v22z`7J@RCA!n2}LNk-z{11`G!Y6^UsW3-N{3 z;?aNxfB=99Hh`qeV(XOyM&N8y7j;I#ar-=oOuzl44M5>xb#?w%NMF8t`nx!|_jI@b zXkbeh$iZ0O$m4iI;i;)p5>YMS*0?|qI{*U!Q?P+ibm|Dd_NpN(sF<()|LjXIpmrHS z5F-Qwqdo~p04LvAYW`Nlu$g|I0K({7AL(l@PW z54Qseig*ZDJ@7!S^VL6iU;zP~Bo8`2?Fv>Q4VA($0&ai+00BV&ZYJ0UuLAk}{(c14 zf#41%2tY{MX4Jp|%W!`~M1Z%hD)*Z+vS0nhlT{!YfznGaz?u9r2Mg$ja&&!^CAH-| zr_{>=aSfFyMa=xqz(Z?aOK1PpJbVeP4*+w=1t0?o>T+}Y04tkBQr5r~v^@E_hZ1()^MM2(p9%gR{I! z3ya^4W8MjkG`+ggH^@P|X>)hP21{fECi5@q5Aw7+E`2n5b(BhrJ_xR>Wly058aCx+Ae;|2mV$8WDFJ0z7P+?syV4Rn3r-K@r~gT2i3@zkh%aP3aagi1%iw z`R*4%ow}>KLXEkD0(pP@KtyqOEdQFR8cT{jE$07^j6SMg&MyW3z!4Mx00BV&If=Fb UtH2wK0003&02M-QfNJmt diff --git a/samples/h264SampleFrames/frame-1125.h264 b/samples/h264SampleFrames/frame-1125.h264 index 622a80e53adb1b3bf8311d15d8eb84c7d9d72224..5d6d79d64820cb7233e8e3699fa2a1b17673134d 100644 GIT binary patch literal 1374 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 diff --git a/samples/h264SampleFrames/frame-1126.h264 b/samples/h264SampleFrames/frame-1126.h264 index 9704e4c1f535bdcbce1322466f2b77816e706867..bad59803715b491a04549e7ea930b12b8ac5f0b3 100644 GIT binary patch literal 6656 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 NvC8!%7%7w+`yXor*r5Ob literal 1053 zcmV+&1mgPu0003AFaQ7nL7TuDyajI*6dMI<%a|GzMn(YFW3UPd^8{@|Mh|-NfdQc} zYEarA>A(O{XO~_+3lan@PhdOXNf$7CcoTjCS^$6-P*;Z4yj<5qJazFchw9tQjGMoqzqn1YQnIYl4X#NdC)z`+?U00R;gPkO7cFdf`@= z`2XAh24DaX2MHMe1!AL>{#zZ-dgv839KGieB8{iE9k$7pvcL01z1ZkswXma@xaF z%1_<|HaQp@QUF{AmJv`z6DI%+pa5vjU`U&Y<0idt{9phGFMt4qKmZ6tfCUpZ%jPhX z6g7w7?=8a#162R^ya{}?1!Foz$a;jt*OOn1GXbz6^4Y@)z^OQsLkz#6xFLj~0a!2r z8FcU;2!$$V5C8ud18@PucA9fCYzm`=OFsrN0#{ef5FI8*pG2%7fB=9500##Pl0Uzk zfaoBC^7z0m5D#G>Rv;!bz%UF33sDWiXb{BBO`YVp0DK4;Y4>25sqTXWST(x<5CC^X zI1lmTf8X%60tE_QuNl!BB%N;FAj&ckVpbS-PoV-${4i?3YoRto6t^=O8PJH{F<=2w zo>N3P7oOIgc@6*ofMLZ2eE9eYY-u1GfTRF~3R%M#Ov#ko6hNg)4+8{qhmi$cR1>8w zkqKrAegGH{=Z2#}h73i|I$4Dir;tD#8fSnDe;xZLw>^>`rio77bxQVy0RNYIEtpBbHOlj`pX z4BFWq=npf>lZ88w3%&XZ0bEOQ01luMU+`uE2Z|C6Y=6Jx9(GdrfQ(4aJHQz+!fFP}&;1&_4|M=2e8uePhlIy|v1`+@O0YLyc XiM#=;z#EJJ00BV&6+&+SYVZc*ZXBti diff --git a/samples/h264SampleFrames/frame-1128.h264 b/samples/h264SampleFrames/frame-1128.h264 index a495eafd3618f576aaaa0b13a8214a5600229e2f..b8c64c0ec934f80e84e8cda337bdc6e87beed764 100644 GIT binary patch literal 1356 zcmV-S1+)490003AFaQ7nL7G4syahKwV%NbPyut!XP6&FoYED@5bpWtE-aG^Vs~7|> zueaF!02~aa02pH-oAzHjs}Bso0>CmTc9b%TzNhaofCIcX5fevh1z6a~s>FK006=sA z6F0%G9y}Og#g=_xmey`wxPt5E+;umQtr0)`1`dK3APTHyQjG^$8Q6$tUby)QeSshV zAQCEs92je6DXkURa({pp85~9Xn}}+bj?@4G0f4m205o4@OTaEA0^a|*2MRFlQaHO^ z+dcml^F5EM@c00O(V+^muk;9Htd*Dk=_FV0okyUw%DsA9Br;f*R^Xu37-F=VA3CR|wwswA1VF#=-cU zvt;0hFmypa#R|b-VqgH@0P6k+0)Yf@_8?F+`(D5Nz(C(R5VD{La2W8X;=!^8a3p*j zs#+$Xn(zO?_y_>#*aHrLopeI@Y_q1&c`8`D2%@r3TSoyS_3i314Kc_VcQc~R03*}{ za$O*6XEpUA-+(fx0)VnGhO|w$LIjDtXfO-WbRYvl`O)m6wt1*i!q6B3e}n)~N;`V| z$x&t!cY>LR@BsmW`c4~bv2@wtHfh7~0hCR~iEOpeTqHG&QsH<`bDEG-MeQ&O04M>& z$oK9VWMN}F5dZgpr~q{YUI{6L$)~4AvBLn805&!v4M2HY^Y0V@3BUoKSOXp7K)d5K zo^S&I6wu$WOIlzQe7WEO?|ZyL@o1hG&nuwA-~a>wLt;~>FM3NR9YOqh&_kc!3#BWGd) z7gFDO!OO0sr{xkj{`xZm4G})MA^;IE3O*N_K?I6zm$zaA1kI*+3jjE?ae^*(f$3Q( zBM-#EfCD0H0b$o&(y0@_STI7fPYEnOlMc!p@WK`5Ed`M`t|-6%v;YGE&g%_gRdKlZ z$6y}}Cfd_p|KI!db^c@p2D^KgU-tUiro-@nWpE&@oh>Igm~Ud9K;gz6sz+C2yI+74 zC}3AH0%6?h;|v5(v%r_ZF*pP=EN;y1TPv9}Yrp^y4=@m*E6xSYP=24#d?^Q>Fa{NV zz&ZV5pmH~d|NUY^7iQ@>h`tZ}zz0|d;3H1iT?UROBme*e5n;tc;FrX}06+*FG?;gX z1l*OSQI-YS?Efu5G+Vg4MR`TK5d!)zx$^JQV$;R1YB2j)@xXl z)-*o?F-5&?dL30rfWVri$SxghqX?)kGW)?vE)X0H0NEtW2v5H8v%;*E4m8eSX|3(= zQK|2>1rWBvpujY6*GK*^<2(r$$@YZZ{f!7(uZC8>p`tJ-44o?6Azp?)D8wRk4l95F zKmyPTW@#O?r!X3i{_p?zx8~XHu*2d-FuaHCrHpa^=fi+aAOHXXK>#_4qyekI8;k$| O0YLy2LTLbM@CM`HiA>1= literal 1131 zcmV-x1eEAFaQ7nL7U(jyakiQfp}0-00;;ed}4KIlpq)5qFX%p0fK>}ZtI7& zw&03(f@WX=R+vgbVGTo+SOK@>0R_!M-U0vt06YD501yHxan;y9AHb0>oC*OjVGNiM z4e|s42o-=&xMwytF9!YdxiA0_6AHn<2WTDpTYstmaNGa@fItCB0#)@$5;#~c$2&U0DuyQ7zn8?SHQCI6cRw0HSK}`qQCJ6^oiN@D~}@I001Be0s}-i z;F-%{nbRS=g&o5Hpa2K}x(NV5umBJZ`tq58N&Vmt1A)ahL?r2>0Jh+kNj`!H;0J+I zq6-ZpjR?bb1`1e!1{`2Zi!#2z_PM3scz^)_3Kv%A@F`<2*D(MJ!2iGq5EzA+wN{G- zjs>y24B#-Zcly?1W}u`)Op9~FH~^zW*t0RRLSjO<0du0Ib?_&033C2`gNp?s zpa7Z^pXO~S4Nk?D3JI}83Hi@k)Hry03Z(P0g4u8 zCWHmA?P9=U;|B*LPN^f;2djJn1UjH$0z%5RKup_+;5wfKQ_Ud4fBoPyfjH4b3Ydu4 zMLofF2Y>(&1vm&HR8s}dxGlUHg@7IZ?g0k@%5YeWgy~&F(jg8m@M8#6$~+kP6O=3Z zE`Q(v2nd6*fVqvge4vn|PCSl-N23D6$O{YRA}C&{l4bxg@r(@s?PZ}u;*3rNTP+HT z&^MlsSuDRe-T(lAI4u?fiHV|I_qG%(h_y(^4&7aTb;7x(R1PO*f z5-ltKzXN0*S^?x0N2DV5`zV3JFa>?PSigg+N*%$*r~oIWv(Y1Hzyn|~`K>aFPk8_Z z0k`^g0DlG@6`z;@vMymERc{vd$&3r&j4ii^^xtA+kB9->A@oGgbOB5l=qdOaTO=YT zYzaEY+d{A2#JLGk^+ zJWL6N{7CDRP*OZcSAaro(y^Rvfe1Ia5i>x9MNBCwuDnbu^hYqLY3fV|-GVpeinL7z zWgtuT*C+S&YUoHygf#cGeA_hs4by>Efk)l|i;hAsGf8q&oJf8IBFWutEk#vgpfDz> zatj@xE;hD_gm>C`?o%ik0P+wV1k`p?JitOe`StL*E2uc>zZyw3Hcm%*IIR7OGj z!^8jt0gwS{e=m!s(Z-8p>2ID^6+@1gc diff --git a/samples/h264SampleFrames/frame-1129.h264 b/samples/h264SampleFrames/frame-1129.h264 index 26320d3bbbdea8a8e20bf2b7ca8cf7a477c64f1f..65ed1b0fef7d10b5257527c5472ca10f4769654e 100644 GIT binary patch literal 1281 zcmV+c1^)T~0003AFaQ7nL7HG1yagX9Sb4gDSRUU~SJd>KOIhK3+xr2Ie-ggtz zgK>jN>X%K=5F?`h7Dp!m07BdeB%?g39GyHV|G2;c;63Wt&JzUo{lw4!2n0RQ0Yv6a zV!!){z=4z3Lf0VTX3T&4)U*gaPLlOHR~1^P|g5aPUh6CY1vi?#z01pw6Y;q|?q~GtfK*2e6f>T>r?yvpA zKo|v?KrrfFiPV+%iLd}^a)2_&AAup(+6=wpaOv7}{I~t!00;!W1_Gv#O6gSgF1+)Wk#RpT)cw$$YQ?WXLqfCviOq@cl>=WFQ~`AQkFu z0XY;H31;ukaj5;Fh<*#7A-Bh0z0tn*<_l^d9&q03n};q2Q*|);2U;!E1&=f2BTmBp>KftNe907UfUb>DxBwd zm;ytf00D4ks<-8adGQHPlK1sR@q0+2Z3l)1O==#A{htLYe?j5 zJ1Wu=0jpp_6MOouWIFrIJ$4%%{>1T#ozR1PfB;J6$e`LVMfFX-;5Yl&FN)b@=ifR` zGW9)*BmaLqF9Ko%FbGgI0jyA{03_Bl%$he)ZOynA;Om&kh| zEJ>^fB$uGfa);Yt?dCA0p0;98_-&I1=;_drv^K0(1~O=)uuz;VIM z*oKYwVxpi329w3>Gtx<h113mV9*EtoOY! rl`0?q_s75g|9|jcIbZ+)0YLyciKYRoz#EJJ00BV&6+&r%YVZc*fcQhJ literal 1185 zcmV;S1YY|90003AFaQ7nL7D&>yaj>$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6nU;xA*xEnh=rV%*FOn?g*z|{O0aB_M~ zFj+lb^8pf^qZ~zFyvA?%VzuV+Oc&KqaJL+XFPdn;%t+0qMr;Q0`Okm+z~9Hn^mlI& z-)JzX&{;WkJggMeM(rk;D=au5R#@l_Kp`WpdQtSp|M|dwCd=7#_uqg66-@G6y=uig z|GUxv0RW&8l`EiK>s$NFjjUOri1P~s9WWU(MoJ=6Km)>dDI~CHz?#Lc8vtMpu~>V2m=PAV3|0{7gbWtz3===v0|(`D2vRQ^Xxjlb z;D?+1fCB(w*Z?F8;80LhhsgIZ6%qfmZe1Y6ywXa2;81`7QA4Cg2Ci9{gyRQk!T10& zXwU!%D!X+c00=w)0E3Od1tIIF`M=ikBo+|x06+i`1pr{`zg(3kaRBR~Y_3rD0-Oaj z9zdiWG8jETP#=ff0f3;xXq~nQcoHoMlC_8*w^WOhUAn-s8GFy=VHYLRlbTQa$1MdI<2nvR%*zDS& z_7?^o58m0fH|kY)Q2YP{0K%+03vmzmyNkwRY@22P0Dy=92nm1!L$bx@kMIN>6#yqY z7g6?LuvJzmpFjzL0Yj7nM{Kw6w2lQcwYyg1+ha`RX7SZ z4bIsCt0ag4xG4X;G55jckAs8{10(~R0B|)ou>cM>jw08ETC^&{9KcBux4*3U3Acn@ zU1`prd+Y#J9U~|cWFXhGY1g0s*#mS-jWU{h%PS1MMVk0O|GPXZ0%8L& z2v9TutWbjR0AnmP=Aw$VYE_LVz(k<(MCtwsTV+;IX7!N0^PcFt5^F#?CgFuFc;@eZ zYj6M|swVsU_2d&(Tz=$lpWrmY2;^m0YB0qr+HN#@&mZI*6eYWo?@nMj91be5he*HJ zsHgydG>d;(o|^Yez_sg3fJx{?PzIesb!&J9SaeVCnVO_0{`H9|$}DWs;-Yv~1lSn> z@;oVEM~{}=iiho45o(K+d;PpTmr}sk8>I#i(H4mftTG>rCvLXrFsWXQ9&yi)%jV{m z5scmdTT6Xk&;Qr~85pw4Jdoecu`F#Cd$IqjCJzJX^fDwHHemmsyZ>Kb5B|j90B4;A z%+Ifvy{;)$R)7E5r?>Ch+yC4c4p;yH0YLyciJ$?iz#EJJ00BV&6+&nLYVZc*2R;f2 diff --git a/samples/h264SampleFrames/frame-1130.h264 b/samples/h264SampleFrames/frame-1130.h264 index 6060414ac6c081d3807e41628dc31af7f736000d..bb1a304613fd28ec8f784efe454883dc10906a32 100644 GIT binary patch literal 1360 zcmV-W1+V%50003AFaQ7nL7IRXyagW;6vOD3RJ;I|DS$kjPhc}_yZNjcqC?-QE8{$T zq4Brz0xCfNSCvQ9)TaOWHHSO^GaGM7HlF|hKrKK6oEe6~1I)K<&pL&05C8!P?f@|o zive%7tN4(wv;+qya6!fki{i18b?fr@A%^E*r40TFiie|0ug))o#sCBzF-5D09P)q% z044y(9HZ3xwrr|SU+(|_pa&HM+euEQBj>5A@MXG#r5RA*0;3R*wjcGVrLl zi8?)P;{aku1Dgh{t^~8xBZ1%ngPceqG=*z&S_=dcXh5Vkpb!tiBzyptDS$czYvzF- zqrde308o3$gbo(2zX{$Kv@xIy2MOF|KNC!N159hk3tA}Peh72o0pw4TJ`V%r3;0JL z0|wA7sPJ22VB#Ip;NOYB4M=C+G&uzvUTFbwfKmJrPnnYZ85^2<0N3PT1Hl`s2P|L#0%;qr zL+=0}v2p8x{ls5B8mp(S{TpSdiV@FpNGOx~0J`QQKu2=E3h0bC(b z`#KltV;~SUxNraj3aVlNIhcs=_5guWv-wdfj@P?@5MWm{ueBF9pfpKD8~U~;9#29f!Y9#iLb;%P%wSPYQ=cmwSdB8!~MK2Zlt8* zC>TeE*58DR??j)IXpVb;Aq*6x z*ilGU^?&E@p2PcJ=1L0#vcm7Lf#3=%uqZ1examPzs6PM=oK~15Ax=9$wj^w<0gJ!} zQrwtHT%WM_mPC=={Ry`&NCN`H&|}9xFbG=vd(4^3 za@Kq59R36S?jt4SquLYA6eaWs|6}cO%jf^S zuKa)Jv)ww%NAJdl1Tc-qTK~CWbp2)Qgj2p=`Qca-OX~49Bq%1>U_;aJZY(t`(!kIK zIFIx`B*}nnIms|YYF$KlG(L$)bUtcf!c=}H7cKYDbwHp5CqA<3xB=< zL(}@)lYCAFi5TX6*q?)*7lAasAVL!EASD%gb{{|c<69n~Kz6)k`5H0sm@eCgsOa43 zebdPtO-DwTxJc#t@w*?{zyo{Ur2*1^sQBB^cHf}+S3+SG&*%&Uv;Y7BK>#_4r~#|M S8;k$|0YLy2LTUhN@CM`KCtA}0 literal 955 zcmV;s14R4)0003AFaQ7nL7E^MyakbeAP5Xd9fbs>GME770HTZW?4<}CT)AN$x&Q$H z5CF!uuoDh%lUhoe0=IvF1%P0I21(;yotI0PYpxX1t? zFfi6QZ7Sj==1A#HcmM!zP3)nF?h~~SJWbGFkw$Z5HxGQ{)Qp}EfFCt3z8BR z=)3@m-~s};&)3O<9~svCUH-v^SXb3xCUW9g&8d?+)F?KpbKyccotB^h@Aw4`4ofj`9KT;gU=!%cp3CN zwYew<`VbHtJLZ$qBHts;2k)Q?aP@SkRq4)rS0tI^VD=I{Vb0qI}T$Un2megEh@kOKrjQ%!C@b800IL*DV7-wkH^8HBloXA+{4Ne z0DM=H5CVhNFaO*F00(eEml@S|NIzV~o$M(>>8LUZSW(;(@EU+1P?Qm(r4|M{6U~Q! zX9xj<63b>Zi&1Uaz*6J@4ygbDKscal7a$CZlJWoV0uZ4LYRVE(!X8F07pmj`S=q{_!xll1^_zPL@2`mO?M%N*T?{Q*;h1*SN0F%&;s?aX#*NL z`G6SNUt(Yu6ZCz1p#Q(G{q7>w{y)Eh+MfqwU?%vS2;P%-b1v|QqJX2?6Uh`MhUs(3JEQS1U)|j-!>b& z*Dy2zP9yyoM97#Do@zWYWKu$}coYC?B&0haFMp?ne1Q<4KA;VO3zNa^J>e%Z00P&5 ze|56lfDrWlO~|WuCk}5i?SL36yYE@;w)cDIg3D#aE36NS_|UPZ90lv446mb1 ze5?zm>~g{X@h`f0B05%7ybye6qz!s(Xn<<)2IJz!l|TRh diff --git a/samples/h264SampleFrames/frame-1131.h264 b/samples/h264SampleFrames/frame-1131.h264 index c51890db4305926cbc9f64b14ff3ee480fe200f2..4e8464b9e16f515b418fa78b07663b8ef7ac3992 100644 GIT binary patch literal 1548 zcmV+n2J`s<0003AFaQ7nL7Jc%yaj|H#SY*Akle;jDJgLXX)56`g;U@phIx$d{T;Y$ zsAnmB5JaJ(0ce4OJ{ChdWc)Yby73BJ0Du~`V>Cw4Zs-;A$e+D}EKuc#*Am9iEa!{> z1Obc#g2)QTPu(^Mx24nK02{C&>4=c^?@BW9*BrT_q+fafNmOwvI!)%M8!MB<$wTy z000O91lCqMOa&OkL<8}YfI)y&lRjLyNQUB2x1a-+;Eo)*u38Vdizzt)0Taoij)V*5 zBkooM2n6U1;46fG5exuT-p~qYQ%W3wJp`ZtZ~zbj04Ocvi(Y+1R+r9*|MxHlLWYu{ z&Mo6~Nh=Sa0qbT#CwFFcd;k~GGdzJIN{fID?i~~n%MzUn;eX!322d)IXtRcyh~6#y z0096Kf-qv$;`DZ;(P7U306;V#Ai$K`JqU8BK!R3e81%^i3|-E$$My*S-7s6_`hEf^ zDOb=zfJp5w4-EJ}00_Wv^01<|$^#UnwMbwKOaKG{Wbh0C6bRuDY|Fja4=&(9AUcLF z1d0358BhWrQ?EPez^V5@$H%+xx9@KT1ALy8bSG26 zj?f`>EqzZ;U&4mM(MNy-8zB+JP4kr1qu>k}Nfoy$68bX#$%$xVEQOX>?>+g5rcsah zlXw6E0p~mbX|sh+N#iTmKmZU8M!*6>-vP9Tocqz%_yAjYun7);03b^Ou5c9$*xT^+ z?c;jl`cklDJkgdKhwRg#oB$zR%w(Usc@YV=Mh<^h7WTW7y=u)vGO_WF&jZ*ZzizH$ zilhJ9?uzx!UHi?L*8Wv;s;Y(9cyf-_D}nJ>}bZ8%&E`*Z~}*_ zfWz37?e=)ek^nIULM>=+NB}f4%r+b~j9Yfg^MC8W-`27F0-{XRIEU|gCo8Tq6v!L5BCaSh8O@_B@AocQ&X|?{ImfMzyJUNK>%(hs0Ob9Q77~H_!CR`6oA`- zfDfS%qyQR`hUi0QE3pay80lu=WnKSRyAkR@6e{NTZ~)D=`Ay7nYHTdIUH_vS{6GJ9 zY-Px!NB}T@zk{(uR7L!}!UM$YLWbu_byw{M4-TF}f*UXK^I|gb08RSe->L@Dl^^X- z#H;AuI0Omqvc<9O{!dGQ|62z=b4_3W-$@Xfy+ieB^*k#AYXa~aWf&I7VVG1;sW}g} z7NV*=z>pD$2x7bChD?&NEcfd2fB6A%>#;~jUrpetmds0_i$D7SnM9qk(Y;R#`xF$_ zot;89QcR;hgw{Z4cwE1<0v{~l$p}KomQ(L=JWN(DL@4;GL0VT~_0$BzyJUNK>#_4ssXFO8;k$|0YLy2LTZ3&@CM^-ce7Oh literal 1357 zcmV-T1+w}80003AFaQ7nL7G4syaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`L0eYF&+$9KmZ&71ONaF0Vete8E-4Zzzs{F$+SA4P)e|jq$BNBuM803Z>F%5 z?-aX2K>1GqU;wA2CG-v@1_6hQfGPj@4RFJF?A*3ddw1Xz013>11On<_*)U&g9{;>x zB917W22xk?e3d<;fDJ=CTOcWMdN^MLFT62YNxV}9^;8@!#{&)?pauX8-O>Z1Rbe@( zzkmS%1_K5*RT@soL@j}f(k~7{%Y0@*BGJY^HBVod>Fu`L^chLp*r1wWrvBf+OaOo( zPQ?J7(dwA8@8IA7<6sepSUe-^;l`$x_3hCR00?b$Y)o- zfCdyNg<)k@wVc}1|NIyLX4`zGyRx$!bLpXm7(hKeKFnF=5f^xBGiTc z00;nMphg=%+4RV|NDi!E$YC0?3K7JwyZ`|K5JH3wW8qny8i?v2f{-TZ0bn5@k|l@= zzb97bz5qY~KsX(m3T;vSBIZitVGsFUoix?p0M0Nne2U4{h38K z?32>p`h<7@APjZ^@ewm`TA-+?_a4uf^g@6DfcI7H04(jo!!}?52nB!ufJg!1S#JP> zhCmseTPXJ?OnsbTt{A9g{viY>2*9;);ufS4EFD*OP#ANXiNFxVa=f;Uc!We1Y5ZTO z1`K5E8UO+XZM*ORpMfB$|H1eI2C7h7zr6Bfl3$^$B`~svptQaqbS(>r3yk>8z;5nP zbrd%1tbjj&7*dwZ;@}i4yH$v?@rj)8jASUg$nYYD01B<3U`@8wtw8VZCO`|_M?!v` zec@sN1&l$agc2~R$3^L!h&wBJt^3%4oZmPtB~Vjt(DPj4?+!qVZhO`;Vl3$oL^n1a ziac**zGw(Sm{meK_E~5C>-{8O#bN~PWK>%(hkOr>+ zQ77~H_!CR`6oA`-fDfS%qyQR`hUjA>oybQ33;8Byg_U#tLb3;10HIfJcK{6AZo8S%G_!-}1#eY!P|Cdv6Vd;NTn_^GUc3)aQC%*u|A~Ws)2{yCY9TYBe@K7Icvb|~1>iQ= zz_yx(VNpJW;uo6>QPm$fF#=`?={w~HLM%}fB)?J1&h#?_lxtTQV*9THS%(u^ktrXn zAeOHK`|_R__9!Xf-h@o1+(*8KV~AWzbN_q*XT0t3gds?YY5Uj!_QfSG(T;uYlA5ov z#r~7Rz68^HoPXi*+zbf-qRD{7%Jm?Hzkhzfya$$q7{cAb`^0{~g8_&z$OK%+b%zN) zNf~T-i~w2fGR1^JPj$dgyKldg=l|j#HUMw+vv)Y8zkLQA2=D*^0YLyciKGFmz#EJJ P00BV&6+&qMYVZc*@KIr9 diff --git a/samples/h264SampleFrames/frame-1132.h264 b/samples/h264SampleFrames/frame-1132.h264 index abd0034bda9ae2527fabc84ed0147cd0e9f0b751..626fd1d514fd0237fff0bcc8b0a122dffc3fe09e 100644 GIT binary patch delta 1001 zcmV6hTl zBL-lI6$1gD00;mA03Zk<52r@Q`z8#q5lS!Lg9(_C0mjqMRlX%}?+5@9fB--bKok@u zcJP7%eKi0600}ixNQz`Fd*pQ8!Z6BVY)O%7v4lb03Z~Mi~s}xfDj~!pls>w z;2&SWP&iAtc_vlIfC1g0paKG4K!a6xsi+ZoxXd>BtEqUrG?7d<0s(yOE*(k%csK&c ztN<+AfXF<54}4hLLUR%ifB=k1%2qRFE3+>E0KgW*kxqst{pOjWVq2XFx3BoEC3B|>Mb%mGjeFlhAQq`{F;nk|jy zDVosb9_RT0#Q`T%%(2llX^S}f!3;pAlJO%75)|owLcjyQ00clN8ti4+6cC4r+W*0l z)EQCz?VDqMrB`(fYMcOGGK3&i$uvo(joJV}A%Vs;U>9^rVZ#yrwt9l(y|4HtfCI<@ zMA!xc!IcnvGg-mnRS*COBY*&d3L^jjK~w?L-VQi001zPn0RjKRAOR57XYd0cq=50W zQWvp*0#!1&ge3zXK!w!R^(8+Pej8ibpsUfb0}%hAB)|bOF_GBj3_tqOXTtzk!_R`k zP2bdC;pYTagF*a^gjQ1>3OBW07D{xYXD&}3`QBk&ZVylt?(E*;E*Duxhhkj zIMgFWpa@{t%OC+@#k7b9n;}9XBNUYzukQeV5D+Ngj!|JmN<6B~s_@mn{uB9vR}2OU z8gVW{#YTl?LireccpeA%owO6F7p)=S2yy@b0YLz6Ca?yt09z0%0pwXY)NZyk0j?5A zqLGbnurC4Ryc=*HA zA}}|f1W~(Hm%fWL#2r{C( z{p+j=xy50Z;0A~Q1_57sLo{bCGL>@e+#kFkQX zOL_n0wr*@BVCeIWfh-h|;bxVXD7)&q5+JDH0OA{2!2{7#z;s1d?|fP$-inEDJg4!% Xj{pDxK>#_4tdsr%s0M2QYVZc*!)&LA delta 788 zcmV+v1MB>N39JWy000012`~Tv0YREz8oULEAvkn^7*ByD!=Mnd+=I{*03~ozTgC}% zo^1zzO|?KQ%pV(o0u4X{0YQmUuIrH-ZFBfX06YK!06u z3xELwzsNv;feu*v1g$#(p^jbNFo-EF1*oPGY$$J`AkKJ$DTGoceMPMweAtH+3pRg}3_k%PZUaAoZw>BmJ|3EMR5CS=Y3xYfzLey#E8UO?Y z3TUEEE_~{whLSH{lYj;RhB6aYeyB=t=5~-z?fu|?0fCNqB^(Vl^00@CrrzD_009E& zEr0+Z0v8dk@B#rwln_bl*QLYM&L2z9yamVL2@AMO?%>Dq*0s+Kk?_NDVgrbwQo8Fs?jPDV8he1pZE&?LYt^C z88)v7gf*bx0$2bpI4T986-)c?6aWGM4gdlGM4A97kDdag!W~z*0AK*3O`_qCX`moX zz>olcCGTs(ACFX^e>~5D3_kz>KonrszvKi7bzs^RV>E6606+v``Q%hLX8DRJ_w0SK zbS_25ua35(_jq=vZ~kAIh^BWDxQC&v;QV4Z6#!6yWCKM-B*kR*@W7mGKoJwcVekM< zjAV2E6qK zruPSN-~b21^n170vt#`rs(x3kXJ`sQbfKU_?WEt>?yYn?Gw84ip07I|<00BV& zZYH<}uK-&I^YAA?fCm#32$*m10ODhRp5Zw=S5W%GLQNJcD8nNhWZVUpMf?M5;!dmL5BiIq5ggg1G;GCiV?m14;@J!$b36b&Fuf_h6E3Qt|Sc|swYsc z|8XWcCdAVipX)q>Wf40ig@1hZpSK>okpfM=c^KZmX$-Uj_*Na9FkKr?l)meKG$ar( ze_BQ`FK=ua&3QnuDP)q+{?7(rOi-4KWaJq@%3e)D%75p+8pz<$*$Ee z8eQ-K5DXPD;*=(Sw!yfH%rrQ2UWMRt!;|3yA(QX}3rF*p`|=bPoQ?xx&{cS28B-0l z{Q>>#f!s(Yk+F-2IH23ERO&H delta 1091 zcmV-J1ibr!3!({s000012`~Tv0YRF88oULOe+2`vAW{?*fC3O0FA_e+RCqJ@gnv{3 z36Tt?VHJsb*rfOa0l-N!v)MP*@InR8jV-joQVR%QIY9^zmxQ1og_IAjf4~zU0RC8M zfIv%b98xQ2*4Zzbr@>{s4k@l;`d7G_l;!6~fZ00aPq78Sh* zj|2DHK2eY$Y$mP1RF=0VpUdo%7Qz z9*EKF+(IvcH#mf>*IP_0gk16xd;0%#WN2(~i^M&D93VviA*MKJQsFg}>Gc2dcNcr$ zfy6ZEu!i*M*q+z!715?U3D6K$%vSsW0Dy>sKtW`+rNR~@`3GZ%`Ok?j?fu@^o@^E=ze@qgkeUSK&Q(p{r7;>(HH+1&0&ai+00BXN0B$Cr2Co2H2lMbJK!67m6AmsY0TM?o zf@0<-qxFP@nk-h$j1nBYhQJI^4T1Hmj#Fl3^T+4lO@#!G3PMK*{0Ib()_wn=Xb;Mn zB9=Hu{rn4hwGo*=uk`P#Z29U23&36y3!aPWy)EDEB4Np~l3^A4qry2HW$2RM-x;QV zZ1lNqXz?J6LH|%e03U2Caaf_6w^b7UUlMx|C_rE!APFY6rm}ZL{`b3cG83QTff8j{ z7YIqF`0$onh&RjslmoD&u(XoE99MWsA(bB=d;WM<1b6@d0YLyciKqdq&jP?5!T~@Y z00IPD00aSaya5D`pd^HTx)J^Nfwntc67;SJYs^x}MJVfd8Y^Y;Szo`en7imZa`>26 zfmjct0+0&=*TlI5xvofcyZ`oz5o|I8-_>4-e37jO1dLt%8J$Dhz5ol!s( JY5;2R2IFjk-G~4H diff --git a/samples/h264SampleFrames/frame-1134.h264 b/samples/h264SampleFrames/frame-1134.h264 index 0227ea5de59ddf81f28e07398ae1c78b5dfb3b0f..21388655eb8b9a0fc7f10d66431f474476be9aa9 100644 GIT binary patch literal 1465 zcmV;q1xES+0003AFaQ7nL7M;?yaj@hh!it`1A+>iLbk3+(j5Qw$A{hC zW%R}5W^exc!9c6^b_6uC4fE3e63~z#4Dg$@_uv4=$RiXhbw@CgS>SmtfcChhih>`) zgiHLaS}XtGKKe2Q7ihxISG>Rg5HkP)24DaXjQ|IeI6wmd^@1d*fuIqsu?2~|05;f) zLHc;N6!&s=00IE1zyLs)fEQqHF|%L#UlkQIEM&P)XQFgG3jkY*XURT&@6iP*8~_9W zRd<0YIsbcv8_|PE>X%K#9)B17G9Ww%0uta^B^l*N?AhT@{l)+n0ru9$aF{2z?M(mx zfJ4*(aXpimulC|FAY}E>mELhPCBOaZS_B@aNqU_tn){T$gh5mZVnFggzz_ofP$%h* zfB=UeYydI<1aUW^CkeLGKHxA?^{o-FF$Xu2Ke!0MZyz;-XS_s+9t%LB|L$M_AP^xS zTLIGEp*9N$Kh(eM_y8aZe8}*Lk0dR9!q90xL3&&6``G{j2{0{S^vnegf9LA}0{{a9 zKM!3XMQ(DQU;h3GfIzB1h56>xZc*U;07y_A5eVsR8B*jAJRfjvIi}D62wpkh*3}A7 zL<9iw83xB9luBLx`$P;Ao0ugv zxxVWE+9UyhvwRLZq6bu8-`*y`0kz5iMUFcHL#;F!!QPY}CALKoO56W-h0h7G*dxgy z5B>m1Rk-4sJ-w(=Mq5jQ0T6KHI!JKo+K~+_KfC||0C&K^RZt0CI)26%o_F{F0s!g& z(8dB2D`?WC#;3#pBjT_EicJ8so1g6m@H{S6K`&&}Wf2nL++0Vd8BIU|g(a3p-{ z22)Z3imn!CH{)Q*55kZl5)2mc`%*{F9wJK?JRWqv`G|~v{wu%$2nMrY0VWdI4WvBh z{_ERjY{99{SCasc=l}u)uqx*PP|c0M7+^dA8#5B(kYm@#7{AttX~`A(gMd9 zUyXrK4#_4umP*gU%;RTkSGDhP>5LpfIIwT0K5P$ z|BHh-L;qD@dL%^u({KeH6LfePLuo~szkb21ijk7f#0_rABS0~NF_wtq%k5c5j0t~X zs~odbrD}Fuv=?E{VWC%D%B{(BwHbe6dAqa_Pi3%WV*-Y7*PTbt)XJTM) Tz!ppZ00BV&6+&zPYVZc*Wlnjv literal 1306 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 JZGdX<2IB=A&UOF* literal 1002 zcmV-~b2!6refe!UjG|$rDh# zz6?bMgM-0XE(#1V05(k8B20fG_y`JcDLdDZv2qqk*LVPn!O4$sQ6s4z*>C@F9dG~; zQV}Tt84u4~DboKR`@jIq00IEvBM|>`(NVraZ1$5tdQk>I0zw@MMn>@*I0Qe9x)$c(uQ|#sl@N9MfAOP%&a38~wZ+`H#0tE_Q zuR2i~BAs5|AZ{WNV%8RROQ8~Nd@yRjYhgA-6t^=N8PJH{Ft7l=o>N6Q7pAtIc!z)h zKse%pzI=QHwzZHAKvDog4p@g8Ov!ZK6hN&?4+9M61d|0^R1&5xkqKrgz5o~y=ZB|3 zhD*i|I$4Dir;tDt7H7ZjE&=jRn5tBLiCEu1^WVSu1uM?)bN}MudzWW0K3r{i*?8I^d9Ik zYuQI1o&bHcPg(c6jE8zl0-C+}H{b{bxCnOj>A(OP1*wAHN3lErdE#iT^)Oxkmfy|% zUj|kO`{aIO3W7BCb zLSX3}zTjio8cv)2|9>gMAI7Q!|Lpq!Rdv1pa-Zr-Z2#s4$$D~UKYL$j$W$siN8h*) z)ED+)N|u9{+)5$m2;~F>*a4aC$$9Pof9#t{{D1^+{I8y%1va!)<&gKwd_78#?*FDW zSC9MkQRz56ngGB6Kn_&^5Wct6{9sT-bGlvx>100QS1_73LxKw!0azPazx~PpO8``b YyeHgdKj0m>0003&02M-P0BZ0C<7mjAD*ylh diff --git a/samples/h264SampleFrames/frame-1138.h264 b/samples/h264SampleFrames/frame-1138.h264 index 9c70dc26b462616eacf46e02e14a1e23e01d749a..19657b516cea999fd7bbe3892cb56a4748866797 100644 GIT binary patch literal 1291 zcmV+m1@!s=0003AFaQ7nL7RXYyagvHK;Z^94hjoUUJ&80T{A!vK7p3QPJc81_Fj5XUEXe;F9FK zw(vsiMqDHh2e^+gwY!Kh$db(za3+3e@Mi3G20~F=F0096H0HCS} zGG#Zr^ z(|xD_1O))N>i`QM=|gY_1>hLB{m2|RKpo0QR{(ecwfSM3@jNYWak>mvxHJ)2SDHemjD8o0Ut@$0dt^B5YZ;CfI$csRtsp~mL~F>0VkUK znc(0M3fRB^KtzWC0RZ4M5kWE01;aM0AK*(1S)kncIyiJ z>5y*mtN|vAqAEMU&TwlrW!wc8z2ZWo0Kx%9`4rhG_;@heLzh54pio;V zr4fz98Iq#RB<=vFVEzCE0|)fKUhGJTw07-Z!T11Y8}N~@n#yd3f>{Pm7lh-rl7deg z)!qOCfDR8XiX;R*B7u{el=uZe0PGCR5?c$ISC51>px^>n04_Kx1)vp6`|lJ00su|` z0suss03e^90;I?4yx;+V0*N+@g}KInfiogN0H3|D2!0c&;r<}c0f;{U06-idYoGE$ z1iG+k3bC3efB+x@Ap7z$P~IEnD3jZLv2-qHOV{UFq|EhrcBgOtUzpjh9nS2RJZEuJyKa{mC$b z;KCjRs8oVRcpjAO$oKnz01yEHI6+8+k?m@5(7Gv?Gt?pFL4J(=0m^WJT(otTk?UY7oCpPbMnS#m^DKr0-_yW~ z*hVLSR5G+Lr+Y4&+#Sb&03a?Pr3NrSVj;3_)=7D1E)GvR1X!+-~X2Urv?LEzvB0niAf0O9uTnz+z?{Qm+#97<3J z#8`}4*hH}_4;y-XVBB~>6hw6KuYgnuQ7_ZNFeb1d0p4-JNCd?_r0`y6Kf-_Bt|VEw z#$Qlj$}n(H>?Wp93h^f%6!<@U@cDPe+_T&O=Sa;hq>RJRr36&nxoyaQ=jy>!6^?jT z1k(T3JSkimDjj?b`mjF#{|gP0c^o(=2j;ZcAOAc8UgtHm@Eb^pf7KoT{^yH7z*rJ; z6ONm?>3{!Uhyb;`y${v(Fi`3U=he;e`~I*LzHo_5{&b>S`^OuAAKGiM|Gj_!fhgM9 zLh0mEw}}r10R$+Q^QwHaf9t>pqgC!r-g^K55CYzT<}!p!B;Ws?fHqHEtF!s(ZUAcV2IF%c BFHHad literal 1152 zcmV-`1b_Pg0003AFaQ7nL7N~Nyakbe2ZQm^K_HKJfIt!9(xQ{)|Goe{0stxh!v?%k z|CS3B@By3$HMqCpz{D|?KlKMVnuo(0gFFXN00aSsVS#ls3jfhO1^@@31&9ze{Mew! zi%5H9*>8aY020y`AOw%~ItnfVG29&G^MODn3>bp~0k9PSfB=Au1HZ>efpKg}|Gnto z04byoObpl-|7j)J018|H0DxcsrGU0jsY1evA38Y^-Z44GS_^P-_IQC}d;kD|GKUBT zRhg~ud5E$Npm?74Vg|U1BEqG4H?t5C{RJ2^iy|=dS~&?E(i%d>Co~v?Q1y z!~q@(Dsh4*_kbP)fTLX|93ph!IlwWNMR5E8Xb!y?Xe5?2}Y=^JLC0OSG>fC>WxlCu`85oq9{c76sZL!fmXthGB_S}&?q z#o>wskr`^_?&*vQjo$(SGNpC!Cv!t+yoeS=sB%0CU(P2M3P)XHu8JD3JI}83Hi@k)HrC01yv#0Aj|SiQ$2{MdWY< z%orXHMu?(U>w0_c^#Fl{N<<149$msh=iWnu&ukdNPm+!|fMSfZZW1yeN*GamX-ogS z0097TLK2F0tTW+(XAvjFDK{#0s#Mj1OO-p z2xjEnNX7B#{m4KVLO^N3LLwodC==QMQvfFD0003&0B$D82Co2kFaQ7nK>#_4vH`2W zQlHPjobVz6arlqoA}H!+;t99biDY z2Z8{=1MnkA0mJFao4C+@{Gjy&90>q%DL@|}<1u?d7UirvXZNvAqror&L@F$;YzI)3 zl%5fRHGu#Q^NtEY3~5R2J=E>X;y-GsD4TJHRZwB{H=%v%WJD{(oOn~%zi$KCU4Bt8 z7c`90Z7AOdfly^l+m_mfw?9@PWiihRz?xtB#sw>bH8dE$K{f~X?x1jRu-PS%!-jBu z8s~xk^T0N{UEg>cNQqbOivRy}#h>6z7UXU^ZqaZ5;5*O&TGv#6T)?$w+RnM0t`_v;xgmQHUD@4WO`d>qBGb4 z0Du*ak%P+pAKK{_tQ=F!vw+5(@Y_7{$zqVdU5!e#sD$Mnus6_xc~e SF^~WN0YLy2LTrF)@CM^{ci)cy diff --git a/samples/h264SampleFrames/frame-1139.h264 b/samples/h264SampleFrames/frame-1139.h264 index f7a9f85ea1295b545fcd0a63e4f982cb3f9e7060..17bf38ab1b1a47888f15aa66c3e8c46db78074ff 100644 GIT binary patch literal 1578 zcmV+_2G#ih0003AFaQ7nL7Si&yajJTV%Bf}hYy7K0JAV7)E2oTgwK*aUYj5Ic(9g0 z00<)h0EhSh2x~I%0Z23e0RwlT#ee{ZB0vBk270~y$Ubd--Vif;-~g$FP(X6uap}pQ zgb{~;0ujz3L^NAFNP>;Fr-n!|U=7+)oW}-68tI=#6+t1}e8;B-evn2Oa{vH93;+ZL z002OI0?C{R1C{_%2Rz?5upa}ZM0^02Ck-7scm4I-F#S1BQr}DBqNZhxy)CPgzyLS^ zy=y%t<99d*q6<oJ^&4qHiX$qtjjb+L09yI!6*PeGC%;JQ4eEtU*yxPy z=&ezJH*?_M{A?|Jyi4;|ryxV4H_b!8mmP9}nOF2mz0U3H*2M z(brNnko{-?DvQ9Q2+C0P!@0=}Yq~AY8Q$qXtMC9wZbK2pZ>WVesy*NG_@G9D;Gi0Y z1K~>lN^PIO0pcr3fHOxO zkpb49XlDg_Pxhau8KhfdRo zX<7Z?00;xV0s&J%C3Nb27+!ndzyJsYr~@&8gv#19sd35s5CD#aAOeb20JEE)?FaBY zEm3@z^YF4mC_Y#KGGrTKlenIR_evFaQJtfB-;<00dP)07D@%06PLGrW#ONSy1bRiMbA7s8}3*{K3Em0uwYi z=+tq|8uf`wIlX|u06;OZ6~G{`26_O1i~tmC@vjba(hDb({uo58K_3>S6K` z&&}Wf2nL++0Vd8BIU}p9kR*KS22)Z3imn!CH{@caLD;ApAn+m*3>NYGQb*1nB1;xL z9(2F?h>U;!E1&=f2BTmBAuWK~L(P5eyxwPw?oyTHz$7{V0D&wDxxiF2VR6C?!@vQv zF)k?vJ$!+T{b+`qh0bRw9vz4ZV1^g~UQp=Qyr-_?uzp$qhhP8z0YLz6Cg=vQ0C+F} z00BV&If=RftH636&*$JyFTmzOKtKqA5TOvK02NaWM1=Bq|JKj|<1FAwW1QgMd;o4H zKv2aBCrJ0IJLdtqA`mBEuqAOF`WTpW<0Xsv2lD(8&@2f9z`#R+Oa$hVjzQ`m_5!9L z+(YsL8_>`$S14M>|M!QXH%=M17NQ;!_sJW;0KU;S;pnbO;aC$;5CHxJ05OUQKmp@} zx;Gl`4=des2czZ?q6-hd@)RIHfDn7&IunN4ph_e;+=y_YD)s-=BvvGSKh2-BpTVx# zoctnqJqGbMcgBkR6)`)r)KU>s{}dwL)_%ePmq_2x|9kTO1OPRVMF|~jzLzy;bAK<| z1TUkpW0R*2-}~TUlmle8cf!D%vK|6tWHN!R1ePKG>D-7~Wv;-QqVg69yYK`8TnQul zy#aE}N}HJKf}tC{=5HNX6_dsHaJ>cu1@}MJ1wgXDp+FJ0LmyE|-TKWLJr<0MU zpm9LvA_SDMGk`j90BT?h+ok)V!bAxO_y8)&CK}jc9_IiI#ck-5a5n(U00E)kB)z%W zSZHARf3Tv5Y;N7gfC4a2f=z_nkinf+1(@8buI~fH4-#+$#w^G}P!h1+as4~M@HZXp cu6kFMPygF^-f#?D0003&02M-RfNJmt;~WOC9{>OV literal 1706 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 ZkNwXtiGaW-kN^MyK>!s(ZGdX<2IJy5v$+5O diff --git a/samples/h264SampleFrames/frame-1141.h264 b/samples/h264SampleFrames/frame-1141.h264 index 3955517b5178e333313da11204d462c0ac18366f..c385d333bb15051f9c711333848f7b89091a0d2f 100644 GIT binary patch literal 1764 zcmV1B%9%NK^EUcmM$am;iGGVk1`bJ%13{{lEYq1s{j5(50M)sis0g@BPMM za`!L+ghr(eL;re#13GsHB*&vILxUAOBs)zI#MV*LOJ!s*1_5QKWW;<<(Re=;r?>L` zghK^61PuHF1bTyd{0&r#gks142fzdKBVtGTC$9h)0+f+X*1f>3mczEJ#FVgalm+w7!-*ZteikS&pez|L@IU zDiBKl>QYKp$anw%fEWfsvtAOdP8=%#|F?t}Eub*b>sL;aTtzQL1kk`@hZw_#p7=ii z06+u|Dn4~Sj9$d@BH?NufBtf)C72B2wPOt+{zd_jxu>8FentR15WE2eTYz}& z2T3=UVn7BZaf84RdIa83)5l3MlB*Tq00aQS3}gct8kF^zi}*+qseZ5#5C8-RYf~T^ za$!s06bJw*I1q^9I2PkesM0xhzY8ho&VDN#dHVm{0fK5t~W>FPuaod5AObMn=MX zhhmWfz%W0=Qd>3EUt8 zpqvLZWCwzySspvH!Y|jm0q-aXC&0bnBR#t-rS0ez7G0Dv1H0Y?oHsUUQE zy=Iw^gzLvK&Hy0j6A2XvdPEZBbbV^~006>!1DPLdJxS~U9&!Vh|APndAqHcql?DcK zP*Wb}ViRvjVefGU_AthTCqEq^*wQ`o@h}2*0Ppk%1A&Dw{xVp>z~%q~2*3a!#rgmO z3P2A>-|Bz>KocfF0ARtQXqy!}4~T#iO@Kfa4XA_Ry6y}Kj|4Ia_+mf;=lxIx1ty}r zHz7>b4rD}21B&ire6kUFehY zX%XLm2F@!?5)h{ypj#qV0e}O6r~(B;L_@y$wi_A^e^>(-fDEO%Fp{}QZ@d9eMR;CL zqeM;DjqpEU0AW(Mfd%U?*m{)9Vb~^64|nh_2{nD=00X7~egZsCOsE<>z_Y`b#H+gz zWY^$tMgUI(-{7wjypbZ$fB^Uz0Pk8)<74*jh?qC&aWh?9OxFe`p|r;H@Da~j$0>zs zpa1o3h>Yk+;O%)aD@ta52Vv(cUlG|){%`_=O5g|<SF%NTVlT8D`M0iZ>g zCI}I07Tnm+H~zd0{b&sDU{oc~QAK~=uK)}!XiDq-zwxvm`mzm-djtK#n}z@$#T+&I z7)y2^kMIOL0003&0B$Du2Co2kFaQ7nK>#_4z5%PiGH3Jo_!EoZzz#TpDljd>+rI*4 zvqApck_rrjh5&I{iLP)uT<}-y04;wQd}J_R`{*_M?YH|8EPn$6v<1SCfN42!L6S)L{Su z01_o~8m0h0n<8eZ>bu}{x<4=zpwJE@AdC$6A-Xt)pZ&llEs;B1{`di!O*H14TYv^c zUZn!|{FXp{{KLd<=1(mL;jmx>Bo+w0z5mV;(3t=jfFB|<4qgWSL82Tz4)=g|s&Rwx zWBvYhy$<`Ym;G%25IvL$a^wl_HDgXikfCmjq36bEV>{oVU z;20r-NV34QZaY)i0S5j72Nk0ANg!jYZ>Gw2>xf?`+!}fEWX_TY|)%2nGx+ zNv_ZcU@9`@fFa(ng_XmbWE)Pt4_-|KgjB(lkN;o@0Kfp>Ms9+M&9ljhNNh0&r}Fr* z5VU+?$P<77fK3xH(O=N*&U3$eefP8A0@1N^mRt zzyOV785~n0RZ3&3j+#_ z4s}$k&_jPS0TaYVCrqrW%8I@K1{C2)5d`aSjJy&)JeyHC7~l+ypyjvV1Ly&{ShagB zU@^r2s~A0DDVZb=;4K0WDNhn;^?Up>fx%OixDJ&V>k+o3UIs&e1xGK3bb-x`{I$Xa z1B6De2*V03Zk^&XNj^ZD7-o@E3r#0hmvtiR~lU_WQ|&`JaxIcqGr5mBbSw{;vdNnJiua zL52wJ)KyXUsum+}fOG&3{zLcL004lX6saANnD#92 z)vHgi0-QZyrFjGN!)kCC0Co&6!uYPp1?iBBfbr!R4~lZ|EH74n?`{L&5OK+nxeo?# zef)<2Hl>gtn0gD($WkdDr!oR}@KofKT00BV&ZYJOcuK;*30003&06B@c0jt0= zXY={^6N});4lh{1rvQ(7)A`w5=0$ZiPtj&-Lhjq zxW=mZ5Ayhlem|T7;6H@SiUQ=E1aVs&rFZLrT3+u{f4c`&#I%#YU;WTH14&8_eTVK;Ns9iU8^_WFX&9kFRuSW zryiqkdOErPWib&Sm&y_DgoP$GyT=R>FQ>DhfEo}BCTI*G07wEvu0vG73`3DKU3&cV z9WKYf6N~=Q5coU=?vl-4y@7R->kq&00UDauYiYOu8!|i`4f4%=4xW~gmT!9T3$q3* zo@gTf0dbfAI7g810}unz8HW(C8+eP6!C-Uv4Qg`(ToAXv#53}~%5whx??3Sa*+8DU p3sAP8ve$YP5uKmY&%K>!s(ZUAcV2IB=Gfa(AM diff --git a/samples/h264SampleFrames/frame-1142.h264 b/samples/h264SampleFrames/frame-1142.h264 index 35f7d3113643f52645db13bda85f8e64e9cd5982..90d3fef892da6e4baa774bd803ed12d1a02f681a 100644 GIT binary patch literal 1196 zcmV;d1XKF}0003AFaQ7nL7D&>yakisV-h<73tRyG^zePjd7H=ieFKn;8G?XR3Cut?$%8BeQhWE{!*(R#1q@R?R``{_x*z~X0096!08mh!+rk2!H2>}Z z2pEne*QmpoNS~;pJOF?IKpBF<{8L{BW+;Mb`mO)~Kqy{3O=qN&TSne*|9OB000IXV z8ifde2+~+Ihd7u&;NTlQ0K#FJG)=w##6$oB0Z7Pz06+)<0!W$$&Ys=@^Uw{D^kxEuGZdYc1 z00Dq5hkY1PjVjZ|0xJ9!0MrK4DOn?DAU||p001Bw00INRJ33T8p0% z()Yj=01#IU9l#h?3YAw09uA1sT^*D^a0rFyFaf01=@1M9+btj7@BktJHrPX8@R|0r z&WPS2IvtSY>SB@J%@%GeasU5*1_9n^ERY*dZzC4lE^ZvE^4olLGF2|@B}*m00BV&ZYF>RuK;*30003&06B@E z0jt0~XY={^6Hqt<$S?z$f=FNl_w$7BfAfG3;a_`@5ZBAr>U(zBu_6ay3aJ1QABB-c zKTu>aAku(pG{_hj1IXn|h5Pq^w%!IGEPNv@9xxwLxg?xG53IgA62AL^JS#4;(r5j= z5DlGWj+D-S{J=~ZVt@N{4qxWd<|7+A7Er{~ga7`X6M;0pQ`|tHpzs7`6QmfB0RRFh z1f6MkQow|`Pao~!kJq};CseC3n9qKqVO=7qp~>2S5|uD~IBTCFv@$JEG7BA$+};49 z3;Y^IgT_h7S*Hk=pVIu=A7Vs-;rq@%%F>=+|MAcOASTtQ$N$?z6*D0Sh@W?_8UnvK z6Ht=mH-i~20MiCio>+hF?1UI72}#vy%`bc9)Y(LE-<<< z@mJ-p;;R5*&)@TZ@(%P%mkX=F9xP2Blr>hfZPXSq2!3LGM2`q-^}C(?1nd9+0YLy2 KLTCVL@CM@>>G#6` literal 939 zcmV;c162F~0003AFaQ7nL7Si&yakisNeP4lFw4KZcYuz!7_txo00~?UYhecobICe^ z8GIOu4F?B;uv`=vKmctsG%dUIW$+Lb;8J&U8)2^7D%!4lLni5IKidH@g@ zOrsXSo0es@hNqOj1U5Ms8!`Y?29^;}MH43g8-M_S1!piMO|&qSUbp@*00bAn0757L z1R_8JiJhSLjA@D<$HC7~!$gf(N1MQ&U(nnT$p8w$fDFs0fY?MSQ#gPB_`n%J0*380 z=4{v%M;dm13}TNw(gZv@NS8i|*h>Hb00{sALBgbuZ!e|sfLtIR!a%G*OlN>#7!DSi z8-&myiJF_c$8Z4n5HgeQ!7)SZ<|y!Mb^ss%?xz9#JrjSv@U;R33SzGsQ5qzjZr&he z8Ay?93_B;#fhN8T8n7DZO_2pH%|=F)A}5S2057MM(M|>Ft*2fg-~bQ~IH0ee9|0|` zWCKtXfDnV0A?B4bWmg40R;TX<2*(d53%IB!N?RclOcQ(nFd@$kMuQBOj2-l|3MWq> zfH*YI02cl`kB0+j6^F^50RhF5JW0{lsE^AQJsLFlTv9Lz6)c`S1ZqtxirZ))01!en zc)0NhNfnR3R{?=DKw*GwU1&y(;s8#_4x&f=e zJZJOy_!Ce#1IRD~n4pIZL;Oqu`?ubNQ@;2By$WA@m=M#|>vEfJV^Ly64kQNtlmOrL z3o?#&fq+13pgtvLI2Z+yN|*Qb`~8ma`D5Zl95O1{HPQjf&Jv$=um^=@y3J`ahado> z_0>qD`~pzj7JpNaclUS^5sZqDD9?rk|NT5G0%?Djh!hka0F0t^g9U&<0Ez)6(!d%~ zfeCP)J?-W*uangQdZkR^n49`|S4gTTcVGca%aA@CJ;$T4(NpO39s@2nHv)+NxNyLM zluSjEN;1|<^Jr~}5(k4?bFUREh`Z+?06=TY=xlwcCTPS$8JzU`z=*(_gqI<_7m_#w z$TAdFxA(lrL4pAVywcD1KiuDjl~06;pZ|2En(u(0P$iZesF57V>4<%NFtPeX!=ni5Bx)4iJi{>6AFd`asU7U NK>!s(Zh&g=2IFgafBFCb diff --git a/samples/h264SampleFrames/frame-1143.h264 b/samples/h264SampleFrames/frame-1143.h264 index 5909b0c220f6dccc6fe69ddb25fcfdf463b0f2dd..144345d6e3ae5a90546cd142786a02036ff5f92d 100644 GIT binary patch literal 1315 zcmV+;1>E`o0003AFaQ7nL7E^Myakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDPv6P zLU$D&Km!LE$~Gh1tD9B+D!d~3lE(lz0}!9UMC05sSuJ^iLp`d*qnUgc5JLiq!N?&Q z0Fm05@vdU39Pq(lv26vG|DgdIr>32H5WuASCj#VW$6h%et$)}62mzKD00aRChwPGG z@z9zd0}kWGGMQqiI3x0O-)aB>0U#|pzyinmOxyv%cm^&1at96&2Xc|sz#ag3G%9dm z=m7(y1Q*Iq%mMGf_(K4A-?#z+g@Yu_o8wtFVskJ$2M_)LOMn4N0I#I#z`4*Ph-i~n zKp@N$Rtsp~7AE4`0VkUKnczT**uVflM27$Y0N^wdKcJ{mr00N)C_$FExelKRCq?K0 z2&{jAFaS|PR63kHcZq%E$T)P?00;~rkT1AXeQE8sBBQ~IldRO6a2Qheo6{fwTp$!* zNwQFId%(h73|#<4K%lZwN+TPHbPa%%69N!Z-~fOFKf>l$12nAw$1q=~D7xF=1_8)X zfRU8dTi*?}_8tn-I00JAK{^0$YVZIFfC7V8bePcLCmcRUKi@nA6bUFXK9Jg8NHMBJ zwda`@07Se1Ck6TgT8))|-dF%c0098$@Blik2B8>Hb^smx05AaJY%{rx5oO@vez_V( zg=vZa0tIBbMSuW-XaFNQ|=(r+hzj+NLr@8oQpA#7XGSTbvG7OI5HxNpi#0SF=qHrL@P{tOAl{t5h40RSMV01Cd)n0G7L&|O{H0f6EP2{-1p&VRWU7ytNR5I7RCQVJR1 zdQ;OQ-|heaKm-8cMj{eNrK&?h=%P~wt`Ei$MIov@#E>-wmqHxB!HR;wh{ywtiek9W zIcVzPPywva9=n0zj!PQw5@3iP$U_tV z^1xQ6|9k)le+Xma;}kSUl-_1IfCi5M06<(pN(*QwQ)ShcS<|@qP4R)dg%}B4T(YYK z!E1=!Vj+gx+5iCnAOH|zkO8&uf1t}q0emck9z{y6f8b;PzX-qpKqw9gG7R`gUHO`o zn_ytWfFalb00BV&ZYGEZuK;*30003&06B@G0jt0fk^PJVO9RNhX#fiX2PVZl+w!`U zzQ7(K@NiiwQfI=3=!pZLfjSBR+7Su>1lIX0`~Uj^9FEm~eWU+h=nnecOKw^F`T%>c zzR>^t`T(P)127bHLVF>Pvxj@FXTMn@k^fL(@bN?+j13T6M8?X5?BD*%40(uz3oC}` z5MNdh@eMqF)ztv74b-&+$gKJ=|9N^k@K6U3fwVVVO4@C&`v5X?uKT`(()T-m_5WZC z$+eLxpZ~Ssw4YqEU+aiWhjNq=5bk)sr;DByfj40Qq<|0*atHyAGcSxT2I!OQs z=nh;!1oFR^-+WF0Kmd@iJkl?Lm6;%B`@i%1<%lROKGU$XjBEQl4g&br3u0Gw)uj@W Z)gQn5hBx>VU;qFCK>!s(Xn<<)2ID&ZHKPCk literal 1121 zcmV-n1fKf<0003AFaQ7nL7TuDyakiQfp}0+zySdR1jc99i9!LMx+k;GfG|)rZQU^T zw%ia-&`it#JoO^5u%)2N765H|06}$7w_qRu5CgZ@U;}{qJo9!Bhwvmz=K_FC7(*rm z13W-L0fR6J_Z;TNh2YoDccXv-NnqcDwGRBPzSjUaZ~y`U01j9dzotN;;)0Ef&Tla} z#9k8MqU!MiPVfK%07@KSBAl&XLd*nEM*?KmvoHk^kHiRR6SL@59!0+Z06-7~kZ6|N z6FF=XI%GC*qr(8800;rPi2y;c01yrG@|l21{ooz~frU0iDDk5Jw&0pcK8ynV0MHeB zAh5z1P>eQUVx_16VaEixsvNJlJ+f)f5C9MWp><|I0#-8pg75&e1Rek&Kv%4_sEcbXIaSb{!A-OtsC$;;9bZLANi4TOqkRuQo8Sn-G0s!uy7@=n3Xh2&2)-47u zFmeTTosRXv=>NF_1UjH$0z%5RKuFQVa2;jAl=Db1pZ{nfyTOPdQz+v);lN1Gs zlvf}3R&)$_f(a~!{;^@WJlFvqVhJ?TTJykc0l#Eg(66&kFG(LLow68Ngt)67#7T2r5h90djfp zR!1G*u!EdkU&C98C_ZNJCodsE;riJsao>O_B=**g3g%P)_vqpIE}GQ;^Fqk!S&u5?{H%k-Xe0I$FR0KmbwY`>l8-fiYaOfB(CC{{55%4I3?P nhh;Md|D*>*xA##W-LxdFn{B_i2LfyW00BV&6+&+SYVZc*1FqlV diff --git a/samples/h264SampleFrames/frame-1144.h264 b/samples/h264SampleFrames/frame-1144.h264 index 802aad28e57862f2996463c96de6f6f556cac058..4a586b1f36575d6b3f1d069a3f3823280163b166 100644 GIT binary patch delta 1419 zcmV;61$6qh3ZV;s000012`~Tv0YRET8oUL8zy6#kJAexWU;}^_3MW{g2f+*|g(KDI z0${HSz&w9+M}=eBWKAfL=EwhAK{$_q@BlynFaX1%`d~i;nMs%lymepdAOH{snt)b_ z>YNI#-8T;G(wV>D0?>z72|=PPl4$jN07&N$q8croq(Mf1+f&0N7_bKID9&SpBMo%V zU{nAU+wy=I(rCp{_?y*oN$t$vAix=hF6CjazPX`q{{~>f4}e)SfdF#A z3P9(Z=Jo^Nbf}Mj9f`w7PM`bhwqg2mmCJqI|1XM)nU*qKb^AevZtwpP zr6YgC@gwOy81U>+9J%gC5|2GkW1Yd0nUFQ`tTmRmrph4<%m#NaZuelEk=JvPR*gz-% z2#f$QFjjc0bKY#QR&;PW506-)L1$SAH zz*4fHF&uCGzyZTR1d#oAPJ}`RMe%I$|L*`yGr}dk6E03_B5%B5-~bR4?T{@JpSmEU zPuv;+j|sNcQO7FC`A7X^B#cHR%@6oGm01hV=oiw%e%tihJXaRupd=5INj;OD{ zyhgwQwaNfSjynPatu!)%y(m0OY>Fh6xBl%3PYJQmBi>RU`~W_EX3B5Q;Q#?J8PhY~fR)I?DF~N6w&SH6S3W;bwDwMk-Vtihv{}7$xBvCW(5*$WS4I z56fmEG5_`}pa2L4vtR+CZ-Dwk&wcKHy|y>%btz8rU=kew06>-nT;M7hvA5$Ipbvlp zW@21Y40`zk7y8i+ISZW5Qan2l6u}HI0QOMEzvVqQ55Rs}0Eb`z00BV&ZYGchuK;*3 z0003&06B@I0jt0fnfMdfF@qpDn05db(t=XfVMx}{8)8TR3HC?@{D>{xY{0004I;@d z186}qY>}$B=Ybdc4!{8Cfm`;#-!jlr8;kG#VG0^5X_LZmCWQb0@Btfb@|z{_PzLtr z#{~)+04jM{)dXEI0Djb|hNC!3|Nf!xGiOt*Qn}_l=kL7?I7cQpSR2sqz@0EwL9Cnv zlVA5gIv}3{%0DC6-+%4;1ORb=h!P+WS!`4+QX%=gR-1@Q8-NEM*zSZv z@7@{<6f2LfKKu}6eT+SO2^sIelAS(JSG*8Y$q;&D4=&l_#^vRt1HVvCKMf&-14aLx zD`K2S?NE{!NRf~Rqwu1LAh|%F-=IiWUyv^o!`kO?3|x&e61}E`j<}l=X#f8JBvRA~ zBqD^Bez-6uzyJUNK>!s(X#kVe1S&I;E|>sGR3(6FA#B$;A?mbwf(Fl5zy2@=0g)o( Z3yhSGAX@M+{)glpOv4~;i-s5jZh%#|Y@z@F delta 1311 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 diff --git a/samples/h264SampleFrames/frame-1146.h264 b/samples/h264SampleFrames/frame-1146.h264 index 948c88499b2c58866c0075bb4b300cba2fa6d961..6c03ec9ab88063c61194aab15e82e7f1712667b4 100644 GIT binary patch literal 1882 zcmV-g2c`G`0003AFaQ7nL7IRXyajJTV%Bf};RGUJ0Fc9j9L36pRFNHcQffuuMYh2# z4+584cxLtbZuqHJQA!bj1C9{@V6pz;=v0W-wzb{^0-%P-0;d^Nvq9E|J&1;N>x#&0 z;3NP90!2`RgADA&C8E17Pxg#3qH3GD{A$w= z8-)wQ2?LD3>-P3-vGNWSVcMi|b~m2r>K~xDHxG zARZ-(e}Bfn0RSK(`Dm8Rw}YTE6#xT+7!gWRp%yJ5odSZFv=FJBAXk%bEj*cp-F|Jy zP&)~lB7Z{w=v9WCN?RaM0_7j~fQYLc6*nJ*@(Az4ySM-tVYVc^>=l{NegFn5v;e27 z`P@JiMg~TMpO650hZrHXQRQll_fzTw5!DPLt~$iB9{>XmLR|Z4UNR(#r~h~XkO0CL zoG@Ey3)bMN|EvH&0T&ZxmIEyXP1BQr0!82`hkZ->zV$5v4^yPQPL<7l$Y1;z1K~&5 zU;uSI0ANH&?F+2J;6KoCF&M$i~^1nZ&~!)2W|yZ~hraiUu-bXN)t z;}rt|Km`CeB#-*hrbZSqxexzvyeB!$NGam>yBshHAOmA!Ak+tyzdqm$ssNxYj4`5Y zx)?0m`+yh#=7#-(8q)xy<_`b_J?5cL3qUXi{|Eq}l)RbYc!lFpJTG2X4*&o_1VEL$ zuNWK6V(3zdeg|)vG8{!mD$o4QFPaCVe*sVc>Il3NQwoz$4~z%mfB`rFGs^&Tyl5AE zYLlS+X@CHLES>>?0)ZSM?U`r00p;8X1OjMc;83T%0hItl>UH8ioC=*f1U@~$0AdTj zB7s{o%Sk4`TfCWyqpOwGdQa8wdjoal1pxr(bLuo)$ps-ovt!{1xyAc#0*l=KCnm!R1r4150Rw;zdEhMo0c6+!V1Y-GE+A+R)c{d60|6k4 z2sjg{hC4uo)V1|JIg%Jryf~A90s;hjPZXoSL8RCDMuP+|!8lL?IXhr{TB)XQ?uxz! zA*YN-j;%S}Mw$Qk01!hfh$+V^vBWDVF!LfJg9EHL(>KU4LbFc^EIN}9N*({V*3~zl z02l>3tTl;M#^d81ydW7|2rDN{NzEo3*sL%F$_NVPpiDoVTw#ET_mDVohiZ}4+DB~n z0D>aN?9Sz~d80IfD6dU<|L^yV0fk?%4u4pv9F5S2|GYaA7`rz~%tiN@0P6t!1ZmqV zpwYy{o*dR=Nh6K{#^;2-2?^>AgVh>9P_`N1P}{%&5Dx+sB9P#l+7fx$#HQ)@+WpW2 zUx)@0QJbJ$%pf|K6#&6I^NaogfS?2r6F6^20=DqCQez+g*KEV|`Hd~JY`A)kq%;WkW#D%Wdun^!-lXWZryx0 ztH866AM6T=Gf?6mz38AA=^KWAZ~bSBV##_4r~#|M7Lok?3DCe8%n*PJLwt#EM05Z701!p-PlmuL zrq(*0h~3io%p-zFSP&rxec=A^ zz#2jv2*$%yWLV2|`ftzvc-6r|YKfC4C^-^Y*@b=H-{49UqRA<7NKf71DJc-UUETzh zew{a7FReT;0&D;P0YLy2LTUi}?+pQjQ~|N4Q4x&>4- zw%!hCQHTI8&@2CO@i4e_7z0`yC?p+&_y&uV7pZaTR3ZKQ17flQ9mb_X3$%j2XfcrV z7GCrSZ0N_TJJxIefD01eiysL6zClxL+kJQd@3ht(nqU-OG+a+W{|OGXmDjQJx&H&Z U&(CUK`+@uk$A$463FqJn0uuQuLI3~& literal 1513 zcmVcV>5HcXt2y0QLZ6I0P&p?g$w<`L5Ad zK$(aMP*4CI00<#qX&g%wNC2`RFF%V81j|E$dtB8cy<#`E1^};W(iV*2UKlmt00;mc z0l*XTM?p3Zh#3Rn-~*4CJXIJ)nUzRzN@_g706;+q0KhLcUg(Px(HMiwPE!v@v(!G= zUfciz0s?U46uC{XG>n$r>{)xW+ADRE8%5Abi|Rf@mw2pATt3eeDI^{Y4#kmxbB)cU102vGbP&Chs z9$47gm&6~AHeW%QSa~CccryTTNc=#D=R$o7t4Tooz=8nY!?_DvXVMePD7Azz0JJq^ z?009B;cLoP4wb%2l6w7N~A!|GUP(Ws>>J*?ZDWm`h00;*FSXdZbU~{UaUV zmsR#a8+02ot+Buo{p!V>UE`0{N;;A4O?GLx3yfDWJri76%1A?b3a2+Z!)+235ybOl`3XWe6=>wY?`D=s-2MCQ`5szm< zf&c*l0Q6(*to{KviZ1{KgkkOqBnuC1eqwabnHh;t=2jP!zK1awG{q8XEq2Y}kTF3~ zjd50cJ~wUv06;9jpaF%em;Dj4Ffb`Ni~s__2o5NjKv-r@7skBR?$Ztq!O2V4W2v{l zU=OgWV7@Wah1Y-V3;~81RB?1?gT^=!DNVuvP5?mO8yc3#H}quv`+xut1qF~wOo{o0 zIxrCL#omA%5u=xe(oOji`kn@)h`L4G07*dwZ;@}i4yH$v?@rj)83??nR%J3qF01B<3U`59jt@+R1CO`|_ z$3lLcec@vO1&rfO2qa-skBZYd5O!AcTlcyFoS!@euT&NGhnnXXcya_=bKbF&5obtx zA-S;ZQR90h^FTrr;<6FXvdcI3U}`#73{P~C5B>YVGt4$+LiN86{{{e?pa1{?K>%(h zhz73!crX9}0YLyciJ}3kz!s7G{0Y#&7|alW2a~K#ZB%D}{-6Sn#Xcnfq|!Q_i0+iW zIOEWV3=TH|<|RDb1F-Qg0@%g=fruiqsm0?R!s(Xn_0g4FQBy09?<2`xAo?_4M1fx8Oa+Svr;P>IU2Z9-*DK@KZrXAOYs+ z5&x~#6AOnyfHk4QfMTY0cQDt zK`4B4^v`;1KmQ;TP+$#W1qy=q8X#(FPxr?aZxjH7whXjB3=eDG&~EF?^hv~zi-Sba zA&)x%Ult|191=;rfH^rC?HGcO!*ZM5_aW>C@t3VZ@qlU+0zM9FRWpU55_Ey-T!AaI z)@%QO2eRK{$IkQpzf;@Wec%BYQgUN7FVGG(xF@S3x86dP63bP}4wFN`)z$UlW0>dt P!Tbrwh4CB-=imwg^814p diff --git a/samples/h264SampleFrames/frame-1147.h264 b/samples/h264SampleFrames/frame-1147.h264 index 0a04f5dd9ad73da1e50bbcca8000b72fc9772dbe..cfa632936f69914c651e62d8b6465dd8c4645f94 100644 GIT binary patch delta 1028 zcmV+f1pE7f5Bv^)000012`~Tv0YRFe8oUK>K|@l!5QCiGiL*4oKY#)N0Du?+3Pb7H zvHr<}OaxMk_Fw=A1psryC4dP80|R<6!CO_&5vR?P3;-Bjt9@=j0ssL3f{EbFpdvA= z1rujz00IDmo;?|?6q^}PuOj>Rj0OM#0fiB&8V=!(a2^4F0FQ4M=5vUKto3+dkmXLl z^)&(yQY5`dmCapA$avK{d4SR=&;YYa11Rtk__3yhrX(K#0T_`=Rx@QQvp;|Uz&?Tz zPE>1(v_Qa3UxJ_-0J&W(AZ*kJaD$Kl2nK)vfbb5#6%VDgY=pr>06-E9rh~zn&JIjK03eQk00Ins7ytqaU=R7=bF>Tq1PH(Y zKzFdn07NxC{(#t0KzP}y3-|#lsZ>G|10O(z)YbJRKW9Ugig-8z5eNjZ)`8BDOi9G> z!jHe!9Vh?@4q7{aP>lrl-}8Ax>il<7Eno^05X4~^Eb1EYy1xN~o(TukmnBMc2O0!O zv;hQv8wS7u!NF}J0jCI1h=|1{M(_K;1O^H;YnEV95|1jYYJ&_>TmSFo30yE3C~3sG z3Y8j_6%Xmd4*)~30003&0B$Cz2Co2kFaQ7nK>#_4ssXFO843LUegxP?s_&Yz1NJu8bAc__v8~_;YaQD!NcBV+m;a4uUz}U z_VrCi0nqpG8z;7D5@!GU@~U~DCEo&KxRAZ)LjV8ZaKe>;PCIuBqgX3EB~-z`XW&hMMZuLJn)`>KcCO%^ZES#vuXqw1CyWx1OeceOuv2r delta 1045 zcmV+w1nT?z4uTJV000012`~Tv0YRET8oULQ;7JGsk=O)%0AT~S`+!8t;`yKm0F}YZ zTycV2=bJ&D!i2M2<%Tof4q2GcV_Os=TQz#urI%jSHs(wb0-ANK$VybfJ?0D}U$ zHMM8|xDL1g2rdegfCoW{vC6GPSwG$Y0f+#yVF*#=%xolo$XBN7AOj0U2;>C{4H=Q( z_^Fz|tcm)Z^Z*D16G+9-5g~eKXeATW{0Jrxt_9SP34n2NMI328XaLRt0sz#6Ff3$( zQw&-E(SQIT-T(p=fB+#*00a|0V*6taaX~Hz9RNWhLRb#%;7>2;ZU|(62Vh_Uh}t9q z;2gQkKl}WDUS>B00aOI=qLvG zQWJl^@LGX^0~oK?l}CyvW7mXojHF1`hX~7fC{@3Ig9By(Z-(3yQvB>7Jf#*qGGG9y zS`_hw1N7SK?-1|+2nq^NvLa-l65QfYJ^+{igbHY)PA+`vWQLM0UX#GVoZzyc`2~Tx zvl&pfbf4e=U?8MSr$B>-p#c|rpw1_G0sv4X|9}i5mjPi2D1d|(CU^n?$CeaL`578v zT8AWmQWL*|feQnU;5zXJkFV64B?l0xE@}U zO&AV?w|oMm+h-{xXa4v9+5%^M2rGn*?>ZKL{|{g=<}tI$D`1cNfB*mg|NsC0|NsA! z`vN6@{-ul=h+&B+?ahD$05bs6=|(kD|6U#dx`kX#MWn#LzKr-)@`(0yQkq=9!};Mo zG890dpnNx$tOQDb|6~aa;+Tq1uRg!PAQ>|VF}l@_ z8RCg-0q#@GY4ivP^^f>^GUXb8HNZ_61uFby00J^F08Rpg-z{4A+6aax_rL6s!SUDt z@J_n7-pBv-pn7eKMdHG~`-&2MEs5Zn|5cVb&4f<4cz%eKib9z;;KR=e=kxje{(nE8 P&*$^A>;#VjlaK_A&T-R+ diff --git a/samples/h264SampleFrames/frame-1148.h264 b/samples/h264SampleFrames/frame-1148.h264 index 81d1689d32ac541e7768c1682e5266673e5b386d..26513bac01e1f1f0f619a25312d3ffd4a9f5a2ff 100644 GIT binary patch literal 1249 zcmV<71RnbU0003AFaQ7nL7KoCyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zAuF7ofD9C7sK}3Vu5nkmtniEUPaFW?3`&0k=UhV-miL$xGun&FIZe3gZy{PDf50#m zMm9hWtZ7qE11^nhByo23o0zNY2><~A(bzChf!*1vw0CrX{{SX(6lSES@`+;A+JFE+ zPz#Q*0FnNbHvni{2mSwg2Pwh@a?#dY|6ljE+cRu^RYTwb0??9-y1G0Ev|?W4|8jr; zzygZ3oZ!tdDk|6ZlO1VA0C*Z`%ubE_@3aR!HDdtrEMO9OueqKjirByaKtzWC0RZ4M z5kWE01;aM0AK*(gsOEYcIz7Z*^qMWtN;)gLm*#prvBsI zY)w~zoS>R&Pq+*voW<+V02>Ge8RS!BvHW-#OQB1o2&fenN-0ExaRy|lvk5zeOvCU1 zAQ(TT`uAc)O{2GJ{tv(dDBFaMbknooUm52@S#m*!+MI*7bMC~CMq83O{S3J@+EDk&x^C%6BD z0&#(g2#NLh10Y3gBM=0HumakWI6;&MPzbpIAOIjjfPw+7rnmZ+iuJ*)T93c}-V%xd z8l5aAaz*`Yl@j{Ez=n2cfuQJGBQJxa`Bqx9>8Cn<9{g+MdPV2w`5El?)gBTz&5#-0W2(&o@ z{}=$nx7-7X^A!Q8$pydtVIfZaaoLG{ANarl)&TqmXpR@)C?=4lcFaG;OIEw!{OM2s zf*%OL06-uL2{sJ)L}BTgmD^y$nt&nL0003&0B$C*2Co2kFaQ7nK>#_4tO2XQ8;k$| z0YLy2LTdnO{sx_egbRxqfR-gL1Ky5+1i%8U2$^6S#VF$V@b7RNW<>|m)bITL6B`0? zd@(47Lq`QT1YfSd{{SAv?fI+6dtgS9o=^?g3FrF2*4_QI=0E-Z2M4-!W1sx+7yY$5 zSKuKpDxk<+ z0R&#CFz(GzAj#kO1bmFM@s455azCoDV=U_rH1 zuulFo`>XI$Zy2vX<>M!yPUJX#v@~zF3Fi3{0md94CxO zur$n6F@f+))c`RwvfnVuOE3W39q&^PaqazIX9GYDDF^?B)hRFi@>}ozAOFNyE&K_` LkI%rKegWWsENLhP literal 1100 zcmV-S1he}90003AFaQ7nL7HG1yakbe1p~1lQWO+`0uTrjh#zX{JQ@4KU#I{C#Ew#+ zisZd2VtfF=a6F0H?5Pz{9)WQIrMECjL17E$EFlLW;V2+{$|w(4ya6%*59EcI1O&F> z#UizhZIb!Gpc4iV$$#eXdU}of35&<-~a>y z018+ZsuLhc;Xy{mCpVa!q9=)PQFZy^PVfK%09-i0MLAlYg_sDSk_5@GY!C$$kHjC& zDQD2CJd1n)0DvGE8X?C7&RYcznGKw%?idAt06+!QNCFLj0Dy0ol*|H8?*MoT1`^p2 zqsEK^`+{jC`V0%e9tB>CEHsWZBJG!$s8|3n;{uymmG%d<%{Sga0DuJxt8w@gv8St- zfCXS6_yU1}NLh+iNUT`!TOR{B3?v`^wV0WxClJ#k-0;o-DDgHeOl**lkgdRA>;&@u zfP;$#BA@`85}(FR)pq;>a8Oq}=b~CY5u?}A5qvSxf+eQ9+Sn{()*(;*U+!il#UP|F zx#-}GPy!lp1435`EvHYT|AB#cAaM;kEFrx*b|-3r5{VCl!H^>m85!^f00IE+ zpctWMVqid4{@N`DEHGh6v#^g`8i#%G2oUOlgb52O*#R?eBY^5G45yzY7*7Ds4abUj zsiDw{dxGi@{lEYS0-OdAx@v-_+ZNspLck9{_W*-{gAXB8^8b%2?fHyaZwbDp7zSvt@p?S3IGBD3Tg)fXNTZ!f)W)G^Z)?> zKfnwCzz}mrW+=q1&5!Ov0EZ9&I7ox%g2#Z~yakW~Zh!y)0YLz6CYT1V0C+F}00BV& zIfKVMz7=#F+Y~@X039IXGQxx_DB}3x?gI=- zWOYUR-~Ne>fjGVzltUq-f}8|jy8qw<#8&i0f!^o@>RUEY8?ZC~=>Q+{|H?tf-vPl* z$5$FJ`vEz=Dn_2c82Z(dh#LO{@YL@cM$CAB4~}UWW`hh_MgRIUOdtjjfXX6_Q3U!k z_d4sYwznWi(Q;>%6(H>hWX)M5CZr_D6jww0o;ZG8^wcUU7lya3vQc{ z_3#XO@1WUth9jUW*0SYuJiyNX%fST#cOk;{#55{BpiHrO4}w7S@E)Ae%$cT_%MkoQ zg>9!Q^V%^Y15Hz*U@r-oKnbpCuTB7BQCwgHP{h?P S_xxB5UIgRD=ipC20PsLfYSP*O diff --git a/samples/h264SampleFrames/frame-1149.h264 b/samples/h264SampleFrames/frame-1149.h264 index d557d3baae5749178d52914b4e5349f01c48c2f3..6b65545df5a51e9013a9c40744f23399055ed4bc 100644 GIT binary patch literal 1707 zcmV;c22}X~0003AFaQ7nL7Lziyaj^93oz&aA$K(FB2tefmHiA5-^9QR8megidi1`c zEUk<-06cKTw%sfLzrZ@W+S-42(+mVX*K~gT3bJ$3AAWE!Q8%Bjzu!{LBs%d8ykdvE$01yFiW%f-)RNP1Y8@&h& zAzIqk3dn^KAszpv@U$ffiw%JYBftTN*upHbb%H#ae()MKOaj|unmS1%;26jRQjlT^ zl!XSES{{ZnBGM#)swq1pZh3$JAbtP>4?qARY5)QONuD48z&!hhQE`C)!ph(XQ$Pv4 zM=(@R9^(rksNey5zyO7UGYR35p8L}HsHvG_I{0epUIqZ*5X)J~J>BpAh!&(M00;%E zZvxhP{`QC)h6R`PE~x|x70}&+4}d@jX#n#KI)%&ZO{1^<#sCGtF6!Lm4}&`=aT)*t z0SCGO9B*VpRsY;00s}9<2eL?#qAI`q1fFZ|MGT1oh@!v|SPgp;6HabVN52Gj9i61m zEWs@oj{Y#6%yI>0pq4Rx4qrj@g}{U`;zESL00aVRIRIqP>zmiWAp9o`K$=GxgtJr# zxuz!@jh=%R$F|rW1-t^*21WFBT?_+28ACA*8S3TH2mNpe3hMx3Zkqa~z~DfZZU6tk zlu&U1Iv}AF_WkaBBquF@udUz)AUzU@h7qe4xA#goFV=HV?*mkX|Li zPd;E*CC=1tya1lkfv{E7=0EE}k#JHN%^ZQhp7)R$7nl^+i^8|PV^vrF|I@sm{-&Bn zTNg#=xlCD#P6LMCl@t7RAhrm!nM88;|JhX|oH()!Nt5IufCyBrt4mIJFaZ_Xc3UUo zNM-RrjRnC#DGUd~o$dwzbR}YtRcc*Jzu#zpz=&>e)mZmY<^Qxu0KgV)0AQZkGuwZE zcuJr@O?Wfpgp`3fO4KdVEsiFY_x|h!#Z^OiqRTlQ{oxMM1S#@w^wERr{JvuZLpUOj;2RJd#`hGZ9xDC=0_JZ6wIc1PCl71< z7yv`7GtjdA-~%Xh@qI=>q~3z}@C-pB`$0TU7(@Mc1?5KokE$u}RC>ZQi z{7?k|F}X^~1QYl};mky1!s(Yk+F>CxJd73nIcC5q>)00dRM= ziO2JZH~0f3GZ`~>)>=(WG3C4R#KJ&X7D0jFJQ~;A0=x$_pa38l1OP2y{0_7YJ;(u) z3HO2)^vh=Lcuo9ghaU3?0c4_j1qIzl5O1EFz?~cfAA+H zI&g)-u*7)BYgRl40CH!Pp)GS{xMM)+V(KPJR9pYn_{aKxUh$O8pxAPNElg-s>J!D( z$5>Q&;R4Uv91`M<{vyZ)Jfe6pAve?z6Xbvdt1$o+9dhe~o<1=JWW0dXJuj4W$o4qU z0NXAcL+CR5`T(|DjDV0V@VG5;+aAN)&HsPF4ghg+Aoz*wkWHNWhs8uReuz_uPvjUA zzJo->3j==u4abOpNOl5O-j;v>fB|?P2C7Y(|H;u1GlURxL@&@{q^NuU;7>eU1HoZR B@`(Td literal 1594 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 literal 1843 zcmV-32h8{Y0003AFaQ7nL7KoCyaj3ugkr)WKmbgLWp)vml2XPezz_l@fD$SaUd2us z5U*Ivi-O<*0ij#7^8y9oQH@>8|JXkR3fa3PZ_$7M?BD~yRsl~8Ar{V%Gr&dwlsb8W zwIUAAav@vr2v8hev%xSMR=;WngD`maw%Z$k0RRMMcL5`g5C8}R7z_dsSb)~cq3bDs z|I70W5OL-jGvI*Tq9&Viyu;!Wx=B9U0e~9sLTXBVzVHGca0iRlXP+GuR0YJrtH>;a zU^fa&ni+RO@H_wn0mSS)SMWb`omuVtegDgkpoL61w&Q8l!P#I!XG0DZB{lF07>`T5 z>&uag5WoN5dTX#Z*oUkan0x>k=!+WkWM8>J9I}9r8waBI-uRX5G=NU>)!;?WcI6YU>{jQOvCP>_^~()}3Q`^f}s z#xfEZF^G2nGKgH+EZDZRQ<~I4XiEwC`}cYQ0f7P&TSEj%yX1%0q56yfj+ju(?Dk4` zZH-2Xz9Ima%2R+a5e=e!+>E5qN)!ZYcColkzMTL5))X0@x75G(`wAhmd@>3_?)&%v zp*d#8g0-LB0YFrYf0fYqP0#-Epl;LV-xY2K26~8N02FM3&VIyqHT!R*>hFT441%M` zYfm2~(3itefv_+Ga3}+yqy-BJRBjEvTS&qrzwJ&i0Z?YhI}=kI_kaK(E(*Yar4_R7 zbmujmnGHHm04PxXQqXefz@&fxfB=9%3ke4i5ESI4PhqvRpbH*EWN8?>r%(IpC4iZc2XyI5Ya4PN31xK(OEQxp09j>1A-H7AEU+Zdj1C#M$u2j3$7N+zy-h+JwS_eQ*B5J&cZ zzrZMD6)4=?+Nq2G?FRF7TO4(Ad$hwKyr#kpb4u^^YIyW~=41c*t(8)TfU7!3$E@%G z1O`C`91U=Qm9J<+8DxNvDT=L#27qk`11_06fUB?aVV$nb2u^xdKww83SWy&9`G*$* z6{|zaZsd0WA_4kwmPr=l%fSXqP~;X8KK*dz&!S(2ZuHnVx zG53cc`)+^OJXD3#_4tO2XQ8;k$|0YLy2LTdnO@DwNZ76PmU z2(cIdQeq5n*wzHImu2aY2o*5^5CqBuKiz;h*rqFt{!waslpOIeCn4n$C~#YV1*;BX z*g=_MU;F?sS-~ZDDBtb@EW=}+?FH~f#e(>l3;{(lX~(B7KI)^|@O&Uy`8)quI}C^s z5O?SVXgH(1Q@8>EteBSou>Fs1|I6??EKN(mnH$vnhv^h5-8e91&Yd~=+zR4I4|M6P zAM^k605xq^hEX5cG>V&#VT=e64h)#Zgo?m&m*gCH06>5LfSrpIMj!wnQh)#;6ed{l z0098>0250GtjKX#;huTpC_oE%nJ_3guG7M~emEcms1$J_Z5?2N)oTtSscmKiJ$LjY zgA)j!2mj6h7jKtAsSP=_{8QjgVE}-kA`67`NXu_u--WCQTlF3^HEaeo{Wh9c`$AB_ ztR4m;@qSC?De9s)i%JM83KEDJ*{*sC$u6V0zpr?8%K#;)xIY}YVGip%j2*%Sc(MNK hWxB`wddCUao)#?jbCrw@$A7_x0&(K=@F$;uP#|d9DWw1a diff --git a/samples/h264SampleFrames/frame-1152.h264 b/samples/h264SampleFrames/frame-1152.h264 index 5a8f1b981d4d9258afb978313a50034590cbf128..e947f34ad841b91166c97fa347d8599dd5d97fb2 100644 GIT binary patch literal 3014 zcmb`JX*iS%8^@oSu@7cQAws22WNWb}gL7I`MoA>hh!(`iI@z9~Qb(a9OD8d;62cTk z1~W)?Izq^Z7)#m4n2}{R^E_|oe0aaSU*9kH|GMt`{_?-C-*sPq000n*7C(#AeS?in zvYHlMK-yh$R(;uZSt5FcuOk|F5LbgxzRJ^PnUl>bvvMwiVFu5`)Gu;5BU-Evu0~ZX zw%1?vOV)?5W8sD|#vI7Q78cqRy0ycwk;ivq9xj14um?waz9+0IA`9@?`zWGwXK0r(%IxeCS(vV=&n!OA^?I^p_?q2I z1Vjzn5D@6D7cb!-dzZL?N&+*g*U*ymdz-%5R0=V?Z%@Q1^70D5EM+TSXI_u61({iX z2SEi-4`JA$?BN?t=yZ;!(a3J-4UeyPNe@6GnQ|M#Ec_@D0CodlQ5$?6e|vQ&Qzi`F z$%gAfDOCfj$O;F zxl_xq{O~oRZvCFIu#uvU(0c^H<#5x%;l8$1nygr;vc@lxdO5;J()#^Vjs4S>uWpub z*@E)C>eulH8j~;#iS1|d_;71A0|P5WSgYIR#=u4o;5A*hvH%#)DR07F&CW&pS{0yK zvF#FZm^NeG`Cv+91b_pG*l9~4S+9XFo-B~05dj4m;7Mj4V2IUnJgbyl{#&j&wQp3BzC$*yg^?A*%_D)Vao^u>CJ#gfb+#D`9Rqgp zQqP1S){6J-$~dyQ^IoD`w6IexdagwfA2uHa9UPc-$y@*qSYx#c3eC9>J-w%#Z_`C^ zMY|NcI$sFs#vz_$nJ}1GVf@8&21=s5&p}y2J47f3WSWF#F-W^|RX&-DK zw{&%ht*zMpX1(|QBlCQ#FOBwVbKD$YXYWCeFe2Q~sB=m1U}O&ahR!OG5ofUD zFYyr7hREh;dA*Vy&A)DD?J$EkUw`5iX^!kkMvqy~qbLA{hPYmEbRAI_kddV*n+ydd z5_&+1!(XmFu66qV?FOK5nzu2aVx=lu`+3zdj-cxTt93M9JNWoWbAn}kWxjRAscv`y z?=y=T4!$aVTTXBJXju@w(O8Ia zCd%Xh%tIrCv+Z_ov5F?Q8UcWE6G7=N&UE?a;%$i5J&HwqDBS=cl{vUf9Dq|8WtzA% znXdy~Xsz1Isdx3xZx;w!SWxWO zGA?A#JzpgMR+0XM!G@+ZS%H&t_cDeEkTrF{w@CDX02@rU6XekiCx={KfWjXK9fe@) z!2Zt{rmozm4v=`u^d-b*Q{iyd{f$E9?l=-GkrPQcY{V{h6V}P<0MYWqauVDii1XS} z^bXyzUA322B<$QCFd*$$^sRkw1868@dl)!3B3GyrfS=li?RlecH~WVoIyt#Mets z3sROJA@dSQ>@DXA5N5>#6_67hEcD=E@K85A#xRG_r6rW_D|^r6cA8_wf*uViaOvlx z$Ft{gkJ8jU?2{8G{YPc@JGGy`wfe5!Xl)5zbT^)fdmvZ7hcZ;t^;RIySZu>>BOPDm zaVFT?;5#aq4{%#*snlK-3@DUd5X|UTG`^8Oo{cZaTPuz25*ldQ=dQsme{GO_cMy*v zIGhIiHn7GAB?upFM3FX$`p7m&>_qC+%t+k?$m6Z7k1^N>=`9mOaT8n48%~h}tl1n@ zK7iG$iv-+nUlX*#=^|Q6a<$e%JyYwbi&|PlZE$G2@fu2gpE{=8%r$35)l%WpMWjLi z1$8xb=vR~*wnR-W-8F+PpeQJ7Tx6LrA8yn0JoQ;_V?F#fv2|w}N>;@tA9148IXlMg zyvG2v#s{;~L$B5fC=YRB>2jz>buTE~?>a>hVDeXUZ==>v)5y*Efvq4YoMDH2IM+?7 z^?lqj4EI~DNT`ekbU|rs-%V>mHHynyWF zw!c3_R5EpL|2tXle325u*El$a4*)D^J8mgO09B|)<#UYN3gC8cd}J0l@EMtT+`!7qd*fF|D{NXlJaN5lo4=#8 z%zUYgfj9aj7++Ex0<8NG=ywRmW7Y7u^>k=}#~k9%@AAc203pAoB(xR)2&4jl1jN2x z>)*7|pDOoI&S?9JPZ)h-*J?j|4$>Yn2xQasHli$etwck$Sx*RZ_-64dvl9%yY0pKM zwtHzwmr{^HJ&%?7znqqHs=f@AG;2slD=e(S2RS5@84vJdj^S{~-8c@sUifVJnl_Om zc^=7}suGeN2L7NqPRwi8Q}-C`UsI_lHUy_0cjTw5TLHC4Dphg09(#}FbxIBej%-~A zMKks(v78Sp9{HlgJWg0mJ+Lo5HDFI_JC5tED-^0feqU#Jv!gZ}^k>Js<> literal 1080 zcmV-81jqXT0003AFaQ7nL7LziyajJCNu~tB4G3=&8vrumRSg8>j7|Lju|5!*CK)gl z6fU67^SK_#p#hG9&G00Pka+>IH3duoiPCL#>;(W9aOAIwJXbv04*r+Hh@jALcq;|L zL687?W@JQ|)sbERfT9jBn(}x$OG`fffC!*+b;$ z)JKo~-~cgz7EC1yJeiGznF{pW&%xf=~dg7yv>xivZXLtal7Q z`^Ere00jm0Rc3rdU!D%XJ_Zn>EV6@yf@TTz_`S5y00;s=01yEK2g?ZWJB~&$2OeJ- z1;PRBBnEK-ah?Fc2m=SIj^UIDV)o~x8Eya#K)|b4{Rc+`nhjB5+Ux)z04Wm`Pzy*> z8~@%5P%t2CHTl+{`Bd!s@P$j1iyF}JDSrhEIq+a?;4SdmVv1j#ga@>u$BZlh6=_1A zFo1TOUVY*o0099(N)|*^lmc6u$;ZGG01!auiX_tKPNqOnS~E)S4c8mlsu zi)Tr`00ssX^J&m|!%^`EYmm|>c!B^>Bu3y-jx8p_08s%5D@^bL0Y{V+N%;v1VR~mI z5;Na|^wNHNY?vv;vL+R(7KvI*NhF4BP;l zpa1{?K>%(hxCXBPcrX9}0YLyciLL>wz#EJJ00BV&6+&x(YVZ_C;7?%yFt8|#2yg(b zD(H^nMWswp;E98wH02l{oy_vy9YCXtA^HP}Q{W0eY+Cvp_RkfF3v)7nvp;C3eNDsdL>LRmUJy1lH4oEpL({{ffp`;KFI4fCN3Dgbu@ zj|zS)8z5%_N5RUaqG}1Q|NI|-fDVm-Fz5-_L@$QRI&BA%rHinND(IxNrvJwQh#(gwD3Us5gj11f+h3nK_?MB8*ANSnrk0KFGN05mV19?C0cnuR-~cfN-;qeYndPX1U#;^dLx`y5bzYJBy;T4Bzr2P=<~|_&m2iGC3>5&Q0Vo8? zh{%ZutYCsRb|4{jEqzH}1h;&ETcI5$GXo6~KDjUiOahOE=8!=mn`Q0TfWb3qo&vxQ zEZks=ouGPFN=U=;Fkk@4n!s3f*L12x@74?utkc3v52VAghdeNad5b}0P3wv;|Lp(( zz;n98Se0CEJ~7w_!wI&u*T47v{at^V0YR?b<=6ebwyCiEAQ@Z;Dt zhiZ}4*zVWh1j-l{%s`lTI=I6D6YTIM@Jvnt42v7HJC@4kOxo}O1OvE|1bg80r&{hwpT%;iHQIJ0|5kBaZvm4 zm;eX@1BI0i@aU70v}!WJgTN5%0003&0B$Cb2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2 zLTLbM@E#}g`S=r}K$Z~;KmrdmDQQ)izyrmeVRy5U1;6da2O{gWycHt<^MDo~?Occ` z=JthJz3hJ?iX~B)-T&zf&^?wp2+IJkhr|)5!hit!0MrTLYe!Mp;z+1nfc{5p3x;WL zXS%XX%-Wa@zhEb<7YiKyb|eX*4hWGnlBMT{oIlSLf8guzyL)x!f%ZM z$4m2jsB_-goi7dq;{6zzBjJIE*X})*_lyNerjsq*|NjmR?T@Ma1ZgqC2ZIlPo(v1A z(~o{%f>G#G2%wJuFpnhK9}K*E8O6X<=YS1P3f|C8fCiL(0ZD`pul?j@wo!r*CBNmv t?alpof`AWn_>(mJ&<1%XF$2!96MCgxgyIkT!Gu0qU`{+IpMgC52ZSuvO;!K^ literal 1115 zcmV-h1f=@_0003AFaQ7nL7M;?yakbe1p~1lQWO+`0uTrjs2^h~JQqRX8VUdbG9i`N zMPf-y7{35uI0+_pyCy|n1Rz}a+S`~eVPOqJln{fE@RSe`GKuxw_yS}AAIl9e2nlV& zibZQ0+a>dXKqd?!lL7(0K!5=PtO@rV=EjBK-@cZH034PJL?5Vk?QQnB0m*Ox0s#O8 zBnw~DAW-2!W`-v>jD}GY#IPv3x6D7TwfGDJXAVWx< zpF+6qE${#W0DvGgLv9J2wh5gw8@N&2Fbes^VOVw3#BTb>x8*F;#eF|tBJLbm~fqNR24 zCztdD99St800hvK{t+cr((n?3g1O&46A|c*UcJN-RtUW3C8xUD*jPo+BhUR`?K2}m zkl_>D^l(Nf0S!2Tp(}*eQ>W4Y%g?VZ@Ic}kbXY@rbnH)S_X_CJ_$3k_34 zfkVQKP6S)676Ui{D;+I7Ie&4y0097yS}X?>5lFf3Y^{ple1I^Z03Z;SAZRvpeg^-- zLb5)903ZkW0e~0+4rt817?r`X{lp*$aR38_2tITycn#~oR{$pH0003&0B$D02Co2k zFaQ7nK>#_4umP*U8;k$|0YLy2LTmtP@E#}g`S=r}K$;N>Kq#iLKl@++@FUA)x;U<9 z_n0{atz6v9y4e68SNe^L<3Fze6j~-~Jm9670ERwz*{Mn>lF(uNL=jj=u%bO3xPSv} zdqwm>mN_!*=|I}d*Ej);09R_nJE8m!CYd_*^|Ns?5}`9a|9t_AvlrPF710-h2%k?x zMA0ex|N5T~0CU@I1OKxEih40s9OdA^?8^>gzuthHs!=xAF+D+x*bE`9QgMg9VN?<3cR!T*p+N+`+=)(_!EotVkslw z;B!`chkHA^$N@xTX*Ak*hbH{k)$ialNsbU4=ildeLA5${_vQF0M-XE|JOD6{C2u6x zD)@%QtHCd}}73t#|=1}20Jx0;zr4~IS1 ztTey?Z~_li!BZ9Dqjs{r+a`DZl{;=MbVAEuEx6 zM%z=vBp9#;?I_M;gCh-e!vFw43;+ZL002OI0?C{R1C{_%2Rz?5upa}ZM0^02Ck-7s zcm4I-F#S1BQr}DBqNZhx<<4;C04H zj*I+R9GnCJ3veWojPj&%bnvJC;{XeQ_p4(#OcUGp6F>kU5cfa@6PY!N|L!9K22WiJ zT!V?5G5_yU&>;0XOVsIHRcl?ycwal=M*sv7NJkozxN3MU>0Qn!>M{F zQdiz4zyYPo0LvVH1czH_GJ>@zJWFhfB$c=R?F*h0L$F7ZQXl*PkgIWpG;4cMqKvwi z1O`Bdkm(`Ar)kgf-}it3AQJc(3YtMHrBm3t^UnSN06--`5sVI0ouf*Z8lSNM2i{s#xDFOvR$7Vu*w^1uO;Ak!S3#Plb_^&m}4~2tSyJ$N%EG004k$HUJtH_z$Fzd+&AavAV$0Om-gpd>to3;t#J zFv~y?>;M1(K>%(hmcrjs1Ah6H5VR>Bo(-6(`7NMR8DX{&v8EQDeTq z$U}TXDqg5*f4y6QXaaW}DL^Aqe0PU{A%PcFMEzm^{;PlhLdn*U4f4dt2l%0thw*#` z1)`phzV`7CGx1*&{{IpIeQe;%VBbu($|e^MUlLR3;ZfmWUNzU7iiW$!gV|?C?wFvx z`@oZ*X>Z$f{rli_jEIPF_kaKU@Fk+65cX6M3=sVAW@2$L7eBvt1mgWBjMzgpVtX>) zy-rxpw&~|9_b2^_gfvcc#pgHch#5I+I5I!&@HK~W-#2A?BCb?JikB$ z2Hst=d+qw`_K7BE`W?Ui2L5;gb5q0*kNeqARo?H&F2?=8y+jIqX<%Klpau_1+e9gu gLW;gZf%iTCZ?K-YO0OC_m#c>J;7&iEfjs;L1gRn_b^rhX literal 1168 zcmV;B1aJEQ0003AFaQ7nL7N~Nyaj>$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6nU;x5kyc;_|rapOcR{#$&0jcmT*yQ#S zfs)J3<^m-ZWE@ssw8ek;VzuV+Oc&KqaJL+XFPdn;%t%v)OxO&vy*$6*UNs}ouJk&6 zpvOjnO4F#_V3umPX*9sRu;76iW1vI=G(~D>#y|Zy736HQE2ly@U{t#9uW7`@L2M0tgW9WWO%N=71601pXRq(h16VpO&G0}yrH-I|(JaTnQZ zh+qOD^#*C9;7wxJj{sl|u^4N7m^#F08N?ye2pBEa876fqV)I3Xu68<^rNW_KnM=7?+w!PrM2c017B{h``m$GZ36$?KnRG22C0O z0R>lXqyPa2fB+D2xB#R*bpJQ{-b8}J9smdc0sx>49arm;r0yUcbS;(29>7z8rh~{7 zgQi0Vs0st{`+zVM7;O`_!4Crp`!XacH2@#ygsq6C*6On8?t&;cv0svr!N+$wH(}{Ch zC#GW-{AnH5ZMUcX;M|~A_?73p{*?2<05HjJL;%Q-1Ub;hVXzPS00bZ^8l$80YyYl` zz5Wm0*|s<8>Z`->01yKTpzJNgKjrQ)8HuuOm;eF-AOIjH02&>ZFEoFEAmFG0IoP_7 zvju{xu}t~^Ob7}cPNR3I$K>NzPT;^37-pbwkTW||b%*6s5DVx6Zh!y)0YLz6CddY_ z0C+F}00BV&If=3XtH2wK0003&02M-PfNJmx3|JCOGXMyW)q6?vC%>+WW+6k@j{-=u zAb=EjhgtZ(y?@$Q=t%tL;ktf$EF^%&oJ?#8B@%xG0txWyl39;8`_!B$z)slVP!j9F z-zz)-@^wS=N{kiupaPOrJ!J^r!W2>)|6^a{`FI13kf$voD~^F;rU61v{i6T?pb8M$ zVAuc)fcZgf(a|uk%i>CSGn6VkC^!6^;DtL49~P&xV8?RVyS|S7BlU;n*x- z1kI5U|LL{=|K<0y3us_djFN%vi@hR!BH`o7%$M^z_NM4TlPGOR$a`}IV6#dfe>^%a5(&~WFinyY; iN&7{|zt{KdBgBMBqBAolPygrlhUI}c{(c1W@Dva=5DKOM diff --git a/samples/h264SampleFrames/frame-1155.h264 b/samples/h264SampleFrames/frame-1155.h264 index 2a409aaeb6154dda3342f5d240e0b9ea16703ac9..b1b248229b5a1d39770724805124b6a22c8baa78 100644 GIT binary patch literal 1443 zcmV;U1zh?70003AFaQ7nL7IRXyagW;6vOD3RJ;I|DS$kjPhc}_yZNjcqC?-QE8{$T zq4Brz0xCfNSCvP}$LDB%`UDZUY%&}F5Be(#>N-PDw*0171zR(aHoxukfE-#A4N!PE-;D#HWf|N7(CMq6{D!(|s6Bqyx zbj22~Aalw98~~UD9CD9S?%A@bIe)wW0)QM;6Ky3rn2(;OtHGA)4wPj>fC`L4KG=XF zu7nJH$jic_;w0$xw~PUa91d(6vbYk@P>u(H1`cr`gwhqQ$!IJPNudIe+JHbm1d;Fp zSf&8z5wDsAdXE3o`~gAt3C2 z_(vZD2GA|2@LOVF;vLf9--*BtNN3(OIRzYEX#sJ7QT!24nUf-X*@pu#>L12Og2jTZ zC$&VXChb|kXdA{0neq7GU69^B5YhGm<2V8|5LEzw{wp>d01rk)R0KnKXYkll;i7;A zs@M(##rsB_v|Y%+GB-5z0k6ow2ZA?N4p_hf1kyKLhu#1|XcKuuPaP!IN~l-102v`i zX39CgbN~VSumC{8xA3qkcJUhk0Raut0B{4sTgHh|9hnKr$1@aVxj{fKfrt%5J^%&9 zP-r5BLQ3%wKXO?!;7mYVnY}0d^S}TQ5#S710=Pn>_H-}O#y}uzaNqz46;#9kb1@O$ z>;VF$XY!&|9j|u)Ai%C^Uw7)Fyy8vZ00aSqU!yN~&_UyA|8PTs$X*9Rkn3I8p9xLKrDYu%eKy>i^H*J%{$c%#;=fWrg2g1HcqjU{F>`angdbP<{X#IIS>9LY#Ji zY)IKy0~de{rMWPYxkzuc15gAA(GcIhZH9(JUtTbbIW0lLJ<=$!L%sm0BD^mrQKBa6 z#`)mb02t0-pxNKZV&oGSf-kTDFsoa@g0+Y6JvwD}36ueD{so~XuY>;>039#`pa}6@ zGO%d-0*k$$ja^H8AH`4qf*ue6CWHVm!-CT)bg=RL1jIbl0S>?b00BV&ZYH1xuK;*3 z0003&06B@M0jt0pi~s-uK>!s(Y5;2R3JLuFegx=52%!*{02i1e%8@UJ`QzsR8uu@( z^>_fVZqh2Z6VJ3bEzZttW^DfKG;x%LW1aWFom7G>AOlpa;%n;x5mAq%Ug<Cv`>lsqJ`&i7~)&J@Y{%NSa_C`A_L#G)3{a1lGT)_*QsT@iHZ^HzNfiE^E z8h{ZmXt~W&sWMga6V3Ckcu!S0prMT3)Ek?#F6RU&DiXq^6{0Cz1(9>ITpAHbMvnnC znZj-?p%(vj=Gl&`s=9!jUxR2lp&x5zQ;LccNTJ;Q2?VB+&<9kQr+^qYb7~GmN=-$MBBr2%st|G5>2?4H xBwwehlfCNz17<~k6E+?C{e%skxeMfI|NlV!{%yDIzYUZg=UxH)3CD$CJRl$gci#X2 literal 1048 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 diff --git a/samples/h264SampleFrames/frame-1157.h264 b/samples/h264SampleFrames/frame-1157.h264 index ce9e4d33eb8eeff5c73c0110dfe4f9692aae26b2..0b0906a612953718e1ff8a5de935a644b052d146 100644 GIT binary patch literal 1184 zcmV;R1Yi3A0003AFaQ7nL7KoCyagvHK;Z^94hjoUUJ&8KY;?dhzj2nt%5I1Po^qYt(R#CfX`2kANru0szbw72>+~H8DgKPuai#2n8L1 z#MXR4HMDi+fA^RGU;rR-VW?5?0Xj>D&}S0|{2T*ipcqUyMv1q-_=tc2Kq(mz00;p9 zAW0KI+0);E`uYNa!kxp(Le4w@4$TDs5EA+X8m)kn&3(-9a0QWA09z&i1VAVr__4Nx z<|H2g0T`3HSdEmf%)9^t0Qv|;IyJ@GAZRA9_k!RW0J&XDBy7|N@QdI81Oq?-KzIgc ziigwEwjyAlr;UIezypEceuxn$5;&y-VV1x)?{7thqVXL}^9{?AO zp$HXn4H9Xic7PBFU~!BX1>O=^aKwMDo}i4^wf_?U3P1{NfM5~~sDt5}&JK!%00IRd z03c6jSO7L3nc%k|zyLsu00akr4S)ngb3f1-1tbQInvlJS5~-C$At*2>8xS%7(30Q) zn4F|53c~_X#|;q-0WyNhK#K4FuAYAwpmevl}7K3n19SfB>-1+!z3%FMT>25fd0M?*JfS#tL$Z z9(bcz(pvER5d6U^gaQu-G?xJqQu1O@FhR{g5bOW|0YLz6Ca?yt0C+F}00BV&If<+R ztH2wK0003&02M-O0BZ0Ik^KA#(8xb9$N|L`xz9ED}RgMvW2iq+R zi|kV0?Ez1reZ^3pJ^;(^=K+CnOyb@Wj#pH8CmnLu3v9DPGlHM~+G8rHf8U^E`xOj> zk@3LPI7@r-qVWd-vz&WhU>gu}v&)LK|Mvk|yGca}U;prFr*-HAM+=oWo@4s@usILy zDGFfaGyR4^xki~9?H@V#1cBc2e+9{u5PsKzHBSf%6$4$HhN@^1Ki&Wcpfb*2g8vN? zZ*T#WM~lR0WRJ=wL&{35re)^LjO+je0>BFYo(8q>_LQ&p`V)lxl2r<&`RBaJwqAOq5+F!O0SQd2+kz~*!*HP1KnMT`3akKv z>0kt-0h+*)Saq}21^y3$U|Q9|Xc?H)NmdLAyCB#v;GQk4zW2I?rTbM-fZ#PEiTZ*Z zmtPUAdBX{(Jpjkg`1LL&L+&@#9T8H4Br<${tV`nL9$q`ZEb49nHsAZe0S~OYnVIUh y_uv#(qg<4t+IY)AMiB_Aip$&I{R7rN=K^rbv03F&{!0q3Ujym9ZZIaFfS`adB=9W& literal 947 zcmV;k15Eq?0003AFaQ7nL7RXYyak6RgsK2Ip8`lsAY<{NUBD79TabDHfB`u`rM?g$ z*F1yiKQ`3>voL&VAOM5l1_uvHg;v^|i0Ycg&;|eiKoB@#(t4hr)fS89OL%Hf01zG( zNkAD8ta+}`fd{}C11xKpb>@K}2=nC5n;$_-~HYd-xN1i$jJ|$VL7?2#11D0H6#21OWv`1wgzI zgjN~hLwI2A0JEsB+$au&`(a95@EBnTmt`SN0#PdtdjTX$>T3W20F1LZ00;npGJ~M> zDifB_0n#X|ZSLcCGR zDgXosIbt4ZGbPh_Q4*CXH~_$53yr5YOm-b_Fh(Ho{_p{T3}|ocD8q_Iy4p4FzaRi0 zO)LNf9}z>m@B{}INYN(6+ms8@wRa~r@D~?=Xho7fbp(Bkw6J)&?+hmrU%(h;0CV%crX9}0YLyciMRo)z#EJJ00BV&6+&(RYVZt^{QL>f z$UiX10l`H1VfXbTHv<|Jc#8U{=Apta0BY5`AOGGLTbSD;=l~%KS(sVh!NATaiZ1ko zj0{)|EE*|qr&ukc?F7#>|F=wKRS*0041Z!Fka9ja8ixrjelv1|QS32gC%{4=>pZxx zUH-TV+geH}C4c|HuD;J`1C3(kPBKhC_tk<5J=2h+4ny~0kZvSy8GB8;{~rNh<-DKa zbY&zTwct%s#|jjTGx>xgTe{!?mE6P_e&K@8twMwfHj#nSrt=cyXu|5sddA#jXJ7yz z5&%~`4Rzy*DS!Lv;Xj2i07gV+WJE@0M1TMI064~RqE++Hd6R6s^++T@kbnXcnbk<3 z%Qmq5I5m&}fB=B&zyudd034hvCLqf^6^)|6=z0i%@vA*Uw;GKs-tZ>ug2zP7tl*yc zSf}roY3Y8|R3JD7R#Y!~V-8*pVyTZ5L{W+KJaxadsqwqRrJrH2!}-0&)EO3Gl6bn!^A9 diff --git a/samples/h264SampleFrames/frame-1158.h264 b/samples/h264SampleFrames/frame-1158.h264 index 9a812746766becd509541a47be96729262000084..4515519b6c10b7b9afa18a42e21aee6b19c226ea 100644 GIT binary patch literal 1313 zcmV++1>X7q0003AFaQ7nL7LziyakUiQHkiK|H2?51$Y2BaL53Fkk9b=I!t?KWZ(cy zqGL?zLRUFFfCdgTlw3!-*EXyCR(M77CyoGc1tC9y^RJ^7miL$xGuo@kyO+Un1TZ9& z9D*^BArhR#sXH6P1%pMj7F+&=1Ztj|b?8F^lkA!dk)I!Q+Q1l>odQ^f zX*F~L2;p^LwvF*(E-A1Qd9S&i4j8SB00aa`Z~zbv13@GD3WaJ;cnHS;fR{A64xI@p zMc4octbc$o08v6zI+QzgiGA$EICRzk4h$iJdt|rQ9_ykiJHXCxZ9Qh(1{A&GLZkq2 zAQWFou37T;g9&sobOY)I1+t1!AlyTl8AX^$+$v@tfB^u({V&(M5+ZFKyI1gj02xNy zBx|O!n_<9~F^h%aIPGMhkuUX^fB>KagUh4x0v?e-$<2y<0-ykP24)E@h0LqR!Wz(U z0W1I)92El43Zwn^iU0usCjbEeB254gPtO5TWA$Ee0Kfr6n?=Ih(?CF(ksts^-q(ab z3Dj`^5@$h;GvELS1B@Ey{D6TjtQtb3W`*DY2mpva{ESpLhWUyl_TOxo2a(eC`POMO zJzgED+y9s5HgXkAEg|Y^kRJ?yz^DQQ3kHgc35tpB|KPx!Y(Nnc>koheWMd%(hxCXBPcrX9}0YLyciLL>w zz#EJJ00BV&6+&x(YVZ#U{e-}R8wVo7TmUazN#SGRX}}3ylly!L+@lIkU=Gl){Ybdj z)dxuDJs7DgY!HKRhe<4ykR^d(uqyrpvt}p5C`%9j`-8DO&=ry-3y#0)!^;2t#7!ER zZr}g+>Sjh9^)=c6=v&XN@}m&%?THMOcyI<_3;>=r*9sLUatYSKfix#507KXPUw{7q z6x@ixKS4*a=txKae!kkR=d8Izt1+MVMh_g{^aot6M!iJC#l%8<5QA|cNf1h{A-*5; ztOQ)i9qFe2gX`u@mcOpF6?Cy{VO**PA4mzOg?D8rKqv!7>M}fJ_uIMm73A~)@ByE) zkwp&0j0Mr1(~~kkfRA>aJFmgm&&9QvjxZv;I7lezwtN0H7F;~WAw^AB;889>VA}Jj z0I=DY{kK?u{Xj@oi;>ZHm-J%lq&)_|*Zw`(6ao!afO!@DdkLg4Qy$&=*L#N=S10!MCv)@B~!M XThEa<*8n)RQ2iFSmw`C(IrtOc)*L#1 literal 1103 zcmV-V1hD%60003AFaQ7nL7Si&yakbe1p~1lQWO+`0uUH45I)7ycrW*ae^dYokr-uR z6^VLS#rOe$pd^{u?3opOJp$*(mfXTp3kYf)ph5&8;RpyBK?CcXz!M+<{zz$nKuc~M zQY%>2*)xecnji^?Nvpt_Xi!e;nxu6WD|v&(QH5EVREGqntAGFy0vuRY^dFP1Y_VW6 z8vrBk84RW#k7uZDu)Vy%06;+q0KhLcUg(Px(HMh_W)4NDUy}T%h<@Mz5D*iGAf?J} zfuv-%?l1@dKCVc{fSUB-rSel9-~bpxfg&}>S4NoZ zCqO}4Fk$|oBjY$!3RedR(cd&aapRa=-mJSfDwf^4LH7z#uPfFPb<3s2BT4 zGLoqqFsMB*|7AjO15MEggf1xmfCe)#>5MD;8c5X#)Uj6UK*F|W*o#zbzrO~HQ2ho3 z)517Y00bEdQWS+DNKz1_|KLO}p#`vQX`nKpg1CSA;skNO10A(A^F{UbJZo(*8b~`0 V=6^rL^DsZt!GGU@IPp376X4AQ)?EMq diff --git a/samples/h264SampleFrames/frame-1159.h264 b/samples/h264SampleFrames/frame-1159.h264 index ed8fdb6dfc09ad262cca0038ab40ddfb54cb430c..6dcdf75b5ae5729c3073f9e5eb59f71ee4d06628 100644 GIT binary patch literal 1554 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 R@&cP80>~}?oWqv~z?&^TpThtE literal 1501 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 diff --git a/samples/h264SampleFrames/frame-1163.h264 b/samples/h264SampleFrames/frame-1163.h264 index bf700af4437fff3dd8a567807b9fd3d77fb622b1..6867af0465d65920c31ced06fac04a829a181dc0 100644 GIT binary patch literal 1298 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 diff --git a/samples/h264SampleFrames/frame-1164.h264 b/samples/h264SampleFrames/frame-1164.h264 index 4b2d52e17ca806323f95fffc3f2edf43042ae9df..7df8399f94fc70912bd58340d4dbd4da4fad0a6e 100644 GIT binary patch literal 1468 zcmV;t1w;A(0003AFaQ7nL7Si&yaj>3{v19|04&T1^#!g-;WOlqSEk4Q9xNr000IcW z03rSW0vgP`08$MA06^X7abN%;$dCXCL7uOFau1tdcZ3Yy_y8(l6c8M@+<7T|P#yq3CBBo~ z_y34evw#4A3a)PgQgi?J5N|>Tk<_Z2h&)FZ{4yXs2m%t|Sp^y8$n4qSPyNOK7Xj|p z#&DP`x9uZ903ZRJRIr%8I9E1LU|-~SFD3Ge`H znY1R#Rc2YDA_~8xCJ8_R@sa=q0*HGYEF=K-Up?jk8wxPN#Q&=fj>kl2Z$)a10lS)I*)U>ib2nq5(YNXW>Y=Lzi@E8%&SP3o`z8#px6Iv(uNKun%{sPcc;bLw>m?{~x}?wg1p0eWXb*11mbf8!U(0YIi}OQc!14CtsrD9*!*Fo!?E z|5N`n7DUnJKk@PCgh7A`Zl)h09Q@t@0Dx)F z01|BBQ<6B!_X0=Gpk*~6D5~LRbAC1qko+kdAn+m*3>NYGQb*1nB1;xL9(2F?h>U;! zE1&=f2BTmBA#Z@%L(YBfy|y>%bty{nU=kew06>-nT;M7hvA5$Ipm+c_W+lZS$FGnv zf2|PHkh#p|Bg3%)ED*y03pQITUKu2*f4Dy_07I|<00BV&ZYJmkuK;*30003&06B@e z0jt0pi~s-uK>!s(Zh&g=1qOdW;N7)J=$S${rdQE zHsod+zkMR#Au}-eOdY5YLn1g6B}1q0BY>zjh?!u5fEEo%3C87}^0fyc5Qn3|_>2Xr zbzptBz=7C{8_h>PJOzQ(GvdKalEg3H)iPA+-v9f+ns{HH5DNhasi*$vjATP}5+nRu z;Z#p^J)Wem5WD@${-E<5M>|yrLphcJ!VY{_-KEzZKqjQ%DxoR|e))KJ^TPZdg~kP{ zo3#JGjtRkH)|+)?B$E9l8Igd_VQ+lAN&f`C9c~84C0Z*nCjRj8-}oAk3y}?VjMw8f z&+dRHFme$%k^i!<#j2GDzhpSK-0ngf|8E0Dq>X1naE;#*D&zWZp6m%F?a0N=BGZBk z02T+O;2qn@0^qm&fs@Z_d;jbHU&MoB@h1Pn_!8h7=z0(U literal 1610 zcmV-Q2DSMB0003AFaQ7nL7HG1yakDUfnedp34uIdPyieN1OTuA2mt^XXf~Q(L5j(> z?1&tm0Z;=5x{w0+O{j_RNdlrk73`+w&MWvTGs_tH}h&d7lhO&;SSwzyJ^f01dD( zJAHz^?U9546+jH#ECo>LS?_@e1SCnY&(on7m{A1t=?4Q4OU03g1WCnNmFJKHI6+N3 zBhC305|uqE=4c8W1xc0Alvzk?Se2#mVgyAXa~T0c6tV8qxb2LEch=jNKL_AJ2smQM z6ev{r=L#Px8~_+h7Xs^Nc*o8vOCSN`5<#i>EZF4ysA#tTUgH4}Wk((Jaz}`PR-=KOrXA1A+ zXe_L{jnoNdqjnQa7m!l|GPCo65D3hzNctH4$PeUfy{>-y@Bn8po=cZ)Sf?NNdO!dm z6aq3WbPK&}bUgUgAOG9X%sGXE4wwv?BO?(hpav7MS&k>Ai&EF%3}M%Qc4}x%#9wW$ zLjVyMs58wQB5M}B*aHA-isN7Jfe~Xs#bFMZK*4UX$us@HI1kF?5TtHA@xB6U?8Sfr zWC4HxfKaQ@m>(k)6RkIrS~vhO01yWViLfyA_$9#5`n-By2BE>>pfdq<6#;Z%02}}W z0ad^O-T>vovbFqlT(0%l)l#Yk7|^ePxB`Oy5WfN(&!oUDP3e0=} z1R1~`Ucdmz960a}Q_UL;{hr)~tO5{|jRRT&K@x*FzyRj|&h!Rw19L*|K)`tWgo&GE z*dPE97bZ>s0RX@Qd4$dM1cpI0bjinI0209H z1lq)l2$=?J1&;s&00d7I4g=%-b0p(4ZYCDx@MJV96$t`z21a}g;BXo_gK29ZGk7^l z4uCjacRK6;eewbrH#lEJh7s}8`;b#!K!nOhFMaF<-~fOCAO--%2H$fL`LP;@PIQAn z01yEb;KVtQI_O75y6XqOgT4aC3gvhGu806UWCX!y)ieooQdart!Dgj6JM54xkrk@= z0b~FI06~Fqfh=@r=aYcsm4gO^6aWMPxfp;4Ks16azj9v%;sAyi1c5;D!k-y{fgVEK z6NK9DNfF_I0Dve{z_C))blOhrrRx6h$^f7=|NbIIz(vO`(;*w!00;yQ5m%%yMhnp~ zIw_BU06+!@aitEOxbCic;M4P9_JUX;jKO3D#cCE&j3ihefPlsb2kK6|Es3A`kVK>M zfN2;<%77+AmtHUdg@D@tG*d;IY6((Qi_`%v0098zkpKtAcDm5Opw4~eL>=tZ#Nk){ zfKUJs00SHt$ob6*;;57aB49q=1``zc0SV{62o=71r^WyR0zd*NC>(Ghw}(Fx4VA(% z+5nrN0003&0B$Cj2Co2kFaQ7nK>#_4rU9$K8;k$|0YLy2LTP|%@C62cK;$wc!4Rhb z6Btf$&fo!R9k&`Z1s+rH01FOV5=0*)?<~GwFe;(hakKM^9%>7>jUlF2p@>?zDgAM@D%~xC(`NSBCE~! z=#42H?SKDI0%_r1ct9ut0@bsxcp;R?CgZ6qANRoTXd?JRuYGV*ka*Oizt0DSQg{l}*5QLR3jbU2|;aZw^u?*_`gX< zBLSY6TR&*LYLYL9TY&cvY`zBGD2_WVxm`B z&TUP<+W(jGh$F{f1hB1F*+01#{s0SMJM%W@@h$EN#YJ2r)!)6UTWJ*Nzuq475-qr` I|A+7;z&X;aiU0rr diff --git a/samples/h264SampleFrames/frame-1165.h264 b/samples/h264SampleFrames/frame-1165.h264 index e458faba3c5f1c178da315c20cfff3bb56c8bc68..b938ce875bfcb4e537d1390ce6768fd2c0194577 100644 GIT binary patch literal 1459 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 UHz6Va*R=|COX#{v$^Hfes44_vKmY&$ diff --git a/samples/h264SampleFrames/frame-1167.h264 b/samples/h264SampleFrames/frame-1167.h264 index fddc3f597628329236386b681e20a792ca5ea77a..f804a7777ac5e24d00e5fb39fc24515134f93bb3 100644 GIT binary patch literal 1161 zcmV;41a|uX0003AFaQ7nL7D&>yakisVG=t53tRyG^zePjd7H=iehtDfW(k2%Fc@wC z2mk^AUqejR3CJe9<)L}7j8L;wN-NJKyYAOrw`6b%E1Pj3PB^aTTjJBN~m zo_+uacEXtp?*rSM`20ZIlyun0(J&;|+trBT0hkO#n*?heKO zAOZq2xS(*BDR`-reeeK84guozW$U_%4ub%&0FVFbKmZ^C-~j6Y4;D`W&aZO-Gk^y* zfc-Ch0YCu-aKYRGg;1$gaFO8fjb+)Vp6pO`KmdRZaunD+ zBz>s!nkR@(haw7#)g>SJXtCJQWUv4Ez`!fZ1&{-2@8n+JW!5+Mhz!9G0>D>vH*#nx zjKQtK2QRQunYo0l@NS2S;5N000Ic$03gPU009Ls2kiUt9JrtWAVvTJ1O1jj z0wJmI^ajF`1IEorUc?F2O5zZd7!#fh2qH2r{s8CT2f&LDi|ULSV)~B&0RkdIAOR}2 zVE$hTp}^H3S_CovAtDe84#g}Ws%BLGc@8ZB0A{gWK53FBLl4lAkY->Zz)-R$!{)C5 zz~b^$xGcW1Zx6#FQ6Be#DZm5@wSTgG7UI&qd9ezgSUeUUC&@u9IeVBIj!59v6WX<- zcBQ}jz(X7D~P+`Cj>;M1(K>%(hfCjGscrX9} z0YLyciJ$?iz#EJJ00BV&6+&nLYVZXLe_%-x1W_WwkOZ!iaPT2ugb!$cyFi1M!GG}) z${YCwa>jh4e!$=0O%g5+dCVsQU_tn02Y}$me&6k9>Oc6at=&io0X(T?Fmx*e``{-) zk|a@K)(eE=z>n=P7(8D_0Hy_Rx>JAw=mA8^u*H*=U3cm#~M2lT^W;6M-nCvZ8f zgd8pIAo@?s;KWd9I6M`C;Gn_)1J-R3Mm~(L0Rc`0E1K%X$XN$n|8M~ogO^_5qDRs{ zvfuvTb-(~YKt!YfY!IHeRi*Yn_W%Ki0c1u$!Dy)8AufAKo8a`K41vc4ieB8{iE0_d zi`DPF00<0yOp5|;+LqE9o>F`e*yUhtNC8k9T1Pc-TSTK+^XV+c?^8SYKArb&oFae!(@EZt)Dr*n_{}=;s z0mAl*bv9%PqlHU91~CVoX#xlik|ocgRuaGfKmz~*gQ6}-{_>^qfLtIR!a!#b6B*zb z1_OnthT${_VrGWVa$EpD1PrwM&`ebKL3%73T)+eX9n%otH;1Et`@+-+7%6(Z=|pIf zb-H**agd7^u*0%_2$O5z!K(qTgxL^M+{|ESLL+#>zykVtO%&i>n%Z^Z9smIVO3UNCvm z%qX2af&k#tJOEqRa6TLjpj00wcme~9Byf|XZ&4qXE_yU+@VKO45++?NcL>y)RTVbS zKmZ_wXh^u}5JwgdzgGc)GeBX0ZEa{qOy}UB4jcfRpa1{?K>%(hum-OHcrX9}0YLyc ziL3#uz#EJJ00BV&6+&wOYVZXLe=qnFM1d4Yu#^CDXT*%q_yae<(Caf}HVpUH7+(<_ zqmPIisc_GnCc^n<9t6=M;NxS;M+0DS_!y(Kd7>Tef6F|d?g5!rnXf(rKufB6A?juW zU$g}15=4sdM+o2rK#)KwFm=|D00$roPiF`ona7+u>+7L|vJKER!VM6jdaf@vZ~ydd z76g-t32P?VRlS{?-`_`>5P3*Zz1~<$2zUvFQen`VjD(;#A`-;G;6x#bfKA9jFaqCJ z<+y!8h;B|@eyU{%2n?#%J$rmeufsThlXxJmn#mR^|8xe=^+7~%d!>aN*cTt=lz(h6 YBin$=Yr`P;P8cesFXlFG0+28yz%qJuN&o-= diff --git a/samples/h264SampleFrames/frame-1168.h264 b/samples/h264SampleFrames/frame-1168.h264 index 18ae2ae663a9b536394cfa544ad3c54d870d9990..b8cc993d7b9dde5e022d2d9e1ab4cf46e78c6753 100644 GIT binary patch literal 1324 zcmV+{1=IQf0003AFaQ7nL7E^Myakbe@Q4V3K`sCe4+(+CK@>2c36==%Zd?Efi*D(P zh&=!Z4zLO{wFuMz(l8tf-~y)o;0OZ`0wvBL=V^AZj!!^b1)v1D00;q`0MDpJ zpe80d#yv~3pb#U6)x%s7yM*Yt*a+??1Zc+5KiCxHOr9gF}31xP3XLubNyN=~be zcmyLu54pz5d`zKgPrv|2JNy8^0OJKLeK;*4#L7iI1kaq%3O)^s26Sc$W?X9ET^nUt9T17Uzc{wCR>!S4eE+zMqNZBWqST~sOvMLGt+LMDs+z1a^c-_rNka&SOCd*051o60nNfjANL7>0T2KL1`+@Q z0ab7mj3BB+00uw202lxiU5EKQf-R5)4Yo>>xGPL>01!7N(xX5CK?DE|;txTGzyJsh zfCvTKfihw=O;wL@5lG(f00aO)KrUvaibq}rL+quq(WlIYb2<({0H6r(RsoZ(e<8G% zf8JlVCoxn<;)zq(fM7lu0f4Flg^dD61*L`scmMEy`=SD8HG>)|yuZOeihv*j4xj*4 zdX+&vF>gV&xNrjiqK*qY?$?AU@J)ml1{g@M3DIo6u zXIQ`iBftO<8xUgy+6>m)_-WoJeG0}O3|Tt&!3cm1KfefI1{!qu6Zoj<3HsKYV8ehR*Z=?lK>%(hhz73!crX9} z0YLyciJ}3kz#EJJ00BV&6+&o$YVZXO0(`?T0EjzMx69B2Su4b-CP{zqt-zBOAOdpd zBK#hLhoxV65fXoG1_7jmj0Nz!?*k$J$H%lK_!DB`TQ5MUf3OmLH9P;Q4@mtHy?iH> ztKWPD?hi+6YNLO_fi&>1#sxS6#FJA>odGRdxF7HMz@M9ZANT07;U22udduNbU2G!OPq4 z38a8xL6Elow4MOK06=J<1I-kGns`^(@T3!QaOFu~|L6apyubf{5uf-w3M#7Ad06-V zK&xw2kNzeZZtkDozCZvY>hE$#=8U0 iaNrTO4GsChsw)mG7&zR|;KF1?S-Z&c!*kXK90@Q))-F^4 literal 1131 zcmV-x1eEAFaQ7nL7LziyakiQfp}0#00;yG3!KDyjY2~oJT18gzy=NiN671k z_BZH~mqRB&0alnNAh4&Q$`$}Nsz3}rtQPPF009610|8&{umDgFsn>EaGz(xLOXmWB zOc+BZ1Ot3PAOIjE0O}ZN5H2iL{OfQtB&RHsy*-k z0s#Op5;50B&)x@*+5|4ucLo{&EeR$FF91V=dW>L&{ooG)z+sJ*4iP$R9N-wsBDj74 zGzVUaG!jo5QO8V;l{o+dfT01dtcOeR1-8UK@c;mT5CCxcw=_WY&XKli01iMP@Bsq@ zkh2!M5oq9{c6WiC0u2MG?PZzj!trfVt`7z{5=3RIlbfb4C^dWt2+G~1@F#N76k{Z1 z{Q(CS3P-~zb3Tv&CW3SLWYt{}eS&aME8Rep&rjnuA@>kR_(taxwuwU;*cK6Xg(e^Q zz0Aa@QVLS}1*?J)V8z%$@YVwBs}yPf=ktEN{P-X!$B2#!@lu_jj@N+Br7wa}A@G`?!vj)_$m9u{FmO2-F=biM!pKpaqpn@w;cD73FUNe;jWKlcEGfMVVpD=QOo zm`y4a;_m|pDRb%gc>-cIt$H>m@Bjn_K!s(Yk+F-1q}jx!!Q7Bp5(2%@Byr^ ztzoK5e!s22lNKNW-#VB)LWiY4Xp$k$cR_$n3AA7@h5EpRf9!mh^ehRnaD3w108rJ+%u3S%4sO x_z>e2QXhdhlY34Kl#t-@#lQ3{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIFEqv06+jR0K=mCU_S$yNtg+|bzkZr01yV6fL4g=oC>Yo zHxBI5nZMuy(1%wEL82^@X!UylNaqlu8ZDiqK}OqC!z3862JI-$V}m0NbkAT^02JHu zfEdzf#ZdU0)pAMg%-O{NU;qdKfB=A?00<9&Su=qEa=;2e=bPsC z1K@P1kANMC!$(e^`|Gx0`f`=aeck^rii(+*Gp5D_$%4QKvbQC<&VGn3NKgO}0Y&W( zQP2C@AZ{>e9ZKoB=ZNS%LI@oe$`?*L3Q!X>>EE>3D9Z@gjP01y-HkS!9Qx*(%Z+!_Fn3AWZz$12GA zNBv|Zj7B8Q5C8j?*ZH&m{1l7&U;rRIa}YQJhKZP8!i<9kUH}LoT0z7#YrR;a&bqJx zW$=(0kX#i3AV6qfsaP=}1BBy{i>9>~RlmN`AOiqdv;l&8WY=ze{o*qK0RT3rpaMKF zRwTr)I2pjCt%Bbo`0{CCegCv278O|37)fR!|G)y%YLp@C^>HUM0yZFF|JUv8+iWoXSN?AzZ#_4qyekI8;k$|0YLy2LTLbM@C6Kifi^5Dzyijw(kzEih;MKJn)g9syFaiYG*AF4 z6eS&te#sc|)MMMRKJWd@{st2PEI_y&_yP2c2SCTR3J3zQGXbg!_JJRQ;*gFG!F@OT z!2ZO}^P|Ccat<-b{MZ#yP89uK$H&q7DppWS2*>*Y38tpB(?9$K)5r3mAwUy;?R6g= zw};nIMKf(6L4WrHQ~(ZOA4>#406;Rp1Nyj#S41OW0JSCupUzb7CtG10*=2!*+v(QA zFK8AQ0xC=k(==>He%iahns{Gw31I-R3UurUC}Yl!3r!k<|9{|WcZk(&4f>y8XK2Bs zl&T>gJ#*uqz#0G!iUhO-k5)H}Ec66ybBc(2)EV!*ID`PSGz2~!hT4l@1)`qnsmI5h z1k6wnY$GBLt@mbxQ6=9rjf=nk%dAcYXhPg%MBGRJpaRtHO~bxy10?hMTiDz01DlC4 PcMxCB3>z3Az_27h5XDY^ literal 1298 zcmV+t1?~C(0003AFaQ7nL7M;?yaj>3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxL?*bVTf`9;>X1lNe$Q{Z7P#W+z04sn9P#PJ;z`G@sGCoQ$00amC z0Ru1VDzJeo&I)ciB3bWwC~14lzfUYPZJ!%zkh zV&_3}RriS2aEAbL55NJ0K)f4VKc*2lxh#MS7{K)S7I1EQP%v9PUh@GOoZ}o-Z?wj5 z2f*kXZDgQuDp*bwji3Gu5r4xKuQ!TdzN&+Txa2u}(?$kjMr>%!fZjdg@7@c?%=C9^ z2%m5<`$2IlE~j;ZTBz7eurHy(0y4w%fRq9>WvNK|3I2fHq-?#WpT7M78O$fk+`Vc= zJ^Q^N01yfR84|h$-nYMyY-?UNXkt8~!;Y8>nIk0;DWC=tkfcMIN+MLX_yLGI@9xb_ zD!hyBwZs?zh@VlKXxS53wc}tI16)QL-zE-`8U}F)bixME?~_ z6J7{;y_vS=#7}?%A-M!cyq{r=B$jwF1I;RwBtXHZzpn6{eO5ffG7z* zk3>jW2)O08VkCP20RVx*CiMmC!Fna29bn(r~+g)b>jdSSPifPMKoEapp7L+y&wR6 z0098zkpKqH%lX_G6dBKuR7uXw;WIW-|8M{T002XSn+TlHt_q33{7whkfWu;*0u|5v z5Gj1^Pu?&95E1|xK|tf9{?Mml5!YHI04C@F00BV&ZYID6uK;*30003&06B@U0jt0p zi~s-uK>!s(YyfKT1q^?IHY_E;1HxseRG zPp4qH+=GNWKQ;waQi7M)>(Ae>!AdF;!XT}H7}2E3>zRQx@%*SrPy%n)J3rRm2UP=Y zO|(EkfA<3xfC88W^*tT5DH=g$zRFZdit%Rj3KWsSXc#NxHUitVNwuW?+ zt}##ha5yh#VfZlM9*zdo2EWS2@q7`n&US*eK_2_V(10xq0^SR2Q$PdpPj#!S`_}@P zgA0rZGN#)ttV1!Lp%?O>zw+x7ftnHQ+u3LPfCuXCP0y}u21)1ix3Ra@2PZY~KhT5z I><$kCM4F&2mH+?% diff --git a/samples/h264SampleFrames/frame-1170.h264 b/samples/h264SampleFrames/frame-1170.h264 index b68802c3ef623cb2f90c15f7982adb622574fc8e..d0a7aaf604c6ddd0c17076d7ec47a9046080d8d5 100644 GIT binary patch literal 1189 zcmV;W1X}w50003AFaQ7nL7HG1yakbe5D~7$StONa>PZbfA$xX{GQ(4bH(z8NdMq#Y54hSLYYP zV=M$6F+{716{DEL+v>o-zX4zjP=y|+-NU6)b3b?h1pqjxCfZ7MF&{lmR|a1=I#HDb z01+^c|L-#(01yB*z`$_DiOP(ewH`l1vd@=0D)9U2QDJ}|1cmBDpq*( zXQ)tzsH4vihyR1%00aYo!`9z~itj|9lW2~4Yy8PUV0K>b{s(|4s=%PElH;WXW}y54 zHgQ^DkcBwy0@#tVum謠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 diff --git a/samples/h264SampleFrames/frame-1172.h264 b/samples/h264SampleFrames/frame-1172.h264 index 223e6267d6b24266eb43b93e34c624a5afd48b08..ee013d0b084c14ae7bdb974a5b25b84ce6a7164c 100644 GIT binary patch literal 1000 zcmV3>CFp@fv*DAix2I>bKV903ZMm2q>Nm$^s)Auu(R4fB+x} zIpfiq!AY@|3i2<%c)(x)AQ({^p`h*<=K({g6;v<-zypEcerOOX5@qH9 zxCa1PDL?KzFd%0QheE zfqDZVq=50WQWx+7buzewBnAX7rmv|f`#Kz~Q^CLxh(INVv<`HFVooQ96n*}%=|BKL za?#uZglH$e|C`DmSL3>oYXDG~h9d~UXHeIL)%Xk)&`1$dT$L%%9BL7w&;&4SWsm@H za9c=#X~GmDA~8u(yZ-P20fLPh<(L#iqspq!s(YJh6+1rUEgSqKRb5ei@k zRnuTEv=NmIunLnrJKTU78=RZp^+Fal!&43G>o#0S*bJkZaAD=}HHHAH81WDWaLhC! zwOBnM0Ps)-APCm1e(b6O=6?T1!~_uFG?#=}a;0q8)&J@RBs|E47L$FI5N27@ z0c0^aL-CPhLB9VyN4~)RCJ)kU!WDM+g{u@^2wlAR8%k1RF$a17ya}g;bcn}^3IG%X zBcb3&-FWOCaH~AH@N*0*JM8n+3j{XJkjM_fgxWla^P&iB!yO*%3SsEUV5je=g>wB* z88AdBGx!mzzUKI#0ssi0EWelV0b9H1jd%^bvI0Y5g$eiXjDn`veRud1PYUJw5GXeo zAb3&^exu+;Z{GM4%_o+?sg5sqgFCq!2Bm(m7;cR$hyds}Z<*kO(j*qg&N~`+?U00R`dGkO0^* z7CKj~ix>NV05O0TOdyXYV__yztrsx^;6;QZkQ691W=DhKrm$xc6}o%xKmh>4Wf-~# z$X=S-3Pklk0viZd0&YkIz&Ny?jx?UM05X68fHikGEM@ei*t7qm002R}00b!j079Gq z2qtu*`Gy)|f?EC$D*gru5=p|~NE03QPY4DF&oHW3b3=l}jN0h|C77u468 z@eyvAdi;PO!W1Qy(r}PW!7jfSww3?_0FwX!fEXM)SWAh0FN^}=0QM3EVgh440e~2+O0DKGzwSUlba7Uok77cW;06+j&Q9v)khyUO3lYs#PSg+QV2g;{o z$Aof>#7Nc$iA#7WRnLP1W&v-8+!R*)>>xd*7Cd2K0INzA@q`1k+Vk%a@Bj!33Q)2l zq@WVq-cCLMm;izYG(iU!I(0Hb2^X(P;4o(p7E}nnxHnd1Di+R@d;k~-DHCeYAlaxu zL*C>xiQXW990@<*0|;fvSV9TlAq9z^0Dy7j1rvToN|;)u(G-O5;JD>r8ZvD>c?(w^ zSD3W&1ONgGM}>}si32FyDWa|cfSI5Wa0;=tDEZV>4gh4}1l<4t0YLz6CfEkA0C+F} z00BV&If=FbtH2wK0003&02M-QfNJms5Pv{f2ni4o3Sbg-JTm)0)+wWw1EkFi{y>Ce z%_@pt2BsPBP}w3zz}zdQ3_QLDu)q~V6^MWtfXaS^S>e(E9tr@Y1NEyP+bV%lKlkWh zYmhXTgh+CwZr1@shnX?OrQZR$AY^$|>=lia1(3wy4jOhu8=$^CPhWxjXa$-~yb!Lp zuz21m{1Csq_z%%kMj4DdfBYB|PYUS~j}jCB9Tkd)lq2){1|2x7Ji9z(0UaIoiRs0J zC)=4G9fJw9YopGHA+rp0d%>#c$zemj{P3<{spBRHg(>~eMyvJji~tA#B7oCHFW?fh ziJPheY*L}Ip+bb;_r}e)rG4N{JS&&zK&*lXgrh}92%v8K^biuwPtky=kAHpmf43uG zeE(oDe(1Y&Kq#-@-kZy>Wf{Pv46n?mVdQD$um|xJe4F>&0-*jao?(y_~ S&cAFA@I{d!{P8^R;6{MyouwlH diff --git a/samples/h264SampleFrames/frame-1173.h264 b/samples/h264SampleFrames/frame-1173.h264 index 7224b7b19994a2e91823f4d9fefe634b8b6014dd..bb7f9b30f2b9347287ed7fdea1e206ad7eabfaed 100644 GIT binary patch literal 1245 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 P{>PP4YF~ord;AEndNat> diff --git a/samples/h264SampleFrames/frame-1174.h264 b/samples/h264SampleFrames/frame-1174.h264 index 20ef54d9fe81ac5fd5ef1740d893a469738a40aa..efb56d048918507306a3095097e753a8029d0983 100644 GIT binary patch literal 1708 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 diff --git a/samples/h264SampleFrames/frame-1175.h264 b/samples/h264SampleFrames/frame-1175.h264 index a67a42df92495825d2b3e3704891fb23181c386d..22b20ad7711110297ca50aae49f51776e024e28e 100644 GIT binary patch literal 1301 zcmV+w1?u_$0003AFaQ7nL7M;?yakUG6wbO0foFuj!?=(}E5Jy)&d+QC0098-3JK6l zuMGy4?!J=d31R2}9$)|<9TU(15Df%`kDx0xBHjiF;VhCmWT&4fBv0CDd=SHPuu_I_ z6ecbe)~WLgLG$!51RwB}aZB^Mg5m&70ge!(*88}0s!nI_005u@icPf?>S8>4ny+|e z`h%qzP~ZZm5RbMH42gjP$Qc@RP+&lxT|34AVnzd-2CS|Gbkrq*-~oe(M8c^G*5s@f z2qe&fNWYLc5_zw=c`>rC@W9L;pKodo0x_;k02|;RU%*gMNi2Sv5qkgg0RcXAA%)?h zfCZ}94g*EIMx4}P$iOl;H1q+l$iN1N?yMZKfCLGoZmAEv0SBN>!?OS06%5`2pl^8 zHU&=JBVYg^A-X^g0C-Dy(JCXeAvsv4VvLstHiCd%0}vX9d;kiLpzuWsgq7kXAaq+Z z*hC;LP3dX(-*^B50z3eQfGdP9KX*diY%kB)+&BON1yL~o9LS5`+Q1-Gtn?x!NYmfi z06@T`G_RZVQJ!&T_y7U`!Y|R+w+TT9kGBFG7DDhk6pvc&#Q0M5gkh1z7>5e-iFh#I z%uWu^!ovz36R|SHZUcDJ^67i|KnZ0)KQwgLOZvvjp@Pd8FT&zTmzDwS05!Cr2LS-n zc~y-TgSL#s00IPn03bn$*Z?FPIp9s=D1%Fm@Xe9uDVPd~3Gm^spdbLCVFcoZI2A)Z z@e>EY0f9||NnMnIM~et3|L}ffKmg9@7%<4k_vqzE5ZJW}7}XSc;*kIFd;kD|a0oR{ z@JO!oN%=O2=Z-6{^Cbm=*;xWi*Xp9G0Nr9QhPjc^?2&5ndOQsL>O3<9zUB00uLd zC^mQU894;T0FUed3@TPg5MHqU2dPZ9!7_j?-@vq_)$o7g00X7~egZsCOsE<>z_RVL z@YJri!TePJ``~~9G#~+n92A*Tg@?Hg0Eb`z00BV&ZYID6uK;*30003&06B@U0jt0p zi~s-uK>!s(YyfKT1a|{SA~47i?jPrn!U%v80i*OF(;q1;R;Bz6;E?7}h>QTQOo#*G z7YRkFQhGqO!P`lMc>D(%Xo7Vh8vz&lwT#MaVM)PMkx2XqLpz;X|2F!$5#q5e38}sB ze-P7@#R*cT$)$hwNKQZ;AteLRiO7@Omhl@|E>DeTn)%8TI7XX|84+?aNU!yMcO;8{-xdxU#C`-=DwZ#} literal 1094 zcmV-M1iAYF0003AFaQ7nL7TuDyakUE6s9~51F#A{5L5zqhF`)VegrX*@m5Qm&nM{Wnq~CZ5DIy+A zr%tNz#0!b-V#fiT5Db6<1n(V$hhDJ$6D$D)0Vcw=LjzgGSX?GOvAM;)S-zYC0PMl* zd$f^^394`K0)wnFPoqEu09*7dLqv}N06;Wz&;SAf#}yi2jK!EU8(kSJ06-9hh%`a( zs=_zH_zD03fFMdvlLtgIyEwF=i~~i2JuV2lAlha3f&dVp;HRG8Xo!Q-(C;V!!L5tw z9TDUJ0WvRq8!!X_U;zZcZ@Cj_muz6F3o0zrc) z!#-dJ3_k>Ii`4OPEq0sOUxr&ADrqXipIgItSn7g+0YCy(#W)F$K>h#%0|PE|H5eE2 ze;<>8NF~U^2n-LuLK#J|4KcsJSOHPM06;@9z!JCs5rZ2WzVI+l9N^-pssuuL-uSw- z2Co1BfEKz6Wa8c`y!k)Qww0KEVR0l+Bs&dYri zyfi<&03Zko;KFX0LmzAYVp>W7o1g#y0YLz6Ch!KY0C+F}00BV&If=XhtH2wK0003& z02M-S0BZ0AcLPWwFvtQPy>|K_AT$F-=s_cGWr}&~19&7+f;a-_>Bji1E7KMatS%6e z!-)KW2-hsXNB=#ohMnru(Y&m&v-aNn|Nd}y@CBb}V2nQZxqd(?F5rTyrtt7Lf&hmB zI%M)5N6MHzNkG%um;e$0?tyoJ<%8-BYTey~=4|y%fgnD^)$~i@N>6YD5s{KK*)-S_ zPYUapP*4MX_t@jrDGyK)f`$IP135AU%-ARW}Uyex$M z_PB$19{=DPpCP44EENAXzQko60mBM||BuzExD%kQYj(w5_uwIu4M?3;7D{Vr^T(hU zG>-s9if7@G?s7K`1vEs(zrbfCV0bu76AgcxFh>P2497vLQJF9}gBn7{wDM3eNA3vT-gA_`3x_ka6A MjpPa65eeW$fOYiD{Qv*} diff --git a/samples/h264SampleFrames/frame-1176.h264 b/samples/h264SampleFrames/frame-1176.h264 index 88f136ce8207e27895dd83145bcc3de0cbdbc2aa..f4492f1f852225a477c432993db34af37b5a8525 100644 GIT binary patch literal 6604 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 literal 1740 zcmV;-1~d5p0003AFaQ7nL7U(jyaj1}LBI_r0{NidDMkQgQ2v6X-xAF)j5$P(12KT)GvS`M02}}py;FpNy_qVZ;D87Iz!Gk*_s(F= zL;=7c!fHvx9M{(W_kcwMi7MB^$(KZNGtdU$TmnnEfCH|aXtzZdM({Y)G-di~_lLk3 zMT?sS$kyH?SH2s8$TI|vOyIB((h{_RJpy-{%MbnlB*U;%L^@pfEh&ge-`?WJ;0ag& zP;Vd`-|~;cBYh=3CrN+@uI72dzvM(LnV6a;E^vADO>Q2)Ja z3Jiv3yRGr|6hcP$WDtYh_wWJ2DRwj!to~>U0;FMXxAAz*&;H?{ZquS=jn(!0`dvALwH>w^>mqbM;<@Bv=~@)0WYkQEVH z&?rGXXj60@B9KN1Lyjq{-{H78WZ`WBBn0@xRg13%#{e&Kct+eUu^yASK>@}_tQ(J1 z;Q#=DFkj=$sql1xDBu5RFroMWA`GHAi8R!>SCv=Y3;@6n6WW3u7p>)ijkH$4Pb^<1&eb&XuIS17Z3~q z#M2Ps7Ju&j07B+hv~>{w?Eim&kjyGkwRv?DKmD{D$y?Y_)rs!o41)5T5~JACyZ>5@ zdOSrj58u_Tc*-6iDvpywe((SU1;GUz4RC;+pMQpPNdX{J6Suz6=z&dC6Rba0dm_ah6F|qsiDHWWA2U(%6Ih`x;d$pndQU zxj}Az^WI4$|NBj>B`~OJHF{qI7*I|Z5ElwS9BM!Q`Klmo*IU5;0AWf?D~o_&!wl9U z%f=>iyfB=X?<2s97yv4^fq^#MR=4Lrc$ok%brnfYI{U)L03I`qG;t#eoP1swC_1Zo zp{KP26;XNT;#CA++&H|3KJdf{w&(q0EGT)<^v3So`xTMnc`yI81YnLTk#_4z5%Pi8;k$| z0YLy2LT`X-@C0^$U~vY3Zv}x6q{tWq0bsm=+dW)S0GHPSFTi{MU<1nKdz+Y7XJ;k& z9~EtX>4r2*R#oyp{R6TT4j`a@1H)F}cI8dB|FsMa0j4kj@DQ~`5#~i-^XD&tycA+Y zm>>|v^)tb8ucFJJg5Rk|9Ddhh102f{-*M~>e%fX>C|1Ai;Hm8$lh71b_5%kbhhq;5 za*z{G3g!9)koc(v1)zxbLFCWlkm4ex;3!se#+&RpPT zNsW=+^!LDzvFsgI-s#T^=uoQ^6a+rfIk}Jjh8Q+{Y#nwU1msk~-~s@!LSO^pd`x+4 zf7YgNXa?7$m;ZqV+X{$}$g}?Ckw%1#`a}Q!s1r{L?#?8EAXql_F<@n}@9+sVm-@R` zAwTudsAIm)vE#qxFY4rsCl61J7)R01cj2a_w^A#|f*b+x^q`5edB3j_fDUOdG)DXR i08;bR1c6@ov1L&rhEx6hRse}2Nn1ZWfsx`H1_DkkdJ`-F diff --git a/samples/h264SampleFrames/frame-1177.h264 b/samples/h264SampleFrames/frame-1177.h264 index 315621b014706477fb225df10807594314d04b98..c501de8be7974e6b3cb64a016c805d6bb67637c3 100644 GIT binary patch literal 2856 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 Yd=O;M4S9=#zx`mtfi&>GBgB3JO7-q;hX4Qo literal 1179 zcmV;M1Z4XF0003AFaQ7nL7E^MyakiQfp}0-00;;ed}4iQlpq)5qFX+1fD9B38Fx== z?ZFi71kE3S1zKS#g@iQ@Td)IatOgfVGk6F91OV;z*Z@EuOP+4Q@cIOaeBe+Cg9v26 zfMy289+fG|MslJ%|SSZnHJ}UZ~;b%v1Vgr#Ds-z0|!7Sa^(OEuL*MgfP;$#BA@`8 z5})EU{d8Uea8Oq}=cZac6QkGC5qvPY#3iS?#jsZhyW}VT*ZY}?bFsrGIq2YwPy!lZ z0>W1bET>PW|C6}8-v}H-j*JLzP??GCe&JmrUj(8<;V@(f#0Exu0{{U4cTfsQvoSOv zD}QYkgBF-L71nh-*9NP;o$04JG0>j7)3+5y!UZ|3005P~@13)`jXi)H@6M+`XLa!s(Xn<<)4{7}Yv=|mFDZm2#C5}tXVEup?*-X&mvjLK_zt-R+3hfwoygsH6 z1IRKNzy|OKLQHTbrM>Vr06umAyde37Xem$YcYFz(NFLr4X@B~r5r&x|#4&~A`z`#h zu~$sER!n6IqJH=FrdT0t!1Z@j82RuqGg{OB!1>pA5C6>&35(f?fm6sYzX3Gxu8t5h z5)=SDaU!lokG+$#WiSbh*%n-E92BKE-K3$q^)s|pAeW;xcomPB1~d`@0W*K6rvLkp ziQzs}n%Dby92O04)55uY!lHqj5-@mEyw%%6<-7m<5fspo6sYI_{rmxtLT2sv)AX=W zpzu~^U;rQqfB--`hvXIa?*T;A^~yO07YkN@1_aZ>yPT2XPRU`E=PFP>rdcyU$p5z6 z#}*gspv9ie;Z1eei~ry@ErcvUjJva)_x@9hgJB`n1Zj(S{5%v?mIfdICN15<#o4=* z00K*Zwl;tUv9fI%FW=Bw#)4FD`n`8k6D5wE?$4tw`#nps*Z_P3DbPU>{otzC@FnmZ trhrIT9$P-iJ7f0o1ek_nB#ce4VeliGIFo9I(Qo?(90{j|bNG+INkGnP_$2@U diff --git a/samples/h264SampleFrames/frame-1179.h264 b/samples/h264SampleFrames/frame-1179.h264 index 9a2ece99a13b7b1ce79f9ce3d8463d267b4d8f2d..4beafbf1ac54993c89f6bd9c736aab5acc1a0c28 100644 GIT binary patch literal 1228 zcmV;-1T*^p0003AFaQ7nL7HG1yahKwLthiv4BIaLYX)eL_D(a$${!nl5F(@x^?6i$ zN47qEXN7Zd>d}}73t#|=1}20Jx0;zr4~IS1tTey?Z~_li!BZ9Dqjs{r+a`I9vb_L%g91B2E9WX`*D>@Mgh}014|8twX_}n{{}=01yiR z0Rq4P5J>3*=uy48?*R9N=E(t4%SbHoVfzr~Tsz(5eU0!b*(Dn}T>r?yvpAKo|v?KrrfFiPV+%iLd}^a)2_&AAup( z+6=wpaOv7}{I~t! z00;!W1_Gv#O6gSgF1+)Wk#R zpT)cw$$YQ?WXLqfCviOq@cl>=WFQ~`AQkFu0XY;H3lRa6#w6w zh+NP7NX!5c03sL$1p*|Ay%4MrOd^;O0dN37#Vks(gxO75!c&KcK`BAQ?3_+PS=zNS z_+=044+u4L5go^h7eo#oY!HdJ(0kyZ0ETc2z<+iXv!z%!v9h26P1M8WBcGeV01yp1 z-~vsYDso3zUiuH6K+0-BK~=)c=KOqApf|#v0T?mFNyQNtw*SxH&?Fco;Tk51dd0|4 zA%YL)A~FB?u7Cg_8jXMkg}wvnBp&#_4rU9$K8;k$|0YLy2LTP|%@C^e4$T$P2I2J1b1NUvxKoS*`um{bOOy_6) z^70u_6OR|5JA;OY1+k*c0?LeXG7dOa03fZ(C>itNk?8Q;ooAVus0;?IrOab*mMF>QP$2 z-d*5~b$ySmC;#08e$s{f6-M}B27{4f`~Cb0r-l9y3jknti~>?0f1Wdd>X;F4|M2V$ zE9JJP?B@ZlHrn<1|IJN!AAgY`k!m*B{&RkR=UvYW<^GwP92TG?YyUtatu&pT5D#PA~}j6XCO{O^GVhv`Ib~a2yadA|a~) literal 1095 zcmV-N1i1SE0003AFaQ7nL7G4syaj>$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6n6$AhbBLeU?`YY#^7X4*l0pWxJDxeJ# z3teEW6P#Xe7z8A>r4C}1$}J(E@L^tPoGgJKvY|l?5<{2GG+<^VVJKv6ftEi$|M`Kh z$ISFAy##OE41UmDO4F&`V3w-37MK;7Qvxot^MKR>G)1k<_|O0Ifc{3y+SB*npaVIC z`6bP_tW)2+f&ehiQah2m*0=YKjYog8p_p?E1RX3FGDb=wQ$Pw5u~`l$rO8s);0!_6 zcXncFO~hYq&PD(tCs1daHU!o!c<>AXwj&R3mj_6#25|^=!UhX&0RR9%6aj;({c=>D!~?E{vbjUp z3UCzAc><7h$YAvWKz<)^1_FZ(qITFJ;9*~8MhpND=%Gd<#YcBV9IKEJ`x(bQHdvhh zHA|@`t??_*dHpHpf&gKX+=u~@9td-xj>BLd_y7n%WHm=e zX4l_ga8=;_?VDqMrB`(izyLrDDub}M5dW9Bz-A`NwqO7V2!H^9m;h*YSiI5x0E2>{ z1m|MvKFk&hs>L(t0WcsabvljSqaTxvT|0vSOktXV!a&UJP1YZkOh7N73Az9P0YLz6 zCXfcN0C+F}00BV&If<95gs7L_r`2qU>)W5IOzW05s^%R46ZCR;aBb2mbCvBUfY? z0NT6j&wur@ROkWW(C!X$O9Xd_J2!?>zs!=2UbpsleVOKdok!~`t=IMbR_CJdJcB@i zsh|DAzz(+ftQn}v^}*h6dj}2bu6@k^`HlwqX(BU#W;em78bR#v|Np;%H1My&0YD8@ zFy9PsKJd2=G6O=<_hw0uAXnM#sjC*Y<8Lol|NrIJ!2P0zCekgvU#Z={TCZQ{g>wH) z%?=7h%#DBO1b3!Utk{4d8BAS-)AQhN7j(0B?_2wT0@LDeg`L~p(nOQ%@h1S9cvs>A zS(U!S|Lpr%+ra)02lqR2Z>8-TpfttyBi^`4!v_J4=mLM?XAh7aktciheHt?WUju8N NqW}BgLl_Jk2L!cA<_Z7+ diff --git a/samples/h264SampleFrames/frame-1180.h264 b/samples/h264SampleFrames/frame-1180.h264 index c2a796162f083bbfad1f6a60bdadb035c3e9b3c7..25376fecac55572bf750875d0fe43a9cebdb8e8e 100644 GIT binary patch literal 1444 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 diff --git a/samples/h264SampleFrames/frame-1181.h264 b/samples/h264SampleFrames/frame-1181.h264 index 7af1fd51d5e7414e7d803dea28f4831f36e0c212..14dd80966ec6bc646df69c26e830c197dca041e8 100644 GIT binary patch literal 1619 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 diff --git a/samples/h264SampleFrames/frame-1182.h264 b/samples/h264SampleFrames/frame-1182.h264 index 86bf467508b83b5697cb4d28befa42d0c885d52e..ba3b9678a508ff69823d73140946b38e5cf49d28 100644 GIT binary patch literal 1113 zcmV-f1g84{0003AFaQ7nL7KoCyagvHK;Z^94hjoUUJ&8~SKAItD&5rZ&9 z3W0#aZ~#C65CH%|2z@#>KiM#4fQnIm{1|M+hz&NLdaL<6fAl~AgaP#p5fZ(4_@_-j z`+x!lGl@0oI7bt06&6Q;5C8}RC|Fl&>Dbi85KTX2zyJsZ9f8Ewd_gs|b>@Hfm;hh^ zAaP-+QSbpe%Z8BX69@Yk4W58uGTfRXUjO1E0097`WIzBQ1OR~~O#^37ego_13I_^z z4410bY;(X&z)u>w^xsDvd354i@zkxx1M6g=tZ1U{C>-XD`(66DKt zFDDyw%4|TyKj=>Y1jxomLzpoC<3*ng0b>s-1caNA)L-%E1XhAU{EUQFQymI7tzH;; zyrK1Q$68AOVKEFw5rWR4uM4a27&+jOeMw?er$BM2MvFiYLm6NI92^$XAR2Im2#AbQ zRBr#g06<`)M!9AM5h(Jiwx}@0wZHxo`GQvr1_~N+E<(jdg=Iqd7<_mh2l$<|6R8)i zA>asd0003&0B$C*2Co2kFaQ7nK>#_4tO2XQ8;k$|0YLy2LTdnO@CuX!7!m>@P5=>w zFqvj3Q#h2)kRjvoK>~ecg(~A6cmOTLAKh{pus#3Mf~{zyX6f|U)Cd1E9KHt-BLUmMmPX-cu0D$8OAWb|cm-#ag zAQTSk`f|TJ)66jb?XGGQ<3pF7`Mekv*)vAj-hhv?9I8Q0IsOczC!?P2?G6O%pzuVI zd3I6@;VzM}LC^*7Fc6OS6#-~qW_EA`DQz@E=zk1J$in?}uztiqWf-OosYJ&?x_g!8 fCD;PNyGwq9;j!%o1eWq#p%H(;ns`=(egQ6k!LQ8q literal 857 zcmV-f1E%}{0003AFaQ7nL7Jc%yakisNia$Q3oXb!0YCy*1tq*-mbvE8cl6s-0?fhj zxBwv303Z|?l`8JJ5w_Pqgm44E03ZYf1PG_HI*?f>5TjbF!&86&fiTKSKulW6_S>RF ze*iE8G}SsBz!`!SE@&AgM4D0q2OtYk6ZU{ydmf=G@Fjat)KTUW@ z6&mS*AzT3rA&(7J1B(EtJiC^#)_mH~00;taGJpesWd+_a#L9zn`tvkG1{VMV2Y--( z0vxgS30igoLma!jVGvSU3sFoW*ihd>Lp{rQgDHekNhK^fgp$t)R*+#07T;7Lqiw0+ zFhyW2t05wa-=DBAF86~p9$u;u3AZ*S|NlTR01yH>feV5>9zxV<;u-)P5GkUGIH~ih zk{V3CdQJcs1{laqS^A+V!}*}LyiimDI)|L}7796*c*kR%c& zGvQnTt-&BGA4~_JP6|z1oX$*ED+VeO*|`? z`7;n86o|S$>D|kNBJS;Pcc`C6hdE#RcY^|*raY~l!SCc_Af}JMVM{$4O+9I^0oBwV z46-Ms{#z;+w#ribW&ph)5RT3&0@%Qe?BEPw^F%s^oEe4EV3ueB^AQ1*V6ZXOD42Ck j-x*5ryYK~rbk?qe;qaY(DR0u0Bhv@)CY}|cAAn1sCA)0U diff --git a/samples/h264SampleFrames/frame-1183.h264 b/samples/h264SampleFrames/frame-1183.h264 index 007c840fb0164610a0f4ce9ba6add48caa1cb50c..68b8d8eb9fe16d7381318afa6743fe557d590818 100644 GIT binary patch literal 1305 zcmV+!1?Kty0003AFaQ7nL7LziyakUiQHkiK|H2?51$Y2BaL53Fkk9b=I!t?KWZ(cy zqGL?zLRUFG02nyVNpT+KT-vYkS>YGRo;U%(6omc<&c2LRTi#$$&#JE`?q3DO5Wteb z$R!y95h=_{ld-%oSTtKfWxwb^MyctiUW70yKFOfT8S&?h$E#m}01yK_AOHvg4-eTi zz2~t+F9sBYMKYOUXgDT;N^dm)0Dzzu9bf@t{U~k#;JgDC|G5K)2m`rD>fjFmJen0a zF!TU{(gF+RCuRWm;Cvx~Ja66s06}2MBPTc3O`IZ=FgXVR1uy^*8w3E4r0W35&?ks! zlUG0>ju%!6Xx|nh;+p{{n){f)r-@>=FaQt{A;17YI1L1k=qeSdIp8A-7*)+S(k4R* z{6YW%E1O5a5C8}W%9H~U0lxNb3d+MJbYK8*VGI-7CBC@#T@g{<1}aX|R(-%>OWtHE zKnDT=Mf95GpD%bAOQDOPA517Mlv0TX;ta?N48l&}3T6-B06;K*OZD!=h?_@l)%+iT z22r;O8tJU2$Y>{!XyJHHJ6R|s@x5i>04M<9^5~*KL((W2JGozgQ~(a3%)uqFxwUxs zOIi*9C4d6sf}mOfRKLFQKmZ^B-~b>5NuUA<`QR!{A=P_;1^@~q+AbF6ngRsOi2wp# z_Pim`CsD)vL7WWm`~U#}af4d_k`N`;gJ@NZ(YOEu7=C>f4cWh9iaq;pwoHS_>3Y2B zr1#e`>URI-`Hh@~QwvCXnxqHAATTNbfdavzqJm&n~{H8B?P{(FfpCt%bp6V(Fu_c24TrL>O8BxAj5zD&;SGgz!X)c zWvN_~u|W54BOw*Jj)fD_uM9Y0Hr7ph|9|h+zs!K3*Kc?KdiiZg-Veb5W*{7HgwIfi zl?8e=^am-z1#;2WT2HKiCU9UY+<}m9dc4aafkt>s;Es>cxJ9AJ7x=&i9jR~*C(Tp_qa+po^@N2N?`!kA_&@Q01FQk~4$(X>z)(>k zLf&Q{;-#r=@P0(6|G^K0U;rQ#1q7J}d?GIV%}VVsVa-4g>;M1(K>%(hxCXBPcrX9} z0YLyciLL>wz#EJJ00BV&6+&x(YVZgf!2Se-3cxYacmYGexz1%vpb+3l7H2L501+l+ z=Oj;j2GJV^S{V?WzmkLelo;q>pVS2T9ki`);1iDs=mZE7B^(rD19RX3-DH^2mshN> zkfLLSKUB5%)+2%*{=mYdW|VAnAV4do zyQ8a{`1m}dE}swi`2JC0UOLNQECGM(1OD?-b|fidfR11Q;BpB;;*`*0Czt$!FN%h} zGjT8X)CeizeS$JXoxb;0R$mZ$Hpt zl`?cw5^n_O02vq98~rbmnC}1p!W0q}Lx$2q+81t5zi=2RHFBujqc;Yoc(jlEt#_4tO2XQ8;k$|0YLy2LTdnO@CX~g{se;xz$9Li*l^)< zl+(*-1UM1}n79r81_EF&R2f!Y{bYsIuS7>~{rpoTG0@=KPz&TaDyE$;_zA~^bOHnk z5{?Q$JF8FvA0)Ur1YkmB*4(%B z|9%1pI^evsC{EVDQFQ6ObxZ$$LLp83)UUY0E5OF%0KPy{6UU$c diff --git a/samples/h264SampleFrames/frame-1184.h264 b/samples/h264SampleFrames/frame-1184.h264 index 86e5727fad73fc086851c870aeb6bb1f2f53c81a..222b5dd28e7322db2f9b3bd2757e5858795d3baf 100644 GIT binary patch literal 1569 zcmV++2HyDq0003AFaQ7nL7M;?yaj@hh!it`1A+>kLbk3+(j5QxtN4C^5D9nJKQEf& zB4Y%2WC(-oM$ft&4B-Tviluw}=QKCk0O4P5pJzS)J3(hUyh77XQ%hu`T=0}ru;S!C-3c{Kgt zJl8-zt}&yaqBuw+U*U^r@Bd!>b96v~euXOY`^*3V1MmP4dH?|nPyi4LOyK|q0epef zTwp*kvbX{S-T)fBM<8@c4*sPF;$zyPI!GYR66o_o^xsHvG_BP^?L`t4O*0oDMw z5@*RbKKJl}YGQx@fLkta0@fk_`-BX%Ff6|*bx0>}pl>fPfIv0p=KY*DJ9$&p-DV z01|+Gx4Fn01@=zTGynnt&rks4e(0dN3NOg6qkPO?qo4p)f$0ZJSL=Aij5 zTMDBIgD_(71PpsY?*SI3Rp!7jG_sqn@C*P^b0!%*^rYRc7J$-pLHb^oeeA#i0!#$3 z0Cda+4u9kOKmZ^H00IF3QYl?PZLaf*zkh!MFbD{w3TMa>V2q=|_y8n02L?hsYlqmm zVQ+)|U8gc_004%^-Uha~DS=JZQ-rX<0TA4RBi{dEjC~2vg+W>js#7ik=VzP@+ml<^sZGU9I&k z_y7U{u7F?>RRft$wFvtWH?IHyAReFsF~H@_+BB)qr2U8h5V(~B-d!L-hX?yX`hnr< zjY3ILC^V4#umDJmPT1z<5h`DY!XOb53&8D64gfJ(N}LNb(6$1I0s$j+M{S&tF!H(%Z86{i0M@l#6E zWwKzy>S_Nqh=`gYn1v4efdR?dI2gf^oK`fmv8tt1@Bjn?0AS1}m4`~?Q>$N}3V?P^ z)WhT5PR=+=Gfo3zSgbcU7Cum~O4U|Bb=ngru z05!H&MjIdZpa9jDsAJ2DC%TU+CLRt;>$v-*hzXc5^7si5Cjfy0h7b@U37TT011JYr zqLB~2mLM@_qzLe$?ALSwq^4YL_W4dReecK?tnA1i5vS|~I1>c$!gxHbpPO6+0Cwpw z4ODTyxENG%2c5I{*Qx`5D})t|3(+;7?*TOMuF7mkP!}9#AUe5*|L&8G{k_)$+CaoX z!fo)dnFryN;E^U9Pq0uZgcI2baj);7DNQebpYP>7E0_6L<`ftf@HQhKpWNI3+E4;L z(vq&N$^Vi7o|V$q!c<`e$+1hm5M{)}N-a|Aoak!(fB(OS0%_rWWJAJ$jT5%I&tIAb ze{3(#)ZyE=J&U7(`dEP11&K6ktYW`g$-X~&8U1|S-e(6-&Ko~H|KT1TT(AoJw2k!ZBB literal 1428 zcmV;F1#9{M0003AFaQ7nL7Lziyaj>$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIln-U$!k?akBraluGO@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAj1@BwS4o4E>(9PXMhX< zR-ip~HppG$Lq_-h@TfW9c!@}kj4a%pX%ZPYU_i|VgpbP6Vqh|VL16!-{6;tw#z1>d zMv(HN1H`}pleOerA^W!iyqhf3kKgam z0g8rvlI7c0Dev9s004kc2VX$Hu9CH}G^vm`HK+0dpiIqD2q`30Ulh6IR5j ztMCI5BJb|aMG3f@t+mL&1V-u%)5gG?1+N|ez#C#P*7-1Xh|n=uQ4<_ETgV; zH4Vv&L~sAl{D1?F4gxA-SJ9FH5Ni zp^q3sUr3+z0qd8yRlEQJ000952T8`Ya%&(Py}E`R6MDiVp(rU?K^_mD0B;BMG3&EN<&%@SKaGmaks2LJ&8 zFa{_#yO@uT2-7-qxBveG;H^6$MSanw)(3c{5>!8U09eQg(lqL(fi8*4-)*5{6yW69 zAWI@ERPX_000IC(fpdW?Y-s0mfZUa%4G1Uz2m^94hyZj0NFwijF%dZy!Z%wb@Bjn= zLlr8V2_sG^&1jyPj9c-q?(=QFKlcN2fm`C&p7Z)!&jbL&CAkm-Vq8$?Lmh^|KIi}t zfT(ItkIk>Xx-R$lKYM1_->FsIL+}6)0}7z*E<``&@Gu#PvTc|E0s-IvASM6_4$BIW z`~e3AKnc#p)P0yP6;+C7&;c+YD1ADO-k}Id#*UrAfF>}_K;a-}cBbo(%BXxVpb5GF z00BV&ZYH<}uK;*30003&06B@S0jt0pi~s-uK>!s(Yk+F-2pRo=fdW7XkSGK~nAocT zc4)j49f3~00419gMJqq|$N(icpGf1&iYNMyP?WL0MuI9#Uh>%2pF>*1bADz&OkjVn+&I|^N_{&%zzKVTuim?wr3;PR$^ zZv#L(WR~#NLK}Vt6 v-w$r{dPjJqpnRq|JVf6!n-Mg5g{y5!{h;BT;t#V@*=kV z!~a9ZATf|3xp+%ZD~uSYK!#p?(U72m3GRfDCH?dTBPH*f{nYTDU*%(%P+(I7VLSM% z^KbuWFaQKD)0T6^TKO*hU;#PGpPU%O24G&B9LxCOJQX@nwM|Qnoef=7|Np;-0%_r2 zj|v5-j%#7~caA}y+Y9rxI9|*!*gQ;z2jLgN*9D2RCDstH*79b?$^>b(UCjTyu@!^& zr>p(n{t@OC04$s72go7#9XVm0J$~dsa5)oQyx*Z9TT4KCzHj~2W*Qb+ktRLd>i=*7 i`c2X|cJ>Gth@JmHL!SLeIsR;bgdf3yH1Mu|0eygm@PHNo diff --git a/samples/h264SampleFrames/frame-1185.h264 b/samples/h264SampleFrames/frame-1185.h264 index d1bca6aaeedd384977fbd0785be80a2bb6bfafcd..022ca150284c78051484ff5ce905fb31f50094aa 100644 GIT binary patch literal 1265 zcmVE9DAoY53~+@Ww_U@fRBJzQ00ICI0YxU-N_88MKszyk+3kV2^n*6g$v2qe&f zNE;i7;A zs@M(#MY~3v)M3cLGB-5z0q@Ab27(t>4p_hf1kyKDhu#2!&?fSRo;pd4l~}KU0z-gs zWFyA7eT$YB_&?R!b0*LL2yA`eYioj-6x~%gOSS+RAwsid9RIoi0R5N%AYj}0*c3T< zjer1vhUow}0pTsapa4iXbHJI*c-YI)tVD0HWnYxChy56p-F8QlX085sWk9H`S9&D;n?!TOORw`K1%cUNch|u11r=Bn6_Q+Zpsds%fCkPhOcD^M9iUqhHdX+| z-~%acOeC&S8}0zq0Ro|-A-{a%4GadqykQt}T7!gp%(h$Of+fcrX9}0YLyciLwE! zz#EJJ00BV&6+&!)YVa1Y5TH;N65s`~H`NdS{{SB&>4Z{~e^4ye%gn@aTK2Ei6o5v7KwK;Z>mUqb!99Zr3Vb5#|IjzX1$e~m94`w0a58)PbDk8ISd@z1bz=k+ z`2fMdL-?@&IuHs^45I>R<9L)fDFa{BQ!`*szkpQZM5RNwP(*#xL~5u%|FMP~FyLc1 zhl|>WfWjc?;vroL6NCbh6gbL()EA~L%rIr`@P^T;X+2e_29Ai#4~^#y05JMk6Hf~K zAQS=RtphSl7P3#$gf6}H$?RPz1Q%`XE=R~Xpim$QIu)uIn$9Y|-@FMJkVb|Ue0EPkro_m3!A`eSLyr2UG8E7<&@BjqKKRyj01OQ+G4}f#7(>i1Z zk3j5z0AlcvU>j040#~@m3SrkaRswG^W*dx+gkRVYFt|Wb01(0$X!QJ1!yyE|_-;Yy z05Ebu6O%(hzy_}XcrX9}0YLyciLe2y zz#EJJ00BV&6+&zPYVa1Y5TH;N65s;zO}ei?|NbBY(l<;eD{txq9QOETF+!Jp6~9u%@T^IBWv?2-d)^v^+g+F{4zv{by!;&mYPK@ft z2r2p$32!X(2Z#<@9k>7l38#(XP~fBx>M5LT5dbbrOL8@^Ou7ruk1p^YH##DY_!I-j`XZLO6)YpArJ@sM*fPlwH%;R|2)BwR|ya}g; zeh>-(?X3ea6)=0G*(mc{Cn3#vwK0+Z?&xu#0CzbbLQ;XA zhkVf~f~&{b_%fUQ-d`9v8hgt=^E0=#4A)IDmGw#({+jBp?(KsDY2jQ)w-m$(8HdKj b&C@~~&;rID-|zyj{Fdx8#uknuC%`#S#^|MX diff --git a/samples/h264SampleFrames/frame-1186.h264 b/samples/h264SampleFrames/frame-1186.h264 index daf948ee43f8dcc6cb8d566650e453b4726f4893..632c7e50265494240b19aa08875d76baafe22522 100644 GIT binary patch literal 1545 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 a)ek??wNkO){}1uI1OFrp3CEAmz&TKru6JPo diff --git a/samples/h264SampleFrames/frame-1187.h264 b/samples/h264SampleFrames/frame-1187.h264 index 8e9c5c775b5210a489ca8b4a21d9cd79eaaec952..98ddb18c4a730791db670cc71822bd62948708bf 100644 GIT binary patch literal 1051 zcmV+$1mybw0003AFaQ7nL7QM2yakisVG=kzG}^&0OB2h~G%3sQW)XuhL<)g`!*BpV z01yEHK?r>sHb2=gWq^iHe1C%pn3I4MEj+bX;#U6XfC4Z82m$BL_h!_1OR~~4FiWyego_H3I_^z4uUb z0W)Vpb0U!}uBRn4S{$R?-^d0i9(6p!8xcmByHC6j#0qII5-_15PLwPFKi~jF0)ei^ zU4cOec%`rW7{ZduXZzbW%-M}y)G%HEFBw7*BIFt*!$$1@AP~Ug7%&UGB(UL_|64sR zUf28+KnOqzZ2(|A8BqtrRh%6a5C8}wfB=IEBLDzFQ~}dG4UXVo03b#H0t3BOdKlsI{sRtJXeN}I8Z!WWnB5j|SqyK0 z1%`g$zy%3=>Co7Sn8AN|0Rs*&Q={gDd*95FsJ|XrEUkfaFsmoZ_Uw_n?5qA`>w z2A6y4AOJ)F1O!R|V3|M*_~c@gurybFJS&&qA#p)KItq6SxfdyapV7%^ak&bxgG}G` z=US-&mPjjH9RQ2S&xNdT68`F|9s^=AjGXz3_<#EIMoLfq0%_r1L4(3jdW~*zkB)D+ zf(rz)zP;5Q?`={70Gx>>x-38c{elRIRUcJ@AI;#-4Lhel$L03tEYWaxwW<_e;bVXV zfL$-c2mlBGC8AEK|n+# z0Bk)zaH~uFTkik^5CY#Chx`_c4e}Fbvzi0ah%yHp5-EFgf+eUki4*l1$N)fLGK(Nh z%Tn6IbIMQN1U5NX8!`Y?29^;}MH3f*89)F)0<#!AP6p7%QF_w=06~NR1R?+cLM#9% znXWGJgqWf1JRN0&2@*9==Xevjq4_KPzXC!Vz=R^)bUk1Ja9{&6>EJdI3s}|{|Nbxr zPyxesnl&c*S9=7-53`se!L7^yKme?#0sK7^f4=aw0tE_QuR2j1 zB$aO75!^%~#jGsspJF81_%Ld~YoRto6t^=N8PJHHFt7l=o>N6Q7pAtIc!z)hKse%p zzI=QHwzZHAKvDog4p@hnRLPWH6hN&?4+aS54<-w^s3%NYA`?tf`~Wa9#D=3mhD*i| zI$4DCr;tDt8fSnDA&&#$z}f|2@>hT$II>3xIyUtY`C{keMxP6cMgbzFlgEIKNu^O+ zZ2|xR1Vh3`M~Fg5uzmWt1_aFkh5?nep&2uX0YDr$0XIMZ00BV&ZYIzMuK;*30003& z06B@Y0jt0pi~s-uK>!s(Z2)TUGoTS*SOFph;D}2(@Bl8#T6;};ct8VTDRT1-MT=Yb z1N3HC8Ko2?NLqIl|CSOq+60w>j(^ZSs0k1(2*43Bk&5j6Xa*tV5m*L42pGq|-T|t{ z(o%^2R2}Ie6c9vIKYoW;QIU&S2+%DAI4&7hr0Bt4*SN&pY3`sbx;3x2SIE%vD0iLU zxbiu#Pp^CfIoEyO9tveNa(rhun#j`~GI=lsMT9gb8=} zePo(IV#GDR`tT#(Ki%Qb2=j>;n{_f@}DyOg}o)hwq2tbxb zySVB1|JQdU27sP=U3$D`?_&xc04FAv%^pjApoo?`S5B~R0|xlw%O!{L`F*=A(Qubq zQVKiRP6!%MGzSm!hX4TpMF3H95dmj#JInchDU-)d!C;Hh*}u=*zyijLXGtAR|N3YE hT1S?yOSk^~RmT&0p3q^~(ATNG2k<7I5zpt~2xh2TorC}Y diff --git a/samples/h264SampleFrames/frame-1188.h264 b/samples/h264SampleFrames/frame-1188.h264 index 7dd58e8f930a65d79a57a2a2643c0ee140762afa..c257fc5ef6aa085efb0f10e5715ab15c0257c6e6 100644 GIT binary patch literal 1504 zcmbW0X;4#l6vh9Kyo5)H0YVU=QNvnLlmuJ=saaS|4JrZ!0n3h3wGu=ug20o-5}_=k zEii(_u&7`~R7PM}98tJa}EFi(qOGF z-WAlaftZ^#j-csux*RB4nQCfIoL2c1d#30T3fWvTJnBKK8@OsPyEnXc|ZjKmvRRMOoX=a?l_9WcW{Iq(^XK@ZDm9k#+siS|*=N|*bQ-MVM@p_d*f^eUO^#1lb)Y1|1Q zfLYNv5{b8D0!=-{J5$@GRit6bdj^nONhk|M@x2@h?PJ7guiJLU4giE=lwEfyZ^;H?~1N1$8kVi1Jas;rzLGymm13Q_v zd4vGamTDAQ4`UddHUl|ZT@DaJ>Y8YkfSc#N#>m^&Sq@;}y78)u)0xP8X?Ei9Ovbfn zhkz!B=h-h5&x@Lu6OZt6M_eap7j8nzM-(z@!Mzi4t2F=C)ln5iqkTp2`Mf&}k|ki% zdw%f9&!N2V??fa*;X2b_4-}9bH^XzH@V4!f3()N_yYz>(# z_axoc>d|D3kE058jZuxdMq?I1H_XiO#GlgWfsJJoG0LPdpniy;TrZ6cL?u#wT0<|VUFb0^Uzs|9HzOF} zGRc}dC@aoiPgVT*Jg5~ldiGC`z)5pCsS3n?EETX9*Fu%pXPF;Adi;~%n6edfJ|EPA zfRN#HYkk}RH8b8hFMHe`52*>ShPRH63TI245pAo>HHJ1U{}^@H5&;bxaci+@u16VZ z-O=+|Y75q}NWDM$3ojDKt>0@iSzD2ULj5#S|3tmg`uew9=Hg2Tyt8ImJ>4dwyW#E} zi?Z@*RTBPRqlkW3cMeWB*k%fIbvuZ58oT^(>g`I=+gbG;>>Mu>IJ)mL>^#!dS7@H! zU7hm9Gb%(I3a>sLz;N5dXfhD%UQ13!gZd!R+`jcP1Km1dyhiqJ*lZG#y_a6Y+Vs- zCDL(i)r*(es^#{j$ORcCW@NS)zx-k6*z~kysYg55TtB4|X^86d{cTc)Km+9ULg--7 z1_=XA31~UaBD5i6!e!y&ORdyk$NojL)3wfA%e@f|v(zNaT2!>fH%o|JKo literal 1373 zcmbVKdsLEl82)`9A9o`pNM@!aYM89dYSUSYmjsVhz>k8deIc{@I^9>;2WzT&U>B<001I~ zzFskUiMJK6Qxc1xaMG9zSa|NG3ga5&1FxJ-Fosf;_8v3y%3tb!CwLDld{mytr^IC@ zxicef4fyVzh!E_iBtoSeUeT+!Q36luIV2lGe zT;P6ko0Ih^!#(y@IG}7*r{b33Yx(_M94H+HbQ)lG%)YpqCrOR73H>v#`5#_sY$VRj zEuGE9013y-M{_pUxrv9qvp*zi$2M`cmR9pqME7ikq;%g&00ERuW{*_&da3%JtEk6U zG;561Sdp5F(e2eo+5SoeWM|^pe~a&MZBP?bc9yTs22$E(wvZ1SYECmQaal7wXs)?uNo1+&8!99q{j-6;k3y>h99|@lfVgEVkZC?4iMw{n;#rudmqRaaz5_E?TuKopftBW zcfGR~@$gUMi0hw@GQ6UCLq9q~*f9Tw(94Qr=2YeD_TQnDbY@qjy|HpX8k1aiA&Pg- zygZSHk(5rL5-gU{m?5=9IlfSh0EN7Do#fuadOv2ZTKTP2&M;F=)u9 zTR|P5C%Njizp~N^QI8%axt7Lw@PEG>EBSS3MS0x5P$d-W}0_3Y*G_^n+7pDbI!=K zec~7RdNO!Cf=O)f*(Nb7uaIOw`+2RXEppmKS*9t2S{@Ep0dQ>7>tN~B%9@hG7gH`} zw4r_Q+5bPNhDpbZe043 zVU~)Dg>@g?9n?EW-3iv;JPa-mriyySo+CJLpDK`AU^s^S_Dp#45R}k&_ fE|Ff!-qo}I-E_TWO=h{ct=|aW!IpoYqFnYrL)Vz! diff --git a/samples/h264SampleFrames/frame-1189.h264 b/samples/h264SampleFrames/frame-1189.h264 index f4621db21b1cca0a7849b731a46553fb84d8a058..3003904fa45c6d89ef8fa4621dd8527e125bae93 100644 GIT binary patch delta 1325 zcmV+|1=9Mm45bTy000012`~Tv0YRIf8oUL8zy2IPP5>;-2=xW7NZ~W&k5{J0{vIqP zkN^S*zyKls00J7!yZ}-S002PU=y6~GA;^#b2tl5&e{v6-Uw4EI-uM72VH6M?x7>Pi zXW;~4-~fbkh*1p|&e9;GZK>gs3|IqplxH!)k%qcw(S=ZdNOs>b>A|0*5r!PV01yKJ z0Rcb&5FY@tX957_fE0nxH_hw^!0AyR040gTM^2speRj-0PE(Y(()g&UnPVrT13zgi zOkfMkO!*UYUj89U&Hw@cD!IG~Nzeb>LA?kXM^d_OAn_bu@W_Dh5DZI!WRz!>BeQ3P zKlc~_TnF8MTN%P&o?oz<0097pzz!#Ja@Bw4;TRAy`)FFPIGM8F{`D;a4^yPQPL<7l z$Z!9L4}|ytHcZ+RWh%2Q(Gdk-(h~%r0QkuO0)a$5jusLCdoP~z01bs0VB&w(heuYmkVDG%wq|y z6Z|A7$+YqlGs_kYXcff@^f zfNB_j4}~lI(E$KFMnSR2r4pBazS0H>%d8Tb+~0M7?IZz!^Lz|8r;enrzr04k0kz5i zMUFcHL#;G3g1sm_OKgfFjmQ4&3!W2Wut$C^f!y!XGr01yX%PzHuD5Sd#>)h;lOduM-Nf}JA@LwYOh7;aKr7W60&*xYA$2W%Pfqw?QQ!c8 z&=_u3WUiLU;{vHvOaK7@-~bRJ009+H01(JbfDXWlDTb65)>Jy-Vs1m2Di#7Ce=u-= z0f2_h4mvd)vqHUMQqFH+FaQt^Y(;PgC&8Y8AR_<;8vJX+oiu{U&d2M6;nZ zZkv~QVTfs`j2dBHgJ`cavW1Mxrx0*20H+1!>?kl_$u z0-LFa$VWdnfB+yGbHD_fI8@}0GQGf&^Qak3ND3;rS)AXEgCsu+M#ww}go6dVe$njF!vGIu3~Sy~*Kqs?<)8?50003&0B$De z2Co2kFaQ7nK>#_4x&f=e8Po)b7zKqe3G_OK;Om?bM`c3HiiMD`%3KELCP5=k2G#zK zBkO^*0003&02M-RfNJo-pI|6CK)?`+3qdQ80)b^RT(SsL8wlT&bO$Q%qhP^g3R9y9f0Hoe;yiSIwcBB8W3sifMj1PLZOz)IFS+1AM8eDJ@Mkp(~`QUzv^F=>wHcnP`147eo{ jL>SEP{}GFXa4)Js7qe3T-}&J@lc5DFlduI41Ar(PQQtCK literal 1586 zcmbVMX;V`N6us|-gcu1VKs4+R7!_oT;1V!GP^zG)QB<%X21I31&{i>2#21K&5R-tT z2I4>v+&56PE-5|&t|N;SWz!fG2dE1uE#Q`v`Ug7g{cz`gI%m$gXAS@$6FB25ScTha z$Ora_g`r6(zMMS?Oo5CexV69~KX5@?Yj?ClAfn;e5;s`(;0l*zUndC@Ys~`OS6QEj z==!a!tadi0HV=QJwxc@~clo@h2!LTi8#1q7jUMlrx%$4Wz6uy?3w&{qP=U(tfGwf~ zF!iW}d-&@Nomrk(dgTWkvKP%@gNXwU!5`GX4D#wn86HJp59J?MBvgDhbRaqM2z`FE zM)iE-EoU__tZ-1HTd1^d;icV)T9^*5zEwVkkeD%7u&F=l^fI;~;r4z%yHbj9MaW#b zofD70o`=t2zuIRPnMDo4k{3K`;qtvdc)lnTl9P&RYCW@El>Tm7yu$5ew|IpnkGv}~ zROV!=50)~56QpeK>5tLe!49N zk2j5_YKr8tZ0aO&Ru~gE3+nlw1`_*p?rHo3R+YRTBY0pboYNX|GeqMxo_)7a)L`gqByz!)@ z<4ekg`-I)ev4fuB4uZpdI5Fi;+}5XcMd>;Ixe51Zyk9k8h8E6OX`k!Gk|-52Yh(j~ z_yPfZx7GdO7KQl}o~j;r*#jG>BuPjI`}j<>WpJjjD!PjdmZKy z_Sa+A7-a=VVsF`=UCpnzWerUR!Fugv{elvtVl+|5!?C&F$jT_7B5UP13gs z-w}D3Q4v>mrCV_opKrNcox%@w5o~6I{fkdJya`eh*WG7ZIBhHR+oCc76zzRL0LF$i zPH`=+xIa}^T$<;yTzfNx00tEpSdJ{oc&vjGk?S>Rz|bfMP(>BSSz(RBYCQH5J+7p zL|W+Tf;8O{y@t=I2Zfs>x49S>moA90s_YsJWA=<&&W#|dSGLu3E$%(>#c}8%LWCLr z3^|Aw$f7sJ&rt%EY|e~4?Xza$;~4?&^6`&SOfybkJKo(LO>3td%;{prQT)gnZx6w> zyf~M-no^X+#+=T0FfLA7WrZDB^cq?@^1~3b-&-RjO+>Ci;>nbmZI+d1CZ9%s1Qcm> z0lM_vPBo!!%FI5#EIm1X+d0FtaXrA+-@VtA7|9CJJ6j5P&OFtX`j=`Fr3duu6nGlO(aA-7sr~xx0N2~U% z$3|q1L$@0&di($Il!Pz;Fk)VuRn{}$Zs6?_TWx!jS@$Mbmu~7_6*Q6K_qM~=z%c&H zeC3EDg}pSk`nWyQ4|Ok0pN48iW>_d0ukIA|$YQh+H{RIgYz<^u>y35(2QxM!KB2?| zu|sOR4*#O76-5S>HTMmF`fAwwpO2oLG5JeWP?}}Cj`Mrp-kK(CXP@QSU}=+aM9_JW Xe9ubP-z73m-rMZ-zbS@?$fUmkPyEoJ diff --git a/samples/h264SampleFrames/frame-1190.h264 b/samples/h264SampleFrames/frame-1190.h264 index 04d7ebf91daba94ec12bf3ca2f52fb2a2cf4a7e0..0923ff9e0a2e0d93a80347009615a41e65a3b66a 100644 GIT binary patch delta 1300 zcmV+v1?&3H39}1-000012`~Tv0YRI<8oULOe-IJGf-?me5C9+m2nK*qUIHC>Xf(5Z z?3XA@4?qD-00aagdH@0eppb#|1!klhz`+zHaz{*(^Q8od`%N!`7;bh7P|g4dCMq6{ zD!(|s6Bhswf5KJ7KRd8ozzKjcLKJ%6cMX+Mto`5s6aeCXpqpta)Wm%CHCzn0P;{dz z8~{{8KmWb407YF082OQxg+;_g|9HR{k-+A`t1E#l^$6g20AQjKFq%TOyDbHR2{a&5 z2Em`Hs1SOQCF(@3YU*PI{L&bI00aO50FbzF)ML~;Vq{bhtUnDD04-L)a2zYzH0GlY zMgftzr>GBqentQ^KXqW`i~t}_BX!7q-~<+dH+5&!ME_RDt7T30099F(g1J+!du3PQ5~5H z%EvPlWw0^E%TX5h22o+So0v8cI|Lh0?2TIREB2g! z*Nh_$OHgo*bc!rJ{{U1GUKf+7(Gzv!eDGud1~Zr_Hh1zFIRwT4kL&;pDpv3yy=D7T z4^o+Jf@J{re*(~xSHb^`01lV|_z3YmGN5Sl0?W3~!&1862k}$?;D>?$1kk_+7;su; zPL>|VED-Zh1Umo#0YLz6Ch!KY0C+F}00BV&If=ZJZvr`gHH?$hzu(w2o94v0?eGDa zL>l82d+1VQ&{drDzHtUd;vfZPaS^rJ0};tU5{@@F68}~X&+T4|j^77lgrv0mqo(y7 zcLN|9Vx#_F39u5NV)6SVLu=T80N4UAfoO!T*`fwt+yB6jNK#}M)#>d2uLpxANh>(( zfJg$s@bsX6m@9>C-v4+K5h$}gTAi%h^b)kuN9DZ#R#1sgz$gL$AV>Rkxk1H^XvHcR zG=KmA0YLy2LT>u@B;*5!zYAs9>kn{ zKv))05O4Adkf*+}E$K&+iVzf!r_x~1RRr~1RVnK(UXw` KI|a|@;0gw4Jr8RD delta 1091 zcmV-J1ibsR3(pCE000012`~Tv0YRIf8oULM6c&|KiigiWRZ{*yQ^1BkMn3{3pgpg^ zQ2+yi1Z82=GCF{@(T*Rqp9}yXU=DJ_E>et4e$3s$OMnHLj5)Ppw5+D*feP~lA+qJs zXr~C9Qp4bY4B&t%00a`ObTkt6M)9?PLjfg5=!PY-o^~XEmN%J(ex(ngz(6Y~dYs)L zO9sja`~acU6U%}?7y}*ptRO(}00aTWH-G@*$%rcarAU4zvMpEw0T`159BZhl`{4Wq z004tfUGPNKrUDh;A`qQn9=;KB;^Eic5CaetImb5?c;k{#miPfX9!`dcvH$>eNSGQJlB24MBL0b9g?fCK2;0@kp|6~U%fs5?NOU)T^ZxKLC93_^(;{t#f8 z*ZlBS>wp6e&h{2OnH%rKtN6QEreM&o;UaF z0H~kLu|ntjfCvN(z=92xN4lRCkiGu^Cg=bF0YLz6 zCg=vQ0C+F}00BV&If=RftH2jozyFL7@Bm4ZSpzM9NYZ&3rf0jl@6?vxtqM&=8JF08v7Z-9$h31GZaM#$5ei?LjMAEu@s*zXNbG0hS`a z>?XiTfslUEL^5_D05t)}cnZWW?U@5XzqS4bfKVzUVY;S}_y6s@7V0phb`|{45&0nk`y8lRb{!v>^Y5&8p6ChA2{s4doGyT5Ypu)y9YLyHcKmY&%K>!s( zZh&g=$e%zYK-oB;pa8jfhOHC;V0)JK&6xVSxHfP_XF*fy&Nb(7#3`1^l)$*q3{a^Z&tzJ-%z>x{@{hw=Q3W8AUj-7AUj+vO!$*@$1tpVT1rn2A J1qK6vC>Rd4)}R0Y diff --git a/samples/h264SampleFrames/frame-1191.h264 b/samples/h264SampleFrames/frame-1191.h264 index 13f3ee50c612f754a20ab3c327aa09b8e5ae8508..c58ed54d4753b5fdbe65006d390058e4ba2b91e6 100644 GIT binary patch literal 1884 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 literal 963 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 diff --git a/samples/h264SampleFrames/frame-1194.h264 b/samples/h264SampleFrames/frame-1194.h264 index a9d3d436739c909aa1165dece64b9a1fc37d3e2c..c471069cab4e357383984a4dd4761a51b7894fea 100644 GIT binary patch literal 1368 zcmV-e1*iG|0003AFaQ7nL7G4syaj>3{+uWf-~z%h1Ar_vg)$%#3}blEdc6QlJ4aX+ zGqNKG;~DN){6m``{cQ@EYMuZH00saUbX`mb;Bz@M0XL4UJwyNk0Mk$i(Hv8OHT$ON z-I_pV|9}DrZ}pVstqy9|Q@;r35TY6_ouolV+f&0N7_bKID9&SpBMo%VV5k5ox1|6v zq|u6@(I=|pr?)eFg8*k3yOf5$MRNlm{tUnX5CZ@K0YCr{9{{pv0s!TJ6oJn-&Flxj z=}{j5C57Xo?u!4uyJjD!Dau>!@A-UGRLrrLWR}&*XaX<@Wv1kw?)U#h7Nl?h5CK)* z1f=Kv?I6k!G>)Zo-1EeAU+}<}0sw`$7D+~VQad(yQ~z;*1;Aa^shlPW?fVGO00;y= z0C7E&n5+Lc5rG3IwuP?qikU6{?^4ix%vnju2ne1{9CRRGF&}as7tQT&wXlF#01+?& zgATrvW;wl*6mP+n5LqSWv@qdO7N7p)Ku{OELTNB9_KI8o`$zx;0YJgq#$+TpO-2z6 zH~!!N<3I@^c-|Qo87nEDOke)+5(v?d&L1ND()oSyhkyV;A1*u0u*gB zl1wpGMaVzvB2bwLBSZiG<+c87|Ng;%zH9&l1`0w20D&iqE!h?jV_*Ou00bdg;~dc} z^+F0V%7mt3zn8*5Wf#WFs{j6C*e)^`UYd%Z>@>G^PH*_6;RU zs2`R9449oUN!(9Dd_PhI$%qI5NCkSEAWlaN2wh8GQ`5XpHJdF5F268>fX?Cu6lap~ zO>f`;LQr-Lt&zPIR?G`C^D{BJm2Fq{aWnt|1q44Z?*O;gEG_@w9|4p+iIQ<>#P<`# zz7N1KG3AC6Xhj9PEli8uJB&%%AhQDxzWaXm@L~F|{N6<0G2w^+xw@Eqgem#F0098= zo&Y4-!ly)amGT6Soj}TZKtWZ)%;x-zRH!=@07N7hE#Vp@iF)P8QD9~qwqhe6|6;rV z0Dx;Y01{zufcZnjKlfhS8}&MrrFk$34uAk4O9HNN6%5$h@r_VC02?zB;*ew4$QZxY zh-t`N=655*u>njF!vGJ;7}va~uHpC(%Rmt90003&0B$Cb2Co2kFaQ7nK>#_4qyekI zKkoq|27?ZicmQD)Pt^9%cR4s^N1x|~clC`B0!$79!~!PA+XDo^1b|tT?@}mp)-Av7 zz|aK%6GP@ePsk-I`Ma>W3mzvaz&>lyq-fF)f_+?~Z&>V}@b;qQhf!Hw^{^992=Egi za2yulrJyeJ#9{)cdEb5h-uPgDZQtNJ<%|Gnw4z~f@Dm_z9u^G6rw%>v6&C-Lk}>~- z%Bn=@gYSA|PD=nE5+Nfg(C&Wzp@}rZ6B?!gH1NN%;b=_I&2Qoqdbz6ox&x^aCSVY~ zT5w4J@08yU@PZe+{Qv*U0HSncFR63$UUV#P1>kcwtMWhhAQ_lCMTd@N{}`10E+7a4 z6YhPt{30-f2%SFwtM%ujH~)YgL6sdcZ_WSphX6;em>cp0V!b`qBA>gK$~U|FfB)%~ zqVhq#=l=1wAWb|ki2fjOI802c%j^H@EU^iQo&EdwKjM+=9;3fqFnvr`jJ)*yf8|Vj aT~r33$B82R1Oxy80YLy2LTLbM@CM_dUR`DY literal 1257 zcmV;U8g!Z?={W2}$O zkqiI<0bl@uBQo9q2n7H+U>-$1VOK5y7G?lWk()9zz}7!3-=Igl zC!(`Z%l3vZXlwG?HArg|+pwC#vK%nWsQlnU1V;MOE;0L`0{17D*8cx}0B0eVj>Ox1 zLtndu00IDjMO3DPZ(84;9wp(?f*gm17bHGS`?Ern06ZmPvJ{F_If`EZ#1&R^Wuxh_ z_E%$*0097kUct1nFnvN-j{$&9h@#i;gQV;Ra}3DgN0#@AeYg$+;yav#UM!J50%?B) zf6eU8w>Bbt01_LJ%;LY)Ql9mAW&q)d`Vw%YR+52Ndd30*6wKgsRcbZHU+&QP*y4d? zW$hgq>D&fT_HfC`UDINAhV_%Obn8rk~C%h;edbw zm%6|Vd7QzJsrIkG|DC*S00aPlGYU8tXUFhk)P4uAf1CfvkYUdN1ONj7!4qzGecPG< zqTrNR00_Vd2%#dfXWuM|J^l~=E#`Y4RpIymAPjZ^@ewm`TA-+? z_a4cB03a3s0s$Zgg=K*Q`~nIY0A_V;quiM>_Hl-~0GJ?fsx(@+^k(={;oKMkz<`Q? z=YzAYFHCAdLx2R`0003&0B$CT2Co2kFaQ7nK>#_4q5-SGKkoq|27?ZcmcRwACABkr z297&$MMj_ENi+J!hyf-C0cHsIYZSs`a3TfFr&$&#I8Qg<_5kPr*uVzxYvu`lu@TPa zuyZy#MUNAdpcWMJIT|uS_+IMeGO~b)26%Fbq&t1|H2~( zK#5cE6JB0=H^1Nl=w(OIHMZZuz!7)T191XzdD3+DZ~oNDzu(%v{+r=N;GwwxH00BV&6+&o$YVZc*KD{v| diff --git a/samples/h264SampleFrames/frame-1195.h264 b/samples/h264SampleFrames/frame-1195.h264 index 58bb87a8afab9cf897850fa8153b5be3e68968de..f1cf8cc2337e00bb475df733a1f66b216850a7dd 100644 GIT binary patch literal 1060 zcmV+<1l#)n0003AFaQ7nL7HG1yak6a=;yk4kVYun05fgAQ*+<|2nK*qUIHC>Xf(5Z z?3XA@4?qD-00aagF8~1m&`3Z*0VP!fco-stu1M*UUUZ<5KWU}#Lk-TsN*S+$Vxj2L ztMiNDF_r=k@kFbLoiL)=_%5sfm;sIuqt^R)bgGSK?*IUx2NeX{NlvCC=c%gT%k>9J zG9kbPL?i$E+Ykg*(1DMc8F*A&L|^w90~3MGgH~4pS?UqM?*I%OLM9bRR@Y@MU5 z6oIfp^)&)VHFYtXP|y7u02ROhKoL<60APa6XUl2~KZc3`7OP-54i@bia}jqV0La|a z)Ca#K02&{zyl;GR&1l2_doz2vj7AP8-E)D zhc6MZ01yz}AO`?6CA?^s5!sNOtaC9&TZFU}0_Yfk)HC1!TvZ2xC{!f35fKBD$)3Vu z1LVz;pMCd$03ahk7|;c9g-7n_U!{%sfo;Qp03cOY00>+}_y4dO2puau2#Hi9-tGWF zfkP3VH3@LBUB00wtJ!G=aZzeg%KhR;x; z4^c;+ArJotzyJsb0f()>2^HRnKPJ%}^4Iy2g23#(-~0~%QB{FKStZ9x3e7?I0Bqv4 z!66E9+6A#AWnc_m05X>3!b;^KzR(Ro5GzDOe)+Z<84dk-!Z75u2M9x?QDN`+0-%cU zyq!jfo39(^gJ1w-If8>{e<72QOkN27zyQLnZvqO|AHekKmDnaw1-tkbgqpq&{9pid zzz%>T#dONSqwESU_I@>WE%1IpQ~%(Hf&c{2zy=t2T4hd_9@qjL)Bz5_0003&0B$Cj z2Co2kFaQ7nK>#_4rU9$KHZT()a268aN9+#0KLRC5AIkitF(_b)Ot5DD+!1}64H(sc znt1(ysRM>6DFBIbMju}Q1+~n`OMjZZt+O}VVOub^6#M852shG@V~C$W#0>{+FPV+? zz#;}XPpWQzj~U}HaWZ=^iUnkF5M6I6nKUVbGV{hpeXHgG4l=J$@G%epH1My*1q_2G z7^!^l#OQ_4cYk#7uI8~lbAnE?h{O4K&{WXPdF3030a!0%x)Y3+_csstL}WY+L=zAJ zAbo((E~)_|Zu5@ah>F*Tf3eZjG_%)yIx(|tGu0oj2pd$f^^38-)I0)wbB zPoqEt09({-!$gk&06;WxH~_Nk+%igH#2Jn5jFtdE5y=o}kpxv?JK+2U002M`B__&) zqB-51Sy09Snt=+Ma^!;P)!q;Qg$D&Z{^LYMAC`xCzy=I?a)V@e00Lx>|JMf00RR{P zL*N+ew9c6UqtH8k05Nz>APu=30V~{S1n}ycD*-&-6#XX-K!U@t*x@xaB_V2&-+UkU z?*Pmv(Zu$V?0bJg1OyEAl=Q@>sPX&v&;>Yp!AkN6>4wxTuk#bc&?w3*#Y^Cn00aR9 z+0sE#t*jaH9s=+de8jFGnHTkVBP7XU_md0rKOHFWNs#;igA5VdsH&syR4hi{4nQsd z1#Fb-1MaB%(h zkOr>+crX9}0YLyciKGFmz&0=wAaE8E*bpm^Z=?$ngst+I0gFJSD)x>8^?;gq z{eYjm#_#2)aE5MoZ29bo?SJ55UAsh#=_)zs>_c z4&eZiO~8M}CjDY$93&<7ga&B?0D&~{o+J2xlS$1PxETJ$N+-SF@R*H$mF5Ef*-E%H cGFk&E_!EyGpMZdX0003&02M-M0BZ0C<7vTg`Tzg` diff --git a/samples/h264SampleFrames/frame-1196.h264 b/samples/h264SampleFrames/frame-1196.h264 index b01a41aadc3166eba6140acbcadb0b4041281f29..388fd221643ead60eaeff1e62785f2bccd092b1c 100644 GIT binary patch literal 1880 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 diff --git a/samples/h264SampleFrames/frame-1197.h264 b/samples/h264SampleFrames/frame-1197.h264 index c04fba5d568ba8eb586d708d1be6c13ad1001809..0beb27620bb757148bfe25c35e8ecd7266b57c19 100644 GIT binary patch delta 1018 zcmV2#W}R000012`~Tv0YRFe8oUKJK|@#6luN+~InDT+GfV^c03ZMe0e~>1 zKAoE%?3gsbMJT^!004kc2Rt%Z0FXd1H=_&{wOsKUeAytt0fp+f*5m*n01yZ$o(#$Y zBO0(#HgS9;EYg6=JOsWhX`v~J2fzSEBvO@(*-Grs z-~ccWpoCME8se=GFcVkcs0M&8S4#*RH38fp1|sfFi=%czz+Zp z2Z8yZK&VN7mzVKF%#$%U%013M$Odo#aB6vmHX@BNS08vGh!oOZ zBw<2AohVoUcfbIM1q0oTy8?m`@jE~GKlqzwY{OS|3}ZL|yk!VLtB`1uO&hcTfI|a} zV8AZ$lEa2${cQArzP+#bCV&Sh0c`+a5)7#LX0z{q?;HpK2o!(-fj%q%8xP~&3OWn` z1PH(YK!32v07N%){Q;0tKxo;i3)lfFnOs5=10O(z)YbJRKW9Ugig-8z5eNjZ)`8BD zOi9G>!jHe!9Vh?@4q7{aP>lrl-}8Ax>il<7Eno^05X4~^Eb1EYy1xLy&jf?&OOmBJ z1C2seG+F?H4Tb;?4hv}z4LCxCL`EqpH-Fv$ATUv*T(bg*lzCNKR2X84-~WFwO5uRP zLvAI=Sg6#js9Oezcmf@O0003&0B$Cz2Co2kFaQ7nK>#_4s*^|pB7a89-~jqjxGJe1 z&;O_e2p%RJ6rex>__R~01f;Kz0jFoqEH~ufhy8#Is2|J`gMHfp1BzresSW@KkQ2d% z*@D ztiVi8df*xk#eLJlJOs!b1cf{TH6RH<1uBXF!@hvQQvf#we1Flv-~kbymeK0;z&^$x zVuuHb6c^w*0|H^;T>lazKuf^|w8JJn#|9n#z8JLco&Q_X29E3%6-~GY8yW$Ap`ccD zKl;MaVgy)xh{HGI0C5LE{rn1K04?IC0pmab?AGO^ZCD8_ttjydRfr?CLk`L?M~PnH ogP4IVeXMLl6&ue9KY#xm38$AopMXbT0003&02M-NfNJmts%MO1$V@;mH|Kl zQiGPX7j9mldFHGwM;%c9Of@76{x{?794Xr1njVG-D89)F)8atR8 zE5T^hF37sguVTPEXmcN6d_%P8D62kMqo?p=15Xk@zz`z4K z=&%ixLsvb2|Nq7SWdH>P^;K$oL|djFzhDSqiW1u>G)N|3mtPCqLjVB)NB{x=AYkcX zE&S67nu#hVd6B*zP0f12T5a2X{3|`>%{!4%ZP!JJn_n_$DlS!&9I~u?MfB>$F zCY)QJb4RO9aosN@&o_^3P**Hg^2?w;3%T50f3pH5O4~ywJ7=2 zR1N@S-~`}*rF>kiMHcyF8#f7^fzs6QAohWoYx4lt0~q&NT`Ku-o7c(f(v{R4&> z8R$8ow@27o0)!3%3sx8b$&)}d8N7{lxc2ZjmjPSn>%-$5Ak(y|6wk0J|D3t{K|qEG zqrSp9e-D4K6CijK_#)Y0k8y#|H}!ZfmRT${Z+{(MNuam6u0Hhp0A0W!MQQ?J;T`NC zD8okUkiOuhEMl`g{niDgEKs4)j73yx9c_0XfB*bQrVs$YA9M>c9{EhbFfQmzH=g*W z9C6-G@Ls6ME5~x?0#Y8gSS~fp`=^9-#Hiq>e}lzHC=(^0+JVv0gTWJ%xBZ@(ewYBr z&84$XH9_BF5Frnjg$l5jhoBG;6AudK_>m$4T?K+wAQ53k5K;f{Uou_szPHAV5zHyR zKrD@q0e&H1Msz>=UkV_&i^O1&x#qZ-33&jVBu{Rmg~Zd%P}9fI1Lrp+ji&ezS5l8k zG*yUv_UkGcY@-DrQ+taArXWinWX3`fN>gS1_uxRB38$AopMXbT0003&02M-N0BZ0C E<~A(bzChf!*1vw0CrX{{SX(6lSES@`+;A+JFE+ zPz#Q*0FnNbHvni{2mSwg2Pwh@a?#dY|6ljE+cRu^RYTwb0??9-y1G0Ev|?W4|8jr; zzygZ3oZ!tdDk|6ZlO1VA0C*Z`%ubE_@3aR!HDdtrEMO9OueqKjirByaKtzWC0RZ4M z5kWE01;aM0AK*(gsOEYcIz7Z*^qMWtN;)gLm*#prvBsI zY)w~zoS>R&Pq+*voW<+V02>Ge8RS!BvHW-#OQB1o2&fenN-0ExaRy|lvk5zeOvCU1 zAQ(TT`uAc)O{2GJ{tv(dDBFaMbknooUm52@S#m*!+MJBZvv(A6M683O{K2oNlQY^bD^sGi;! z6O0T{L{G2483HR|7=R=tfELt|!VI87fJMjw009CN1P~2vHNVunSFR0W)P4W<@RU#p z)ahX}k}vCIsF&6T1T(Z*Q^8eQAu@l#m?$5EHRu1o-<>YM%#{Yad%yklKDMN0AA$hPKsfCQo}mva3iNB}4pW2*<)f^) zk68dr;J{b810de@d6q*0jPRGiAv^(4%Fw=_?7DAqcU}MhfVhJc7{LLEk0w31MWM(S z_`n7ozTg~Bn5Yd#NG<>C2?}@Xj?7Eo|Hc3gum|8fL~y?WK{SOcwqgD%TD9K?=SqM4 z5coy_0s#PUNswp4BJWJpuG#_4tO2XQB8UX| z9so>%z+h8=FpjT}fFye31LE&qftWR1oYQc~Kbm{T*|Dmh?;y>Uhe&XbU;s_skp}Su zUZ+uG&~~o9@kF925=4U!Vqhh}@FE9g2D&~_&~P~zEe04xA@kTjDjEQ3NIzg3q>ngQ z#U1^5&wGDm@Dm_-+L$2$lTP)ggUmO>&Z4($37-K`9o(gLbqaGZQiXNrzIDuMcCNsf zcvnA{=iv-UQNzK7AVW2%6A$nJFr)w+4A!p!c-ovmZQKZN`Y=O29c~>!!Ug(GY%<4O z)55uY5Zgjf(1=h35o1?T7`pd{G=SFd5Osa<0IfR}Q)Q#6t}d8fZT7diqy>y)U*EqM z{`U9#z?gVfKkPtCGW&BMIQTB4jc~6NB`z`&Y#Pd}f4TOa@c0YLy2LTdnO@CM`6Yc5Ry literal 1121 zcmV-n1fKf<0003AFaQ7nL7Jc%yakiQfp}0-00;;eCNVm+$`TCq(Jh{Q0Kq`fmvqD0 z+i*oYK{GG_yw(zsSVH;Bb^vX806}$AH-LZuKo0+1fCK=FTy=I2hwvmz=K_FC7(*rm z13W-L0D+hU`;K#CV(@F03{AE6HZ#Ep=IJ2B!Mzp+XMl{Bk=+nMC|$%$8m3f01yNL0iqmm zOy#gl<&fRNj^Ti?00;oO2>?N`01yrG@|l21{ooz~fyA~%DCwgBw&0pcK8N590aKz2 z4I_;RyLJXD7yt}7;FlIdmG=j>O>@Km1OO;qTaUn{jK5sO04oFk02BlTdW%}BELh-M zAN}BG0R)5p*0VD;1gH6g_dGLz3Or4VGaDo%Br9+jIsrG3yfF_5i~0f%EEI|$049W` z@QJ@&zpzRQ3g>+EOGlzKd-Q}~1YTp3(^-vd6+st0%YXjA+{}#)juAc2M+gx>2x){3 z3S1_#okpMjUwD6?;DN+6=&*+M3E3Xk?iJCc@Jb{;69zzxKxAjY7yt+Zx`0xJnTeqR zYx`)h7_?yEQY`Ev*9W71_yh=bK*9utm27~Sw-LZ~JPfCvL4^PNz-I>I#SkWHBcT-b z<sDi?5^Qc$>=l5upCT9636|rzAJz70fhho0A(=)LDRtqu7VPkk@Nro06)MC0Kh!v zjZ4vqTpJ(Uhz2--0m4KdIu<+z_24Xk6LbIo0YLz6Ca4Cl0C+F}00BV&If<$PtH2_N z1o$2ROo6~)Q-Be>;-Bw)37XcBE){zpftW6RMLV1_SN}xeX2;Zh_;J+jTLqs0k1^djO8or`n+2r~=zLq4 z)U|d5!@{}zzds0KLV@Rl3P6TyP+|T61{8n;ftuCe4vneN0kae7fv*D&`M?5NIGD}79bd1qVJzEi`;tJAL@WIL z`1|+o@4N|zg>(MI1fdUgwEzBmF;CEZj=A0t7~!HS8?X=i082~6cDX6 z0p1bT161%8utWe8@JjUnOn?D}02P4C{DHR_kz)yZ_lEc4HATz$#5e%)>EuN&&wupL nWwZS+igEqv`w|l%_+Vg7JSU&ez%7sf00BV&6+&u&YVZc*_#xi_ diff --git a/samples/h264SampleFrames/frame-1199.h264 b/samples/h264SampleFrames/frame-1199.h264 index c290b9cb5f18e447a4de08470b2cb9d4fdc51060..a7a3c94b93aee5b53ed384b1a5a1e55eac6f7259 100644 GIT binary patch literal 1663 zcmV-_27vhh0003AFaQ7nL7Lziyaj^93oz&aA$K(FB2tefmHiA5-^9QR8megidi1`c zEUk<-06cKTw%sfLzrZ@W+S-42(+mVX*K~gT3bJ$3AAWE!Q8%Bjzu!{LBs%d8ykdvE$01yFiW%f-)RNP1Y8@&h& zAzIqk3dn^KAszpv@U$ffiw%JYBftTN*upHbb%H#ae()MKOaj|unmS1%;26jRQjlT^ zl!XSES{{ZnBGM#)swq1pZh3$JAbtP>4?qARY5)QONuD48z&!hhQE`C)!ph(XQ$Pv4 zM=(@R9^(rksNey5zyO7UGYR35p8L}HsHvG_I{0epUIqZ*5X)J~J>BpAh!&(M00;%E zZvxhP{`QC)h6R`PE~x|x70}&+4}d@jX#n#KI)%&ZO{1^<#sCGtF6!Lm4}&`=aT)*t z0SCGO9B*VpRsY;00s}9<2eL?#qAI`q1fFZ|MGS^wivUGnHS9=DIk`O^{1M!Cc9TG} z1hif|_`)czY7H?i7v&Z7IeiDt7XlEYi3$?{01yeNE35&Dx@+o}1AzirxBveF zQ9;B2=z@e#+xNNfkes#tzPErFfb>ct7*EOp59g0XtiE9{HHzN_#XVjRf}8+3Q1t8c zlB>kbi@FpgAjk3GGhtUm?(hQ%K!G+8b1HM96@VM808Jld@`CU}5)cId*gqNOL3o!5 zJo$lKmpf6q@B({E2EkWTnE$N?MZrj8G;#+1d)`1~USLyRFACoEja6U!|4#CM`kHAO zY+VRb$;pm;TWp0{~gH0fKvE&u#tv z;VOXrHQ>*Z6^St`tp;!@D^Rycwm6zs-}|%|78Ow5D6-B&|GXjEK!rX{{;X+-$gSZ3 zMGPdQeqbylMcUt5-+%xh8t4WA6;M5d>rjuf6MFCf0s-y-BODG~-J?pI3QyXA0Sl0| z0^VgHNQUq9AE*xnsy~uiiQ`KQg85(okr@Vvb1R6IEg||y1VqLH01p69>No-txL{0p zIROk&p^NqYUknBeK}WHJ06{s2cMDqRkowK0UVZt10Dx~O2Lx=Rq4Dh4yo{*)H!uJY z2>^5NG~v1-DU#*y&)^5n3{^9dd8s{tAGk0!*o*umAMt zu1;_NYH%2w@$=^YYi@wiv#syfU-J2k5e(ppKY(mNZyVfFlz6N73=5gO4%CabpqxFg z@L&NBtj|Kr_kawc)5Y}}0+V_R-@q{hi|qvQJYf&@+!vJ`0zRmxy;183&yEp~%xzzI z!|^~A0LJAjBoI&G4~H=kkB|HC00IK6OaK~bq`)qcNSFTW&9T36eQRsPzzK)o044-3 zBqK7okaC6|011(dkB(r1`)v|rPe#_4t^upSV!%y-&>|F|FeG~e{lo-DOB5$keJjx(;0gm1 z?4WP|5H*CcAw7CiKfR&5ueMZ-#QxS|pUbZQ+78Y@65x0dFlYma!f`a2xdg;BF9Sdt zfC=I6QPhO5GV&8wuG|F(90C;v?kdjSz;8Qc@EZ)zyc9<1h^7ufuJ47r$~2u{@I+o< zsI`L#{%{DH4KZ7}m5Sg^JS&&wQ6f%IfKnX?RJY*W|IlsGpa2jA&UiiC}7&=`2t+k?Cje4+dZuLqJqh zT7VFc7$@MhBhH8f4b(Ac@HVN2N+tij1_aZ>yUY+ENERQzNjY0Khw(wh{9WzW^VKSBa;#`#6#n@ZigGe10GRWMBcf3Y@F$3L|Io zf8kL=FadYhJVZJFTpsc<;{m)U8r)_D{0#xRljiv91!&v6I1^6^=kxFl+yDRpK>!s( JYk+F-2IH<_-BADl literal 1596 zcmV-C2E+LP0003AFaQ7nL7KoCyaj@YA%zIw1J#eQBbAJRArGJ`yvjhn)(I!3`_=Ho zc-B9sPAc%8iIMd$;w&masKI~$fpurx!X|!xS;G&-6@5sqJA{7nA-JgGQimnJVHgM` zUr!6Fs$Hl5`CxjUVQAB<4)1`N&JgRRwh-m-+7Pt%IbU)REh_H*(Vq@ru^jRl|JNb| zL_;BF21?aYz*J|oDF%@pdn*$1A7~Q+Z(vQU3hJ=??EnDW8`^jx)hYOp8tty~94bea z|J}iqGhVX70mh1NcI>U7gWNEN60``+QUAZ72rotSSB?^67Dh>_r?G7PFY8fqVa z5daPmG7IQyB@!!t-t;g4Vh~;pt{u||oMe_j1I8ddKR_(ldH$%To`EV)=N@c;2abHkU- zG+<^VX2wkL8{+fL`UH6So`rUxjQc^4+6gNyr*(pwsNJN?1$Ba)6_vUJPzceMwIiXQ z|K|cXCd)G8_xtn!XE2{6xpvixd-r-E0}SM&x*N>ve|fNLS=qtS9$_GZrUK?j$wZ1^ z1qAGJF~rreYFhjN#vOO}MkbWpMb=v47yyX9L0V||5m>e3U>E^5BM*O*0wUIdiozW+ z!-Y7*1kd(>!TB756pf~uHo#4IBbdAZbq6S#gtZ?2seBs*iai9i5A1OSj}JY959P%AbFeS8t{l0tZxkx@pGzyJgW3y-mW;A~SDbwIlE~sv#?=n6Lf+>`O18b{RnsBLoAZ zJ_%R=Prk6V&{l-Bh}#|j!suHc>1!%clm}Hr9HOuQKmZT{0Aho0xQYDWjWefuL8$`P zh=z36W%q{w2N@tXN#I*zhg%n$m3@w3xO#%iHEq7}hzw9&V8*T_duiZS{l*$GzyLuB z5jOw;AhG}g1rdS&OW?df5W@hFC>}V^jevokLs%1}THnbL;eY^uIB_CvOVZDIJCc{{ z`@xg}Kw0#9B1XtT$1SrVBiH~41P&2bs4rFv(JwkFkAMI`1_ybij-9yft@_~8^2M!c z!3Hyiye=zHvWQ_K!s(9z0gey^YD&B-iI@49LZkXX0cgTC022Yl{JdZT9s}$E(M=X< zs3l2KFGv6%Kmb5FqyQTj*?%qu4h-ksR7u{=;W0Q>|8M{T002XS8y`8LTow|5giHt9 zfrjNY1S@{{Bv$#_zr0`oASeJbf`P{e{-I99Bd)YY08P*U00BV&ZYHn>uK;*30003& z06B@Q0jt1bz)gYBA`rL$i2Yw*_qf2snDY@!N?+j~oFEJU2zi|^mS=DCLo>?QP1Va? z_qZFCR@vd9j8FC$QY!0GfBV7N$O2ps0wBf*pc@PrWE);j4iT8ZYmgvfkN{~Q0Eq%? zL!$*5%J}#`hsy21P=UZ9o8j~9IIe7Z-GJ7ejX%SnhJDb0w4>b=g1GZP-SAg-*%~PS zRp3PzV;W`o!G?c%BNMhcmBjTgz?yhRFUq1$a)bg3|C}f~!~iWekDd^ZKRyq78F7HqDIRWE u+(rI80n(|bLM|V|Qzi_-hg@ls!{ALket$mz-M|0<0YLy2LTdnO@CM^IdBVy7 diff --git a/samples/h264SampleFrames/frame-1200.h264 b/samples/h264SampleFrames/frame-1200.h264 index a6c58d047db509025768e6a6922e9caa63cc48aa..8b2d2c2ab71ee407659a11c7c5317953e69d86ec 100644 GIT binary patch literal 1351 zcmV-N1-SYE0003AFaQ7nL7M;?yakUG6wbO0foFuj!?=(}E5Jy)&d+QC0098-3JK6l zuMGy4?!J=d31R2}9$)|<9TU(15Df%`kDx0xBHjiF;VhCmWT&4fBv0CDd=SHPuu_I_ z6ecbe)~WLgLG$!51RwB}aZB^Mg5m&70ge!(*88}0s!nI_005u@icPf?>S8>4ny+|e z`h%qzP~ZZm5RbMH42gjP$Qc@RP+&lxT|34AVnzd-2CS|Gbkrq*-~oe(M8c^G*5s@f z2qe&fNWYLcKjbZdqmSprN}>`mdh9dadPg>1@~DJNAI;*lbp(wYU*rZl6ajgN`7f^||1b~}=Rz1>8Ylo-t$^S(TeNA-MjVU- zBXdtc8vKj^XnyL!%NPJannvo7`@j%-1l~~7$4N1gs}%qjG7^UydQ`ivbc@NvS!G)f zECA#oSNP)$k$X_&ZB$5w5s}W=0Az&<&6IQg=l}!uU;u%`uj61;?cz270s{P^d{>B0>j6vps}D0@U7?pMCd$03aj4 z2xtPhLgV*zE!M*P{f)zb03cNp5CP1Hz5T2L1xn9CB2 zJ1$GVlmMPo1EHfP%3szSDuf9rV8058B3@Vr-~q3$0B{ftH}Y=m-EP7(qCpP6bfUd_=+U0AN#Kl2>IQQR2c1 zKl~q=5CAi}1`IMW{rWjk#5OHLhBZYVc%(o49{>O#90Cnfyb>$D5`ImhIpd1!{K-LJ zc355Y@H_!URs{uQmmMf8H3#4Uql(i6gek{pmc)&vfH8Og>RXcvDU^=;Ks5kBtq~3T z_ZVnoH}&HP!;;h-Bi|y61Uujgf-A!Ebs8dWyl>6HUVm=;~Oej1h5_&Wj6-*`3Z1TU}))pZx$%~x*{rCycJPsqkDGqyd&i()B7ttk=7&iNO157g( zd4b4cCRo84URZdH<(9W4Q;cqJaAEKhV0a$_y>4gG77c;{UXpBs@JkGfE7t4&{tp8P zdpZhGlL8w@8Yh&0&kRl1z5i~bdam##l7sA1T#t{UdO=RCP2dhdVoj?Mho0hrVs58!eac!!m&O$TU<~;Lm6!}AP>lcFu8@0AhO*+Q7~b^n0b8=a1$7#?v{Tq{&)a9iZo33Sq+*M z{xmpX&Gc!s( JYyfKT2IEs`IZyxq literal 1088 zcmV-G1i$+L0003AFaQ7nL7LziyakUO6s9~51H({W*dD+r_(4z!;u(Jkh4>J~cK`?2 z00;y?IEHVR%y*3||M~b}06;(j2v{OUtbTt*5I=+W00)>xK_}IOX}VPRfP#`CP|?Aiy@HYy~fIpcBKYY_J6GD`s(Kp*jYD z0)cY=z=4Ir0-y+C3^aN^Ea7mHUwk(p^Z*z+APLG#x`AK~d;~&(*}x;QM2P_+!+RYp ziALY`w?kM{h#% z0|TmaH5eE0AdktwBogFl1O^AkJqTqc#5Bk6>i{Y^00; z6+n+y(#@Oap{Uc*fK0 z#|;nKYgM??YPT0V)Q+fOYs047P5(Bk^IMWFggl=E}AOczd z5Cecw?VXqYDRyfAcmO~U6~SbkFor(Y{KT}B0XIMZ00BV&ZYH<}uK;*30003&06B@S z0jt35U;G5f9E=cv2Pg1^on9Je>;MwDwM+-bbN}s&)s9SFU?)KEIG6!R*P z?(-EY+^6_3Fgl>fz3^j&0BlhmF^#uTVt;}%2`5vo)c=2Ep&G2Q_=zH6U#SW~L$zb1 zH6@USj^mO4vUp(PDOCN}p&y13<`S>}JVe100b0PpX|Hi(UegEmhv6}PV_{gIAk{ce z6;r|e;jOMHAR&ylnh*!%L6}^^$Pig>peUFy;7mNcAc#9G$Pzgfwwz>`!oJub$hq~V zIfXxb*$faj!Dm%*S4BJZFI{tDyZcs_U*J457jsyk02Sbrzp~VKfEB(x7CN8;2-D9f z9)DOsBHb;YEPwy|fDE^#kUrLv7$52utJ3-^b3D)a-+?snu75uOK~Mky0YLy2LTi9( G@CM_5)ym5N diff --git a/samples/h264SampleFrames/frame-1201.h264 b/samples/h264SampleFrames/frame-1201.h264 index ab647ba3d45260ee17bcf1cf3fb043193b92522a..7d34932c777f6d9dc6be6e5096ad78d1dae166d1 100644 GIT binary patch literal 6820 zcmeHLXHZl7zTF7~LJu88fdEnj1R{zkH536sKv6n|Ca6dgl%CK-Q9uE~0z^?z5KvG! zv=pi+QY>Jjt5g$|5+TWc%DMW^yqR;yd++)1X72gTfA;>cXYb#dHEXTevj6~qa3O$i zS3fjK<~77fY#vq)hjRk}8vy-&@s-x}HTwSC|EV7C+szlB#8C}`Z39NY;g660+8J^W z|M$-pb|V01((?55$m(xTqu+rHKp$d2->ep*U|5h9<8baWCSMic*oF4hjpj|hE77H8 zeK8xy@68+`-vZC4)1~6I2Gw}@m6nstYsKdETN(_@QA%$(OJUN6U};kVD)+^@<<_m8 zTbMm6Uu>`EwPT6

      sPx!GIWa&vM$x7^}q8 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 literal 1191 zcma)6YfMvT0R8TxcehBPyj-WCMIItSym5rVK)8iEUVpE!Zs5Xd4o^N}7Xt%<~u}C&l&QA_|BJ<3DnE@<=TzJor=dcA}-n zC?a_u!lHea84gJLL7!i6mo}N!FDU`rl*dt04e!!061p)`?L1p2rI_9d@!X-0dd5}Z zw-snS%~`ILnAZxfbiG!bPyi0etp$Al9clGZD}q^o5CBKSMfS?%x(R#t9PjU_#a2dM zG2L3;-eURUy@%UkJLdszdU{s{Si4=_*sPf^qXG|?=HARU5k6FXh}ZBbNCp^o>J83M zSa+Ka7+C-|WdnOAfGv0s_kO0K$gzi!xa@roVK_t!hV)LyRxS1Xr%;s>qtU$<#G!S8 zJ16aL&g}>yuR~sJ#$n|+lmt6Ue5&e8I*#vJZY9>k8@HAddjS~gwYFK9q#Rmmg(+|e%*^EaK1@>A=&$}f^qS%oXUy~J&x(%swAy?0Y*Qcz zZiwa+%53Fy7+LfAJdWh;(nGrs-&#)f%#A#CiNej?N>vfXa_*V97Tw@g)o-Q3;7i9_ zD2KhDMt?jS03b9lsIa&cEsc9Mlfkm`z*yL$VR7;UHVtG@=-A&21ZmEFSQE%1tg5nc z34v`6HVAT4WvQ%*S5@fB)|1f@ivSBdJKP=9|9pnEV_4G`_<`|jzTmR2g>+&ef)Nv+ z&FiN&EA;+S(iW{XlRCNCh3N5E_b+C6p{-unw}X*O3;ElY>CJveT$p9FM0phEn{LeQ z!k-`55}4B&)fHfJdel)mYk-sA_VNC*6{=TyRa)uLK3g-#U=lRhzAthfUMBvG1R^FV z8B5V~8X~eTvN9Hw#%!ySU=_V>Ft4w$(hAqn@b%RkdyYfD?tvFCf`jzx^OS*GUohr1a zx|fK>Bl{9{V^c!cA2&3py_X(EZasf5Mw4qk*R4R76GkrFXeHAS?3Iypn6Ym(b2Ui9DmHpEThL!&iqO3O-hyP*xCk#Zs{Ul%$kSa{k HW0QXYxHmT% diff --git a/samples/h264SampleFrames/frame-1203.h264 b/samples/h264SampleFrames/frame-1203.h264 index bb7584e58de09410a4775a6b7838831212d48c64..4cdc59afebe80fda26b46ae479235aa6be36826f 100644 GIT binary patch delta 1276 zcmVuCw000012`~Tv0YRET8oUKJL4#M+l$_bjP?(6X9s&SWj1lcW;rakL zH!uN(DnD+D=V?)qSO8cV6e`FOB-=~(nScO*nBg#q*Y@FW=-^7o^?(3?xB%6@9?|2& z2uPAms3N+pN>waYEz0ALPgafk-i1O_pEvhuLN06+u)!v(|cKYe5l(o|r0LYw{S zY6KpnNqUigD}=9p(?&3KK|aL_P-w^i2KWyDLBTV5u-OyS+w1>{1LXSHT7V zQ`8L4U^SB%>JwM{z&B6|1-l4i53 z;coYA7F00))O5(Ua}S|3!ud1{?tnzyJUNK>%(h zkOr>+X;2ejcorDo08U1xc?hlW09!79+VN*MFvCl}+t>%~)>^Jpzx?3k@DpHo0X_$e zv78DzP)r9zrGi-TDFAn}PneFnk9*ht)81e36QFp@03#~h3L^7={Weuv!Ejll4WLB4=qZVk}O_#t~>$NxSPfBxBjl%-L8+o4Z=xrN|xT2Kuz z)Q|%mvx4+o7mmOMO1!fpm5u+fNa5dn3~0#txm{8p_v|nRDmtPS2+C&$3=Rurrw{2L m_qYE|?DlQ87=M#71Qiti3Qr8c7sLPn0YLy2LTLbM@CM`QY)eM~ literal 1116 zcmV-i1f%-^0003AFaQ7nL7PAtyag{oVx+xFm(;YS{1gtvfk;*W2!I3vq5&&i28a6T z-%|hrWQ;dM5gb&hN$?B~1-fQ=ebo3Z0*3{Zb{8Sx3dTSY1$%~u7eF6}FTfLE0{h33 z3mfkoV|CFjdS5sc0${=!Fd!M^5CDU$7v4Eb3JJsBIbNIq0s&*FPeB?5ywuxifHH6Z z0sufA;MDmy9xy;bVJUs)Mi~l%uwgXy$C=;&3yvr%jEx?G3r?YQ7A3u~fK!^#K)mOt zDGI>cL*M`e004pK6i{)B;lmaJwu(E30)POlrhww007r{o$OT{C0l;u^47N1UV!_RW zi@Br{@DBw}oDe14K8Q42RGo+cg%CBR7*}9ZRIcy5fCK>JX1w|fRI{~8zzx8gzz|^1 zQA z17RtAWY?~rfRre9H^w4LJ3EG7NQdDHh$2>7F|P{Z9*~89{=e&F(AeWAF{t4L;25%) zcnHujsU`UT9gqa#4 zVx<2Eqa$M7gGqPgfA-x7?*IV-dDsIFxG*%(X#N|u-J(aHf4AV40003&06B@Y0jt4C zpMaYK;PA8nzSwKx(f{<}vn_iZFR88{$M`4M8+k(Dhu*grkQ#l!Xd=}7;e&J=<}XDn zd5C{|>8}6pvXs$u-lyGh-moSEgVKN%YA7`{;9!}KQuU#JYhzTm{FxSRNzSrh%h=~(PX!#R50|NIzz3#CdO;0YLy2LTvzQ@CM`Q-Svk6 diff --git a/samples/h264SampleFrames/frame-1204.h264 b/samples/h264SampleFrames/frame-1204.h264 index 0d19b2174c135997ec13698b8ad80a09bcf43adc..b54742c42d336d13eeabf2dda157e94acb8a45da 100644 GIT binary patch literal 1178 zcmV;L1ZDdG0003AFaQ7nL7HG1yaj>$+zC$0}HV@Q`J|KK5YI!n~)T$QYc zhH-Ggxr+)gr~n~5vopK9Gds8c|G)vk0-7o2l{Rfxg}zp=GgD7_T4LtKf z&sHKI`$WOQXmlB^ArJllNaYx!7A1Y8K_%Biga8u*4EEj>Flv<6?f-ZH0sw1)fs^pn zlB48FX|G=Z03Zv%B9s`5^o=S+QeMOWi=BWe#JC0s*#BrgL&DS(-rjCKpvio&0A$E% zirq})D~H7bZHN#7ATPw325#WMm|w&H&BQKe{wII}API~D2L;|D?A*X+Pd$R*3E%*M zoGIkYN#v7pQyw7=ND3EN!dFz7rArTtVSOQE3t7bW!z79#2M;y~MBC^+@L<3J7+@~} zJ;>c#Cb^AF695qPhgqEb-T(lANlO4E*@sO%9$IuCDuW?@20p0r`9B{9RIyR8L<{~lw_^yBeAQFv$2?=Zk${cI&b?xSPhNUUqOaeoo z00<4hikJ?BYV3DI4*&+t#JSi*SKJ|Atq{|*=Q6u2I|u?T!vF_1idqDQki*;Y_%Of_ z>;M1(K>%(hm12X2;Xs*$}|39vi>p98?d za3(KPF=K>sQ-;k;7;1hWyy~6;kQh8cpp6MI(xpfCpd>&<1UQ$|x_llH2iKs?y{3u% z`g$ILE`GJA!c%2Ui0ikl>2*ni>SE|4UAV_y%ZbG2f;P@zGUWk- zjr)zq00V#lq@M!Ez!Mw!|MO_c0Tyq?_n0eSCY~AO2@ecLCcf+Q{dDmkF!5r`;PEBT zD9jM=|Ih_yx%J)u-#|FF`>E0Wy#17>2#bv4D@ONL^Dg^egL7cuzl}fuCBxDIHtn}k zUtryW!%Yamj8;f8u?qiQpd=Ib%aX*hzrZA~Tegg%#_4rU9$LP@faxcmqX%0003&02M-MfNJmt<6o=|B>(^b literal 1124 zcmV-q1e^N+0003AFaQ7nL7QM2yag{oVk@ zm009p2#LNcOA`muA#m^*2DpkXy7(~f|Jn@Z8Pgmn^4{?W`#{6;ISfZ`EU|V1YrzjU z`2Yq0!mt2fUj+;sbHq859}Ro1c3sG3^Nv%&MgR(M8Zb;!&3P!~Lg6?P3;-E4XaEEe z)h}QG5M%%W1sZ@5hd27(M1sN|00;mE0fHvn?)$ei0Y$+n41w$la48^{9)l%920jo6 z<6{7T!R662Tr<#5Raig_01)ZGV5sRaeEx=29XaM@6yLH>OMl^C|F~oT0ssO6;%Zqq zH~XP$C+{)ng#ZBp4y)P#N!x{rp1&~>ITpjZ+Wr6o2t=ZAYqZiD#t8A5gYE?vn#OCd zrv~K(U!Gm3+nC3M0R%%Za2+@DI->(&FbR495r7&ILPg}qo>>xm{2#rx*_&hPsvm#? z0LNe-5fe7`stSsaach_W0s&wEAQk{5D=Y{f;1E#A0`jY69^}c7vy3y)1i=G^QKHSi zqc@_b4&cBR1O!wEJROy3dSh48H~>x10003&0B$DO2Co2LW&glXf%w5F0DNvFj2{tA zdjLX-T@UR@0Ntjp=pxVT1lS$`Pl4cJxD!vNV!@;p6yUKkxr{YEhwnaLD?&gv!GVJD zCJ0DH5CW=a_Mjv{L$Q>p?{5*+`}2;_4-Nt>6MzXpa)JV;YtCDY@BqYZ z`d82qB`ZGHYNaCxH5H1s##zUI^Fa*W{_?I(tr6ey<4M#R61DIVQuxzO=qkS(t*|gb qsZ~k-{{)Z#00BV&If=FbtHDs86XJLSMSuVR0YLy2LT!L*@CM`VaNfoM diff --git a/samples/h264SampleFrames/frame-1205.h264 b/samples/h264SampleFrames/frame-1205.h264 index 8be689b6eb9e7a8efa7f859a389b75fa6af53bf8..236940492e79ff694e508372ecafd5108ef11e1a 100644 GIT binary patch literal 1210 zcmV;r1V#G*0003AFaQ7nL7IRXyahKwV%NbPyut!{PEJ1gjHdtjHHSO^Gi|<8bKn37 z0`LQr5rxJDm+aS?T^zum01knu13Rn>ZERnUAN$OK1HW+K;fmG`@WQq%CfB>KlbI%~9mI+ys825(u zQ2vaFZ~`L{pLqZQ62QRbj|I4VNZ_0M%mXw)0v-VEW)I&0ydD5y%y?2hKd}-p*w*$h zP%r2V{1Qi-s0D%MkV}2|^}v10Hckj@sS>$p0>hn$)QMbG?|pnFKulB9A5MT|7n_)~ zcxV2@9~m$J5DnR21OONn(ljKZE=B@&)|bHcAm-WL(pC23^ZNk zE=59pumdD0?Ab*(?tlR8m;k{7tzlF^)#7Xb1OheC2LMRMar}|ZnjyX^5yne}v=jp9 z7=Y9>-~m&R1AuE}2xs7+%VKFy5)%ihn9y@5QE*TMgo0Ca#KfgFEI zq!Kc?f}YRDuBtu{{6`1?O$Y#j3?8vTB?r2L=@}=zCQbl{AOHXXK>%(hpa!o1Rge@Q zAPgcNRzM1PnUrIQV)bScEFfs%_JET80O);XjM}1OIe5qa5d{D09^j1<55P`=;9P|h zF-Q~q9}(aT->269e|#PX%We5bH^3m8>3osg`hc2vXV{>y;olP$Z~e+zf`9%2NjV>e zt<<&kl$ZbZRt`~%ON^+ZNpZCR@CXtH&&twDa;9-f4M!OcSpGXtJG-WhNqcZE3a z?syXq2>FEt24ipM|M$RN!|u#Z@IpPXJaM7pjn~jV;iW>M9S7;zLLZ`*f&cywc=hRP z8T{60djJuZuET9v*9sI~Ks~ksfoG~Hg$R-W9^jWM9dZUF{W0$Y5zq675`M^BVhq_{ zWBxz~o?o;aJ=TPjm3x2xfsupx!U9L|BPUEA6hg^bI|c|3zHlZUFF%O*j|6Z400BV& YIf8~^|S literal 984 zcmV;}11J0d0003AFaQ7nL7RXYyag{oVx+xFm(;YS{2&KxNF9Y|qyP{A#|k5bqd(Zx zSup+j00;&Eg)V?}Z)LSb((tw4-~nJ^1U~JyQHJ@qJ+xs3(;pl*-}WW;0w7o%0uaDl zDF6f*A*CoM)wExmMB2xI1R8_{IwiiTQbuYGdAs0Ev4BCEga{CZ|7d1l3Q(3MgJR7c z;JgBL0KpnpsN91cH~r%Q004nfhQ7!j7m?aphKFwq!WaOrY+=PUoW=@Hqgh~e_<#UF zECvm|Mp^&?0LMlQ3fJzq zJOLO-k&6av6%G$HSVBhTK&2%i!Z|KCL{eBlIzXOp0zg~oHZlYjI|+&<{TASDrsKc; zfMz9;%%>Yv)qn#)rvj1*ap*EsAYjYaHTy!6&K(FMJ$KLYu?4mzyLr14>u1v zvp@h44hJGdTt*y-x+_|{><6CW1LBOh91x~I_qPK8I)o8XJWnnU(<83nr54}BLsB@M zns7b_6k=^%t`FeeOFr;2hz1(0@!Nu}b%(h;0CV%Rge@QAPj3L0DL-&kx!V%d8;syVE_kx*!80(-h%#g=hDVG zzLAYqAM>ECpM*pID0&4%kRQNKf#6&f!Xp%jz5_QJOL72>x_v+Q@1P}<-#k~opjev8 zK8~;7FcVJ;`xF!b2=!b4{6;KK?ao@1AVVb9N9XhUM)hSE|Mpe`lriaX;FS`O3}OKE zfDksGrOb-tt!l!in1@Vz ziZqK^|%Lsltt!e}R{(c0!_%!`JFrP3Bl*!0KYDCh`8nB!%Kn^y* zP(OOL!X$tSq19@g4nuF`U}+IzR(k&t|NYUyJwP#_4xB;uc8;k$|0YLy2LT&(R G@CM_L;h${) diff --git a/samples/h264SampleFrames/frame-1206.h264 b/samples/h264SampleFrames/frame-1206.h264 index c7c4449d70b3f72cd1de77fdfb0f42297636591a..5baa8ea6b1a26dbec62db2dfaac68170571121f6 100644 GIT binary patch literal 1710 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 diff --git a/samples/h264SampleFrames/frame-1207.h264 b/samples/h264SampleFrames/frame-1207.h264 index c4da520ce7f5e151a32aa81a69346d7b17a02181..1b29d3a11c3162d22303da6e7b3bb0e3182ac762 100644 GIT binary patch literal 1275 zcmVO^wa;i03c&HlU}2aVPeryWPAdE03ZyZ zAzmx5V^Z`%H9cGa0Dw{099?U~6I({!Xa9MC1^@yF78->g028FRX%2BXf5U)m;1EnV zCWyhg;DIcW5X8fS1r9)m`G@#$z7< zC5m7Ufq9@usPFwhz!V>FoZ)#x8UV0xoyJq~G{=B6#=L;FqK*c+BjE5pK)-}>@Gxxx z+K&acCJrIpE)Dpc0Mv$k<3o^9#paL~7zG{ik>Iglt4ZxqDu_0L_a9L|;j|Tu*6@UesP!R$~eQa%^DU0ub0E|i8tVYULW?ldRfO`ZYof_h; z5HuBA`@v8IfG!tG$s08R{36f*1OmVSKzIjdiHFnHt|DNdrenYk-~qt!J46VT2_CO7 z1;8l5qtm8S1_eTBwm6w4YeSTKpX37+1fNeb#>7#kD%6<44)_2O z0HABJmt;^v9w%%61~8;$NAGOg8}%x?sAE^a1>-0}1zdwfnrPji1OgZwV+H|tgq9pL zAM0nNE=$_~f|vm^08uspfbeBR9}L!T(ws`7009J001#nBU;qdyfI4_=0K6}>F@nxw zfB=CA00<8D82}#*%;3OBW07KQEps8thtHT0x7y;8E zJx3$+IN#o_$}BJ@Zx|88%(!V(FaPbr0%_uR(2$@2$nw6o?{_(DX%3{l`rJS(5e^!s(YXEBS2IFoiB6(OHiN&W z+MpI@4~@V92A}}|pv0+Hb;ymjx%?x59smIVASfV3J(1Lc$vA}?)m|E$00aq!Qc?n9 z)=#$G5+nElfElC6Ve(G{K)oi}z?o1nmHq($hyu}-A|qS~bG1W{00s|%P1yxWfS3l8%o6|jWs%yh@8C<}3Bk-M)EvD4kPVChugG8H@InfLPyp~S z0AUd#4Z#?~!rUllyf9UOvp-dMP!}8Nfhk-87(<#Css|JSFnMnsVXXPptN;W6vdo|W z;1xk~2x#@W0!Y~A__}EYAJ+U3LEH1dS$#pl)@<_ zl9n98NoRyBNHB(rZ>kVcw$$(#BCr-!kdZ}i&)652d%>CyFI5PH+nW;q|DYHE2mu_x zg~1*VA!;=74FC=Z6wySST=~^W4J2N@Cjbls3}hy({ZN$Q%%(h@CL5{LGTk`coq`i0dq93?I-)>3<%Lj zaY@fZil6;c{@%dQt5I=d02KwK769|o_yRU@h@cn*01jOUzeghT6mS1lI3~igW?M+LeMjy zBEbsQaWJ0m2n7Ju^pNB+K_C8rXd^4w-lE9-?*T@k;mWltX7iE%+88$Bv9X_v-6ey8 z7A~U?y4&jbLPWs~QQ%BGE1%2ti4%kZfHVk8m^`a^ho(k`Lpc3&-`(&w$su(}GZB3N zmCZS()?@c}@AOLP!X3yz>0qS2%Flnl_3fN~kdu7_fiUo{ zf5dNb0)fwVXeA@>Cje{I2BV*^`ipa?JER}tV*Clm^YA#p0003&06B@g0jt0pi~s-u NK>!s(ZvblW2IDdbg4h56 diff --git a/samples/h264SampleFrames/frame-1208.h264 b/samples/h264SampleFrames/frame-1208.h264 index 16b7fdd156ea684719b1a48a440f6e32b9ffea7a..f3ff49b8ed078cfbb3da707b2ab6ab836bbebdb5 100644 GIT binary patch literal 1246 zcmV<41R?tX0003AFaQ7nL7LziyakUiQKApf24DOl0w7m_1BVQN2nh`T4}+w~wsuYc z1j;5f&ZH%Cx1a+D8LBcP+^d^a{wq8p`4Z;qFiphB<1q}A0(r)GOTtN&8 zEF6MSkRcMB#Hl+Q!v%vyv=&?bgaoRdnsw+y0+a0=3z454bliHi{eS>~8DRhbKoEF- z$tCYSiJ|Z?t~66AmMVjSe~shR!&1Oo^3zh3M}iL`d@U%~hQ zWgGC3u9~`ShXPp!P8WpZwUUBQ8`a(b0)P$=E{Y@sJtBdVoE7*5KmhCv%oJk_n^%NF z8qjb7EC3fA6#~!-rTzDc009680096ZO#l=}&jC_l4y)V%FaS{|(Qvo4&=4kMNB|M{ zwc!uKbsRs$8Q>v@-~b2%gbj24NI;iX4Ix%DMBo4f07f64MMHLPn4*t<>F#96JjKi7 zt*HIp9jV*@m*zHe6~t{Il{H8Yh9N}YL6Kn5QAsgbJ;(eQ6OD)hB7I@-08ETzbUA_x z?XXFZz!FhFBU7b>&B;HllA>Q&7!c0UWlsfFXoS#@gD~Wr^&VB;kYT_7XaE8LU~1SjQs)1aDg1Ob(X)^d^3XqNNNT_z3S^Mh6MTGSHQ720R~ou^#5tod!x9#009AU z1}HIt0}&ofdvJ?GkT3Co7)`*!03Bctz;=n@egcAt z3KsJ){}nA-?}PKDKmG`OBLD#apeQWJGvN_;rfOGdgAQ>(5bOW|0YLz6Cb$N#0N^|X zcpMBm!T=DKLeH|Ih!mEI>j217UQ~B1-`zKntE6_Wu+B0UV(C zfuBrW#X_pe{crum1a4*em1H)HNblI6yusqA!Ys_HLqbzkzyJsV3M?yn56M?HSg;ulfDw0?oTeU+XQ+L! zy}ZBxKtTuqz%Mpl=!+B47=w&v4n?S6lKiKLe&7HQ5EF+WrOIuAq-3`4FbDuXu1Lm! zn)Ko1H-(hArvZn-0N=!`69=FTMI_;&3~ADoJFegO1ON_D%tL`#1mw z;4#l9M<+t$%>_670K)_w99>!HQFX;;YP+L!00IdB03a(9AV_=e002NN9zm))Hj7Gj zY%%YftPCRxG|~k=Sy%782BwHW0H2>@Mtu5S3c*tH2$q^4iVZvf0RZs&Kq5UHi;sy= z7v(pALCF9RC9EDrkXn;xJcCyN2HyYxfP;YfU&jMuk0~!uf+`_`yt9@`ga8wC0003& z0B$Du2Co3%JOp?g3_Ac5WGQRAGnfs`umqDpJr7wdA|M2)9tD^JN9#I51G&b9%$+e} zVm{NMh#0iD;CxpcYg_Z!9fmBfU>nkR&kdjV>fEAmUh6?cece`bfK5Da0Wt?+!AL~I zGhhyU{Zuo2`N{XJ54}41@%ah&8Tns`^xKq)Z+aFR&ggr0GWe9WlCV9xWw@29ajgie6(plQ;N z20rzvV#2s;T+?NLb^H-F+`v0#_4 Wz5%Pi8;k$|0YLy2LT`X-@CM`bsof?;khb&zwx86Zj9@}B=V&0s$ua^9{+`?=Z+IeWySLZ06G;e+gWSD|JUOl3Cz+E`av9#fpL- zvV_;%LeWqEb$)bd0t>WZZ$G@i01z_(0R~_I5RCu_lQ@731=b3pVg|rQw!{^t@BrJy zQUyfet|{!~>;MD-(|`bhF+eVW%wuNX@oc^-DrQ*8a(>cyKpX&jB;O?WJ^#@KDI5R< z09AK^DLMapgd5R=Na~kO#2zDy{umPAKoFM#$tce%M`q6of9@~Maxd`GYl(WD95DfqvE?G|E%&^u1}h)lnSi0s{QaN+FaR(!s9hjMZgQS}{{9GnK&nCO^Ny(8qrvz9kf1ms5z^W+ zrN|z5KH%DOO`re}ymP^=suZEi)e_GzzyTq-3`Z5dq7>Gs6HLA+5umsz2BCoXQoqa+ z06a!PvB;$olYhR_1_{f|5{lg4aewU+0Kj>^2OCqy(qG@)Ccpu<;0&?Hxhau8KhfdUpX<7Z?00;xV z1_G*pO9|8ZFueD_fB+B&PzGZG36->IQsa~MAORf;Km`<<0cSTq+7IA(dZPQ@hw*O= zp!r|`l4KhpNy;KnpAXc5GGYP%5&=G_&=iqF0vA%()b#HJK&VmR0D+JK04%;cfO+wY z*uHR#G^TMg5^UfAAT({>9!KAq7}?lXYKcP{h;s!%8td=o244~Ym{3s>iDQ}{TOls- zo0tH=06<8%s!$FxkWK=S2niFSI_lNJjw_(P*5CjT1ONp&T7l+D85TGVLCKaG8cx83 zp?Uz$_yd4IR_URD(VL;alC%JT06-1XHjpHT#DfpUP9OllLhiLjG^2fK3s-6GnjF!vGIu3~Sy~*Kqs?=STt_fB*miK>%(hzy_}XxiAyp zcmW;DGbcsKGF-H2H;)0ZRt}|Axl!Os)f=-brPaSfY%619TP8`E z{_I#B91qS>;Xpk+U!_mu|K4B{t%!T06f^a|!iO~DL_RU#a;-$rSs(iP|0_|*pdBtB zs0pWq_hcyWv{^}@mXL@2{v815asYG;RRa88LC}Xh_K~?6 zdffGFi)RO9fIQ&%p^oUCch=kR8}KHcKR=&yaj>$z9iTnL9kpfEC2`q0ssU#To)5Hj3Ovc1TK_7 zExgSs9|FC#`@jGY76u94jRDxxpj_OTI7T@5Fy;_+loczHOmjj$?)ct3i-+JeVAYyO z%9@Q3_RZZ~dvagP)4%%$8~_jk0CLb3E;#&H*s3b!07DtXo?C@6eC*y9>4e_60J9K3`W|3nUid_wdcDR3$0&w6uUbO4s4?OY zaj_zF?!EpI76^zWQnMfb>i_YBIHmKHddpy<8fqNAX`=%%Ax#XM!Mu81|MLmn6OQXc zJI)MTu(-c1qf~~mNwY!<$Z*3hqw|4i2#L~>aF6bsGZx9Le15$EXJb7biMFKSU%Q9^ z1OWhysrU`N>s@I0)i1{W9tcvN5M+?~H?GZ!KnzAfq7=$gISyX{W&>!v*=YJ~BFgJ> zU;rQtMeG|(69?2Kc<>kmxQr!w_$o}$XD~)gaHGt7#2@Vg4~XP39eA=t*jYfDU;Lts zcmN<6V?i2K2tLZ5jnSd=z%i1HUTWCXLRh({iNIBMy&J)pyvHH+oRk0k56A%GhXN`} zSHU*`Nr=0E0f#B9EomZ>IpS#l_&Wd=3cH{H5CV!4hz+^o0<;hhbY@sJ>1{3xI0Pf{ z{1>}LK}NZz|Fi-Ea>xTkBgKK5s0N>}mjvJ%w^Ud>Au`@E8>a_q+y)?QMHcV?APf;E zmet=&!5deiRnB+=2r?3hcgr~K;06gg96dtXV4eAC@~ldkeBf;frUelI;AcSyBJEZX z-&*Ggef#Z(5qts)t3(pdjm0Pq00;mK12}zi6Kn`QK*^3!a2*P>DGvLh$*lYx;;AJ= z_kahR1i>ZIEEM7S3x}qO3CbPzNG)?E%J2bX00a;|aC+GmE7Y(hdea^uzyLtOQ!)So z2jBpD5F_uVA}1o)M(b+$01P1#iJ@)FNNU!9O_)C5QF*LYUr+tPyMnLJF4C6fG2sAV z5X>A0P5h3iz|c$rZh!<}282+Nc{AshM4tZ#{}%H-kE-ze01yT{0QiWRx2-@_RC|wP zzyJ^n0097y1Hy8}HoxEyP{;!_t7RVK$&a&)HP8gX1BFqd)xV=R!j}%RuK>9)6X19O9tVM8EC6b^F^YUuh7S0XQKn^G_C}IAi=lllq n_&)+^)&0YLyciJ$?iz#EJJ00BV&6+&nLYVZc*0ZKt_ diff --git a/samples/h264SampleFrames/frame-1210.h264 b/samples/h264SampleFrames/frame-1210.h264 index 347836290eb44d80b0549177865e4a9e69626db4..4806e92f153687d8c5dc78c08d321b2ebb989e44 100644 GIT binary patch literal 1438 zcmV;P1!4LC0003AFaQ7nL7N~NyagvHKzKgr;=!ed%3cuR_->CvnjTdOgu=rXqdy_| zVJ}C*Vz?ocWg0mTFYx{(5rljMEq~o)2S)@CWB`BwfM^8;=pomJ!z(x6Npl3S_y7+W z00;*}^Z*0{K_MgP3e8Bjfr21Ep_Cd10EmUc%cWE27K7$k z0uGqMRm4v@z5?X{34k#|6nfup4V6)>{lEYe08vP`qMb}fuhdoU23xo~dmaRGnWU<}LvFtB3E($7$h`|t1o!OkQQnnJd@Ed{~}G$2w2K>ntn zLFz=8sS>%Xsd$eWpB@H%IxY@o0`or&;0AyIKokH30syb2bpf`!$}0W+{0P7xBG4(H zc#6-;JRgRN02ZrYI1Lu<8gnssBLK+U)6@sQBLEm5y0CJ_01zgTy5v6a0t-N!${Kj- zCbCsRz5odh0l|=u8sYXXSXmH%tF-1#pa2lm`@q)M1u!YPs&JQV05U?3&6IO~=l}!v zU;u%GZ{c86?cz270sH00IS7FaU-`Pk;LY0Rp9` z@+wrVJ^i2r7!}Pc?|l?!oLT$;0Dv%y^mXo~1PONE_XIdBgySOg31~%!lFo*mI3Sl z8valMfPiVds>VwJ+nI;}1PFitKzkLi08lt{z=hP+^(8+c;VuLG)`QA5h>-;!{4`H8 z1Ou12AVbCP^I+=dDG?$g=jY%62nGOPR+Uo0Q#qIJ?GZ5G2j(OJ+MX~FbRdr%h*xn2 z#i(#WJW-b1Q~$y600II)FiRcq!JaA>`XGqY$4jsCB?W=mdzQWjfE0CLU~Wlq;-gUr zKL8D!R-803UVKE(B<`#L$KU{pW77>Sl&1SY8h{Wxg+VkZy32#$pVx+C1ud!&(n*s| zqF?X=pvv&vi03A2<+J;|82|u40PbMmOizm}OJ}2yarOWL0Abd$K*KeXI1Ey$je=zW zecz$!QS0FU#sC5Ubie|j4nWTvU=|isPyhe~4q@V_Z~pio049b27;uxRmk=^NWfycj z0S>?b00BV&ZYIbEuK$2H#6+X1$>BXPGTLAAh(2eD2tq zIH)Lr*r?18#*t6}$v_+tP&~d66Z8cDmgYz|aoj{V{DCpQpF_>i&TvI%SYu&)RGM?*dp+kB_}h z3^#tA0EL4K)mIWxuPi_uXQQvnxxFWD!vbOF)Lg=Xg8+c3OaLf3yzej|;VhGL!B$Ng zGHKv#SxUf!Kc9Gk???zK;sq2VM;6zCh6cmK}13E=ZMx6@8E3kLv+Dp%fSy$RTmpKvmXb6xW1ga s8D^SU|3Ul-r-bwQ_yu|Z00BV&If=3XtH2wK0003&02M-PfNJmt<4fpg^8f$< literal 1122 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 delta 1452 zcmV;d1ylN-47dw_000012`~Tv0YRET8oULGeE|R<1t73|P{5#D9l!vFR+0g_FblZX}Ap)S|{0aySC0RRJK?h{^S_9I{*#{9Qh1sQ}jW(l#wTY`G5oio-7dAJ!Ya5=1nx5 zKtKQ>3wB6g311Y@kHYvoec%lM0fEagkId(b<YfS@jdZ^z7|6dMo)*icpgHYYB|f~|-A&?E$6 zALn!~6LSB5fB>7wBy;v7p1+Ihk~`ovRyGw$A?K^Wz@_liU~CKk+zJ5bWCaTeP;L#r zSxCYqKkOV}0-%ksb*8p2-T(lAxGMqzR94fu)1B6KWHi>$00;trKp(2$8+2SwKmZ^B zAP@q=!Nf!bIVn@vZEYw5$B`KiWp1g_e}D!Q!<;mKGfMACLgwbOzpe~W3XGt|Gr$FW z56DD|>H?xGS_KFvjS6l9q*4gs2yw-=d;B*C44f^XM1Y?dim`Rz*x&{3PYBzEwjBoFD)Y1`GUol|BHPU+V-i762YF07pq+28^Bxrz*Ow9)KZ)C`;?4Sil6p z)2;n~K_pU_#D@@G7!nUg6ZilE0wF+MNOqw#V=$=!3)zq8#OqDtH@Z(y@~7fG`d&7ojGx zQveHO4jY#=APx`BOaUrUAdqrBhKLvfAg?fgQpl4d_KrAIo1Xw+ge-q(aM92#CC;>Y zF?eWzc%TzAfzh*$MumNz00>loz@rN7lu)|ti40g@wx$3A1c7uA6I_)Z_29txkmUg3 zLe1(W0W9)ZR+qxym4*ZXJ%omQ0097A0Wk66_X()7@It@tFn$mhfEgMRR0ZIp9ztt> zbx-1$3FvVPbP;E02rIvC(Av?>FK;FQFaXaBDnRkGKR8ZF1NZ@ik#!hUM(-iJ;%JDc zC?BvCA5w?A`>!OD-~a4`VJU?}RoA8PF^&_3#0A2T2O5w6zIq57c2@8|fH0*c)y2Rl zS$3-tVdE1y-x$bKs}aD8FaQu0GT;G!04!UI*Zk-26Cefd&V-M-nip z$3@@EGdlhoA|%0003&0B$Cb2Co6A6TktJV+0_7 zIs#-50)iZ}fEo(HL;NEU#Dbs$>?8{G{YDdxA&>wU{G=I7J{tfM9!k5&jU%7v`_%{i ztpoZd2STi?2!FB+V^jbd0g3zv^^DD%H~zrJ^J3s8K;S=>GVFu^N)AvN*PUcSHgE7i zGV+y)j-(CizlZ?5Vz{J&w%Q1l!_H@aA$NQAh#XRa?uKzvl3Km@fVf7@N78_8t+hh{ zz?gVPNJ)kY2>{|wOsZx9{8RygHuy0oeC=U{p!r7n}G-z&dIOq1=vkSHasktQA>C=t`&3y|J7ET`q< zmUiQ4#?Z}J;BNqCbYK7=41@q2{IQZ0Mmlm3+QpGK>#_4qyekI8;k$|0YLy2LTLbM G@CM`ln`NN@ diff --git a/samples/h264SampleFrames/frame-1212.h264 b/samples/h264SampleFrames/frame-1212.h264 index 4751c1199dfd95616d9377b05b7bd3fbb85d816b..e12900430f82dbd677c92a65dc6d41bfce806e66 100644 GIT binary patch literal 1079 zcmV-71jzdU0003AFaQ7nL7QM2yakUSQ<|5+;w0ghuz~M0{<<9PAAj8vD5t!?0(eFY z!SE^u0Yh*AKmZT{06_?SIyOJqFlB&>QGWawPQ-`~Hl|vw@hhKnKmddR^$ijdyLdoP zrl0-50RtJtmh~8O3lfS-Bft;<2m>fsSBmS{%)JmzM^(T82n8L1#MZn)H8gGJ|M!>x zzyLtn!_c7+0UAq&kmnPE4jcn#pcqUyCWyDc_=tc2Kq&}_00sbn5F&}7aOv&fAOC=$ zaF=lMNVAW?0MkQ&0D$lXIRXir@qzU<0uNFoy-1bKT}jMa13L`|qW&ZZ`x+>a0Jsv0 zr!}Q1eoB-91}rt(WqJ-Z15khfAd~N)`Ye@Bk42pnI{GWLQcbCu{!(35=-y?Y7L>hOX)u)^GuM$`FB9 zAkik8H)sI>h6fnIfL-AwhYZL1+39Nbzu=kx6o3jQz%U60Q$g^}X9q<@00Ic$03gTF zfB+z-0QsH@9ESh_0x$p&AM7#!5e?k`AQ=TD2aTGLy?_#_l|&&RG4u#sO$eBJimq3VSqX!rkalsj%UX+YsU@IC@m z4g=$W2-E5*oO`>4x7}g?_aDGWf!IlK1|~+6Cf1%Fik+VW zU{cAu!N{{2r3ZKO;5hTD;|mWIvv>rQg{+LT+E7Qummi$53z5r1O x3vullw*)D({tOX7ns~haegXS{0003&06B@a0jt0pi~s-uK>!s(ZGdX<2ICT6yafON literal 1047 zcmV+y1nBz!0003AFaQ7nL7HG1yajI{NPGqj1&@WF9Ul$~p-8>d(7!Qbo}e{gYB=fN z2**&P!9j)q2GeGQlfOh?0Rx-}PW9AmT!s>Dz5pW7DK)MPD19UQE&uKVt^fiF z!X+RBVfpigTA$+oZ~z#97DQwG7K)AX66mv;z64lA8wVT`DSLBbC9r2myoo?zm4+RY=s=ra3>vT+=uMFYEzHISbRsv5SO8R~l+g|a z=e4I^Lx2Dv9C1NkK0X3F8b}79DF7h{EaA;6WV$a3AWo$Rfr2^1$%5{x3DTCxgtG*{ z01OCo!_kn#CF2Kt?814|#1IDsncxE7$AE#@Z33|QGr$lWStEp-8Fq+5jkC+MUxh^@ z0Fg4u4dUXnYpU)0rS?$qHnhL zAF39aB!2hwqx2Q2C<+tMcnMHA4~GC4HvoIiS%v=h;|p_;<1cA`z}pv;s9qlK_=fes zerNmyh#iEN0c3Hc*15mWJGw9X|OcJC`Eo;MZY!R03bC? z9AN&i3rv#1>9JTl05UTHne~;*KmTwr-PS+&-w_*^+Negvgs~=J!IZ&PMjn4qc{eADdM?k^0(W5v{gFz}v#XD{FE3Vib2COedBhGm*%E1=?;p4M=a8ZQjxi zRFt=}GC%akM;XgAr@K_|#2ty?2?RdtTO-s!N}Hg=fi&@X{QLv=0003&06B@K0jt0p Ri~s-uK>!s(X@F|*2ID><#L@r& diff --git a/samples/h264SampleFrames/frame-1213.h264 b/samples/h264SampleFrames/frame-1213.h264 index d2c9995d03646c23194226dcc59eabc71db45b1f..6cf29b74f8f5de600944dc394c77a40c906bc595 100644 GIT binary patch literal 1241 zcmV;~1Sb0c0003AFaQ7nL7RXYyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|iq{f-l zgz9$m0AS-eMnrj)b85ZKXM|OeJa7YmF)92HoqZUrmy&Q$ziP24=3fQG5WtcN!N?&Q z0HVrs1bE9io)|0|Eugah^dKWx{L`;O7!;pq;9QLO>&D~NukZi@0A+>%0RSM7?UPI1 zdJ{tMVMsh%w zF=cmX1_OvFB;R{mIsU}gU;p639t5aWNNSHUBn?4j(1$Wq7#)|nd;M1(K>%(h;0CV&4FM_#0EklnRG-Vp8~(8|STFvN0B{QU zx3*aYlz+eh=+rb-F^UzRy{KmEU7AJ=S7-yY)@&c>3=wRs1b7?=z#6xx+O#HHqXkP{ z6d}FG|1w2!^8|`ECmC?Ow#}oZ~nSV(6k-jrsqSKu5R% z?ek7IRx`E$0s?RVGn%3300;x%4NLF_kaAZaC_|KK>L@JR&-<;w1=%;mn@j5m&bmpj z$N#$VbpYK(T96UGd}@II|F{!R3g`3i1eE{)0YLyciMRo)z#EJJ00BV&6+&(RYVZc* D<|qyz literal 1142 zcmV-+1d00q0003AFaQ7nL7IRXyakbe2ZQk-QWO#nJOJPk;q}T-zyA0EFdzb-yf|yc zFZW=%O~4G`IjyC(mIft_rT?v*rc)0HdK{ob1SEjO5ED9y_1*XaG5`Xk(DQ)6zWg|) zmvD;tFPsViFkuXs5Db8@2mlxnfOptw5ic!?Kliy906A<4L=4y#|7RxI018`x01ylS z6tEJ?6(nF$L&rxVTg*;z7J}Fub$%pRpP&E`22kMu%F|W74>1+Nv=3ALnSc~xKNcsX zZsWOpDvy2u0DwRZAV|kv7(I9$KWY#gv9QBjN$KfD3pI0`Y+p~5Fl z1H3~SWLE|U;0A!}(T0KvV@^2fk+Phr(dU5r_DVVs0{tU zx@JUvw!TbI@c=O303amBj{>4*(WNXiFev`e00aU500;n34nL!Fbt4zYr}rTMVF>|; z1jvYn#Gp@V0Zag!pa1{?K>%(hpa!o24FM_#0Eklnbe~x)6Zv8zuvPsa0N^X)-kQiP zqy7L3MxmsBK@wXZ{fK7j>`53QkJ13?C7TEG3_X>Aj{|`C6PuPVgCKe^scx=L6tX}B z;N!g4CI@Wf!YNtvK@Cm8NRZ>$G(iAt1c{aoKmb4)Ko?5@kv2@32KU_g;XJ=1i5-jzV>KZa zV)vk=USYd-^v9f8V#-RQL&7qagKoGWp#dn?_E4X93v0Q6%R4|H}yY z0qyp<-C2+T5Dx$e5DtIZ~Q9{YQ|L93T167fmg_rL8K@6YB zsGOL({r|*#paxpwy~+eCDypad|FOUL6Hf@|;0Z1O00BV&If;-2=xW7NZ~W&k5{J0{vIqP zkN^S*zyKls00J7!yZ}-S002PU=y6~GA;^#b2tl5&e{v6-Uw4EI-uM72VH6M?x7>Pi zXW;~4-~fbkh*1p|&e9;GZK>gs3|IqplxH!)k%qcw(S=ZdNOs>b>A|0*5r!PV01yKJ z0Rcb&5FY@tX957_fE0nxH_hw^!0AyR040gTM^2speRj-0PE(Y(()g&UnPE0Qiq#kccQ{hw$tri^8uS4KuPRrmX=Hp56Xbq>)k&%%*#hc4;4mYkuo7G?d^<6W zCbUoRkfSEk$WM|`o-7{#8iRnxbrG4wUur&+h;LKpoH+3Yq~cr&H*{^WOdd06-moKpBh#CRWj} z(0-tJSfcyhhw(2D%K!wEA)*|e#Plb_^&m``fq)4BpHpZF$f1D?scY(bcftaX00ahr z!*a7Fbhb|z6-uID00;*F0D%wy2&#YphC*Zjb_7vOG@!P!q1Ou&avZ@>un_zCgMbWw z1U6`K(WvE`73&g~b9(`R0DyC1D}X^h4Dr3D zM3yXgJn4V)5g7mcSAYNz4Q9XsOfB#qNO{lw*PCO0rBamdCIFCJ011OvI17e%(h=mxI_ z@DZSB2!%KRE2OhFLdv^<3kST?ABl-K@&F+MDQ+J~H$KqkM+>)QtRf;+K}phd+PmAp zikS!?XVF_jZjak5{8S78{W$S|g#aoRYv!={2E2+kgF~};><~T2Zz(RAb?*IHCy0{Pi?!XZ?aVaSGh(3S6|NsC0|NsC0 z|NsC0|M)gME3%LfM1`V1(wyBG#^Jf)epWm!@Ee!ydl&jIdC)#LCp<3#pU;y&1{Qz( z8z1=awg98@`StLfFgv>Vc=~6U7dmuc@GJ6vq7FY+3IY=5rskqg{r`Lywa>f0-Yy8Y z8P*nk|4N%4@6NI8Z7wEjz2}C&0MGx|4a;hB|NrnLdTRRAo2#j@9%`=^dW$Tys^0gB zz#Z%5{@?@*pU@xw?;tDhl3X~q=*STc?Rwt+{?7aV|Ns0lAR*5SlRpM16S@Jbz#EJJ P00BV&6+&)+YVZc*2lSWW delta 1623 zcmV-d2B`Vj3;GOy000012`~Tv0YRFe8oULGeSu&|X##*x7!&{p0096D00IC&1{w{h zkFaL8Z+RjICje9c!LFnLz7%dEd=fyaGynhL0|#X?1DSvZkqIkq{el>VfDBw!2qQ8Q z9o-M^12_N(2LciR{C8A1Iu}P>Nv+Ai070#CC;$jdfB=PmJ^%q%?*?E15Ct=&04Sgj zSDqkDSOpVaRe%73!i~rP0R;d65GeQn1SH;XKm;%&&`_1bewtZ0XK&2F0|JGth(5Oj z6d~qYvSUC1ATs~}Knwsbz`*78z5m-oAOPwBR^?zShhonB2tX+UOosfQ@p**^Pd$+E zI$$V4Z|FpSlvSZ-{p0}35K~VG^KJ!1VDOQ#8J!ErYf)0EQ`J z->gl9Ne7NNSI@=3{0Jcj3|Rt&5NPv-2rwB#Kmf!*8UQZv-ZArwlE?tDhz(c4hX*I6 z10}Q7?l1^~t;ZFY?J=9d_y7b00?OJrIjbk^qGZ8YaHa)aj)0T`G-a)69tr=r zBNJVb;^Rkej|W6~g@+w57cfFbBvSwn z2}o9dW0^`KRJQm75Ov?(nwnK{7u#!yU;-lb25F<2LJ&8HE;lbSAaQitgU|?7puK?HB_pBh97{q0)qY! z#^M~%4WGM4_2dBnuk;pSU;rQmW;y@@4B!s0FaQt%AShwr9H*K#8T&oC3s?jpXBq{x z1cC(Saex8M|DEU=_{ zfB+y603bmJ9Mk#~PsLRM9vXP75 zc+S26H~D1KolsEHl^t4yp_pI)&1aq$^pPx z^mZabz(vO`vmqPI00aVu2&>c=s|DzoofOBw03ZVcyuyc0+;4XMY-#zhdrnwEjKQx8 ziqtHl7)Y=mz(8Y;03U+lAzUo~%z`B!lmke@K2QO28oKd-40sK&14Q&$rl5^2NVz}~ z&;Sq)YoGx5&lg+_92w7$TtVJ{&0#S%RsV1R0ssJGgBu??pYuz|03aj)B7%XZ2mYZ>ydkoKlt zuKR!ohpyH^b(EI+02!87pc;hx?gytw3%6#pB4SmAB)WFVPy2Whra}mR8SpQiyh8NP z2|$2+oEwZd0Z_5`S^fd9A#d?e=$>HlinCMV(`{7m!Td9OySM0XhV-;5zv@!Oz(yUj z=YCUCg7Uky>%a0BEFa%s2#K7~q;bR_Kf&s_-)H~-|NsC0|NsC0|NsC0!Li|9B!WVa z?Y&Z(9XDvFNIJUu2Bjzx{&PQH^VL7#fBy0e-Nwvw!nu>71r~pw&%v?&Sn#F*qxEy| zhaa9yKi=!%<9RWtAA7UGVqckO(Vu^|3j`+4P0U39zwbi}7MIqZ>EhtD+&7Tf_y5#7 zZo|}l+BnAATxlA!;7|Yv0G{9H0+=4Ud98pN8YL=P(G_x7Bo-pln^$_o#d}oArtf&{ z5}hymfDagtst+UocorMQp3Oc#_j#lE9RG*Y2wAL{znQ!5_x=C>-o^tV&kB>C1t=4$ V0jt0pi~s-uK>!s(YJh6+2IC4Gy9EFM diff --git a/samples/h264SampleFrames/frame-1215.h264 b/samples/h264SampleFrames/frame-1215.h264 index fb062c022bc0d166a93a2ae8c9557e32b094e535..e5e3d68d5f463b6c0ba707e53a57ad99bfe4d946 100644 GIT binary patch literal 1409 zcmY+DdpMMN6vuyaF}=o&cZOj{!VF83OD09cu1ji^6F{y3lKe810g000$0W;SH>zFif2ykf)bAo6bEogPRv& zn7KWXr*Mt_Yp=0ApD{~izzI-r21HHy#OsRNS3{ZdHUuEyPnOd{Z|9Y-p+>Sb@7C60 zELw9(qygW^7T_#6*Bvzh(#sl}>A?+84)9JV1OwBvXa&^nHT&>>8!5EjqC@BHJI9-M zLBJWU{jAExE}&Nf=nU^FQ>a+zvCQ9E52R}J4##}E8rO{-u2Dp3%fx3Q<|N4}L`Md$ zw_;H19?zrF+$a8VJ07{fyKR)8B(VUCIf>K2_(fj%6qcAJJ}_c_7zLD7Wze3N!wM8h ztqhtn^zM&eaAI+*_8G*BITxms5daGarh-EQX&XG6#wm0xuS)G4=TeMcz^R!Grafd- z6a_`5k_+n&zp9g^XO(ngJNf2Be&&(_)o4c)e^7lSeKzmeFL=~$O;1a6a0pn>I?*85 zvVfjx>u~I&6JVGx-_>^sknw*Cp&vaC?bPcLY%2pm^RW0zeJiEV2)dF>5>Q5;9>nkuwAyUQZe%nbO;FyebA8a`|E zJ|Q6>+0RgKu7lmxb>c${HQktR%W2%At!gACrkFKPMXxjr7oNCGMle}_6UmnpX=|O= z#TqUE9I-$MnfWH+dawC#i=DJ5q<$J9a>q#o(+f6%9Iak6LQXZS;g$Tk_?}3yN4YQv zu)$m$$-%WR#8oLX4-#_p5nX0_M7_uwteZVpM>DQzb!|x;F zt=hQ(qS${Q9E6+52zLlWiC9om9Rk?f^6sdSTmQ1?UXZ~bOqOoB8w*6Zff){uR?AfhVuM$VU*qf@IxcC9$0$B9ed#?~OYGWHa zF6Gbjn$_K!BV4*_P;KfYueswp^|&0^6=Ky_m_Ob=a4UWevC^5n{)TILI%K2SsEwm? zCuJf`!c+3+ic5lymmL39rB6TB$Fa0?bb4N~l=O8Y3s0hcOm^^Lp@ x(WY=h?Vz6|LD?_dkg%xKO#gc6Ka3pPjeN=9E>noPiRxy38MItZfDjpB_#ciecJKfI delta 1128 zcmV-u1eg1P3;PIv000012`~Tv0YRF;8oULM7!*K5;~s}|u#|jX9frD$p#s7FU*MmC z3|D{yf&oGVaYZ6%pGaodLv#Fq_%Ikic?85HYRBjFF$4HNZ~$;)G6@q2kkc}q?*RpP zr#s=RZ>#CEXQcnsixWB?o`Sm-0K+2ShWwIJ2RQ12u#!rkvRz+9LbH01%+yx1Qi=h=bD5?G06+!+5cmf=?JuT4X#5UH00u7!1_8AvU@3cyfSw(5Wnd?A&?$k% z7|Z(t1{VqnfFX==p(^;JhC)ew=-h*V0Kr}WoS>_y768%!A`}MZfgPM`0V2bD9V>}O z-_<@gL5m6Zzv{G$SHO%A0K9lfs+>+21Rg$n;TQma$P8YAONbN5;FYGAz_bY9NHApx z8Q=h6hw=Jib2N1FC~@pAp_1o_nhLP@)bX4ie#HO*13&-}I_$Cl1_6;$W#9lH5FJz3 zsKCFG1b$8dAeSRZAP^rL>>;F_5Yr#OqyPd#fB=An^aQQ|1fa&pRlFECjCg5O6aqm+ z?|fT-S_4-A06-2$fB{V{U;%%TEKTB@D-z^b|hN0&?Y?|?@IY7Vde|NsC0 z|NsC0|NsC0!MWjFzZ2CD3P4~$!_{ej)omD6PC_rc`9EG!<_ly%gFCCC_yc>gGw~^Z z+A3BVT9>G|L(vd~2F?a~#X z!5{cO1To^_KcU984&1-|7y$fVUo@57|6MRE2y-LE3W)w_fFaXXl=5xJ8T-5u%-H=^ z|KIPuvo>$dw!;rRE0Ycd7AE=lH$RB?3IvKH;G_V<4Wx^>QP(fOtl`#*_*?BezvSTK u_%GrxlMn?IBKiFOe?I_PFaQ7nK>#_4tO2XQ8;k$|0YLy2LTdnO@CM_x@#bCt diff --git a/samples/h264SampleFrames/frame-1216.h264 b/samples/h264SampleFrames/frame-1216.h264 index 577326c5724b8feae851a7f08169243dd53d1092..bb86b88350119e202e0832e615a61a0ee2cb3a67 100644 GIT binary patch literal 1699 zcmV;U23+|70003AFaQ7nL7U(jyahKwV%OC4;W)4WKmZU10C4ifix)0jxnjkOmo5MN z0D24n1Ou3`05k}P#iwx>)#1ONsbIatf!VO$P?{7&EyKr)D#CQNDFk4L+JIz>;Zs1SOQ zCF(@3YwkmQKlo6v1kpeO)ocd=;@zW8W-#?&<%|FzO(S(keeHk-NKmZVM?dd~*Z>F! zZjb|j9unR(N{Hr}#cIcjc{wluP4^3cwqWoc6ubm4s0%+}r3NXJOnKS))2D9 z+Dh)A?*IXaVPF8y1Y7BOb1*6{PW@n;004kJZ^#--V;8_EKnmIw)6LtW3`zGGf7Sy! z004kRVx$fuFH zo_an2ZM0&4w85^6f6K>!A6-Bzz5t+b6>SR8vD`eilQx2~z_q6nmjCH~J%K_<;h!@b zozzv{wQ2tkzyKf%!b1DqZ7`n&*@;czKZC>$M+7@&#Hfix3m}$O4+m*7{`k$}fCEee zh&U$??3X;)Y3&G!&_o{K2!1XgXol?s_ZAn`J-`8pst8O)OtXJL0!;w5|KP*%L;@k9 zGzcpYk{JGML|eo`@2G2H7;#^oiL`j!{7e8R1HRC3P+RzSI3~fnKmb6v00a=ezyLsy z2czH001IgV3^4GtN*yl2^a6>XFf=pt937P4z?kq7AaEeRhG+l+0QU7@04NBDL|AP? zDQX+Af;ASdt! zic^Fv2)|H)IW}N00I>K7D-4bAwpL(3d+NYvKmZT~tW<$SW+#2XA-hG~k7d#`!nT9< z0Al~FG1?GiOy@TCGUvYp9fP4(ocufJqiydzcUlOkDMD~Lg1Lr-0tg>OE zRo(zT34xlVnYKh}*QWumY3jCGhHiz#J3WDe~?+1*BjZ&M*GU|9ifM zjA?G^-~NyShpK>r)|Bbhc)FAhL@67Ug(^S>gh>U%1gVJK_s#vUUU>ms!BHk^9Pj(l zKr!@c8Tr4!*AB&(A&{4Y{lc4u02h@EOWs3Mar68GYXLF`0|j^h9eO1nH~ZSf2>}uY zfnhFo)Q}V~aCw=)@b-Mj1|H8o`fGfr!DYQm{ClsVQ#7nQ56}}&2<7~6)GXm3h+qOd zn?an?jvBoZj1aICWVu{se%Lqw#;KEN=cGTtW4JioYGlJXX#W-MjYEpRb{S;vwc}{8m^`COUURPp-NuDr`hmII2#p{9Ux2=5 z(tuQIAPE!y1)u-`0YLz6Cin)g2LgQni35Sgj|@O800{~J5D!5p9qQ&6au@mWfo$W) zzx)tvnG$KDAFSMBGPg9x|DY5&oqH_LO+kNbNU+S3e1Wl6_r`o^lhh&JeacyBghK!d znd#?ls-un`CX+7m17`4#>Jsk%yG*C{g;-=Y0>*X#vR!?jB_U7!s(Z-8p>2IGss?y~>@ literal 1388 zcmV-y1(W&!0003AFaQ7nL7Lziyag{oVx+xFm(;a{;Sc~o2svdGQDv4{MHE?OfBygs zKmZ^O^}qmdED|b>*q&^O-R!_%F1Shn4hRNI0P?6k`hms3{Dvcb00lq*Kp+B*^ghlE z2wIae9|IZ1iA^I0l2nSK3^DK`8VHcO>Ne5xK2DopQk(}`hmX7g4|W<=rDuf-3pQ8; zeo+f`e2}F(mw+K1WK{NvCn+=E{@@9~3=Tg<=!Ko9^E??50+!Uh!c zN@hW;4FWr`3iT{O*M=_;m{st2)`=040waI+0DxcuZ4q`5+|?!W)CvyXpUdLJLecR< zAb0>76Aoi|AESR~y#D2I0deG+rbK7&>VYDPVdC)}NPB+we(r$Zc>DlUXrmp-u7B<9 zkVL3r1GSk0Wf3~O9KITi4S|3gfj}J$fTG6O7KGO;pi|^O>>R)ff-b>UnpVGf00IIb z)G%^tS8qBq8q7)r+S&jC01yxl#c&9;CVuDuKmb4x3kd}}XdOX@Dg(9>0Cw_BjV4UV zru+b6kYj~}X;s_Mfr)g7(}Oqw8fp&2r~m{6S^((L^7?^O6Py6RqH%PR!O|%VA&yXm zHGBMH1qhrefV+Yl;v&7LgJOU$VsPY$C6j9tau7JE)nf7KXn+92`yE{?08KCA1Nb43 z{#~aS1OnvfQ@d^6C1bJMKc<%GAc$(rF4=?dxBx=%(L$#=asPo}xCtN`iDXkbMAa>Q za~GsiyC?-8|9ecr4+C{P7nL2SfI=J^l909-UE)od;BWvMcK`x|w88W4tq=qQ0@U?u z2h@*P{r3O>AP^nWBIjWghPEM2qu>_K;KbGm!iuH17z3c;sUvCSfqCR<+Rt+U9q`Bi zz+Mt>t_MJZ2}O&sp_>=YXWSI0;^U!yA^I@j02;UeKor6@lA*KlM+~Wcc>EYIG1 z-uD0dBVj3pLebZy@G*`Pg~SEMKpfZ`y0~;WUDZp$_yZh-s<4<25K)S6uPje|K@Ni4`Sv( z7#Q=I>AqI^OM}eGn~!SfqSEp2{0XOoa{Z1Lg`6Z23;-W}CTKI7QNgOwD8UN>##bvg z{@VutA(@N);nE-AG29$(wJ_s3Z9%VGXmxYjBZv&dKQBG?4)|w3`1hmD^8NxO4U}=? z!q^7@Uz4$rINZL5RlUG{viKS}olle`tdUN<7d7zXT>fA;EBzswPyg$K0b67FFw*KM z4;lXjpa1{?K>%(hxCXBW0(`y#Bo5Q(8ay!oJ+Rh#_VYQYFYmS_SZ4&ywd+r#YuFm;iJIimeV=evT44~d0ycR% z-(Atj;ITNnH^>c*;79cd(O>s%q}<3V!z;RAhj9=GiaIR&a}?Ek0uOUhof%sVno^Rb zOZ)m1x|L7=^@kG+h6Ka?$;27k3)%lC{i}!yKT(UXpCeGawU_4tpe_uV2x!L0K9~N^ u5dX&^d*XWzz5WE_$LHV+o&W#=K>#_4t^upS8;k$|0YLy2LTi9(@CM_lOm2bz diff --git a/samples/h264SampleFrames/frame-1217.h264 b/samples/h264SampleFrames/frame-1217.h264 index 07fc41b6fd45978da9d484a299ba09923c93f25c..4682463101f6c3a0c04026e215255038f455986d 100644 GIT binary patch literal 1171 zcmV;E1Z?{N0003AFaQ7nL7D&>yahKwV^`Fa{KEOVd<`N=hZC;TL1JERPM_!H@Fau+ zFh&sqU~pl$09?YyWGP$7ul;}{37C@rAoXjlu=tNWAORQv7eH{+)@>a?Lxx}fzySs$ z9$R>$6iKZhqId)V1W=K^DW5`;UxrijTmS%oAy7HHY9ZwyHKqUeum%7E1rig=HUQlu z!bme7hCMOk=Kvu4UPTYuWB>qwCV&BeFa@1LusV8qz4#CRz)<22&5AlPQuRH&906oj02h-01VB(Fu>y=8leqW*2*taVh?A93pMU{? z`Vs%xOeV8L2GjoVs0jesT?-&wqy=n)kN^k+fB=Ay2)+>tp`|QNhJ-r200ck^4+3+1 zi0S@&*b9K7gbPa+NDvSo&*FJPUjw)kfa1aU9O03kAOVg@fAU0th!pWi3MS9q5r#NI z8hD}(99W@8JOG$b9xFy3u|@_8(H<;>(CI1*shQoq^d`;?dHSdq+-3}}bDi^;s9ICl ze=;$!a6SB220^io6}}(<5Ez0W04xqQ*DitGf{3l~E#Cv9!sPwwH9=A;)ZQ@E1xr?t zcvxlrKQfc2fdd3=@jzXsQW2j9t$g8%^mZ~zbu+%5oIC0YJ~vBv|%%Gp z;EaBUDneZ(Xo3H}YY(^p2n9`c0}I$@`~F`Apzu&9XbM35e^Dqv5KmRWI@3cqwvV6y zAdx@-L8t%(761wd|670hB#ew;APKE3pd)XAhZB=*f=u-w7GHcj5(1Z400;uHRsaII zKtBRGRdWD<2P=^;06moBR|G)}_r<7t1SUdw^Pa}}>pc9Yi1UMKRP+9%ittHzybsg6ec`?XG9A0AVXMyNBl6~ zlr`a(?2L{5t?)z4ISy7Fl$-eW`h)57})FcBbN z6c)q;00ack03p_tlt2SY1os2hW0Z*|0A1X`$srg!{=;BUtN;K3K>%(hfCjGzB7Ooq z315d0PC9<(sS>`u>jfautGKBO}CKL7L@@~>qgIYEFG zWDYgUfFFb<7$?575J-U#2GzGK-`{y~sTb_AHZrb?0x&brUNu!uePp)MV|w?&hlz#Y lOh2E`=im(10003&06B@E0jt0pi~s-uK>!s(XaH*P2II7b<52(r literal 992 zcmV<610VbV0003AFaQ7nL7M;?yag{oVktFa~AAK-djbwiti+j0122 zgzxCgsZd||(5>)eII~G{g9Tq9$7ib{fB~ogIB<)mcJrn2fLtIR!a!#b6B*zb2o61H z=oo@9VUc@`cK|*N5lQc1bKzXYD6r~w06+&+I3L4K|9^tO!;f^Y?(k#j(&fBCxrj~< zP!J~fCrGpK!&V2bGO5JuNyLR84&GwG59#DA;RAHiyN@G)06>Tl!@6W#3hQNXDFZM9 zA>Lr6lPX8;9&ougJQzhVYoWGO4N#L^9?6n?0Kp7sPiP>qNRgi^(bU1@ARIKFfF;~E z8VUt4U>2l!2psW-99&hehNKD_i5Gk-aj+6}B`kLulpU28ZNUHlfsrClf#*QX^keS0 z3==d8Bp**tq9wC1+zA{3xCz4G0TIZ~vLiD8`~av*c}5`BgTOWv@;MJG0XY7ELxF+C z1)u{EAm#fSsQ8LJRbmSgnPWxezQ zEhJ!xsE`KGfBvYdl|~1;KmnHe4i;5cRlG2$m@Ytu#Wla>@Ddl zHHZX%#-a5Ecq?_bOiF+Cz6)%}1y4MbyYb-XeUXT*{h(6PuebmHUJYHcIM6Nh1k=L) zVc}>F01$DDra%<0VGogHGz$O_SsJP5PBdc{VAEaacrLx79~9Hx@K&wep`WiNJU(4K zFRMos6e}ZJ*#XPQJ*P5n_sASlL?xsEA2rMdX^22~{f5E>D*yliK>%(hzy_}eB7Ooq z3@AZ|4>Uw&5}$1rlN?GX(|8x{EPp0kDFk@|NsC0|NsC0 z|NsC0{tizI=kxje{(nE8&*$^`{QiGGpU>y>`TYKWKc9dy7ytkPK>#_4umP*U8;k$| O0YLy2LTmtP@CM^IY_yXA diff --git a/samples/h264SampleFrames/frame-1218.h264 b/samples/h264SampleFrames/frame-1218.h264 index 8d82ce897b495ee1373f112a7a106013af552de2..1fcfc7e86b45c25edffb6781ce3e90b76813dee2 100644 GIT binary patch literal 1125 zcmV-r1e*H*0003AFaQ7nL7E^MyahKwV%OC4Nq_K&2!UPz4md;sg2(xXfl?z%%Etf& zQp}NEc+ei~s}z*q{I)2n`Gv%s_Tf=YbgDFiP58Z%)pC*jf(W1hAUf7c zi2wlsumM`b7$5Ke0s){1A500jXVSDH8w~9p@BlDi_>h-;O@N5<>&ZZe?lF;Z!~ozY zjTQ_R=dBvCH+ALtnGB1}e8ck5!SKj1R053zgvm(ANl0ve;J}5{)%7J3U*Mm?JOKcQ z-~%h4R3nAz<|L->0f9^iG<|%Y6YkHfg5iLJf>M2?3Fs*~i9w(D006)gVJVG&m8i$W zv%B~paDFhH<1Gc1?i1vb^fRVk;Ke~;L}$#%WOWg^f>72VKR^H=2!aDHO@_7LIDQY> z02es}g%}a4M;9FcC6)pgaCkz!O=uQL&>@kmpZ}hV`DgzC1TKtQV&We@n^5+XVgN39 z00IH#1}F&dGEQ!h3NS^yT7U6_bsRuqs$-QXXgX^YtVm;Q-2ejs06^M64KIWJ46Fyy z?m@1_Dy2dH--&<#fFL+&Q11?jxhY1YEH(fF90Ja;5g=kV06cU5BPT2GUNCm#52<_v zI2Zs!fq+4Yc|+WVih5smNIs1hK=%t3Fbu#iGI;hl6S zDGUqTjCG>k0vy!b0GuR*N=cjFfF_<5`2tDXwT-}o*a&z)+hdk**O_bXybJ)%kl>^D z`CtJHKyUyg9-V4CfE!;gm(~jz=!`N44&(s8_a5YZLw`!5>&B)p7!`@XYJUnq0003& r0B$CT2CoM~d{2qs4i*3a0YLyciJ}3kz#EJJ00BV&6+&o$YVZc*J9pJU literal 950 zcmV;n14;Y<0003AFaQ7nL7N~Nyag{oVx+xFm(;YpRsaqF5X6Jsw6RYBd*Ehg5FZ$P z1xYO=3pN=kz1V~R@Bls7O2>pN8Rh_yKrfV_Dn@cdLSO(8{{LtI5nOOVfB<&>eZ&BZ z^jUo1Pzi$uAi#iUkU#EGQ=rc;#ro06;W#3Fsq0w~C8xFa|}y00;p9cY{;p z+<3781%#!ynHXj&3c-Za*BoR700D5Kf~d&S=peN27eQiQwh#()S_&7O?Bx+y8;E=W z0Du4xG~$X5F@PkA>1bHN0nQ!zcrbI%McxsUA8bU_597d4D*ZSSb|%2EtO<$ttX$fRs3P zx5gq$J2z(ENQdDMkVK@mP`oH&)**k@{^rEFP@xl?-r)q`7?PNH3g9idCAk0N>Ri4M zbB-1uXVsQ`DOIpT{V#%1A@G(06)MG0sw;>m>Z@Lpc`HQLG=IuC>D=6&9a4A23mH-5U&>8>)f#N+ zkT^a75&oQZRGo3Zg=I)W@z~s=cxz(i^JSlfAOHXXK>%(h$Of+mLVQn&;0_i500BV& YIf=3XtH2wK0003&02M-PfNJmtpJs0003AFaQ7nL7G4syahKwV^`Fa=KuO|q4)r>i~!&Z4Ixa31cMmfG#;-& z6AsbV1&r*7!T82|mOl{Y$NyVGq6Vqp0Du6%1Qiz10T>y|K&bJO^M0fN0t1&o1W?>l zL#lU8)4MbP&F{bg1SaZ8V$;lOQbRuwWe|rf^HMkj*C@9lL_6mRw zP3wRugntx5XCAAPyv}Fx7zANUnMg}+rdU(|!z>s80stTYARGV!0iZCMz<_c<72?`o zS;z>3zl7flz!om0SYFWK?N47VlKbzB2ft%M3w*lactSc z|FBLso&W*^MPda2p(l#3*%lCC_y8da*BIuBXQ~iUmQLF8Z^|XY;f`0WcAi9m0vOCwjf!004juf&eM)0!lBfD&Ywnzn}mJ0DvIO7hG;h zvVHk+53LK3s`%lwrI4T4JjSI}f4}}%05W7W&Q9i5D~IYpnK1(ZBn9}J0L|PmCOl6t zGhq}Qx_A)~;CFEXNGr*3Z9m`uLQqu-oxfQoofbTQ-pp&=ZR=&?&;SS#5VXRy1-7XH zFaHPN+$^6IO`I7V#M8m}1`Jst53p^`q+FBDt=wWx(E`j2Kl}gt+hK>B$eZRNg&+d& zs~u)3`MdxD0FssfNwW^RdJ=DeBjr$JFTlsu9$P2l;L4UN0EkE+_Kez+HekcAV8hHr zWB>78002NG695tt*b9_A*WT~GXP9bIyUBo%r~m>3a3ZDyVH&#~&=U^;2F%2{*h5!{ z5USO0}rnE|Np;$V`Z?!3@TrLfi&>W=|u(r4)S)GfBOSSsrHWk{{*NTNVm83 z$Ml{KkN`cyCs%;NH~Wi3R2<;vYPsUT^^~?5j3g<_UIfGX z62zQPP!YW18aV+*f9@F2xBeSK_d!$zDM07A>+`KX@gv%~wS0S{I* zXFqj!s(X#i^Q2IEoUJYfI; literal 1223 zcmV;&1UUNu0003AFaQ7nL7PAtyag{oVU{`YBrFR>ybf*{5+011Gcp)418Ed1YNjW4{P?-;-#g53zc zLy244z*HPO9smqP27oQ$=rLhPv5)~~U=Gy*#)9PSjtS3Kyumdqm?J9nZbtCf0kA%H zj2agrd@vF}{20Xl;|!+@j6tb;4jF}^%jTLeGZHg~o58HB%P;s9^I}m|xZ~G2GqQkL z8!h&z30{L~HHBq`2r8*`2!RqOO5PCv^x({1TU-16@B=FmMQ7Ul!4LbrAOH{o22@Yb zP3Jo6iHu(7MhM{^IGe*SyJ}cQfCq@kX^KwfaumJ+mu9MnL6m|jV-5u=?mYi!FuB>x?z&kg*a@Zl5&t){Hr&{&zyTvM5tQQU z2t!(q41hR7Jc9%xq>>wJ`&oel63pOS`IpQEzum)N>lEMuji<0&M`r_Yv}{x8C`y=F zCjah$z+vd}TgoHXZ5wz0K!X4fFjFNMOdon`@pA9?7!Uxj-B1o`T)|P(O&@>W-ZlUP z11N(7Y}n0;_J_dBX8-ae7Ag-9zySaOfWs!d?%Opi0}2N2u0Q~f3=9z*B7GL4Qj7`v zGMq2VOZEQ5cNzc$Abd(oC53xvesTNE)I$IP0gS8K0JAj;Ohisau}aR1yIxOM4d-}>tm@PI=hFdz{v;yR-T$6#g90T=>DQQ-O_y5|Qy z{tx~w=6fGi;rIYRA(#Zj*lmp|2ZTo0wM+m305AX$0RU+1u+={S4iNzSsa8j+0wYXg z33LKMf`otj7CedDh+4aY09YVoKvO|kRFa}CaWf_B;1-w&5G)v8V1OV4=9z@i&d>e2 zU+@tiU;!cp;bMSdk;(v($%H1*o!EZL3|0x!fQ$(L0sy-OIG?%yFZc)$FaUuA5V&T{ za9u5b;Vm01cuA)kO*dd+_1^#g_woZ4biASqEiPCSPYmx-L0|)?Dd~s*`!tGAw0HOT z9YA!FFXUg^Pq{k|kN^+^lo2|$;1s6V00;yBfFa*}OfDV*918-1Kuk}DCaBaDORcs| ziU}~S&`^iYmMIrt4dIFrzfp)F2w&=zK7eaQ)&PLNXb5&}Keyn3A_Q<6+MwqLJ5|pX z2dt&A%wZu;Qt&1p(3q2o2?4v!5Yg#?pk$p0&l*!2GX zVFKWyEQGfh;m`Y@CB5hZo-bi>Lp5qKfbaka2G;-^>=+0MKmb4$Ism4;rYKAzPH|>r z1r!h@0ENCsl?n5rJb&+q6REG$1akw<50E?mN$V66GkHccIKto*I1^6{=iyiY00BV& lZYIzMuK;*30003&06B@Y0jt0pi~s-uK>!s(Z2)TU2IJEb2l4;_ diff --git a/samples/h264SampleFrames/frame-1220.h264 b/samples/h264SampleFrames/frame-1220.h264 index 1fb517c8815609b1cf916b1ebb7032a29f7f72f9..df0d0c96597824aa39e9e2eb8c3e120b0c4c8768 100644 GIT binary patch literal 1239 zcmV;|1StCe0003AFaQ7nL7HG1yak6a=;yk4kVYun05fgAQ*oDo03aR#!FULD;h@sp z*Rou}EIj}PFaQt`h_nC%1HmB!=nBn9w}FB%O5~20CFe>B6Z)E855se?R)&588GKCZ zFUDm@)BNCo{wXn^n3lT(?63l01~@{GQ|;N(sx_au00MvtDK^wws)+IGO1;6B>JF4- zLx2j1NB{S>APB3YfZ_s%T@)8SA>X)Q1|)D0*fC{kX{bj7|9Ajk;t?>KLiV{W1&8uz zK%_SSa3OUfOVo*6)zrpmLqGOt08Rh`07{5(0|XXpK2s23{4`JiwOaweaJOjFnTxp? z21e$dfIayb0Kom#gO)G>f@vGBL+=1VXcKuuPaP!2N~~A502v`evt=0Hx&Q$Em;fMP z+xXZNIe3kL0Dy++05}1mE#pM6j?9GRW0{IF+!)#l0dx#NY8mhV7ZpL^kLi+Eh=_sF zWXpjNfcY~vPy1(p03av87|;c1g-7n_U#*OQ{cXd503caY00>+}_y4s3fl{;i6r^kK z?EoNPQXW^%`Y_Kpv-|)70AZKt>)nK)fiK&F92P?GJ`|5yZp8Rf^n_uN#u$eP@4aA%fP;o;`= zK~MNB`H28_r;G$02qVX072H9wY8((x6lJ#*|L}YO0DzDT632WnXNrZsh$1xd*ZGoy z!0f%t{0{&q>cGIuzzTya!*U~>nXi`5?(k#)0RRKJgMl$VEU_(~jzP!R z00;qxTFCEjM0MasOvAneL#diAPue@D4mrpM$_m z=`AA&;vk`PI^W11-~d{nFbR-c`CuWyv6Q?K%fb8rv%rV(sy<9?peCL_Kp;S|D4?Wu z2mvuO(HvtD5@AUWe!=fZ%L8p)<0`5*z9#_y(15dDK%QuUay~!QX&_6s#Ys|1v{)Pg zj3BWV3(Mz#fdb`BJV0R1+iJ=8-v@vJN!u)iLG$Ny2n|M8IM9_J{sCAoMBI-cQTe~Sm20jfO!)d$xytSHlarO}vHUI)3K=+gK04bC7 zLQ={A;70&4>-yck0K)Zozw~|P4jp?4GiUcBou|f?Z=Z`{8bDG30RzZ5GJUJwnA=_i z!}yP5Sh#?IVRh)IfAdoQMiOA^^ZmteF_c|u1bRSni(o5*`<^st#-`NL`u^aaS-cbt z;#=|XBqhb5{0vY400BV&ZYG!puK;*30003&06B@K0jt0pi~s-uK>!s(X@F|*2IKfK B8-)M> delta 1045 zcmV+w1nT?O37ZIi000012`~Tv0YRH!8oULEA)yv^$3^@|2+T+wh74dpBKMp-ul*nZ zaez~TboPA$%8?{>Pxv!G&Vo~0=l}!&KmwZDz(hH|O=l`-3myId76F3}GFKlw@l-nJ zn9;^J#V0Kl!m4UtU?K&9z#$9;#y|lB0}X42P_Ck8WR8-5=YRk})DR0IH`dA6LN6K6 zO8khEVS@^K5Rs!F|M?6=0@@-%niV7>Ez5WT6~F`qai6b~1Q8d`{9p(G1QHk)WQYgC z^Jx^68lAit#0ml#T2NJ8;~3)D&Kt%Bd_VvoE&#y&?t$-lSd(+H!ycM502{Hmbe6*Z zzj#0a3-uO5I7$Ik4z(=`oBp!6QsI~GSIn8Jg zKf|GJrPd`NCvj8}PY2jEz`(#0!^1iAcoKe-W2L_W35Q^q(=|AGKg0f7m4|y=Z6XcYm!KXv;0Rj#c>&UFB5;e?|z0*(yzyLr6 zrV*ewE0jHNQ~)YEU;wa{(5NF`_e)B!01ylS^Ke*4+yDT8&KtDk{-nW1&45 zec&0w0AR$j*^MI9TXt|1xc~#IKmZU9C>q7c10tlnfBV3MC_@^ugp_cHmT4h6bkX<( zZD1k5xGxVs01Hjm%6b29>4PHt3W$_-C-;DVapHXZ9s*}cYBB~i@lZC#?~*tG2mmEu zAPJCM`CuWyv6Q?QrGeZ5=YdP?GvTQ)Zzu_;kI)DZEJ`RP2w0-P6J}_fd>DEXAmzXJ zuzSexs29I+Ql%)~_~-}&LV;w|3=1`hfnnOPX9d@@8A(z=KbOw|0tL<>c#j8r-FCGq z><|E@jh14}e*EBp1gRp$jHrL81j4>rHspB&AMa_1rDI;9XE0!qBUY2(0~db-kN^-6 zZ~(edfIgxyRGq{>`|X1bFFpbi+nMfOeSs#|!abghS>0KdEN{WF$yC8K{~C+-=?F+Z z5fzL81i-}+9dKtdVP9p#07j3hv>=>H8Bz&tg-GzL8oIVk!9yg$9; zjYc);>3vn*!g}5aHi>uqr*6<)9bkS2C;$KfK>%(h*aoivcrX9}0YLyciM9c&z#EJJ P00BV&6+&%*YVZc*pXs+w diff --git a/samples/h264SampleFrames/frame-1221.h264 b/samples/h264SampleFrames/frame-1221.h264 index 83fbca47257e8e4d3cc5538c8d75ad9a692f76db..42230a976004b3cfaedfb029a212d871b8b994f4 100644 GIT binary patch literal 1794 zcmV+d2mSZ}0003AFaQ7nL7IRXyaj>3|AY{ZfC57f409JM8B#=b;Yq0%ffm~YusjM~ zZQ+~O>AT{kT}3EH01h}r0fNW-hoMpv{1EE$LaVczpKns+A-U1@5a8%rW6UZaK4({LpVTRa}^RQNDLHGa|uFwLWtLJe5 zRTvo>4t_uZ>KtH()kl@8H{DOD5Jyxnin!|%$b0|{ISF&^rFh7aDxdw}20#M{UU0!} zq%T{7r~a@300dl3mRJn56*o>!00|d>q8;@w>ig8R2t7`c^*UEI_aT4qU=M{KVSoYD z@Bx7lBfO=;DURMtQ06+vlmAkJP z8_i0e}L593kzQXS)IA+z12$Xky?{r@aA{07L3^;y#=TojL?QJ-`5B3%??P zTQkc^Ccj&}nTn&UmDPGr)$e-)b>#&C0Oxb+G+fCAAwsid2y12zy#S7p${_JJ00IG; z=mEe932Pc91bVQ>t1J!$;kp50zj|VuplBchLE*p<5EaAUTjwB%IAoOc1)`Ur@c}~- z2_d7=1^sE+@W~mG02l;~1dx938zz%DK^Fyc1mYlfC2&pdQTLizd@we`9^~TFTpra0y#Tid{(ihZ|+LI1|g@4 zPmZlPf;OqPrQM{j5Ab@uGjX@a0ntS ze$4J$Cz>-zCfd_p|KIz@0K%`>2S2P-4o2|*|GYaA7`rz~%m{&c$kZXy(csSG;S z_>`yR|9^dr7}EKbx&O`pVd~&8)+IZAeloQI%!eU4NGVhUv@*&z95sTGyYHKJy<(6R z)&)el$RLmV*Vs7oMyK!Q|JLF8C|JrGM1Q-?oM1f&j5r8kY3mt#~|62A*em1Pnsf74AX;lF08Vn3V zfou5xm%#c3fDs^2EJS?X2~RRb7h9?TliyIW7j z2n173zmfmi_z0!;PXBNk-Z+xplkJsBZkQ#=aj5V`q|(#<{l5YfkqUy1dPPoj%st{%HL1sYAX7vmS5oCmt8iz{LOn0YLz6 kCZGnd0C+F}00BV&IfCUH||9 literal 1428 zcmV;F1#9{M0003AFaQ7nL7RXYyaj+y00cH>cV>5HcXt2y0QLZ6I0P&p?g$w<`L4n$ z=o2vkDhmJufCMoh_iZdwz#jM+nZySL5l0K%Z(kYek@vO?2Wr#fe>hJ>3U~krup9z< z;c&{P&6WZ|Ug?)AvC3bgfD1;*vqp)ZzpB8IMKJMr zuA~zGz2%(jAOiq^+|#4{m_G&-Zwu~sNXSg8V&!^<04cO6uk$;e{Wr28M64o$v9ZY< zX0Q%l4MqmQzzx8l4u(KbSW2UCZSu-S5hed%bAw6Euyv-TuigLvfT${h0+m|Rnbe)u zc3?Kapa2jB0Kh+!&@$-2q<{b*03Z+o!a>ADg*hox*l%qp0>_aV8b&Uu)BgYrDTg>{ zW|kh4g^kT+Uz`}A6&XQ`Z-5KV}KXAJR@!v*pErvAb{f|Rt?9haDV_n7%%bWRQLjK6n+2;2*TVLNERI0 z+(hZ0GBXmP%&addeGXzUX^JG&TJ4*|AYy`}8S1S5e0H1w0DxJ6Kmv>n z7yt!;5Exl9fRJWn7K2GGdeaUL!O2V4W9hTMU=OgWP`)wKMcIGs3;~81RBcpegT=TJ zDM`WrP5{BYHZ?7fZ|K4M_J9B&3JM8Hkv}k}Mgkr9v(N*AG;;9TNxvdrQ^3@b7y#E_ zB1HV^a6raUMV8}*l1{sYb@`IZG4*!4vKPzMIgLdp zfO`>CiS3vhI3r9GM3+I$U;MrXFtD61ATBZhvoIUGlpO^Py6YexfEZGe%;Mk_EW1^R zvhj(W?+hj_yUOq)h5!n!pkPJE6|MQt-X=f`-N!00oTWO$a1mQ;&+%IS_VM z^IP}20i2&a1+P>U_J^A17kF|6TXWvAlM!b~dLg;6>`~);CG$W+6ymZG&$7!m_h4!| zR}4>dkq`a*z%$G?WkU784*v!L8$fvifCvyQ3NH*OKp*+`KvIW2*T540O~c{-KKRo3 z2rw)Fi2}m7i~#>^z)U!>1sycl(|RAdnW0ljfrtYXfH!Dq1qxHb`?p8(_#Z&90wf9< z81fszDdtLn=!NO(f+LHcrk3E3t(0P)`*_a(*#Dh@hf22d-VqHYN&e^wr-kzPPxdG% zn00A*PyiY+IY=-~F%wS#MX9bgnm3_bo)ydgbSNP0reQcAKMTdq6P%HE`2pP9LP9kF zfdZv5qm;JT9&bE8fsd4X#_4xB;uc8;k$|0YLy2LT&(R@CM^^Cujfw diff --git a/samples/h264SampleFrames/frame-1222.h264 b/samples/h264SampleFrames/frame-1222.h264 index cf3623b74141c72f994ab750b9ee5086b5dd4bbb..a5dfe4dc2307688c34e45b56b288561b3a988ead 100644 GIT binary patch literal 974 zcmV;<12Oyn0003AFaQ7nL7Jc%yakiN2szF8n=?!Ug*X5p00;qqFr+@6n;-0$G{8kD zzh(dcfKUfKGFSkRKrlC>3>CFp@fv*DAix2I>bKV903ZMm2q>Nm$^s)Auu(R4fB+x} zIpfiq!AY@|3i2<%c)(x)AQ({^p`h*<=KVK|Gxz`u1Lz?XtAW#$052N*Pd zbkbnRtWOrk^CZko@{e8~_9u(SQITssQ|Zz~^va03b#H0t5SoKnKHf-{=g2 zk^{y~NL|1QRLbHIkQn*|E~c-kD3^nvA`$@Ov=+r=ykAsc%NNo(00JIkazbFm^VPG z*Yo~;(}nfN8E*e~{sIIF0^o@coj9I4MjyaM>>7CL!4J*)0uLMp8V86#qH+Ninwr@% zYze1@a{Guqh!`j+012w+xso*QC3t+LDgR5xzz7FQ{5aq91_P+JfPf>P1Hj1a9zg$5 zvf4kn-|t93q##jdl>arBc%>R!CE*?ZpnRwgssUUi#QrjI_Zi7>5Kg1lmp*~=0(w-E zAz%4`ns`S-6^aP~z9fnbA}XH_y}sxx$O#hm|3!5eD8jQ`uVIE+ZZiP~q02|$F-xa z4@_m&^-5U;+@yYS=P%1Gh8)qXzVZx8tw>fzL1$KaMWc6vLVDVZfSr wPd|wK1&jay0YLz6Ca4Cl0C+F}00BV&If<$PtH2wK0003&02M-NfNJmt<3|0DGXMYp literal 999 zcmVP!9kD!Y?-nmMjE4j0RhDxR`cbLlEQ?^|F{50pi^VW1Q-?3 zo$EjSz;vJhAhA(w@USqWdCpg3_t~w2_w;n*hiGFP1Hd68`8vb1BC{R$nbbn z)u-tS-97i906;LgMlON!7p8WCaXnYSf@76{nvwx94Xr4ojVG@F89)F)60@8ZF9Yaf zFwL2O03g}`0u;aiAx;1U6FO0R!woS(Eq@0c06`*0v>XlKPcP_h2xNc;VihLfc&ii3Lm&@8NrhU;rQqfB--Q3?D2dznw3P z0^tDm5(Q!cV|)RC5CsoW4g*L~#qJLuda+A z+0uW20f2&$GMxer8iWL0?t?g;j#dGqX4A)zwRzQfi){h`0RM92SGIHYI zz-B;1fq=)LC;&OJ7V}I3!vW+tuz*AlAW{g3z#kKny!Aja)sGb!d;np|GCl9Wq|O83 zJVf%8tH$o{?O^W!Dz?|~@9%5ymP3rU9{<<=0t5;I;Cx15vY9|72RGm@*lFUs1a#lf zTnYd_xnE0XYz|8Mz752^uJB*cC; zZTD7n$N(U9G;=Thf${-8DoK&w`S24@2!s(Zh&g=2ICM4mrVcw diff --git a/samples/h264SampleFrames/frame-1223.h264 b/samples/h264SampleFrames/frame-1223.h264 index c2adb2a17d9c492d52ed1aa865c0daa7a9524b1a..e09ed51250c954b906cd435955cc96247b474277 100644 GIT binary patch literal 1248 zcmV<61RwhV0003AFaQ7nL7KoCyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zAuF7ofD9C7sK}3Vu5nkmtniEUOPm1U3_^bc=U(B8t9#B08SPc&9L>1uZy{PDf50#m zMm9hWtZ7qE11^nhByo23o0zNY2><~A(bzChf!*1vw0CrX{{SX(6lSES@`+;A+JFE+ zPz#Q*0FnNbHvni{2mSwg2Pwh@a?#dY|6ljE+cRu^RYTwb0??9-y1G0Ev|?W4|8jr; zzygZ3oZ!tdDk|6ZlO1VA0C*Z`%ubE_@3aR!HDdtrEMO9OueqKjirByaKtzWC0RZ4M z5kWE01;aM0AK*(gsOEYcIz7Z*^qMWtN;)gLm*#prvBsI zY)w~zoS>R&Pq+*voW<+V02v4c8RS!BvHW-#OQB1o2&fenN-0ExaRy|lvk5zeOvCs9 zAQ(U8;nzD7B5fVJQXhZ@P@9B}eAZKJI1AwoM2*tB7J@U$Prrz!~!8G1+^p~L6itk2)S?q00IOk2p}5TYk#SDuUs0% zr~CXjgra~(r%MT%l7CwzM82>vA)TVio(ihb36uT|!AUXdJgc1`!vFrz00aQQ6jml> zsa%usK=)t(06|aqVB2fSuRs0%{ONW6WT-XU+`sRs^|d1~{166W0mkS|^$2-TSA#!5 za-1MnEgfZ~de{PI1_HgP83uQ&%(560=YbWlj86clWoTbc_FXr)JC6VWKwLpe3}Ar7 zLz5odBGBXvJYWM3-*65m%v1)WBo_bmgoQix$7Ut)f8ziLSOf4KqBviGpqfIE001DT z4s@sg--N&bKqw9gG7R)YVd<)s+F(Q+7O+2oKn|cz7F+-^>u;6+|Kp9EPAc3B^mr3i zFdaSpgP;IOCU61L3|3oNMBtuA_7sj^dkF{$r-|Ts0$`w|06aEJ*G7eQfBgVGD*5VI z-{NBU}aZMbUF|_J6z=V)dy+t0jE$kz5;3CT)!lhVuFD%1>6FLzn6*T zAEDR*wOCZkIf3?*vj+ITx4o^~GyWnIg@62FZFYA5!14sZh)NSOfji(13|{(FU;uXk zlIwsBa!H5To!|t6YXj5P%KzkukAD*F1Wig5cfepxJSXg*Bzlg+|MVa!h}M@{4(pKj z|BxdtUj_|k-?NsMQnAS8h5zcgVVgl0YM!hN;HJ(oFjV~JWt4&n0btKs{L}0NdW}S-@tF?Kj1&$0003&0B$C*2Co2kFaQ7nK>#_4tO2XQ8;k$|0YLy2 KLTdnO@CM@<79i6A literal 1099 zcmV-R1ho4A0003AFaQ7nL7TuDyakbe1p~1lQWO+`0uTrnh#zArJQw@IKdJx(#EMs8 z6^VM-#P|V#;3SFK?3p!C2tcra(uSBNFtCQ8$_PM&JS7AK4Iq7YegK&O2lB$q0s>ob z;*r}%w#j_pPzi$wWWa!DhzI}>D*&Hy&S+>}4SVT&H~hZqT|EmOd=0TdEIoh|Kx0HVL~0vbf@ z`V~i!Z-4+01OWk}8*ohJuuSEU-NKIHfKUJg09^!tAlLv12K{+Vz$E_g2Y}#VO_2&Z zXuvJFCX!E~_yfSJ(M5)l#)MtF0~IU)2Lp@>ab{QC9@jMQyg&dz0)^GM{0dmp^~^v5 z&=7n8pdcv+E%SWO#dg37$;~f|xR(qD#!C@CXgrEAq+{}#z!jQZ} z(c%P90vd4w!dE~hvYkGe@?H-F4k4#Sgg2*7#P+{%u8l8(Q6cb{G6Z4+BR&AY06-no z0~9RGO$ZBL+eLuIrVa%n&cZ!#dN=QYK!;QeAV^tO$O)Ty90yTgWjy&H!gvO7Zah=P zO%8-p+!s)P?f?Kl6j6;XnxLqH!ff-XSOMq$;1F;emjwvO&lc1>BM{>61~7$8qoI$H zIYzgF$Nm5SfQUMr3z*wi$_a|ZZK>m6?T(bV-cmM(cAh=i#CL)n@-q~9fzWM=$0097nH3LDjqwqKW5)~2j0096$ zzzhJu5OYRmD8#MJkM2SMhY$cbNQ37>r-0tP1&|+@AHbjoP$vsM02|89=&is1N(^l2 zaJU8e3~1@X2ln4}pFjkaoB$PIBmGv^Q{ZnXcH(STzP6R(1k=RuJb^G!QUDekCF`VU zS8wzOR$W-nZ2hQ5`rrjUJc)>{`|x96wZKufUzWt!%)W;ZZa>}3`~Um?gZgqI;ta}d zIi|&%8OJU!_yZPeFob*92LD|-*8HyZ^OL`kgK9niH0lQR@Doo8>LO7=Ll6byfNAjFIS z4!{%jzzNcreVOnCwy-+t4ts4xMBnjdy#)xAp-$`=6Hf{JpAqlv?VQ=a_t1cs5dS(` zU=`OOzxKTrt-*mTPX1qhUAU^SGA|4|1cAG0DF+EeXu3dIG3U*iy?oke`IkVGtO zxH@F?S?r19ovFTiag|CWfZpHy5C8Ok6bJkO00BV&ZYJ;suK;*30003&06B@g0jt0p Ri~s-uK>!s(ZvblW2ID=I*!=(i diff --git a/samples/h264SampleFrames/frame-1224.h264 b/samples/h264SampleFrames/frame-1224.h264 index f6c951f4609db911037545054d021319bd645698..6100b2f3d9138e26c0e5f8b71315a7a61df2873e 100644 GIT binary patch literal 1643 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 diff --git a/samples/h264SampleFrames/frame-1225.h264 b/samples/h264SampleFrames/frame-1225.h264 index e7672d9049f11e7a218f120bc717161b7649812f..a694d4847b224f39a2a23ea156e0defc6f9b8c82 100644 GIT binary patch literal 1384 zcmV-u1(*5&0003AFaQ7nL7M;?yakUG6wbO0foFuj!?=(}E5Jy)&d+QC0098-3JK6l zuMGy4?!J=d31R2}9$)|<9TU(15Df%`kDx0xBHjiF;VYCnWT&4bBv0CDd=SHPuu_I_ z6ecbe)~WLgLG$!51RwB}aZB^Mg5m&70ge!(*88}0s!nI_005u@icPeX>S8^9qOW*m z`h%qzP~ZZm5RbMH42gjP$Qc@RP+&lxT|0&V#Eb$P2CS|GwA3a4|KI_Gh(yAv3fAPT z76>HJfk?lQI1+iUxp^_NuJFLjAD?e(4gxW*OaL3;A78*wP)RI)nh|>c^8o=qbRmV| zqJRae*bW0lyGESUVaUKTH#GDC@5sOg2kxvKv48{#q;9DXya5HEP2~+dbdwn>u}}eX zAt-UTrAxZ!NW7dymQ}Fwzz#wce~vK87qt#X)kKI<8653^21rn>*+)O_fB-*c00}srhI{}Dj-c>G3WSy7Bp`HK zGuT8RElufZ_uqH`0s=e$hJY)Cu0MA|-E42qnA|u30tHbq0367R-`c<+RIKzOB}miX z+5kYnq%^Oa^iiI1X7~UC0KzZP*S85l2amS`92P?GIuwsu?!@>~^n_uN#TbVQ@`-RT z&z{i1+4x9tL!x#jSdD;q)3W5d`G5)KKtD8e*Fha)Wl+Io4Hw~YBumQx`~VvI;0FN! z(|J{m7K67l5C8}g004moCtv`eZ0CaL2rwuZY&@Sp?|>MbA1n?r)AXuyb z;E+ctn6=~B&4mqdUjo`k1ugrZ4gh)rimLC=b^xk^i<479f@~~lYyH7T3Ha{`+z5t&hX7xTi~`qP$DKU@htk;l!}4o_T$zHBFXWT}1b77R zQ{Qk z6o2?XG9UnFbPO0|WBc@Sqlj$v3J~=adEyZN@O%IOfN&Uk+whTH=#%no5zib~U*<{+ z1G2*JuYuqSDzGRkB)I88S*Sk%4V+e(Bq2^aK(-`otO1L_22$LZNnE5i+5xBn1!#zO z-?+nLLBFpUMjV!);T%MYEIt1KR1sbmlc>=Xb>n>SWB>*;m?$=P@) z;NVS8W{5a9#Z7<#00KA!mr5oT4#4IFfH{FMcv9l)0bu9+sVUC;@0EsAx~=`(;9YwH z=Lu{jx4%WOJst=)7feU3!(li$O;EeLo(nM>Q*rQIjBTgKKBM!1o~SVf0W|QgUpYjP zki!Rs2WS}t01ZH1GlQ%47!U%WSa4CFow!3et}`=$SOT?uxiJ1;=ozw&I|K;iB^Jsw z^=d3DgSu;jf~0rE~7=i@{FXMejFhdfiYV!OZpY}wR4Uq^2@4R{4M q0003&0B$D02Co2kFaQ7nK>#_4umP*U8;k$|0YLy2LTmtP@CM^E^Hw1M literal 1104 zcmV-W1h4x50003AFaQ7nL7D&>yakUE6s9~51F#A{5L5zqhF`)VegrXF0l)$F00IFJ z4k4V}iI4H6fB$$e7(gI`f)X`j^XeFZ^dGnYS&YI&!Xz}!Cg*^Hk}1VHbn2uIAY?~t z7B~#xfMfs=C0OVrI{k<7^?)FNB`X`MC$N8ob&0AlcvU>j060#~@u3E|f^RswewoG>RAY7?Mn04NtP>6@= zK`us!ATT~T*h5IRA*MfnPytau06dlaMS0&Ju| zm5<`yU z{Dk~?p)^o?M+GeR%oG4CY66Oyp!daqDxjj~ulNvmn+&h*t@50xA*bSFyy2HStO9A{ za`>r+p(zdua04K@PnWO+0F<+$RebmPpeWn#J3|oPRAjf!3xC~%f+}+~B8Ew??rZ=E z01?0>x=}Ewa`+s;kOz<;EFe57hA<5WKdzE-VQ+7^r?5ZOJpzICL=7*j8Qp5xopbaW~#*nB7NJ2j^+kgQ81%&~K z_y$79;x8H>_iPCd#0%#1-jW4`Lp<4UKV%2@-uMMJ0003&0B$CL2Co2kFaQ7nK>#_4 WpaHAE8;k$|0YLy2LTCVL@CM^KwZ(q` diff --git a/samples/h264SampleFrames/frame-1226.h264 b/samples/h264SampleFrames/frame-1226.h264 index e08988ead437d14df881c8bb534f6463cbb1ec54..033357c1c2477f889ad01d8dfd8b3cd110a5c8bf 100644 GIT binary patch literal 6794 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 XiJ}3kz#EJJ00BV&6+&o$YVZc*U#%5? diff --git a/samples/h264SampleFrames/frame-1227.h264 b/samples/h264SampleFrames/frame-1227.h264 index f4aef86b22fbeeb113b1b915dcf355cba0eee4b4..ef5081d940e0d575b064a7ad3c576f8cc488a349 100644 GIT binary patch literal 3063 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 Cs~DXC literal 1120 zcmV-m1fTl=0003AFaQ7nL7G4syajIr;X$x8Ho~QXRH!P*3s@6Pd?CjJ>d>*)g1Q1| z01j|K7E%^m!5H{h(lD!i2M2<%Tof4q1+3Z@oz)q91P*W^Th~*uk{C(1d;mq@<%m@ZJX{i}F(10l%+7)&mpZ@Kp_QpKHT5CxD01}M=r{)WH+L2w*%X4KNbg54-1#25QfCIICalSqBfffI8gIXo7E z>Ta1baEhXS*f+%%!2y`xJ02{|2Edn=&KOPwxRW`5LvTYK4<(|Bz?=Xs1^^>2i2<^R zQpT{q{_%h}030`Ir!ywNsyI`#07D2smDfS1he?s=(K`qb01yJe0N~+LN4N8sY8ZkG z%i{pJKs|(kSb(_C0ALsn7MdG{5Fv@$8$8Ew0Qe9xmF~e&Q{3hVuxxe!AOP%|APw>9 zx8HbLfdYlEQ=KS{5>B^o2<|dEMXWIFpF$+s_+U!FYoRto6t^=N8PJHHF<=2wo>N3P z7oOIgc@6*ofN{kIeE9eX>}enxfTRF~9I+2DsgmiuD1lm(9tH@)2bBfgR1>8wkqKrg zegGH{N6Mo?h6~0II$4Dir;va+G~WOg_B)RU185b8$({g!;>jE&*xQsxBCY41^4xoSlAPx6MMcjnZn8L2O3<;V83VBTMiIW8=%dJsE0^JnNSq)N0|NHY?hsZAoe!Q4 z*20D$I@Mbef|*rAPe)eF_cIvg{#If;uGgnj(WC}1TF z1PK-2e1MwR)tl1+#_4qyekI8;k$|0YLy2LTLbM@CM_koz3O| diff --git a/samples/h264SampleFrames/frame-1228.h264 b/samples/h264SampleFrames/frame-1228.h264 index 513198afb5d0f43a6af35edc7ba711ac73c4251b..b33cd832a9eca16f0df1bb5cbd944f2dcc19e663 100644 GIT binary patch literal 1354 zcmV-Q1-1GB0003AFaQ7nL7G4syagX9Sb4gDSRUU}*TEgU!U9TOZaHIovF7RlV0*lH z2mx3SwXF9A+5k8km;hmnhH=@9?yNjB07C%94$}rvaw>e|FaQu496lncZA7B`8WemB zM<4(Y9RLK)&})x3h8VGBpIBwJ+?cQ+!uhuyOaOssiT~g*DhOSGDsh!cG#_MRVj+*W zw7SJ#U`PN61B#&s1{v9kYejZkpWp?CLWs1vxQ3}H?LYt^7z<3W14Z~myaNI-Ebse} zaH9^@Ba5~Dx8Lz^Gug8?9{><~G$B?~{(&r&lCuBYpaFms?BN;{o&?&kOK0gMg4*fuoWjC2JloTsP3T zrgc8t4PfAZ0R`t|CI9XSPj>Ww{O7hkV13?B_~P&dnnd^HXmAo zcXJBA;XAMspbX-q64y3TRJ>Mzirq2`MosevL=)^#tQG-@fCGF1_523`K*E^+7%T+M z-tX7{j4;f`I=kw{tv()0P5NSf?+JVP*MntyY47a zCRkQeIPR4i@y18%+tgw@VN_s8x1&S=5$XYmSrP)siCK=(_uvM105}AdggL_GNQR4; zc+fBfL|zO4AU&lf>U-Ckf}b9MAOlg-Kol5`-oG*$i!hV9RLuVX0s({iU#@l}L|Qv` zui*RuGKBmjYv!_>VZfe2qlMu(tz@8)F7=QK015y&Jh~{55cGkQoD=`|fK&hupv=KW zFu9dvP zX2ie&PkUYv=si+_{PQ{tKL7wg6kyiBU9G;RO@Km=j=|KR+7fQsI6 zLn`M9Feg|qFM*^RcQC9aIqD5$1V6|T4HzMJ(Uf#sQ+lq%j|Y9C$r5+@nmy~vlYF}W z4{7pt_kKBPZAi}Vh@VK&VnWzET6%*Rk?QtIxi-mCIXk27-5caK1ZX5$20?E})XQbr$% zg8&9Z)&j$ByQNY`d|<%}%{(N)`b<42a^Zw4%vuX{-MFIv{?Gsn2Rp1aiB-nq<6VG! zFp4YFUVr=j`O@qB$O;S&-tXUhJ#A6E{|E+G0t(U6(sPN1b}Qr#9ATQIb#}kDcm*Z1W*5`g?tt#0D>aN?9Sz~d80JE0098=0SW@V;9S)Q>HP=7ka^<(VOQ(} zpVle|BX}YI>k=8({8mF>2mW9OPzS&xPT5@sjix5MW}ov|ui{8ax2AEt0MV-^&b zXG#fw?{Msv&x3bWIro7y@Q!`~oPYoT0YLz6CXfcN0C+F}00BV&Ifk>E zn0r@VNTp~fW&jmwgya?w^f_%{2G_6%E~*u}z(4>%4*y+%4gnN+>g*p6ph%a_1pt^Z zhD-gfVb`Tzj{B?>SRQdXydW#T9#fjVEd2m*@##2?ZpXV9)Zi+%tAfFKDV z(G9pJa@Z(x$Zp|Jh57xL?;Fd`~jDvgt z&=q!E5{(z(FAT8rNcGprrpWme+=G1C0}6%*M%y2@2c>4vLl6!HMBs29R(P3UFX8 z5D86-Atuj#0A*-}$9LQg+znvhe*zWEgpY0rPP*KG{L^su$_Eb z|Jl{x0W1b zt*B3<|C0{oz6cycPK*d|PMwMMe&JObUj(8<;V@(f#0Exu0e}F2JE#UES(us-7QeQO zL5oZr9oBUb>x0$5d;$bIpkV?+%Cs3LBMie79$}%TR`-TMT@))V~Yf%p^p(cMz?~;{r~`g zh&vn$nA>;C35rDHxa2c>7(6_Hu)ZQ9mFkHmU;`f*z>o~qSQI`e#Mnu);H(v(Z#f>a zS$}ch00;zv;UGAeiY1SGWqg+V=ms1B1Obx74hGJTK-~l+DG5Q5|JC__w{U<` zjs9&GUaz!mNfZvTp4;E(2{y>j_1+rUmsKXQgL{JSa z0&3X9d6{5F;?%h;%t3Siz(S%|jIMQe@6Q5h!s(X@F|*2ID2V%a8y7 diff --git a/samples/h264SampleFrames/frame-1229.h264 b/samples/h264SampleFrames/frame-1229.h264 index 90fdabd677fc6dc68d5500aa3ce3596919e2bd81..dc4cae5f29be06bfd7a03c46ea2f2284ce955779 100644 GIT binary patch literal 1345 zcmV-H1-|+K0003AFaQ7nL7HG1yacok;NV#900|9H%%ZN;LYlOEn^+mLa66JBTONo2 z1Oiv!KL7y*0CfLZ1m)nA5SK9n=q{1LfU0e(Ww(d)Al3CfIpKWVdbDN%!q@;JL5ZOQ zZRVy@L*dVL>kTjf8~}sWa8$*3sNJjv)&K$nl3M@;8xx)2v-1Fe9nl#VEi+)tf2uGB z0D;g7kLc+lLWiIpaDh@*v?^Q#mkQtTf5sgIER_sh^|j|y@XCRu@~3a}e}9>~3UB~I zIm9T2i)U#NQMT0Z$p$O|yGk>d;K;*WFu(v10{{U5KmZUQ0J3KS0Of!bfzLP1><7T< zQ6B&$iNi-uo&SAy%s)<3l(*9OsHvG_I)7ZR03OR*N%OnU(h5>I00;o8?+2vU{p}EL zFljzg=(*wqbT>hPP67agxE4u9`BFJLcuW6rfCa!?wXvKg3G9ue&;SSoK7brfUu`|3!Ov=w&V@ z?0&9toCUXuJD`n}u>klD)liXwDb&Nq@MAg@d+KzTsnWWR-*>;k4euSO@V7G`QA+qQ=Fi#>;COnX``(A~Zw!~q00u@wOj9XL z<|#wdy<*twvw5l>LS-( z01sqL_W+o7vHzw%_GsCFjQ=%4)FiaZ_5yRnhD~*Q@Fbl|Q3xgd5B2V|`sOe}M|5Lf z5wId3RtB=6a7*zL0s?}S3Kcpcs^zXs`fSYcF(S$akJCjz_vYdkGyf7Z00ck?h5>;< zi6U=AD+Ch=rUXD-01z=t60Bi1Q&w=4;o=ZVP;mPv6OdMRtxUcdL;AzQ4P3-WapHy1 z1BaUgB5m{@_$UA&oC5G4-GyxFRt@ZIr~p%SF!>1Q=I{Un15S7VlV=K?k=9qvgXd5( znvfJ#aI-nT9~CGK@TY)A3~>^1L`Cht^Y{6Lg9W^P)RFUth?2#R2h2oc|M6V_06;Yx z00{|f2GSmL?{)37Hel4}E6IRJE&v3w>A!R&e@Z%#e_ zBi!uo_Rw69)(kiYssI21K>%(hm$A9K>7f}V5M0E<>2%JBES!TG_dDr8JSy5oB#hXWbwJKZr~Vy8WaEo2mzkpBv&XC zQ@C~5buo>c0w|P_86c$9HcC6p-~VUh5x~Yd7^N#1b)he1TaYsUo_Eyn2@0` z$({yW_nu$CymXI3yHM%&gA3XVD^8|EGGK&^M5X{960t~! z6Vk+~Yw!aQbzj|@niFvs+iQ`42#eGerjLO&3tlz=z#C$)_xUg)ENB_TDbolXE!G(* zf3yY<%H$BFUNq6R7tmyY(hdO94uyCDeaBc&pawQq*&UJL+oyod_l$0j7Pb050UBh- z8G8{BPy!ujj1#G@X^HIO@1}-D@7n}KrB;j!9|=f8Gsg(V;sZ$PYxR<|HFO|99Zj>?AFKV^3Gm zDB5;gOs;aA2qR)nR1vb5D+j2g=YUC0Kgb@Pyi$g;80LhhsgIZ z6%qfmZe1Y6ywXa2;81`7QA4Cg2Ci9{gyRQk!T10&XwU!%D!X+c00=w)0E3Od1tIIF z`M=ikBo+|x06+i`1pr{`zg(3kaRBR~Y_3rD0-Oaj9zdiWG8jETP#=ff0f3;xXq~nQ zcoK}jrfEZPW zVQwM+H*tW>O_OZE01y!X0Rb=o@a(a9qx=B}1waYT#ngS6E)`XZXV3y5ASiV@jozUM zNyd(y!GJ6T0x|)FftlKyu0JZF@V7gh4c8QbukBxA-|W@B8$%5e3mP z0Ct?(<=RP`!NDGQkJ=0nb3P~}=Zr3Y*||pBgNy9iqk?lPpQ_%xK%rlN0@H3pnEG#_ zS;6T>NnilBLhDw*oJ-mFVW(`!eL_3!P_+pxfNel05-brv>)&A~a+F6FPC@GTyLbP; zJU9~%8;JR00ze4i`E)Q@UeM2yqm8^bLRIK6%&eKGcoL!x5zOwpTsU9=MT!$a>j#_4r~#|M8;k$|0YLy2LTUhN@CM^eVik`7 diff --git a/samples/h264SampleFrames/frame-1230.h264 b/samples/h264SampleFrames/frame-1230.h264 index e026752d3a56d49eaeb0cad90811670e9db2b749..0862fb594778edcfcafd8b761de93ff52aa24093 100644 GIT binary patch literal 1315 zcmV+;1>E`o0003AFaQ7nL7IRXyacohV4%aG0IrhE+7?y70-s5n6Dzv{baI(^_90c8 zOa2B>Uu!t6yNw0dNc9Gawx8nCVmc%NGM9TyG**5dwSv zWtgnvO1e6IH?ds8_+~18Bvv0px~1R*u}=VbIG(^}*?03;Gen2KQdh=!`9tGx;sjKI z{y!>@n;i;hC!g~6rw}AJ|H-U5-~pK1dP%hS00IGO036`VHV__VyJmURD}aCi2uE-M zh?H0heXU=_g?*qPIXi+5FkD|1jFYclm%$7-I|V3b@Jv)a8dZLAd?ql!5Pzao#24o` zz<8hmFa{_>k5lg9vS~G+yZ{1#98?o+B|4aoo~EnAE!-U_$cF$CID~z%07YF082OQx zg+;_kZ_(obVn+j;2CSw8v(zJj-~oe(M6#(0*5s@f2qe&jNF1^V4}wVe0W4DhbO_hY z0zF56>HYwq!0@h)Nk#=Y1Xj@+`GFphtmMe&c_fmms;92uy4M4?h|FWHR1TZO@8kdw z8{i-~A2`KSogGg2m{dC4P*4MncwJ1}ZwYCN*j7*iS&XWpwkhddR_Gakf_&LJVYI;1 zG!iK#csHpMUZhBacxUj~Q{ke31*+H%1I7DBoU~oYz%n;9^Z~EPzz2diRt{Le0tC`G zT!-EOL1+_sLr)zf)=H>Xwg4F+M`p@7zjOcr`>+5&!ME_RDt7T30099F(g1J+!du3P zQ5~5H%EvPlWw}8>E`f**Lp}fn#ZYJ>g+fa45fC{nne0MfTAR{Rm*02*0s=GvjR0o| zRDSM-`dHtH6x=uf0tHn79Jq_``GC+s=~?JRN}*c!cYt75G_RZVQAse9_y7R_VHc?D z+e#cI{D0gK;J2>>;b`@z3{QmbNJbePQHXGlB&P!n2j(J!u{cO^L!x#jT#f*58h#~F z|LY(GvalTu2%71CSlLt{NkawvR7n!@z>WYK+E4?4fN8wy#!Eo#$*}+cfgk_~5Mp)! z2?q{%F+3}{$bsQaM<09e4K_Fwo80gz0{TJAN8S2FB^Cq@WX`hGv2Z4C{k&By&4wT9 zK}K5>sjt0bKnzd?z`!4r5J9mXZwSC>m$`YbhQasDRP@pRz)Aq=8b`45C-3_<+xFXT z0zIkR0I+i1(4G5&KmA}&NFS#aP$~XWVkHqMf6x64&GAW3?E?-klPDk)p{4Al00ezn zSMl-z35a`gEf|UUIG8}*}`;0U)8~X8tVaaL^5QoU3!4LQXpo;Lkokob8uN&usAOJC(!9kP1kjcm=P&g-TVteO!s(Y5;2R2IJM_KC1u# literal 991 zcmV<510ehW0003AFaQ7nL7Jc%yackqwh9b701VnCnY2lo02oCnnUN2y2~k|ip=?s@ zG?)Agpuh{Dz*(P%_zUGh94o|*gRiAEZ>GQg3`iK@KZVl-g3LQn{bh@Rkk=c?)T1E& z|J*B!v3O0>dkq)xfE}?Qb`^}6fD!;Opo2PUGfxMdJWoIU&;Squ04a>9423q{*T~ri zPX7Q40frb={A|;NQ0tz?j$rz6G=cU_EKBSJK(IIjA%M8Z0O5fIt)i$`5hpi{kjH=l z0#Lxx0^IDKR3Z^a*%tve!UPcHAW*b7?F>W)un4#t;spjJnhB- z004o*2a|jULK3^X&_;IfV>m!5g=9oj+9`@6iQz0@U&H_c0$>;yoX9QC>5yh-Dpk{s zfHh-qzV$!*_lN)l0|EyGy1L^e55Hb3&f~8qAOH{)DnJ=vUM>Q2tDz9tn8w-gcpi)!#)ME={tT4MJciU1tUWpx#?1f{hc zY`{R9Hg1>_G^^O$4F-r__!>8b32&s>LIe{I!7-(3a7q9RuKC?RzuW{&C(xrMrF)A= z05kz^0Z#(T7?Bg8ke?!uejg|SfKYklL@xtAhjzCm0RKV;2M+n9^u)jD@k#sW0-QZy z=6OMUarPF+{KViUfkshgFYqM*0RW+Pe6VaGxr=UrFh2mR<`TGq;yx~5&(Qxk`Mxe)-V6u0{{nbL6;fTc1S;5 z#hvUaLg}b730Ps=65t;I!9r4^r4|M{6U~?20g6Bd3{NeW(k(-`X8}u)06WY80s+MX z*1N#Su`eI~@F9v6#;lC?L5Brc^yvh6a(#0|HP4YFoFar`6;o}MaIGVWp^qkumGo}&jaHX`?UMggKLD(iat z!%=N9h+kZ?KS2lqnX}w2RvzE>ZL@6sw*ZZ;KlBX;t=$dF$_)SYtl2~d`Nv@6{XT;b zv_!%G`~8NiZHW^@|A51RI7BCi`~%eh00BV&ZYHP(uK;*30003&06B@O0jt0pi~s-u NK>!s(YJh6+2ICY=t`z_P diff --git a/samples/h264SampleFrames/frame-1231.h264 b/samples/h264SampleFrames/frame-1231.h264 index 6b651c5bd1098a001b943f3c731642cc398c8af7..5682cfabe21d26c6806cc8cd62b04c176b8344ac 100644 GIT binary patch literal 1563 zcmV+$2ITnw0003AFaQ7nL7Jc%yaciS1<+6t3Sa|i^CB^!`>YH=g(`})Scm`e0C)hR zSvqk4-yi^~E7*xI`+HCjx0#oei1quZ|2l}D{@xfcwnPRnP$B^73W~;=<{Vy=H~Q6D zKf@e-+51ELza9rgMk3}Odzny%Q~kh$m0QnpZ~tF`gcJlmtUw4)b&;K879kwy+`JD( z;f)`XVAuJ+1KRZDX{Z=p5MqzO0U^1JoKjNa5Ykn`VG5_fNeuHD-}*an*-*|>_#lZx zL;}$R4e+uUxt+FW@%r$IE&wnC+N@@nMK@#sua-pp>;!nArh{v#YiS&N#sC5Vf(3}A zdo5_bAPl>!)#3mKQUeL`Y6XiFy%`Wc{h-xE{#Q$Hrch(R0y`F&%ovt4AY!ZT-bh6B zd&CI(_c%Z2{a^sBfC@B0gehLG9WRQ7 zrHKfP-~@UXX?-kq*8pgHQ*$l$0`Lli7P>u32};+&-~a*uU>OR{cuKWAXsiGJ-Vph1 z0fvuSx^$AK$@D-;3=+>pd@J|2rw2Nm{JG59vU;$V$~SDa5>t6Q5LrHcvn)!3=2kI+Q-LP z{$xfW5X$W}uycR_ArjyLz`8!11aOM11=0$hEHZ&b+V`*DFv}U#=`T~H>;@1C&>6s2 z2>v1%0IR*A6ws!WIRJVIKmgzXAOrwVTgMi>`iQMBoe}@;U=D>1B|)59#^{n(A3y`v z%z{qt%wEvV=9W2VQ_jNbVp2Q(yof8LogF0FaikqEJVR3~I8# z;9eVri!a^bjeqk%-2*`}5({wP2nY({5M zWIzT1BS9n|yT%C(lQ=;a1#<-2C@aa&{!V?bKm-d$*B&}$)^nfzyZ{*9z@=L|dlS%Z z<%Ge9qC^BDsaRmnPypZk;BXP(1-DQR2?#8S8GGpC_3hxA09FIO&?pcdM-L(->>VGN z00%zf|IPsYCdE5}Nwpvd_zeJm710bsVMM<3^{O~` z;d1^IHWrFJ02s`IAxB;D40~1Z0|N~z=H+6^t0Yq{Il;l6NPT6G{P*S}nMOb2M0fxK z0p~mbX|sh+N#iTmKmZU8M!*6>-vP9Tocqz%_yAjYun7);03b^Ou5c9$*xT^ow~gwH zsY<|PJkg9;eVTMLfCMYKjFb0IA|W=&!O!aA-q&(>ty!pMRz5M=;ClpD?bXb2RDb(j z(O$XBzj?D7-^#94RZznWVs5#=`~Pi-jDivvb*-|W*+1>?v7;JWGN(WJzzQC!0}oWUbq;hV^(Ba>wini8D~*AHC?H80i~^esBF}i(<-% zCM$S9+$n+>U;%8DF|T<~UB}Pz&;&aG00BV&ZYHP(uK;*30003&06B@O0jt0pi~s-u NK>!s(YJh6+2IF~hsCWPX literal 1400 zcmV-;1&8_o0003AFaQ7nL7KoCyaciS1<+6t3Sa^JzOqI%e)a^cTC5d)VjlGXSODa| zP(R{;0%T*Xny=ITOan+FaK{0Y%Q`NF@k{*2VqfI(>%fA_>(a0Q6Gjl z{Id5`U-$pCJu)#J8TsxRLJ}1G1RkoMdznA|eg+Uw5c=c+iTfiQ+YJ~*Il%cZ3X;Pc z@WG?|+u$`moQ*Vrg~D){03ZM$6l1Qq>yA3(uDI);zyp8+6c-o@Xi_$_uAx-_^IV)( zVmuhIkN`LU2mk;U0!{P`GTv8-fEt%UlW287pp{`6NJrYMUKk<5-%VjB-YIs3f%2XJ zzyVK4OXwU*3Zmwdjs_e(KnwsGyQBw1s={+oe*gji3)WCr01z%zP}Bl%1P$T#m|z)EK`Ct=kj}4v01PNk3c|{* zYdN*2|M)Nf&9?bX$pmz-<&<;z*C1Mhgo=5&D?`=d`eVDV%;TyWMX3w?01yDjK#Vqj zv+0p^kR4dTkis=&6eEdWcmM(dAcY7V$HKEZH4)T51t3k*0>DB+Bufw#eon2=d;ov| zfN(oB6xyTuMa-4P!XNUzI%%uG0i1!0_nH9+nZ}N!63_+$fK_`fF;kIP^dI}punFWS zKrl4~@suzR^J+8@)pS#X;4*-&abE?1IkUoImhb;y0|*ltp1`S04~ER|WtIR|1p>=u z1&p4rcSh&{1Ob3pnRt(epx^LjcvnRg2#E?~yW9&Ltk0)njk;S2KqCqQ#*#q5KrB5V zQGH9qe64ium3)n0Dy_@G;JCB z%VGcg(l3(?Um_#`5C8-KK@5~m1d*o{=Co7*8~_9Wz(HBQY>(}Sx&8nD;BHVWd|LC} z|7&rkV;1~t`@Gq2PyN6ELIR~ zSe^elmp}h_00;qvSaufTAM*GZ48+*>{A1A$00IS_SGWLJoaMu0i~s=u@Bk1K01pq# zcmfUzfD@gIsQWNnDytOFhEZkyAp|D~z-AsCL)3#T8u9myKtvTesLudFj6%HFcu69W z7-g~bS-`-8BUml~JNi68zaj8$|KR)u0jrcA?K|FCrj!5ejW{PT@~5Cu_<_*0E+8&5 z;~ItZ`bFtNd2NIP@BxQ8WM>}$Q1fltCey|d3NOc^sQ#}u7y4-7)p_+#CYK3wEli6*#V7j{|8b0&#{t^;ch(~w#_4tO2XQ8;k$|0YLy2LTdnO G@CM_Ck!gMa diff --git a/samples/h264SampleFrames/frame-1232.h264 b/samples/h264SampleFrames/frame-1232.h264 index 8ffb7de03fefc60e388578afe799d437b762deb1..b24b7590402b14f5150e6ae80178fb2061e65076 100644 GIT binary patch literal 1217 zcmV;y1U~x!0003AFaQ7nL7KoCya^8jI4CfT02#C-S1)2RzQ?Ts7Bno8V(fmRATb~YUPDE8_w_+~MjvWqAJ48pym5^X z0Psa`BHXNs|MP$aiXqmcaWGCSZTs6c&-SRNQ4HjE{ayhZ!<=-i-Jt&x61-+T|Cpv(+rO+fy9^d`^l&!4jDN-H(a<2tuT0 zWh_WLf5H1;&PFPe=|zNxdJbk5gQ)&~0tn$IeUBXzPYLJq`TYKVPEdiu3~U@41YReH z;krEvXn9mB6A1iKc+l`_#D)NTc#O%$=y^y^KLH0<1w8>@14&8{@})M9<@hrQ!I&Zi zK)_)*03ZMe0DvHbKAjsM?3gmZMJT_11`|1F05DpaYPaOA|Iq*hU;q#U&;L)Ot{_q7pb!8uKxxiUA7H49e*aMR)-+ik?66uTF{DA> zqre$R`$-0i!?^3e1OLT{2$=BFeb57hRcIxqi6pE~n2|z74S)dxObuE*@Bl%ohAkcq zoQ7x}f<0@dbkL2i2*5H8D;_Dn_%#{(S+00bKcCO%^YL7PDFacL3gw5;|G(wAfGDHz zM<~$-9A>^R4J1(5FYE{f^R&3oB;F1HvMT@!HsBFL$I-q%*u3nc-~b~D6s2P}Q}bRa>?jsOA$-~b?J_+$VV1!KR^48oQHVG#;S90RKPlv){s@>|HH86Feg2nY!l zuK^%e-#oRt&;Geh8Rh|VQg53AVN?I$c$Fik_3yvBVq<2|3X3-0466X3c|3!ly$>ILjX*mvXCS+^rpj90xOAA!65!aVibxac_bxl zNMYviFV({e5CMpUMnM=Xx)|V!e*+F!XeyMM3KIZ*nAsL^TMTP}1%`g$zy%3=>Co7S zn8AN|0Rs*&Q;M1(K>%(hum-OH fcrX9}0YLyciL3#uz#EJJ00BV&6+&wOYVZc*v*7^u literal 984 zcmV;}11J0d0003AFaQ7nL7Lziya^8jI4CfT02tW|cYcItbjR5QEof;1h2Q^n9G8P) zqmRrF0VZN|-?#&&Vh+BKC}aOy|NsC0fgS~rKw>}*7?`P8Pt`)Dhe=F>t?Q649AKA& z&_EUlt@ihJ%K!6#9#IazCo%zXVgG8?>b(DI5|EUnaLir-8^e@eX}dxG5d~Hybx?E9 z{1|zB@wExWL8+AC^K~IQH~|Wa(f40{QtN-<65@2`EDX5)Z9l@);54J00IDk!w!?w z^!BK4OV8B<8(+X6A_2dIqHiyw z(t=<6zyk%L%hSn`0^ohpF&fZ$&<=nC3Y2yeo(U{ekN3lTcB|jPp?`|v1s-Yv00965 zfYa2VGAs~~(nMF)Cp#lk!21(;U_Lk@3TaN!g1v4A1po%D$WlKK+ApPefBdll5Qv!A zoYUi@!GwGtBBWsfq*rJ%aI#Fqzv~hxNWs_)8en?S=TIPOfs03jAn0O2Zhz}thMEwW zG($FVwL?b}{)4OPcbmV~`QbeNe?Onk!bSc+2!bGxNB~$E05F0e+z^Z`Ey9B5h6=C} zXX>vB0;63pBr1R-2y;VKK;pnE4=&}XHJ>fO03ZpLWdH>Lstb%^iIoQD_2y`V3@!i! z4*wwn1UX~u6140Fh52`Q!XTuy7NVF%u%W($g{HnB%3&4cl9n98NoRyBNHB(rZ>kVc zw$$(#BCr-!kdZ}i&)652d%>CyFI5PH+nW;q|DYHE2mu_xg~1*VA!;=74FC=Z6wySS zT=~^W4I*N_Cjbls3}hy({ZN$Q%R#Rf7PnL`|0-{0du1EnShv7|M)gLByaA~Bm)Wud}?K85=e<~ z0e=%8h9SyJ@Mi!505!lkN3l8ef_z5v02*LlfAP?0#Ju;B`S%29Uy3|xD00Owm{;|Q zEw_gg35P$Q&*$^`_yRG20003&0B$C@2Co2kFaQ7nK>#_4t^upS8;k$|0YLy2LTi9( G@CM^HfUaZ! diff --git a/samples/h264SampleFrames/frame-1233.h264 b/samples/h264SampleFrames/frame-1233.h264 index 71b03e2589896b498d12cc0c011c67d57fb54d8b..a7137e2ebc87e8b90039e708f04b250fc32e6b2b 100644 GIT binary patch literal 1311 zcmV+)1>pJs0003AFaQ7nL7Lziya^CIfgs)hU78Z~w0wS@K#~Z7NU)?P>L_2yqwB_o zW@q0p5B>`k#LxpvAwPfHUlBbwW0)ia0?K6I-T0N=fv>Ov;yh1LmeIXnGwe?gTw0L_ z|NsB^5zh$xA`}2)`n+*@@&FwoC3{B|fUygAlQpv)_?gB1;9r0D+2KgS;&$o(fszPR zCu=_?g->Zl*+X*wq2Vm8_W}R^{y+dKQr}PS9QMHDU%uymuLMKvyI*%bb-|GUon2S4 z7J{r)vw<0^kOx`e2LJ5B-=%;6fG7bu>ES=0&*$^`_(zy1#Pm}C;Sdo5yZ{_HWB@=& zXZU;_COxyVZ~!$+8fQ`yxyj@JFj1P4;yuc_wO``1!Y`3LZ~}lS3H%S8dxk45Z{5*m%(uaFeI>Y2}VFdvY2p3jI){Hg2AHN3orjd0yR&~I`kodN%l?#NY9SEZarH6 z001BcTtEO21Rfu{X?xFNh+YgUjTFje383Jb1u4GN00IJlTy=m2kMyCq1A_1jTmIw@ z93T$mBddTs0P<*5;KR@Y2S^Anl%1FZ-+}Ok0P(+g1Op2ONtrpuvTR`#nSsbS04aa~ zfY=}ebthN`PJt{#G@7~r25`EtTSoY?7nax>9u>>)bz*{nFSrQ_WB$JUI3fL};l1F< z>$e~34_5BxK6yYJ?FSHF^K1Y`a8K{#4t9 zL_&1Ilz}`^Hut~+5#P%DDY>!|S6_e4f+uUwKqBS8a$qR_M8r|aUP?A*%+FVrX+S~_ zcvt81`TYKV5-;h{mMAG>0099K8~_9ZfY3<(f}vWIo&ph}#az>@B4jj|#2^47x&8ov z06;!epdIiT=VsunurXIi00agQs1w{Jzqt0@5mn&MP;EVD+y)fBV)V!W7YGCw;%t^2 z9`G=iLl;01OeQUqQi%rQ49E%$!cO5+F#Z4t1`qjobn04_Kx z1)vp6`|lJ00ssyG0suss04R^10%XVPy5IqT0*N+@g}J7Hfiprt0EfM=2y`B)K>m51 z1|NU`APO*RU-AM3y0C2uv6?pk0Aml&qM^Gx>`@{gvFl>!`4=9)I`q8tcy_06{s{iq zoX+Am5cD;O55_=XQ~^Q-kPQ_SlNA%&!yiGQh*#nV0gg>Zo!{@v*VL=}a1Ave69YU1 zlb7fFh&=pU$OyyZ^ENlH3;(ZW%H{K-&jx4ZA(4_j1kKfwTIARKOl&rpXG1^PAg z2Pwh?a?#dUN3DP+a9}A7K*%?}U1gBKpFAb-NKXK$WoTbc_FXr)JC6VWKwLqJ3}Ar7 zN0T1hBGBXu{9pzhzTg~Bn5Yd#NG<>C2?{^n(sR1_Kk!s(Yk+F-2II30K6?NF literal 1063 zcmV+?1laok0003AFaQ7nL7M;?ya^CIfgsq>>wrFPA~SN2|Nihq3Ppu5o2b$GGrjm= z>6y6vz%Tw3EAT^DRPG<^|LxAY`*hSVNT=7vKHC+2Vv2zUFD~gDQfw zZm#|zg+u!Vw00;ws6V9F!`TYKWKc9r2Bn!fVkN`kH!7-WDqELWeu8C~( zzzh@(8+SizZ^0Dp1kB%n1zf^Y3kqr+wwM98>;em_nY;u50swdV>;NDHQsbMjd_I99 zXA*TZKoby?FM%@9pqNa`#`^9PEf3bQh)4hc`) zsh%w({_Awp@Mw5fFTK@@3I|^TLrVC3_%NV{@>!^!{4zS}$LfRC-0vU9DnQ>JAzX3& zbHW0iOlZH`7A&H75`d{iXbBnI0s<@R7>Xl};f%PuChbf4Qf?6u2Xw)ef+SH^_rM0< z>(~DJZrT!8U*FAuMAPJuKXdmXatAx|CL+Gdrbn5xJzicEoDO(b=kxje{(cfK=M#$s zB7%Sb*h*gro2u>j2|+yBgRmBIO*of9Cfy66aw`UUSjH z1aJZxaRWkD39P13qyLxQALsZWaSb{!A-y_gC$;;9bZL&lbOaT%6~6!gAR-`;5Lqp0 zaDGPu`@m{wga8S&nI1Fe)bLgcmykrX(L_*L-~b2*htdHN=;T~{N`Sv9yaEnL z0D&!F@+^YXn>pkfxBxcz00aaa2g?398ytB_dV~>C3>D>^vP>WiL_)h5BM>^*PL6bc z`~7|WKvT{BN;m?6zd=^u5Raz+-JWDOY0Cfn<>TW#zn&*QpU>y>@C0K300BV&ZYID6 huK;*30003&06B@U0jt0pi~s-uK>!s(YyfKT2IJFW;*tOW diff --git a/samples/h264SampleFrames/frame-1234.h264 b/samples/h264SampleFrames/frame-1234.h264 index 9286f905d080e3e338ea4089f260288da3644437..4cef350b92a28166c1bf2e811b9453148b503419 100644 GIT binary patch literal 1579 zcmV+`2Gscg0003AFaQ7nL7M;?ya@t*U{4GS32*^p%{`P-2t4cX0bdzA#BM;qB_%jRkNr+1Qzwoev!4aH|fGQZ%&;O1C1yW`R-ir_WfKZXz*o%I1 z3HSg1{0Rqy^zi~hnuUfY02sq{8RP^n`n+~KonGISfC(G`fV7Yz0?7=8K`pULQJsTz zhw2PR`>hFN$+TsPga7Z!H1|j^xJL)*-~kU`@}D38-T?xQapu8*5D*{#nEByc{(nE8 zgcOWGphUO);$PofFg3Roke9*s`={W2|ARov5vZ8dMrWt@+xh`l zu2upGT_y9<{u0oTAq?%l<5S;&0}ru;S!C-3c{KgtJeNQ|wlSlmqBuw+U*U^r@Bd!> zb96vJze1IH{pJ7wf%pIjJpcfOr~n8BCUAfQ0RBMAE-)Y%+1vpFZvYLvM<8@h9zle= zlUM)<2C{$vfuVpCU@sU<^Zu8`MNG>XZl2gRMgT3AnaXZAXYhe)LVy5(TP|+{Rw4iU zgbcJWEWasrNF+$EFZg6YcnARvARb|deR8`KZ0rAVfB`56-D{o0V7|!OMt}f7LFxbs zH}WN_|85Y*6}w(fwosEID?j`VPYUv&fKW0m88Ll69CL6CP&aYlY(FCVmHWT-_7|`} z|AX*A1!lS@r6H~Xx+X7WA>%*RFtyryx5PN&+*hV<2=`0CE0A57d#D?TO;K~3Sfv?4gnMGfmO;=@(+ou~Pz!H9+_2JY0kh;G#aFRk#d&A&z zdvgL-c=!EB-~a!#Kb{rO=kxjaM8AZ=WC>zG@;oWP5CFgq2coE400d71U;snOV2>M^ zSkVJyUf=)(06?Vc%@HLSi45Jp+ypR;k(&VMzSJzj!1x3Y|9F4^KtRF3Yrx6>5W*-f z6w+2M@C*P^b0!%*^rYRc7J$-pLHb^oeeXa3LHs604qVew%iY77fh;3xp+(h)}*tapNC~ z2LKqXrA`GH=vx6q0RWM@qqfdSn0Z}CHkj}M09#tFiJLHdXwVvgO}8ByZoop<|NMXq zRL~?eUxg6BAohqw@=HJj00IHzP1?XoL`DM-#xD>B3SM%r7)54%X$AuZ82ma=QI^Sr z52>g8)*>QkhGG;u?gR%XXy9W8MsZlu&c>>hQ@{Wa2mymInpPbvkxs3Cd@2FiH&YLg zg+Did03a$WXcZZ-^ysd(-N2C4T^-NtAg{9rvwk)Vko+kEAebO|L3$>MyC%ugV#6Ty zKVRk|G5`6z004li695L9X)p_<5GDV*^K3Hr7uL4COaPc(00Lz7#RO(o5)P2ScmO6w zGCCZ=1@{^x&&bF{ZeyWD^sC{Kwje3EU;%89bT_A%OLjX4;0SgA00BV&ZYID6uK;*3 d0003&06B@U0jt0pi~s-uK>!s(YyfKT2IHNUvl##Y literal 1410 zcmV-|1%3Je0003AFaQ7nL7N~Nya@t+1n|JHmjD(Vjb-AHQRnaU0$WxF_K*|=sW8ih zXZFKxXtPEEj{R_Q{RLT&mNS43!Cy1)YmUS$qZkBflSAD#x7e~*gB%y~{b zNIWN}h!Pacty91VW{mU%DgTS>G2K;1#NZ1!0|L^Z$No$t}W0(mUYM481vDxe_bmzQaS*3bZeL;ig5u75wD&%y`t_>*9P z2ElN^pa38M2m=^Y_?m7sw~~~d@IidSpb39-Qi7vf{`>#|0pKuicqBiEw>MAf2L&M? zz`;Z$)KoDml~gIQfA@MHubJ@t28IUC^Ajw3v}4;hb#d;=dzSR?|G|d<1OPw+o}lV@ zkvO%{wARW1gA7rk)$`6ExmDbGo&YcbT7dP`+aY(24IAJ4!l37Y;w2(FFtc)Xq)24p zfde!e5fX$+FEj{r>y_7^r8K<=a*%=l$N000;#Dj;T!o?^@rSd}@#W z_rcQ+VPJ#hg62p`L`onA60unhCZ&l}SKtOP>%ZJJG$!INw$~#75gUA0nl=R1EqL$- z0NW9Ux5yv0{`U{V1xh=3=ptJmGmE7Pe$n2 z`QRAIM=z~xYN0A@)5PE^yIo1(VlP01h}f2&su*Mo0ibxa)ubVCOx? zwPs>Mi5FM@!Po#K4!fWL5E6<~m4*J~NIO(Cfen0096n1|Tl`h>y+)(>imf|NjHvtvew_ebJ@X2Y96t zR6lqCSjZcsS=CMgT@#kR+d|A!gOg-|te-k(fD0f15CRMfoC#Z_M*Exw3{$r9smLYU;*K|VS+z^AmFG0IoP_7vjxJcu}t~^CIkf!r%}7qAqhCq z)3`7M#u=y_Bn-~f-EsL<4~6s_d_*hY2;Kky0YLz6CddY_0C+F}00BV&If=3XtH2wK Q0003&02M-PfNJmt0BAb!M0K}c5S z;@`LcT@~`TpZ}%>vi(uhx1C@>-X;I*AzRpyB?!pwc71Fk@xIQlR$l-A@Fdhws}txMLI8=-0KFOoKmWZ6!e@$MAGwkH zpOO2SAG!QT)JRAR5z~g@IKZ!e1`0%Q{{?G1f4t&kQvsB$0Kv9<0%R36!~sE`ji?v% zgPs%5=kxM%gfWm4q`9L4jMagkm@q%UYBRO?Lx*9|&=YU?|9W=^;JDBMVOGJoHRC)H z>06x}0j7uWEVF^y6hWB;j$o;E2Jsw^f0qNDhB9!E9CW}*kBcQvfLidQ6uAkzj~MX( zF_8XZR0cRp|1sk`kVF0GaBHX3?Z2)=@bp7`qKggh5(ve30A|~KQ*+<|2nT?0UVXQ@GwRRT#?fyJozC)e^g80h8vxNlr#7u z7Yi*CfbU9F&{lmXSf-D zpy}+WAONU@fB$=80E(IrE%PHziVKJf{__B4hyV~+HC3=BrlBkk01O=BK?wRo{H{np0a zUPr>v>rL373SN+mGPt7<;a*8D1Bde%(4SjF}fPiVd>c&ez?WSS?0RkWZ5Fo_p01^%y@FyC?NP>bK zIBV_%2PbIYV+KZXSklM9N+LdfegFV~Knxv((y-}V%5`h=;ZP6EhyWSg0|prw{{0-N z;u}3eggr$bc!WRv9{>O#90ne?{3KU;B>bC1bHq!p^Cbm=*+O z5dVNG2(Jst)M$yi@xFLA00uLdC^mQU7`X(+;EU`43@X;}Agy8i4^Ej~f@J_(zkz5; ztKk2}00&F}=mI=fOspC{z@qPG<5yDO2k}$?@5%rK(ii}P4hu}F(!gQB5bOW|0YLz6 kCddY_0C+F}00BV&If=3XtH2wK0003&02M-PfNJmt1{@0528tc>m@>;;K3WDd0)GOZw}vS=f;!AAl+IL!n!te}Dh~fhMAc29j>%jGkZ% zMvmnTxSN~~CwKfFgYW57D4k{psN_;y$86KurWCu>F5CxEO5w!xp2RtXA&*$MH{y06;7ZAC=-rWGaA4kkec6b{bxX{|o{OfHabVl9nNeo}McrfzSX9VH{Z5 zRHq%KeDDx*#S&AZZ1+gR1+Dt9_#gu~AQ=Dz1n-@Mf;ZeR4a-1K5C@2r)eKH)8)YCi zHf(My?%FQtzz_qw16o7&fz1o9fA9iF>=9yQ$Py1R`w@Bjn^!i&HI47q&SN$XH8 z2;>J#01yHYu}6y%MVAx4EE2o|fB+yE8nF`~Tw6oq+qzir5-=1NQ$;q&K8U|~AOOb# zgWn;@`7uZ4;I~KsBwJ$es6xm90(1xYgRB7n3;-Bhgpi?{yFCe-$1-pLMDUnk3%Ps& z?B8q$F>HtyfwE#i(;%D?mBhi)TzPg$FV%<;Fu?&p{QWjad?w&QU>|4L*gpPnAf8Lr zGT!<7Cc{C0yW*M)9DFaq!~&uK-;Y+W`eFydH~^J*8<3xP1YmQj8pi3&kLAh$0Vv=A zAOpZT>H&aK32h2X&=uYt>>rsTk6wlm{}vWwbcGuMVH{Z3a*wY(UhkeKKcCOSMg4&T z3xx-T3?8wx0EQ65LR0Z)i-Z#U;i(4z0fM{(@`CQ5Py=59AfPrl1a>HuAS768W2KQO z+y1ub%?5mTJ^xYZ7O%k=U;^QU1evGI;c!9g=fW627+!%(h!n`^mA06iCYmyfF<;>* z00;sJv!sHfTUa#YJq7?R`H5UZ=rs!PMo5#%?IIAJx~Er(*O$^x)e@Vz0;*w00;yCvv5f7v;YACKq*o?BQWe);j30( zU_5z71LB;#3k%hs``duP1F&Is6~%TyFFb^uz@;Bc;-TvZH)os&z#!w3doOr1lld(B zz-Jf-2um$i&VKiO{s=t)2YCPhKp=oxmxF=P5*{A}Ap#cFl6fW^;!AjT_wWSW0003& m0B$DG2Co2kFaQ7nK>#_4v;nKY8;k$|0YLy2LTvzQ@CM^TA+L=9 diff --git a/samples/h264SampleFrames/frame-1236.h264 b/samples/h264SampleFrames/frame-1236.h264 index 670924100317ef31ee25adccdb275775caeefcdc..9eb82f74f0b2649a89f456e40075099e51bd4287 100644 GIT binary patch literal 1446 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 diff --git a/samples/h264SampleFrames/frame-1237.h264 b/samples/h264SampleFrames/frame-1237.h264 index 75370384ab035de7ad0897f485fe12df41d309b5..a919028c60750fd7cf50772e6e23cc8f84dff4b4 100644 GIT binary patch literal 1192 zcmV;Z1Xue20003AFaQ7nL7QM2ya`Ys%xEQTxu6F_x{^E&(v-hd5F{Wtb^r~QZ4#LJ zC!z011&B~9djOt6sXXha2yEA%;okA7b#*Xtd{|X1F`Iw4vu4>M+|X1buighjVk7RR zzyLsJ-~bQ+HRWgk*=PrV%jf?V(_;QU?Ytb;D1kx_`~pLD&lwq(VSnFv$?v{*>&j3E z0f9(P;@WJ4r}$(&13^~l30ZR3M7YN~AOG+rFd)crQ1xw?039R}mMevQ1A;;T6Jg|} z^LQbF1lYFx;l{ZHVdj-rYfb<9$ck_&4K=Mc|9=ptf7QbMuV?&v70KfCBrgmJ3I_o< zLDl$!z)o)u(dKo2zy5+5NX?-umU>75C}=1F;ELdW8XYYRPGH7}a74C&2O~aCm95CdTKoF4_D&K^Ny&-!H(P5rZ&%3W0#bZ~#C65CH%| z2z@#>KiM#4fQnIm{0t^yL}W0Dv+~>)UkM7yftGIC(w*{F>w*2}h7C0PY-Q6&^#7qDz z8e<0U2u9u41?Llp5`4ecLwPn48ZLds7x5rR*wI)3J%Ul#L*7#x=CR-gI^DK*s8c#3 zlrR7woB$XGhVs|X2yY7@8%R%j004ma05Ad*QGS6lK-LM8=hG4Z9#se=00ayAM~DNC z{@?(yK)_%+AV70IEf>uzvQsso%012efH6R5p0&kQt<$VD>+b{*p^qqmW6KsA`EvjO zw}1dd0YF(8%d#{r4^_GUgBVf>NK9V#&9T2ysY>CES_Z^~03OD0g$#wtJXyz@_yGVx z0K=L%1W1c66L%=_ajC1n{w4qnpaPAc1_7W|R0xOcq0Rt+0D+hQ2p{6W07M%8_W)p{ zpkM$XS^xqDeTKjRa8~E~0g!S)EFykVM*uTnGm8U2VE=^Ug^r*BxB?u20003&0B$DO2Co2kFaQ7nK>#_4wgIca8;k$|0YLy2LT!L* G@CM^z#QxO) literal 1042 zcmV+t1nv6(0003AFaQ7nL7RXYya`Ys%xLgBz!rz)5;V4$hQIEpfgu6IumEjr(35xj zdLHa-xT0=i{XO=QZnh2wSfHv{T|4i$vu(Q;-E4tSjQ`+t zCL%t>*Z>F&`~U&~8^M?WHc$^imHxl*jWYB-(=`TUsDThZdBA9Dx#1CrxL5!CUJ;t_ zvcCOzll!j#a0Uk{yGtZYN~(-D9)Q?Zks)j{YYCkRb4CCEfhiPl5@Mk@OAk5#0RUVv zljaB9F(#Q)z#{+zk2Sk_ybDDvltbj;^4IzXYIbpxC%^27r2&xEwzOss#4N9R#|oKW z$lgyEp&@h@5)umriFoyXN5D>PhP-*bYFGczDd`Z`qbr$mhyf@y7yx)WL5@5$uIb)y z7-^X2WGPI9DL_&wgD)dwOEB*Y4-)WC3Fq_hmIRXyfF)Wi)jVndAOIi$r2~oVFyrJ9 zSek`p@M0)593Be6a8O}@0kyV-o2sKPfPu~gCwl5OGD68V?*ItA3Qc0W101yDI<^+ns+89bPT3`SOFMt4q zKmZ6tfCUpfLGKvT6g`iFlkhN+BG$a`2IqxzBv_d6mJVZxUa&L7KRWU^OlZfxch|w@ zdI|vQWuy-V!6XiV9l)cY%k!YhlGvEbxAOR@Vv>&HfB^OZL#q9FI#`{RQ^)|Zq+RwM z6Nmp;51V6B^o2;~_Fv1<%F zC)j}|z6=_$8t6@t1ue|R26Q4Pj4S{zrEs{|4L86A zzmDVKu-XMd@@IfRab%7XY<21*^2LwFjQ$rCi~>bVCyxOdlS-nt+6Vvy5e*3$9w7-L z!T0LmFeYdWFb%D(2+5rM6amA46LbIo0YLz6Cg29I0C+F}00BV&If=LdtH2wK0003& M02M-R0BZ0C<128s=l}o! diff --git a/samples/h264SampleFrames/frame-1238.h264 b/samples/h264SampleFrames/frame-1238.h264 index 14642c438dd6b698a0dffa1527c1edf7fe306553..61682e25dfb3e5e1de86ffedfbe844e685b4129c 100644 GIT binary patch literal 1298 zcmV+t1?~C(0003AFaQ7nL7RXYya_^n1QG;7kORBYcz?w30QCC4PoMvr00fgq)LBND z-Ean9b3@;O1$MV`yb$*O4n5LQzc1)Vk{mO*wH=Cs|50CoJPiVU{@QHJ@v5!={2PsW zO)xNVKL2#SH!ulQXy=d6&|lPy(h;*8)I?UGO+D zE3VXg{I2a1-_Q!ExU8jqU)SHf4KuWH5~kvl#{is$-;i8UJl1#r@FgA<^biVJBUe^s zNAyGZ-`+scn=pCMqV>cOo%6!K2!$;4c@jcwM9hrDWugKIJ`myh@DQ4Qw|BT6BRt%- z5|x2toFv8d+#i5ycvLz3{3KueA_5>#OMnA|!eDXGMGPncWr91KmjD7~EH=)hC2>*Y z02mY_)NE(@+B&fgY`hWHWU;^kfE={Z0ns-Q$8?fe!NdNr#KW|{3y2|sB%tIGjDS&O zj$>Vx!=4Nt4<6ugnmvk&Sreaq=pcaQe?kC>Sh0%-@>@6kfB=9vu%Heq3*9uo=fQM- z1{{OJ8&u(x2n(WGu@;~J5E=vHtNygl>2O;4J_opa38WU;{p(7XXNu=MeQS z&VWFUA6AWUM(&cJ<8LQ8M0h&*o}C7rXbveYyorNlfrdyxJt&=vF`HrSS-~M;{Ig_Xqwse_t?!7Z4lM&s7kB04>-R+L?ff01S#|mAv=3%E?QR zf2E-i07&?+Jy+K*;6zmvqyO2UdZ4I`jrrLB+k(uJNwm^m|Ja@rG9XT45#I3g!g>7s zAm%VW5^l zn}y*xtz@8)FZFkT0H6Uu<$Gr~n;7nSzXAb1LwNQ(6uHC4d6sf}mOf zRKLFQKmZ^B-~b>5NuUCV`QR!{A=P_;1^@~q+AbF78Uh5&i2wpV_PinZPNRqTgFFTx z`~U#}aDlFW$p{ka!K5n2Xq*55fC$6$$f$13^Au6<+kLTgE@w;E$6HbRygO63{{(+A zu}tnGaRi}iKz=bC3V7gZ!YzF#>49}&7=?4XKUr3-L?6HpEJ9w(jn(E?Pk6u`7c zL?~XOC|h^`%i%E~+8`h#!#d~+9{5xM>WHn2iGjAOJ4v_br|WxXU#vYuAARW5Gz9 z?YKYY2c8uUe?JKq@OVEG1tCEoA#1h;0FG4kl%Ia@fM7rcH}GJ`ieK`{a(@740nc7F zxVZxm*3`Ds1g0Jo^f_RL3P~Y|3L$j_2deM{WB>(8q2~dijreg(F5wmOUpN#3V8R(N zAQ=JxKmb5Sf#2h#M7Xjf|K9X)02H?mL=4mwptO^0fCWwf06;JRQ$R~7Ore1#4;>td zZy227Ed{tZ>pVcQ9smG989_n;wWh259%3wmXdWiLn1QY$h_O8*R{hK2RD19M1Ofmg zfg>GwT>ap5{is6iPs0sB7KD+AAjAO<3Mw)JCx9LSKw*xP4G}tQ9O4+uBDj74Xb!y; zXdsp}6d*a(knMfIw%CWBAOH{o016vc=kPsqq%E3&1CR(l08khlm729! zi$?_uv+y&3L7;UVtg|~& zo7~Kf8wx`EiAM+#KnQ8h78JNmZ907){4{^T1BhwSfeq>tGCi-{E2K-{lt_Fg41pMc z$j^Xa03Z_T0ZA5aCIkhq?V`|P(+40|S=8@Y=>NOm5FynA2oe@mvI1t@Mh9EK$|Tt! z!gm105oOwVsiDw{dxGj8{lEYS0-OX8x@m&v+ZWmmLa+}%_W*-{H@)=MkSH-G>j5(|ZZ;$kS5J>`}0TmO&-6aWMPl*A1OPLIId z1SBgX=l}u$e}EVPfFR~=OVNp38lT*R0~|mA;Q|kx3myY{@D@M`x&QzHK>%(h=mxI< fcrX9}0YLyciMj!+z#EJJ00BV&6+&)+YVZc*ys6Vm diff --git a/samples/h264SampleFrames/frame-1239.h264 b/samples/h264SampleFrames/frame-1239.h264 index 7960ecc518e3aee2e406cf685adc79f356d71a9b..b5cb13465aea545c47b1f6b58a507a239cefa8aa 100644 GIT binary patch literal 1472 zcmV;x1wZ-#0003AFaQ7nL7Si&ya{k}B*P#AwY@8IkW8}Kpco?yYx^jH!lAiofHu3} zKhOud%7_p7(cJZz7Yq=c3+;O#C$cPQkp1jmAJp-6{U@)#{eE9p#smk(bEQ>?U52eJ zUBuE18sBz2{-Ay|+OdzU@Ow10f8TH9F-{A6S&a_0@w^C7cBr_MrQv5kga5#m!Oq1& zQhG53Jmy#jt}%bW_Kh-=n8V7T5k>EfkLf{{O)xSOAOHHn&}zheY=8e{5>u4sZ#xa& z-_a710FA>Tzu)u=3Cu5m0$~x#FA&U0t#g+}VId+yl!bc-xWS67Gk}F#Wi{UgJ9x{jjm{cjqd@lw^k`@O%H z#YIfZ7)Ki-AGENva0jy1JXk&eH3tEX>LW9VzSMz~pZjMBykT^-%oA|wm?sXOe4aj0Rt@RM5wMV=DUla(?ToeOPzlg z&JOgT@h!3_idNtIv?V+yhhU8)q(ArpAzI@KX!iP{MVWOj2n>UVA<{#Kj?;)~S^eMu z2m`(b0;Ygc>C^f!y!XF=01ydK24aB;m9%M6<5Tt^0Us2A3Mo_q&TN0QAHeYS2KT?8 z#k?|u<$wZ2VsynPD4vA)exwPuAYcMOE7aKnawuRz>RS4qo$NrPzySfEFx;%!UM-Wx z1yZP(00IHP03bvF0xF;YA&{8>9f1^64Ja+FsCB}`+=nn!ECfFOVBiA*4VoNuYB^?w zdc>ui-oRi0ARO3=;1ExPJpe#P017qu*M~Z31(V7D3?f!>z$S@jLTKGLF7U$;(@z*Q z!z@zvNI}1_eMdkdIh@LZK}L5?#1H_zGofo-r+7c{i{t>HQ#Ga1EZc^3R3Q{+VZ|6j zpWy$g|Cx&-X!9TW0Ro5Lv1l}rP4uHP9tYxp3unvf7xaI-nT9~CGK@T6>mz>tt&mxO4VCF>UocMrgRS^$S&0003&0B$De2Co2kFaQ7n aK>#_4x&f=e8;k$|0YLy2LT-R+@CM_{Ac-UZ literal 1624 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 literal 1023 zcmVB<7w8hc^b92DG)-S9@!~=rEg2!VQY$Kh*Y+H&v=t=$ z0~4E8G%FMDcoL;T^Q02Yo`J@CNxp_l|G<`bS5icT0+s+uA)E>TyMV)hsWCRBh)wKa zlK}1T#NFO@`Qcr11VVr^c+f-I_lXC{3?wgyVDNyeWpFcRcxu;gb@lVYx%fwj3P(g@ zC8V|Ly)TC^@K3;oE5HH40HFdnqLCy|qBCeAx&AO9@W22-00;m<3j|2kkI(3$2k?I2 z0b>!56A6&hG@G6R3P^{P>C>vbbH+q=u-JGE;DBTR93@!jBd^?l377VOpg=Yefs6>MZ}0*~tTIodKm-6=^lZaKj{pEbJaf`-zy!KCSqe+qeCcL;$1K>mMru8DU(C z77}6m=C|@p;xjkbo7#ZPkMMZE&kE<^9$=u@wCN=;>K_LW5P{S z;&8Yk_4DBj9R?SmQsM;iIwftT@GSy35)2ta26zB4!}$FzS)4w36gc)5P(-+stfNFc zik>mT$5bc)2pa$Zf!Ael05A-S5wYL^ATT=TFEN3CA_)AP0zocDkU(I3Z?J|@Y(q@G z{=@-MKmb5XFu)SH01|^68*jV}6UI0+vMPZPo^`%1tpTgR03Zh=zyOApzyT}a&}tI$ zV!#do5bqYpi;q&){lG8*)W9%Ar>pHg%y80K|8OZsumssCe`_DLo?r|BiUbJHWSz5t za>n%d2ha%NO(X|v1~H`)D+t`c06+!k06-1_NA-4J=%wMK{onxrKvxBlbix?>U-J^u tPz2oo00BV&ZYKB!uK;*30003&06B@i0jt0pi~s-uK>!s(Z-8p>2IKAqw&VZ+ diff --git a/samples/h264SampleFrames/frame-1241.h264 b/samples/h264SampleFrames/frame-1241.h264 index 900e95af4f4f540c44ec2b239dee408295a01485..542f136ce2bd31fab97c3b10b3c5868020fc7b14 100644 GIT binary patch literal 1838 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 WpaHAE8;k$|0YLy2LTCVL@CM`1^MSYk diff --git a/samples/h264SampleFrames/frame-1242.h264 b/samples/h264SampleFrames/frame-1242.h264 index d9714dadd473fcbe38041bc255132a2e0172c0a8..ed4a107e9d8cdc8c6f05f5b6b773eafd12099964 100644 GIT binary patch literal 1161 zcmV;41a|uX0003AFaQ7nL7D&>ya|GRf{?k)5egNI0S|gi>T49B)^nf%;#+Q&rx&08 zcmOzT)>`50!A`$y$#{yX!oU1DUCXfkK2;V#7+xF#dKH`o*FqEra}3>g|K|`Q?X#F{ zbNfH#C=w}RNj*j=zxwb%C6-A$vCp0aVJk9y5z24+z68UcsU)@j>|iah3~v$d@^qMD zYkn07JDWftvojCw>z);aIfQVvz@G!ilVKhjzec~}(M<9FUxRRr8G>L`3Cv(N$%8BeQj7QC!)7Gl1q)9t75J6Ex*z~X0096U08mhs+rk2!H2>}Z2pG;J z(o}KGELtioj{qP55Cl-LuNBj=nTjBij;nwG5DGg3iLH2&YG~Wc|L-sWzyLtv!~I9V z1ZgfBL7YwqIyeoUzzil^lSFU-`3V3CotOfG0^}%N3l5&!0Q#)~K;cheE!oH~zb{h?ME8w@0IH(?#h;#&AoU)>1u z@aIjTBfsPse`f+m{S6a@d;or}dba)ds7Ew`Xwm}&>RjluqQGX}%pneZkYY#myC?v- zbElG95BIv8gJxe=yZ`>cXIpQzY8n5Z76)ALj3n@I1(88W06P}}6(@kV#f>y2F(CW^ z2*jPr#B8Nn0z&OF9vxbuf1wv@HIGCmIVhRCE20*9?QJ+8z6az`8 zedE9#0zY@S7<_;P0!AR9Fey6vsvx;900@Af2^Fgk-PlxY83mvOfB$=e0UI#j^ue|j zp{%!z0A&CQYXSORxB`Fz3gLse0f$hkRdA8e=#6FB*+cgLnbigWG@8360ib(rqx;?f z1V9G62y7k_KGb{78^k9=vK*aEQakCQ$74#eU-`hmJIw`>18ME#V%ufTNB58!0vZK? zuIO&$*iRvQSCYW4+zbZ_aSsIxI931ztAqd)683l1;~&!hO`vv4Spqrl0WwLGp+yv0+-#uQQHr@ z@A-TthXYjwphF+x5-|Xv>{9|uCS_0eka2hj12u~2^GuO47=DC=L6yLV0V2qs51Tv# z1B=NsAfp>eygv+yM0_3z#Rn3#f6{*#;%(hfCjGscrX9} b0YLyciJ$?iz#EJJ00BV&6+&nLYVZc*Es@`+ literal 939 zcmV;c162F~0003AFaQ7nL7E^Mya|GQz6Q8F2$(N~LV~vdn`tz1n$$=&i0A-#mfdw} z#mD=209mtnToz0e>*chjLsa2k|AfH1<>CB&xnN5`oB)a&(K{eWt`MQ0=7iqkh6b+Y z&ckEB+5aiPk#8Gps>BqZ{dg<{S+$CG9pDYZR%V|>Dckz^6AvGuBO}Cw0H#?dii_8Q zgU{ifiV88>@V1}^BY;rVe7qS9PeL29-|vWocZZ@vl$?H}rHM;%Ri&^0Y%m?O0gRV_ zengW8ME}B}2XV#2K4u^PYn~N^p8`lsAR1sQ5S{$b&)^cW_-`=)AOKEKIctO*HP0aW zPRroLP-r+j6@uWP!T0@ z0E9>YSus}5|3hY2Y;zxx5844xpN<`t%d-!gjfq=2VE0}$- zj^&Xj_HU=OYP+z*)6kRO{DKo-W(eOue|{0=hyeXtr(65}(-X+harKd*qy}zzNcqMV zN`S>S%$+&2h=$yQ`G3J@WdJOPI(aM~$Fk|eW?y|j|Nmezy}tiq2>y>3cRV8r7xXuQ z2yjUOLy7cY0q`&Ygl!T5unk!5AN%}Z22cRtzN);>p9AV+R^$N;F+y8i2MPsCl+$dd|(#{2e6PC#01880{~zcJw!JQpg|Y7J%5tm0QeXc zYX6|<;EzeNEE}p|0Du6ln4$n*g`xlbz_1t)HH!S{On9nxJZ}h8xrnjs4-%H}P_v%~ z2FwEA4Y(+!>DWYhNGy0{zyVUUDdPwS>9yD1A>aTI6cnLkM9DxUxx}D+0W-irrivue z=gp=_VIuXZJO&Kn0?LE$stwhc%Ehy!-v9;z2t>+s9&pqkA@6b;MGp`_4i7)z0|@2F zSV9UQA_a+_06;kM!b!g)B}^?+=!!yl@LY1R4I4I|JcX;ytIS^iAV2^hq$HU5Sd=o3 z0-7&?z)Xz*gMd|ysYlMDuy6w)0&ai+00BV&ZYGEZuK;*30003&06B@G0jt0pi~s-u NK>!s(Xn<<)2IIUBos|Fp diff --git a/samples/h264SampleFrames/frame-1243.h264 b/samples/h264SampleFrames/frame-1243.h264 index ad8ce7d6cd2b9d856ee023fe5c52fa9e995148b1..a61b9009385f90eed5ff029083536147429c9bc2 100644 GIT binary patch literal 1266 zcmV`B|IPq7UToseR4b3&Axlqt zAH(j{Y+)j2t>2$fiZ~mT(0}v|!OS_}|9AFVv3rL3P0GOaP zz{JbKF^5NLSv)HV7yk%=h!hgw0O0VL9CQ&w3ILg4j^^dS0GUaRF;vFo6&`>C2Oa7* zE9~taScf)V2>)jApaXy$l+gjvC((+_B(s47|FFcn+W~rkh$9&R(sZ&}=J*BxRCj0q zfvu&6LBcMw?EsU5Jde`B^7sE72><~Alb8Sm0|7wJl~$GT0CKPgCICYPDDZ~WIAtOO zD3z>5;Q#=DG!Mau0W%&E8-z7V0!I)4{i*;01g!`M+~O1P4e2 z8`^|w0C5-%g^&SLe((qZ27wa>&-1jqSVrf7E&}I*-~b>Ba00%e7J!JD=NR=a&VWIP z8&?fz|C%a6je*gAPf_>>z3G7-&wOI_-~YeCNB6uX$M5SxYd`;3BJ8{uISyyJ5xJp}V4!pD8t zoet=L2k~ww%|9?Vxdn>h#vAW}vazs2fX^NPEq^^DWPkLb@cmNK1Y7;4^fZ}M=|BF0 zIpH`-;4KO$DPsTu0TLVl1OtH3NdAJMT9cjvF~DHkt>01;T=7l1GTaY7V2 zoI7=iedNSAcGdt63?YL1g)`S4+oEbaz|L@MJty1-6usg?qyXSRAioo2qvh`g8t8K9 z0xAUsvU*V%+(DofKt>6H2xq_n00w$O=2pV=tpLX`VW%KJ0ALh^7zr6kRlV@rUt#93 zlmM+{pq&6OweJ7`kN|LNE|VG@Bjby}=lkb?f`MfQr^-7^$cA-Dmb~*KzzOdFAA>ys zjYi7-!I-~a>#KnxA0he#g$y*Re>ySKam0|NtMQeQy3fsnfiEX-5$BMgp$xB#FL z){BBBd-9Q$Z1VE_#)Tuei^LL!tAp^+;8Xzu1&|GuloJ(`+rt8Je}aD%06-8_00mbl zR6B+2W-hkv0Kij&1e)_(M?ct;3;+Bu2pkDmtI8SRAvx)h@Am)zAOZkzqY()u($yiM zbWtgTM+f5wqL9@dVn`Z-%b^Zm;Ke~;L}UTR#W7rG@{3d4p#1;TJ6*>pFKI3BE8laH9b$tCm$@m@RP|tVA%|dq4mn1ONgIQUEr- z5A+#n0564*gUG2>ulx*u_u&`-2n7MbX2G8bi@h^ayKES61Umo#0YLz6CWr>F0C+F} c00BV&If<~Q1qQSbmtjGa!*u_#!VrOQ8{_~l zaX^YB7x=JI0$>LK*DQM+2$I?vJ|T1b3A2VrcmZ7Akp{lyX}c*t>jMuSfD{MPjQ{}v zC;{}Rg>wERZHpc#CqF*;Dj3|6P)@T?^9 zAYK#_Z~#CcAZ+3z)M}F#_3?ek5c~jO;4FNWn15$(i6?k6bO04;f^!QBYMipb2NJ0O zAlj@i0AK(R000&Ky8s0M>Ya5X13T=8GKuVjo1dMgjaSOol`#^=-p5Vhk1)(It z1>gv9QBjN$KfD0&3IdIEsA!4Pfaeg#TNXhB@ByF|x-ig5ENMp_vNlxI02nAhbE_fS z8-abX4?I8sAOHXqKCZzx^HxKb~wQ$M5SHo4x-Z zh2+BJV};YujqJ^4cGUl4jB`|7Y5)87&Q?5Kw$wi#J-Mfei~gWuU7>*8fVcnQ;LytU zh9Gvt*Wm0^vK?)fbz{4L58~P>wEW1ZYydC3<*GA3o4^9s^ZG-n{jI(qz4-zgf4JL2 zX_YRU|NI>AoFre+5OH9nP*4C9Ae6QdHCNN{6M}-d-#rr1=#3t}kc;7tj51n#v8{r* zMb9BG|JVDQBSRphFFESr0w@6sFo9t!gqBmM)Bn%!diVR_fy6ZEz=rh+*&f&K6;Y+| zN+doL20)BJWM{w_00;xRfMP|NiJ>7|`)ITnw86pMXH&g!dbjU@K!;QeAV^tO$O)Tq z90yat$|Uj(C;!|7I1>*P@l!*g6!!(xANzm+5Cu34A#~LRPqr_-8ijx!f9?SX0m*Ps zgoN>3L$WazF7RUrRLVRU`4f~Y_$+(i00;;=+|>T$KoH^p2MG{-=veR@*MP17P0#=U o0YLz6CXfcN0C+F}00BV&If&fCe_<9lz&; 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 literal 880 zcmV-$1CRUw0003AFaQ7nL7IRXya~np5k`ZMLI_QO{~BNo@wtYxts%baP=NvMj2_tV z-27s$csh0Vyu2RRh9~}+_a^R_z?%dhgvNotWxy-PDHsM3zI$;ZAVmBFcmW@ckZA%T6CDPRzU^SmZx5#Xu#{tmca6mPtu`#M9aclbnz`ex9w%DGQ)!R6 zLXxRqhnMh(XMqeO-~iCT)+E7xP>ILxNxWf=&wdyH2mt_q0}5a=Qp7P6)J0@aI&c7Z zVHqTil*w`0RPO+TmN1gv5ofw487*(siwFUn5CtFrfh*#$kVgB3*}7l^7zc@#)eKH& z8)G3%d9k>yy?C6bfItfD4U0*B&^e)%&%hErV2Kk2z@T-HFOwptfB+yO6ixsdVYvf^ zC#}G=B#<1e03Ze-VuTYU&z`fs1Pj0{00IGlt3F%|i)Va$bxR%sMS>Prg*M7Qh`#VZ z0S*NRkRizVF-PX$uSftTV`B0hn7RM}odf+~$fyAT3;-Bhgpi?{n>`7d$1-pLMDUnk z38`EG?B8q$F>8ny2DBY)QD-gyVXCANNqUq9P54FM-}1tXc^eZ5yxs|>DY}}_kNtWB zaO3yl#_557i;#zhtQ&D<0ehv6rhjLN2nHtCtjF^~o;;#WF;O;|DnlE{@9F9_tjsxB zFp<0{UrED|AeeRuiz`!t)E84V-#e%G`+$jr`V?feuW@Pp2pAkY=9AMB|D(kx@1P2B z^@Ew^1@Xt&EwA$vfSLsvMVPDbB>({c!FGJWbR)TwUV$(_0ITK_xPs(u3h-7*mC5fW z7vg-9lz2SoegHs&g?jQTtVD%lB`HrlTFaTIe=u{D}d!?mV z00;*FdAKxp+yDT8&LO>6S@<((_VVStyvYGX*$e30cD0`$#_4r~#|M8;k$|0YLy2LTUhN G@CM_!jDKhV diff --git a/samples/h264SampleFrames/frame-1246.h264 b/samples/h264SampleFrames/frame-1246.h264 index 19ef7e8efb78ca88b4bb4e616a8a8f8d84e424a4..5d2fb54941020cd52c3aea861f2b1f6589ad041e 100644 GIT binary patch literal 1821 zcmV+&2jchu0003AFaQ7nL7IRXya~d5PXclM1;I;%LfAy=0bE@%%8CuSLR0yG1vSx! zSVfxE`wOh0NjL8pS`JW;e>(4U-kQYHrV+G3NYXNm+m3@n$JS0ML1IvzO1;#Z1}$36p*RnMhF_!Hfu{DNu_R zkWPU?OWFuj&JZifx0aqv!tTE|PgOkGfets(w6bv!OaTiV3gFpa40x%zGU{nJD46s>uuLsMBm_J3Z7k3>TOc5L&gxU*>hUYiF zn*_aGWWAmoy-t$#I!s^u7z5!)*kAy4JOE%sNbf0dipb~S0N^l2THn{aI?uY-{qSV~ z8NHk&KG_8mmUf0@Lt6-wh13nrppo!$DQKD|k^kGk1O^G&IBku^(`SU)r2s(y9UDMl z&=anRUk#RY+VBCCO~#3Awb5KCGmKOW1ppKP;F3SQElh2j^DMDV?NTs!~)01*OK?z~`cHH)E2CHNh_WXN$99IHR`G`?sajr;{b1E?bK zNlYqDJU%cViU0)Q0M9G|&hemK@v2UP@umO*0J3-n015<5={AP@cbkWus9cn=mm=X>56WFpnwSn zhX6o8R}Xz}oPr?Xl2gzYie7`n1q?(ahL1!S^`~dUBxXbaU=lPELHoRHnoQvYToud{ zh@`J4KlwTKy#Np`8yslrms#z1_V55>djgeg?d(rMdlnN09*GbTilt$LIY0w{_k#f* z09$nc;E;mIk(a)XKVHM_YyKtxM*!;j1p))eVdO}igMrKd1P%ZIK|}Na1P%Z>Pk0ER z04=rv7$8aHONbf=$^fEh1OmYn5O60`!Goq51Y%A;3%+TlneR-q;|)i`UJnZCY@Uyw z?f5LDDJwq+G4Z*b>4)ahZ73Whm;Hz)Wp3oJ+U%9EW^S%3e40SH841Te%_Fob3X9%MvYU17eN zIfe*UY2(Wdq|4HWZ}$4yk-Y!_z;n98Se0CEJ~7+D0E*y2T0UY5A5f(pYcP*368Ke9ZQOUV4eBJ{{X;H0tgA5H=}`Dcw4D4 zkN@koVfu2MrM?g6ORx6gAxILDfH7rliBJ6g{`(IrwX-TI|IPqV^-vgV5}iKJ8Crnk zVN{D+9#$ZBP{}aZaMmgQKG+@pZR+qW%(hpa!o1crX9}0YLyciKqdqz#EJJ00BV& L6+&tNYVZc*Bq0$M literal 1498 zcmV<01tt0b0003AFaQ7nL7Jc%ya~d5PXclM1;I;%LYM;!O?+T=ilPd>@f(y0ddzbG z2D<8uG7R4TVd|lEyeVzojEsWJ9YKe|2q_=KPyjdLPyi4fKmbDO5P&$q03Zdx6!l=H z#!rONR3tx}`J(y%1FlZj%=hXHL>Ny1u&0s8c~b{GTt4T2P4!&2tO3f*2(e1RkLCyj z;ZOiWW@mP1c4v2Q|9}r*219^C!Vchplb@RH6?6%hfRzOR0l)x)76y^Tu|$9iA_DXH zu;5IzI48BuQajcodthJ+_N^gk&K2Q@!uOaMI_$e7}ycmMjV2?ZQNV);m=7Ej*d&DbCT zfG8EBbtz0ZZ}=D}N(Xy9tRh-%G1DEx08?@nQuIeV-=^CV7}bVQHC7u6k0Gb4z=tn} zqXS@I2H;Q!Lm((DHBh<{&Rs}DH6Qk)iUzS?n6(l0M*ZLb2oHf=92}z8UedHrHLZAs zt)Ku93jkmQ^7;cL2Zm(;0ssO5z!nw;6&M`qsaK$e{$>Ivh>T8|SydGkd;knN!jd8i z*4YVoBz$=`p>Q$485v2+Z@>po19HJ~^Nl`ZGK{O@0l5iQ07(_l)i^C7&PdUTV1kvGXoeM8P`{B8TgI30099J1b~9c zYfFSArJyi05Jmt2fCd8$CSVByL^^o%9$9DmMh*pVLexU;BD=fx0DOb7gZ$^jm-heI z7y||fIy$% ziD{xAL8l-95C`V~0ss`(c&HN}zHp=eOmLtXH1wN(00FoRbIGxZ(8)7FP5%eo8=wFX zMgRc;SeXLD-v$C?&7mL)46SG~urR;@5Jd)RkVscW zKz^YFR6>P$XDp)$2l_w&AYvme=AZ-Iisi*NFdGyI^M=`G)N)?~7+6jh5EmH$Sky14 z(l3e=%WNbcfDAc{b|ClyhZ}OyHr_CZQBzEJE&7Fc5h8#9fD1l=pxf^)YLJKT5s(1A zP8~^25vcI7fC1wac#_4BE+mcZF~$n&pXRrn0As6pFeX>z6#GL)s8GMbNf&&FyGZ1d0kfw)z!9JC@zhyMNG3|hiFDx0rO75)qzu*f44 zEPNEcILVWJ={t|cE{}zt28q&3Wb)Vhx4~s0%}7-Y5ct?&lX*k%@hJ!UKbP@C#Kl5B z0;QU=1#_4l%g_^k@JgTtEykz^ARXVo#t;A@@EY_c_Frq9+3w%_9^gb-qF4^etUDos z9Q@{mA^FHK1Y-aI0YLz6Ca4Cl0C+F}00BV&If<$PtH2wK0003&02M-NfNJmtJ#KYcfX0{@mV;&r5s7VSAr07 zUK~N6=KM{WrUA*o0RR9%3;~59^z7LGWWlBaDMkA*00aVnIpLDP1cCv9y%=Dvs^^H) z=E(*C3@=r_w;%xk0DwV6@McgE7}bJ_v$OyK071_ljMfTGjHp+Uef!1(0098Ph}8`T zaK|_g0Dwogi}N|eLsojcFvxPJU;3JZsF>^oaxtcE-Tr5b<7;`bL^5{ct8WgFlwxqe^d9kmOasUO z2m^n)5!jAsBBjG+h>at#t`qjrE02w-uH7zN%ESa8gL zt)7q<*R}r>017|~CV(Ib22?@d&1VM&AOH|W009OxU;qdyfIClgAaTKf0D%|)2oClc z00@TbKhPNkBnOR~kiCEssg*<_C@^&lg3b- zw)vxsg+Ks_M3|ES=DXYm@hRv$6^K9Bkt2=3iId#{My3jY*>)R$z0GXFo|fy_$g_gT(&H?E1%`g$zy%3=>Co7Sn8AN|0Rs*& zQ&;A^Cz=2m~GuX)XdJrR2n-@qQj^4$Jp-LIR+Ypac}-2_%NU|Ce|S zIs0SMUt8_|=mHL4Rpim0eU2H&*tOQ~-@oE8z&tPj00BV&ZYHP(uK;*30003&06B@O V0jt0pi~s-uK>!s(YJh6+2ICBSsI>q9 literal 967 zcmV;&133Hu0003AFaQ7nL7KoCyae<%3QQ1406%rqz5EHr(&76q~$+7 zgh5!sX%72tK-RGR1E5n&TwnZf5hhG>OAQy=_=drAjO~K3u(Oy8Fu&f;&aSE3W(3*d>VRYz5)Y^Jicql*y&3sOpgEvv<_W)0D{80HN98=xDK2E1Q!NM zKm(w}R_RuvET8TG0f+#yVFYB2>AIi34@D3%0)+;Q$nbnr)dY2sKU1E70RY0~ z7`g|@UYgnoMD>3G1jj1@btnQL8(dFE8c$pRGJpVpC2|-RGXv>NF=zkA004t{00>e5 z0EIXJ5KQTdyfD)g64$}!AAf1T!Q4!C0Usf`5BWi1ev}olbQCeJb(azFMZB{!bSZJ!3>Z9crXE(wD21Ug{o@|FBk)G0mF8hb2elOqlG(P0~mwN zG=UEdk|W2Wb`Zb-Kmq^*g9XVS-_DoD0dRnO2?DVJF`fZ{U^rTcZWBO?CTec;CBOsV zK+9Kq1w{{Z7$U*3*Z}|sWKjTbk43%v!D<8y6un+Fq&7)9y*wkhh((K7S=l~>3AgZI z)qvMRY=|jtW-v3M5xikw0ew8Cif}JYZ94G}004k-#RYu$_z7)mAR2(A0E8T|4=|aM z>9{C?N}s$85rhvW3b?2zOj{um%o6+nFfq>!Mnepkj2-l}3MWq>fH*YIfEGh82ZMpM z3d7{j0Dw_sjuLcr+9UGC&&JID7Zi*FMN1`);Tn@lqNX$u00<%)JX~~$B#Q^%vw&bs z&=_DFTUrs5Iru08hXc4|7LUM&Kj#UrB4FTF>SMlRu8bU4+#DE9w4RrLcuJ-!)rsq{ zDVIFC=HM@@z7PNZya5F4&%3PrPrAhrXpv{uo6dL^P*}VNOb9DxxL}NFo%2yp04_C{ z1em|h0{L68;OtdmM2_AivssJHGL2msIzuC9u0}3wnCZjz6xBS3L2s$2H3;e@BYI-Vv?f>|UFb@m> p00BV&ZYHn>uK;*30003&06B@Q0jt0pi~s-uK>!s(YXEBS2IDS&jv)X5 diff --git a/samples/h264SampleFrames/frame-1248.h264 b/samples/h264SampleFrames/frame-1248.h264 index 5fc2f0787ab29ce30f5a67decb49cd50692acb05..a286dd8e3000898567cdd421f98c31654de98c7a 100644 GIT binary patch literal 1194 zcmV;b1XcS00003AFaQ7nL7KoCyae(6j|L%7Vk|~G5CQofQ}3q3f;^#*r+3{Hu2!UPz4i5=|$3YY@pb3@;?rvNF36xA}ok(g?RpbB|6eE;u zU)kF{u?}rKBK;fUfDQn1lSBtZ-r0x358(cqJlgj)pg-c5`)7zjuGoHo>4ApyHEfK4FT|r00xEr zT=W3o;0K-mdIOZWAOqU`h%nC5RlHE* zDi{$hkVg;7gM%WVG2eTAe0FqBo)TmN8Q2^0x!=0oB@!7QkwD4V%wR`|1YV; zl88J&E7Hul1b@^Euk|Z`?(fcX0P6S!e;!4RpUZe1O)?jqg5SK~_o51*;FH9$TNnTc z2$0|aARGpQNAwj6)SU1TiwG{(nR}-~N>F+L0xMtO3;-NZl}@D&-D6*SG7ep}fC2*u zWDD*T-`snxiK_53loL%!_W^{nn7w)c17QH8Jc?|VKaT?mbSZR!6#}BkMJSMNAk38p zVJC2@m_L940Kxw+*E=#IZ5_K)@O}UpM&2ZA=Q5jNz?MOqh2c1@WT25`dbkAu1po>U zDvBfoy&z=fHa8wIGDwp@(C;$WioB#v>i8KH~ zKRg9VkJWj=0{{gQZ5Io3O#uRCM1TPwdtMOyCsD)vNu35X&wv0R4lrw<@&W|9uxSdB zniqfoAOax!@-a}}8|EmJ+kLWR9!E>p=UJr8^?Ow9|I70+If|k;5K0=P2jdaIssaRy zAQ~zuCMqYlh7Pn4#e*mqX{a=80Rp6?}7bozszpD7dJllzufFVZ#*lhXd)B< z-_A|~a04}fFhz|_lNe0M4gdwcDV{{`2}FS9a5zjUkl{m@o)R!IK@l9f`~i?6wh@Q| zLRbN9NgN=`1SkYtfDix>AwWR@*3(=4OT~KN)-6Zh|8EIJ0F6$T6FDOOwn~Y8U|>T# zMU^}iRiYCo{279hb5wa(dO?Q&{h$B{0e~p0Ov_TaC*pzb*7Gp`6)j3{gZN#vb^c_iHQU_3@2T~*BQX3B24VrnXiW78c~DoQUqEu4AXhCNWyE^O0%rySy{H)m zcdN{@7!&7#6|js?08}!xFQ@x1o7|n(fB+yaAf*N{Kw=@uk8TlYat0nS0f%q62NUKh z15uI-fBM2go%-Xm68JyyfCH=n_zuw=FThYuAxHoK5L1WMKmPn90097?I4sCB;URaX zYFBB2h&Vc4K{Yu31OWkQeB)h4Z9Ul7^|p|K5ck&8RqgJ~z|xpYk-+hc05n=bYnOIV zfx{79cliYWuA>A0hdF})@W2270YLz6Ca?yt0C+F}00BV&If<+RtH2wK0003&02M-O I0BZ0C<9kx_k^lez literal 1021 zcmV7pNk zv&6z&P*MO600a=QG>#>TAOKkq7oWw4#t(pWmPueNM8ww;QHTIe03Oo`$Sf(SGsXZ& zpboPb0;GRsMkW9O6^{Lo4AqhjJOBa#`SyoU0ir}%eBe+Cg9aeLfM&j*UCxAQ!1B!HrQR7AdZNW5_eGkA70n&=n77HE=V|W?BL16kC*Jfs* zoc}PE=Z0_rMv1XzV`PNHg>8c8V0OYF&B8kj0QRpWFyX|#eF$Cu#so`fMGwk@iX~vj zbv}OY+xGj*5F`m5qrTlE+ff1_kMqCb0n-p_K;!C2vo*hT68fA;;s`uIE7j&)Bj0S- zs{?i4jphOP_->CQ#6im51+p~JX^1QR@Q=#n<#0&9oK7qhihu%SB|n5o)#m&J;GnK| z&qTC(BS&wfBK#wBh)Yd&HL$KR>kzO1*ZY}?bFic*Iq2a6C;<&Q!$MaHET>PS|AtWb zAaM;kEFrx*W+%1#g>-3r5{VCl!H^>m85!^l00aTuKruqh#L$4X{j^vNTwvr1>pLCm zgVq0h0t7msVFE(Rwm?kVh`{Q68AO{T7*60Bz?gW)ikKY;r?@Zw|F{4F08@a17fmo+ z`(pb+s8#{z{@@UB9G3-%NY0kfJ0cL{?*=f1OrycC5jjG?g2(;<0Dy=(mK5e)AolApo=Y@1A zv=IseFS*wTzzo1JLF%<}IAby@-~pB7rfiAeLMl(54BNm^;YQkc6PJ)oCg42ufS@gW zqfSR{G>y%(hxCXBPcrX9}0YLyciLL>wz#EJJ00BV&6+&x(YVZc*Ok%N$ diff --git a/samples/h264SampleFrames/frame-1249.h264 b/samples/h264SampleFrames/frame-1249.h264 index 86448acb424a65b2a2c4097774a7617e637ae4e6..64bcc8822dfa250d349cbcd531eaa6106c049c13 100644 GIT binary patch literal 1717 zcmV;m21@w=0003AFaQ7nL7Lziyaf6A`U)Dpq^DScW;_58yP9?xDOZxn{)Px|;$Q`h zRWyG+dS6i%R>m6u9yns#Zk7Mv;2m9UZ9lu|h5{bzx<7seSvlzszc?5uo7b1xIn=Xw z|7ZjN5#sYj?*{}Y>7Rb&05DT7tfC%$kgJ}^R-^+O(7=kRrkq+rPHq4IKn1~<*)fYC01eQ!K;lt=#X z3}gZ+NHGM;LW4{#4?`IhX%aw96rGYcJiq`DKL7y-pa2lH0097`&kz7$9(}{8xWIs6 zWpD&3pak9{m?|faafOi7Z~(nv07AhTgz(7Eed&BuRLrrQ`>t1l)&TQMs?C<;c7BK! zq$mIg1+w=8R(t;Thz-I5%lesAf<%hw8a^fD;2;JxfO%#e^-J_cv#;r#AJu}RK6x48NN7}0OpK%#5q}Zf=`$aV96dXLe2mM&;SGipm^zW2EwCF$e~}` zZuUOsdJI;#?=RnYOg>)=gP1q5LINB_fOO+2;08@K>88NWBxjgHUvIE=t!#uFUH$wB z1iC|X-Eu|Y(3tn3rENR;ctJxjYACP-Rs&wdgwvao(eJ?>$7g9Y3ouJXoUy*yI&jms0Qd+8{6@ADlH-In;T7?h*hn4>o`(Pi!G)w*K)O0096NyMPSvp;(g> zyx?a7lC=wTi=&Dqh4=o@xUh<+prT7T5B~5&w1EqJoBdeR50P7f0hBO;pD-2@A?HnO1z|JQds zE1^S}Tu?|Dl+#~t-Tif9>xp-1f(6@Eo`Dg>N1&m_u~Ko0J=~P z2-!x%quH@~8Bus{zyLrb0nfa%hUk>0OP9YtfFC$9RL)7}r1k`U;K18rF`Zg$rpu-O z_W}fjdo6*IN4~>f|M1h*QfS}%W=1YxKUe*2)C271clyfj zV}9cL*0+g(6A!=uObA>^MrCmz_Ag+ zzysK^Lx1xLZo}{&gQtW+$fzj~z9*BsEWWqC#oK zL%(hxCXBPcrX9}0YLyciLL>wz#EJJ00BV& L6+&x(YVZc*yQ%jL literal 1579 zcmV+`2Gscg0003AFaQ7nL7M;?yaf69MMMz7gm3}s$Jmj|#y}8v2!MO|Ken|SAAO(z8-sgK4y4K>GD97)-a~~) zmcRe)!IU!Evcdu8if?x8rJ#e{D26?#IWkZE`~X3YP5j(9oJ0KSemq1-@KVM=?PTP0 zQSZPBfDREd3gBxc5-We+_y91Fehsak;>em@hQI}kKx%voI5|5e87!W!d4P#USppE0 z@AWxeBn91^mVmf8(b_(dJzMvHaDV_+HDmxdD#B-URp;!5qW9p?0r16Z%i@?Xs` zWvOW$4gUBY54de;8)<5zF9gQ7gb!3WF* z%n*@?l)wxpVv&wzIEhnN;07S;zq~axD&jA;*CPNC7rbYlK19|nczh^y;R`R@qXs6% zfr`S2nn1yBFu^nZpfG+{AcZ4orj4*WP$+~!iHiUP*C!6e`GPzET>79WaISf2eZ=xd z`e}SF2m}K+XmKzD8)-LJ0ooebN`Z(Qq@i{I1%3bl0HNch+X3)YBwfgXf7@U7_*1!{ zVz&SC{r$W?!)Fo(%!2KgIfA(WTEhh3(G8qWIv0xclb6Ry+z9kTA8 zhLya-{$3DxBbdAZbq6S#gtZ?2seBs*ia?edfB+y2N&o@?U=Ie9 z#pgu@Lep@A*MS`bk`vE?QAUyf*Z=^4v4BvKSr?Fi$0%J~EEoWM00aQRv;`t#S7f*x zHv?jbyM#V&7qiHu$^Y6w)Cv+6Q(vWYh5To~r$fSvZR@}TN?>UdsKHp@pT~k94NXdz zvWag7v7!KZ*Z>#@I|8FA)DeHqh=i`AV-vA|{7WyOb{Rp64~+OHAON3zp{t<1iD@$W zW55_)4P*T+MM^S&>Zk+H-~iwNAOZlz2G?^F`N0~8PIUkO;6Vx;^2int;WO`;GE5k7 z0CAbbWsNIVgB?A3!}mNGOw^CP`_g37|J*SE!8MXgdO-Z=#bsT=shn^C5DGy9>r?<4 z08QLU^u7zk0Sqt+0)gX<`IrO@@*2RMCf52$j|KtBJP8#qM@{7JN?x(=4B!d^L~*s5 z8zC1Qw#w{0tgRKa(SjKR-g+*!= z(F`P1GyDVuI6yx_b|G9$zs$lVAJztusE?HZT!yc_U?gkqa&=8(`z=2!m zs($dm0t2*29B?7Ghd&Yxb;2+^k&M6`T2D*3BQ$6c?u09xP63Vi&||7Jf8nuO5R#bp z@|AnvC;(o`>!X3W()H(epaiO`S9j+?1T0;3Qjq`k-jJclP^c8T)}Mdy2{m-{Xcr6Y z|2zT2e>pkO z3QX3Hj!v}5Bt0J5erX@m2t$H4nQ_aH|9`)sJ?r^55WXG%cnv#oH05FWn9?=o_hk}H zNU;`O4gd|AFMb1NWYfT*&Uu9pAlRpf3toUwgVeqtBRZ6UC<7q&k^TQ}<-{Fxi@$)E z-G&wkT!!s(YyfKT2IKQ7#%}-s diff --git a/samples/h264SampleFrames/frame-1250.h264 b/samples/h264SampleFrames/frame-1250.h264 index ed771a62334821d68f4b42eb3f264b30ec923a9a..da95df3936052716d3491e9b61b732af02578e29 100644 GIT binary patch literal 1201 zcmV;i1Wx+^0003AFaQ7nL7M;?yakU51v9RLut~LekVY%O12)^`H$DIWfM^E==pole zgG;ww$uk6y^Z*Yq01ys|=l}=?fFlU*0aFP7{`SHFkuV@x10zm~3mz;j^5mZPSj91s2A0f9~=5Sl`^xh(~P z2{a*68-U#b+2LJ_2O`19u!aCHPHR)+atxGwiM{{p4@iPxXiM-9@nj#Cp>i|+Suk=^ z;Cg40umz|;xX7%wjDkFZBcPXfU}g``v^JpNj7yUM2KWcp@DvmhOCP3$UcdanKu?_r zVR&eu0cy4bfYENzr!^RIFbs{&JwR*nFad$F!Zjb|j9unR(N{H;pPEs7qQJUb!&`=AYVgpdmfB|t-9tfdOlDtGj z4vS`c35XAqc3OS+-T(lAjR0dn6~Y%EyMcbT7w7A48~_0V%9sE{A}7E7fY3mxS?EMc zp&s{lfWV|QubuQ!UU4S)00IDmFVUB~2|)s1w*)vX>cHqyJ!``g;XBe1hF26)93#mk zz;NHpMF(f`A;k}g*qLHj0laDWl}G=|081(X(9zRfBz29ILIjjBU&Ta{FDwPv05$!< z4gvwD@~avw1Gbrn00apD06>FNumDIlbHURDAmv41C21HDg%96IFbsTN&jK~JBVTm? z5I2VDVNd&l`LSSQ7P~T^&|5Sz>H$e+}2=Vg^2A3Q@6L$z zso?rq@rb}a00sh|2A10~1B8_}S^wbt#DF_f#sUt65#zB6?jYE;4hScTGTVxO_&xvt zKu87&W4;(O#X{di5gK^ny8kjzSRIxZEqo6EDC)q#+>+zPMxqdY02?^1IA~(L_=%iJ z-BtE)N15u(G0n001C!4;4Fq@I&N)0Er=h1{@^vg~UvN!3P%5b+J*odIB4K@Lx4E zGJ^lzTj8H4tN(Eh{?DVYDAbrAq2kBfVz>%f*JasAtXDSM$M)Lqi|8UcENlchs0L>8 zS`2^O0meqtgQ=q8Gbdhz0o%ZzQ5gS?Hy-DmuQCSwGyl_k1_@YT7DP;ez<^l@lYx7P zC;a}_5>qz_m*H`=lBLDyaK>%(hzy_}XcrX9}0YLyciLe2yz#EJJ P00BV&6+&zPYVZc*QyA~a literal 955 zcmV;s14R4)0003AFaQ7nL7N~NyakUaP%^&_4NwGJ2AA-NUx5r)fCq2@5C{W^X8C-_ z_~L#4pecaDgUBW!BUV2@qKF?s`+x2S@m4~JiPKmr&D3VH4Zh=@Hc4)TBu7V>B`jPL*i$q)1JWq<+zFaU?Z zIrnXyHUmeXazFqvcuX)2sT%=H+++ms>zgbCv%pi?3Q@;W7LrSL2Q7!nK_Mj7(}Fd*9z zwXajf#5LMaV80BOJXBImXAx6_a>sNi00flc;^O{K|mrC&iBRDpfzv+ z1OVhD019br02IGLxJ%88|6mRQ5Jrn(0^tf;-?$6_DwqZz4DpSp+Kw7aKkfx6`T)Bn z5A9?2v&;d25kP?%?2DFgE>z~90R93vQ%M2Z!JKJCio!QA01yFs05AstquV#^c7^|zF*AW#l&Up zz=s|DfSmgkDqetw*E|_{!`4>w$+p)2;CsKWo%{YDcO`-Rh9u&~{0yM^GP)w&H~R64 z=3ZCOL}XaZ0t#vZKFMe|U2XxnwSm!K*KmYRy#xW`V<|8Lyl zFu*C#GzbQOSqiwoN&UnW3A+st&aDljBBB!s(Y=CO;2IH_Mkm&#b diff --git a/samples/h264SampleFrames/frame-1251.h264 b/samples/h264SampleFrames/frame-1251.h264 index aa619a25012b4eb912759c5c2407e3cb3cc12ff2..4b92ffa520682fbd06d3f35a7eb40ed870f7c4e9 100644 GIT binary patch literal 6791 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 literal 6127 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 AcmMzZ literal 2656 zcmXw*c|6mPAICqR4U=4vTroO?zT#WtHbteJIV;K$DR+)Go7r4ZDf*^zQ<0FPuiV2H zm9Ks|Vp*=ya^=`)Hq7?5Kzzr*E4o*E#tH8u31dsns1Iza<0v1^57X(oMCe4L&?S(`1*(u3X6`j zSXe0QsMbp!tn7gJ66KG< zwCvj$3y6<~XN`3Unk-_R%~6*)Ofp=IY9QpUW#hnvVA0o0dfEsajI&#AeTtQQ8zWtC zW}+k6JMwyPFj;UER?d#hE#lD@sHn$@_0#0|G1f)SKb2V0*SxX>?hgcM!G%fZZY%~# zrRc#%1-a7Eri0%lQ1FLZy+z#qnB2#GrJLvqXy#i(D?B6{I5`^koDTK4VW(Cq&*iX> z_T_U)qLI4zFeJ1nqDR${VxVbVNKs2aF6nwvg6nS*dzg_|<7}UrRoKs2tvVsU&&xTs zBU#XP{_3$GMc!+h=uhUi`}{iO<%sel4eRz1?vgQRkI*5&qSc)Z{f`dQ%jOh-IPQ!( zsr%xUMY`q;;jV_7F!5E1rbnk=3!fn>RuZc7@ie%7pea%)eY!7C@vl`Vg6TD>IUa2- zYfutOhnOFABUIQcN`>bHQ9j{b2efmXqEzAWG+~^ZE*grR{99ByfQ(DVxr`yutfh9L%w!=qlcD&wXzE(%Ge}}^l2_{CLs90!GhgE{BdI{5jq{^mv!IMXO3VwBxcDVfWv$cii zHI>3CP2yv$_iI1XJ)-}+cPRRLhG$`~sQEWhvL`j@C6of&?W?l6X?_V%4;!O1GlMHT z`9HS$z#fuN60+tT)){PF#?_=xj1mN$^c1z5)#x4+jxn~^kuxv=B0AMdg>=Q#85E*fn>1>=%p%7Fy~uvT)ayCMMQ7qmaj+b zdB&|p!0(9XAf7)7N-xjKoxc2p)XAW zMYxs0A9L3aGQ2mIrK|yUMLMD5n=JEM7#Msc&2{IxK%~GNLFqC3S(XvpWS+&VjoEq$CCePrJvn4j&LL@9 z_CW3Q<)cH5UoY_Ev`B0ev@Qi{pe8`v!}S{~mfr4EI@GQb{#t}f69fhlR_G6E4N7;f zQNGNg(rl;4(WcP3ZD(P@=amE#}a4l@t(nrC@H&g95QCzM-=f4c{s``&C zE22uZb-MvkNn1czRyH+uQregyX4L$Haf&IUtD?u!js_$VxiPMmCS=_wmpffoh?$YZ z%V+IZebw{w*k4?rDI1CUYWPwug0hlB4VR*X04c3egmw%p&_nCI&DD@uut|cF1sTk5 z2;#$-c;}7bLF~n$#&_}RO_H%9O4ZX(cEz$Gu&#LtU&oiFHAEZQH?*qEA|f-9wI}Lo zBh~9$d9*%=mcdb_{4*6#PW)p(QF1KjLjhE{eJe&^;$$Pr=QTOWTA{dkTLx(Q7R(#a z1lnP`JU!_%UJ5T@RI(CDl{XoVFZX2<9h}rCv}cxx4{bx?0xkge-Vjc~<+(OzW1UiT zc|@*%ZR*Fi{$AK%r_uAyfVw*irRTe3#_LXGOooZg(Jm}& zjC}d$Zg`6sD{U?l*ef~-1AY62U7$Dj-l8M+n~{gHz!6O5cp8`QV7!w|IoXkS2Dj+y z*o-1p7TZa?@AAd1$P+2f|8`HGfY=AWS1oqz1tJ`xxJP3RaSp(|?UgK<@ZeVh~G&@n4c0 BTwDME diff --git a/samples/h264SampleFrames/frame-1253.h264 b/samples/h264SampleFrames/frame-1253.h264 index 59c1dc746be222cb9c90f9c8575c52601cccd683..aefbeae0aaac89b6842e28ced10df9f90727e3bf 100644 GIT binary patch delta 1290 zcmV+l1@-!b2%`#r000012`~Tv0YRET8oUJ`C|G&AfLI>iQrE#9yut!Xxj4{9wZRt+ zLSLGbmOR}+EDv{&0RSq-0Sl|`_CG)e11W$87|3S*m(J?L!!Q7_42m7445F{8`^;bf z?+t`R(b|DlHZm%)9t1{&FlYejZkpWp?CM-hJJ;u@u+wEzHsU@bDh z4HwxG@C%7Rx4-T|!i+mqjxN`B&ws_d&tvMmJ^&!}XhN*3{Q?;)C1wA)KmmXh?BN;{ zo&)BBsc4#lYrp>o;2;B|U<^8c0(H>~;j+$~LFB1o>>`TEL2Voa zkJq=T$TY_wVcgD(GysoK5y^Cct(@1?i+%vgpb7%W!Wz*w-3SsU@u0vjMbLl^3+G3& zirMC&PYXa`3H}fPK`8C(^Cd-?N!|)(AHW0#3+Xs*uEo=5gxRMLzy?t_8YQyVMR1VT zF-wJi;W^G~K}{F5z$gHq2M;6PxM`7vjO;`I-U6Tj)Dd_jrV}Qfof^js0!RSZ*oZX& zwL+7km4#iU00-juT?+(FYh6d`HzS{C0rkj zg9Sh+z)Ar!VlpB^D;OY+oroQt7thbwT5xjfsVO>|`_o3NlvvpKKSp3-q9@lRPy!|a zN5b<+AdyY7_Uu4lnY7OVU;B(c zRM>tH46Xzflcl8R6AkQB$Q(GswMgphcWdwhWef`DAWS=*Tw#ET_IMKbCMN)fMUB~= z%Vl#WZFm3z0p}L+bf{a#KeFA0D>$ysD1cM00aR6!petubVEf{7O zbP%vYe2hd88#OPfYFOfEU>ia6Ot1-RCSU>Z8GrkO3W1R2fX?p*ZCheLsC;UFt?m!} zA;V(!fbfE8VK;|-<-?#unrmW&L-)JjNzxBKgGd-21)dhLrMoo*We7(RYApl7b z1W}#>Maz#73&?K~t20BR;^z^ban=534^^(`h4ht*3N?G5t{Z98mohK!;~|IZkqQd$ z4URwkoQMDj2mkn>v_Eao0HfBELG`D Ai2wiq delta 1000 zcmVREaJmLcWr@p06sc*Z;U7F!L z8%Hag3n9rKBn!bD030B~;$29Pcq6wDYU92EhX#qYo*mQMcayF#q5C>kSzzPCC--}R8E`sFFBz#JZR z5Uw_~Rg7BP00KBT4eO1LsAQo)bS40wyvV~Kv|7CaZDncZ00IG6fEWwSm9NhZ%?Y;| zgcZ_**h6bkU$_7eFkTpf6?-cQe(t@@2moD7x|Rjcr3`a$Szi?3VSEVq?J`gJ2cR09 zQiO|JPE-4Tnyvq}05GD8DX5{=lU4li2t!gP{m}HOV&VKrJS8XrI`aqj3Ek^&fB}p^ z(cf&!C{{wviHGh66cU*q+=8_aNXbjz-nM@nCRxLCiQ= z;7_Y6_*SQ2hx%i%odE@G#c#j>2nCoF04TL`|DrZZ1_dV;m~eIkB`;mBrq2C9NHV7j zL8Ov@y}{rQu&Q9bG1GV_n7|I~B+;Fl9yM5qlNQ?k&uaP2sbuR^B$~&1W zEWy4}-~b2&g|-DpVv%Xnp9yZ8z(HOBqlm$Oh#&*6b^f5!&<5WC0DvO_^1llN#TgCMCm_nb3o-Xr>fgaP~^!e(AB^v7v54fzU63(0P_ftoQ`w z5)c9is0=L8Lm$ULM*ZC%zX5<#`qRH(NCQ2VPegUEw`Beh{39#pasU6f@D%H7X!4`p zfh#kWAUbF5zT~wBER7l14kAHyP#s7LlLrb5COaMA8Vy9^6M_k1DA1L#U?}hf&X|5A W8V~nzs-U%#7lnVt`+GK%_XI4+GrmXw diff --git a/samples/h264SampleFrames/frame-1254.h264 b/samples/h264SampleFrames/frame-1254.h264 index 7c091650e3adaa730fe3518170d1ab269161bd92..45be0df67d7226db1ab4f024566c9205537f151c 100644 GIT binary patch delta 1315 zcmV+;1>E|h3bzV>000012`~Tv0YREz8oUKJK|@~?*bLh){%ZzkkoNgGLx#o6<8u5@ zFdz|d*gbI?ip;F)^xK{sz z{xIkvWT;~At*<(thExqNl{`029_HT8D!{ zHtO+!03a3s0tJ8oAd&!aGk`z>i36KB$sQKo2*Sfs?f^3j$aX7s|9-cPPxz^7-+aBl zm&HX)%NR_5xy~HG1+v!ZJ~wCZf|QN`0stzxya`Fq|Jp&g!KC#|rss$e(SM60lYoFB zZUmB1o>Y!bo)rJwU;%I*^=xMef_r}AXaEEP9_Rp~b0)E0{ls8E$?KtOka06+KmF=j z1RkeJdYvXbFP-ql00<(Kgds{&kc25o|Nrm+a3Cmuk_HGeCeM`wN*S{d0gac%0yGx| z0Msxa3I&()k;njejDus5N+l-$eWC^l%d8Tb+Rt@=?h*jNEXo0gQuI!wue?ow151oEKllM5R^tk2*7l)A8FelQ41o_J(nE(% z)1T#kzwZD5Kqc@n6*PiZN~f`P=biij0Dww>BN!a1J4Tf*H9uki5zwpvqLn}_-sk&4 z{0Oh+z0RRaAuTy9V$e_SrLh4%jo|CC-cpTrUzyS~fA%I{|B1oIj3c&=zDS;4w7XSndQpBqmO_bG~B{+D55|kW1$;9Lp zovTwXhEV>n@Pk(|5!`s8bU@+e!3dju2fhjb2xkDi2lruHI#q*v8!7-4-Aq10Ir+Q* z0RYpU03_MMrzCZi@1XhA45p+66bZ~XoJ0zraa5u#{+ zm#kcc0vI6vVj~~_is%3W0jSsjXj|Yul0omi*S5y}N~byACIFD=00IQCD(3-E&5geq zd7uZt0kbhKDF!`!fs6fUhMa}YXDJ>XgaH-^VSodfB9?%V@)$4qm*B%K2SS$6BuF2xyPA|ZoDj-mSVGy(c4s{1) z5eL8hfCIw%-?HlaqZL)ds;d9;fEfMqZ?0%~4rmauqVipl%wz&#{M}cN1uQzv`|1L00WEw zj12(tgaI55tGL6D0;9sYu5REMe;O131PB41;3QWl6H~Z#*mW_DoB}A6kQpGP)iz2y z%-{cL0e~y~1`q6G0smv_Zx{aH8HJn!?iaRqDFV+WPyOhBooR3cvw~L3lQ}cZ_`FB(eY=Vgph10}c((N(KurKfJ(3 zqNT?bSM4dA{ur%!yi*1BR2(hGAO6cr)zJ0096%fLz2Pt&u7+LF;$#81zGbfB=DqRqg;1BRP>%*XAN8BG`9ZCGY?Q z0Kp8EP6Uys6y~&FOvWwv(mSl%Z%_Tfxj?P)YtMQ8E$4y&VUXO20kJL!bD@s|U>|e< z2tZUdCr9Sj|6Le+{2#ruY;V-6?xFYq2mysyb{66v^LH2w#Mw5?0098-01y)Z4-LzI z7n(o75O7ogoa|jk*@D4USf+gdCIkfzr%}7qWAbsUr*L2ij5AO;NEw}}y2J9Rhz0k{ z_-6hy!;w6O8Q<}+U)Zt)o|+hxjd*pyM4lDg2_c{)ixq(u^Z)D}1VY&>1Yi`f{{Y5- zIH-4ifK-^{sUw($D<_MAIKCz*2_gZ1_<*QHDF7ciK>Qg(|Mmb21h-G~KBxPPRa1x6 zRsZDx5Rcc=@*03SpdsO<2M3{pdcHPI^#}i3+wh9XCZ2pDkaE}Q!XWp3g1>%!M2&}IyOPT**? zghQ09e1pP~?e2UH#`!#vdO!ZAZPtA~hlEY1u>z9)?e+z6)SQ6u;A!pn1`3R}5~KY*FQbbP z7YKzsJU@WKTLL1Q)Bp!5n;^1(zCDD$GC&PO>PvtZ`Zh?%_5qX*&W6iq2MqhYNQ9V# zMiB~EQt!?}%|F24PDD0CfJ@nSp1c=u{GGz{z<)225q==Rj$4}oW4`ZjI5^p-v~mud z0F4Cz^+QcCDPY$@7#x8i{U~5q8Agy3+QcUT$1H$i0Q~CCOAjlig(4FM83|qn1ICjO F1t&huE)@U( diff --git a/samples/h264SampleFrames/frame-1255.h264 b/samples/h264SampleFrames/frame-1255.h264 index e674f9501bb1f418af4aaab82ad19fc7f33a50c9..621ce70e969483886a5a597f07537a2b92f1c7f6 100644 GIT binary patch delta 1295 zcmV+q1@QX42crsq000012`~Tv0YRF88oUJ`5){MemsGp}mMMTddB6TmVb1^z#@o_O zr@#OZ3s3;(24S#(^DWym&Y@fc002TefDA;Uz+3HV{v<2y0RhR}5OIRy_^f1|di=f! zVYt{SLq7sy;ce2%(~IFh|KI>Y(-c~`fzK!aZ~|Zqamqb^PrGKyq~-qL0XP(g4XTNg zW$UGXcnk-gv3~a<4j#YH`M3ZPrUL;?2pDWcRPZ0n0h%BH!oiBGfh{!&V0Zvv=Mo4_ zAzIv)g24ou5Gex)5D&p5d;pdyfI0+g=7Aogzx4kAPJz3Emg9F`x?v3EX8r z6HIsmOl!!03tA}Peh72o0pw4TJ`V%r3;0JL0|wA7sPJ22VB#Ip;NOYB4M=C+G&uzv zUTFbwfKmJrPnnY6Z@@GxC?9iWZ22!`;_ z;jpK}MF0y`up9@A_Ki7cyODroZfWQPUy*gq7kVe(17iz?gu!GkQ<^=YRkpBS09i1#p$e?C4{qjrsdqhX4RT zs-_@+1DS}9{{f(ZQnUF{DvsB?fDm9;G_Sk$QC@K-@Bjh;!Y|R6yXYYCwEwsv!DKH3 zp-6SE>`#SnNJ23jQHXG^B$opZ=0gW};bFxNiP)KPH38#Jxj)~S0X(b+Lq<(>k=8a< z2og}ieiaf#ymT`u2HpT(7up!WKL8DFa07sUfML9<#!EoMwwZ_k1PK5DK!X#o08lt{ zKzEF$P@^0LkAZ?~UI%CbHYUFj4M4%~AlPy#=kY@-#dzGcfWlTPUjY7~0EQ@j2XVB%@0e)z=gd5R z$bbQz&@f?|&384TCFyOSxoh&?mK`{?C@fnLCQtbFTJSzfxKoU$4fCrDUJ=_a_;SD={ z05^xkD4QE{#{RV&+F*#{rT^5{Fi7Aiiy@hpH_x7601@LGNIV?}jYtUBi9FZ#pnwUb zEnjNkL(~Zd^FRV~2mv&LM-l*J@wgFJy$sDV?eD+89qAI77;>l^k1!B#D3Atz0fPgl zg>}k2DZu1?dGmT~0$2ksgN(6%!@pm6WzHKh_s-%2c&Nj4i~|Sn_Yf0{^Vg5SMXiz{ zTj)cw+JyP<%v7qFk0=V3qYr>g*BUpH|G6T|g|p8xpUH!Z)q)*A=HehqECCXBPBa^T z;yotI0PYpxX1t?V8U3@bSsIIo5o0EzyN_LU}*t=Zgonk5eTF7i(s2!f(UX2 z3q#*DF%TNVu1f-M9}?ue0G+@H8O8ptNjdQxZN>or0D;2-O1=Z331#K*BRhC893T|J zvH~jY6vYt4@RBeq;s5~wFboOK((tao3Z7kN^k@6(a%xT>ktV0Sq(D$AKQz!GODEgvAbI1u?A#4D85DnN?vR1dbCZ zzYeFhu!7k*C*XrXd3^$TCcgOcAAtXHHSanptlku@^qUAkfpge4JkMSYNC9=*ozwgM zz(io5V}wi2@(XwXGyt~%;zm?1i5pXau7!a7A2pq+L{dl}{1IKq3c>z_1_J`< zHlCRnqK`D+zJMvg>jIpU1NcCjOJn|Gc$x(nMVPiv1fT#Q2qw;w35{)D(}?gFfVbu) zQ4gTsSAsG~o^N?DzcZ-mM}o_T;0Q3m9lDB&kb0qFR=08iZ~%76POvvBkTp+G0a4Qc z4H&wA6pq)u)1_Dd2m=7~a9Gc@0099&DUv%QFzi|3t5%<2GCjrv;+(wzSYEC7`+&d# zuwix;#dbg|Jj7kVr5{V;q3axG&o~c&LB}RTFL*PP`K(F5@N`6nfB$$P2sq_&K?yYX6k~vYBM%C|pAZC-1Q;*?@aG{s;Ql$Me*gr> z=!QXhHl-K+ryElRNnCXQewX+b#tAf80>7)B_q`Y&7*Pjam)Wa!g{zwhewijU+Ndsr=iAlBs;0R91jjZX@H z>y&s?2Hq!5oC_T{XM^+}BF75T-ZJdO#ct)jf;d@9=~x60_3j`i7w4}ZfhmZjp41oo z#q?sgbMTo*T0IRQ0YP9B4LHxdw;=_dfI+jnGN0VQ`+D#S1z+Uh0w3jooGCCNBZ@dY za({J9;|;(MxisuM{eg)n5?&WixxZ>1IM~lqh5(DL@EgC_0Lf?9hk0Z#Y<1(ohJ3(y Iz?1w0CzgPaQ~&?~ diff --git a/samples/h264SampleFrames/frame-1256.h264 b/samples/h264SampleFrames/frame-1256.h264 index e98a2b9167451966dc4fee7fcacf3fa1fc91e733..2b88a10a348cba43bfc86ee5e8094a6cbe1b516e 100644 GIT binary patch delta 1557 zcmV+w2I~3!3a1Qz000012`~Tv0YRFe8oULBAjJ;g0Fd0qPAMsI2x%(eFojd#B!+p6 z@BJOPY^Y}`d=NyTq5)`uhWJ?wT+Z7w`2Bc9mjD<6?N&2PBAc=RSIZ)P_5wUmQ$e-V zwX}{s;{X8w!2-lmJ(jdz5C&b<>hS;rDFKA|wF1S8UW|x;AO6s4qJJx;x6>#w-~khEXPQ%% z_-Q82FaQuX0D&~Dq z7^3%p0Nena5~nf`D!xTVy~X8#0DvF>2nPn%Ruxu%5qE@`7{UhtK)@AcMc1t?DZsQ5 z`~VQIEID&r2)x{88-3EvBCr@hCqQQbTqF2MPykil;08Q7#YA8N&~yL?0097i0l>0? z98)d&zoej$um5NOItmFbV2-b4ATX7q&;azzXk=29j8=RA7tod7u$Ywc-~h)-s-W*! z#b|ebO#b!=48S7Mc;NvL<0aMafB+y0D33VR{N0Guy6zJ200ad=0mp`>;G8qowE_vT z(0}2J0o(kGlf!={fBu*)^8G&miVkM=7;p&-(nKm-;QRmxK$E6nMsc(P6{@{>U<*tD z1OoK%1^@y9oTL58*O_1sI&c^S18L&;Xt&*e0hS;J8z|K`K5!~JFA6?A-yd&nw}TJU zfTV{G@0DZzz~r|KzJ#U2#B2Zr1vf|l-~&Tk#+hMWtQbtQz;F?V2nUS4;f;Uu6x{mIKh)uFEbNaZqwcMTSR%#iQkBoMB9>Ep+b#ok5AO6>LSFUpJ-fYIV@~f3q zR4~IBo33yE|J!0CAcTe;Yiy_XPy2i9XvUVzsn7m!0*9)A!`PJV_IS#a2O}JW=OCq0 z2SY5QVZ&I$+qN^!{im-yvHJplqD<5{hwpkQ20BLJpPT<#;@GmH35wni_X=Q!7yx@H zVK@1YUc>SJS^_BWzJEUgatHxLFa>akS~xqv3B0Y41`_+x0E^9epa+W4W(>jpOaf4J zCqP7f?YQ@pGv5m{Bm02E%i>s3bRq)QutUNhfzbrTD-lBct)hXLIVTT)sZ$CF@pxaf z9!O*5hqH?Zh;_JL1mImvWylG|`FM*H z1|!+TV7uS!ZBt+Z05YH&ZAYC90knO+VJhMz$gF{ znE(g{)V;D`zSceec)&#*Q8)~wuj2VCdq)5ohIY0ZMWz$ zlee)!G{a4Q{l9>i0RTdsiUB*L)iGt?!N38=z#|Z_ct_X6jZH1<+oB)<5H3_u)BQ+CDQz8)&aZy}3@A?u!pf~{Ikl(%_%Hy?w)suT1az>5+7h9azDCkis=&6eEdWcmM(dAcY7V$HKEZ zH4)T51t3k*0>DB+Bufw#eon2=d;ov|fN(oB6xyTuMa-4P!XNUzI%%uG0i1!0_nH9+ znZ}N!63_+$fK_`fF;kIP^dI}punFWSKrl4~@suzR^J+8@)pS#X;4*-&abE?1IkUoI zmhb<6U;_vf8J@tYOb>?4?`4(%Rs{mfWd)3$uXjf100aSmSebZ_hM?c@CcGsvU;yA4 z41wQ$N(rTOXij=n|L&Lofs@{7**Ddg!~glDUnUs7L`VQ200;nr87Q0yBTgyJXs7@< z00;qqg0pI!&i0YGmd&}u{-{AE`R>;01yKTud03IKf@B|zc04F;aQTAZCRaPmV45G{YLI_R~fsD9+ zagS0AwhsE@fQZwYMsNZQQWTS35=f**nQi=iR&X#e)377}cl3CHjzjR>|H1eQ16Mc} z?K_Dq(@FpKhj1q_=z5F#Ul2MLg~SEMd}C0)pGdwWM(wbWegH7$E!oG=6g=B@inQ^G zoK({pi+-U=0wmx7AO^3XFgp9oTcja>`^01bFH?t7Q$=rZEMNdGDDfo=9$ZN)-%9}? zc2xQvBxwL+sxJ~IS=5xjygc5q$N1o-3%>S-+|c@TgUc9+m<2=xK%iQ1Nnc52sVN~06Tq;Ln}-Q`T(s%IQBn*SXb%}CtnmF+5BJdq!>yJp;e_@ qZMnaf>I83P06aZ(*1-SoD^}(Gb^t0#16Cmov9InM5D*kFk_IO}Mq}gv diff --git a/samples/h264SampleFrames/frame-1257.h264 b/samples/h264SampleFrames/frame-1257.h264 index 87797e9401b9608b0d463a5ba07ef4bd3b9cae64..8f5e0f719fcf1416f4802b8578ed45be1a0a8613 100644 GIT binary patch delta 1077 zcmV-51j_sS2g?Y5000012`~Tv0YRF;8oULE6f=zv2CPV62giuaoNkAdgyZlKb#PPA z74S6W_%jH>m?8y0z-NF0004jp0tiFt(Xsx?gDeD6i}&EeW+XsqwDZ+p$=m;;00bZp zsA!0l>&L}9Y5&{+5HXxduTjD{n`o%AJOF?IKp8^9yH`$s#-=EOY5Oh!06-}04kokW z39X~AGylB60{{U7iw#1LfC<)IG>1T#KiI%*^aBZ&z^gH^B--VOk=D*y{*zyOF22fi$Ap*f51fB=k1 z+^j~*S7u&+00Dq|1R|Z7;_VPH6;u1ca18)luBDPTY6JL1$N&TbKmb5^2WN_h)6%vg zV4$aCUfY1P6Z&fCNKxKhPNkBnFL|kiCc!sg*<_C@?1*5HSz>6Tks7F_F;b z2rsyQ(I&$HSi;YTjWKgUFGd?Wv}A~XBOw*Jj)fD_uM9liQ2MxGhyw|j%z`jUe`A6v zdS8-pf;ugiGBC)PhhvBtq5< zm?{E^cq0go05zmxP6k}B>DG@wu39AeNJi{OXEKW9#SR=BBum}*) zBvSuY77{qX0g-)M>-|Bc%aFe3ebYc0z45&JEC2jq|L{Ni$w?iMC}Hx+#;Th4!}|$; z3Br1NE$u)5;5fv`J#gy%oJ2X(G_-v9EhPo#f;;u-7HNIY_?+)&f(Dk~wbc**_`ehQ zJQtqT_rEuIEFmj?W@4}1a0rbZ4_bpct$Ca@(LL;SoiL_y7a|hadnF z2P;%1t^o=_H1ogJ2721nf9HqdW%L+-8Pg`jm&{$M9Cboy&dlAP zw47p#?qywB>UXKh<|I!0jt*Kz|*}nb<|G*qfDi{=Clhgwzs?5~2 delta 996 zcmVSP4KZI}tzyKfw1q2AEvO17iClI4rtHV=(0D&;dN@Tla|8ZEx4 zK}OqCz+j5NSynRWKAqiRGlY00_uVQx5cIh-jKDa`FfZdy)-EQNdcl zlLbIgEf-!9i$DWv!VDk@zu&+_b$}RY)UKLetPla5!yo}jgRo0!Sh+pd zo}g1WR+Ly_A)o(YVIzzH6_b3g)&9Zc(UgaOYCrdy0A#l0^X=dN;Gw27oH~H4RAH#59PA~7`JB$#CJ4nPS ztKT!U(hTlRU3h1;0iyE2c(ZXHuteJ{3j@GiA4#cZ%;1n5;b!+OaXtR9{Cc+3@b%h$ Szx;pm;5e8}Fet#2Bm^h;^Rb%% diff --git a/samples/h264SampleFrames/frame-1258.h264 b/samples/h264SampleFrames/frame-1258.h264 index 15a809090610fe5588f4fa2b5e2b005552223fef..696102b18371dc778bbd95c1e541ae95d7b3e010 100644 GIT binary patch delta 1582 zcmV+}2GRMg2*3<~000012`~Tv0YRGJ8oUKhFiQyAYst+pB;cY10>Gz)`Hv3@iU$M@ zAK)nWH_bR{=2~C;A_5>+fCGcVU~$kz3@8F+f;*d+00Lsk-7!>#t}49%3<^8cY+u>i zJh2{ZydwFV#{e7vl~t2>!zI@8$4ZK@16hEF6MSkO>`>$AWxfTRXvn z(c|6^Ge^NuO9E5xy#x>(ujKF|RxD(}{Fc%EfB=9w;eY@@C@dMeX?@p&2z(4VM~-cC zhEgCdk!qwGfB-;f500<^XkX=yzz&W88aMsO4jeEBdePQE1pp7Hht32+=m3D}0E2r_ zjX(|~0kE=v04i_Z0RUm3M7gv4Z7$Xkx!?AU;fVJ~6;vTr`}L0$?@5 zcy5NwAZaWmk8)CoWUM^h$#06+jB zGiqRe1ttN1czzDeL-my)0zrm2Z}7JMK$qVaUET&N#8rN?I2tXS%%w;Ga1aC?;;ou| zz2Gp{K}@6!tQs6ks>Oi-r!oSAFq60fnS=ZQ2m=ECb{`@6l^1wILc9@p05gRCEF_49 zI{IuH%07E5Oi|j&Q6gXKJ^%qg0YI~9rchab2~-XUZe!pIfB=9i0U3hLX|wG3sC!xm z01aROAOk%c0cZyke*47$0DvJt06-|Szyk`PNDh|^cVgfGzyRY!bNN-)d?--xmg zGokG8^4TWde;%e3UWJn85JK9A zN3QX(dO(^00U@yfL{F?f011(dj)yRRVgJU9J{ST@I0tHUu*i)&9KRcrePA#UMXu?w zBNiJaJSpJBB(WdkYEE}ahJXIx00aTR3NkpE_oZ@#W}v6c`1fXY(UylyVr*44K7KZ=^S{{%h> zzzj6$&?bPW;R*WIoM6L?Z;9)FK{&|0X%7Licuzk9a>4*fHaZ7z4k__7L%wV{1(9J) z01vplIuQiF|A1_Dn>Ne@+w~UQQ*ST$5wt!R5D2vdfAk(803cC-06;E~eTaqt!Y%>c z0I5Nl;d8-}%OheOcyP~2yZ`6lid#bbW`F)KH1oo+Cc*(xK}aFV{5M2@8(-iCA(wdg z=fM3}2lri>#%w7kc%-|J#wR^icSp@Q+>F zj^9eE%!ARYt=a4G$KDevyOa6+JZs9m8={4d`o50yh2TaV?*eImst_Phf~3$l5g~y9 zzW(NGSRsY9T0u2rpZ?~5_u}AaHB0T%-JiaAIL*)df8N+0BqDy1Ei?7~gCGIRV%276 z!@x+gTf#VGc}zBct3aBGnz6s3ul|P@asdpCS1TROeXN0_nN|IQDwBl#5RIxQl%xHFz6PG6_Mocxd_AuJ4_sgDy6C#3iQ g3SI&QO=i3g>?XEfMKFq|5e#;6Fu&mW{F4R*Cv%m=5dZ)H delta 1047 zcmV+y1nB#~46O)%000012`~Tv0YRGJ8oULOe+2`vAW{?*fC3O0FA_e+RCqJ@gnv{3 z36Tt?VHJsb*rfOa0l-N!v)MP*@InR8jV-x^q!y6Aa)J;cF9|^b11KL|-+(4S0sN5D z0DzXT|5R+GdMo^%g*ELA**sr|7;;6!ZEX=Ayf>T+*00;pJEGv2s z$=Ehnuo?}35_g!KrXG)HsC}@#yubiJK?nfACpKQ_j1$oqgN88+BG4zvc2mSZZ~zDl z3B!<526SnjH1}RS`MKUJvPH+K{eSyEy`6-U@01P2PAyhbRBrTzK zO*PaKHP( z1BhwSfeq=?F+H!`E2B(yodGLmD}Dd~Kukd(AhKG~{0Yl{2mvJ6aisvJPs)7t%s2&+VMss(X?T1h zi9db;XIZw}0XKf4_bYEN_z&709}pc%AAkA}Kmb6a004kpAo~#v0fbxyYyv1Uye)ni zc_U%U-W<;7wh z7Hh#C1an_(DmDON{`&c8!W~1xz z$InGxZ*tHdZ-1)tuX|ikw>j*W2xJd_coTS`1C!{3sqz6&{LDQzAuf#p=ezzc2nMNr z^4y2-^TUGO>kt2JfVfFWllG11pZ~jm-~r3l_CsDE0!77b;T$5oRKsI@po$k=RJMjS z-mpLx3o2z{eM|X)5HxdlLX`mz{muXf0nO24H6C|Ff7)mJ=vaxr${su9WFkNK!S=`b zCbb!Ol$M76YJk}H_!FO!1BnADe}#>b3ggni0Fv3jK zvY&_O0|M`^dZqJRWK3YL+$KMssiDsX@U?Hig_ON!riK;0^+q4D z(lzit(=G?#z-}UXV*0av|LtJ#FICVnWRX+S{u0oTAq@6^mnXmhjgUlf*Jvq3yEu@a2Tkn z4$^o4_mFHaVJvf4|7vgm2m$T@0s}+=bOd7)F!!bLQByL;Pf7ANkZ=KQCi=cJ-=r;B zzyVQvLsDaZ{`U}XL-|wUCC1izxJ>K;Cr>HTzM%Mf9zZU z0szW@9M!;!RsWla!2%~Xk1S(Il_me+A$2-S)af~Xf?&D?(I9&t;0pu}3+f`E03kUT z01()RELCQ67<8+^01yiRDEM6)i7K=0lV+61Ktq6knV=%p>S$m4?I6Q)>kWB|OHqIABm)D@@NslJ zT?GC8!fXIG+yg9Om^>=G?F^yXlp1K2L_U>={_PV78bYAWc?f^-0)d=Dh*-7qkp!1z z4iEr{3@h7sP{FEGTebb*00;rT1P4#UR!WzDktN2xegFV~F96V`1tR??DU%eR5CSfC z0H+e*93x}>p#BdF5Ken}yh}s!zyXsXrYSp_Sgs$b0&R#G0U$55*amMQfidU`LXQ9h z8314jD{j~na8}kXnSMJ@mL#$$00;;hH-@|RjAV2)K2t^j}lteKw&wbOxz=1xEZ0uwcAF(e!7kimvM zxNXA)ka#fWu@MtQGahfaK&`qUAtEP#dO)?O8C83D00IC2!!7?%_{@lJQ?lbAaEGjQ znNQ8&00;z>umVk#bkQjC^a&p?215J_BB=8Dzas`+9;5_9K?k&M)RD6W9eWHAL!C1b z82|8!=l}u%DA)jymcUIR#y<8Nc;2bhr6}^iNK^m;0hkd}0kDl-j_D6I2jBpI*_f9* z2x|L;EA^rpc6{b{XNO_}TZRA@Y_?RqC%p^(!T1EE@Xmif0&~GI7(yX#0BG{QHsAr6 z+j=D041fj(4t^hQGd{2>B%aEud!TapBWsA{rN_)3KmoWKmIw?0F9I}zFc?-qKAB7F z14@Vx5cX|O1l~J$b&!M)n#bW0zv54 d_6+fY@NJ5C#$E+FP8sb6u^K`A@V=Ay1SgJHXx#t+ delta 1291 zcmV+m1@!u&3!e&q000012`~Tv0YRGp8oUKBL1Lu6N}p2Fo)^pFO@ag)1;YaX0Du69 zS5WkstW%)+uKVKNC6jHmzlzx-j8QgMhiB(UL_S{%MyHBgt|{r(!4g;P45S&87;q_WdB^)e!s0WT-FTOuU?!LU zD5Dkt4j9h}!a8L%IU4p~-vcwUI&zTYj%S*9oCQ~FrcVY(<~tu*T7Unc`2aYfL6v$H z!|efoWnwM>3^@x?DM=OM8hs!C2S5dfOwa&2K7buw{_z5|FcQd|uxGM)SrTvv!sB>; z=@bMQ;*0*k5H}^jN$LFHZ7`Yt=ie>~z-qlgAhC&*@ra!`b)|qu37dO(03aA-mQxjN z4h`0?-OC52i4fc?W#Q?SCP#oSKmiOF7O9Z}T*!v4pRC7-Pyi4lM1TN+SO6&qF+YBP zOhisau#MKu`~VDRPfZDCTK2Jq^x1>z4ktB=YT5s|W-#m0$-nj1Dd7NyLSR55Tf}uj z4-SCKpaLKSj-$YuBD&`XJ^l~=E#`YR+Yi730gS*VCc|uLNIW7o#jaog2m^osfEWWt z<%HzF0SXZS{Haz$sRAQRV+nKuL4t&TfBP0ZiQ9-;JA(jNAY?#OL0MFiqAhVFKnu~~ zoc?|U=Yn7`ghJc^$$GxuP5>E=x1vp;WdIjst8i-ELtR)Dl1=sMd;JG$E+d+d+)7|+ zzyLrGfJsT?z(5PYib0^c5K&nmpbH@m10OUrX8d?B>$Ddmmj%CBrWxnFDraPWWHHa1 z<8_)J0{8xSUIfzkC<8cvna_y~Sun|!T{A(z0T2YI??bc)>>U8M=mr<;6C6aQ3j`>$ zr-pip3}K|~c6CYbl!tsX~T z_x;J?p8{(H0BJD6;b?a6sLlU>f|7kZA3yoL76-kWOMBn_08!NT$v?}J@8mn(KKH2# zPya)+ltf*v(7eG=qQeOE{&#~&%7k%oWAJ=k0+nxm0Z3(WHW@pdLscBTd+=;Av&tZL z02u1qt9SjvZtvtk-~a7lPBK7}i$%_lX2zyZ}bq z<$V7@5C9Md0YdOKw#5QUw%T6h8^XW% zPYgu^yAvY~4R2!w0lEV}QqUmvB1_bXKQw*f!n**>z+PwPwEzWx0Kfpi&coM8KDRjF zJ`X}55Gs&*{PSuzF8}}ICIA8fyDR{J0|L56grrHxz)srI)DLb%fLLPc!~ z&6HDq=l~AcfD8~S))hny-X_2RKqFlMa0HBJAITiqq8p(|jw0MGpr98(#0H_C01BLd z6a!r-Lq7!u8RMA+i4agjhYfwf1HR~> zrDUfB+x_1_-h!P*wbiabMG8z#o|)0hQ1o;$j`!gEX8&XQ<;Af(ta_ zKl~p603Z+q5|;F6BX7ucDu}m^E3fk<1%cUNchm5A1raz9J4y8`1WLj90ivAYj{~pt zpk7a$ungz`0sWQSg87qyQ$7fDl20mM9>g@ZcAd!ukCC3D8gm5y6fLc9j4&zMJq3;@P;Mpag_HkU=p?Peqm`0mTiFmdVWZX5CAR$x zC;$KfK>%(h$Of+hY!v~7Kv)1m_3Q8Ujtb8ZWOVvX=I7`5NelVWO#Hx}dNfQ2K^yaN z+~9!+f+hr_2r7Wrv=Tg$22qkj#_4vH`2W8;k$|0YLy2LTrF)@CM^tVDoqY literal 908 zcmV;719SWU0003AFaQ7nL7N~Nyag{oVcQ$65^d4iD1a_F>M z#7(JTu<#kd0N4OHm13ZbyY=K0G=VG| zD1YDu2T)Hg2>@UWcj}OV1Hb?f2Nb>l0RRHYi7Nc1Sbiq4Em#5p8RrH#*V9|~!!+K1g>#{JO_yIEBT%n>k0109r{`v-f z0Dv$88v)F>E8$QuW)E9{6}&_Q01KmR3tGbfQx2J0qTS!Xo?qAyFt|{Beal)B8Ylpa zLWvrW2sBJ<{`f0(zyXD51mDTC;s7n+C^`y`0xCJR01gfVIxfr@7Jt_IXAJnNd;X)I zEnkE|06rGsqoh#|C>V0-`5pjl8Tt%V;OvZ@u$Y_#&?w3*#eaps0EXa~heY+RVZdS@ zfw$Ub2o{2QT^Xea!|gG8MdJTxSy21}2q4N!OBiXgMV%4D04@L(WHP{-qTyCjG!b2P|NQSniFc_!=7gL)vmJ(snzKokYF@aSm z0003&0B$D82Co8a6#;}mSO76y-+lkkH)!$cTNH6aX2*f&AP-r0`73coW*xZ2j4TFo| i{rmyAzyJUNK>#_4vH`2W8;k$|0YLy2LTrF)@CM_A6?q~6 diff --git a/samples/h264SampleFrames/frame-1261.h264 b/samples/h264SampleFrames/frame-1261.h264 index 19a653871165c0b8cc056352ffda584848955353..1fef5bfa7acd6b9399e932438308324426e57f54 100644 GIT binary patch literal 1474 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 diff --git a/samples/h264SampleFrames/frame-1262.h264 b/samples/h264SampleFrames/frame-1262.h264 index 3f9643fcf1ed288dec6d142f9856d4bd72bf5709..30b195e24cf16b54bc114c29976671942efeb678 100644 GIT binary patch literal 983 zcmV;|11S6e0003AFaQ7nL7QM2yahKwV%OC4ol8pi7)nr+wRx`u&~p46gka1Q0-#_p z+yD>&Fc79Sv{*e+ft99K_D{iyRpkJqSFSR{rrFT|A^-)j6e!(l=1y?K|F{4k%wb7y z5JDbnTtoN>05=*3p_`-=d(fJ0E5HB{0CWmn+8FpFf>>AB1^@yBmOqkQ12eulj-g3|b6)n^*{4 zNRss;L>KWON7&I=09+E4j8ce%>rkL5XN5PTZxl}+um9ixiGTorFaf~6eI$+S3P3kn zRnPzg0>Bsw@4s-Hp-dMFn#)iR^929_1r(Xs05$jS0JDY+A0k*{5g|6Z|BjigLC6F* zI_M0b2Mz7vY?p1}te)_UA%;0Zoh3U~mJI3;+)FnF|5xu5tj^k4srdwVu! z!y2am7nsChS}8`7P~D&e2*3zB&ji;rsF^sI3Vh+x_?Q4v0ZpJVEHCsM9FySPKmb6z z00a>7fB-<02jkuk8Vmpg13&=$+yODazWxJZiVr#wV!i-{4a}@y1_Umquc;|Inw8># zz(}AD0jq(*p~7@>_I5ZeBfM|}13aey7&&ZOg^dbNoj5SV5nq2dfqt*e1aE*b5QxYl z4-Z2eI#m%g11h>46B_ka*E;{`cI4?Iz< zX)SnS+wbg3;Q)id&85IZl)RXfTo<9>9FxMi_!FR@3?>L*0F!7)rGAEDm9auvg2Z6A zrry>tNn*qd?1%$e2L9^MDpLSqZXQKfr!&@BcGL&}X(*fl>$6RH2>Rg1?sYvpBTxVU z0YLz6CfEkA0%RBglyG7I#?|&f*|tGNwN!0D2Wv6%hkgO#E(8z{gOnPM`LcsFP5=Yw z0Kig8CK>z~0jzjnA>)7NTM_}$@C!s(ZGdX< F2IIm)kh6FmB6OAjvD8XeF8tF@M0)593Be6a8O`?0Bvo_O!S`t2XII0 zJX!WFyuhU|1Ae0r@&Mnw@F$nxNJDrKi2wpH z46B8M;Sp+o6#xIs2H*-mKm6Y!ANC(qfF>ggES4A`_{VqX)ikgGF#rk~6Jm?)Dqk1{ z!U60g25|u~o(2X59JF*Ef)GK0Q(Sidd=O0IG!obW$e&ed1UF z0D!H(+q4q$R5^JK%*{bc1s@l=hnV{>?~@97 z8~_3XL7XdPPk;;LghWCFAOu6ap$UEW`mu%|eXk5;C`(}#Qwjbfv^Ks;@CF!$jqHsS zDh(c?E)U9HLIQ=6zzJ^+g@=IjJO~mz1PW-PjVg5eLAQw)oEiAA#GvxyQo~_s0f_-7 z+#mpd5F{i?uq4P3nTk8}frhIGJQYJvXGUR=q#3vY4IUZKz?}sEVK74g1euVNmHH7K z+Yv2jEk+A^r~1YTELnzjB!|f1zqv9&O6N5U9%j9E_}hDJK!664p8z`VjWpQ>@23w9 z3C{@B0003&0B$DO2Co8S7y*=UVgX(Dh$8lXK}D+LdH5_2)*!W^-+*|7axxHjIH)xp z_E1*$rvL%`0AML46Ab)6Gg);+#RVK$E{ucCx1UPms$O2|4 z?^Mu&{r3aZXt`w}2^4?(2Y?bwC6!+jA_D)wird&Mhze=cQrjI>SLWq7l-p}(gAY72 zpMf)zDd0cPegb5$DbN1(5E6H(P!xR`V!Buw3cY`iFa{nq5!(U+|AP$ho_+wdV3WNA E8jSFKOaK4? diff --git a/samples/h264SampleFrames/frame-1263.h264 b/samples/h264SampleFrames/frame-1263.h264 index c33a02b83ed0fa938a48bcf1eec0a1857e7ce8fb..d2f28f3c919b963b4184583a48dd294a2faeb67c 100644 GIT binary patch literal 1193 zcmV;a1XlY10003AFaQ7nL7RXYyahKwV^`FaolQz#`UrrC72p8lgg_W9f0%d`A~dY5 zZ~!J$%%fszrEfqOD2-85Yt*sqGKp^q?8#z)I0kxs0wy0ub5o8$;T_Ui`&oP!5JLh; zCkG&eWC%qkF(OUtcwyj?D-I{`Cr(o}D&x?E3`cTceaVq`3&m;Qm;f0_01PZERFdzG zPoeJ&b`~L2Nk7I7v`m9qfB--+7MWlMi|mPb1;n5>Z~KsNqXF8aac~X*Wh`{y!_Wi@ zkSLANW?&ff2n`?{x9$M}j{s=$#x~OW^U%N$f_MJ_CBOod0=9!H2Frrj#R&BD2qO=( z0x(~SI>H-zmVpPU(q5-Y`i`yO;1C3MU;rQ%#Q*^SKxkmjVgu5LJP3yY0@l*4Y{FTsvrF)P05=nH z;#nb)cNd#S(vU$#aQsgIa+ zEgT;Vg9YG0ppcO%83`#BkNg-Ax|Y7Dr0QB%i3H%D0DwdA0af3o6T;Oq5L0G=z~&A# zbzGhi?$55j|HAs%9kRL&9867i%s)<3l=s2@z5m~dfB=9H6f~H3XGGkUqfwR& zI06_vFQ3oc0003&0B$DW2Co8S8UdtOVgzl&gZuz<{Dn?%&-d|SP00}=BlpZGQxPcc zDZ;~n=v^TBehBDLATS^o1Ch{u6F?6AsXKcf3ypVvefvuVne0VN(PDY=!2H#<#r92G#-W*Yx z2~xcH$TznL_pozl0Q!M0jIfV@1L;4aMrfb^u&pF8R={EKEz#Hmz{lRe42u4)?`R+X zqeo#~V%(8TgRGWPC`|!@;H6StOvJvvcvn9FS}*_r0YLyciMRo)z#EJJ00BV&6+&(R HYVZc*hkFCN delta 1032 zcmV+j1o!)?362PV000012`~Tv0YRI98oUKBL1Lu6N}p3xyhs;?U;u#z7a5mQFE~G@ z&uZ!T0}c-pYd-1eyXjUP9)187YZoEo9h{=TG^)Tu?4sTR00aTssjvcokN4u#5(}WY zFPsViFkuXs5DfAN072Fa>m21p1mW)dZcG3K14mH4f;0<%d8oG20A$<%0DvF|cr`vv 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 literal 1119 zcmV-l1fcr>0003AFaQ7nL7TuDyaiVAV^d$Tx8U-yP5k4P6>97ms#{xDR z<0Kd?34n)%xbS&{V6%WE2do+f3-AsNfX4$AzrjBO7_R^X0sx_cxuls?5)wpy=vRZm zfMI~rN(xF?hGKensEP+}01q*l1dD{pdD=|(fP2$0MWpn z*Xv^di~6?cYmO~1&wte^vDWVdVSok82@E@1sDq&~0Tba23WJT%5ZJ+Ngaxm(z6GF1 z0zrc)K+gaHg9Z4VFg6a&C2^CcrXo78cZwm^fH~#Lf!VA@w_A}x?`}jMFDM=&@-{(vT zrT^?!y2wP#9N$3U24*KVvb;#J%I5d)=hP3oLHVl;{NQpDChwvS-S3`VatR7lWdJ3N z!!OK)zMTfYsSHR2duluY!gd$A?9`CfC&1FZREFQtNc;Cc{l9I$0XaB41Bmz8! za07E{*NZM8&ymqfxXpmGfB=93fcU^WRz@%*_5SPcy#$}Xga2$_004wr-dj+&6-Rde l{tY8f3cwMh0003&06B@g0jt0pi~s-uK>!s(ZvblW2IGz)*WmyF diff --git a/samples/h264SampleFrames/frame-1266.h264 b/samples/h264SampleFrames/frame-1266.h264 index fca759a7749af65708ff759cd6edcf6cd2ae6cfb..13d2dc76cb4f43d6179b1a5787890a54e74ce015 100644 GIT binary patch literal 1771 zcmV1B%9%NK^EUcmM$am;iGGVk1`bJ%13{{lEYq1s{j5(50M)sis0g@BPMM za`!L+ghr(eL;re#13GsHB*&vILxUAOBs)zI#MV*LOJ!s*1_5QKWW;<<(Re=;r?>L` zghK^61PuHF1bTyd{0&r#gks142fzT?8zgN+>%ay8r6g0iDWj$IryH_;&lm6G;en+_ zi`M?kVxQLtp6Z~y^l0HeA@Dm)DBh9RPS(oT*j2*aO%K zgciCzN(n-l4*&oV0|3ZYYr<8TUEn1KFonPf z5CW{Iy4B@{I2M9GzycHm*uW!-z*9~D7NcM|s?#cP&;Ipc%NPIz0RRc4Z!({1K|+85 zfE!rggS`C!P-*}f8EXfK*&P}pOE4M5YQ`Et{EP!5b5B4T{EPs2A$S4`w*c|l4w7#y z#DEM+;|G8s^a;G7r;d_iB~~lI00;qu7{~@PH7V;c7x0iJQvF~eAOHvs)}}x-cmM(doGU>{qw}!vHKTKPTr>m zoDwqY`?0AiRe%4pAvsW0a#)uG4@^oPlf^Y#FrV+dBQ}%%UpR zb4EybDm0N~yF4QOd$1nzfP#FC7H62Cw4@?j8IL`O*MP0GG!sz)zQ9-fZqNgcpaQAj z0l*Lgq|mzt#WEpY-^*aEptYkFrFVK?k6=)eIA_K)lyvzkzkAxWhu{DR0{|TZ!Jl%* z*ha@r2SSJ``Ui{-asfs3L?J|uAk6>)C6$1o7iKU2`_J$T?1%sa0NDT>AYhF-6NA<4 zIp#qL*MunU03hlU2^9!_L=xt5eQNgr0K+ALjE}RPg!TXrIswD~!H2z~Es_Ka7?zc>l}*1QCD$L5t@= z06|az>wgpg0sxz200s;iB#E(8fPA0@5g-f#!L-nLH(SAhG2xj6{4pQ_b4Qc`AxWsO z4aie9Lzxj0z~a685yUnvLWDg<9wnr|{lM@A6<8D%l00;vtkvKE2nPUzVz&4sS9&D; znnZWt0kewJ1cWKaXcowofM5XNY5;*y(Gc&xZHC5!U)BJ{-~%acOeC&S8}9&A5ndOQ zsL>O3<9rX;02oxQ;6ZxB_6Sm$Y&!(X0q*_=r6#YuU;uQ$55Px>>6HUVm=<_)_?35J zD4T)4;3t94@K=dm2$5&N0DKI9cdbG=$o+kyCJlTk@6A~DD4vDW8i%knBbT>#rX8w( z`qtQp$P!54?RhaNN@jk2298#}6pH`!fD{^606@1XJ0jm5Vt_rEb}HJ3m1qvoWt=7m z5o;&-y|6p{-}yWZ=O81!fT&5Ff}pSZ`~WbvHYYXq5An1g`mzm-djtK#TZRA@GC$Op zf-KfI_kVyP*Z=?lK>%(h_y(^5)PFyp&%m1kFdaf6NCb~|AN=S52fnuS3prET0&hcQ zC1F3+MZd@byXyn}|8OA1Y?VA%i~st7wk4kwQyu?)76A2Fw?J)4`zZ+#YssKA<{pwd zON~!olmG}&K>$(eEXrTraUl&}9*Y2ewx&)G9GETWJw-nv)fFR0= zq8BaaQ5YSKH3aMm!vc2u=Y?QRFUp!2AS@6I7r=R-5WV%?mz4o<1Ve*K$Ty$`LB12g zXQK%3uf7LVf{L!ikNf-Qh5Vrqpd7;AngS1Kb+bRflGcKFqbT6xpk{|-uCIzfB)9}H zI7-7mU~GX8B{p3R9_QbtUY*bXTda!?h^lX@{=)&e;a>u35V8b-5E|O&;5n9H*owek zDQP!fe?tYHD3*eBQ8LeJ#fd2f6XqxWKiHB+hIY7IB}#D@z(f3s5ow*uWF|-FV443> z5uJmF7Nlsk_j7=mlyit>luznk>Z!f!h_obaVHk{!s(Z-8p>2IKo~{89h_ delta 1456 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 diff --git a/samples/h264SampleFrames/frame-1268.h264 b/samples/h264SampleFrames/frame-1268.h264 index 0d8edf7f4b15aba1d9386c1201f489fc0fa90b22..d00201559234cf2aa4762ca960ccdd12a7c1182c 100644 GIT binary patch delta 1332 zcmV-41OyxF9)JuSXDG;za;|Mh_^j|n^Cyk~a0MYhfQiSrVzSyvfkOVOyrY?X7Z5`N ziw7W-WCDvR%omJ~o#BGPqS^~B|3U&aPt7{?A%ThRjs{47&yPHAJy`qz0Du|c002M` zBs*l%_m0I8ycl;HF_g>`LBT(irt?q$2nhjkmH-w%(q`Ze3&1gN`;a(rfIF0qt^n`@ z$)Qt&4?qMCkQ84jJ5UF|1K|t-<9_f61{MsHGINb&*}^F^1CVe4Qvd-0us{m>POuA{ z0$7HLb#w%O5rXQ$P8;IH+*4pDya)vqv48-8i4Fh)0l;V^e?d^KNzVZYu!Ajem%4N$ zr59iTBDMYizyU=GRN`>$)+P6|5aHWc03a}hK)&Hk^~bj8nyv#CCt2w>!wO#UA^%K( z0dRm(ekRFb!S4eJv@vu66vBeZMJSMNAka1fFiZ%4Lp}fq05kk9WbiXe&fRS|7SKke_|Ns9B!f*n$l7e&q-qqj$2mmkuP-^Xy8XP0zhsfvq=YWENB?hU= zI?Krhb;y>y`y#*z?*Ivg4D<%I94YZ&0T2KL1H1qZs{yD+6y1OaU%UV?0OD*jxr`BM z;NgCMxf)k8w8sDe0=Kb+fB=D503&!M|AP;J01y=bAU4_^Ab0ZhBHPa{-tYhn3=N4% zeIqUgLhK~7F-OddGCB(20)R(aE(n?8)P|FXyRR?X6Oq(K;t4}kfcRoK6#zhiV9`-Y zF;P9g{1_99{1f=70sw-b04lpeq1>-$F?G0qa0Ua2C?waK+d2N^mqBpAAaEr@q!cs2 zLQ~Tt-|heaKm-6#qY()u+SK8ZbWiS1hW* zFk0d_ScqY^_J9CD2mk~aqyTMvALugD0AC9s2a!^$U-%gR@4{dJAQT4#nFf3!F8tL> z&9Gs>5bTq%0u+DV01sv@Dz4Jm`yN4Kz93yxQ@;@UCmECg@BrjhQGhy_M+LF4 z37-AZXm)5<3F(7iE7al+d~kassM(EO-tSrANP%m=tGj>g006-@gt1$zE!@H*m!gZ! zCkCzFR)P|a&Om^w1M+N{J$+sMwrRxh8^m@qEI9)|dhk)NP6Rs%F8X3;aB1&>JHbi5 z9t#x5pFAr9X?{DN!T~_`zzjx!z@2IgGh78nuU>;7)0&I}6SU@AS&x2?HGzu%x5GHl zoqWsD8Q*_5&kE)7CNOM3OyL26PsZy6KC=Py3^;)Qzl4n2LPrF`f=c`x0wd_J05EUu zzyv(8_GLd(VU0xbJT<%F->1WYISCVxqd#ORhsuD-Z%OVdfRI18gQVv4M7;|iS>}i* zKv4o%1PW2_$Z-GyfdCCa7p*`HbZnDf;22~$$>KZ}!jaZ(2-Ag-N+#a*Uw{9e#E4>i qr;c*@G2qHBj6m=TGynhrK>#_4q5-SG8;k$|0YLy2LTG?$@CM^}qb&IV literal 1154 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 delta 1234 zcmV;@1TFj23fc*O000012`~Tv0YRET8oUL8zlZ!jXaF`C24&G8c@bhu8a<`G>O)m}1PmAkdS4d(}y{00?dZ46P+`l&Y+U zM8v$)0097eQUCye015&ou#pe4e|03Q^7|4a0Ve?#G5`sHCpc>d-VGC(HoWBP*Ufi) zV*p_fz8ND+nTal76#|!m`~Vn)J`bIl!rd&J*8mn~04vl3j|a=&2$RoOyugW0Q4Dr( ztb}g|!T3#ov3G()q@+W!WBc5G6AfCq@g?TSTnISPLO%m&eUveQCq zeU;YaU<`}CBFhs8(j|GY7zVhEEqeGePS9sCMoe&n%XtD1_JN1wXE7agvc%Znfi%B@ zALjOE+nW(S00|AqW^rHYDNlO5GXQYJ{RucyD@j1By<-6Z3TALRDzzHpFZXDC>~TP{ zGWL#tjP&jUD11IJnhqGQ7m7dopcn=VPtxwy3Src5-~9px1`t`(4kiXkPstiG|8T%S z0ZZLr20YGS$W;4R-~Z0uHUI(uKpBM`3$x?+G3q}9*T2pG&)|!w>@y0%k2Gt_o9@1!NE2 zF!W=90D;mf{{RP#(tKOj<{~E|*mqkdPXGagB2hFgxoHh!1a#Sh?gbZ`#dYxi+#8e? zetCAEZet!01Q86uz;xfp?2HZsz$WMbMgT}f2^Et*`(#P)@PF|)ndUWB;rIX`40Zv3 z@ewm`TA-+?_a3=`03Z?o0s$ZbLbAdB0R;?zGdi|W?o62bIKy55Ob|F#90;{<*v;^z z%Y*TO0Tlty2WMJZnAC!1zzMnl00BV&ZYGchuK>iK&%mC*um_PSSW5s5-6zb&l~vHO z>BM#Z7?FtuvV;L{96SeT=rAtECte4C063JP6R(dDeT;R-MStD~2hpF!u{-~|c=!`w zPy?u-qyP&w%R9vU@By>s7|?M=7mK1bZ1(WPh+Um9cg_q7U)buvAkW{wIfRSBBN-DI z!?cZlgK!k)CC_7`M2{8V#0xtx!rR|{@LtavPH`Ofb>R1N*trBvgtgYM;7+iAwJLjv z1zS!B7BFLHgDha9Rrs(CJP2iRB?yElfEoh?{D69D7)*litndMBEVfvcVf)?y8N0rgzI#!Or$@>F z03+7b*@N)vR~laKo)y5HUmhk&>VyR#$Wbt2lY4|GgAolzU*L_&fj7Rx_wQoT0eL&^ wUHkzJ2c+0n!*6^YkSTBf|2AT>f{}-P8V*R&{Y0%yLs~133ycg0ypuWw8o`niOaK4? diff --git a/samples/h264SampleFrames/frame-1270.h264 b/samples/h264SampleFrames/frame-1270.h264 index 5cbc35967839b24cf632e76149b1d78eaeba64a5..04db1be7ff31acf298cad79d75c12990fe76ba47 100644 GIT binary patch delta 1247 zcmV<51R(p92<8cY000012`~Tv0YREz8oULQ#DXzFP5>FU-zm7jyZ`|J&00aRQ5TFJKEarT+kN<{>02ZrYI1Lu<8gnss zBLK+U)6@rlzasz|AG)w|#sCl|k-FqQ@B#}!o5~t^=_ayOLcOp6$qG9*QO*0H01w@O z0tOAgg@IGIh}ZxK2yT!AfF2UwG)jo<$WB%{n4>MiS_%Pl3_xlb@Bl6l-SB2`FH{3W*|KSO>5G z-`4;>039#`pa}6@GO%d-0*k$$ja^H8ACOf4`{4it(7*;5a9U+fmL9+b zAp^h=?2|468h-@SWFI6dke~nJ-~hRR%o?Qkm{B*}WJD7fKUmhtyfNBt1`^#=i5&aFebpT2k}F=04t?z*#wUJ ze<_Ik(aq$@00lq*Knh&|7OhL;kDMirfCsWYR9I&-W`As4KQL}9{KFvsKkIV{{1-?; z=`LT#*O&62$;M3ht%}H8@3;VMOV&6|^)L!A|9WkPRiG#V{K5p24ADO8x9{`v69JV7 zA!3jw|Nh}(*%p^pzsq^b||nI&p-ii112B9 zZ`MhWBY)Jpn7wx2(9nSmuS~#$!?pPgzKEcD2ENPM$-x!={z%v#?}2oVFkQ&_@Y%W6 z0Urz-A{7byQXag{M^SxQh+@D4`CJ;1M7N&r02p0gtYFDPD$W*AbN>FQ(ISM9W0Qku z*LI;rW}kp@Um?`|FmappG1^m{u5#-45s}S22vD>s8U75gTi{OOKa<|H?)&eoQb2k* z6YvEvduQ_c{vr-c&jKJOh2H|ayrVy>{bAoS4}hqE0003&06B@K0jt0pi~s-uK>!s( JX@F|*2IJ@oB{Tp4 delta 1012 zcmVIGFSlsM>f z0tBepP;^H-vx_Piz%yV_SxpeTAlP;L!2k$gASvhg8X_R{v^~lIFk8vNvOItQCP;sn zHjqFN0e}R5J^_xqOzDssJp;Gk0~dtC0J@XF61}#7PY$WFuoKPTN%~G4fdz+QvBGL- z@&VU;?w{Z80hmvtiR~lU_WpeSpaK7!Qha^Z{Xdx8Lpq01m;0*k2Xd0KGC1cLJ1sFN%k(AkCg|9{_;|CPOcH zGm#83mwn(fj01!vmaAt!d%ph!9)JV9fB+y6KqX7T!03Sw4}uVZ3u?(clMZnuyeCKk zZh({j0vdk<^4SMkI+4Hs%me^624K}DyrK!d=Mf2rA0%sJUKZ^)0|~6kV#9Pz{bCMC zzr{#0Py!%0Ho#l8g$9>TU_$MVTMDQ*=NZdXyq*z(HU)q`iXFfJ^qAENom0pY&r)O$ zntzdy011EqfD}t00@J1O$IcSOzysMlsS_E@*}H!i2DV__WBsNZ|nu+)}XJ7f?wVT;~EmW?1q>mUsVTynxnBrfk<=!6#yb(r~_V^K@q9x zKjwcgUAN`&4~tNN1Mb8HXPBiD-a4o_G5sCRy2ZW^Ijb=+A&pZ}^fNTDPPc$^zb?$ju()9@TF zhf>hNhIH3sw5K^-T^=7l9Vr1h6~`U2Wl;*Xg_BrCmiRMgR^tL;-@w`-h=YBU;+mcnk`H8z2gtWm3%t zS{U{s8P~2WA+Lat01yckLJkZwvlNz!?72VMFv5wdZs+lTuP~GCKmZ^Z3rw&BMfgO# z0^&d{@B79HT*gpt6fX=U4l@6*+u63q$T(4lYLUg*-r4Q|LFmwhSx@=|vQkRR{|AdP zN+!00|d>q8;@w>ig8R2t7`c z^*T&n{1^k_N7!HhbvyuIL`d%`aEi$1-~iwlGp%pwz8z=XYyS9U02#fUBoSzeY0A4t zG9j&hgh|5c2IkO6_&F4`O%q7}?cf3f1nitP#^UL-!feujAb<{ypfKnO*F-Od%Q|g% z0LmugM7CP!t`r%@Dh2|83IK3PAN8Y5j4WevAO7KZPIH=&Q^oCeIA9V$2FAoes1GZC zeZU!10YF(8V?^0>Fj=?v05Ac~4f_N&rU6HP%pL#;d(A?g7Jy(4{ty8{DS0!(@e9VH zcwW4&9smG<2!ShiUNASB#n7b^{0`qTWH^eBRiF8qUo;O!{sN!@)Dd_jrWGch9~ckC z00M9TXO;lxc+f8R)h9vt(*OYgSv&&(1p+uj+cM8~1IxG&2n5i@z@bli11bQA)a%55 zeK-|5bO?NVfB?i7enkSdXO@ypez$ou6-QSqs`Q_$-u4FT$_fGj&gaxxx1OqkD1Ar0|)-*~8^puLL;gAYWA2t`t`!JME0zx%;}j{q&YfN)4b zWJt^3M<1_Y_O<^6&;mFP|3KhCc^o~76R>k)00IX903f0Bpa39n0na=HPyiNx+W-Uz z5_tmR27&T`D4GEPutgLd3Dj_7vS~lEbMm^r7GTeQi^E00Dr1Q@X=gm0WH2?0xL@5L$FzZ`oKeB(@-(yBJwq;I#^MDjRR0bZzr*E^yRG>MK z`=Dv&xEWg89}wiexgv7T@3J$d8@`vRg&)HsLldME}uM&X~E|5@VLvZ4u!-Vfyl z;Vr`e3pVytydq0ee|Pu-9e@A;0YLz6CZGnd07VD$@FzSAKzT4qX#fg$bjkm}VYi#e zLLJ)Fv1B=r5}0+37{*8ptvz;T?06yEU`Lo10P<0IE>axSg&n7VeDSa*z_15V!Ds-l zDer)XJ@tmNrL?O%=hhM=NeZL2=l?;8hXDO$q&x3G0=Ii6hUWJ1U=%0N}igK%}+V0Oo+;^nN5v;~yCed+Sn(|EvBc5ey3ulYj*p DY5Ex^ delta 1428 zcmV;F1#9}44w?&p000012`~Tv0YRF88oUL7PXGiqW_MXG-h3Rh~gNWw)$ zQnYQj?U&GhW)>buKxc*!3Uk^B8R?_*~;i$ma7y-Bx0no?_780o18+@{Vfsd5`uyKGD25p0}HL-s100afW z*bow;wp`An=CjiwrnZ0pKokQ2{Z|0XqT-SO0RRC2fEE%CA|NTrN}j`Oc|aCCh{$^@ zbwy6T02t;RK+w%Ay(J49no9n-F+eIZgH+D|7x+IR5-;EYc#776LJ8wWo1pC!kVYIs z1}(dP-{Gh@WaUi)Bn0@xRhzE^V}KXAJS(mg*pErzAb_JI3b1Yz_&@+43={bCD=Y$U z6n+2;2*cbISQZ}I{KV>n7yt!;5Exl9fRJWn7K2HDEqc=q4#CMw*JJ6kzhDors!+Z$(?!{T z>Tp2DQAL*Hg_2F%?*ITmBrdQjI~0pfo%l<292JKsu4Jr# zu@3o%AOH{p9EuLnziciZB2W6*9m903=(A*Zk-26Cefdqaec@vO z1&l#vjwE4Ij*Htl5Oq}UG`YkEDx&M)`t(6p2b0t&zrzwD+h6sJm{7W;IELS5DX3I!v$?uJVu{3NH73ldad=j00;mC0tzRC zGJuH2tQ1Y1pa2L04tVrtuu^PgLcELb-Y^&d2nG~JsAxNXhB?4^1Oh$0UzyG#8ne~m zhC`J)|J2k7JxG%EB2C2}HBSP6%m4TW(s_W=D9`}2N&_hH68N#Egr+1P009`0N>(#v zE3-d<0Kh(i5l&QVinKt$O<#hb8UVRnEFf&u2XKRs00;(v0D$lgzZDOqwQPjJK~+Nl zJODTz2j+o)0-+{eU<-h8gGc90CJc(i@oaB0OvK+P_c;F`8NdO-spc5iiZsPsec*;5 zQ%QJ{g$W9DpEfh;wk z=16Q`iGd_vf2=y-03a!S+yx!5{rCLdQ2M_&QV#%OGZBzR2`+{>BA>uv%MAq5lOsl8 z53?J8AhDQ7Q5~x5R@N;Q! z5hX7sB_84a2Y?~i0003&0B$Cz2Co24=kxja6JTfo0%4p0_+&;fIfBDE`G3WT79d!F z2%6J7wp28-N;O_JR{Nla(bW+rs-Ipgpcd(W%WaRF^Pr3xq#ysBg@Im2(YSsRumvMc zCbpXJ=Y(KQ*ubX%W8You02U>;X=94x&by>hA|f-?jJ}rI+t)$C(%mPHI`9c1Y$C=ydq!30l$d(tt9$Pp^;#w3o94JD*}U-|NW}Kil{K s0EUZkG!NMzaCj5=fqn%4>^ncN(#xlloP>sFf2$U`_|HImOq03;8h}ZvG5`Po delta 970 zcmV;*12z2A2h<0D000012`~Tv0YRFe8oULQ;7JGsh-L&&WALZ*13hbk_XLZ8;GhG5 z1g;KSV~jjkJlYS-;KWd9I6M`C;GoC=Hb!QMlNz!w0D$5TGn(@T$!S6)f7}2g@F}(A z0t^c5*43Z>;5u*s5L_8401bl?Ta|i!HC#Nl&?+9Km=S|5y%c0 z7&Rlo@ncl{NS?2K2;ZU|(62Vh_U zh}tXzWf0YWj{pDhfEhpmK|NJkpAi=6hquTA7(#@$x=j)ZmnYZa_RzopKobA}fCv~q zSWAC8Ul;|#0qi6S#0AE90{|cl9-_XM}uRq0DuAA z6i^HBq%H5>7N8&?YZf`upz%cPc<_!-!XVNzuQotEB(lqjE;m-)bo3VjT z0zKOEm;mrAW~y-m^VQuXg%J?XP;cpdwX&asg+sqZ?d<-P00L&PV^!4JBS^{Z@9!`I zVj^b~3WwvupLP%T;1<%Z8ZYL0emgbH|CSO!dt%>JU;mmj)2{H4Moa&H zL3hz#_ROjTG#szV;amx<3;=OQ9u$;uEa^Ae00cY$`!3g`ZhCxqG z169iYA@~1%;PBR#Z#e(D?Yvl?0m0Nt6p5?vzNQ^?A5Env3$W5I!Jpf_EYD$}4ri3cy^&TPl62|~g3iNseOgM}gsI4eqp6M-px^2f( zc?!`J{sRJ_g~$S{8C0V|)`~Kt{D8sc#;_Y{A_x*lnvGrab03h^eLae9#0$C{~ zW&gQA0e}?l;TjX31cVs=#h9fO13~4=&R;)YYk=jXLIL7fr}wF75PF>@>U4;BmMdle z0s(AL01yO!28ImgAU!B^z>H83Eo>^*%Z(-TkN^<={{X-TI2C~@LUve|+DZbJ?BD=_ zh(sQ~AuSZf*EUnZl%cG&mv9jE?-wdS7{H=>kJTjjcrmVoC*Z0hz@_yG*s$j^8jCQK zxB{7n@BsmW_D&mXv2@wtHfclf0l1rw64`5_s7Pmj7^TASoOP;D(?#tt3IHep!6bjy zjWRH?jmUrdz*GP_f-eLV!lcvFqZr|UNdOxg5eA?tpp*h+#AHOIHZZ`2)V1|J zCsNXw8H^DV>+l9bUj&2#BH%2cBMlsbt^$iV1pom6@F7Bw;G5bKdD+CK{0zKI7yvRR zuofA0-71kg^@9W}H1Lwc=`ie}&kP}6V^CRt6L#W_|NB4yFdXi%)+JV%kBfEy00a?y zFq>;ld;fp$&X-^2Ku~M9xp(h=wyC@ygaa#q1!(z+ImE+z6Y>WRFs)KLy2$OG08F8Q zT*L{7bE}Ln5kAiXUj)SP6$pzTvip|F=1kkb01yu_5TGm01j*b2bwwYVFv2?7Cj zwgRC*`|=2n^a`B!z4AUjOax6e7{6|gp~wJ|%@_9(e%u+f0qdR-fi?yJJBkQo6I4hx zD8E1f7dv_s>mfPY1i`L!05KvVz)@25JJKRVwRj70X`G3F@BrY?zUpP@c@Lb)Vg#^^ z;*z93Ki(Su?YCGdkWdT9qn)O&|NVg!u02{VZHMjy0O7EazZUE0C72ih_9v>_7T}cT z#vNn41=*RUFeHos91s7&vw#-B03Z$lx~~FmaYP7pk?3ipEQFbuJoe`RT_)1VBe+U8 z_YKrM=A{vTEnOp8Ah;|^rnXI=$F43AMP}!y`~ORSk{&1j&gV=4(32n<`2Y+U*|!i8 zzy)70nCD{`cbf&xfYfJ1kUvH&;CO0DVSIoO(xLi{R{!{@mj>l2U&iKka=Y!LrvLbF mIub8hWX%muQimn~-x1WUEc4jW@h|`Y0YLyciL3#W-2)nL=^Ls5 delta 956 zcmV;t14I1z3HJwo000012`~Tv0YRF;8oUKBL4u^cN|6r|1>sl#AVCkA3qmb0GnUP0 z+rTiOljrWK9Pz4{1Ps3b3cC`qV-=jDz%;c1i?R!N2mnAj^)>*2SG#Xs83uuj)JID=;KT?zyMrRfP3R;ayH;nK8Fc!ctBGcu)!Hj%g_*m^M8No9ki<+_6a)leDN&vhWd<6yw4?1@m$L7qL-2*j zC#05JyjYJ>od4DRIW#mVpO~~ff^Zm;7-$u!2eo;BUE%nEFvcDV4eeDPAC>Gg@h^f= zA@GAfd*Vs80Y8-8JQ=!=Tbh?Y=p|?cdJ~z?%aA9mNH*EmVw* zU!VbjzE{`f`4THYc&QkCW+g#GUx z0e}t-NWhx>R2&~nyYd}-V=Ho6nlCYkZt(xV-GijvQ(ekl_l4hoLHBk4#gHu2ogn|6 zH3rpb<_~>NC5Y{S1k8m11W4C}a0XKuksn@|z-tgIz^I;KP-9Xz&X5JIA%T4lfO9hg eXbkDMNz?b}KA5meHyMnoaZml@A_EhX)&wJS@RxT0 diff --git a/samples/h264SampleFrames/frame-1274.h264 b/samples/h264SampleFrames/frame-1274.h264 index 9f03be9dc92d246a777b97b106a74f0238a9b6e2..a95edda286d731bdf7a7ee1b2e27e027d161c2a6 100644 GIT binary patch delta 1519 zcmVhzi0aZ zfDvZ>6Q>4MLoeQF0ggn(xr-)Pi4jG2_h`c+CX!QpSAx&qp9VjzeA;1n}34OCP-WF&B= z{|BQ4(ztO3TB4$hPcQ%k3P1osPyhrQzyk@KAO;839fX2|z{N#Sc$dHg-a)XvI7=MX zEMNd22AlwY1O|u#=m^FpVZASkikX%(m!fX~EiT-iBfS6O6s+I?sJXfpg5UqNLAb#$ z>X${XIPQ!77!=?@AuJ7f1^HLgVc#HQY6Y5gHc6+B?4W*nPT#PVmrQoq*WDJZJ@FaVf_F8)`n%W zW`18m^M$~GFyclMzyJ^dMPP5Ev?m)7AoxZEA-Ufb_Q5ND!y^QP%Ccpj)! zSMDpoG!4c_EX7}*7$c_v2ULLXu0v?P3JJWCfB*1Y;0PcSDzYX?QkOOrWL0B&;24lN$zT2E&K;4(a0fP`x>|_KZ5URs}NY;wl3jAo7umC#Xao1^4u^gCrpZxK=00RL@ znzD~Th)cTXuYh&JI+319K1v0C;eZ#Rv(b`U%QS!f@P>}mS_MnF<&=z5tC)ZMn9H90 z-|74rX2baOzn9Elh-U;*{059Ro}7xKg};I8X91PLbDs)F`*;9mHr|OgoB-T^f5zoH z3?x_U|MvjQ92S%-1H~E6fcV@0I6b@_$$Krv&a!2j@p1Do4PUCe6V7j=#P^cm(aJ{T;iWrTbJE_H_l*b--f zjsLo^0Gam#r$Bx2RW|+j#`2JDP&y&T4-!xU*Ao?>q+We?o(Tvdn1j{pe)$TJr9QYb V#GAkW|NsC0@CHKw00EPW1q#`5v~d6c delta 1427 zcmV;E1#J5M3zZ9h000012`~Tv0YRGJ8oUKBL4zc{Op_>r7*O5-KC@&fu7*GoKL8rh z?f|qj9ORDQGk!>=!}C)R*xV6(Ce#zyLvBi#Z7OYSVF##W_+oK$utWNX#1` zzl`+joq__Dssh`{(;xrkgR#t96sn@T;3hW^GQyTIi@#`pgTkpu*^ve&Q@^a=90wTU zDF5ADkO4^v3J_!|G#nK%%I*Qgh_8(+)_%}P9(D`Mi|dcR&;ZmYq>>sqzj0v1rjH9S|#U%mVR3`fn)!tsoMoiE3Ti5?1A$W1zTMt%V> z1rat8vF|;9B5(WO00u%A2F{DwO_EKkfD2%NJ5UE23zW7tDLr2H6H=7H8CR=vH;DqO zovjC>f(g&^UZwYe#sE4Jl>otXlP!{OHi{`f!2Ds9QgMhaB(UL_Tf>*lG+<^VXBL~m zu3lL8=ogz3(N(<3_X9g{9!1MNszO(w*tLaZC_zz4 zfMsGm6<=%f4*lFf03ZYms+7=8XItw+!0+MV9A=It@XPMml@Wjkgs4irzQXb0F70KvQL31IeFk_OSGH? z?^^k>f800->A?a{0;{n~EL*T4LTD*;6_e9bN@suoO+W_#khidDqo)SpAy-d?@RU!+ z#F;IrzyJgShzcakiHd`}qS`~zfChjJC4;_y^{R`Yktif@IN=)=I%N_*PyWrF&!{i_z00aOG24K40B~&zj zEAr)cL1YxPj6}(wd&7VQn?RIUdZvQeJ0o%P9gRhZd&%{$fEGXk5M1DvDp)UBFs+je zaS8we1l=$I0tMgzv|z>ilK3wW1TerP3I~oe=D`G85}`Qyo68OGzyXR_d6B;7t;+W6 zQ}>KuaA{rSsG35=zUn?~_5cKMC5VxKn{cZI!j56!0RTX)D1j1nK8e*33VvNSsbLJn z4sawDd7DAoOa%N8XA}UuHcSo0>kyEwH-vyG5Qks@^aL;E#sQoKzyLU2YB0Pb?tuB$ z1?T`063779#+Td}P_1>3lsb`^kCGt&xBw7h1}c0jA{eM{3d@1U;Ksx(75ndhf=^d3 zL-&{f2m=6Q3JfeM*Pqgf>7z9OCg=bF0YLz6Cb$N#0Ai=}`S=r{WCO^s#BfglECrI= zWTXFug3kZ%w&(Br05PBWBR~J-tQetWHVArzR9rj;6_6S17`^KJ6Hu*}YOfK!r#nOw zR>W)!0DmY>(3cAVMyc$@tU+0S?f=2gJPD7XK_~*ryHNlB;4BwgIM+MUwOVe0f;Xfj zrM`mnL;ykVWELpAswMRS1)8eO%-R0_4p_r!`MNv0XL}^bnwhf0003&06B@1Uj-I_9tL1M zga&1&#p=HQg9BM2R#R=iZ@w$|AM`>SS-@*wwDul=llZ9}aX!s(Yk+F-2IK52ZvFrO diff --git a/samples/h264SampleFrames/frame-1275.h264 b/samples/h264SampleFrames/frame-1275.h264 index 55310a7ad2fcbfaf2382bc632cd5552fe6270941..d59ab324c01a46b8ddffcce37913bc1d29a2dd04 100644 GIT binary patch delta 1191 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 diff --git a/samples/h264SampleFrames/frame-1278.h264 b/samples/h264SampleFrames/frame-1278.h264 index e98314a27899af8a1840c177bbb6e242fb01181f..1d2b6323600d4e4c46dc8d521f887676f67aae5d 100644 GIT binary patch literal 1396 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 diff --git a/samples/h264SampleFrames/frame-1279.h264 b/samples/h264SampleFrames/frame-1279.h264 index f95f7c2ba72e98f6745b4e078ee31eaffd73e111..7d1de6d5575663e098be5b46966d3e01f46a35d6 100644 GIT binary patch literal 1197 zcmV;e1XB9|0003AFaQ7nL7HG1yahKwV^`Gly-!i$eB64pW&y(303tz&p#yE^rcy)U z&vok!FaR6?gVk_U#dxUQtOnKq0t1p;00kQpo#3?fu-`NZ}WeDnY#*b075y$D29t? zX%JDi)bPm$ECIVpGnnAW!(A}I01yKJ0Rcb&5FY@tX957_fE0nxH_hw^!0AyR040gT zM^2speRj-0PE(Y(()g&UnPWL~oH>9CWv$YDZqMQhQaAtz0HWt`B_}`sXoGQsN$QtP z?>t9CbUiNffPf)x1(H#oRE|xa6#v{{0dOAmYG(_Adw%7h01ya!paO~98pVJ25rG3Q zu7$2a$T)HvBsg^CNQRZ4-T(lAJD@NXRDxGZr?GYCo&Ep-fKLEOV*v`4v}sb~lj;Bw z(BuGF6q*5M_j};}2M4MzlJpaWyfR-b01`}w*rw$Z)Rcn(@gPi?fPe*nPpUKoaQ`0U^);1PNeO&H|yE z8-6nLKzsljGZNyEW7o(Szt)Ip$Xw=fk>S{YrU+qx2eO6||CsjNKLPn@0v&(=00BV& zZYG!puK;*30003&06B@K0jt1ppU>yuO?Vyv@+c|5A#32v2Q#Kn@jx{Nq9EW@-!G}q zBBmm95CdB>A*x;AVsz04zxJy$hfqX2|ClTQ3ClhvC>T8lB?%TEk}%MRS#w}Lj~U$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6nU;yYra5lDgjUsVUTL23ffYf*vaB_N3 zFj+lb^8pf^;SM7$Eis$^7_E7{Qw8-@94*Ho%jTLeGZHh2k-P@^Z#&<-5#!`73hhA| z_X8ia6B6?3cUUEwjil2BWrCa)b-Dx~5uz({J`n%(;8&5DuiqcP-+%)-gz{XydPO|{ zyV3vw0H6_-E1+HHTl>q3$L-Dzi1P^q9WWO%Mn)o401kxgc0-v;BGk3`0gO8D?#)dp zx%b&?k$?!R)EVcEfi;U>JOco2io@IFz=*Y=XApuW5HMS;GEDzy3?GrmAzgUWM%W3j z1U%p502l)fzyTm%0)m31K1aELsE_@la_I&o=8{wI0)zkpiX9>_HFC_vCm1_U55NJF zMt}f8Rokfm072jY1RQPvDGyyg&HlHMAh3sk0ssJjC<6yo`sArQhzDH@WpanG6yPbK z@&zF2kiqH#fc!q-36dXS?@okyzoE_G8=&aHY33fWHHcc1KxlE2nv>{==|FM z>!QzpgZH*=jrzK(@caM-0K%v{3y}}`dyB?mY#_4xB;ucaG%fT;7xcQ0P-j$z(&_U+>=|a9_RpLv8Kos-q;yS>UH8U z0nTR$im1Cl#Q8M{tNTVljDRBtW6UT30&}r2tMG9Hlr)-W;TQzNC|!eMu_jEeYBCGu zFS+mTvzsI(;on`?|4 z4tQ5uD4>^Hfuy3>6HP;{Fk>*Ycj06l>;qI#MDql=n!$bd#NYeW@SlM-;BW)^0ss%* z#n>)5m1qWnWSLNgDS|0}@H7eXA8JSnaQEX#AWnh6*i8{xjQnAb?)Kkv{XhuNsH^-? zKxG)53;zSe2xANlu>14=s8n|V0@b3!R%dUZR`&2&sDF4f*d%HepWMHq^s(r({eXdd S13v%&0YLy2LT&(R@CM_ctLfPQ diff --git a/samples/h264SampleFrames/frame-1280.h264 b/samples/h264SampleFrames/frame-1280.h264 index e59ce06b36ab6b76b76563fb02854fbd42097868..aa05a137d7cf3cf41dbfe249766f415a88aaa99e 100644 GIT binary patch literal 1409 zcmV-{1%CPf0003AFaQ7nL7IRXyagW;6vOD3RJ;I|DS$omX&ryf0zF56>HYwayd&B< zXn6Vo60SN8@F%pXbZ?&uVkgv1^2Pber#tVz$v66M`^7tW!=U}A_{t1eQ zqe`#NFNDSb1RXI&tB4%(fCm630LL7o)cdw}-Ae#gAqNFwzn4tj_Qy&dpCl4aWVxTUn z70A6vpC@D!V1Bq2yMAu0jFxgZvNkawvR7oQ6mt+%Qey|U~17BPK;2;`rDzTE$WB}IFVgLaGU;q#v z#cTi)4jdY+>oeJ=3FCQ>tj)sKcBu^t)@TOEAf59~d@)DM4 zIZ$@_FOxo-HNsZgDNGT(KYG4SBxrqg`xujYHYkWGd;`X600?4-;CCBK?)ip~ZhXVc zhyWSg0|prw{{0-N;u}3eggr$bc!WRv9{>O#90ne?{3KU;B>bC1bKC(4V5KI)ibA)m z|37^8AKL#iP*@$77kzvW08v$eL0KioN(#+E_yBC;w80??aoPp3BV}L=UH~$dQJKoBcLL%#jS8W|1!c)~E`wFe02$fCpD@C88?;dwfZ5jS2p&jvsMV>yC@XMZ7+ zkW63*{=fjjt#1Mf)*rz1>6O?fPzAgA7KEC<5By*NbifXPBgJ&e!K3U7F7|#kbuI9J z6+iw6ct8O(FaZS|7MW9}hl}J;^H2mk0003&0B$Cr2Co2kFaQ7nK>#_4r~#|MCI|ER z_!D4w1DK$f03j;Fq#?}k0WA9KdiJvTh*6i1{eb8CR}D$;#o;kx4?-{of+GX8Rrv*& z2u@|55*nrb@9IDMury2nOGT_-cfnZSf(xF+tDt``jbel(a*rTl2v#@>fzAKPq*I}R ziPt*oq^@lsN+a95a7QN!)WtdfYrx-h-r!DVL$6&R>hVu4A=>HTcoR$iQ;G@?fCEqy zOTpj(ARoX4(!d?{FvqNtk9}`C%bXK8peKcL{}XZw2skNUVBm;P{Xp!h2pzJ(Q8wB& zOfC#1YJdd2Pj}D%`lENym*>9kJR{&uQ8@=h1bE9}R}T=u{RRT@f-H;bpGWU^P$2x5 z%dCdK;P5*C>v3P-n21U%DQ^WsAXAHew}IUpj%1tv-hIFudCOcW&;u~3kA8p4=61qT z4!{^5R|&nqwJ@vPpdj7<&3Q_2qnBS;3Qrfr%yZvazWzVnEg4W7zyI-6l!{6WI0Zrg P00BV&6+&tNYVZc*jiy>7 literal 1026 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 literal 1426 zcmV;D1#S8O0003AFaQ7nL7TuDyaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`L0eYF&+$9KmZ&71ONaF0Vete8E-4Zzzs{F$+SA4P)e|jq$BNBuM803Z>F%5 z?-aX2K>1GqU;wA2CG-v@1_6hQfGPj@4RFJF?A*3ddw1Xz013>11On<_*)U&g9{;>x zB917W22xk?e3d<;fDJ=CTOcWMdN^MLFT62YNxV}9^;8@!#{&)?pauX8-O>Z1Rbe@( zzkmS%1_K5*RT@soL@j}f(k~7{%Y0@*BGJY^HBVod>Fu`L^chLp*r1wWrvBf+OaOo( zPQ?J7(dwA8@8IA7<6sepSUe-^;l`$x_3hCR00?b$Y)o- zfCdyNg<)k@wVc}1|NIyLX4`zGyRx$!bLpXm7(hKeKFnF=5f^xBGiTc z00;nMphg=%+4RV|NDi!E$YC0?3K7JwyZ`|K5JH3wW8qny8i?v2f{-TZ0bn5@k|l@= zzb97bz5qY~KsX(m3T;vSBIZitVGsFUoix?p0M0 zWS*A))FZ$F0AsKZh>4qe)dfXIxb}RfR&;SrCZQpCx;0XvRl_R`@M52k5RB<)|3_F&1=( zq8pnI#U3}ZUpNFIPAa3iA0?J=>=}T{cp`ZcL_hcM0MC$Y%7)uh1b=}6fF|ew00BV& zZYJ;suK;*30003&06B@g0jt0-=kxja6JQ_!@+c*tfD4{hroou#0L&C&u^rE)^vAHN z6P^bRlndg$hKAeU2Vz7CVju?BV`4am%mzwhvtA5i@D2Oat+gB^f1og809^JOfQ1fz za5R_$kRhW|UwZ$S!b$oc0dHg@KBMq9qkr~%qRIsh75d=wM*zTSt*+h;N5Ic^fEn4- zol%c9f_j-j-YS>>U?*c;5lo{-gGHe@Pyhb;_cs3mX@6lwixd$UxekkoIK zirG*1I*VaY4K)vWC-(;sbpcL)^RE&hbOrC86$O*&Y}Utr0ER{i9XZ+V`}Q%R_jL7P g@4mt`SROdAVfWAHgqK>P8 z01yg01Btx&f@*Nv&HwK(0Kfo1;=}!Czy#?o8bP2;2sStkoB|7m=+P5?|KuzHOzfZ( z5Evpt=vZ|2@E>15P&iY#c_vlI-~f9=fB=B-1vvr=o%gAz5PFd%>O`N5!$}mwa3B}X z(&3a-8^OR9MPLDD+y+75d*a606PS>E00d%AQn8yUU72_Q1^~JoigaU&v`D~BU+)FL zGy!tDR!G^X58($O01yiR0RiA0ohlzsTGO=^aLj+Lo{+gO zYyJtK1Rwq07j3Je0G&=+AT!k7aG z;=exu2nQ0E22LC5A&))({zfIHsj1@g@FqY&0nAWR5->l&u)tV0`iO8m<^VqUCr$#@ zKYv}=1-~W~g1y}aVU{4^1iY3OScCfDMuAqF4R86Zh>b^y5JDJ$b(G~8&rdw);J^6$`$w|%r9{2dl)g6{fY@kqADgpdn*iy zGlxh^D&#-vfCAYk9V!kd|EL$~5kd3M=VQb|60qk7ymKUpN4yErL<9j8hb0~f(QK)= za&xbHfFf2}m=MKV5p!Pxu`$?2DOr6ZibAk6N?#V}ZvLs?~ sUHT7=Wyq3Ry00h9FaI|j909LpoDche!+^4Y0003&02M-O0BZ0C<89*5d;kCd literal 880 zcmV-$1CRUw0003AFaQ7nL7U(jyak6RgsK2Ip8`pOPzYIWLFftq61XWX;{>(OHiN&W z+MpI@4~@V92A}}|pv0+Hb;ymjx%?x59smIVASfV3J(1Lc$vA}?)m|E$00aq!Qc?n9 z)=#$G5+nElfElC6Ve(G{K)oi}z?o1nmHq($hyu}-A|qS~bG1W{00s|%P1yxWfS3l8%o6|jWs%yh@8C}_@%SNxpaD=|0Ky{zAlwm*EG@!^cwnmm zCVr~$pei-f0#dJo2qUFcK;nQV4=v@WHJ>`QfB=9dS(E@A0;DP!3Q)Yw5P^lj0D<4+ zAV7yKeS%huSviI0K*vxt3OmFICDElC-(mE0KmsQ5{?F&d00cm({FC|fB=DXmcRfI0Sk!N zcmV*TN(dzN>(b%sXAh<4-U8$B1clrs_i$tQ>ssfA$oOHnu>r(T@||h0W>YawQh6u* z0XIMZ00BV&ZYKB!uK;*30003&06B@i0jt0{%nv|u1Hc@`j?EAObG(hFqkOP&z$rzb zF2YISm?{B-@eTU?1Rxwmp96ZZ-f)5wW&i#|6FZ}B+%ztDocsxp5CC%&5{`ku7XYwr zwHi@J762EUf+~Dd`rms0oE=hNrX4-dJh24;IqgvvFkM^-lXkYl;(PYOAt5x$B#;09 zz+kzb{$I-cc?L}a7wjsI!iYb1euP<8(DUEVcx=}pvweX}amFMc1LGZzeOS4pT{#L9 z_#((w-j~-tegw%Pf{FkdE|x@o*^u5IFhny*3^*>5LGwop`)#POufaK9rc#*2FTYCI z6;E(1J2TtLC?y^uD<(J(WnkGRhhZ%55dW$G4{02ALBxOl>D#1=1IYe%K4Ku16k{xV ztdb=j@Fz(SI1wZq)GZfd*!oh~7YF$&iPHg3G`1t=zTXls{4)xaKhQX_$OLK0;))x+ ztN;lBW%XiW3L*)cFH9j}P6h#whLP{npv)tokHAk)e=iado9_l31(W~)0YLy2LT`X- G@CM^Y;A&C; diff --git a/samples/h264SampleFrames/frame-1283.h264 b/samples/h264SampleFrames/frame-1283.h264 index b8c71d584bf98fc069264e28ea61ed128f49fe23..8b059b99a9cb2164f5296be4888cbd998495525a 100644 GIT binary patch literal 1247 zcmV<51R(nW0003AFaQ7nL7Lziyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zA-kNOfD9COD9Ddh$E0+;{@4T1nyQgwh_;1b3&ORJy| zM+vJ1v~P+NaczK}@NmU!U;rQ@Lx2E)a2g38&{Qi@bHG9@AiG**hfai)qVxa+RzJWD z031+-PNxoCVqbYN4qdf?1A_=)zTr*%;u~~DM|c>i5jAqWngUi?Ujw07-SegGLp-Xv?MGMiz* zmNAos;W+JNpph>1mw*7E0YRnFM1Y5+P%?9JzW}HJ9YI-wjA3&t=!i>N4ge*90^@?9 zS^-qQzVSc+AOzq5AOuOE0txxxE=VKMgMbDA3MASt7UvoQ1kDKm0zUSTK|#|CDnsyRgBR*0096I2j7v3hVb7pM4sF2lOXasUcWlcCTFX|wL5?E z{Kk%FaTkasOHu>jkT5C$fdav@vXWAwdw=*aCmRq1MDSRA023n_9S&fE`-~E7Fa(rP z2-N9eGm(y3&LCxBEkv@fT7E}PsP$AADJE+C}_FhF7< z$&YRkXmSP~Fad{exCayFDg#lH3xE2;LY?~Kvl93}@qh!Y0r(El95297O(94C01#7$ zI#d7Phr%!b5DEfdQ!_+lZ=J6Qbw zJXST_us^;}atJIfC0Q(X|M~#N!>F(QJ2f&c;nH~>c_fI4$N zSrBur39F7;(Ex0hdWJNu=D`A{t7j4Hd8_Xzzk-p!{xoBX#vT0ox3TSU=+??|)h{ysXuLCnzq{5%!wD{V0bbf~9b z!+|@92@0##hwl)Rus>k_yiJ+;r9plmpcvYGP|yGQvyHCyKmEJ$fdc=5jsO4wK>!s( JYk+F-2IKX_8~p$P literal 1025 zcmV+c1pfN~0003AFaQ7nL7D&>yakbe1p~1lQWO+`0uUH45%Kuc~M zQY&cI*)xecnji^?Nvpu4C{Rx8nxuE^SKeUpRACloRUyGCtl$6y0EHG6y$9s%8!T82 z2EYkB%uZ7eN3+yE*k0aX03aZQ0ALfFFLXu;=!`+b7=@8&6Xd%o;vcvG1O^1*$SHE0 zU}+gGyUYTh0Jga+8Ukn2N0Q*OmlWVI{|5dgSgZa4=mSw+aPWpS=}H~fZ~f>1a)%so zZbc+WF3BGNLkZh?{(}^!lcJducqcdj$iBee>3o#OcmM_vppdE@Hj)<5yK;T|fWbkl zl}6U?d3X=sgFL zTY=yQ$U7WA&U{IKZ~dGA18^AUlcSTNa%O^?{s3Wu4vsFY^eDRGvo&4Ox&Q$LfB+B` ziI5~c_J9B&77h(j(X?7qvtf^1*a!?G3N+FMK3P}qyauL-zyUVC#*F>+{1t+vk_eWX zAc_q<0098-`amK*9E*>MP#5JlfI-Os5GAZ0MUYyPXFP*f00!Rx0Dyyl`CrEaV~;5> zP=YEUg1obqNrV6sbN~PWK>%(hfCjGscrX9}0YLyciJ$?iz&XeB@Fze)0mN8K0U+*R zeeq%RpR{}1b&;8QrRjh$k9So6JSU%lG6Db%qJo8B09co9=Y)e6d$0nG?B5RUH6*)d z0+Hkj9o*n;z8eu9Kmb5ZzyoQ1ByRwTI<|h9;Eey0HxfK^`~UIcoJUfaAKM>-0=i!% zkxzEu2>CVZM!{%l((7b@es%+!E?$kNZTEn(A{VZEZ9@O@QQ!a}?dVhJP80BDAxKh? zq#;OB5I_7lDg*a{&JHIw#0S6U;7r7d3If6a0s<@mF|t?#I5H0`K~8%7GOO-i`^F!0 zgh#BE`i3;D^mrhwHC;q&8gH)hi}*Ynth2AG_U!mXLxF3R7z)q#-_L`L1v}d#Kliu+ z#`i7zfDEDgr~B!`0)M4#6H34Iu^g7mN6l~$Q#3#S4+Q$k+e|^7Dk<17;7;NKLCxLh v|FLls2lF=%n-hC9>i^k7di#*~|0?O|&Kmu-W5CA%00BV&6+&nLYVZc*j#$9R diff --git a/samples/h264SampleFrames/frame-1284.h264 b/samples/h264SampleFrames/frame-1284.h264 index 2aa7efc44c0573953aeed70020e733e1f26fd1e1..ec911fff9d941ae12e1fd95db8025df7befd000d 100644 GIT binary patch literal 1584 zcmV-02G98b0003AFaQ7nL7M;?yaj@hh!it`1A+>kLbk3+(j5QxtN4C^5D9nJKQEf& zB4Y%2WD$k9jh!N#4agI7DxH6n4nDE5fx^Ds<}2^>v00I`E03Z~Z!T<~c`2(o9 zz<^_Ca0Ds508OzRfmJ*w$|L5Zzz>!H1Sk`bPZW^z-j~HiOv@P=Wm*3;&>jFD;!OCH z=ic2X2o|I$00;%L=I}LQAOE;O%R>Uo@|RSCM2h17iy@$R2muWs2{6OHxn7C3dH=Y; z06+miF6&(64TAkAX&L|l0Rq$j6mR517yjHKh%0ujA8er|#8rRz3B~*(3ZP382a)~& zfCd0?JrzRW03vuB00rxSK}O!j9x_Gi`+#6mb?+I(9Dxq(ukHYZ2+29L3yW?-&@2yt z_5bc*03aMOpe5jB=jcSm!m3K={g;4X2NxKX44(Q{*W4G!Y4Q)!|99TV00@C52e2NQ zfT7R(AL;-B08juB2m+Bx>H}?emH|iL^bvqS>Ohu#;wwK+|Nr0skl-902=T5TV&#RA z2l~5CWZD1$4UfDHZE#Zpo2sV?VSoZ5xdcbO{=*peu$7njd{84na8M0H0r8doQW^vR z@STo9RjG9@|9zqc1m@=pRj+sYzxIg$Fa?`H7$>$&_UGT+BVYg^0*IgkJSbiygs(o( zVu?pOZPG4|CY|^G?FmPPRy_q0X^MaF0ze|p zfB+yG=mG$Ws2;*~s7Kiey?g)x0QCS89N==M@f%#|Qhh)GLekU=i^`-45#jHH^#jAz z9)yyIpwdI~zyTs;8X&6Fkd-YV`bY#s#sUBj09Wcb2jy_UnDhl9MSubZKnwu0IQ{|W z#xG*|(lFAQ&8D64gfh>N}LNb(6$1I0s$j+M{S&tF!H*NZ86{i0M@l#6E}si1JOBXzfEY6grD4*!6zbRK!k`_K zbujq|Q}cKL0s^A8fl-?ePKxVo+zAau(cJ#R3i~j7H{)Q*55kZl34#Zd7oupJvTU6; zEHV#M_5NZbAOD-c00;`PFaT+$lK{F&B47KjHpczM^{sCc045iJ0GT~;K^c|2gPbt% z08ETzd~*aB+h~(NBOw*Jj)fD_uZBk0fR^Ea1&oVjC*X-Sjs3y+0v&(=00BV&ZYID6 zuK;*30003&06B@U0jt0e>HPc&uK^GT6B{UD02uVJ)QngDtOQUTMUH?qV1-Kn*C1VC z5;IeSw=(le>l=UuAOZXx{zDi57O;Q-AQzwt|MlP4xRD~^GQ2!G9Oqw85#SNS*H)w* zqXsI*m3FNA=Y@0dCKvm_L;>tjPymed`FZ}L=jK6uKLIr3un&Yn5H=W2Q%tD$p_rni&8C>mAJ<(93NyLO&H)f8xMFuw&N*g2dkdt#W9P%6r&6D4};e zP!M(sM5IY5Sd9*NSHPV*5GnToxtOvCAf=-F_C^AW96^ORw9Oz!2}q$ZCikE8P9R<0 iHLCZmKlk|U{a5dIAN89{;Ya`g0YLy2LTmtP@CM^$@3%t$ literal 1441 zcmV;S1z!390003AFaQ7nL7E^Myaj>$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIxr{s|A^?akBraluGO@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAi@-Awa_5)43}lcncxEe z6{-(iPO=wx(9ymByebZO8X{67p9?o9S_Fnp7zhZ^Xh`&}7A6BH)D{o=U&Ld9N*Mv| zJsLyGhz}D01CE0>2vJRc?{9zu5J7M@xPMK2;^ejfEW`$(t(26>i3uklvKDv z6rK8}t3ii~K&D|A`0l;_5So~b5;0wm|Mh?PVyu&Rh6~!LI9pFcm(4U_W+W-F*;bG6 zn_O?uBhLg{721b)+zfuuTuIBQ-9VOVwv$c;bT}YJR_}n+0unoV?O#rR`*0(1HY@js z@Au#U#X~%oF5a<3ANO#806-`NWlCTddDg!1v8aFhJRJ~|i3A@k7cxRhB2fS^m5Ru5 zH7rV+zW^};F8=J)P@9Rm+gywQL~fwXJZuT9TJhiv0k$IzZ<7aDjRO^h5i!Gsyvrny z_JG0pT%r_<#+o+91PP`8$|%Kv0s(>+2;#nh71Z=@jT-O_WTThbwlz?eCTZeu6|!cYnQroiLzB7xyZ`|J00ROCNyfEuYakoFx`rI%zzi5F5{c4gi4nX2Fl*3I zVy1P$Ia#=?g+Ayn%jW}lO)w~k2Ln6=5N2M5VGjN8AY1>y-LPSszz}VkB({8K95=uL z002M?0h||o#7D;jY8^S!4+G$>J0V4V(WTZ0c%>w$e((UXkT*!Ps+t74CoO%q2?~^; zl9d1-hWGZ;D8upw;}*+ONt!mW3bo<-2eg* z6%9$z`L*}gMc)4h?`+!}^(wolegFahVN@N3$cOyC1_LoRO|t+1Ks*2h1i%3y*F0C+F}00BV&If95dd*9v8(`ND`Rsp&*xwwfZ{B40V@Rs zT7!-O6rhO^oKwy0nA6@m0CYeD_&NTA7yuZtr~n8B=mL+=`xg=XWu+4pMfyH-xeq+0GqzPPrt3){Ln9segkQpfOIE!4e#g1s0i-` zHD?UKk4par9y98a+Q1XcYua3xEOIW9Z80z4kpaSc^qgKk}e3*fHyZ zL85PfcA9Yz%KI=aLXkr5c&A$I6%k01NLcuD!oCFQ(1A(5p<)r>R}j_?e?p82R6&J2 v#nvtYFx8!c@!{T4OW=kZor07zfTCjK z(IpyV___b8#vkIIu5!A5U>X1z25=CF8BMchNT9X&015z8i9CXqNF|0yYup?8L;qDn z01*+t|K8aE0wsWe=MM(BAS7^K_m~D~fCM}N+T0($0eCzBVa#Y^C>_|DC}?YY7pMjw zsb~;-oh9mYpOS#^^bkpy3(WlXpaHM|7yuX<)Gm;HZgQS}{{9GnK&n86`R3GaQQ-V! zzyLruWq=R>U{^@cl!-YQ3ENs)0qw|;3k+RYa>f9|WgDXB-T@Cmb(Ao{cb2&o2>1Yy zpg1BC(%Lem$R2n;;M#Ldpa2lObHS~u6rs!263;te21rp^vWjor00G-D0fGfu!l;3p z#Ml4`1Z$uU0FjL2`6HV&Lv$$-#9M{56awfNfYdYK0aK6yfNP|l&%r^K#L}$@Odh7+ z`rFR{06;E)LO?4{R9>x*(wd8$DY$R|1P3YrA#-oP<^%*E)@nK>9jCvv0EP<2k@J3v zBg%Px004jiimcUqD-39wa6*Q;SQi?HI&QSU_302ocMw-F#t`KOAIydwn~w+}WbX(V zBLLn7UYg&0;1bG!{IOG2546V1#u`AQ{32+A^1wd;HMKw#2m}|(lt`c*xtRa}fv^Aw zC3WBc2p9la&jJ@x*VOb$tVD0s{nD6eueG zM7Xc%vEUEPkO0c)5OFaM?ZKK(A+ywRi$MjNaUcEf}#t{X2&{2$dzo_^40t}5Ca{rgg*9`LT*Z^X=M*v8FuVU0NB@I5n105-7 zD2(CT3{HtXgq#Pv*b~Vud>{FM2S@?<5y$kZK_e@ODeU}e>Z9QQ-v|In7y$$rJz_#h zj^2U55bOW|0YLz6CddY_0C+F}00BV&If=3XtH2Xk{QiCf(*NKh0NP-b0Pw4%m(c(J zxBvotPrkRk^nhb;5?3Go)CYhy;|;(HFNm9g*lIBxXOc=`YL zrn%UvEa*o6?KrBaf8U_rpk#MAa-D&Nk@XMyh1^^Y4Sgn-M9=&D1qTT=-lfUE+U@PV zW|{whK|vPu3Rj{Nz4y-yz?xt15Ws0rh+tRRpxykJ8Za(YWj{gi4cogx63reN!4A^B zJ@?f6iH1X@tWa3XS7HDE-Oqq+*(X$R03tIG0GCUTAG#Ct@Vp7I5ddox7B_ZS2n{zo z^nvcX%?N#4z>ssTli28X@Au{ZGAvwYa-sKm!y7!g_!@vRy#R>}s<4t|fPrFz7xWIC z4hz&*{H6INIxHgqGB?|o{hTGU+mw=Dz`4$zMxQSh1h4{a(GdPGf#&m(f>8-n4y`5v hFhiX$-^4@GNH{9+^TOeUAOHXXK>!s(Y=CO;2IK#yA+7)b literal 958 zcmV;v13~-%0003AFaQ7nL7G4syag{oVx+xFpHkD8@&cX&F5Ua>DLXj7)z_-N93U1(=Fyv12s7Cg*_)^MxUj<TnPWtQw~`Nfg1dfFGQvH0BISg`FT5ZIASio|?kf4$Bw;=90(F@>9%YaK1hGHt8E^prURT`D2pC)_DgcZ^i5vb9Xqeai@K)=90f%S= z-^sJ$04>lcIton!DmkzKP;eR1cA&Vo`lrpH&kFB<)oB*5!XSVj3wYu3XonOFxper9 z0kB8dDN}>7GIqmEP6B8YWfo$S@RR@uZV7m7OIqd}1_9t3{g+b$z)vTma-kS~rY}ge zU+oJfAAmsw8Bu9s%{EB0=l!S(fCXEbVEdxsN_wCQi|_#=Rzveu?_%X(03ZYhn}vvM z&;SGjfyl9!5r-l!iq@|C0;jluN;2SZLYRN+ZUz8#3MQg>o?IWEN1ee+Ex(9{q)}Tm z;CuuaVr^Zn58&QQKJYS#1{$pK+k&li&w-~P1HFI%%nM4a1x+3I|GW`~Fr;Av5Lt~N zr?q^v@C4le00BV&ZYGchuK;*30003&06B@I0jt0hS^WNf1k(TDA^_T8lmM`+wwL%n z`1}A-{ucS$0WB&I7LB`j5mTbLkDcfnL zKj5@C1>1pG{6hD4eDKT(rT+m829*eg0bg5HLHW&%OOm50?jHc%yR;6MI5=*HX-gjb z_q3A5OuFnp|NFndv!Zg203tB}3}tcS_ddCC|*00*a% zH%Zpm06mZt3MiGDDl2aQae^RL@}6n3r`ji8D|GrX+FqRo(Tt*>C@g|4`5V7Nm|_wjPURP3=N%Du_(-;Ctv^e@d4^^ z0fGuzcwNLww`e3_&Jgt$Aj5(105Ik-wxkuZ;b$N(S! zFxkq+NP&fMH~|Qqz#xES5i(4e)4LvzcmQ&}O+bUxi7!$l&oB@SQ@{WaKn?^8-$jWM z))6^%Q5{c!uT0d5_$9BDz?zw@9>!zYvH%4G1S;sU{ZOZyT?T;40C3;l7Rh$p7}4(l z11SI)RV%5@({gV^TmU2v30^SF94!>CXa4YvA%;0Zoh2}2LefD|~T;W|t9 zI3;iW{}%H-kE;G4B7nmMQ8=xZh2?WO!Z{%D08HLvSN5y_W`-X#=#&un1Ev5105W(C z0B~mLcT!F6z;Sm51qOeEV}hHv5C9N8PQ2rI;V@~?Vq@QcMgTyI5DBhnQ8IBY^!c7Z z0}ajwx*NCrFcaodLJg@|Na?{fDn2vII)u^qgvnX-~oy19Gd2DXYfB_hk%%RB!G-;Oc++A z0KfgoVPSG_yMO=xe=zue zUMRyvANdgojD|39zhg$o#@K)bjJ3l6ai&=g3LKD?ukXxHrjOyq{0u1}A+#?&^q3T4 zEkl?+`OL@wfdZ{s8YF0eL8Zg@Ko9&tFp^B&0_|x5)VQby9}b}83;_Tj!SROla3^mI zbtZt%zz`s!L^VVVG(l@&3kDqG*ZXl1oDvvywX(GA+y38UMl}9qWk31A3LdTj2C*sA z?D3VX4p_pW7T$QN1EH2tu;Hv>ezsqm`!8O312}cvC7+9k+c(31Q$PxO$eFa=unh+<*6ep+p5WB>+o*5yK8^dj!r1T&Gc+rv6jIJ{5of00BV&6+&$QYVdOb5C*Y9 zU;*ulM-t);Z}2i(P7ea_>X{|~Yr@(0cz^xt^7yl;!3Gd658v-@^Ts5Y`402^NpJ(e zlmd$uV80L`c7lM65{L{4_5dHR9APGezxct*);g-A;CNY+=I9^)|NsC0|NsC0|NsC0 GfHD{}EM*Y@ literal 1342 zcmV-E1;P3N0003AFaQ7nL7HG1yag{oVn9806+*ZHJz?{ z>@sqWvG4#m5CC8@NV76=0=qy^pNqx-0svG19MV7<&=6!=NR$G&(R?1@03aN5MT{Gn zoCUn4ktFy47)Zb^X9LX4gTMKPEzZCLf(1T98dUs{Ze=J*{$K(D#I^}+p0iO3b2hq7 zARqt`1-m3L1h0Z&_+JOFzjy;c0AOO&AG}XW{HNU@j2XRvcL-^rpbakq=IXu6NH~ee z3J^3-Q-k7$bHIlzp%u3}9dy?>TPc(Xa1;g5P5Ako3lIVx6cvCCiQi*ETI2p`3Ie1t zepf=Eo1gpu1pI}Z{h3c|{rxVk_!^~+hewd})#CP&_-ZgV1^{ja0CX|}g2GfEgKw5n zFo{q5Q|#xG_K~GJ{m#02S~*Arh}T z0-`Hc1PCXM3T}g>QV78aamBTJ{51y*oT;EhfS(wOvvuHXa02%yg>}N45$QYx5ENu# zRt>_R2mk~Df`1-mWq?h1F#^dj0cHS2JOa*zjVdEMCUO9bM;awQJU|PAO?Gez=1F`k z1+bgAIvMcA@OeJ>^q^crjufB)1Asmt3IsleB57s|S8M}UV&AW#`&pp*o2$suB2 zI3!_$0ZoL4d;kFeRREYJ(Yu7yS$H8|_aHwA3&0MIiYfx|QJ*12+UL^3J$8=SZVHnGm?DZ zw3R_$_YN;1kGwe|ExG?-X-Nw@L(?_vek%&r$zIz)LJ;FB5zVsAH}_!722;Tk$g&~- zzjy|HhRmp5x9E@XA^=U$0003&0B$Cj2Co2kFaQ7nK>#_4rU9$K718|uegxNmhyzHV zw+|w10ESVSJp^alp1mAnH+u=Y5pe4~OiVIhgGDxQFlv05S~&P|i{bz35FZ1;79Z02Kn4c7{BT31MIT>;nJ+0m&Q6E&-X} z9z#&DOQQyy3|xH}CBJ|2Bme>c2%7*11Op8sOf+2ofCK%Y;DbuVF=Sa_2P1$0fIu9i z7Wo#jQUoriNqU_k3;2*D>}ae2E*Cina)^ZMP@pJhDZLwbqIlLu00b@ofU#RI%SE(_ zpggTB@&EwO7Oq5H7K5@(9U;+RD5Yhtz!vAb;Pw(#> zfB=Db00<%G004m~568S0(7*sdGyntucME_fIWzqOW1IkRXhn+n0u(ngp@=Xhatk{L z1Oumt2E;G}fNJ1yXmFhzy`7E=NberN5V9h`<11p^Fm6gCW(+yJ3-x^kAPhtzG6=yX z(8mvz@Gw(DK~$v3P?!Vk#>jJm*fubr04y{21^_5a-%f_aM8*sIzz7&|f}EmRgrkDB16Tz7=ARQZUJ8*NuFth*w0YLy2LT!L*@Ni!N7zQ#T zgh+w`fcJh5oS4dQM_<-N?=KJl-Cjx9Gco~z>RBV7`9Y7#xdiVYlG`=$FwX%P1~7JKN&)^EzfKP&%#;J1e{&}TU zuJ8!O1Lv+jTrr3L|G@wM|NsC0|NsC0|NsC02L=5J@)QCSyK_YK-e~=S=Nnc4_H<<= zJS+3*e6fcY0S*RXg!s-4LuUTyS0*zET@de?Onk=kxje{(nE8&*$^` M{QiGGpU=P+jHK4eu>b%7 literal 1010 zcmVpt|a;o%izRNXgE9-g5aRT00<&zlQx8}@B#=FprmU&M#S2(3$g-% zKLvej2Rvm1J1PI}4!8ga9vu(>0s~+h1llRk>mU1o126y_SeJGuJPzX_%~>jZ2(+OU zf{GX+YjX!mR9cJGXSo0n5ZaT#4-sBNSVCVx`@soJMGu=mxE)se-0o7~22cRen4zY` zA&uo~f8ziEK|BBi9Do2pqyX||tFr>K0Zeoq@$rokB_sbgfj5w{F(5C;X$_qB&fB-Elny5KNO&@hmFEq;j>%)?+KZ~|_C0003&0B$Cr2Co2k zFaQ7nK>#_4r~#|M7)kv8egx9~0yqsIBmmxV0T8qR(c+tpfCZdOEt6$GzfccPG6Wy- z)d0PG9)z}F#D+m_{aMo}R+o36ag9}0|FTBJOi^?%3`1~%{8aK!xis)-FaqFExd0pI zTALRC+xk&L0ui;}o#V%ct0dEY1I9p3j{^%ISG;FAHkgesfwccok)-|40$dHYHUU+4 zL0i6fUKW4=00BV&6+&tNYVdGh0T>1{N<4@l77usel;pxjvhDwTH|gZbkN_D}utuGP za)2-%rIHkTlnQLrZb27cB>sSg|KeeO0x%3=5U>KkNQi}Wx(}0S8OMU~#*CM`&p5Lm zuJP+m03PJ9`wa_PpTHFLp*IaV0(rQh|IHGqF7yO4#?t+UVuVOB|ImN`|NsC0|NsC0 z|NsC0gM$8q`63Jb5FMs#_ngka&grV5p#4kbj5xRma5D`2syJ3{X6eh>6R?f@9|{*!nAyoJzj<;@ap)CW?(nkJvNkH7kR gvUp!VpU>y>`TYKWKcCO%^ZES#e?Onk=kxFdqeZ8(1ONa4 diff --git a/samples/h264SampleFrames/frame-1288.h264 b/samples/h264SampleFrames/frame-1288.h264 index 22050f7758913af19b2f0ccd6eea1e375c45afbb..04ed40292fb0d83f7757b83f30657c2f3c56df90 100644 GIT binary patch literal 1327 zcmZWoe>l^59RF(J7l57vYF%6}R-% z5Mk1DiZMTi(=R2F{FqbJ-IG?AUm3fu=ea-b?)As(dHwZzz249BegOawODJE6enn){ zfL>4E8}_U~8NiJEj1`?BXuz0+MqDkFCK4RnD=GwF-39lqieA>Rh?ubRocu*uYX5$` zt^J(2CsGuOe`7{jn50BsYe;GFmMf=gX4jC?(XhV>9oq?K7Pg5QY;8-k1J^eA5!+TC zyS)QN;(6yolUt1HcDrzr0T`wLN_9~vqtR<)nxt@CMWc7bHPg3g2BAW6eKlgA0ux01kq7~%7W{ZrIhJLfk z_R}g)Mi^Jyi2w;nVh#0W8;>jYk^P!H0ftonkxaNvy#pVeYTVbEK(PI}Ja%2Za;yIJ z+$CI&+%or*2h%j&QLH6((}D`JBn9ami#Y7}fstFEIO&+qA2=xFmm3;SQ?h%@rI}aU zF=z^D^x1S`a6KF@)Tbj&mITbetFB(Z@v42(Ab>zfnuFWo_8WG1c9kZrdA8+fR;^`N zUGTZ!?r~NsR5P)exe zYpm=*iff9m0PEl$cYku1^Cj0n6@X1CuxQmI^g~Xvtosz%KuEz5l2u+qylRNk;H|Jf zd;8eswn&4;D5wI`nw9V?QyF-303al`dQs>2vn)wMjfJDWz&G75rZ5}iWMTaer8zb=G`@_K!jw+10xTAL62lucML=UEW*>^ z>;*))$S@3{C?3-;RY&(T%d1M#j%pje8WViuK&&<%VT%cA&JcGaV%~4d;tMHI50~7_ zvY%0=2#4k&&Z%&L0Pn&$w516o=sBJLb$N94!7zdZ|Lj%Y4 zgUd5cHOjH5+H%vADV(Au3tVNNta?w)yS)ikJ!9(^nwkf$s)yq5%_N5Ks@P(e8U4SY zjf*S`t(I^sg5*Z-2%q}0&$YKFW~KfYv!>b~#-0_3H3B1O_48jmXMcF$?VNsO)?83( zj_ESPp}S{|ShN%K&8_j+t*`VWO~AzFP*Se6I6@0{c3i)x^ox|@53jy4pUZZR6JlkU&*mqIhssO&U3prRUY>I a6_3A}YS-;&ku(Y6s2~29`%e><1@14DwOI22 literal 1204 zcmZQzU|{4l01}R~7D(-3)ptx*+3PbuIC%Pp3VT`66ov?v_3PfI-uuB2(4cAU&Ma2r zZgSFo2XjGDuxG4_;OX@HzuFVaY!oBTGp}IaDHGvVcJS?8Sa5(jfq4Q8^ZXwMmyR6y z?z2+9NrHXlDFYeJBNIXc6hxeP_7!Nb9BdXya4=#z;K0NZVZ5hknuu`wp28gk3><8I z3vF3mhiDD!o{`3nYdnSfYHDccsY zxlS*1yuTe{^viZ+`aE~e5^d%}{ssmC1~z_+NzL8Y`6M=oZVkL+Ai}_!V!|%Uz+@Bk z&q3?o2Y#kzj@*sQx<&bNWn#}fcH(cSuqt`bsGs=dXSmz+B!)y6-pnwuDDmkhnkJTa~Yiv+DEU|Xoqfb{;S^-oX!>@NU0oTw(uBD$4koUXvaa0Vm^J-V1Ji!V z1}+98n+FLhzdjvy73*dzV7ziNa-rvE-vfuXEHfrXLHIL-U#j>g8nCmN0#Ff4AmYhokHQp%9cp!NckRvGftRjH?ew?LOeb*mB5lf;>b0gv-`Xl=>qRR2vTIq;b!ZI<%d$u84sN2>Td6 zh%x?QSllq1SD`P&efc&TZ1?enz>o zWd4r-@&Egr%~v-sIzIQeegC^D`{ILGm|`>&Uzf4EzwrP0z*Irkn+yj zDQywNz(e2_eS^?xOS1m|l_bD~}HH?%!wa6b9Ks-sWkcis0#FU6v^Gb^aL zxiKV2vF`aG$+9*icHeDf@wM_?T7oep|L;kL$W`3I LVma7354hL>@g*6i diff --git a/samples/h264SampleFrames/frame-1289.h264 b/samples/h264SampleFrames/frame-1289.h264 index e8e1cb948ca6a7f88ddfe2611bfa91ff2eb1848a..59bbe245647f78622d7d100818534e3ec5f79146 100644 GIT binary patch literal 1168 zcmV;B1aJEQ0003AFaQ7nL7Si&yai7|W773KM*sM5p#A_Ygb`>Ki-emh;p+DlJlOxk z#e^~d06^#f1UA3`LeY~cAPz%701zo}FpvNcyg&d17tdF^DCj?%Uw4EI-uM72z#;&^ z8Mc1FnO{yL4*&!~ltLV{%}E22U39!Qf)W9_LNl1KprcJ2>40Pbz&C7tfg--#Mi_Gd z06+u)1OtEoKr{vuI1mm<0=!#G>p1}se3*lPDH9qxbnf%lZI05ry5CFUqNZhxmn-I( zQnV}qdeePRn)m4nR&W4xUC`7T|GmT;(E?r6s*4M5So7kPHtuz=G*;%1QhC#Ml67cL2#4W)BLm(8?XDL8ggZK?H0+_h6W0 z(C9N>LOb{YBb;KKu`BH&2`NH6$y|5 z*dm-UZXUK$F3|_thcHwu1U~(kH~_$e%?d6l9CJdYLK04IU@!m>1YAXM82*HM0D%|) z;$4jJTV=eWH#6e_6ySydboKOfh@%ou3?r6VVg!|8dLCUk*VuQD!I8Y?L^L?U(YS;F zUYW7$T!(l+@smUV0stTeKJ&;5U4pn#0T?%7gcRprgZY@UCc`ldSI7`>yY4FlkR`T% z%0>bBpausCoZnwENjHTZ1^`3WI?Si$@Bjn?N>~9V$~tJ2d3FSkmw^z!0*I$_;8MP#A!H3?(hN1Hj82|iNKmZU4M!*DwwgP1iHTSUF%<~4W?mVy(9RL78 zW)9FmbR$(`x?X4xPyjY&CC?~b z|NsC0|NsC0|NsC0|AS)w2)-mlXlg(@0~#NHo)>{UzpsP?0}~onB+x)P)MX`2{8{m- iig+o@3E+T0p~MMZP5`}Ky@ob&Mq0EoHoUlx2p z%V;J01SeMix}_qr&*8Z}sYvNT8dHJ<0*q*7Ni3oOqW`Z@0K>vnVR0K26 z3^0Kn4(4>SfWMoC(uil?WO3POWcPJINQHimKw1J2Jf;Hcpziksnx}H}!xQ7;~ds@H?&tJ8HE;~TJZpy!E#A-E*8YjSSX`O@RZj(tjpuc`$`(yR^+o)!3w;_Nampx zqb0R}uu~4oM%S;dG|x6xa1)LxN~rr(2(maDAdRz8)UFDY9&h-yrG z=Ll_S%k0V?2O5bEjov;F^IBvv)h~A@WGAerwhRzx*6ihx-hK-ow4XTlYx8n*fvbEF zXp_FVlQ|{9K|sT7d3IKa2y?+%3Vby%ZbKBFm{hNM z8!N0Ci0Qo+Xl9spKst|jrT;WGDm1hNM6hUf?N2eK_T8 zO-?@!EE04sPEZ8Yzd*JpJ)2_ENOeBs2Pf$~2D65~7JQL*If?jsronY!dFm1Ohx#sq z=&Ha*$@SMiCKK+~?)J){yrlFH;+J~1eHfaV8z;qE%l@ z_D}_nFx1qzy=?V3x0}CGyYC(XBOZRUY z>-gksMeEc8?r2>@_l`>4=qt*QaTk|NP3pyLvix`d(5dr)k%4PQpi)gA8JbJmjW}uGZ}LC}rw&y^ z))x!`zxW1nUCU^mo%R1x+I@2X_K&6`EYya~^f6yK(%@hC z$@hQ&AT|JSH-Lf!f}(~TWs_Y2{0Kk<#sC5Xk(Yn~fe0E14WKTysBZy*2p;LdmTNLb zx$(+Y68Is8=U}A_B!u_~g+uX`K5=LlAL(Eq>5L^@MCjsM&_BQlfEeKk5VzgKWmI!N zZ~z4W6jE)dw^b42)RlX~d$>ALkxl?AF$nu&0E)Ue4j?FH(Lr}+RIKzOB~Xof zyTD-NJkOi-QAs$ncmM$aL6`m0x|9$l`+wXJ;Ib8g@U%MDb?3r&q$3QjD8x8N6ib5v zu+Y57Fm@*i4k&z1#LE)EHo#rzmizgD66(NyXz8w!I$^S?LFEe-;ZX!j#Lp1iv4N-u z-~iXsfE*468_KL?upTsdhyVl$002OPQ?LL~I6J_P#T0D&dWMDpacQ5fP7v_B8svtd zU$v8GlPDk=RQU-wU?u)?0-imVC>$sRgTR%#Ex17{Vc2?$e;&@GWG3jkv90hG5U5?3h=_JC>tfm$LP z_wF#*$ZzY$5r-wHI7hlg76^a96$Dp>S5zB-QYL;{XGu0Db~IPfVy9JixN;v+&fex54~W|NG#80W=^1 zh8`A~Q>BM$XgC5LfB*miK>%(h@CL5{crX9}0YLyciM#=;z#EJJ00BV&6+&+SYVd3) z#Q2^B(*6Qy3?L)`wjkjUrU3g1bKLL{2moB56)gpCkO0aux1`?aco|kKoy5MQzTFEy&mRI}0U!l%5&&fsDgXuY z`{dsJq4AC*S#@aiEO3EByMtsY=-$!EdETmo?CRVcES|8zxdEJGzBF?h_Xz+H4afyO z9{j4&2%Ln>cM%t>iV_q8+WL+mr}U~+zkP=EJVrPx&moNfpcA*k^?GO~GNh-4U`;Q{ zVhk|B0H7mQRfZ%SfA6cqzU1fw#eH&wS-wWwpMV6ck??A8_x1T0(GCH>2p;}m{$I=_ zQc#b851-OQeEa7EumUZE7DG~;2@Z&;mqCwX%kDql^Ls$6s93_hT&&Tf fnjlb`gZ|k-N_>Z~3OoJ&^(e;XLLlygY5)>cn($o- delta 1091 zcmV-J1ibs*3dsn6000012`~Tv0YRGJ8oUKBK|>_HOrKLzaD}6Wh-aL!LFwTKKr)0H zCMlQrC*VUL!x24v02~ks5F?5y5=8PNHpl*dych^55J52s8nO6-h9G?h?f@1rjCh$$ zhZmIG@F1j$c}|-;tH-=tM{5m-fX)a8Kmh_(j)sF?u>L-Ovy00RXi1M-6JpjZQ60U(?K;c!Lk=e`iZ&|!K7E+A7Af>xSe0?;FYAilsiWc-xkDv*%Q2y3CYdpXh z0hAmgJ&|_K1&bTg;2pq63TYraNHL8lkyuDb&;SGg%RmAEa0)%M(%(gI4G-@C2m%5) zER&`X$IA2!O3A%(hxCXBPcrX9}0YLyciLL>wz#EJJ00BV&6+&x(lhFeg ze+$RC;1~!1R=5TBg0|oR5L~V4KKKa%+^-VICs>~U)a-7%3-{oEzg2}d(|6P1hnK|& z6H~|VFNg$*U~n+|U~K}>pf&7uX!C#YQcb)GxUfFLJHz@-ru+rDIB2C63;sW$V?>nU zS;QW4Hh3GMX0^nggPnZw@FpM<09OGZe+E%PpaPst+N|%8@-a?Fjaoei9|Q^&yc;E} z(b@5$LElwEb6x|lBg6;}EI@#tqn1JMkwOFt#3*6QAI7CEAvYsPIEcM*0z#5&YJiC> zhUdl;BnF054nJ?4F^CHTBT^Q<@&;j1jodcXJSzfeeoGKxh6#l)iB=etAphO3aTR&a zv%t2#uam9(05Gmc!KuRU(LjwZ0lgj#yo33FFp)_@J^)?vQI8IJz~lgrU_(f1%Yny$ zi3E^(;z!_aAU7x|o2Pe)_jLhRC`e&iE?9Cj*AOUALH}%^1{Z6@zSZQXw%&TZ0gc8& JGUylrN`M|)#CiY# diff --git a/samples/h264SampleFrames/frame-1291.h264 b/samples/h264SampleFrames/frame-1291.h264 index b2034486e9adc32e33d1239d636c1bc6071b7b7f..7ba02f4cd114ebeffbef3752de43855525b4a7a8 100644 GIT binary patch literal 1723 zcmV;s21NM)0003AFaQ7nL7U(jyai7|LQ?f5K{&7gKmZU505~ksqejh}HfYhKX3c;9 z03JsG0Rd+$00aX-_%JmQ#s62P?~I9w<)N4WX4`zG=O9WkpbI>P_7*k(m0WWD`4x}= zfB-;5i=9{k$|4-v$N&TZKmmefR1G#j-+RCS5Ceb;QQa^FZCmAmn>YXv4ld1AW13V4 z$wKF4Kl_b~mbm~B$Pw@}^&~h+wB6ft(2h8N5Gjz_njt)xZ0H02R~89+S`afG`|{oF^|}xjZGs@PAVa z{`vv~RtjEKTM*Cl0TR3opRfP{C;>#6H2A8h`d<|bOA-+Za5K=ppS)DxgAf2X@u5Gz zn*ny= z3<9i~^5#NBHWG!sfE=Qy)U*gaPLlOHO&A1mMS!M?01H*H3O2;di7)@&tQ@d_03a9u zHj&KDeeHk-NN@lU1OPtq)JlEv2A}|n>u44$bhK=lOu%Oqs~ANfI8gmyM8E(b zA6l6JlG7f(0YLyA_%q_4(R*g*eUHEE0M38_ARU~m0fp*2eZT++265II|Mb5DnJ+D2 z|8bx}-iErkt{NiC`|+x&Rav4Nu}F?$xG>0iWWYS=5oo!q{`&Hw;E z0H8PoUP8=1A%%r!L#$z0Le+?hG@a>wJ%K_<;h!;-qNiHB_pND2egFV~00Z#Q|2SV< zB7)|k{q2nFA8Q^4VUiSb48`u=6y4mPQKmk_3A%FNV{7C?eB{HC)+=P;+vk|}JD9<>C zz958*Mtmyr#-V)t6F>;yJN*NJ0D?Gs5h!5d!~g^i002Ql^Z*17062r+_y7ajL;x5d zQPfL_8VAJyQ)mVP!4wd5CsDzU&>?j#eNRsC${@dnXaE8Mwo0e~3IgD$s}0CgHA9&Z z62RiU`W3`BdX6z@AhS**|J)t{L{0<_(tS$764w9#APfv8Oz_}F-;nB65r23AqMYFk z0T=pEFDK3h02U8`L6~$W&l+8kK%dosXFvcD49-=6qO}>m@Ct@Tjk#aTJfUdAq zNt~hx|Gi!SW7LgZf4BZO2Yjr8VxGYNaHa@hfCaLLLSFKoyN=)Gpa^yV00BV&ZYKB! zuK;*30003&06B@i0jt0pi~s-uK>!s(Z-8p>5U2C`_!AZaKni9EKmqw_`Y}$6-Ab0& z0RSz&K_B*@5JYs#C-_!7SNi<+wS?$n+(_e{MZ(Ib;+9$Qm|Nnv*Ea?(;l>66(M3hNN0=DMI zCa+9S!Rna@;W&>Wg8$v~!Z0RK@j)ORT$x6m00IC!1zLv$HuxPUCRlz>X@L~Nhy1im z?aP=0q#aN%@7N?ZDqyI_f(y1*(M0PH0oJ}xl5MyDgUL657=YUf?Oz|&3<(@0P;?o< zDZ)U|yf)R?crwr+o^G>gpl;>~c!;*J_#HNpp?E?ox6cZ|nv85fTEIK$*$<9@DXRiE zPnJw)zdXQeY&a*rjp!_ZGO5c0qdzjlaKj}$0}Si^!%@M=ARPb)m-TRe^U8rt`a*tp Re@>4zP=4Q_;$d*WKXB>fNh9w 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̱+F)amRnDzTND#V5YUEn+*N^ zzrfT(j*`bI4FCS#1euZ)gnASG;=T9J3FqKUKqdgL0$>TF0+8d-9fU2zmmYMsaX?4R z88_~k9g-n{rvE*ri4WVfi=+aOi>o|_z5*+WNbM; zpP%n=3ggTRo{z?P`V}$(s2z$9UEly=9!lP=px-n`F~`XJ{`Byl&%l^p<>eqq265H! zgVe~M@M^z23#=eEqC^BbvL*u$hOQ{)FK)r!#3rRM}08;P(1Oq4lrGS=DsY3#a zA38Y^_{8TCs4aoVS>gqW@Bjh;$_fw+tu4UE=^)00aTZqGSMp5Ck|VsK^MO0B8pRMz%~iMCrhDfMYF+ z;DLAm&>eax&_OI|M;)>@Qp5lZ93VN>+GB7pwjjIj5C8}P00j@LvqTSA=?g}n0Ne-v z02BrS60=yl5opk%c76jm1QrKT*2^>1h2q+!JYEb?B#6sbCpS!7RBG@L5fv-1fjf)J zIC!{VkB3d*JinkI;=xEp012R+{}DIuvhWGPz^;G9rgD83sSDgfKf*USg|tc<*1)O^ zyFwQq+Q?u7-w$&!Ding0-a#ti0yqGNh)M9~0}HCu>Hp{Z-Uj%2@IX1Lkh%8=!0IjpVPayE$?pKg6=vKdWb{Jebr;5Tz5oC~98iXtO>lfsX;yfS9soc8 z+yMfBV%{7pD-&~+O(_)P?*kZ8=h5In5@HmsdNwEU00afVtZ)-Bo6=>*1>;bv6M{#f zf#|XW!5u}$OcoSR009q%FcJW+ZNZ^ZbygOpd5cj=ITZ-k5BGG0K$?34T+Hv z4GBP=)B>0RH$VUY0YLz6CeQ}20C+F}00BV&If=9ZtH2wK0003&02M-Q0BZ0WXY=qT ztOS4(%n%(1Pz8a)6tK7qK_&uUwg6B^D)9tv3$|(d)s4SVM5F%91fUd0695&Hzr~7F zD+VA+gUrrw00;p<4$6a201ys<1C%KC-oy4#F!>=40LVS`1;u^+JM8Uk{e}XZwA1mQ zcmLolL(Y=R6r?BrgTaN4#Cj9`;vaqU!nybp5P_g30Gco<9mEG>7T|`*t3&O@zq_0_ zfKRaNk9=+fe6tD9LlfHU_nyEj*qppZDHA*THq*py{=K)JTDF1Qz-@#(ss815qh{0K3S!0hGpDz`YSXVL=!xcvJ`4 zx2tL_2c#XX_s?WQG&lgVTbruPihlpAKp0Nv%wcR#2rK_AK?@4({j8(k{;UE)x+Y<} e^Y45xOOlg7YJ-2Zn_Z$!X8ZI%8<(CF@C|Iy;p0&N diff --git a/samples/h264SampleFrames/frame-1294.h264 b/samples/h264SampleFrames/frame-1294.h264 index 35ab23530cbd12304ac48a0ce0062589dc0ab84b..f3494e1860234c1669be2a4d256e25fb0dba5426 100644 GIT binary patch literal 1362 zcmV-Y1+Dr30003AFaQ7nL7G4syaj>3{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIFEqv06+jR0K=mCU_S$yNtg+|bzkZr01yV6fL4g=oC>Yo zHxBI5nZMuy(1%wEL82^@X!UylNaqlu8ZDiqK}OqC!z3862JI-$V}m0NbkAT^02JHu zfEdzf#ZdU0)pAMg%-O{NU;qdKfB=A?00<9&Su=qEa=;2e=bPsC z1K@P1kANMC!$(e^`|Gx0`f`=aeck^rii(+*Go`h1dl&$Fi%s$^zuo`Q1-S|U0sttz zq3SvRdq^9E4I`;tHxPJ^hUgE#KoFM#$tce%M`q6of9@~rhtwhS5u_DPLm!N&Fycsuz*+q5ikP=9epOu zb9*Ex--9e5vP;WoapIyZzx~L7;4gH9(qL2V6t(~MkN^k*frGb;$VhUUj3O9s{lEdn zfD%ISyfQ8_R#QHhzy07O5u+uXK1KMY^8Mov004kKT!Vf?xA=ERZ&;9@pzm=OQzg?mL1i)udGsY8SX7)S000977 z1^_6R0mazbrJ%g7anJw+0YC^5qpXDHqatKy1wOPcW4Up`Jm!?2*ge6dsZ{^}{ICFI z$Tr0%D4vD*e-INSARqxC73ysPITSD&}{Z6j$;n}h=ej-++-*KOs9JmM4 z0#yF+3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxLL%|4%;s65indZO*!Tf+Q43K;cKsx|A0Pv0_#Te@&^JGH+0615ux0JAUylAs)TK3?!Zo_f9P5h=E}S z3AQfqNOY8lb}WDRFh&0uGm2k1N36CAA*P|r=9(}w5;JB^ux}pH@7@dZVJNKLcDcce znj078v~G~rDK@PztgxYmT~2`11V;5OXU2Z-f!`k}M6#u)@0096% zBBE14x1DRx9wJZR>4hQTMad77e(cz!06az_vJ{-Aauognh$`*o%TLu~?XI^Y0Ax;} ztt?C(NR{JYFbT03TJ`W`ouJNPnK8nIIJ)Fd_W_6LMspF@izG}0(*6j4o7tOgY()3~ zBsU?M#eb-!J?ikx0mBpYB;iP{B?7MXj06NJnZW3()N72t-J$cb#RAC7+B!4SxD282 z_`+y7Vz^!?|L%Zb7%e|byHqKMQNMrm2pAYaXG}Pl86`g?Xv_V>0RROrb$}T2IfEfn z?O%WYJ9yXt2mt_Q6mTxjkKo6s{10CLVSuQx5@L(M0l)`9AvQt=(2_)a+TFec_Y`0?hYjMpYXrL%3Y= z>;MD+g&8)ae;zX7u=Du%01yHKII=~{)K@k;WL5dG?Fg`g5kgu%50Y;1D|LYW1PoDt z2H=U18Ho#U$kjik0qBMncm&8&>&5`ZfSLeV{MBWMWBnkRKrcW5KoM?$2F5hH;K4(+ z*Ap}&qWDS65`WwP0tP54adO#`#Y6BTIRc%)!eSZ(BYp5#jk8q0c)$QaFaeM_5M*c1 zsML(=r#t{A=l}o#K>%(h*aoivcrX9}0YLyciM9c&z#EJJ00BV&6+&%*YVZjQ0YC)s z5x`LvGXN97MqjubB9GsI#rOgF1cyAH><;ifW(p`rB~~5q)8l)#c-;I6rSK8}K|(|i zVh07dNBsZ`zD=ZKVKsCSPL`qcrFWpRZx|6l&-DcORw;CrYm8|M#+iA}E`QnUBoG{r+$}Nj(Gm O)qH>df9nQJfLGukK}M4R diff --git a/samples/h264SampleFrames/frame-1295.h264 b/samples/h264SampleFrames/frame-1295.h264 index 729698fb22c189d6849ca2f45ab90bdc314ca495..a36dcc4ffa9101ff9ffd26504b9ad27cbfa71e62 100644 GIT binary patch literal 1119 zcmV-l1fcr>0003AFaQ7nL7HG1yakbe5D~7$StONa>PZbfA$xX{GQ(4bH(z8I-U9Aeg9nG^+gK z_)KMhAnA-HNFsEVweADlumylI!W1D-yN1f7)&B4R3IK6XO|+EiVm^ABt_;6WbfYQ= z03u-@|K4Um03ZNsfq>!yMxGQF5FNa?3;@L7b70k#z?OQ1a67;Q2RM*IsS4Wcv=#^? z(1A!A57g8MJxG%EB19Rb4E`E4051Rm07XP70fGxTpDm;R;i7;As@M(#MY~3v%w5R9 zGB-5!0q@Ab28Zsf9I=1|38Zeh54-?^&?fSRo;pdal~Av205U?3&6IO~=l}!vU;u%G zZ{c86?cz270s}srhI{}EilFdC3WS#8A|P^E zGuTW(T$|E=-+kZ!2ng^7ECF00QTw_V>0=-eEx2$11PY=+Ihcr^|G+>XRIKzWrAX7? z+5ka;NNGu%^ifGTvwQ#n0AUyC$=!tU0$s-h6c+X5bS)mW-HGs}=?KFkj4=)sa; z0MmKYjTV91nTP-c2!H@UgA=d-NH}xAh1AvcB|l?Zk&m%jM;)8d1wY`k<|F~yo-hz} zAdel0S8)c#sBl3%QI_0O|H1G80s=rVOC9jRo+=jlAc)h;U*<{+1G4uo@H_ycs{;da zOOF*Ah(Y)OY~r-xp^Ee3CUGZqU6r8+5pr5ft)G|p+VMM9|XRYEvI2Z_cx_}|r0003&0B$Cj2Co2kFaQ7nK>#_4rU9$K8;k$|0YLy2LTP|%@Cga{ z6P5yC2_nK=0-~WD1uy{qmzx4%U33FC;ID=VxF5Qv?XdZGFefjGfS?0e;v(kYX(^Ne z6hC>20oWI9{s(y>c=#-u-+{Htn8y3ZE7t+M{=i8AM5O_#^l~+*9}&>6%|_A9CI5Jc z$kJl!%F46Hz?(EkNUO9PTE$cXmhwTsArJu5Rh0k&pn@Ys^B6GXNFjYUV1K{vMn9#P zmG2aJ;wjIeo`#h~YqG`n`}t2NxcMnFo)dvIziPNZC;~oqnR@s#xAZUlTT7H+YTP)x z?hg)|N%DyGpAS6FGXq($*WJ;zW8>|~?P-J|zx~^b{Wt&!1i%I;K(GKExEm-CibmD} lkZf}qsZae)kNKshC%YkFW8F-k5({R}L`~?62KoBJ+$%CRf z-JDra#sQjwIdIFe4To2FKmrs93VHp;h=@Ne4)TBu8u5J{qdb5BCQ0Zqv_J#^U;z(+ zW3JOWWCo8w?f3x2;V^(UloxFRz#8}n1p%?3Baos{2^JgH>0C@U{;j$*K+B5fzv`9o)yIM$fCa+{2{%uP z!r+6~&xBwDAR&4MG9*tEf>zpJ0?;FYAisl(@yLyuu~1WTSGXez_s zQ^q)4>cs#717H9UI^41V1_6LD`~U<72UO+iG%w^qACrJcCCK6k1Oj0k>>;FF5Yr$3 zumGsw03acFU{$Ej<6;4lHy;5bC5jBPy3aMoG>a4AR71ldS`D;>3-UOm<4Pk|5;=eXfC*>-Kn?*%wsu?SrQxgn-~j+YR)vyu!WjEs^Agf< z1l<4t0YLz6Cg29I0C+F}00BV&If=LdtH2wK0003&02M-R0BZ0F3HTG10$>Ru!dwEP zkd6YF0AEY-@etEq0h{nw!vtLq-0K?+N^S#}!5jqe5>F8qP6m)-U<;^z%3^?a1l{-} z$`a+n*{|SjcT6$6(rg>9fJgyHDM1#WKEM0#kPk_0oku;s6M3PN$H1F3NJznfjxYK^ zg~c6R0So|Wnpn^PD?u7uL?^b?U{X_HPx%d<(QHC%fn+hxpRLLNx`>@J0`2+)ELt-k zB_?yiuqK!9RR{$DY}CtiV?6KwyhiP_8m55znBhn^LHSKz!BffxV) diff --git a/samples/h264SampleFrames/frame-1296.h264 b/samples/h264SampleFrames/frame-1296.h264 index 712e61cdff30ffa377976e40868de61943466dc0..cf2bbcc0b7f7c84d9d5b5aa8d9cdc36ac48eb70d 100644 GIT binary patch literal 1895 zcmV-t2blN(0003AFaQ7nL7IRXyaj>3|AY{ZfC57f409JM8B#=b;Yq0%ffm~YusjM~ zZQ+~O>AT{kT}3EH01h}r0fNW-hoMpv{1EE$LaVczpKns+A-U1@5a8%rW6UZaK4({LpVTRa}^RQNDLHGa|uFwLWtLJe5 zRTvo>4t_uZ>KtH()kl@8H{DOD5Jyxnin!|%$b0|{ISF&^rFh7aDxdw}20#M{UU0!} zq%T{7r~a@300dl3mRJn56*o>!00|d>q8;@w>ig8R2t7`c^*T&n{1^k_N7!HhbvyuI zL`d%`aEi$1-~iwlGp%pwz8z=XYyS9U02#fUBoSzeY0A4tG9j&mNy6#|=Fmv^ITW-_ z6G;E<-~s~#?3^~n;_0)(Y|?-rfDVnIFz5-_L@$QRI&F9W$|mDPwp!?}6dA@U1_FQz z0B}hk^`lITEMsyX{^58|bDEG-#qD-DU=lzE#>7FW4=a9sz!_8lKv@`LMA>vOS-1B9 zFagaC`vf(n0Y}Up00?`{LY@|YU=98d0YNEwGs5u;#-ey$ysjPq0DuUAD|cQnH=4!J zr4sxO-!f!4ijGyE`I=ue4@Uk1paIkocqFD3CY~P{55)iiZ~$kP0OxqnF8I|aLHN@E z0RUM%0{{gAI78bq&vpaLxDW^g(8a)^PkI9?0Eg7;#CAM7k)(owr7@- zO@6m|GZjZyE2{LLtKRko>&glO0nX>tXt|OKLWO3^5Z25cdI23HltJQb00aXy&;x)H z64o?I2=!r&R#+Sh!*l}0e)PpRK+r%0gTsIzAS;Kyx6VNjaLFm?3q>zM;sS;u5<^F# z3;NTu;gT~V05Ay}2_XI6HccjQf-VZ?3B*!Ylb`&Y`(A(u7LATHbxW-FyZd+mF};CG zws!U>puLL;gAYWA2t`t`!JME0zx%;}j{q&YfN)4bWJt^3M<1_Y_O<^6&;h;!ztA{1 z5JwMUB>>%s00rqBokf+!&9PNo>` z0vA%()b!>^VMg%cP5=l95$QZqj{OFcU*#GM5WfWBKnUdRf$>_lnZLR#_!x$sF&;X! z=XDxq|KI>Y46Y!j9ID38pju-{DIAi)aFJS4E{Og$)f{@+_v-hcpL6z;Ir zC084djCSyVWpE&@oiQggm~UdRz!NASE1H2Y{&jJN0w>-;;l>@RM^|Ybv)lp*iyyN) zmdWOf(g>oxHRu1o-Y^Cge!w~XVxV$2LLdI{>_}ql-6t^@-e3c)1Mm^2Y_5Yx6B2lH zS&bx)I0qY^68I!1s5TE&X#qmmXMsa+002Nd2vmwgf^TR^=Vua|r{8P$Kn;E%7)eHM zfp;)~>ReO<1n$rYDz!2;J00BV&ZYH1x zuK;*30003&06B@M0jt0pi~s-uK>!s(Y5;2R3wiwhegwsUm;wofKm!QzDVs#sKc*2- zuj~Zi5yuRG0exR|-}k@=X@^;yn+M(`$cx8*urJmPD_F1pyFz4xM;_%{vG8g@fBf)% z1dD7$GX%?cC;kRHc>g)nqOC{eh=;t;K!$g?CM2k!^9=V-@D%olYnS4gQ~&>~nw{&v z6kj%BH?3;Hh>C?GpP%^U!oGEKgWD8XO^yGqvj*x|wf{$A2{oTU-bVF&g4JwN`v z(CaZ@-TL@a5&!=H5MD~&kw~mikflR_!hK<+83_myu7xB>9DEYv(_O!zg%PBf=lDYe zRJr6W*o@AnDmd%Vd_=;FMrPJ;;B&&TCYQtr9q|ER>aZ$19)1BWTSUg+&-^_`WK5r% zhzvM|TwgW=7zS)HpI0FXiQ-UO5@U$thzCRiwli9Swpg8ow$wIkpcLDvT~?gmz&UVJ h5!5?geeBya*wuRb3iyDwAc$90c4kmEO<;iF5f~g^Lf-%Y literal 1522 zcmVcV>5HcXt2y0QLZ6I0P&p?g$w<`L4n$ z=o2vkDhmJufCMoh_iZdwz#jM+nZySL5l0K%Z(kYek@vO?2Wr#fe>hJ>3U~krup9z< z;c&{P&6WZ|U>g?)AvdUki06iJxOw&l;|LVYzM=82kN*6-4_&)9smG65fBvQrB7kCw4e(fL}Wdcx}v9F00udS z5HvGO4@pAi=90h83{VP;pv5!51^f@lM2pTqR7GmQp#<@vP0)0TK^!3tIJU2UhM?h- zl{5&D6XOw9ZoCbS0AA$quDDZTJtu&I0*s6*!MIc5004k6Pvgw2u;~JC6n+2;2*cbI zSQZ}I{KV>n7yt!;5Exl9fRJWn7K2GGdeaUL!O2V4W9hTMU=OgWP`)wKMcIGs3;~81RBcpe zgT=TJDM`WrP5{BYHZ?7fZ|K4M_J9B&3JM8Hkv}k}Mgkr9v(N*AG;;9TNxvdrQ^3@b z7y#E_B1HV^a6raUMV8}*l1{sYb@`IZG4*!4vKL3r`1{9>LIJyQ4 zF4bZzykcUV@r1>MA`r?e7u<06bz1EFh7kPChRz z6dhSR%@Qzx#YN|vNmLNqxM;kFE}(Kxw%7e*EGSvh9LDbUzb+0ZvR&K+AxtWv9S@Sr zH}(djtuVx)5=1}u?*X15*_8{{rk(x-Fa+HI00BV&ZYJmkuK;*30003&06B@e0jt0p zi~s-uK>!s(Zh&g=3wiwhegwsUm;wofKm$$Wt+bozj4UG9bJz*MBaRgS3ysSA)cyb) z$%E`i5Ni+0$(a>GpI8yH285PJhwZ^JA=sgA)w?1oDue&?$a)0JaxjQ9G_ZeszkCh- z)Y#XYeOYZ#9$1KR(?J6qo7@oqrDp=nGyhNU6!K&ebM}_6&;S0ebl0svrZ1aMumArV z1VsHr>fQAJ{;tHsmU6%rkqJFAM{NK7uK-Zl3fx7YmnEhXW(2MXvc+9SQ*wA#1j7D{ z#fk_H&~yd>PP->Owt}EI0VY!2_A)&VF!-+HF6OtFZI=h=%Ae8lJh4)}zW7oR|Nj6G zUP|7PNUTthq@96;+T&Tub^!#dp^8}rk3l*Li@*9LERCiP*JT;O6)t%aWF}`*og8)O zIx=BJqcdwS@HydF6HDR*4)}neJ!-&QDFohN(Ayy?M>_w9sK$)B`S6#)cNHhYe?UIK z!WR-8sNQBr`q+~kM;s6ihy%V6tw5~uu$;kfUJdHB0d2a6^?0WKDJKHh&fu+i_p@wo Y)T-+Ju$_oX$iI}ODeCv9UrPXpz+6m_d;kCd diff --git a/samples/h264SampleFrames/frame-1297.h264 b/samples/h264SampleFrames/frame-1297.h264 index 3c3bac6aaae0b9f38c14a1297cf3d90704ffbf5b..68d1707df7304c1902a32fac07d033950e595150 100644 GIT binary patch literal 970 zcmV;*12y~r0003AFaQ7nL7Jc%yakiN2szF8n=?!Ug*X5p00;qqFr+@6n;-0$G{8kD zzh(dcfKUfKGFSkRKrlC>3>CFp@fv*DAix2I>bKV903ZMm2q>Nm$^s)Auu(R4fB+x} zIpfiq!AY@|3i2<%c)(x)AQ({^p`h*<=KMa1n2>w`1Y$)gSk08K%>Doa0Qv|;IZ>`E z(E|ZBehPqS0_AkDfwNE@!VW+HAQ}Jy1Hd}`R6dr~vJ(XbRSW>|0N{8Zngj}jnR$RN z0mcm;~17=cYC;zkrCDbj_22Ydhs zfKWZy%djXR4->Qhga3)PX3RBrP{uQW3&v1{3b_V}G|{_22m~-V#tZ`Q2`o5fKi1Dk z3+vkdf@lCTfD}ytU_2X52g5b6-4Fl}M*sl^G++P-DS$s7;si$^zyLsm00akn4S)}Z zu79956p$J+YW?g0l~k@F2|P|`gby<&k-z{z zsDwZPvb|Iv&E*fP@!kVq@C6BoVla#rbq#o3Uw~lef zIJ?9lzt{<&Ad3nHnP3c$^jW`D1uU5_Uj6?E^j(9rvB=_pm6!MlpdgEYX*r{T_X3HR zVy-5$;GWag!jM7NShubrPWyn9aywt6DIC8ig>&#GaX~?$Gb|E%@@PNe>Ixr)*#U zM`ehX4>rud|L^fRtFG^V{=!O59C4BM@a8B3qoo?p5F>$MX-htM_!BswfE*9_#QVJW z|Jw>o)@nxA+zbf}Mo(h8^6yptL2VhyIq&`dKk$e4QfTR@=@wyg`~_i?r*-ffXK9m} z|9$Ny;?}T&KmPb~cVUbb-9!LdX?R4C1AsEBbceroK!OuzS-Uqhf1M2^+AJa|N!Xn* s4{F>mM~E;8BYcY!G9&aKi5p}gB|dLHYEA#=$}*8w+3(Mn=ZSzsV7bkc7ytkO literal 958 zcmV;v13~-%0003AFaQ7nL7TuDyakisNeBdknS+_Q>s4!kp0&Yyffwa;0RR)YIV+AZ z@m%wMc3%b}gF(UItQQ3aKmoMO(3>e$6YvBF5P4kJ*g8`Q5hMQK0Uv?Mk03a(u8nV5 z|Ly~&009NTl8^xCF%`L2sEZ%_fB-Q77EBMbb+C%^Z0i*x}frI6QxR=uSz%CFE zVIWo@CNsbo0RT|t5Zp9@3|`>z{!4%ZP%t9Z|3T5w9)o09H8p?&00O#*0cZ+4{r?M4 zFd$x*1h%-7kANlsAc0K~LB-CUOpwxL>(Y1(8N>yZ2goW7)fmdf)1==3 z1_B5~%5)xZ)O*env`|R;kepgzw#_4yaB7g8;k$|0YLy2LT>jDgi=v=@IsJUI%ow5J?e79mH3pUJ?|J(dc z_%!Q(@AM){njBFP{teMWfyr9;=ZF|#;psug&l>_~6c7W0_7InMi+}#S3Pfuxq$bdP zjpb+dY}Se-d+(T0H6%2mq~Z-WD60Ntup@~_40>R gVn#$aXg_20hzqGfdSttczwVaOTvVdFgPwQhi+h%Q#s;GPbAX*YpmsdxC_KZv1f9_BK z7ywaLvz!^GB}H2P(qpYCpbrC08Hv%qefEIormSEdC5!@l#Iai#00;<>-~b>T27*WQ z6$;dx@DPg#F4mcQr$S0ldH@0|U*HS?98i@`r4HR=UwbkRUA2G$0|;ab?iAnLd##D8 z@H3PXO-c6wgtM5vdH@4q0HZvLY?eQd0||5~bb%EDqRB-lkZvH%l@?(qaH*Jn00aXE z^uJ#0NQty|?O(z80A(9+k*=D`Y=(k)25uLGQ2 z3MASt7Ur4)1k8y50zUSYBt!P!Y?%j<()Ib)(l&a$KBsT~Uzw1|?qP8Rp{n5cVmK85K!IS$5EHRu1o-<>YM%#{Yadzbz7KDMN0AA$hPKsfCQo}mva3iNB}4pW2*<)f^) zk68dr;J`<<10de@d6t6$jPRGhu{;4#%Fw=_?7DAqcU}MhfVhJc7{LLEhbBGvMWMhK zc)$i7zTg~Bn5Yd#NG<>C2?}@Xj?7Eo|Hc3gum|8fL~y?WK{SOR002Qw9O+O0zX-qp zKp+kYG7R`cUHO`on_xgN;0SgA00BV&ZYHn>uK;*30003&06B@Q0jt0pi~s-uK>!s( zYXEBS4dML$egxPFfN~KEKm!Q4ievkCe)S*}D+1rR07InA^dwcl1XBV(rQr*(dTg~b z9{d1+kH5al3`A_mk8H(F{XkR+gxUtcP6S`|V5L<({ssoEG226n4dPE>sbB-3EgTbn z*w~RH;FK`+8z+_R4{qRkwv401Zg+)pEud^TN5KcX_f1YX3w(Wfs1W1TtIQCRXkQM)U9L-FJ z&49rd{o)y(B;Qr-eLOGE6cqCi5Cc`f^eYV}LxwN_pO~mT0Gf_$iH#rk*iUeJETkh~ z3vwXF>Pd3efggqt&kFqf35M}M{vRFS1b`A=)C|~5LLIpU;*(UclJz3CNQxUHyp713Pv&Z6^1YuezC=I6GQ=xSul?J?gGyt;5I}! XQo9wV-!^T7tL+LiBi_6`@T>+LbpRAX literal 1139 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 literal 1568 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 literal 1116 zcmV-i1f%-^0003AFaQ7nL7E^MyakUE6s9~51F#A{5L5zqhF`)VegrXI012=F5C(uK zhHr8vJI11)g8>8wkWfNGtRX+5h#x`wfCHu@A>v^&8fH^{;2@-mc}|@=tH(TCM{5>1 z4B&ud01zcu=p+$-!}$8ZAb>3BR;XfUD5DFM$DU(3`kWWjfIuDC62cv{3}8(|e}ED_ zVZ8b@06+#mLc}yk@Bjn@M?C-lARKXVrU=YfgE6(qn!p4B2uOoO2qL=(-v_`T01yNT zNz!2Gj(2AkbTNQvtRvFkjj|1*FT5ZD3N z05AZ8U~$)Noi+nUpmzKKV(^e)8&Y-xSh&au;ny};0(TX&II~cl13&>lxqo0l!r?(s z1TcmgJwFz3$U!f@8jyMb3>1(A3_KG&dPR!jZ>P0#=U0YLz6CWr>F0C+F}00BV&If%05-1RiTqM@HM700&co=%KSs*kQzrcuGiRZs#zH~rq!$`%6sB3<| zoDr5{1;gl|AYEzUSQAU)7I2;r2?PHC3WqcR@OQU(6dcJga0*ZD4*I0%8Y8u8H`?2NwVKOGaX>h$`Rx2RthRYs5$p8PsfQ z;^+;$ON6u1A^iWV#AN^$SUseMD3y8n{HVu09YX8w}%cc=uxvU`g{0`8fgwXu} diff --git a/samples/h264SampleFrames/frame-1301.h264 b/samples/h264SampleFrames/frame-1301.h264 index 19986e0268b8c406fc3c423a9537d1e68403c59b..42cb6fcf6d51c90e14072353501193bfd61a6caf 100644 GIT binary patch literal 6750 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 diff --git a/samples/h264SampleFrames/frame-1302.h264 b/samples/h264SampleFrames/frame-1302.h264 index 412041133cb84f53a3b2243ba353492a3f1d3a46..145ef87c28e4a53b7ccc20eb7d440d82dc52a42a 100644 GIT binary patch literal 2879 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 ZNJWrQnmpVwRe2SjE>4fX674J={XcN|&M*J~ literal 1074 zcmV-21kL*Z0003AFaQ7nL7HG1yajg_6qWmOI=O;2p(6*qc;JB0m$fKu5A@&wD6xYb zc=#-Dfh5=PCN)I-0tYx0u4k(k zA%q=&{lEe(2PVD2M2@6?WxxHv=|BKMKt!YfWIsJ{uT%Vg?f?TA0?3Sig3(dFLR|K9 zSHbB*IRQrmieB8{k!l&liR$;G5!5ZL8lZAbxd8Cpd_6il1| zZU6?1<_{BX3}n}>|BL_u1`q%chyVcyumGZF5qFGfiXO4S%l`%tYJxtz@Fj71Ow34V zJOcn<%Q)ab!Mu9n4~?RA35l;JzX+N*E?8|0EC#@b%V!KH0TO1BEDt;WP+hR))^;+yFiX47GdEOi=qddOSMafCvCP zDZpS*Q>^KhKVItw}f{YT_V;Pc2A)KZ2TBCU^UR2A_`lXj11^RPZ+QO zsZSxInhVogE<8hk03aN3L0>*T0$Up2jX+WWLIo_r%_?llZVDh)r|$yhjX|YRTLVD=06-J&jEgu4qalS}a2OLb1{elb*Z9et{1k!9fD?28 z00BV&ZYG!puK;*30003&06B@K0jt0pi~s-uK>!s(X@F|*1g!x;3rs2d1EP%fRrirM+6g>&#GaEMR?0Y%gezxoVXjf$G7zfb%C zE{%e;7NJ)c`|gB_lKQ{@@K>f$DU?@`48?#oo%pd!LyGP(Q7o2=0%j%^51~VWdUQU@ zivL#72n>g&bZ;{pmq+*B1o(kP$qsF6U$y)F1ciTBx&aGnfso==vIfHM6(@-n*YoSO z_(TeK#3{h0kI#diSQ88X;(|cDRKX=T^)LST z1VlQ>zW+~u@&#nJwbB3kyI?cldcrI}{@=n_?)AUF*ZL#H!R929Adr6!S7qipobLm7 z^dX<_)>YSuA3(4z6x#^kBrztD2ijDHK|!Dc`5Ga*5#Q&y5N)SMxzQD7jsMUAFI>+E shkl@&IQ*`u5*$}^%S>nMIhjrP|N2Z|_+b6E6Jrj^K;0f+jpyKZfX?;M*8l(j diff --git a/samples/h264SampleFrames/frame-1303.h264 b/samples/h264SampleFrames/frame-1303.h264 index c00d82810786a2dcc076c68ff202e907342133ae..82c1f0f2147041709f7e858b4cc84bd393f10a58 100644 GIT binary patch literal 1463 zcmV;o1xWe;0003AFaQ7nL7G4syagX9Sb4gDSRUU}*TEgU!U9UUIM7D3a>tvf1%dAI z;2;G@=majWx7j;D2Lma91{la@{g=+_!^1EHFb+`dC}kHSr_M2e0Z9#rs#{Sg#>Ryo z0@IKH2o8V)cIY+7o5KuP($B0i+Re;YKDzn09ZlpbL{I+#gP?`T0;?HRqe0e2b|M+q zu0BFvU`PN61d5>t1{&FlYejZkpWp?CM-hJJ;u@u+wEzHsU@bDh4HwxG@C%7Rv%l^^ z!i+mqjxNV`zkkKN&t}Znd;me{(1lq~`UEmoO2hwhfCB(2*}^m@EC~oN{i{4voB#v@ zKnEN)48HyL+6OH%5DyGj``!s7&C~+G^GGJX{CeO%<(&0`Uv(b`3j_T~p9$nGZGg=$ z#b!Lhcs788tD*i}<-=%R8tO!@B86Z>67?X0K+DTH>jbk0L=)^#tQH0)01faCui$Vf zJdPg33C5pm*Z-IZ8|Ok6Q~>S+9u)joHbBk8K{V|L}eS06I1R!=NW!5WX8M z>9ih7mM+35tdthfz)1ajdW?fiat0mD=(9iw^#L50NE+GAeMq<945|R2EQ}$o6K&9e zB5xWD0`y%70MNd4dnm1*Y83Fa1^}Po02C6A-oG*$i!hVC6wE&W2n-j}duy?D+2J;6 z{tv(gQ8ykXve!j$kk&Cvh2c1>RH3Ge+MpBwPy>gN|J*dl!p1iv|L*}%0O|<55>m>Q zPY;b_h5;l1Y-~gtfbzHJ-Y5VQfCD_R20O-qcgATr;06FGp}%03w7@9&bHD@M_jrZk z(L67nS3!rs00;nx61REd19_}iluPsf+yDk3yYeX)vplsBYxTZl$Z-`MuB*~NSE`@? z6BtDX&@VGXXHp*!ep(O+FBt;`Kq$~k0WxAT5>gu&Gxy2{a3J+9eMw&t#{pkBKomW4 za;T8Z3^YXgIgm~Ud9K;gz6sz+C2yI+74C}3AH0%6?h;|v5( zv%r_ZF*pP=EN;y1TPv9}Yrp^y4=@m*E6xSYP=24#d?^Q>Fa{NVz&ZV5pmH~d|NUY^ z7iQ@>h`tZ}zz0|d;3H1iT?UROBme*e5n;tc;FrX}06-8NESPs^1e}$nO_mHi)6IS9 z9SsBkhadm|0YLz6CXfcN0C+F}00BV&If)%>Bh8aI1jc%h*WmN>{kM(8fn7}-UffEW36Stz*Q4zxBvQvGR+e|zsnd4 z5*Qp^r0~9e1jP#gm<1!k&|vHUB7n(gz>WV#P+%%7Zyybr9Mbc_A9C=BVK)25AKcgT z0Vgl;PmWoV6Tj$A7ysZfx@%<95AD$cAz_S}A9tVShKY}cw7bA?VuCnx61jP$>aY@b zd*}eKaz@u_^5bX$w;ENL0Qgb$i6Q7dQ3){#h$ksr4tQU{nuG|*L4vEc>)t=PmP2NJ zcy>sZAR$FMW;YgB*at*3b)dpk=!X6N3H1jdSOp*>egkV2aZ?U)L4WXkl`KU~b6N0R Rn&E{LQa}63hoJ{ljt${13*>i zqQgjGLN48biiLm!4mc^bSzlm#T-SZ#00aOiU0a{Pm5je!yZ|c$|9}((1tDdvRU*M- z!E5{s;2@A9hPBw4s3$+fCB5OC08!#>S(w=|At76U!O#iZxj+Kz!d$y(OHFmMyx2w0At(N?`piq6g&}#*M+gx>7}JOr z61YueI(;Af-rhgUd=NN>ofr__p*thm{ldC5z6nH!!eGb|hzyMQ1^@y9E}#^VX5wf- zTK?KC1}-pi1$CKH?@6ft``{2E)dL6;7FDtWX4*yvQ^3k3(hMhm-UB!j4-oNFQ5^`U zw=baZ00ID~0R%3JpsDu7_k%F71JC`yAmBMJ3lNZgC8Ptjc*0d zd;kFf5Op{gF}ClN6BLO@k;rKDU|4&C!#RkG7pf$gfDC*wfv6d*v?zE{iNK3x!B{Im z-g-S`vi{@101ycUqQG%66iXiV%J{AKkPIjQ2m>X9LDR$VH$e#s$p5qe0RTV13;@79 z=50&SiCdbV+=KxRZ~);V51k7h1A6ckzzMnl00BV&ZYH1xuK;*30003&06B@M0jt0p zi~s-uK>!s(Y5;2R1gilo2u;9^=zE+u2F4?nMwk2qpdkTF2t|ajJJmdaoMeB{XbGUu z3DMvD#V`R;z!&iNZKxRJPX?lw_x1va5R~{la!H6pz3luIy)-oX57WlLnqNso1w;)9 zg##nvim3nDExwr8e>&hKtVuaaa4cDXpxgj^=o5_IHHG~J6Gi|ApfwzD2`Bn+Yug_j z&kw-{!~zqEACUZxuN-FTaE|>j4%s-%L&&%Xwc>b(M`Q2E+lYjjM9GQ^1{r^n*unQUpE%JC*KLTQgfJ_3B;YcE_fB=92KoMkx1;_mddo%?{ zuUvF+=*Z@jJQe;g2!c5D`^K)do|p+edcl(%^Q1R_(3~s(z+-gQ$)+F6{WpX{g1H(F zwZGYgWEz_fJX?ULd}vS8{nS#6^d0B=05P?HEdBs1+(_AWi2#ybjg)A^xASl896c12 z6MXQmfi(ybld2jfjF1};_RyT1^z2J~e#aaXwzeTt2@K=Z&gd}}6gBSoJL76~cH2t$t<6&O) zYYi{}C;|*sgW;7Y#_eGl0099>U;#wL!QKERmyiqtx^9MxhSV<4>Wl*cf*?9EpOw-C zT>-@ybP=5hlLCqaZ}>ms4u&P@5SwaajHBRk`eQ0){{J&}6fOV=LbQVlc=vjtW*>cz z222pp0XwiuE^daP$N%jh)IgW@OQP2tcSCds z;2;s~4S6N?S8iOv@BPLAE(g0>m50G88*o!ufB+x{xDXjM2CS7YB1=trcmM$aUI7%Kq)6H{sWC}=PyrVefGnI#fN+hT z_&AkQMi>jgPjWX_$*yBl1i%D6Vb*6qH-G>j5>mhkHeu6GN0yxj z%Am+!fsd*@zE8)&l`K?j5ds+LDbByM|66~UNMIaMyHZBX7F z0!$@v7btO${nxjd<{Ffxc`y#_4rU9$K8;k$|0YLy2 zLTP|%@C2%VKc9g#z5+ma3E)B?Sm@x#05UBjR)3&K@c%ppU@={I!um#~Mi^lh4cI{j zNCuz)1h%-wVpR&we+M!GurUYx`pFv*Qe-g}#4-^9!hixS4t`(b2$-l71UKMi6&Q%` z>A&ek3J4S624N|tK>6Uzd@e_K@_4Tl46sxhePanCQh(RLbDrRXCXy7__&MR26Hx?! zo(zNo5XBLI=*vF1%OxTHIC+NS(Z$-s7v$Uq>3=n3WsOy~!|z%D{1Cqm6iK#}Yx7A| zYR!+D{|`Jf0%?6tC&UG?^?jT4dZr4Z1aEKf0ux${MLJnx1c>EP*iN!X01|*Afioxp wh2*^tfDy^5hv|NpRHFP;;Es8!kejQ{`u literal 1092 zcmV-K1iSkH0003AFaQ7nL7Jc%yaj>$*EetsKaC3j0tf;%K+~u|mQ?_w05v9xTm(~R z00f{JO&%f!&VOz16{?GS}*;;WIezG=ndUOejIZmfA3C%U=GE?N&~`o zHMV_DA&<3)QNZ?7<;2G=OZ>k91|tCnLW=+gCJ({&!5%n>mntg&3mCv!Xa}DOSyP{x z&sV%)B2ijEr72teZ&&;=T1n_JgL=9I4RC}xeA7k-VnT$oCh#|ld3WyzTNBY)yy^Ca zK4@F=-|C>&DK}v>!nzzV%c%U|LA@JbUYvgaetyg&teT5c_BtFC!4-cGF82W0VQ61U%p502l)b zzyX1L6fkYi5avvLHSW3DcOje3IZp)`04cy|!7)oUEm;MAb2 z)62A_wTyT`5JWcz0n>jYsxUSa0Gprz7y+RaEM83c<&ihP!T-g)&tvMUAAkY?$6y~3 z6IS)A3W|?$?3e%o0bl?i765o&SP(zJAfb>3XI9ER$&(*v7;B&jf(HttMVo%cZ-p)$ z!GJ6X2&fKtJ1WxE2BZ`?08P*U00BV&ZYHP(uK;*30003&06B@O0jt0pi~s-uK>!s( zYJh6+1gd{OpMf=im<)iP1S5jn08{E=)*(;Y30OV&4AFO55MSkBXp$LU+9ol1WueW3 zB$ogPLDq~hI&{}(!J`OigNlEDStDW!R>6$7A&~3?rvL*i23D`}Qs98xFgDB**{Ezn zzx3bqqJ;zr@C4~J$PLs3eRG&DLY@C_4b>C|eJT<@K*LDYm;YAjAUM<95Hjgugg?R0 z3&5I)Bn0qeAQpxUB88HceQ|?Dl3DH#Fl7rum$ilq@@@kyC-bI8*wtHR50wfe zIO-hmmfng0FrWrtHR^y2i}_8^6^HL)439nhjx8gD=(ko|1gnzu?IHW~LL(zHZKRj~ K;4=<*Mhc*?-pS|y diff --git a/samples/h264SampleFrames/frame-1305.h264 b/samples/h264SampleFrames/frame-1305.h264 index 50b7762a1175798d5b0d5444365dfe4875cfc490..16f715361f4e27bf9f0d27c834e9af2db251f050 100644 GIT binary patch literal 1175 zcmV;I1ZevJ0003AFaQ7nL7IRXyahKwV%OA^Nx%M0Vb1^z+i#TI_y7U`ya43{VR3!LMQ%E)9cse@IwvG!AcqYCN4b^Q94mP zY|8-;@lQrNbG-w20KhRtB?c+hY`f?!egFc1InO+TmPjRLNMqa^-9x9cp@0a8&;Rdi zfB=bLAUUJKjvo;^PrV#q8IS;nfIAz5_rNa)cmTmnXi_L0$cY$eYkL=`1|O+t5PFd% z>O`DgZeq>hpZg4aWWWGGH)Vhj0AN>0(2|I`7zx{2Ujy5bARHUIu;q*Z!{r;M_uc^y zL3fle(RY-&6$$ph43MLykPz#`915nR^1x`Q?0j-iDpMrxeiKSZ*m_1F~_uGBo00;!o2uKBK%8S*p`cqMJ zl{X9k1P3A@0u?&@y1;;g`pZHh)!KXeKnP&0SsypOL}^bifB+BxF;t1wU4}GWzwQti z0*tH-jzgUGT4Z|kh#?Wg5zINn5TL_u>8{=1L0#viE&I2Y^u%fdjOkQm{m<2jB*ZbA~() zztVwuK61b_pa2L6XDYx!dX3*`4}d|KbR*ANU6DYi*Nh?x^`N5|@qbaz@B|qeHs${> zm981(;jjS3VuS=s`u0sj0#MiN05Q^*f{4x?u*B$-*h#>9y@5QE*TMgo0Ca#KfgFEI zq!Kc?f}YRDuBtu{{qTSZp#Ts;gVrb{p!WtG0S>?b00BV&ZYH1xuK;*30003&06B@M z0jt0pi~s-uK>!s(Y5;2R1x8;1AQ1sD83+V%!EOOFT#;Y?2&O4v-=IU@rs{wuKQ*uq zTAl@3$sBqA|ELMY%IYA1U6Z2RmWx)GNct|or;@SF*d6M^wU zpaFReNcg0zNB{5Oq^w=Sv5))o6aejp1_^{oKfBOA055@1lC|njlKo{Zi6#;RN*m;_ zN89o9X$OA;mbK8bFi=8*EeaYW{(T-qI?V>}Kll{!`F=u5lt@?^mrtubu_0a`ZMPNu z?N?&{?yX(K05*U1;o0qcGp#D7|9j+k4bTpRW?!R(Z~(`z`CtG10g!b)4}ybQy%&5O p01%V_lor$l{(b&oWH$l-5IvtT&zk^1xZi>Q*XDjcs-e#a!CV%N`*{EW literal 1007 zcmVv~Z>&p2XAno7a0bnr03X!)>H2NKL*`k;}h(;D8gi_SLz(flJfI=7xjDQX> zVJm3571T-9<0LWQ06>s1G=RT5Cs7E5PxeK?i8c@*mmwm>zxU9@;PstySP^*mmj&Pi zR{$V)8R~f?=fv~37z6+U2Mh@+_zr|+cbA}y?cm07zy=|(kp(u1;)tSnOFTuZ@c;mT zm<9yratm|1gc_QQ74+u78nL+k^%MR3!~g;Tfdc|vU2&2J->((tao3iB06-$}8MAh7H>uUO@dY+LIH+&?w3*#lM1301yN}g^~)5ZD7xk@E3r)<|R=Np#N8b zGE9~(c`&~-j+A&L&-@>N5MhVbYFg9Jnm9~f4nQgZ1#Fb-1MaBVSR706WM40s#a9 zRJ(!E0v-ST;DjLKmBj=k!<uK;*30003&06B@Q0jt0pi~s-u zK>!s(YXEBS1x8;1AQ1sD83+V%!EOM1eKptra9uK>-{6nDD^x%Tt7yrv9;mQ7(n!c0 ze)b1(&cZ{MCBK016M>QN9EM`c1I$Y-fQDCk%81rmfH0n0ywE0J|4;9^_;I_aH~&wE zKsGr_4*&uw?Vm&u^-lvvEY(it$1R%yuu6nw#4C}%dU#F*$O)jxp%4H}j7(A}^#UY~ z>8Pl{1_Mw^PW!3^z}4W4Ny}dbu%Oi=(UbH4d!_p2#G6znCB1UZzt`8n06^C^LyG$( z!CY-JWBdQ~hF4Ouc?3y+{G-nzBl7%&l@cT@8HS#gz55i4U=8^D5&PP%%2|*ATk;Zk z0)Rv(!rjjR2WO|zBN|`OztCkj-_yeICcsVxM}>iAZ8d2T-~RP&r@3Uz?zcD#J1@6* zuHQZj{L-$P&ynyqQX0V#=D$Y>-~t}M>%aN{JARvk?vy>Lxy#_-0ED0fptevK`SsvY dI3K@aY+yyO-eaPl@5EZSbNeKK&#&i?g1G*J#I67U diff --git a/samples/h264SampleFrames/frame-1306.h264 b/samples/h264SampleFrames/frame-1306.h264 index d08a29fe8ffb6d54671b0ee18e6c4d8d05030647..0dda5ccda03bc24b0ff2d9bebf9b11696d45f427 100644 GIT binary patch literal 1595 zcmV-B2E_RQ0003AFaQ7nL7Jc%yahKwV^`Gl@Pib700|h#P0l~4j%xdb#2E!1)%A@3 zeI2-HxXx1eAc;dn0?`8v`dJKI&bur4+wldi0KgWs=QKvpZs-;A%YEz-=MGqXbuDkj zobiAFfH8n@X#qKB`^Lc*^xA$P19k*8ff5`dO9N38hM}sN(2Yyl@BR#U0ToM3<{7vX zzy)KxPLT%j?+{oFCz=BKH>R;2Qej{}A(#LW^V$TJ0QWaAz%Q^;9hf2Krd#F!0tG-I zTu@vg`DVjqgA%wuBR~_fkPCbjcJpB10qX*noqdQS{J=_k9Jc@f6o5FB2A>mAA4}sQ zY2v~oH~{MgN%mr_@I(Mn>T1e&%n8sC#+KHRL`HtU003YoBQ>K_nS%sh|Mu{Ot5_IV z#wVs;Ow0P9B!mWV!j@>Wmj~bgFmt7cyT&?|U;g8GD_|S1p@woV^#oMFlGQ2q+#qOM}B+55NL296YQj zt+If{DJ@bM0@DBi09iZ(00ja#L)#M%b_2_}5C{*Ui-973^afM`52@Cj^x#yxpkXoY z`|bPN!G{E(q$pNwp$%-o*PtS#bBq8K*Z>FyYoG@JBqgk9lo9g78mzbjfp~6!Sg*r1 z|IGt*4FuvrZZe_(fPk(ZMQ@yfAmNfz@D+-lgTw_4L?nifL>Kj^XTv0BL;zqCG!{|& zyljmVI6)T$a|GIGE6LaXUbVmO03cd6x=#qHb)4sa?*Iljuqjtg-o*47v0*S_=#c>k zs#X{?lmIvXcrX#*1-DQR2?#8S8GGpC_3hxA07n4t^bQ0Ek;B-DI|pa^fB=Ee00=02 z=l}>D0C0B*2tWW+YydFfN02TcX@lZG6xsoRuuTLV3Doc-9iT$$YWk9#zl9BjqK^Ou zHbD``UGtRHqu>k}Nfoy$5Jebwq{OZvpIGn>{q^~aJY)R{H-G>j9&^A1n>bYHj<(Hs z0098jYyc#}-vP9e4}a+Ed;l%Hun7gg0GKs%fT(81--oYljryHRQiBnQ%M63|Y0%C9 z5U%DjYhApN38qF4e`Xf;^Cx=x&2Y`o_{U)IBA2&!q&TR5`rpxAtu<@SnBUbZyZ2QL zFvce9oBzM|*oe*v3_9A`T6S&!Z?U5qe=@S4{NM!-R{(=plf8gNkSy2qeydUlq!3;0}ypVKj z{$tm1+x)Zv4!{5a0YLz6Ca4Cl0C+F}00BV&If<$PtH2wK0003&02M-NfNJmsLjhn6 zOe$k=0PGOA2PCl)Rg@q8m%vg6KvV_9)Nsv&5%Q(rB8VLZhdlNCfyjU_V5X7|Q^6pn zOx?@~(_yN<4Q3x(Ls*oW^}?1XVCC=>fe;iy7dr{?)Bp%dpazA5>A@4W5_g->0Q0LY zl{&w#^p$WnFMvTMnQ~_nzOWPmN)-cMtZ~))aVF*Td;i}*0%YO^1pyw@{Q z``{L$Hxb923N7nwc>pIPlEVl96F=q%W5|-{2Z%KdD^;jhzQuEV|M+|_GPmB}p&>Zo zAxl)b7C=Tf>%v!-0x2*b-ERcVOlLre3_jiWfk?gzw=Dbq`Qca-6BCej6?pNeob&Dl zMw&IUZ>8{=@eqRu2+&J_a(m{pwtxTMUxV+)C%(bY@WGX@mHrFj9-$HlOuqOBAZ4_| zB|KaoLC8|MwKX;q$Z&-vh3S5!62u7z?EnYqJ8(!+k^ay-s>bz(Z~tKeHY!p-JPo*1 tdbPmii|;s55JE>kBojJjY{Au(QWBh2y#^nZjeWtn#i_jfmqVT|3n0fkwhRCO literal 1411 zcmV-}1$_Dd0003AFaQ7nL7Lziyag{oVx+xFpHk9<;V=L|0tYzr&OGCfIP=at@8AKz z0yqbl2P6>@SI0<(fBCLXD>32>R1yFO00aTxX3QJ=$9(((VI%Yb1ZM43I?c3O)G=fR}zkwhG0utO% z8@gQ45mo#g032upS0p@Vmcoq7Y${u#AOH{|>BgWgu<=|z(-;Vdp=f8hYk0l<0LK@i zFtTb=&1EV7{tN&!Z~0#+&%=8xukX&e1t@W%TxR`&>hOKterFV_8ZfmXYv2L^A(Uqx z3EcKfMFa*GFxiZ9j8V#U_kaK(5*fw;-C!n9HYRxjLBKQV0>F<6bd!fhU!`N;03ZM$ z3>{V&x+3^Rtdz#09`DnqH9P=iV1(;Q0Us-D7eH%3FenJGVWp~CDHwzQdF%<~D8S&9 z6TL z01yBeLM0PI+m?{lF!%sC02mPD>Ts6#3fFi4|ASJ3ug@;hmex6@%pY(lyw)nOr~c3Y zi~x{|5-%ov^2m$d?+^eWm34#JwPjST5BRs4?0r}BGKz26C#ApekN@5P2m>8}Y(!04 z)}SaVJ;$%+JrJM(AVJl8Knpi;u+5kN0s&wEAQ}K9D=pv<;gAL8R?0oelOJaoXNFYE z{6Yv$5rUa>2<91#Y|W0iS^& zssF*?C?8US-Tmj1NiYBQM#54GhO4hj;s-*|xPZ9NjLZh^r3XO+Zpz39;06?=vaq-X z3@+7TEWBc8JK`A%bz&$HLjVq~fN({(6|X?&?-L*e?&G7=PQLK500PD!vqA|NOyi>P z0}ypq<81bj3{*wupI(S6{^6qX3|--gKFgo>46#G%kXch+=h&op*2#X*5QH#_j_28> zpZl<811VsMLL`WP@7@DE!(~)ATlDYnz=#5FfB*miK>%(hxCXBPcrX9}0YLyciLL>w zz#EJJ00BV&6+&x(YVZX^0Z<9dB5@c1Cm}7uYe;KIov|Z;Nd!g?-~))mu*55{`vqtA zXc2;_*Z}|m07U>u&_EPZC)C(v*lQKwX)*PKaG5V$DQCR{Txi*E`FsT+LI|y(R zfB^}>4GRaEfyJ8fw5BIxf zc;M33TZTLK5a#*+@c37PAApztLPBxELYITcvH~H$UJyWfQN36!{m$@C(qlRVSYh|K z-VKvMROg>>zIavy#Khzs=3&O7Vqb7744iA$`d<&+6^Rz$TzVsjA ziPzXTZW#2f^8W?#4^fgFnSJmMAa7}eN_eb$^X8avS(CA9~pu`4`mY5u&edh`y2ukPVp);ADGs?;>2~I0sgAdBa Rht`Z4M_boMG79I5g2+fsax4G< diff --git a/samples/h264SampleFrames/frame-1307.h264 b/samples/h264SampleFrames/frame-1307.h264 index d68fcfddc46c525ac478ec00c93c223c2fb8366d..e34297f6acd89b0c236700f67bd924d3b11f2d02 100644 GIT binary patch literal 1109 zcmV-b1giT00003AFaQ7nL7KoCyahiJ6xa;gF8*rtGt@ zJY;LEgm|F`r;d(#SAr03Qn4)xC*EI!FpLp`AXE$n6MzB$0|19PufxFg$A{M(-&{Wi zHBw9fgV&xi!{^!I00@8px&wxuvuNT19J2rZ00=P{^4fxoQ762jpTH0R83IQ1ro4+u zei~27Z~y`Tg+StKJ$vb3t4sgyFarPq0*eXd8vt%{VH6pULmiw3$^sh+qXwJz{~|yD zAP9(<05BW`oJ6oBX7}KK`UM9ZUMh|z!@vXBpa38w0+@q{muq^KgYGD@jaEJ$2SJJC zlg2~C8Qu;6vM7)Mwpai}1p-+RD#_V9kAMJ-N!`$iJG&zA05BfHzxpYp)^L#8pWYP# zpc@LIWDAslteqV%018M25%(hum-OHcrX9} z0YLyciL3#uz#EJJ00BV&6+&wOYVZX>uoJ;k4u^yl0OEW=&;a9=uxxGMwV(FDP7fF( zfFK;p@^|KUJ-^Tm&CmcDP64e(K-3f3M`9(R{7Zc=yx))hRbHXJiLm>C;SIUl`T;;4 zD+qBTa?fvq%53>OjMHnO?ZuHu|kQ@Bfyhe*6H9sMg7*=Y{j|COoK6 zSP83RW8}Wj@8|{E*n-T-o9hM-yvB0S!@c)}szCr3Cjp!5eDJt+#R>^%1zts|qfy@%-o?L&DW(X+{d&gxVR#dukVruAYB_|F{O%+p z+XhK^Vy++(umG(G>|8SqI(dx{g?5y#jt*D?W1d@2`oK_awTba>F@pcxg_yz$IC5tlB!C!|)I%2lf()TetnZbN_e&hoMT-pL7`l zO_3cd1v~+O2z5%pU13cWb-UrdJ5}%CPcQNKWETcn ze^GeE#T6kaA#SQHM}uP1Um?30oL2gXL)woJWe|oW(^la~Dykj^GB738M4V28-jASUjg?@p61R(+uAIO>&Crcqf1Bffk6tX1A{iBW*Cg%V!F@=GoLud;^tmNp9 zJ3qVuf)KI&vExZ(3a2_!qWpjWfaI_MQ874oo&f`%Fr$l~J~V#uBJtA?0;fO#;CZK2 zL<6h>`W8GjPZ$XYC#_4umP*U z8;k$|0YLy2LTmtP@C87y6TwpshXeo<4}dHH8cKlic{d>)Ts3HDukKlj)p|e{LmB9V--_Q!-C1T(gR@49rfY07Qh4>!$sz8RF z=3Uli_+s~Ty}mrGkq4j$W~N&vjMKvT_!Ayd3JU;DTQMIc_J@A}F4JTKwuawWFq398 zy$m^f?+z3Y1LV*#Exslf`r?HIv;$9xsEiops1l8UnZv5yt_m~XL)!x}zyblassiZ- z|1ps3$iMwOC-d+oJOsc*P*4}NIQpSM4A^bA-5!xh2?vmskl%?H04hbpX$H06&dJ+L zX{Ek?in@765G^KxD^Kl6FtIub4G20KjABgxcM=iu!IOFjRm1{z03E14xMmjnXPDUt zS4m3f;H7{jo>tS_z);#x5pi!3ME~6AfFbIl$jd{2wMuQ(|9|?!v8~xkQ=b3OVdsT@ GehXmf^;#ML diff --git a/samples/h264SampleFrames/frame-1308.h264 b/samples/h264SampleFrames/frame-1308.h264 index 426fbbc5fc23f8fedd293c68461aa42aecac60d5..e14cb3aac81f4b37f51c3ba1887cec960197f52a 100644 GIT binary patch literal 1225 zcmV;)1UCBs0003AFaQ7nL7Lziyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDPv6P zLsvOC05EZ!qT+qdv9({~vEdiUo;U%(6omc<&OVG)Ti#$$&#EmZ?q3DO5Wtd9atOvi zNGzuOYqHpL!v%vyv=(3fghXnentA9$0+Z~V3z455c-(rm{r~_#4Df&eAP77^WYYJZ zgwVVUD~%Y+W(lC+kIB=0r~m{70J!S_3m@r2a0dn87`Oe%95_H7%12iKcmd?lslkV! z1P+iCS1CI%2fqX13<2YQ;0Oj543aW$eWcimOn~SdKllMI00l4tK9j5h=K!7|qD@@^ z1aO+LQ%3lqHx%2!BzyptDS$czYvzF-qrde308o9x8*GAX57uCV(i;lQP=JalkA|-k za~vBT)CJmb$h}CP30Ms_L{1!vYk)r=je`OjgB8#gaH>=t0w`6R=A0fqKlsUm19lL3 z7C%5&0t2vNjn7_M{-jFg!}oN8gYy<}@Ol@4A7|^5yc{r2YcK#13u1r(fFLw5XE6ck zL!Ja;fPrjbS2ko}FPne>hxhmf06D;{2}%;P!n)E>6t`yp1Po#z_VEc=hO)`Bo(6XW zveI3^L)W}qnE(Q#0}1Quk{llJVoeH9!Bj^l}y9%0D!?eC$={i zO`a2CkKp_OWfO7YTP<`|2@K;EI9?NqwMrUzy{_;8Py&aM|6DZ4)C(EZm%vm2I)`2e zDP+l~r$({E0FnSUHX;o`d0X@E6aWdp0iIX`9pgZ&<22lG0{|4z->^$sU=n<>-~r!z zyh8D)o)@kwz{BtW1OP+{TfFgs+*T}wD3|vD0f;XAibZVCEhHTMZ<#V2MMo#9(rvC` z(x?B+^D;1#lZLKx${r|u1f0-&RcK0s(=dGz3=lDP(xDZy3mZO|ZH?dD3 zaN`WsBdf99ufPeE5Eacpn14FB!vPcQ@Rz|MI0O+IH)Z!NlgyW;-~b2*m=K|)a zKTqgB6obDQ0}8)j9R9ITIUB?O{;?s8vvvK5z7PDs2UrKdb{(?14IE5N000Og!}uZa zm;eX?1BR0h@Zg)Ww5hVehcy60umAu7K>%(hxCXBPcrX9}0YLyciLL>wz#EJJ00BV& z6+&x(YVZX;WhOk=LWCI`o) z15NHv+x!I3l9UdjRAwr@`{uL}y4V_q6$%_4gxtoUXwMKeo$QvALd(G?`gXE^`UKi=lv#575IC&w03HTA8b>sX n%|b*dOb`$eNRlFmNQjBhvJ45YrX_N!y)Se-C8&lDcw8`F%;yR7 literal 930 zcmV;T16}+80003AFaQ7nL7N~Nyakbe1p~1lQWO+`0uTrni63I>JQw@IKd1l%VrMB> zMPgpIDLw$eP!de+_C@skJp#wZmfXTp3kqr+utE+?!cY-H$_Niu@C3*JKb9I`JSDdd zDHXJ9Y?;KJO%MdcB-P+i6euTk%~Cp=(f614_s}+C2=mSwnICw)Ebgd5SxBdYD1C%)9 zi*hLN=>O*bq4W2_ z1BhwSfeq=?F+H!`E2B(y6QCfin63B#0Ra;MKmo@qvS>sqS_1k$|oc;h%!3RedR(cd&aapRa z=-mJSf4AW;(vzkT2}G(rFb-1#0e z_tWrJ3YU;Xw9$o7Y2W||2Zz!D5$NQcd`5u3DZBv(Bmm(pVDc=2)O$H)8Mpv8=l}u& z4g=+X8V!y-qrE~1$c75?&S54H08P*U00BV&ZYIbEuK;*30003&06B@W0jt0pi~s-u zK>!s(Y=CO;1wQZ-0!$Eq7`F7cZ5SXe#)D8ldZqsXEF=Wrk!ENd;(BPI=UGx?7m@Qs z4~3Zq9Lz0V9s+1cvVb{6QL`~{>~vhW0->z#@J z=n+`a7#|t@!iKki8Ug|m?W;DSA`dBJm~xW$uq#A_e~kJT4e7 EfUc>94*&oF diff --git a/samples/h264SampleFrames/frame-1309.h264 b/samples/h264SampleFrames/frame-1309.h264 index c080428592379b567eed97657bfcb5dfe1708ff7..20e5c9690f0e986f5d1ba9da7fa84dcbafc2f1e5 100644 GIT binary patch literal 1495 zcmV;|1t|Ie0003AFaQ7nL7M;?yaj@hh!it`1AztnLpH8S@*My5(ue2+1J<+h`K~f1 zFjs8^!rWZzAm@TIK$ExSJ^ppP1OdR`b(u#Uoq)5KzM?{&*X>kb{e{`DpWDsffk#=O z++?C_dZ#!4cX)!YI=ccISq<+?_)9`SgfrqC9smq%f-yq3RC5U>o(GcX4{MBAsU`X- zM8Co~um8I~`Z5SU(Z!yxd4K>QVgLdRfB+#H01qZ`fD8rp3ZkM0z)G^f7AEij+r&~1 ziQ`;D-O0cJAPSTK1PP>o7hrBtvtLW%qNZhxy?EAgL@jU!<)-;3o4fy_3sN`$2mq?@ z0#bAS_J}tK8b?&RZh7K5FZg6Ycn}O*fn=0tm49bM8h`F!0^mN|RL&Cw^8JfI03Z

      WVessz(7iUepb3IV8KJ~F?}5D){x zR4W{c;!-1YESUr_kaK(4)_=d znn5e2Q`oxm&i?=aKqWvL6u?5IZ5mX#N1O^YAtrR~GjjkK z00;>e6-ohy(h0y)0RbX(M_pRDQN?r@+S~vF0Du6eD^NViLn6lks5vsjBT3j0lrKOt zz5w756}o6(G-l{;#_4 zumP*U8;k$|0YLy2LTmtP@C7{Z6aqzsH~=$bB;_w-F-p(^R;UUN*E!4sv|XG~X1s{Y z-7nq){SAdg0G^A3EDcg~aNpoKh7DL&09pal@IM4t=A{%ndl%mT>somv4DGw?=oe!| zfT)zA6;6#h|NRG`=8BRWkV8AW0Lo=$)Jb#6fAV-n1lS3Jjtfw9m^5JRCM}ENFu(Br zz{86L(7uxeK$QnT;vsz))I2SvFh49Sqs@=~Xt;la;0N~h_Ib8_rmqBi1Q6FeF9K

      pg7D%4mEC6IurnXQ2?uIWtG#>{qF6?4=q#muS#mz} z(*M3JzK}`-D~nKsU%%`e01UNbc0gMCdZ4&7f2RpruXeC(5WMtNpFo1};eqsOs literal 1327 zcmV+~1$z9iTnK!h3$3jhKD0TAw>xVfxh6+(O={Gy;1 z-eQ#xfnQtr00IJl!}p_rb~NZ0Hzp2}4n7PygdHUXO5{--(2u*mKN=#X@E~AJ%_G#* zScBh1-mNy|?aS`}><%0N5CQ;mP!%pX{Mgv4D&+tiF`P-{utOYFimfoOg8*N^)#Jq3 z3$R>dwjUD!VZo-tCbh(YV3vcT$A%EE1dJJw{SG98rv9o@{v#X;SjY+1y);IeLF&K* zi-cS<5as>;_y92od>=bEg}Px^E&wdd0Iy&SJRdQ9B2PVD^8#uwu);F+WGi3q8efxzGXL-Sk znj078zttg&(rhM}RziXdx{uBSP!XalT1CP?{kRdiHd{_Vf4=}3$Y&jix1`}u`?!Dr zKoA*~KLK~0Yt9=QkN)RFFy%Zbxgqjz-kKDk1|uNZ3T{(54u1e<18BV2X!>k@wbtao z06-v%*fy3X52Q--z+f8UFtzL8$vZ)u!!lt44>9BkKiUQ#5y)aX@nngyfdXs6D1k-c z9tZot2L=$3ttaR@s+^sFZ-C6~g+(caM0%4n@i+>u*P?hc7ntNaS;;^D*nU6<6gUxb zQoaee0t`i-01P=zVQWcLk&tkjVb}n$RowspfFw|qz8N=(Cn_xlO28?opfap|}NO#>DO=sZm6-7!P zyZ}7dCJ8QyV7AZ5Ts=4_)yf_6@LJ|emEZ?J06_z10v6b@ZlysR)r@$D009F9On?A^ z_y7n10U7)ErXnXI*hcGW_y7zc5{bdC(@1L=Bc^5#xD;+{6<5RmaBfgl>E+sexy*P# z5JWQv0n>jYvM@Lk0Gq%87y%&^BwkGU<`x8A58m5s&9U`W55NHcW3Ug1iJN-W1w}`= z^~?YP0FVF>2>=ommJjd#_4v;nKY8;k$|0YLy2LTvzQ@C7{Z z6aqzrxBxMk2^6JP6Ox{QAIGS~yrARDKz4=MoBk~o|W`}>Z@C)DpUv0Ou+hEVggW!u`Acnc&coR$YR@gu+m2sUc0Em*c zvOoTGBW*o2JK*K!D|v=@v>b#lM{^cA=yZ}F%ABkzK@AwzLsH%T^ lU*CQH|G|O*r}9hY=IhoOh;RW>2><@}!~-H=K(YpgofQ`l7yYIH#NZ*YV#?9aP>u(F z@BqQiBoLZHwz(|@hw^AZqz#AaY6KpnO7AKc-%=!;PbQ#a6RtX*d906%5`2pBg0HU$n|BVYg^A-X^g z0C-Dy(JCXeAvsv)VvM&XW&VPIT>}srhI{}Eih%G%3WSy3A|P~GG~i6Y`7=6C`{#fF zAR|B+&;@XX$L{D~rG@x`ZNq>7AXQfY2wX(>|F9AW7E-Y|#3QI;zuW+W0+71fnD7=imSc1OUO+F zY7f8zXBDOi2vd&GEr}Z|0Ala~l(!}lS1Aqm0BQh%P|*=Xb>n>SWB>*;m?$!L@)1aoO+|$`6FHJ60Sh*d zR1#W({4LoJ{f#1Q%>=>VB_iNs%!UhcNuwkz{{qplEe14*1rOiglJGl7KhUT7!QGtH zbh;Q<)YIWKq+%kTd9h)h>9007znFUY6^Z~|y0`9KQ~s*uMW!{M+m zHJJ&KNB>26yF^dA+T0-%U=Re^QYV4nPUCA703U9xVUhOp11VXm=7br?@k%s9>(2?n EjJ4W6yZ`_I literal 945 zcmV;i15W$^0003AFaQ7nL7QM2yakUiS~eyS`F|iO;6oL{E>6$_L;wyPBO30ZiPQzI z3~>GMzybsS=O{AeD8$F~&D0dQ06ffSDX}9oy()XahiSr)*>fnkTZGN2Vemi(a6mEu z4kcWuVJ}#28(-Q51_Dcs(F_Y^JnTr;Z!--4oG*s~0IH#?b8>+z8zg_=1rDIzY!(2( z81L0#0tbKqAP#U|00963iHR!orC5F@u`E~u0U727IM>rt_r;qW1ONmYgD-+6wlEQ` z`w)c6!4{VYyKykf?+5{i3LN9Riac@2C`*I@p>HljNR9vkSjYc-4j=>pfEd^WGR&`q zz|ojJZ~$2G5Fh|s8$eq27y{Td%GCgy$X+lYXuq%^VQ`?L03#5hMWf;k6Bz%#3fy`C zFzo=F`8Iq&1-u1EK}$f2&LjaRfX<7x1_i&>zL}uUil@Kow2N2a5WoN+7YJ}D=^uv^ z3^{c8i~!gnIto%zRlt3`mXO7$zYp#6^xd0vP00v-MRbVP;@8A957-I@X z5Ge(i(h7UM`~f#W0003&0B$DO2Co2kFaQ7nK>#_4wgIca8;k$|0YLy2LT!L*@C7=+ zOh8RVg*YG2HP?ieI)VH82Xx5-V7=@GsYMkAy2#$!;)3O3YY)xz9JLkFp#h!>%^Q@5`O6& z_2<)g6v5E3L?*nUC_mV38 z{14q*vHkyi2?0qHC5Z_W_V^;XZcfj?Zv%5nB_v`lf_a4wVJL5NMHXDB024|82G9w3 zIsl*oXne{5SZ!Shaa=wd07iDi$cjJuFZVT~NB*|)I09^`6X5WBZ#Xaj|E#dcAC_1* TDH^U~2 diff --git a/samples/h264SampleFrames/frame-1311.h264 b/samples/h264SampleFrames/frame-1311.h264 index 9640b1dd4bf06393d4cd59c3ca6e6cb3b8435c12..5905950bf834dbcece8ec8027e7756c7aa2dec03 100644 GIT binary patch literal 1597 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 L|L*W$^UDTslCsUr literal 1094 zcmV-M1iAYF0003AFaQ7nL7Si&yag{oLnOUSpHowDogl&uU~vx%S5iZvBY-q6YNDik z23jhrW8g_K*nk*aC#SWB!OQ^w0#bmdz7#R?NGMH0viLC+8V(NyV7MqSzyS4|L`cWc zJAgn_fl1!Fv2qwe*MHmqMd0Muuqc7lkMy_yxF0A02q+4KfDD2Y*9vt%#s2UBF#s%x z#6RG)SZ|P*J)F!4xVS|ialrzYw>TtTpNSLI@4WyB417$90xsH?)*7Bs{0MAfFg9-i za2i-e{wSEZ0A&CJR$~W=xP~%o*8j!;0D|}c2t)t?gjfJkGYGrJG{p~C;OndyNRg^K zp71Ae_aZRC`?1j_{Q@5f;6bSe91932(AI;?0+Rd*2yX%q?FD2*;0uEQ5tmN^vWQBC zzyI-oHvk+rX{R$Lz^XV?vG6g761u)=;nHNe^iIN900;m;08n&A$sXEK107j!6uvME zgag<}4B`S~JOcp0aJ3NJCV>o0)Y;}sfCs>VmalpViXUh%MTc9k0RRHJ90u_8&Hnqs z)Cd$Udc0{wXp(h%ct>#*i4w5GvVDjXYvF@d16>KSAf>sOz|Mq3@rwWol=2!Wz`ZrH z3xIyUVQ`C{jzMxP6cMgbzF zlgEIKNu^O+Z3F-U2!@1(0I76}jn#SDb2k!qyyeikta ze?X4pph-~dqh+E@&ScFmFx}f?*I!a%2jNEv0q}rPc%%# zT-U%qX$K;ofH44{*4=?5Oa|PG5(c$>uSCff#&9S%mZg42K+1RWzyJ M@4YRt$~pKmfZK=BSO5S3 diff --git a/samples/h264SampleFrames/frame-1313.h264 b/samples/h264SampleFrames/frame-1313.h264 index 6c98a1b292f3b4871f1be156546c633e5c6430ac..f98165b8e02cd514409e4e70c4c3c4dec526c531 100644 GIT binary patch literal 1209 zcmV;q1V;M+0003AFaQ7nL7RXYyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDPv6P zLRUFG02ny#QIS67T-uNGRpB4ZmN)>Q3`%H#iPsRtWVDk4h5J=`M=5+45JLh;CkG&e zWCDvMa|C$BR%eC_28(DYxBUnR)jc%p(1rykxil9eK05KZ^<(@10Du|e004j>@J7j_ z?>!13crc_IDU{0<^MXGoP3E8g5EKIAtN<*3r47Iw7l2~l_aJcL0Cy=JTmj$*lR~Ek z9)J)!Kv8|9?7$xU4}>rWjr)Kg7)UZm$-VZIVkt8NkZ}Lt1uy^*8w3E4r0W35&?ks! zlV3nVoGz>s(VZ+!kA9nh;Z?&01y~Lpik_U`s3YnMMnXOldRO6VMQ-^z5i5z92g2O z#aSr$`@q6n3}3*CVNqnFltwoYWz|1cHjdq?55NN`+r*7@ z=2L7q638-eyeAc`loBQWuJ8a90C0J9e(;B+P%?9Jp8%);9f6sGjA3(Y=!jEV4ge*9 z0^@?9S^-plzVSc+AOPS1AOuOE0*LwGDoi2Odw>Q23MASt7Ur4)1k8y50$%pKATK|#|CDnsyRgBR%0096Ihv$({-J9kpqu;jsWXL>@m#>btqxXBM zyMOZh%uYv98;B(hQUl=F;B)~31%qWpB*jGcAMjvKFXBNzf_MS|K~Mk@U8OMYm$8_# zySM`ZP7D%n&8?jOVoRX7U=TPxLT@BzfP|-JN59+v0DuSq!VE+tk4saAh0#Q&4O}0L zB8o#)d5Iuu3oe8*3o-(O1G4vj_pg@Jjo|zc24Vrm=uGtpaZq2QKR|MvAXhCNWu*Gp z0%rySy~r5`_p8jZ7!+rLUjoGN3WipN^zUWUdxN;}00afZ7@)=o3`BV`?ZPb%K)=QS zVcX;Y;(XOWYBE7j|5!*-e)gA~i{Ssp01mJR;5$TczX3rsg)6pU{wi9v-v{SPfBX>m zMgRf<08mMgXTl=y%+;>b0|O3f0Eb`z00BV&ZYJOcuK;*30003&06B@c0jt0pi~s-u zK>!s(ZUAcV1v0P`0*n%X3q39|sN|jsKh?kjp-BIaW)3D`II zV>}dN4+_)@9Nz4p51<;uo(g~iC;*lPajo*FdT00aF!J~a;D8FLcte7|^1*R9hwu@m z_FoojUfwcj)_lRbj9+nB1Kvb3rBlN2CYSLexdjD-G`_>lU*Un%doj4aa6$jP9qe3o zV~1~h!wbf76YsjdcweZXmIvZSm2#Z;6GvYJX X@MZ*{PAmCTw9cZE`F{mGFZ1weS(OL> literal 1061 zcmV+=1ls!m0003AFaQ7nL7TuDyakUiTRbxU1OT2oD*yxoAQMmA2;E3%j0&g#35Z~p zb7zFSUQ5eojC?gn%H$%BhEc1w>?LEu9h~rW009o-fh1@Ov$QT4fNTJA0Dx2f1{zqH zp6V4N@IwIfxkdwpIFbu055(}pFPsViFkr+O5DfAN0K=>q-Wf{@3B%qwS}*_*4IM&y z2+%F&qT5UXiEsb{06-n!)cH3aFhD_ZDQ)IP8H$6bVN~_Un*l%pal{4Dkfqo`anvq? z#J9E(3Uk^B7o64RgWWZR_KZXK;0Ia5f;-COWi(kkEU)}@2 zpyC;9X`;nLn@1OOIDP=|U(ppVaxm(K!<=D-b;Kgk?F1@J02Op97)qBLiI@T(F+0NKoiUP z#Nxq7ueeHI8%x(u>?IBztnsLlj?LkoNQYsMkWX1`TU!elwTS2bulF`i8x&;bH5?#{ z0f{MxfQ|zjl3S1dOgonNLCiQ=;7_Y6_*SQ2hx%UxqC?>@WC+9tMtlYU2W0_>5LP7) z1EUr5;6lR;c3G6~To#9Y@DM_(1UTS=OuTr*$l!H684oU8Q}_(vm|4P~C@L_Xz@z8> z-~bGuLk)Q#2?Vkuv^^aFLI1c2a5*g=8FE~nfor3jUEzpfA%D<^A2Ib#giZVa0RXU6 zFg{{yTOxe?>%(h@CL5{crX9}0YLyciM#=;z#EJJ00BV&6+&+S zYVZXzU;G5XqXeJ=&r5`4w2>wc^>6_E6ko@)0tvQXB;K*O`vE8r7)$_TRGDUBKJX(e zH35o=6@JNp9s#5~@)iIDXaLd$Qok8@%>Mp{A0XBKUjZBt0c|e`a0>4%6%&eGfKMjh zlhJ+NV7W9Mk@9UQ^uCTN^as3(9e|J+C@dNIaP@ong9E1g%wqY&kNx1U zWWy49f;Mp`ico)ek5su^5aKpBpOIm`2naEMV{9RgbN`?N< z<1>Mf0o)k7U`m(|%LihYulamffdm{`2Y3S1HdfOB1Ib@DuiHL<|J{ng*jN5c|L?E? f5os2|K9SE~!IB&jihGbRjNe5T`#(}O=qBMdo!03Zec z0s?>lAU*+P&IAF=04W2WZ=2W;fzqNr080~wj-5OH`t6v0oTn*orSVZyGRAIRh(UV1 z0eNY@OXj`$Ahjca0Duav@On;v-r)m!FljwX>9~W$aeu{;p};^8mjcNs&no`To)Z7u zzy-ivwW*vY3FZ3;&;SSoJ^)cYlbEajHxYscPHhWa=aV*L|K6pbLF#musnTPA{5X6k zzyY#m(3>e$nP!NHD*lj|B>)G;NB|THA?$FlkOSF#_m}`|D8mO6{;WDX9TA z?r^2Wl2q@+HRu8fUR1AA(#ZHAC&>M(lT<~r1=M@MU`I({B)D4mc4HV#XrJLBMop)X zpCq9?SUvzX2LX=iBQuD;)Pa zjQ|70WEl=cDY4i0+ChSH^8}{1H~nAxM1U9to8V!zkUFBi{_!>d4X)q}vB%&*b+(3Z zSEUDub&*7ow*TFsbK-1t2=Yin|9}z|t}v#JZ>khgw^ZQ(0w6Htwn%X4+K~+_KfC|| z0Cm8?RMH7uI)6qNp7-zo0s!g&%wQohwv8%Wa(=`BBcVtDqLV-{=I8rC{0|QlS`z+$ z7V!MA0AgesVv$@=LVQ0`1j&d907wOTn?O!Q3Rd4 zR7?N?0N?-+A^-suPyi6fOn?r+iYbPa7S>cc;bLw>m?{&d2M6;nZZkv~QVTfs`j2dB< zDSIR!-`GB*pb;F-WkDdLJEr0Y0A88UwXRdVANa-c08lBK(&-j$!#XMuiZig{j3LkP zf7JiX#gR05kNkjvL+{wM8c3%4QJIee@jwOwhR$T!+?G_3;SgW~o2iG$M?W`!03aT7 zzyzB(ROF7by}*(4s2NR23M#l+oZpX%lm_@xHbLM-Bp5B@_N0%TJVcf(cs%KU^AQ-2 z|BCPc0s*Ml07-?u18EOA|GM*RZ`7(%o#J2#4uAk4O9HNN6%5$h@t2wd-~ic}mlT5@ zzCgwPv_nop=QEU#4#Wj8Lks|0Br&h~PhFp%;rVC+9e@A;0YLz6Cg=vQ0C+F}00BV& zIf=RftH2wK0003&02M-RfNJmsF##YL2!*lI5DQ-d&^Qu1gkPWwGq4CgP~2WYR{B&p^n(__C>I!L02qK;Ux1Jd4}dRJ-qs3*f9Gi-nM-rK zz~jS~ie`C7CIge?V8HheJX=;B!Xa;aQ^N2j)F2kO@Z#w_)Xhu%^kz2?26uU3!mygcx{8$g4OMmhih literal 1421 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 Hc=$JfS delta 1104 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 m?nZO(zSa^Aa)O6h0)6A(lXn0RFzGNh9w z7($I2s)vs($yP<1W8fnR4p=7ojkqe84DDuMQ=9{(!FS#OLGHmOURF9-(BsBHYvmBK ztK`Qx=}&+|5v5f3jV}pNzxV{;0RrXt)cngODH1>LY}+#c0RTV%C+>hKYr+B!AmZDg zC2{ayegUqKR8B+vOC;#36FaY00U4}a~%p!V$!Q0dMd{~HDJ}_ht z0096oGK)F92k1{0dw$=4|3|q2GiJ!l!1cemC#o{^;Nk4n>-F6-RG2jA?kVxm` zBe{n5`dU-I2UU%QN09wq4qpvM2Ef1#z@QF-kQ6K>QMfkwZ37=E|8i)+3WGLm9f_@t z-~b2YuQm3%m+E4|L zA~H0Xx}v9F00udSIA~^--jjumjU``P7@!pyL5gR93iuz8i5Hy#aTTiqj~AH|j0bR1 z4B-iJ#gA9N!%%R^%9;d73Gs-lH(mzE055WQS6nHv9+SX90Y*j@VB9J2fB--kC-LT1 zSag9jzlaauhC}^w$)f;3KTd)l^}6tsg2Ebv%wcp8L^Wm?Y{NgoPyl0aOT%JX*D>BO z4*=isiDYv*#?>`_X^YY*zuFrA{p~XZ3jsW?jmkvn;0PdtDlIHwrpXq3|AU|ki|_#= zmP6xJ?`VJ!0t43dZz5|)t$zDJ01yrbBF0=s9EiFrTD$B3+-rf2t`~)wOMt)*fkaeK z6U&41$n$|y+(0E6a5y1MKlQf(&=65+xpufeb9pNJf|Oe)h=!z5TQuMR1OQ#Y0e~UI z@g_krTeoc~et79-8L`QD8LBbQSH3_2fr*j_=;3?byb!s(Xn<<)1dQ+zz<|Lh2*QS}Yyb}~^~M?Nq}q0Z zVc)%EfQSSF$R>^sU>qP9!YK!Xhyc(DNDaNDi2k)H?$0*>B;xsY{W=?dP*+$Rik=aH zG`<2L6lMtHg3tzusBjD4f;%Q3D1SIG{=Ed0_RKzDFyJODYTr)yCW;yZQNcvNf#bmj zJ!m+dy(qyP4(12C)6o#Wv4LXf=z<28XsS(wJ=@qajjnzFO)c0T?{DNWn0$49_*Du3D`RH9!Iax(pip%-|&D zxB&Fm)Pw)Va@uVLS9jQtE6BQ-u;;hyVvL2KhU-Y!BoTSR=p=CBD68`bfL>G->n8X~ zlOXo`F% diff --git a/samples/h264SampleFrames/frame-1317.h264 b/samples/h264SampleFrames/frame-1317.h264 index 214a369dc33af0aa6351aa13f3b5008067d75785..130aa243e87a705d4340629ff5dfc96df7f5cb87 100644 GIT binary patch literal 1142 zcmV-+1d00q0003AFaQ7nL7D&>yakisV-gU;CIT0mV0D$|=a2II8-!rY69S-MFx&tT z02l;0&3+ySt~@@t=KkUMF{=__1RlL{mY)&tL;xcI1LzJKdd;JP9J2rJ00=V}a^8ZB zQ75#5iQotT2%#f-Q%;2>s0LGVTmS%oAy7HHYIDj!YfJy{UQBni#(L#NB$z*Gek zAX-?mK!AYye-ug*_%Q_lrGp?;1Srp-7*H1f@4IjZ!B1OSiT;2NLFpS%M<&^83rsC1#|YT$`0l-QRJ{+ZVV1Qv{W8Z#b5z-ga82nAQ;RW zOwX)fDbx;LFth7lxC9s=LxCTtR`A9sjd?&bcY<#y0-HcE5(uJ$p&E`3ijV*Z9Do3V zjz$0gfyf6;`W*%U0s^1_ARD-30Ju(P`Ub}w4HGMJ)&R96hG;nkK7k9VtLjQ6;JFAW z@mj$OutmU@8qg?+nTc4O7*Y588Pb3NfaUif1PRbi@4w~nnj8&O7J&?Zh$dqJz^zjP z%qDG5_YgJUFa~o~;Smo}ufd1p5)lG10Kx#_q=dm^=YU{1+?zTNH@v|RoXlD(;_yWj z2rY`E^5~9vd7ix3f~VRBgTZpVw39&#+`u;qSWqd1_px~O*}wkq2w@I2s~|~cmd6ml zVf*=lR}2OU8*wf|rADPiLg{WE0Eb`z00BV&ZYF>RuK;*30003&06B@E0jt0pi~s-u zK>!s(XaH*P1d9O>3IZW+0MufTe-H}h(CGtfC9$9M1b%epNz1_jZNNqXf&He3im{Ne zz%31>fN1fMd~jniRhm5?c?J#bz)VE&#P@dZZ~Ooa?w!~uZDa$ zU$6B_ANTB@7lAatCCfrWfC%WLGF=mKGE4=O2M9{MkOJ%jjzwN!a}wkHO|GebhR+K7 z7#8qXRETvK8`^9ODktIDv2NMOO(K49F&QJGT!V*n+W(#E5XJ;a*8P2}<>f7Z@17Td zHUcmd4+{WlhbmcTvfu|cUV;}D;jLi7f2PT@ZknUN`{zZ$rxv>IfdhAR)#mTTrm8x^EtzyP!FRfUx0~-H!cjn@G-meh5qyZp*TIx5vRe#_yK&L*}lDmFr)e5 IcoWaT)NME2+yDRo literal 911 zcmV;A191ER0003AFaQ7nL7G4syakisNeBc37;1!_7i+Fiz5yPeF$MsD0XabBwm9K# zc?ZxVFM|<5py2RU3xb0P01d3pB20Y|d;|qJ6rO9S;JFJR>%0I(pykK7Frn2C^tb=K z9dG~;QWYsc0N8$d;Z~Q}yZ{Cu29X&51)`&Tgt_eIkAu>Lat9m|D|>^2Md)V|C#&Cj z01z1ZnHB`xw=JYKJf!##*yLbsUIO4Wu!@2xnY;kX00xZa1c<=e7|E|zU;qd(fB=L* z00>2Z1rscnV;W+Htmrt{0ve=h$IakRFX(Rq5a`HP_yBA$0hx608wiA|Yyba@0k{BA z-lm+*n*ylePRs!q#2$IB6!6(HT>2+v3;+ZGAOJWxT#@a(;}d9r7Y1eVfLtIR!a!#b z6B*zP0|CO6Ltvr=5j#_7c`g7S0|r{X*eWW0oV^weZeRic1#~zM;pm(F_l2ksFk1C_ z(umO{>vr&tQIv@mu(PtA2or1JgH{7w39=xixtPGtghcU+01A}y8Y#fNHL~NxH~<0x z#}pOw!FLq|sY|3HX@YNn1_TlEXwYGj z@q@m0fkf%#5C;XB@B-h*aq!q}0-*Ubz#tS^BZQkBdWih7bMd23g~cNPky6Ryz(%Cf zsI9hw009IeLPf_&LP)TE`nU!J%>jl1wY8xcGl&6595?|tKmY&%K>%(hkOr>+crX9} z0YLyciKGFmz#EJJ00BV&6+&qMYVZV$0T2oTAx;3BnIsJV2oe_17-$n*OJf%Agnie8 zi^JQ1j0FSu=7=^b%7lPs0cd?z0r>Hucu~;LRWp7sh3x!aw*f#51n_0r*LnT&00Vhi zDM$(?v`?`8n|+Km(47A48;{eYmg+I1UhN z!GK(VIOLWB2ZtNyZ49oeukB9?<@S4wj2IO8AjSW016gX_UKZ3QFmW~2`~=9IQam*b zIYXNs`dg-ni9P*aJSzfh1Yjs06a!{Zg1F_l`509^{1egSPE9H+pS lco@aoNH0DActN}!#~}o(quclb7PP}uU#<3@6@fhb9YA$XgR=kt diff --git a/samples/h264SampleFrames/frame-1318.h264 b/samples/h264SampleFrames/frame-1318.h264 index f088f488491a43aa3fd46a43dcd51ca9c41111be..55406476b227aeb73560dbebb7da72d5f63aab73 100644 GIT binary patch literal 1438 zcmV;P1!4LC0003AFaQ7nL7E^Myag99t{IA$K)?7z1VEu&030}E06<7*_L99JmFk8`eZNBOGokLFJb0B{8*G(h>sBNdj{m=rVWtI9c83)Boj z7*YpT)hzRT1^~U?U<3+fEHMf{=_Jq+P)50WNG@Lg}t6oW=GnPR9oC-Rivcz^&vdjO~ofG$tBh9epz19uPu_NV{|5iN*t1{rWK|0pyP zrSl$__s{|dSPCn&otOjPf$)X^@xOQk0}BR8nK{1FjNufSfyg*`m;eY3g8*03b%12x z6T~!0tDqo`7d8rL-j*Wr+Za$Mm-O*0Be8%0fQb$O0s+8iB!59rtx3-T2++cp7p6b}xIiGk6J)U9_k#&^F?0jzg$0s|Q5f7opcOzy34sV_zySaTe}u%Xh3Q%W zj)1>LP<#NuE0AC$T{Tww(`|qM|DwWh2Wuq+=mC4HcmM(b3;;MScS(&75%I(1asBha zK|qp&6y*(NGXDhrD1Zn72S5N-_LW1qUe03b@Zbyu z5Ku|4Hnehv#Fs&Ez#wpXgvcmwfP|-}hriqa0DuSpp+%w+OSS34Lg=DV2Cfgr5k(=Y zJj9SS1(!k`zrl)vz=+S7*rqFt{!waslpmk~5DH;{te0u-cn5`I+rR;%kQ_KbBbJV? z6#yE|0qeLtG09`z0!$GD*$Co){!l*6L%aY8e+Xma;}kSUwBBYozy^;106<(pOAKTu zQ)ShcS<|TWPw|1fg%}B4T(YYK!E1=!Vj+gx+5iCnAOH|zkO8&uf1t}q1Nd18IEs~0 z|H1#k4}`z~Kqv|cG7b1dUFn*Y+hD_*fFalb00BV&ZYGEZuK;*30003&06B@G0jt0p zi~s-uK>!s(Xn<<)51>x~1e-}V+DWzl`~V#WQ3zs9H6#i_Rd5jiuvo6kfG7V2>mb*@ z76=b9%3@0zz>}$z#@~zRr~d@c6@7HR0X_mC77i5v7+$Zh@1SY5seNX!?_YqDDZZ4q z!ZH8V9vJM)kJZ1sFl=l8_y1r2=LP`^^aOh5qP=f0GoFm#;UfnQ*8}kfzk&$%g`_R1Aq9!SRyatrSs|C3>c&;a!A>!kM0}Eo?g1Y?Z89=z=43@pXKJ0-*2!f zCCff35Bp&1)ACWe7$bi5k71ABaunKJ1|Xd8hMhZAH_r;dn!rQ?=qC~s9{{+0EKD02 zU0w{A?x#He43~X>%|B-C_y>~Pluw%w?K~^1#|0upD-J;Dn+*o^A|QlE^J=83Tj5Sd z&!_*E03S7W{DM1rx7B8hZh5DLU`>FI1_A^s9sDS|Z&FmYXyXF*5```UMG|?lb sbov$lmN=Nczk%#-{O(50XZ_%6#OwhgQkDD>27bcWAJKjW=Zk=ffPLX+i~s-t delta 1161 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 literal 1271 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 Z`u~tw4z4$4*?)if&;I%UJR%(Y2JEG^E_wg} literal 1464 zcmV;p1xNY-0003AFaQ7nL7KoCyaj+y00cH>cV>5HcXt2y0QLZ6I0P&p?g$w<`L4n$ z=o2vkDhmJufCMoh_iZdwz#jM+nZySL5l0K%Z(kYek@vO?2Wr#fe>hJ>3U~krup9z< z;c&{P&6WZ|Ug?)gvC3bh09rOA{(Opl{;UZUa}O8F z=s_?0+*!K_0DverMCkt};lJR*jq!cX=@|)?OkA%}zyPIex@TQ28L zcUjqx(_26QAPNBheyf0G(Sb<-0Du61Knn>65fBvQrB7kCw4e(fL}Wdcx}v9F00tDp zoHR39?@7YO=8~_j3{VP;pv1Sp1$+<4gsaYgxQf<+LJ8wSo1pFrK^!3uII-&Y_-YOr zIa5H10X{JmX6wM%;05ka3hRY7Bhq*XASlSftQ&>QN6c0QXs_5k||r3>R7G+meez`z(`g+|pz zcsyHy5|o@E1mFxC!(&p}2L6m6zi0pg0HC0hnG^F0bYLOhi#-51BS$X{q?__7^*jwp z5r7SK@+?oTrvwaT6j^RKStQ-Q@Bjn?LhAyfu}HM(--NeO!B}#N=1R*H@0M}^0RTQw z0Dv6E^oS-gYSBObnBhP>Pf54n0B!~`ud!dDH_8rc_&fdp0Rx}_5DkftXjtBO2U)m~ z0KgjdfRe*&h5!i(!5WTuLZnP|fwDdV3h)LTP7FZ+9eb)813>-=Wke|E7$V3i;QvSf z1PRP)DLez%ilk3$z}dkXV45Vl4ol!;3kkyF0^=YHGXc3=py()l*HHlc0K$-#XBPmW zW!kJkmyAs3cwsSZ-dBMXFaT9;0|G8Mt#8hL@iG8j>N*qj>+cH~04!%3Xh9ha*@bB;-Fa+HI00BV&ZYHn>uK;*30003&06B@Q0jt0p zi~s-uK>!s(YXEBS4GaVzI2ID%0CwWDWQ_kL0E-z2FQNDf{Lr-{l>dhT->_+O^2&hp z4h7l(0IekF4j|M33EMF*UAk-oYK%m&a%KUzAx`7L>mjjOpPka8v>_{pfomLyEg?s@ z>Tmr21OXfc10BmDex>$iYXA5!Cl|_s&&LFgFlZN%G`(y0Pzhc`LiAt0|9<`Vx9>rR zH*Rh`DF$<22yhSp@J~QLZ?CL+P`|&ihv8Dz?_^wWHh2tLzEaFVm`a`%fj2<_pa*(% z!xeq!g8MA7ItAa{*mw$pvqn=R)Qcg8$B;rtX8-H|hLdCx SqHKZp{lC9o^THv|z;3_-%XEnV diff --git a/samples/h264SampleFrames/frame-1322.h264 b/samples/h264SampleFrames/frame-1322.h264 index c094ff31e439f97addbf4349198ed0faff1dbe49..09d817e21a7db2f057a3ddb623b251b33ff60a12 100644 GIT binary patch literal 1010 zcmVg((1X7FkU;qdO0CU47fC&Tx19~vQTUE~yr_GWK02p4YeQrPk z0097kiQvqjA~CB46K7}u0sw=aJsGSNn;B5ABK!A@1^@y9g%PS64&jb)9svN4Zx`ls zh=#27cwvy`PQUdv0uNFoy-1UC9yLy$U^I#}04&mg$~*+VENP)Bi3h*{MkG>|jM+-; z&)@(s51@ool^Wu$5HJ&0;HU}wk8#MvkAmji70iXaNJOi)AL+Nc>Auv!?P{0oW z4hMnxpg^cemzVKF%#$%U%013M$Odo#aB6vmHX@BNS08vGh!oOZ zBw<2AohVoUcfbIM1q0oTy8?m`@jE~GKlqzwY{OS|3}ZL|yk!VLtB`1uO&hcTfI|a} zV8AZ$lEa2${cQArzP+#bCV&MX1rtCR1cPcI_+qz%vZ#OnK@sRw{CnTW_E1eZe`5l`SS<%WW(Nsys12ic90X9ba^ z##sOh4E@1?3KI9zp|KG$g8uLV1{`3gD52+yHH{^&42}2m30xo$csaDV2$GkR5{8L~ z07I|<00BV&ZYHP(uK;*30003&06B@O0jt0pi~s-uK>!s(YJh6+4FnH>Ko}I@0CN6Q z{r~Tf0*YC(PqYba&N3lkPt@sEfatUFzyLS^)_Luy*suTl01hx;!bP$F@A41>RE=$a z^PAfCdu*^U_TV4@fFdI^3OvCnK*0;1X5b@>FmO==7MA?!Zj=B#!m-)sfhBfj0EhxW zks^Qjy*hKC`2^}T5%Q6dO2xiyJzE0=2AISZi?)u=qD}toJSzffpb!8?5)ujl!B$cczv#WCzH`EPe1m}%R7g?+ zn^Kh@J_O+-1U}cC0FFYXUp!g?@-eY6+9vHkf6y=#G9k$74zrHNa1+zQuqLoP1EUyt zPzHW$jV7Ev?oS28VIPCBu6LG<{qq9~9xXWY17WsfJ<>ARFhljgxg9^0Ku3n+{6HN} zLtPUT|F|>(hyy@E%7<6577gBifT+uQ=8}v5`D{Rg?y&^`3o)rWyhTo<7ya*80t}|E g(8zAR<>&wzL+nk%tq86E@NEEd{P2tk$Mf(T@M}S%TmS$7 literal 997 zcmVBxyc)0A~OJ0BYngBxVQD#$Agu002R} z00b!j079Gq2qtM4-Y}OG63`uW!vu*Q!@X|;d4EH2LnHt@1^^M)M1Wi(8oA&9{xAb@ z0N|dgtj~yxbi>!=0SqC6+g%2U1xym};d_Z-03Zn<00;nqL*<0Gm(uvaE)Wl4AXXqQ zH^2-5fKc?%;4*~_Uf}WmOMnAVFe26eLDA7BgJgJh8o&Vn1G)+UeinE8{tHkrAY&E! z(x~x7?0WEpOOT5m(BT$cDr18;v4`0 z0YOR_L{yvtTU<%Uz!LxvflU-i#m}8gkkUn~(s&p%oEB6cAh0)9V=5NTll%Y-1Qdys z=n!z!AR_N{8N}}(Knet(@BxH!;4C2p5DWlK9{d*^tOG_( zr;j0OOcgX%`Uzxfkyo^9Y^?Z7|* z07OlUkhB5PKwyQ>GL0D4=MD-%i;I44J(}PGW))Uh@JU>m>H!c0fg(ix@0~lR-UI@5 z8XfkLQA))=Uo`>teZXmqL0G+5?CK=n?$g4sCYS3WtVl>G2M%ZAT`#W_;}^XRsDJ=K zK609$3^E2}AEjIXVp{MT|KPx37y6QO;{I&64sV_l%j6s$sB$DJfTq-^N6vtpcnApl z9smM|F?Bw449Xc;*libyIC!gR6bid2KNfH7A4~{!106tg&xdatIGKz;ud(7YpFMvXY5`#q=-~a>wLatpS TJ(%ZDl@s_m;TRK-=ioQsT^*B$ diff --git a/samples/h264SampleFrames/frame-1323.h264 b/samples/h264SampleFrames/frame-1323.h264 index 812a9e0ab2af85108028ff6993310e391b968a87..98c506d7d5d3e370e66788be3c0adf024f7c4404 100644 GIT binary patch literal 1332 zcmV-41c*8c@G|Ju!bcZxX}OBNz>okC4IP682p!#;t4DW85AXtKAx3ISe<+qM zU8n#A1pv6~00|%ILvRL#z<=NOpmLlbS1lc7&-MR%ZL>DV)l@zJ5G@HP%d4ZndqySh zKldmA3;-yrSN{cX)xKzwP zfC2%7{$3q(u_7kX+qEJ10A&fdNY~9}Hp77|gEtGpaazeiB46s@6aW+eC_JhtkP!5N zlbjU)_kdIY4#2FzMliXRbW93aO@X&XIWA5*vgFU)M@Du~)aC|ZyohQf)!g969~ipoif ziLK#*IKagOL~`r!20)6~Mj#OhKrN{u0t}!+fJMuI5C9M%KtTZ3(_8&Z#d_e@EkEDk zyd@L@H9A;K)RX$zDkb%Sfeh^yRPa?+h)kdGW(rA>r`FVr!|*^EhzA>?Gt?pFL0$~~ z0m^WJT(otTk?UXyoEQl9pky1~uQJeJQJxa`7AJsIGPEzJdoG*Y9mjwGATA)q1~5Qk zA<2(^5omA)-Y@}&Z@32&<|+eGk_&(O!a|+;e0Ko_WDj8skdepl>0d=(otZp04-?7Bd?<)bc$9;kL2!hB5 zO@k%SaH_iRg+SB-x^;1X8Smf!ess3m%=5q^CL7(Tih5N!E?&p{UMz1QvV2Bu{k$DK zHaHVzh$QEMmB>-Q&?8`2UMXi40V@5mmJlZ}JOLO`(Ze7E^zEZ)-mC#yV?jEU@0KKe z^-pVWV1NAZ!;J%H2NVGCF^Dbz0RTGS2Hid)75RMUx;2?JY&*sCF^dHNpQs9-!2@7R{azs$P5?Qfqa5Zj z|9BD)X_%-huD`?%5i)@mB!-;wFjNu3v3QC{*}wj<7A)|YPsNqp|G|d<4+N)8?=lXz zKibEPhF(GybZ7gP0&FhduDC>!|AU?tfi)M9jf~qp?$IEmQ_$h6b6v q7k<9~#Yh970a0Ru{2%xS3P7~fJ@+gXFjz6 literal 1173 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 diff --git a/samples/h264SampleFrames/frame-1325.h264 b/samples/h264SampleFrames/frame-1325.h264 index 27b54c3559464f9346b1adff53d34d75e07d1eb3..12dfd644e25c488e5bfec5be938ed169997ef0e6 100644 GIT binary patch literal 1517 zcmVo)YI>20nS#iH=|4+(;t` z_z4$T+3m?(0RRC3Fa-zbHR1!{g8mXYc3{E{008lT0DzQ5-~b>h4-N^SDX*n(0fRVO zWrS9!!5U{p|E!n63^zLkC}#jc5a>LSY@ayQ3yd%U1E&j83}2Y`@LWI%fEeLR60#(4 z`IR2e+yDT86aXmYUs-ReE8-QEd%>6L1zIwofC1BpZ_H!>%9s>5kth%Sp|=ioFY6Od{0h;PP7LUmfl3c z_X*HQNCF>AbigK4MdD{sZHJU_Y#*asxj+EQbITtCstz!l3l8y zgY)eT;NXNc$$$fV0rmU>gM&(ALVQ*0|Hc@0V{#8K4HN(tt6&rZ2R%lt>>%VY23O~a z(E1pb2Sqnl4p=|{fwYcSG53HFdIsK5;Q=(>Qm2Jr0rM0hf`s1HHbnPGyqsoyRdPscgBr%HYxEQX=oo<1GvEL!I{~1|Rmv^QSXA`NeXxi?E=}pHNjKgA z0D!Lm5by&$TH$-X8}V%>6S25B00IWlF#rTQF8B7Z2nx1|)}*$-==# zgEQ1qvr!x7rpi@^yth4D1x8x(62y10N^O1u}Yo< zQ`3w_0ENH+z)>(&KFv%#B&ovB{|DwK0a~6g5Og4q9f((P2F0jwK|E2G+*AL-@Bjh= zKrl-k@WGxc7WyEF)5lA%^Cbm=*?X4027nxOWMFPdaoVFX2nXN**~NLoLlx)54CGSs zzzlu>2&O$S;`vH%v;$BA25_h2s5CA)vI1>`$%M#h>=p2230Du^EtdKCxWR3$As$*c8Kp%JLdQ^J&Kk%(hzy_}X zcrX9}0YLyciLe2yz#EJJ00BV&6+&zPYVaSg1Hcjt5P%D(fujk7({TOx02f^!izrWD zCA|^}5OZX|;A#SZAAq1Nfu8WW#!9>d!iJMD;CuyWKL&6F^2Zbjn4Q2urVR$YgtpJ` z-WR!NXr3V<}ze3$N{lf0Ki`7h?JS0 z6@fIrP2vO(3Sew6S8!Xa^?$k+9-r8XAOB171Bn2xUJWZEvBy7XGZuUh?00UFZh^~3opUEW7tGE>hr*r0tF)AJpt{ESM{(ym><wUZbcmX{cW(pPjQfHoUu#0x!u@Y+W T!pcie!Osf7oFn**Irs(!^CW@G literal 1082 zcmV-A1jYLR0003AFaQ7nL7PAtyakUE6s9~51F#A{5L5zqhF`)VegrU%97X$p7r+2O z7z!bq0C-S{@UF*$B3FqtoPR7+_Bdj00a#H06^=q$N(4y7$3j@ATToL zGf{zm0ton=0zo!Lh#)XNH`qfcwjripe`5fs-~b>ccxVb-00}{jkKcGOM2vWGWK;q{ zMDKiES_4M_06+>tKmdl8umLOd8-)DWzxDud2!cFYUM@X5d-njq2U7sU;hr(P`!T~w zXZ`F_kDv*%Q2tgwYI%S#127OLJ&|_K1&W)~;2*$83TYraSTl_%kyuFP00ICnKmq`8 z3O%c`-$gGCAMXGN0s^=!lco^M+W(l9lYl1Z0003&0B$DG2Co2kFaQ7nK>#_4v;nKY z8;k$|0YLy2LTvzQ@E@iB!0-fv1Q0L)`tW(6)Dnx2-2e-eKU*koX%afIW<+%*{{v7I z0Q?03WCwKkB{<1bz*PXlNf1yz0_Z;ixC0L^bASi1B>@K*Y&HBP@_Ijbb)HiAjA+#E zRbV!8=?=Z?`G5Z4NJ{L);9EO_a#Q^QIKBq}DpD6?i2xd|G7UJ3`}8*8AT6#%4qHZJ z>-yvvJPcNIAvb^@Qm_aex4`K+GRe7sQUuOs-%kqV@gi=Jfk8k5m{^7&oq6v8X8-_z z2Z|3))-(6;ZqN))(8F=z@}$9y1X$pPw^1gEZg^G%)j)UxfbgaS!nf`ZwQ!X`(6Igd zxkLZ*G6IeZHjy(_k=EWEt?Bm3#FEJWSog-I)aehzq61mPdVe?I`gz-Gt0 AT>t<8 diff --git a/samples/h264SampleFrames/frame-1326.h264 b/samples/h264SampleFrames/frame-1326.h264 index 57ac90dd3ffbccd7f447eeb88c1c4c745bc421de..c964ead9f1120cbaf23d70fda8ce83c45eb3d3fd 100644 GIT binary patch literal 6827 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 Ezzz!hPyhe` diff --git a/samples/h264SampleFrames/frame-1328.h264 b/samples/h264SampleFrames/frame-1328.h264 index 9ae7de4de0c0698aea9752f9660ac476275e700b..66ac45ddec1416f3a3e4644a2d762287fa2c4f6e 100644 GIT binary patch literal 1326 zcmV+}1=0Ed0003AFaQ7nL7G4syagX9Sb4gDSRUU}*TEgU!U9UUIM7D3a>tvf1%dAI z;2;G@=majWx7j;D2Lma91{la@{g=+_!^1EHFb+`dC}kHSr_M2e0Z9#rs#{Sg#>Ryo z0@IKH2o8V)cIY+7o5KuP($B0i+Re;YKDzn09ZlpbL{I+#gP?`T0;?HRqe0e2b|M+q zu0BFvU`PN61d5>t1{&FlYejZkpWp?CM-hJJ;u@u+wEzHsU@bDh4HwxG@C%7Rv%l^^ z!i+mqjxNV`zkkKN&t}Znd;me{(1lq~`UEmoO2hwhfCB(2*}^m@EC~oN{i{4voB#v@ zKnEN)48HyL+6OH%5DyGj``!s7&C~+G^GGJX{CeO%<(&0`Uv(b`3j_T~p9$nGZGg=$ z$(ZvA;NLEC;j}LcT}YM0P^<`IUZfC68F^Nk;B-5 zIMeNV|MLL@eCR^TfE~bN!k>!<$Qi(q@Ny}AH3Zjx{tv)F2S&gcbOh_77sF+pHiOAh z#n?p^l7iYe2_LU-QIKhlK*PD67H9z;pd*s$16w(-sTTYJl|U2)k%Tp(ZMqO7P2)j; zUW=gs8W+xwWfil{LY@|Yz!Ur+0)kQ7*XBb}W)gRTnTOy30fPEZZFVl3JSNRQ!T12m zCga4mTIjA48pbJbyeAcElr+(MR04ns0C4g@`-YhqSjOak{opD99YGg@N?B5=;qk0+ zz$AbTjfjI#9#;JO#Q*|u0B4o}$9T{#_{}FA0Kf$_H|!GDm<1m$cmR9e?-0CNCx!FM z=rH&I0RRyKR_{DuZ#9b&iGF|kfB?i7enleoXO^N3ez(k-4kDwK)p|$j^;7@iV+f$y z1?FgM>O`N<(7?e)&Mo1RkZYsVn5p5CsqSp-*Kq0}T;A zxiADw0*{5}kU=7wW$oC2!82)|0>BO|++d5Hpn6tHNW<|kU;xOPz*u$HbgD$})(jA= z)51#+q{Fg@JTQfMi$P>f>xwV`?EnD4bGpM=m0WHsj&PY8C(b}Cre4rCL7qNkT`LNYLV60?$_W1$`}>QK$v$rxWfSx?C>S{3iE+;R3E4G9|}R|i~)sTunvD%s2q*q|NmH!#o4+}VlRXL zFag#9_z2UsS3#qRi2wit0R&iaQ1~VBFaQt)2MZ=0*}*3zX;Wo`4>a>%dPhS+03pZ# z00BV&ZYGchuK;*30003&06B@I0jt0pi~s-uK>!s(X#i^QEvyXySQZw9fRqLR7xqhe z;6>RTBp`?&#KK6WeEzi;2K$-V0C|(zImpZZ*MJNVb1K|=cK!HKr9o3y=qR=9G70a1 zodZA?gt~o92vSO(fc;m!AJng#?|NlOCMg-9wBj?}kdUpwVCbn`df`&s|+K;jy7U_*L@>`!a=im1}~B@!PAgMdN{10y~FzyLrU)B=($ z%uERjU)x2X#l{XmuCuY)xIG{Dz#v1a1`s4Ht7HVtxQ+v<@I?}Pj4%J*12_|p6!BA0 z9SEnmE}-xL0syB01TKnTxPr25^Qc$>=lMmUap7W^zyL)3&p`-b<=279K&=1vg#}0k zq3HEcU`IJAZ~y`U=im?ns&oZ1JpfN$@D1`m-XIL%03cnMIoDtSN9Lh$P65kM00;ws zU_q&EHFr8+4B=KuN}Sukc2-hiD0Ko*5y2DbHyM+%_*UfNCTB9eg^bAy=< zc-sI72!*bMgluuat-B=}cH+D3w-fjQ{t`63)5$AvafE3UJ{QJP0lvWRUwM0rFkBq&NOj8#79e<#Q z;M3O!ibg*-*;)x{x+o#}!H35g3GZHKQi33V*f#)Hr#K)s!AZI|^bscj1ZZFMNX}On z!*q-!5a^9~bO1u0#K!_Qfg)BnC}VAC#*^e+r7!jqAi#7@;6tx_FYt^W5{!Kl TPig<&9RECQ38Fkl&%hBREZ4P1 diff --git a/samples/h264SampleFrames/frame-1329.h264 b/samples/h264SampleFrames/frame-1329.h264 index a911c661a10ddc75d969ddf0c1665e5ce5ae8c7c..51158a30d4b38397de052bdda63e32236c27913f 100644 GIT binary patch literal 1327 zcmV+~1d}}73t#|=1}20Jx0;zr4~IS1 ztTey?Z~_li!BZ9Dqjs{r+a`DZl{;=MbVAEuEx6 zM%z=vBp9#;?I_M;gCh-e!vFw43;+ZL002OI0?C{R1C{_%2Rz?5upa}ZM0^02Ck-7s zcm4I-F#S1BQr}DBqNZhx<<4;C04>Hh5G2aexKDd)29&E(z`XmVf|2A?|<*Cva;O|J+6d48FP+ zxd)RvTmRmrp#PS@c22sTCF*pT@V0YAhSKrW zmG}3FumEj$03$~ofdST<8A0BZ9woL#5=z_uc7@LkvCt#QDG&YtNL9GPnmwMVQAS-$ zf&(Do$ZU||)0H9`R)2T^0s!uSz*SNST`Hc%*PeIy00IF#0U?Y8Dpt{@OO8*d07pZR z0c28W1)JUPgZLaCsJ=_kP8RUVe6RpXG8luuGp3TrUzyS~fA%I{|B1oIj3c&=zDS;3d00azD#H$!hl+~Oi zICz8-lpH?E#N-v7t5YwAQ2wy+gI6&T+<2jMK;h=W2%CKez6t;cX8^nh_hDN)RfBsQ zDgYGSOg=(6`MdxD0P~&zB-z5JBz2YVp!w7crlbWGTrAFS$Hhtmd@0}&gB(PhQ4xD@ z{Qdr6Ai-}RwIqDu;v}(S!SfLq|NK{g01ypEzyeGy@Eb^Z&;8f7#{EvEDPAT3kmvvc z1h6XS0Z`42zZrR;J^&4wiE&6V>*Ney>qIo zI{*LyK>%(hmuVqg)SqDuoQ!dLtT8EpUnfK+)@09yU~1WA@S#9>}<`~f`3 z*q36XlSINWCaetrPBEYX-4&U%N$>yRFb;vSBi7bmPfOrv0>Heu;m`qXa75>N6k$IA zN&^|8ZQpfq;7a~PWdzyJTN;SZfFG_{c9>ZW6%I>0Y7(uNV`sC%{vMrL_?4OiWo|t{dfzI#$+xpj11OUo# l95(L1BwKHL*VfnPm^6UJ6p$x>N_V~ZnnC$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6nU;xAr{2N<4#y)Y9nE)0s0jc;f*yQw> zV77X_<^m--!W>mzw8nqO_OZE01yuV0Rb=o@Z7O^qx=B}1waYT z#ngS6EEQFXXV3y*Kv3#+8@)z9CmOnU1^}4DH3Ni!ncADIKPs4jUqBOd0003&0B$Dm z2Co2kFaQ7nK>#_4yaB7g8;k$|0YLy2LT>#%%Dk_2DyoR4FFgd@x!12Z=49r1^Fa(03G9K(6-RV$hT2N zE3hT{LwiTn?-A?guq?u2s=Mf4A;U7TyP~=03=c)@E}(+!(97Sg*dN>`UoR+^5+cp3 z<`D|#@0tM&=w^gLSU_Z0fr0-**_XdGJZ8a`X1}~D{8%?x>tMnV z^*ZnJ0n((fUXfK!Ccp2r(_XajdBhlA8-ct5a%;tkL*#$n%pgd}Fvy@e9|^wn1P@Eb z{X{37x5;asjQjiuYek3ng$Y0GwvoSkXYFuT8zBv;MDUV72RthRZX|&V;eh1{DlFf~ z4=GNTJpcg!ECKJ%@C}n$8e;06!idojc7Onn!3C_J*Jur)gk(%Qz}Chs3_t@Zz$hmq jYsnVbv);b8pTBs7$2|Y}fzrGA8U|q-2k|h7bMOS|RW=}q diff --git a/samples/h264SampleFrames/frame-1330.h264 b/samples/h264SampleFrames/frame-1330.h264 index fa8170fd4af9d8d41c82c80192fc19bf617acc39..5dfc67dbb63c9ac389a7cd674d55e0420c42cde0 100644 GIT binary patch delta 1453 zcmV;e1ycIj37ZXn000012`~Tv0YRF88oUJ;Fs>PjpNSQR(JrZY0W4F%9!@8)8Ma;g z)(p`h@6?rYa)%9zzHUIk`J-U9t_vK7|M@kCJODErZ%HVo60SN8@F%pXbZ?&uVkgv1^2Pber#tVz$v66M`^7tWthUZ|V4E_mQ z+Ykg*(1DMc8F*A&M0WDtFa{)WIk0NWU`ss$I355PID|_okgaaZL12PS2o!--_xq!VC%v{Z(|vlJjAieurc#N5XQ$8`aA zoH8#`C&E?(O_39aBAVb2$KznYhM>iC1)M6C2OxQYGkjl;0t9e)^#Adb1_taP@+^LU zt^@~Q!yBHwwf#t+B%V+~PtAw!=>-P3tOAV!8*n~Qi7i8sIi5C#!`jJ??OIPv!2hXuV^8wx|Mcw!)Fc?pa%kYR{$ zgc3`EhxUU9XW=2m4vE;IayJKHF7!!z`G69C%D{9qB5S4nV`WgmB@7qwQ6!7PU64(I z`oKQ`4SjF}fPiVds>Vx2kONyyhyVl$fB-;y6|ewEIB;sdFBlT=1D!CDo!3nV+?zoF zoeeK#XaFnKrGFnF5SWLzBGHJSt{|2KL+ZfRR4xgAB0xZ3QlUbpL{(hBQeP&0Hfw}` zZMIUF&?GPo@_)@37~UKH@v!;)k;ork$}}-*K8=bZ3SR*6nt%crq4*uf()+$)quZY_ z^CAEScR<00MnAttDmaGEP@xY|N1h=M{|CST2nPX&t-lEs-ibdZ(H!>xLKrDYu%eKy z>i^H*J%{$c%#;=fWrg2g1HcqjU{F?nNpaGGvrv8j8#t{nNJ5-;fow?GSOXV;45hg+ zlDSB4v;$BC3egbnzHx?zgMVHyj5#eq!VvisSa}}+R1sbmlc>=Xb>n>SWB>*;m?$!L z@)#_4r~#|M8;k$|0YLy2LTUhN@h~s}fFcxt#Uqpi&qHF)00{t)0<~OV^!!c^PEv#*MAi4& z4+GNgI>&;(@FB9-teDULfSc>;fA=+qZmIbd0v_$}OQPKyqKY&`*ni!BlMw?XlOO{I zVEjpa6PCo(ErtRKPsd=@E4#;ldIuTED0u=Z*zg_gGBh;R>3S(aGhNRIF*f?-s(zjo z+}1EDY$j-4gFjG05w3eu4S>!!tlgdfTl7rw7ykj#!_y=_v-c$}zT4N&3X`D(Hj}>t z7GnHKev-C?1fY)MWcbj&2q_}zW8xaV<1;Dg2M^W{7qLPWhQFs;wlmBC8cC22195`O zADBk#;BbfTK>lu_A?*Co@zB~K636H36-ul3hy6rB9c3yXlMUQ6v|a{}jqjcllaT{W HlZOOTS!-}2 delta 1000 zcmVgXi&6I zPe1@50st7+)&gP8@@q*`KvwVY0I&=YAjv#*@dBxR&tpdr-4vX(PRgmNeSnA-2LOaH z7a0Hq3=B1{8%nyFd6GI)o&W*{pny>!zP3)nF=)<)S;QuP$S`3~NYSW2e9*)|C88uL zfpS7Z-4}onTmV2d*b=ui~#@uf`_T2nY@x^GWHEZ;|GM_s|7@IC{a%@`Cu|>@AP^iNH+)jH1k6 z;7R}j0fOxLfaphaCcOe+egRj^C2EfdajG6_p}F zxsrFgasaph2mroJBS3xED0?2D0a4Qc1%xhzF&g)}T2+7mfM5rkg2#Qp00<2LrdVV$ zKOY8vh>za9|8oy0NCEL)NI(h?Sik>p3;-R$23%)V*&zLM7I(0v3#OpRC1FQ!OMq$s zfkIKDr4|MH6Ump}0g6Bd3{NeW(k(-`X8}u)06WM40s+MXSh)aXSeKXoco4-3V^&a- zju7(AC0#Ur0Gpry00BV&ZYKB!uK;*30004hK>#_4z5%Pi8;k$|0YLy2LT`X-@h~s} zfFcxtsz~NR3p$lY0M-D^0si+8Qve2IZRnF}O-YW_1QGY9GEzbB4{m6SYFTSyBmhVc z0ezza;<{Br$0@*py3zkFIZ6-XVH%I-1a0dw`MV8;$f0NM!9FyP#4U_By3R4CWpN_{dxn4X1h&a*6aSS3NCJL;E zj+F3EMHK``)7}gylYLWt{+<=w))5K}5YN;QhWDNnX92VWIepF9;0AoQI?a9#f?YFZ zto_NaeYdZk6_a5GHfY>22$L1Nj*f>Y`NH3p6K+d+YVWJSqcZ_LK_2_@q!Cn<5{!D7( W|J3b1gPs$UVFovoAO;naM+Q_E%bm>t diff --git a/samples/h264SampleFrames/frame-1331.h264 b/samples/h264SampleFrames/frame-1331.h264 index e1754244fb599b91e25402d4b203f4546a117f4b..c637410e6888c8c64c41acc1d8efce03420f193e 100644 GIT binary patch literal 1577 zcmV+^2G;oi0003AFaQ7nL7Jc%yaj|H#SY*Akle;jDJgLXX)56`g;U@phIx$d{T;Y$ zsAnmB5JaJ(0ce4OJ{ChdWc)Yby73BJ0Du~`V>Cw4Zs-;A$e+D}EKuc#*Am9iEa!{> z1Obc#g2)QTPu(^Mx24nK02{C&>d)5SW*m@#C58nU=pc{svtb$1`kugs3d0+q_ z000950D(1?j+FsL@ely~WZ)2B6=ctsE)pTYlr880<$9Kb?kKX2Rz4mFL7$YIKD8dF zN!Sb^6QDDIt`Yo1FacM4Kq;Y3C~^Sw5`Y1~06+);ptp`KdG!%mUpgcI+`t_Q8cKsW zw~f&xtUiDTt(gR!-I>|&0AEDR@&tt{E&wyQbWleuN^~!U|9c1-K&nNe&KhPTc(?EX z1OQG5!HZXm(b|(mhdclQ0MLMg0#j)8ARQsS~ps?+k1Ing-|^2mp{i5Yw73mQ(^fS$_%}3q@c6#?YD0{RBeO-vNReHB8Emck=IFJ);?9 zd1a3C-hLV(kJuFwW}(DC zd(l8K(l-qJ-}=uM#g!0DR`7qgQv@);0@)~IUh9s14j{5>y$hztN$0|L0>U^BXy0rsdX z!`__!WdIrg0st_82yk=(fK&(F9=+Zf*0M%Ps zb>FlrCavN_a7*|<2PSDPI)Zy^47SHPX<`~hP?yaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`L0eYF&+$9KmZ&71ONaF0Vete8E-4Zzzs{F$+SA4P)e|jq$BNBuM803Z>F%5 z?-aX2K>1GqU;wA2CG-v@1_6hQfGPj@4RFJF?A*3ddw1Xz013>11On<_*)U&g9{;>x zB917W22xk?e3d<;fDJ=CTOcWMdN^MLFT62YNxV}9^;8@!#{&)?pauX8-O>Z1Rbe@( zzkmS%1_K5*RT@soL@j}f(k~7{%Y0@*BGJY^HBVod>Fu`L^chLp*r1wWrvBf+OaOo( zPQ?J7(dwA8@8IA7<6sepSUe-^;l`$x_3hCR00?b$Y)o- zfCdyNg<)k@wVc}1|NIyLX4`zGyRx$!bLpXm7(hKeKFnF=5f^xBGiTc z00;nMphg=%+4RV|NDi!E$YC0?3K7JwyZ`|K5JH3wW8qny8i?v2f{-TZ0bn5@k|l@= zzb97bz5qY~KsX(m3T;vSBIZitVGsFUoix?p0M0HX*>6w%zyLx5p{Y7QHop4{g3owBAyu`(uiCPz+K2p2vo>L? zy7L*wJvLaK|2daG|9Aih0fkt07UCcB_!tbt*!KKm(GCCt1)W#809c&m!(@yA0RZp- z5EB3o56gH04hn!1or|dZFkC9D6wiiHW&R-qCkViYmku%NL6!}8`^KOW%||s0zz|~) zuQnbMNTfy?Y<*U6Fd&H53xE#(j}R}&d>g;`KL9{#=Lfq^;!BfFe#V>=n0ZssDSSZa z==& z6<2gS_?Z9zfOoopQ0G;l1YFZ#Xf#3&K3=mw-tZ#0YTkx`Sd}r@fuBGa>fB5TmU$&U z(9xfjBcPi+^Z#IO9czaz2$LcIzjy-{ zu#U>6>(fPlfdPOf=l}o#K>%(hfCjGscrX9}0YLyciJ$?iz!^jg0AMgm1WGh|00lZQ zHj#up{LOE?JuiWX3;!s(XaH*Q5HA6MU|Imtt>@vXDotsJ zr4IwE(Vct^gv^W8-zXKa6g>wQ4=Ej=SB?mDRHZr~H>+AOQg+|^LNQnqf;J=6;AYCu z3V?pz1#kK5q{#R*x4=x+eye!^HHnpLsF+{Co1sA4+Z=(Ml+6tYGd!c(6A*UeQuVX_No>zDWrF;tP# zTkfm^q8V{d%m4i6-}Y$l2~GuIRUU$$&~ZoeTew(+j7G}!{)HI-kTL^yA!hES#$a#z U&}(?rQ;>f=C*V%`{QLo9K=4g-6hTl zBL-lI6$1gD00;mA03Zk<52r@Q`z8#q5lS!Lg9(_C0mjqMRlX%}?+5@9fB--bKok@u zcJP7%eKi06000DLub_yZuX0plj` z-oOceRLY_Nlni|W7gJZ%l>CQ+Jt@%>e*^N{!!t_kait6lm8hz@jA{RaVso8n^%7%o4a@ zFi_Kpauq5yDk>jS-XG#H(jUO}VPmKOZUBcM0003&0B$C*2Co2kFaQ7nK>#_4tO2XQ z7QuhOzy<&*0iak?04`v8EEIQokD3f1;P$K{epeAI0 z2p`M-1^_excnt#JH~?vA0I33Af{s67Pu@5CXkFlL>EOQmj84zL$PhhFQI|IL7;j)F zJV=392>P0L;LYy_{epe;SP$SBDAXJP9snQ^h9<}KMSnr@fB(Urujk@NisMb;unZ+h zGsfdAb3L|SkNwx>l>uN3LV`j@PQ|x>EJy!$s0ps3_P{XxfCFQVXS(hPI~D*Invm-~ z;75P}00BV&6+&wOYV)8h0gE6&bQnM)D`QBQL9j>Z6gAA_{+Im56kve^g09~Svbpu% z0*7tuMe1CaL;vXYZo~e6A%h!N85(A!wO@00rx+F;z?7?g=B^&lM0djI@O+YxufL-}oQ1fJZzK UXs@wvat!={hm&ywDU+B3T7yu@0ssI2 delta 912 zcmV;B18@Ai3GxSj000012`~Tv0YRD|8oULECxog1IG+MZf=~!qZb9e@01~(QxfF1w=03awJMLm(!g2_0A8r5DJoB#v~ zhEh@jV%AT#-4Y}C0e~5!$YJtN13bN~o4QHMh_!6nQR|M+E*+OF^5PcQNKL=gm_0bpPNK@o%C+z^Z_ zEy9L)V5xb?(8n(C7(^77g49z8wiGwekPtr*WiX0KB&CNil3n2n z(hMP@+vt@ecTxSI@Y=2vOXAYEI@G- zJf~W08I;UZ)SgNI08P*U00BV&ZYGEZuK;*30003&06B@G0jt0k!GFNO1^_7mpjc7> zA7Ju-Sq7k#$S?pddV@xxJ-f=jvO#2ZU`J<>j7fh3pa#QG0aOHzf&O3cFae+oz-Sj1 z09*in2hsqyhwdr;ZTU3sPp5~!nGJy6kRWqYlts(bVgG0e$O`~y0?-)+V2QDJ&=2zl z{eyjA2E_P|JminI-)Y=A!<5&cw%z^4URPKyG6$UpaJQr z4$pWI-~a#tK>!s(Xn<<-pezB4Am#%A9)&-0Vqk+o4@jWa;uKQW)a?}V&> zuJ^}*q5JvCi$l;$+YR;bAL;*uHncWed*1kN0luD(!kz^)0$D>A8?k}?FY_KCNJn6x z3}>PC5f#G7M1jvAfkDtYJU=6ei~C>!Td2szfBvlrBHhZZgD}hcNK>}Ii)6L`f%`ZE mA`nXZ5h$E0+;{@4T1nyQgwh_;1b3&ORJy| zM+vJ1v~P+NaczK}@NmU!U;rQ@Lx2E)a2g38&{Qi@bHG9@AiG**hfai)qVxa+RzJWD z031+-PNxoCVqbYN4qdf?1A_=)zTr*%;u~~DM|c>i5jAqWngUi?Ujw07-SegGLp-Xv?MGMiz* zmNAos;W+JNpph>1mw*7E0YRnFM1Y5+P%?9JzW}HJ9YI-wjA3&t=!i>N4ge*90^@?9 zS^-qQzVSc+AOzq5AOuOE0txxxE=VKMgMbDA3MASt7UvoQ1kDKm0zUSTK|#|CDnsyRgBR*0096I2j7v3hVb7pM4sF2lOXasUcWlcCTFX|wL5?E z{Kk%FaTkasOHu>jkT5C$fdav@vXWAwdw=*aCmRq1MDSRA023n_9S&fE`-~E7Fa(rP z2-N9eGm(y3&LCxBEkv@fT7E}PsP$AADJE+C}_FhF7< z$&YRkXmSP~Fad{exCayFDg#lH3xE2;LY?~Kvl93}@qh!Y0r(El95297O(94C01#7$ zI#d7Phr%!b5C{T-%!57=7kXx;cGwsgb5I030003&0B$C@2Co2kFaQ7nK>#_4t^upS z6g$AI27?4FFaWt7HqR0(1)iWE>EH54ip0GC~7l;5=(Z74JKu^J-A!y(LL|512x2ZD`k1EG=5 z4cp+ypa38^fB=0jQ2|)3H2#~%XFPy8Sjprqc*xtrSSuUE$J?}FHVt9OWR zeaI-wq8Cz-*V;}h{dyERJ+H2P=0qnZU`}9I17n0B9CQ!_+ko};ygD|-;ygCh2X9On ze|^tjdPka}Uzzyu2TaM$Xwf_LdH#Ba{Xb9I_P;RR03UX9Sfl6v`gq|`Kz3A>GxQP| z8a9bk(SGf}*5<`wt0Z&R?~nI*0QhpZ+OB_ot`H|#twn_CzyHuH7I~zP=Xi6%up__# z00BV&6+&x(YV*7ZfM6h?0zU0_Z|}UqjDZ#Tq27rp{o&yu0t}sSv6b`TPO(gBW3R-* IKNG+kJfyf9)c^nh literal 1039 zcmV+q1n~O+0003AFaQ7nL7G4syakbe1p~1lQWO+`0uUH4523VBl8-EkrKTE4RN`2?9f>k3r;` z_XmI%(hkOr>+crX9}0YLyciKGFmz!W>ctOkPwFaUIiC;n#B zua|?cEAfF?4Fbu&g%#2OAFGQeiT--Lp&SMIS)p}YssH>iCqS?ULBR+By5tvfpsqV$ z10PYPzrIhFM<3P_7(MKN{-W2VyR-Sxr+nQwA;jBkC<)^c}n9W=8uUa;irSSc;nc17Y_ z(%QY|LKBlPCs_gz3AZ8uET?_llw6;XE){$I+OhsqX`5Pq|EK}9(@xWA@G>TnR7H8u z!PwEY*%+Mv`i6*Lx0|-qH|qFo*Y!=}#ro%P0V^Y>DPKGNz>fd`0YLy2 zLTLbM^SlUvU?89g6+64_<`iTZiO&RbB`5cXgoFq*Wvj#gk}L&J!I^NdGPTq{@Avqa JL^z%R+2GnqzwiJ6 diff --git a/samples/h264SampleFrames/frame-1334.h264 b/samples/h264SampleFrames/frame-1334.h264 index 7df3e8daf908b70063cb6357bcb70d451d97dc03..88aedcd64df8f5cba8d0a5bfd441b33b67afc7d9 100644 GIT binary patch literal 1579 zcmV+`2Gscg0003AFaQ7nL7M;?yaj@hh!it`1A+>iLbk3+(j5Qw$A{-?Z`^^J@U7548jUw@sTNagPujZ7?_`pPgLwiOVa@A%$+ z!}sqv456BdnBI)d|NnjL#nd z>~adNOR0DJ?GP|0H#l0Yd%xBHv`7JfEZP9UJ+f!FKK|hw0096LMF1J$Lh&RedG>=8 zN;%VRk#uo1@4xqGN<1pD=qQs+Q~!Vx9i#|THq>3mY`f-RUk-@4}2e}9v-Ol zB$Pb{k{^};2@@dE1y-blsc8?=Kq4kE5CC`rzfr(HD~1HepeYJ001z?&U|B}M49;+2(8R?D4vykGB(5oHw*wBk`B<@{K8wY!G-{bU;qFCK>%(hzy_}X zcrX9}0YLyciLe2yz!AFwz#0IM2BBdLHzgnp*u^M={`3F*l1Mio2}d{upmM(gS_L3E z#1gyOw8|$1qcS3Z8ibA4ya~`K0k9%602T#aYO~3r`~LtfXp$W&H7p4xvgvlu|1JO- z8%$=_j-VS&Mq@1I4R}5HE{uUl2uJsQn64mRjEqZfE1`$3`*2YS5QvGNB!jcm-L_Xwq?;q}YGNzCqg{JFs`6^J23EtjCcv z4)n1|2-gwkh7|Cu3A}h($Pp$BaC$q)(9%4h1W1A$9gWP02*7>hd`zT0zc;kRU<0q$ zA>PU_{GJ!`1VWYo06+)-PPC4iKxXb zbISFDo)y5Fgb2uDGhlB2$=*j3Ao~=Uc^HA*F_vT~PqAxyqQCoFp+Zk+;+6k=SO=@Z z2C+hyZ{C7q@}ge{!-9=u{^oW7A1Vbs`_77IyvwD$%%JcMF59vS_p3mrxi)XF|0vnx d^?zIJ9Po?@5C8xHK>!s(YyfKWiSaxEw7`oMtDyh@ literal 1440 zcmV;R1z-9A0003AFaQ7nL7HG1yaj>$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIxr{s|A^?akBraluGO@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAj1@BwS4o4E>(9PXMhX< zR-ip~HppG$Lq_-h@TfW9c!@}kj4a%pX%ZPYU_i|VgpbP6Vqh|VL16!-{6;tw#z1>d zMv(HN1H`}p=AQS>Jr7#P;>tA@-)Ia^64v0y_f)ADpnIR<+D1aDB#bh{| zmL*MJfEa-ne|BmpO~l=8u0{YNH&AAtHU!o!c<=@Q+YyGh$%Cv$fr`S2nBl_SWs*nx zKw$i?Q3^%lO&enZ1k(TI6k@;u0Kp3cabG}+>UuXujd%tkQOnC(ny5m|54ati{Z~xHzfCG*W0xDux(UJfVZaUxq7&*^zty!3mqD9sJ@OA(R1Fq-*1O%d# zrUAD+A*RF+qa&UUeq%`yrvM>|!cYnQroiL&9 zQQ&B5X1rkueIkF<2d-Y-R`37>000ObCmPkstblIz>KJp605CwPN+(E~Bu4N6!KXn% zika60q+FPsgbG{B-D91QRfL793Lggf`Vfp7l2H>;02HX2muBK&IGNoqn*wJa#oBqAfNys4d})o0niN~i@o&3MC4lt-E5b@ z01yETRH|?!jX0+@qIzaAZ^pm7&9?ae+zrYFZ;M`g&*^VG5CaUB*8m;fX@ zELivW0uBm*6P=5w`!HN8s}#?m0$@N;`gI$nOktXV!a&UJP1hflQ21X! z6LbIo0YLz6CYT1V0C+F}00BV&IfByokOrY)3$M24|VSXbP51$2#kOQfl|#^c{E>t-~*eH z5c{L*SQgspx0xURTmUjQn9aW(KsL1-Fy}C9!SBK7$QFQvefQal;sxNz>EPXrJU{x# zi4h>PCO?J)hxGV{&lsOCju2&bJXW&As+t(!>MwYmU@`A{@EM+KMw5Z>TG$_lKp}R%nB$5zziDVJkuwIU`^w~m!JeB!LE-*MUc_bo_GQhpu!{G&!G&UEaQMp z8YF%ie%^MN832N|r$?l4r~k5eSI7|xQ~&`0P670wD?qUrQFi&3pbr&Z2lI#k-sjE< z{rQnEdkx)Rx3L_ZB)vtqukbLZg>WXJ0x}zLFbf>mv|5hBC>VZ?S87 zqd)rFp&EKPrO*A=EelJ+2C+vj-@OJPA1WpH-y8=nss84RKvpnQ)B4bgZ=SmAd6_{0 ua_KjuL4DSNN|iQmFSlXL@%p#_z7BXs1c(3t0YLy2LTP|%^NI010kpu}U4YyG diff --git a/samples/h264SampleFrames/frame-1335.h264 b/samples/h264SampleFrames/frame-1335.h264 index 9f3e1c1ae6d0bfb1d20238ddd16b7a70b5e48bcc..8417056fd77e5e8bdffa78d6eadfe171c08daa17 100644 GIT binary patch literal 1568 zcmV+*2H*Jr0003AFaQ7nL7N~NyagvHK;Z^94h;fa(Sb&4z|YJWAK*0^+TRny@ZBDT zG(4&m352IJw ze*geLOaVdq4SDhKL4O$>yD(t}fB<;F06hs~_^cmM$a zC;(B4zM~&pSL7pf(?qoFY6Od{0h;PP7LUmfl3c_X*HQNCF>AbigK4 zMdEK!w!_LeHV@IRT%Z7DIpvRm)dv{xTk(^E2zdvs1r!wqG6%q$=fSRrMIh?HC>~Be zfe(fSl@(SD=QF7(1#vjohF~WHhd>g+tZXGdN&{d>gU~@HU@tT9-T-I-1Oh++KsW^= zrPu=Q`J8q8`}hbzgO-tu`2uYdlz2Z46aW^hU=#xfJw~kTAmlIxSLcb)>KK*>MHf~M zSU>=Qw2oIX_ka+32HsHN0W{uHr-gn1355?7iW|JSuT-jdpg+-TBbhTG01*89z-w!R zoE+^}5KYs7q=yPe%8*ap001BZ?!W-RfSD|94G7*6r~qobfJi=7%xV`E*^r7;3a&{F za8GMrpr98(#0H_C00D8-3kA}wQEpP7Ct z&``2A;6Xvjf;EgIi{ zC;*;T0Z{OYwxW7q*;EiT!Q(zMFsXQUSp}B_#seCVQ~?jAx&Zb74gGKdz;G6OI`Dy* zY|XgFzyKg%00IWsoqz#=T;~8ow(Ot$mdp?c*ruQ$eZq0_Zm77tH61+iaoa!wHV<24 zL7%Jws`~CjhzM!w;KldD7#&$SqPanQI~2c0u>v3<_;IB3AV4{Lf&@HX|27V;b%>D& z`T6(&0s(*+6@^r=RK{icyFf@d8)M8&0<}C~Am~9JI}ono4U16Vf_S4XxTpVv-~a>! zfMAw8;e$L>E%ZSVr-1|V3hVsIL11=RT($5t0OPA819D4_)ftFE_y9I>UU1OGdGP}| z6uhtlAAkZWk4!keQk(4n)BwSnDhi=N)?6M1KD;v+DQ!@OkVKko6i2`cgDb;wBb=G9 zme20+WB>sG1G$5NF+MD@EuM}+$JhV}0f$=20}R$k;4w<3HVKpg_kM?^N3Vnb7yt+X z(*O#9IRiXxfLK{kKmY&`Ifsg!zxW~QKmbIB02m-i)XRt(J_Io0+5m@O0003&0B$D8 z2Co2kFaQ7nK>#_4vH`2W5v&RTW-zD#8EB>G*;NliB;XE)Q(NMIlm`kNDgZe3Bf>(y z@&F&lN|@2#odd~djPillbnrnEk(T~PKmdXO0cZuxgW{7Ln+T2Y8Gjv&fj|xe;3fb9 z6!ZWJuok}oj+ckUdT;OWB8a>J9_~PkAK9GNwfF7QPHWe>EL+9lFSvgG1pqk-FTfqW zdeOH(0*$9+KMtRNd%$(YBScRC0RT`5_uSWz@)tWG6Krs-Fd!%Z4J*(}_t0E^2*V+# z=I5YrmSD1kOoK}u1KP%J$HXfh=t+OS*>hJ(-~aFaj`_RJb|A82YkK^D5-4nF-QbMo zQ3n!!3pUE0%2a;)DZ3I9bb}%)=<<#u3CZ{qeF2RGso%PF2sGHFfVXQ|n26MU<3(-` zw9O$qyUW0wU$T5eWYAp?RY6D#y+cI|tVKq==|V@RVTy(Qurx*@@IaMzG4CuQ#E2ci zdtC#=xP!PG8iL$0&Tu8Z5WN)t1F=@cgaNr|0)I}I35dhzkYnVjW5oY|hA<}{6VK=1 SNq_(V0YLy2LTrF)@CM^=ERWd$ literal 1038 zcmV+p1o8U-0003AFaQ7nL7IRXyakV8LnWij`2kM?7_J1K$Nypkf&c*kP;ktxkVruR zxdHy4uK`#92mk>92q9pJ8nA@^iXeXn?f@1sl<_c`4Kqo(;2@-kaZQ~%sRN!eBejRY z02#pm$N(TtvCv2&{fF?GXbJ=YCqlJD6IsPrT$>)*jOYB|`kVp)?7)?f{UmDwYMcB3 zk!lQ+;Lrg87X1q_(IdbB5Dgsk004k-#YPw-F=7nH*G5YK5Cn3>8X)p2u#ND30)PM@ z2oj^D!O%8w zzyttb0R+I~uG>0f29H4P_yEP>Aiy@HYy_`ykQBqNY^(&{V$nHBD8H~EVQ`?L03n1h z(dqc3hC&H_@Z5ud0Kr}WoS?g@768}4NGA==0Uex50V2a&9V>}O|JAofWEix+J^xgu z$6LG+1^_k~KuM~6&KCq8y?i488v+-gQz8WMI3;bSCjm4HGK(=u_$2@V06{i%pj2yX z27HHryanGeE0_yG{;q^%nLHlyVSZC&tK1Ob3qxGZPd004lX6saANnD#92)vHgi9z3G~@lIX^ zh3e1!?Z99G)Hu5e;(H_)ou&MHgq@FIx30Uqu^i67U&y=%ibGILFTe7gWw+`Lb?T|a?94nj-t3f@hm z+V|g~MA9oEcz^%B!2s(;Mu@fm0svqe@42Ut@)tWG6Krs)cwsz#F%UpO#c$Z0c@5% zEMt~G-Ko106nOz6bx89LBSRuu23Fu=M7>SkVi413IbE*yCQ2=!v%3cyR3}@Ty|A*~2CJcw`B5n@CR;O{jDj$w}AD@}ku z3?mp9e}Wz;v>fXvj0Vr(UD2_G%z^WeW63I5V3)!c6+Xdl_!E!k^YA3V0003&02M-N I0BZ0C@~ diff --git a/samples/h264SampleFrames/frame-1336.h264 b/samples/h264SampleFrames/frame-1336.h264 index 2fc5bece8acd2506fe3e0fec1f979474c28ddad8..9d2c81b73fef262bee2246f9702e20f337c11165 100644 GIT binary patch literal 1419 zcmV;61$6oV0003AFaQ7nL7PAtyaj>$-^SKs3_w!=1ONd5Fa{Kd)3am!lLnXwr5ED> z06-`Mo*69w3@=r_w}1c;1fVz;W(k@HuWU#cg^=0*?mz+n0RV!D;LM;RF{=d=XIsVj zoZ=y?Jzn6)09K_0jeuYAM3QjO9Dn>6rpw^~ND&MK5JW06@B%=9$&gVk_ZZIWNMQH? z8zW*z`fpnB01yd8U^oRHYXy&l?cfUr24GkA)<+!|;9o@Huwa6sMeBEKn18DPP3Ldx zZ~y^p0HZ`0C3?C(m&HQT#DqpqN7vB0Z%ZAw>vRF*(rRTp%mwTO5K900Qc4!jgTMd; z0KhU8p3s%%c;Q$7{k$N#Z2^XlV!U*cr^(p>n80F!3}NGh90s@m0RRvvq#IA7*RMQ? zxL%9i00FoGI3+G@2r9NkMt#ZUfB=9X00;*L)|eGm5qX4|8A2BTAV3VV;_KIz6yRD2 z{{RRO5IfUAM-U@kU?3Qw=fDGm02BrVakB->?*s(|7I5Y?3iQrJQEwaNIj#}un$hfL zJ)FP+Kw!pg9vAhDAp0pa12_OsN;ieFZSnyP9`FDR<5={AUF|2 z7Xl>x=nSX=36yK~zMKk|bPOgv_yQ0RO2mV#o>W|{W0huikN{wuKoUe1y&hN$b}l9Y zP*M~tHc*DPVC&EkQaQ#RCcpqdGhF~U0U<48M4*qB7}aIK91FvA0>yqUng-|^3B-c% z;0Oo`;pA5N$RZ9IB|iaJspvdFP{cw=X!JpUT6TRhMr1$+0V8A*_juVdOyLAv6ov`3 z(pQt8{G9t=01z!3T_=Q8y3TXI_kaT%*c7X$Z(@23*sz!|^hkh&RVxe`$^aYxybc09 z0JiD@!65~aBQJd%e!aU||A~MJzyOW*fxv)496gB?1930_5I6t<1rN{w5I6wjdw{?o z00*{^0APVfkuD%;9})nfXa)koG*EOWQ^A1?scY(bcZL9fL4BYHkOQrtxfMkd|KIQC zA837e;Q)dE$cRK{5rRsgjtQxavj7VW{lS0=68F=gu@NzX{`u2i<~M?9;lqvi3^`$- zs#0WV%mMa;bUDFy%^1)KAhoMOB+Qd03_o-LYPf(f(+=fBq%=TvJ}Ur$u=+$GU6T!KSk)z@uwuvp4w9qb zLe{g~1WMe@uaUE}Xdx%>o)>{Mzh01ll`Q{!0d2?Y$SCjkm3!O444mzgBR_oD8Bb?g zb|wXUvL?n8x2Tzc=3lr5I-8Z=oEn6rrQqHcH3}~?exfkIwB^75SZ6>2Z?_rlSMRgk Z{&-#l!s(Z2)TU2IF!>Rk;8F literal 1349 zcmV-L1-kkG0003AFaQ7nL7Jc%yakDU0RSKcAh3K;!GTOT@Bsi2FdFY$7N@USNQbY0 z0l+{2U>!u=nV5i|kQpuV@qhq;M*sl;Q7MBz3%x6-X%2ED_&vY?Kxjwb2?*ENjD4n- zCGY?O03o;qv`89ud<)U_1a5>(05}j7Tul&UUQEB0REd%E00aTXz7KT1)A5SKw;GKg z5C8}V-IfXfrZ7wxf>;{9{on?G03ZYgF<{Okdf4U@c!RJdd4L^34-#wuLAVMCR!~k! zIEbVIhXjmGaws%+JOmWeg!jix}b(CKkY|28byAh)JN4@_kaK(J_T@Ka*JJiO3^&Fwc-}DKmvybY@VSy z65^Ub0Du61a0P{dg+>QDs#WMAznOrE;v*BLR#insUjPFRaHNQWwYElH2_GI!s9X$i z21ZbFoA3ej0Nk)#yyODoGui@$md2fT!Q2Z$h!mHIFnYcI8-c-7mADR-80#Unq#g!C zfCWb{hkSv}jQq9&1OkLc6>vrr_#glf5D!K^+Y11i@NxvQ762?T01yBm&;XE#iRyz1 z4T;DC3=rYu+fd+uYBGJtz%`7L_>kfY!vaC*!hZk&KwLNn)VJy#QV@sb@EAORAb^h~ z(*S}cLJ0|9w{Rfas|AwHv^w}#`Ah3T?4chuxG?wk{-XvcNo9x85vD`JZxAz#ArF-{ zEG6}OnHjIZ3<1Z=_9*tMZ~*pzXh3MtKm`K#bHE`=WRnG?pyQ$=6#zs&?SnfO-JAiX4PQJr2ygz2E>L)&YUX7UMYKq?DNqcx%JR zzyLtF7vvlpaJ4UYfq>{pDS#d_Y28L3KcZg`lK5N_u)%*aC-}ZqY`bFo;o8Om;2$g(L`|zyLr6n*d;K_m#Cs zL-&Qy66UOxC3Hoj!D9dcV-R?f#soKHjr;&Hg0jD#XS|>o>Wj~TGQOavhnmzV{~Q>h zcgR>|1q#&CTyFa@IFsocSXhoS1{rkWev4mx0Ki~96 z_^>+w6LbIo0YLz6Ca4Cl0C+F}00BV&If<$PtH3<4Bmux86yO`2Xkd}-KruQ=v5Efp zCuCN8V^S8sw*pWc1VSbTR0{}@w;`WVM8AN+1_4mCfRV9P4y@HF}_0zeyrAAvnn zzG=Vy+X1`)dFy29)t_IebYgR(>*mef{tq(zY1eoYi}lN5c7)jo50Z-(zyu6x1lIROqP$>Cix%n=Gf5pHr`aby62QeOa(`p>`g1dO(sFOjjzzZgmT=Y?QRFVa^+ z0$WID`~Z`6{^hk000BV&6+&u& HYVZc*(BwZ_ diff --git a/samples/h264SampleFrames/frame-1337.h264 b/samples/h264SampleFrames/frame-1337.h264 index f6eeff4fe03b66913f79c5349dfc8a907377f63c..b2e7a9c6ad3ba5c04a2aa309e0dbd05223b9cffd 100644 GIT binary patch delta 1051 zcmV+$1mydJ2*3z`000012`~Tv0YRH!8oUK3C_@fTvAA`+x!lGl?zgFy<016_ihaAOH{qV6eV_)YGwpK zp8N;b&=d|7?jA{%argi^p}+t@cmkY(1y1-0yv3?xVzC$TAV=8IM1TdLN-CJvkcIgw zMF<1n7_hc~U6rUf^bJA)0D^D;fFvV^eRS^7iUD=euaE!;41fj!$fUl(lAxvuQrA`_ z0C9N7fB=LW5BvZG2s`_L3lta#1kIfaOo~L3x{Q>~XmXEpe;^p3dDQa^bWIv!&OY!% z5Gka*NWz4LI#93x|9}B76c2VX>wr0#~?xBak1>-0}1zdwf znrPji1OgZwV+H|tgq9pLAM0nO*R}r>02x3O+5o^L8%+npHL%=>00as^06?D901b!n z?jTXfFaQuE009C1!yp6UyPv=r1tbTInvlJK6RMTOAt)FSx|+VEqFyK*5TFhKZcqvb zfdiF)v!NK31SOKEfD8f~A`}BfSjEULAvG3|0}gK}eP2R|GC|-BCSo!O!6neg1XK7J za>GGXq{z{j1MJ4gvx3Od;eZ8(e&E0b347_#*oc_He*hp5FyjR|MGrhttZ6NHe*R#U z!T|?^n@fO+DS0s{YxWs|NIWi0w5d*?gc<_H68g5T;dh8 z1shFG0MOfB2s!7LDGp=)=nVnf_pY7MAHKW+Y!1fn-%=uyvIr>gujzrm{C^7730+9> z|L6V$*Rl#20Kz6qb?3B(e{nJ#*yxK}|KNADCHb9u>%bg9y?#*#{P2=E%Twhj2GL$b zhCOeH?#ZV|u_1--UPANCLc zd#0(7f5mE2<;fGI3QXI=!8E-2x1?de|H8~s6U38!{vYU~HWBEvFvy0*nn8@BfjIK# V^Y9%|0003&02M-Q1%PVs2IE+~zw7`2 delta 989 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 BQ2_t| literal 1174 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 literal 1703 zcmV;Y23Yw30003AFaQ7nL7M;?yakDUfnZ2!0)S5#6aWVR0RSuj0sue;8V#nG&|% zRiS44!~n_=Q$z%NzapYir=>i`z@flYnN0~r)P}XGT3;4H5kkSpk&qP1D3#zuR|f(+ zDsIeQ2jD>nIAVwtC`|e13Lh#NLqGuNL2x#-cZ_u6%Y4-G%EMsZLfm>5m%@)O&=m^7V)qQ0j?_#Z<7Kd#(|tdoiKsI-DQ$z`@nD? zrCfp(jmDld39qvj011!=00IF*uR>saj8IOr-brZS0Kfo193m#b!_(lG14HWZ>3k8e zsBj8^K@0%|VE`Ne1OZjR0p0-R!t%HLbY8CY*ws?11{lz@a004k+0o=kz`#>mkf@tZP*n%YdE2q2w0RVsj2M}@1 zJJXv0%5cTJgW>=sfz%15h!znv4Au)C00saF{7^U#ggEC%#%S0~F3aG^fl=WgPC&@d zft(HlN3v}#WCm{r=|R{B4D)>Jpa1{gARz;Dh4e^aFJ3*n>KBk9I%yPV`v3<30RS)p z5F35WN5=%IojKG0|9}7>1}TA&Lzx4vgmhpyU0@FICOB6sxw~Ef4l)9C$g}C11iC3L zeYh;t=LaUq0@pr#&v?WE3I)ytt+At>&I6J~j5Hvi03Z#>!~i-0ptgShbiND30Sqt+ z0)gX&K4t<2X$@dblWV;sM}`0b0HMzU#Y)AM4i3+gmbVH`E#QCfwRLkSg&z2G1r z!U6h{uL|O2{$>#<{Gb{}5%Pcwkk!|W0AXM@fDIJUW}1RDl_K>3Uw{CBb4Y*#V;Ws> zFmPu+K~X1rHH5_BNBzJ62mk>D6l8qng>hI;2jXBp+zd7;;BtBIhl<}nQ}>Jj1O$Kt zP*61B|FkLCgf>?Q$7lj>fB*miK>%(hzy_}XcrX9}0YLyciLe2yzO07dQcAydasy1N4k%k1Hj9W_d zWRWRV>(1AG@Hq9#Q*>%kJODUUh7 zK!wPAv=-cU-T_r{mP5$61}B>PzwmY7d=8LQYe1U8f<@q2FNL@3ID(*$fC|gUKB6qI z=71PlyMKQmR)E23G&Gk33-m}ZNplFT0tc3m$X9?-#^2^QpK5&ZlE7XSbOK>!s(YyfKT2IGa_521-*bW?R;<%9qTA4ug=pLhWR;5Raci3zCcm3=Mspa2j6to#QIH)=sk zhlQRjP}{V52ZKBH)8Fptz*0kpcgnb*x&Qz`2ibrDfdMjD+ZqwPB~Sp>c>s`fvzXK@ zEwdpMrWIV5HNlOmuh38npkf11&wv29RRY13YZP0UsHN$Q|A7KzyJ_7sel5Th`Zl_fFLT?FItp!tDgSQ0tN>u<|b__qY@!j z`~U#}ftrQGr)C zDrlwwwgGpeTkqCD1p2TJhJ;nM6V@3OK?6)4Hi40aOT^0}!NX_>umEd$zy|@qVeG5N z%)srYG5`R9Z~zD!Vt4=s0b`y7-fS@gf4~ZZE5mXloSCnd&+hPK00964xr2c* zJ}j{Fthg!)44b}+YElQ>~36uf%eu7e?m%;yx00aQ(fCWGtfu1(NEG(#? z000Oa!^KYD{q#TpM3BG(4it4m0tSX5W*z{CU;qFCK>%(h@CL5{crX9}0YLyciM#=; zz)`{Q91IYE4icWhl=Y~501gI>l@#+W4B>r%>N~F~%n9Z$m;4z4;2#0tSqy_TVl~eP z6AME?KMy|x;Rt}KzzVQy)EKKhht=o(WtIyqBP!-7{_NrzO{ePn2a@4Bm4-ZW z4DeM%(o`~c=qN|`z+vI21&4A_&;U6gAH+;6r?KHr7#{nxe9eA053gTDQ$eHR1%wc& z7hv)TWhMiHVbqvBf*DDZ!muWn!=a$2ata v3ACSw*UjeJe%sq`VSmsc?ynC#E8tD|kK#X{fOg;j00BV&6+&+SYVZc*88ZP* literal 1004 zcmVHDE@zyLr12mnC~1W477&*-8D@P6O{W+MqcEF+A{Zg>zQ~C0^a__G)V9O1OrDs001ByaZ#oS%vggly~&cm2m(1G4iX@W>?3?1 zfS>>f0tBepP;5s#ql-Eiz%*D#rNI|u8&1CPKmr&D3Vr?th=@Hc4)TBuRAlHjXMg}E zMgMLMzz_j|1QP>~yG!Yi8b1TF00E1_L4a*vuoA__fKvv!val1&`vL|R3JQQBggDTY z{8{561itucLBIfDq<|+VD(VFQHSiG%19N~!Vu?}$MTWJzSrU!^>wOuJXUB8j^$^(Z z@Q5%0aKZvi)8cTrBK7Ox7y#H1y#kpKCyBu;Z7+df5WtXN$}rEE0fP_08e;W0R6|{) z^9A^1vEm|ys0 z48TB)_DS0~mMU{kfOPG6nkf7zlz=(KimKi1O#Yd zCrl&ldIlw=zu*Mj0003&0B$D82Co2kFaQ7nK>#_4vH`2WQNi#W3=n`87d?V0?LasH z91k*7Q_bjS3GD|_;a9oL4dzLI!H^yS@E!$_Ev_`gYn~2FS{ei3)9^nKK&ik5SUu_r zDP!(`R&NiivcYLkopTf~yEujucjCUl@~*^HAii)DrXcJvzDW#3>G2?@|3HX7e=uR- zhyu_rh|mBzfcjA|uAaw*Jk0lfx8k_mt$M{Y1it@(KuJYG(6E|_qrhP#wzU47C^>LK#ybq{9k>7h0YLy2LTrF)@CM_dd8X6= diff --git a/samples/h264SampleFrames/frame-1341.h264 b/samples/h264SampleFrames/frame-1341.h264 index 25723a4f36e819662764e189db85fce3bc77f16f..85804e11cdd2d9b52259c2cb136edaa560df53ac 100644 GIT binary patch literal 1837 zcmV+|2h#We0003AFaQ7nL7U(jyaj+xC;$)u1Ok8#3p8lavu4ejG-%ngU;n@dk-z{z zS<3(c0MI@R4McH&)#1B%9%NK^EUcmM$am;iGGVk1`bJ%13{{lEYq1s{j5(50M)sis0g@BPMM za`!L+ghr(eL;re#13GsHB*&vILxUAOBs)zI#MV*LOJ!s*1_5QKWW;<<(Re=;r?>L` zghK^61PuHF1bTyd{0&r#gks142fzT@HY9(dTJQmYDM=LWN@(eQDaP!dbH)4k_XG}w zM2ptO?8h_E2!(S4Ww-zUwg6G*1QNYnA4}q)X<|YnHv`-*o6^N+d<=j9MFpAamRr8S zDgXp1K`a01K`2`x-~a*uU>OL{XiD=qaI63R-Vj{2fWt?vUOq{26t+N2U@=3CS>r?; z4}bs=0RxKjY4lq5Cs7v+Q2W3DHvlIDrOboMt&w4$a(Q3?AP4{g0l~GF1yzJzVI~GJ zfxrk50<5U2)#Zga7J@&(0u}0N1RkVGdXXlK0ywM%G~fYhHUo;SGN%mx?^YbKfB--c z0GdYgDfXlkC;%7%wT=io&(H-1paGGVuy~D;(V`@?0i0H>VWc0(z%n;9^Z~EPzz2dC zfFP@I4;`TCCi2Wk0K~2^cmfYVo5~t^=_WE&V!QwVfEYoHfMX+4p0g2u2?A9w)&e2` z0D$dkWCKo2DSQHf00k!k5gbQWFQ1?O7k}0O#oz%HwDLwaq03a#Cv=oXzI}Za| zH#c>|KtQCaDtwmTlJ>12 z{r~`gFaW3?4EvTg!Ztc^Iut=ikZ2+2AQWE&LR3iG|Nb}x`j8$6U6}vAziDFIApl;$ zNdbaYBn}T(tkW_Oh`e(g-~t6f@j;<4NP=9BkF6fy02ohjb0h5Mp*=tY&VX|N@L~8_ zf-%(Ug9AAzDQ{+B3Ady%&on{5h%uoF*T+acGEx5d_?Q6S0Cj%>z(6pjAI6IT+y58< z2owMSfi`Xc91phpfc;Pa2m)=802nZ6nkL0ggVI0=Gy#BEI+_oL>$>nEbv1oSPVmfv zei^U;2nXpbzyL4|f}*@PAxzZ{WJF5?iudeC5ZJW}5cL#zmXiPX1HcqjU{F>_@zR2` zR{#JY90ne?_#{_)B>b90cisRSIIS>9LY#JiY)M%L01gJA2o((x4g2QUY-lz8U<_UW zGM41Rie)9f-~LHhs$3YEMFFIaxT3R5qKV3|NY-@vpa)%T154wwP> z2=P5KplI^~&kn??$J2Zo^a6Ms{{?uJ;E5J|00+QC1HEby#>egL5io70CIPF7n$Tue z7MS!u0FGYD??ii4|Mj7d-FN@{|80nj=txj@%ijz1%>D16(Mp%2kzf9h0)y4S5G~10 z$hL#5SPopmp;pyAQ~}xy(}ckyEflTx@8=!K-QOJlFck@NlvEM_Utn;tBUAVD2l~zz z&nht7&EWrVrs04CvQTt3`WQ=YKX_mWb^rhYK>%(h_y(^4crX9}0YLyciM|1=z^1^A z27n>~z*tLR00WhwdYMwE4bgpI0p7}Cvn&7Z(5zq*#zY-LCTm&J5w8Qlm)(1pja66v z`C~)_Ks*bN2m^R+ATa2dWp59lAW`z`61o55gjG#Ee5?&T*2uCcbN;6P&+tGIzz_@+ z#+=_mdKCs5EHEal832GWAOa8o6109=p(PXY6HE*W2w_oFR{IhX5-K9|+ zfg3Gg)T7Rv8T=mG56uc-Y7TqHIA{$+kW_gWl)r!fySRdPQ6&n50+53u z5`hXoQQ)n5FA_uF^ymx?XRN&&w!9z%Eqb7HPcz-naIc28?EHKFTQ_E69GIlY93a?n zLd%H&8A2Xa&H>PMAn>Q;0Bfl*e8xHZO=+=1-k@tKgB2H@QNjd?j*hT4c%unSrIJ7I zfDS7bFVut|*?*x6yxw0FvTg%NBLCarhXQkeh!G%1WI^)Sk$Jt_`t~4j019jY0TLkm bbOFc^>LL050E=J%00BV&6+&--YVZc*PC5l7 literal 1484 zcmV;-1vB~p0003AFaQ7nL7PAtyaj+xKmb4l3TcKIX{MTCh8k&~|G)yA00IG@bN~SW za1sm~Mn*N8B6oW*99?jP02~4UWsm`<)-bKWIOqoEk>l_HDgXikfCmjq36bEV>{oVU z;20r-NV34QZaY)i0S5j72Nk0ANg!jYZ>Gw2>xf?`+!}fEWX_TY|)%2nGx+ zNv_ZcU@9`@fFa(ng_XmbWE)Pt4_-|KgjB(lkN;o@0Kfp>Ms9+M&9ljhNNh0&r}Fr* z5VU+?$P2&#AQwc;JXi2LbDaOc+x`9huYe1Nt*LUODf{}MNLj=tFO-T=r2X&9^1Wg| z|9$`{eGHB*p-FR1?Au7RuJ{_O41%#HJoR{JGcSgt17KhV;7|ucASfgoC`}08FQ|Dl zANHo004fH3ftagU-@E_;0q`q>gOy(E+E$8Yw674go&YFtW~pivp)Dz-00;mG2LM=D z7*t?)s-<3n8~Kp ztIZ%48J_SEEVeZ3JPwew7=cP4L5*Jj4Zz^3%G?J^jCGLPQV#y-=|md;_2Yqox2BF?1-MuX{uQKm-HYO81eLr}7`Z&;SGl0HsLmjK{HO zhOJtCfE3~D1uMuOrW;d$zyq*hb{EBVKrc*$TnCRRzH|9fyB0E3Q9g~)g_ zgZV7`fl5A?#Y5H*X3sbP0RU2z00aO46hVDauzYez{k<>G9W28(9!+TKoI=l6zR(^7 zlVqU23N1JHT!75*;~%6MV&D{Ct=`-Ya&gS1?d(xsRbhKF^TDkUP>m$XGHegPP&IRd z-Tm@QG}3?lrqc;TdY+A5m%zq2P8Sdt3P2V&3+eQU(nRjtNesil1{~$PIQRmGn{LTQ z-Y|$$mk91zK7}L*lYjt#3qF9L+wU!Eh==bJAOU}#_4 zv;nKYrofB_fFc3FSWAEdm7IQtQye#jb^ibl>{FI9FaG~RcrY7AL>)pTeQPENlJFLU zzWwv#C0*;W;sKx@1;>y85C(7sqz)1}>34uJh1Qsr-?`(g*XwhE2b#;CE93d;zw`VM z1aJfc2RY(Dd}h$}5>0Txny_R70K^SE0E7Sprx%;qt}oUK$>6}?hLsaZpV`7fMF0z( z))W^|ei>f&zzMSN2BjW!Q9$_E&*X(L5}+7M|AS!w0suA07+^i|5RQR>9HkNz&^vXy zs3KgTuJ>5c?NAsmpxjWhr4Rrz(85rj;n7$_!k>mL05#QM`HXY+n#RJLC32<*MV?e}fg)q0 ztPP$h!(y>ykNe;PMRLWn)*xSHCNtjOUzW1|2GB+S_u!ZzK%C$r1V|CwHYn_ow0+z9 mU6{ZCBm)OMEDW#;dw{_ZYW?^EEr0+30YLy2LTvzQ@CM@;v5ge~ diff --git a/samples/h264SampleFrames/frame-1342.h264 b/samples/h264SampleFrames/frame-1342.h264 index fb15b9b7e75859678b0daa2584a10e351dc24e56..8f40fed1da1f02d59bd3b479dd391fa550782bec 100644 GIT binary patch literal 1581 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 IrjhpNzdySG!vFvP delta 1039 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 delta 1338 zcmV-A1;zTU63P*O000012`~Tv0YRIf8oUL8zlZ!jXaF`C24&G8c@bhu8a<`G>O<-7n81po?Y0VW27SCF$)Iwic7egr^n;|vo&+5-pW zatKl{8fe=AG{1r$=JsaWn-M+$2!`Yl9`b#LFp^o|#1Ay8P>};sYK#ZS^^5`omfd6~ z^_q5nhhOgC__Bt)1(%{+6(d048NqN|D4h-jErgMW|8xO>5E7~q?^h3H^rY|pfH1&e zhKPtDgR#ncT6gZ=FavH zfdILPMOz|NWP{f4-ZAKh009FItK0x2Msp(GzcCRx7Q?#PFMt3b1_)%La3qa5mo=h% zW;6EzNAB^PE%CtIpzZN%&wKqSgTVkW$!bASxQ8W3y}ju(&XP z@P78qvo>Q_bq~M*KnyB_u(uHZo4CMcCdsy700;%(h=mxI< zWKRnKfH3R;E@oiNO6nMVn4krsAOli=7zWBCI#q4$7lA@=fmnI424J|9}QEmS>@5TLl1gQNchFet_E>z>wm78Iy%uLO*^3 zT!=cU^Dw%zdZP8_|LUTtw=-+lFyLVHh%y)=7JNhx5&*RkV&fZ(vGe?b{0(q_Q?z7Z zDG&Xvj+OY4K!ev;(G>*$b%!qm7HKs#aWQ{it^~Nmwo51fb`|#y#oSn5WdNm-w#aS4 z%m&mr@|Wwd39tYF0YLyciMj!+{FneAY+VZ((D&u=Py!PY6CM=^1t0($Me}qtjdueC zr|lW@1j`Ta26j1`1W_AKt;d|E|EiEEM=ZXA3lR4|L_5HH_XT?XAFL76EgWI zvPos%XcJ$e#A?GUd=HaB1ui!K^TN97$StONa>PZbfA$xX{GQ(4bH(z8NdMq#Y54hSLYYP zV*m&`V+&UhIf!fQ55MREfH6lU0v7wWY^qIXzyK%##X&aGQ>lpg>T0|7WP zentQ^KXqW`i~t}_BX!7q-~<+dH{0{(8Re?cSCC5q%%|ZA8Y~r-RAqsKY1+gP# zU<_UWGM41RO64KG&<#KkD?~$n`NkU>4gGk+Fyyrd2t(viVdQ)PP(^rNPNPIk*NyYR zkN_CYV4%t0$YkUb7lJRa05Gdtz=E}h@I5+Zb_tXLZvF+KCa;747yunG1E2`;T{5s} z`vQx-pN(Bhd>@ch|NHWQ0W^jHFvEh=Ds-?6LBJ5~0003&0B$Cj2Co2GP(%lTVGaQ! zc{J7B!DzrhVc-Mc!s^4oco)D-;?QeQH_9?AAC;N3+8|i^M2mtUa9RQgZzz>im z8nz#`D*-Ama1h5y4aolOR@vwa3BU3e^elnHFn%fkvs9J4NV!i1munN0Imdx0Nf7K( zB5*Lj{L*3hRf)JD1JIwr9UH!%yYJMM=}$J^{y4{_gj$rl|M*}{(5MofVc{>al|MW} zKbap3PD$-Pem5bNbSL%AObx%VB=?&6#M_fUY4`4*|3w#O!Y*2X20gM&d?suinD(t<8 literal 899 zcmV-}1AP1d0003AFaQ7nL7TuDyakbe2!?nN#RWJ3G%#sAIG-r#X7ckm@W22-00;m< z3CTv!_*f=ZuN%V!{At1Op%dfhxyAA=m6b zgv&rsAPF`Vsu-HeD!$;@^J8<1cC-CB1OeTFD|@tojR~r6@B&4sB29xp1OQ|7EW;#^ z002NdQ_uhc0ml^>V2s6xH5*)+EC4_m%MfUh1Xp1j;g&oCfB+x}5|d=X(H!oMEa+nZ z%|MP^GUdj@E4&~93JwZ+{sxGMJuMFMfDBY*&}`2j011+QVBiPOD!_s|76dcjKa2kC~?EwA$vfSLsvMVP645`X}JA^a?mRBLMXoJXL* z1-~&Wh%(h@CL5{T2Mp>fn&G; z&ARm+u(qk@zM@kA1K>fnSa=Tt<8hb?oJ@iF@O$F0TX3efoJanC;zw!fy^8VEsTG-205f-zZxiaaJ96!s(ZvblW2II1FivR!s diff --git a/samples/h264SampleFrames/frame-1346.h264 b/samples/h264SampleFrames/frame-1346.h264 index 5ac7e1600e0e99fd2f0633458675d444d77f258e..37f0b0834b291d4aad7d53f944e843f01568ce1b 100644 GIT binary patch literal 1837 zcmV+|2h#We0003AFaQ7nL7IRXyaj>3|AY{ZfC57f409JM8B#=b;Yq0%ffm~YusjM~ zZQ+~O>AT{kT}3EH01h}r0fNW-hoMpv{1EE$LaVczpKns+A-U1@5a8%rW6UZaK4({LpVTRa}^RQNDLHGa|uFwLWtLJe5 zRTvo>4t_uZ>KtH()kl@8H{DOD5Jyxnin!|%$b0|{ISF&^rFh7aDxdw}20#M{UU0!} zq%T{7r~a@300dl3mRJn56*o>!00|d>q8;@w>ig8R2t7`c^*T(jU=M{KVSoYD@Bx7l zBfO=;D%6P9*{WJ6mBlZDg`&7hI+aw%w< zCXxT!zyt;f**I;D#nWem*`)wM0391ZVbBwqeOvSjOZ({lf5^=QSXwi`wjPz$AbTjfjI#9#;JOfHJ58fU+>giL&Tmvv2MI zU;~;P_6TcC0*{zH01)?@g*+_)z#IG^0)kTVXNBSyjYROhd0adI0RRyKR_?rDZ#9dd zN+tLmzGTR86&$NS^EAF_9*z73Km({E@JUQ6O*}p@ABq43-~i7o0nYKDUGb_;gYl*S z0syjj1^@~KaEG>Kp6myga3Bx~p^Je+p7aJ(0S~Fyi286Ubm$QH_W%KiF8qoGY|kwu zn*DC_W-5-ZS5@ghSH0{F*OU|l1D(&P(Q_meg$m7-A+4A?^a46ZD1*e<00;(apa%dX zC9G(a5$eMltgtv2hUf)~{ppHsfuMj12ZsPaKvxfaZ=8Z4;gVC(7K&bj#03mQB!-Vf z7xkxS!z5-z0ALa{5<&aCY?@5r1Y8x&6Nsd*CqMZ)_PqcQEgKwY>X%vVclPiAV|xOX zZ0+n%L3G0fA@m{9spZ)0N{{<$dQ-6jz3<*?Q8xf07n7e=o|uI+G7d9sjr1)ij3-&Y1=EH(Zs}_9M)q= zBaQ*a=Y+lq3F-}l)fzxhwi)11+rR)24+0e;kl>rz5_#Fgrs?%(hpa!o1 zP*C6=1&+gwPzF~>+P1MFuoh0d00w*tTQCoyU;eW4pX8Z|t=UUSFwjB-=wJ_mhd=|# ze3ozKuin50MWUNa+X+jhz+|ug_y$q7BS*BOis>!lgcc1V2AM_ob7z42LUiWcib%Vy7(E%IZ(~Im4UHC6s?V<+zZnX{XafASE zsZa-kE@`1Y6B6ZNizwBg;JyNOQBb$QKM(*20bB0|FgdjW(aHpU_k+7g&k4r$w&pb$ zoxp+Wr094Wk2kdNzYPKKA{5Wy#;sw$Jp^%}kw`jHug$;*KChnt{+Iyz&x$u0YqCFP z0t|ouHiTa{Fi#TPuRmZV%kKw4zL)YK>9Vkazb{$We;nce#b1ybq`#PI(-Cjx8$00BV& bIfcV>5HcXt2y0QLZ6I0P&p?g$w<`L4n$ z=o2vkDhmJufCMoh_iZdwz#jM+nZySL5l0K%Z(kYek@vO?2Wr#fe>hJ>3U~krup9z< z;c&{P&6WZ|UK2>~fW~fD1;*nCC?2@9MyivzU0i zM^XuY-s0P^fCvJEbWV@*ZX5m#DBl^}?vaq0RK?2m3;!2ha6k4e} z+Wf@n-!d~2q0Fo=DSZxNFlmY;)LQME!ysaUqZ#U~{(N?v004klfj|O_S1xfDjm2GJud~WEO)-Eqc=q4#CMw*JJ6kzhDors!+Z$(?!{T>Tp2DQAL*Hg_2F%?*ITmBrdQjI~0pfo%l<292JKsu4JsS4*7>501yM^00;rh zZ%Be;7OfNi>5dcwwDg;P00!V=8v7Oc6MUfNzk|Qv01!F=0RY&U28E61fSG3EKmmX@ z?Ez*6IA8#foDrz!gepYGNE;*IAg=&n#Nfmb0oS^rpfnHQhEzh1VS+4zo)7eZ06?6^ zqLaWqh^j>P%nh6orU{};pya*=FtD61ATBZhvoIUFlpO>Oy6PYwfH0*cmBqj)S$3-t zW#bb$-xy3wcah*l3;-2d0N{&`DPQxSyi9->x{idVoqgeA00oReW`q(nna9QDf`h83 zd16Np7^;h}gX_@+ULH$OqU>bou|w*RSyNu;*ra&Y$$rof#W1XdbL6tk{n#@B zl<-8M5=1}u?tz{lnOMDV(I4Po3Az9P0YLz6Cin)g08mii9tDoh5C{Q@^o_5zlnj8f za0tLO_$y?f7ec?Ryr=aokXPg@lW+atPKE&ZC}aS6FPDE4zkI*~w9iE|PH7~$FM!Q| z=nRwo!dJ|!vE42-2jO5-BCLJ@@7Dp}z7D;d2~p|r)=Pc+4|;WIiTC|qfB%2~{vEhr z4#UhdR)tZ2z&vYCaS843`=~eA0rdN<$`SUn2fmYC@D)i=0pQKYhWq;gRuZC+G3Oq( z2s6M=#EONjfHjN&0sw#t-*_J~Lfite2m&78cpbKo;?oo(^Y+Im|5zYY$0wGHv5u(&+c?=Q5#?E2a>ipaQQ{{be|N3A8P4P{mDR`dVqZIr6+!1_AV3Xou zotpbvR1pw?Ig05#E8tC{68QoE$SQg!bI_Cid;TCO4*vcq{4XZ0;OU!|;P4y^ATTzE zGz8j_aS$q#fYc}CCf(zI^Fy}Q8v+fMx&wIVf1VYAHUIztK>#_4z5%PypA*0vbN~PW NK>!s(Z-8p>2IJgNg=GK$ diff --git a/samples/h264SampleFrames/frame-1347.h264 b/samples/h264SampleFrames/frame-1347.h264 index 17eafc8e031eb16cc7996f152de3fc42ede6c5a0..b50f7531c57e4c9a02db29a316652572313ff067 100644 GIT binary patch literal 969 zcmV;)12+5s0003AFaQ7nL7Jc%yakiN2szF8n=?!Ug*X5p00;qqFr+@6n;-0$G{8kD zzh(dcfKUfKGFSkRKrlC>3>CFp@fv*DAix2I>bKV903ZMm2q>Nm$^s)Auu(R4fB+x} zIpfiq!AY@|3i2<%c)(x)AQ({^p`h*<=KX z4IiB}m@+F9#j(7}GZTEH+~fR!X8;EVreN_d$ckfq(#k7yt+k_aFn|ufG2v z41$saM$JfGzzNk#;t-G+5W1Saq@rF90E9>q!&(kxhQ;`p5=Hm=!>#}V0+-#uQQHsS zf6e6&tMhdr@CFkx83bUG=wpH@{01Db&{Zii6ea-sF|sV+vNX8MAOT^YxG(`iUix%4 zA|^0j-T*+uj1=V*Jn=@cq_yFZzW!j9!T|?^noEF*DS1ShJq3X9iV+;(1|>#MztaE@6WJ_6 z*!R}Zq@GJ;+kff{FgCC#3b10#!l$=MuNo&&irp2>H-4FzOLV)Ii!|Mq+lkn$qrwj2KU!ELY+ zuCrJ7+*fexuxwJ_zleLk>QK=i_pAS~6S54<$RN`Pr+bA|fK3kd{cw8TnZXz1x1R%S zJ9cX>cfYQ|m0{aJFT25FZ6Zb0-}jw4pg;c43g!Rsh)_r-l;jRn08%M+fZIbv|A1K- zCD}=Lj$iwL9;@oZ{_+3^L%NyY5LKZ}Ot5SItNrJ!0VU5l22$F8`$2&_ko$rFfa&=y zeDY!X3NBw^dIL5${X@fF5MlSaxr@fQ__geIB72F8I-_PbpWhKAhG`UHv r#hm5;*f1v^5zpt~PJjRa0YLyciK+psz#EJJ00BV&6+&u&YVZc*D^R9q literal 970 zcmV;*12y~r0003AFaQ7nL7D&>yakisNeP6o`(s`SFp9+603-li!OLD4c+Vi}5B`_I zh@jALcq;|LL687#Gc+cO>Wsbu1Bg7nYslc)OejpBfC&5wZFvBL0=huf)m#pg00b8X zN&o|3#8&BEqAY*z00E2uvS9>xGaCsqm1((%9|y(46$ga|4M_5QSk*rgC#&CT00aXI zlc0Qs*{z_IO;!2eK{3kUT}c3l2Nx7k#7_jkaDaOW0h5EK-l zghfffCAGwyd;u^42o%vooLu?UNem=fwI_hVoIqJne1f3eVU(<0I#2KbU?8MTr$Ofp zN5nm@LpYt{1OT8(^Z*PYj{#u_CV+$$rg#DY$CeaL`57utSEs<(lZa2A0h3>&@n^^Yevx@0hdtCB1wLm)Yx5}zU;G@g zL~jPQzsHCQ_JPPtfTU!HnC?bBUIKLr2xkBQKw5YJ1?>Q&Mgmd4$_rll)``e)J~tpB zh92jK*H?iRX=^Z`y6?QqnKv}Mso`CCL@0nHJ8KmH6pmeBHqg;O;08tsbaG3UJMaWG z^@0BW-~^%SXIMd7%3}1eYyQ1f^V$I?&nFUGg|Gg>fjS_BKX6HjVv*gIr;}J6;&}2b zP=8}YsDlHMxSTxCyu4|oCO3|>hu}CoF7$-MIPG4_06*2QSM9hF2fe?{uIx(x+9n%s sk>Z|}|AC+<9ud#y;7))500BV&IfHq)$ diff --git a/samples/h264SampleFrames/frame-1348.h264 b/samples/h264SampleFrames/frame-1348.h264 index 8cef83ef23102984c5583769515ea4b0f3654b3c..8d913dd25dbf94516a62e132798d2c2431903258 100644 GIT binary patch literal 1179 zcmV;M1Z4XF0003AFaQ7nL7KoCyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zAuF7ofD9C7sK}3Vu5nkmtniEUZyW&N3`#!(=U(B8%X`cU8SPc&9L>1uZy{PDf50#m zMm9hWtZ7qE11^nhByo23o0zNY2><~A(bzChf!*1vw0CrX{{SX(6lSES@`+;A+JFE+ zPz#Q*0FnNbHvni{2mSwg2Pwh@a?#dY|6ljE+cRu^RYTwb0??9-y1G0Ev|?W4|8jr; zzygZ3oZ!tdDk|6ZlO1VA0C*Z`%ubE_@3aR!HDdtrEMODfC5qU<06;{C0098tG!j3c zs8*!sfP`25s7)zl`qzI@L7D_2ZgK-9AsIv(>g-pZn03aAY zrTX_`L`|c&YW@$v11Q^sjda#iWHb}VGjO~o9jufRc)qd$KmkAkgUX_b0S`zSIl)i= zcm+TJ>55jdEKg5~PV@&t}0s!L%x&I&_ORENusTrYg00ICb56_~Z zyEn{HA|JN@m#@yYk+ap|^*ev^{LD^gQ5&2}8l(r|vB0PT1PdSK#JH#APEUz1+^q_gD4Q75pn=P06>KS1Or=5Z}l$~>w{ReAAkM4B@_ZR zI#^8Pi~89rCG~-U4DA+F@KsibOrP*(3Q5gTEKdMbGPEzJ`!1W@o!5W>ATA)q1~5QkA<2(^5omA) z-Y@}&Z@32&<|+eGk_&(O!a|+;KOBxSOCL&LuKPTPc06PQ- z3ye}#i&5VF^CL(|9skhKOB*#=;0RuCc3piz$lSG;Ie*{nx1;v+@RU8Glr`DlPA{Pw zW)Kj77z7dZq;i~QF<|m#)6fL|Gsm367G%<6!G=6*gd_B=uUz;3Wg2{Y|Gs!vgaGsr z3QPb204f3AWq=yDc|a6!|NXuM&1dSY2{e}3r^i!$`n(w|+kf1=I1{M|ECOC@wf7Ey zQgp)9>2CZ6N0ToveBfc2%j`iu6Z_7}m~6DNq!edM*+36v8xkBh>}d>wP1X0Wpa0(& tSG}F!U`{+EpU=RYe?J0z0003&06B@Q0jt0pi~s-uK>!s(YXEBS2IE&F^6dZs literal 1022 zcmV1rC`F+$ioC1%LoR1<*(W4S)cEZ z8bA0y1P&pmMT9pePQ?1ZaITFnf>9yxm@))n10y~FzyLrU)B=<&%uEOiU)x21#iIuT zk!N8ZxIG*9z#v1a1`s4Ht7HVtxQ+v<;AK4W3@88I0~AFSY2v1$HW5#7T|wXg1OY`D z!sx0BpKM=vH46Yc|J(u&1C-#Q842Rrhh$&X2&|1SBgX{?Gsf0RI3m0|4`xvoA&^aB6>Y z5Ck}Y0m4KdIu<(y_24Xk6LbIo0YLz6CWr>F07fPJAP0be9)t-9g&>(RPe=f3U10wV zYu*@;Yv9irCKS03ZyHsJF+2Bqup&Mop5P(2} zJR{ZPjbj{2b$&yFKe?6?Y8dk-lkbB9ZBs%d8ykdvE$01yFiW%f-)RNP1Y8@&h& zAzIqk3dn^KAszpv@U$ffiw%JYBftTN*upHbb%H#ae()MKOaj|unmS1%;26jRQjlT^ zl!XSES{{ZnBGM#)swq1pZh3$JAbtP>4?qARY5)QONuD48z&!hhQE`C)!ph(XQ$Pv4 zM=(@R9^(rksNey5zyO7UGYR35p8L}HsHvG_I{0epUIqZ*5X)J~J>BpAh!&(M00;%E zZvxhP{`QC)h6R`PE~x|x70}&+4}d@jX#n#KI)%&ZO{1^<#sCGtF6!Lm4}&`=aT)*t z0SCGO9B*VpRsY;00s}9<2ewd>;%dMA1l0_Q0*Io(5m*g-5))2tPe;E5cO9Li&@90% z7mofgoy>9tW}ucaeGXqi^M$~KFycalzyJgSYB>O8(CeGmz##l53_zMk8HBS`2)U*w z8;zcW7RR>O9tFGt)&@oNbzKYtKp8_Z4H@d?(Fgr-2ny=}Vs4uHrNH1omTmw4z?4vN z06HL{6ZZY?d?Y6=f3L0J1|U5Wh=vpLfJ6D?(Q7Z5OU+`p!EsMlgW#tC4pcol{UoaK zGa~MV2}m*gcnsK8(L1~V!cZVhgdED8=!IYg>i`o+*?ge95QKyQKsFD?d5~Tu!cRV6 zS0&EWZoB}V(t)s5)aF0yL6LA$7|k4kzn=EU4VRb{*Neipy<=5Z{{PdwpZ=zrMq3v} z=ebN-icSND-jx&lbs)9~w3$S5_y5^dBb+$03`vvZA%F-}t*c8;crXDK+ICwf<49%k zK#c{#Kq(9d!kz900CXi{kX343OTXV}fWU}uaMf7%QRV-%NC3bVZ2(}N*)!XJe|Ss4 zE=_1Vd{5Cl-d zN=N1bf@D3d^)2`S0s*doU=dXV*iN+w`yn^4001B!paMC-<;~hOxzMFOhyW0{lmlK} z07!=i`$77FpjxB(B%%CiVUS-e01_i0(;Uj1s=vgK{735VbSCIl`dBQm&#lJtRV@6~AxDlF9{0#$i?>~%0760vo zh$1@i^F|bgZml={|NTBc;D1X)4`q%6z=-i7Eg*3K0zf?=@EU;!B6JUa_?$5uB3C{5_ zblV_!nYAx1B!y~CYmq=qe-*dLfh(``sFTj4?)F6g{>7Ql?vF41@Z@WBABX#}ob}dQ zs-OQ<@UCBrAX*lfU{faJfA507pd$RB6o2*L?_r54+nw)x0JO7#2cZhrbq3yIu>!Jx zW=MBnu|~G5_q;e0xcE30QGAOYU)}Jr?in0V``GX`KKqCn4)*v3#WOWaqnN%5;)HrQXj*izy{%smrpTjgJ=u_R-Djh{%_DxH2h!<;u$WP{vSw^Q}93E0Wit{ z76WZb^3E#=C;i$PazE6i#RV_kjETMB&S1ctct<~#_4t^upS S8;k$|0YLy2LTi9(@CM@%rv)hh literal 1558 zcmV+x2I=_#0003AFaQ7nL7G4syaj@YA%zIw1J#eQBbAJRArGJ`yvjhn)(I!3`_=Ho zc-B9sPAc%8iIMd$;w&masKI~$fpurx!X|!xS;G&-6@5sqJA{7nA-JgGQimnJVHgM` zUr!6Fs$Hl5`CxjUVQAB<4)1{2&JgRRwGLa~Z3tR>9Iv?u7L|8@SlU7gWNEN60``+QUAZ72ro0xA9?^67Dh>_r?G7L&`G}L?a z0w4jxDnVQgLz0OV{P+Md2rdWK&+)IET$Vrs#xONMKrG7ZS4SH(({2t)$Zh<;MmJyBz`$2+@_P9~l4i z;6~DHww!+det-<-6XcgJ+L2Fw???ay0)R$Tu7P*0Z|@!my!;&z|ywS8hDfwgPLx7)Zt71E@Jnq$$bo>X*T=NTdXaA}A<86ae1{3nX~K zIe({c5CTD@@paKbK&;py_3%f+NeSX&MMWA%000meFdQUSC8S_4#urzMMgSTB z0stV|0+TU|u2c;hfw4?o)f)xJ?D8Qp|MrkI1BHdv*ZEx`e);d}?Be6y(%=E1fh=Dm z1!I3Bjo}N1rlm|tM7M)l;Q&1B01N?6!UaXss3QN`sD!SfV!!wQu`IrU*kuF(A`guC zCtv|S`a;)1S`xxzPw)m7!&v`IQF2S5HmV@wL#_Zw00;npF+sK5M1F8aq0^l||M3e% zBQ%pFpZ~)S01g?PW=PU^U@g0~EqA1d@L&o^kv8S&X|$cmOZGkB z$^pPx^m-yj$VI;`vmqPU00;yQI&V;3tQMeNbWyx2t>erxEO9z zz(RTdf(0+0sr$wN0s=q+C@36oA-9J<@*S1JFamCX0003&0B$Cb2Co3{#sT19Q-Vgo z|BV1MNwxtXSN8x0p7Ur5LIVA$y~xblFMvq(uRWkh4br^7#v%*f6oziC zCcgi)V{gO$%EJ$3jsw7m@gh1v;DDSqka!psB2caj+gq!jxF8MCKm;H|5BL8613

    1. qLL~c5BI=KGJpku({{Oc6~q(% z?F{iBr73fVH{P6sxA=(gU`{+EpU=RYe?J0w_!J-j00BV&Ifo)PC=20nS#iH(6{xl8;z zi3DLE0V3-=J-SG$_yPa|0$>Uc&}+m8!3F#za_qr`8UO*~0099gi@*RtR301?KvQ2z z-UbZeZk7>RqXcQ47yhze1Tfs}6rr2}1VfU1P+`nNHKn6+re=FCIDlF zEK10c!{$_bKX3p708jv<6Mcq0sK1C+RqqC0s1<0+f&d3jA-^$@11exp;zviH7#tNR z#nZfC0~#<2bP8Q;3G1+51Hb`+Mk0B22JL=o4+XO5T&Q2jvI`I=ahC^(7|1c9KEmpuN z1`c|SS=d3yU<|L%6T#FmEDnlptQ@d_0Rw3qu4C^25H166C~$z9Zz)s4umJgr5kW$4 zYMUZ^q+U)lM5RAE%gls3e+Ur7-|GUA(MVYd5r}6_0+JjlA1XmVbN~Q=54!*Z0s>^Q zv@|1lN}vI%@&O?ES23tuS7t&fOe(n~HNlNzRyFzx0dx#NY8mhV6&--kWh&(s<}50D zWj@$MAQvX|)ufy6002N&fCzX2oGFmK-wpV-lL{Ez8~_0WXqbQk9T$81SOf)IMC($H zv2)+r@CFAd<|cJ2!xAA@d;kFeft%_@{=(2uvNqsBLFF$2GRXJ048>0`A_&11#|Xj= zAfku@F#cjVJCntO3<|lqV?{6xunWB!-+r zEP~BIColjv^q>QP;4JQSp#v~>(U?F0AY1?f2AHjY0iayxfj5t$M7ZoIZo>q~F9D%(hzy_}X$ixBIU{invW$u>sKl%VBnnt!$Kd><_eqyy5Pxt!_ zhs=w;byw@S4qxSnWTD^s_yBCJ&p<++uRJH1+`-qs+i(Bi!`qAl!1yl6JDim*(0m7J z35R}Fm-SODA2S1K86TWfpv1L+hQkPTei?iJfG?41H<96qz4+aqfB)1D1!8>5Piha? zQbhJv<~^~p)!V>k9Sxv^pQr@oatXez5rI39CX4{sKbsdRpQ|Y9(p(*B^&Um~sb?9^ z@Ealr5lVIrprdjtOwsR&J0Z@KAgv(7f7)DV4xZt_oyW}0+fVwb$#_4umP*U8;k$|0YLy2LTmtP@CM_7(jhbe literal 1037 zcmV+o1oHa;0003AFaQ7nL7HG1yakUE6s9~51F#A{5L5zqhF`)Vo&+)R@m>A^4GbF3 z4kyY!S-iNtkoYhdKp=`@5*48d{S^KDA2Y015@m`vL|R z3JQQBggDTY{87T;B!2jAMd$!9cYr4-F8T!kIq(t+19t$9#S)|hiw*2_vL+k<)NVF| zJ}bTdQRx=1!XSVJ!yXc9pA&__2ajKf@By$PdId5dPZNSx()bpE90>*tp#wYs7-9T= zmYq!C^o_E47tpTgR z03Zh=zyPL}umLOK&}tI%V!#{&A=)jk86Ks*`+&d#slZ|I&sf@hnBlCm{`M(Humssi ze=8rgyucU%ln4`^$h&6(#g1w44&Wn%FpwRz8OE4MtR!;)0RR`E0|0OeJ*%?c#cvH? z?*Iq_0=O)brVz*4|CpANfF|ew00BV&ZYG!puK>uz0oY(ufCfj>o5?@W0Kbz+(`s+_ z1|`qjSEDKZ|6!r?Z@qPQ>$nFm^28>g-}?9fnR|Ky757azv&K@d%lP|y^Zxn_J-EO; z4}$E2vB_H94gdigNK8BO{sI51WtYytHjtH{fm7NHOGw?cUA{BdegVEk4*a#u^?WC> z$G`Ohfmogq7cKN3AQ>k0IS0eyFtUYLVY}#Uh95mZCo7Ond?o5K;LU&-K9)S$tz%cF zr*a_l9-bA|N-!y)&oRLSQ0#fZ;xi^_U^2Akhu^4X@nwzoDz;{=}@^nqX;^8G&9Pq2WaThkPNpLQ9NgY{+;pZ}f=3CDzU`S=r$=ipC20YLx&0YLyciKYRoz#EJJ00BV&6+&r% HYVZc*7~{Xi diff --git a/samples/h264SampleFrames/frame-1351.h264 b/samples/h264SampleFrames/frame-1351.h264 index 4b23bdb82b3cafaee0b137f6bd30ec3954867931..14fba7cbf738c4320ea89e59319d77eb044aa629 100644 GIT binary patch literal 6645 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 O0YLy2LTUhN@CM_=bs_Em diff --git a/samples/h264SampleFrames/frame-1352.h264 b/samples/h264SampleFrames/frame-1352.h264 index a27ed6e642f7b202c9a929c7642b1c84550557ea..3ad3002cd85b7289dd4d3e225ae8d8af9e6629a6 100644 GIT binary patch literal 2921 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 JX#i^Q2IJ{gI|cv% literal 1063 zcmV+?1laok0003AFaQ7nL7KoCyakbe1p~1lQWO+`0uTrnh#z9<5DWd`FVp}6WJ4>l zjD-reF+KobI0+_pdnWqm1Rz-W(%J4sAh3q>mJoxG@RSe`Lec}(|G*O<0RC8MfIv%b z98xP-($z1V3IQ--444oN@c{q=24EBJ8O;p~!LOX}M*sqn!M_J;9s6B>ssM1{00aU6 z3Ro7usz8zAf{hE#Z!tMUUp;|E)#r&nzyJsVaN~g$C2DvUULt}>6DGZ|KomkhJQ1W$ z&!JRz7We=G06;J_LyifXwh5gw8@N&2Fbe;h0)T+eQL9}@uvp+*9|JfHBp?2@nVG03Kg=b$;hX?b;%r%%*&!hzOMt=AQo8sP zxpII7*Mzx$KtaWVkx&3l2}@xUb##lsCj|v_zItV&(HXsah(-9vMj0zT*4KrET=Eis z>i;y%jRwMyyy8*91W*DRbB2X36Io85PyaW)kMsWo4k4#Sgg2*7#P+{%s*Nv#Q6cb{ zG6Z4+BR&AY06-no0+cM=%?Jx$+eM(orVa%n#8cPY7uNmo2oUOlgb52O*#R?cBLk`M zWfFM?6Tj{OoC(K@AXL!!MLofF5B}f)1OUzg2wfDxQ3Yh#r%<#5&;7t4;5jY}5s{uN zsCGml#oi2I3YkYk9w2gse+AF{0099obvPF>wy%{F6p6=?$Y$Wcu<`=J_=yS^DkPbJ z46Yc!)DG5K6h0`t*hR9?sI3Ei==GAz`;FiL2n2_sz;RI&i=Ohr_^tQI0}22F0SaOV z180ZeZ~P=HBj^AE0DpiO0YG`p8JDFJw>CexgaaJl0m4KdIu<+z_24Xk6LbIo0YLz6 zCa?yt0YYE+8jc46VJ-k2Yb6+*qf&oh1lFg){NP!WSxQ+#9>x_w7l&*P0>I!ifE=Dt zwe%bSZUh@NADBjGCpEAC-k;4ATWYYDRRkGTi|_izs)^)S3Gb~5bZvl~gov>)61_ApdOMGMLVvl_Eh&RR!HBdt{BL{-7Lixs+5pDCpdv-ECIm zumyMI);a)@{15-*jos>xH~*gocmMV6<9Wb8eP1Tqv)A|k{`e3t0&tjD5&TC2as2!V h=inI#0003&06B@Q0jt0pi~s-uK>!s(YXEBS2IDpqx^4gf diff --git a/samples/h264SampleFrames/frame-1354.h264 b/samples/h264SampleFrames/frame-1354.h264 index 4527482b41a9efa05d30fe9f820b5f40768af879..b007337e77297492b0656426f96e9d63698d443f 100644 GIT binary patch literal 1335 zcmV-71<3jU0003AFaQ7nL7HG1yahKwLsiXS%@Q8pCn#{(xsN~?c?!QUi`^a<&Bv=o zU>q%g0wfrk5H{XwWh6cv_g=8m00F=VJy!)xSBj0=z-?dvAUP$l08z0y-U~l42m##@ zk#f^E47d8D0AL6m0I2?sk|Zd40p|!6C2K;Zz)5he{|EeG&_c;j#ot?Abw3QK8eb}Q z|2Oyfo3P<<06`A&geZwO{=ue+lWW1720Q>KtWLEL27+zX;{X6aEC2)x002QG0ODr= zfCUlufD2`<(tK{u z;RPui00aP4b9fSypZ~Ojaf3$U8$~Ha=?u2|mJiL?UJPQ1h z_`oplh$U-#qr&;$3}66)DM&&Tr6~wPl%N0q00#mBi6CHuB5e6kM4_8802tYPP$NNb zPz^%?@Ss_LDI9x7$b_nuHL;rvh6>c!5jc;lcQI}HSfXEQ?9V9q( z?K%Ei{_p?<0$&3GQ%EIrs(Tk+dEdYQ2n47CF@egHv}sb~Q}!SM9SXn-DO3W@?tio& zz~J>o@?X#5-V9{ESO79)8e@~Vo`m>*qzSSR5CD)0^)`TE~c-kDLXu1zwEz< z{v_oCN9m%U`}1)Nng59yfC3-{Ljb^_M3Fb56@m$bQvx6^00S1DXTb2aPbHw zC^&tSiO4HER;FJJq5Wau2CiZwxbZ^hfy2#$5jOe{d=vl>&H;E2?!vZos|NNqQ~)Wu zn0$nD^LPLP0jE3wNwbAcNb4)#LG!2?O-KkTxLKUvkBXEA_*1|m1~`d0q9XR+`TP0= zg9N-IMA0u;xe5d@LHxu31C&u z0->85elqhw4}b$^Vq8)Tdietv`q2$J3!KhUJUa*iED*y02Qo!10U_itU-K`)hFSoJ zU;qFCK>%(hmyLS+3Y>cv!dkCKu@ELdFHV;fuOxleCS$?P;~UGu5V}EXC1OJuu4|l!-9_P~L8% zi8HUO1KTM_GDvV|;O?rygh^B%{@Z>8>lQK}cDs*RK-XTWfrWqV4A2cyVEuXR&;Q@} zW_!AO{QCm#Yi&&*ef%|^6QH!|9^JYS8pY+xqFU6~>j43}j*F{+m7zg@>meZlVs`nr zUyct1dS~W13|21Pf`*fX`Rd*g1Hj=BNZNj&4@|=QHvf$Mf(fpMZEE0003&06B@K0jt0pi~s-uK>!s(X@F|*2II>UPmBNn literal 1190 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 O0YLy2LTUhN@CM^e{CZsg literal 1095 zcmV-N1i1SE0003AFaQ7nL7M;?yakbe2m#v?2Vp@egKz*q0KB!Ao3POdVdU^l> z01yDiwy+ZpZ}`;(Wa*@FeJd03bktUc8FRks(~k zJKebeTmS?BUnUWtKI@b{k5B-p>3{;l7ebhgd)+N6zyLrn1I@u>zR&;!27ptfDBWxFx_f06?KA z(Nc>7{R!mD?*PRh0|qCS%jp)O+p~bB$N(MW0098vfvjABGAv8W|GWrdg)yrrNk<5I zW|FR&KLAb80003&0B$D01~0(~9u43DLx*CN!Zj#{Z>&I&gBCgo2Bof{ABh!ECe*_2r003Y+yvSHqkxgT( z5PQ*yc?+2AQZN&u3NS|iGd1<<@Bs6g$t`aG<_?vwXF^6wAG!lk`G*pVR+I1dV6o4Vm!TUbRx4AXzd_61zl(@mb|D9kZQ z@1P1J0F}G1Ujf9zlvPKX$SNWd;1jenhGqpuN{0V@W*#eOz#y^jj&_l__uE^uGkccp z?HDoNTZIv<%R$QPfd9}_f9Loh3i5sj;Cvzmz=%-bCV^S-;ROalSO7I=oCw;N$3eZ|Nhv1_qN;i+rt8MNyG(X zwD%W40eKjy3!I(NO$-q1aD@;MvYanUv^{#^zzv`PS$GH!Kf>GqW{LnNhX3Fk4y{1q zB}?|N_XmWHrI#L-yjd8VP})c`(#;Y5B_ZHWJWhTD^Y8>=0003&06B@U0jt0pi~s-u NK>!s(YyfKT2IF!N*Q)>k diff --git a/samples/h264SampleFrames/frame-1356.h264 b/samples/h264SampleFrames/frame-1356.h264 index 6adc3042960128fce5dad32bd19c9d13ad7b6630..8736dff2df6e8e350c1ecad5a8d19e58cf840e1a 100644 GIT binary patch delta 1668 zcmV-~27CFa6WhS;rDFKA|wF1S8UW|x;AO6s4qJJx;x6>#w-~khEXPQ%% z_-Q82FaQuX0D&~Dq z7^3%p0Nena5~nf`D!xTVy~X8#0DvF>2nPn%Ruxu%5qE@`7{UhtK)@AcMc1t?DZsQ5 z`~VQIEID&r2)x{88xX)@0G$Dx1#pkyAwU6Fdw>}5=M@ov3qjBT8~_9Y00#of2ysle z>i&{~Lcjf>0O%+rwSqdmlz_rkk3a*{F`8{omH+x+x6AbW0w_6~)M3CRFG&!oZ-ejvAp%aBg&D@s2v(}~;eahL01yk) zz!(4s26B)0CthWMJn6t-5Dlk`;iBJk23UZ97;K|d-1)$$=)5TS_k4Z5w%!asP6Cn~ zJHAzq`va2PGWrsi4-v2c5ER`Y1Aq+;a~frZdaz+K&jG+j93UPt_l7n9%u{p?1mZ#A z;0OW%NDU^^B9LY#VAk3b#}7czz)(_Q#PuN=N=n_kaMyCBe+TD@_UNF}b0DVd#i}A(@Q91U*0i zkNx0K5wHM}JAgPeEXqXZq>;z#*j$>|{7ePd1HbSb1Op0T{A96%+y58<2o(STfi>fB z0N{Ol{ZIf10d24VFksO%O^Tfd#DElkO#omP4yJ?Qy6y}Kh5RUNEfjbFF_{EHj=SO* z_N(9q1{zh(%EgmbNTytKgM&Pf`pX~r@61IqjDN(4@Bjn@PIv&5X9}GW)>pp(03aI8 zfCQLZ;5Lx+-}*Y=01Iyu0FdYa0tB!s=K)a7jlUoKTVsBr>Qmv3l8jh=nshUNfCMYK zjGNbQBtmTvfzRr~-y6D4KWw!IWn$wCj|K=4OWUfL;-LTbzoNTb>%7^G|5B^Ex~O4> zF*jV_{r|SaMnKet9cz3_Q}X}6zQ&Ace9GMa=KwJEa2RV6oxZ;rTEOMZDv@hL#UKFC z%P81z)-fBt`L}Dr|;(f*5Uc(L=zdjAMO;~FaY*Y!e8>9 zy@%uc1DtRF#|n$!0`UQco6UunJ65{;0TWGt4fWs{4gzRRx;93M7yt+XxC9*fZ~cD+ z0)J^3V~b-_%jSl7R2UPW0003&0B$Cz1TUBHLI-Rz2H{u$yV96+j8ou$03p?x@UpJp zUTsMKhtY05ruRl+M1%J{Ffs8wN)DYs@B0U6<710tpF#QxB3tz)0u|FjPnTcsc?l7d z5s`?D$QZ%^0TtSIwwy7)@Q{(@zW@OYZN>y#p}Slevjn(9Bv$1^pLlu4T#_4ssXFO8;k$| O0YLy2LTZ3&@CM^@f8jX* delta 1481 zcmV;)1vdKM6sQw_000012`~Tv0YRG}8oUL7PCx)a0tYzr&OGCfIP=at@8AKz0yqbl z2P6>@SI0<(fBCLXD={7nSU>R#C} zUuz!!ykH`ZD4YgTSMhw6J)?jPLpxg_DRFu@Ujr|^FN!!?er>X@?c;NSq`U=fH|JR|Gj#-^6_?a>eb2p1|SY5_Nb2Jrh#Fbt@m zl(vq@XIH;~1{5cSVP#geoZ8d>{1^ac+kB?vf;w07$~pY&kS#&NMLgV42moWCMjJob^vJqM4y<6vVH&au5yY>5yZ`|K5JH3wW8qny8i?v2f{-TZ z0bn5@k|l@=zb97bz5qY~KsX(m3T;vSBIZitVGsFUoix?p0M0D*}OKvVz7>SG%Kh00IEOEKIyd!%%Pd6J8RSumErj20-t=r3BKt zG$%bO|MyG)K*{ekY@6!LVgLNnFOv*kA|wD100aO*43tg;k*5^qv{V2b00aQQL0P_R zkL`!K{r~^qZcr~Se^elmp}h_00;qvSaufTAM*GZ48+*>{A1A$00IS_SGWLJ zoaMu0i~s=u@Bk1K01pq#cmfUzfD@gIsQWNnDytOFhEZkyAp|D~z=xL(G3r5<4S4&1 z#-JFP(`h^RfFQ;pUTi!hkw}a(*!ryCU_lYA7XTgo9w1+k_&0y>egc5i&JVVm?=;g% z|Mte56PS5Z&?$UC=vo&L7a8%5NA&td=^}Y;gog9L1{}q^5PShc&9`WqPZ&fg%Y05<@GpH2U-;DAr%(h$OJE!@InV{G6vyT z02k>@I?Pw_04I{n+9b_5729$z;rv^VXTJ?uIUncw1AZ58K&i9@eeiaUHX!y%x*wq8 zslQSb0vw6K;_KJ@-aISX*1Mdfukp&`? zpal(L^7t_Z!UeD>NGK>}K!`?;8+a?CV1}qsVSYRe`=mJY9239QS_JGvafp;)7M>N$ z{8uobls&Kv#Q+8Yb*YF2${&JH;}ZDZ=tH6+%Ch!ZRKX|+j4DgfT z23BGH;sg+fp`a1oB~9}D=)s4JhzLk6M@%9J`{oq3kjY#f;Uy25K&%q}blT5CSwAKodYlbz-H6hLvCg=z8KM!?dxT{|Ld+*7tz)vkuaWe{(Uv@PD2avmpl~ j1Cvk(T^axY0YLyciLwE!z#EJJ00BV&6+&!)YVZc*@|cEz diff --git a/samples/h264SampleFrames/frame-1357.h264 b/samples/h264SampleFrames/frame-1357.h264 index 52730f678c3ff130bf2c5be8eec9a92af16d6a73..d34af03b6cdedd74ab10c94744203d6e763e08fd 100644 GIT binary patch delta 1090 zcmV-I1iky1533M=000012`~Tv0YRF;8oULE6f=zv2CPV62giuaoNkAdgyZlKb#PPA z74S6W_%jH>m?8y0z-NF0004jp0tiFt(Xsx?gDeD6i}&EeW+XsqwDZ+p$=m;;00bZp zsA!0l>&L}9Y5&{+5HXxduTjD{n`o%AJOF?IKp8^9yH`$s#-=EOY5Oh!06-}04kokW z39X~AGylB60{{U7iw#1LfC<)IG>1T#KiI%*^aBZ&z^gH^B--VOk=D*y{*zyOF22fi$Ap*f51fB=k1 z+^j~*S7u&+00Dq|1R|Z7;_VPH6;u1ca18)luBDPTY6JL1$N&TbKmb5^2WN_h)6%vg zV4$aCUfY1P6Z&fCNKxKhPNkBnFL|kiCc!sg*<_C@?1*5HSz>6Tks7F_F;b z2rsyQ(I&$HSi;YTjWKgUFGd?Wv}A~XBOw*Jj)fD_uM9liQ2MxGhyw|j%z`jUe`A6v zdk*^?Sj+Y%D2ufX=Z~B|RG4;Y7&!Nq`~UF#811Pig;TunV{qZHG!KML=^b&A z^fV2=Zh{*#x%|yO_`b~z3s%7?2k!6**#=TGzh|3X0^kyyo@r=Hj{o-GWydEuf)Fi# z6i#4CG_|+BeugiZPNEnQ&lYRn-UQeH00BV&ZYHnLfy@Qqur4%a*S)m>EFQ#{tKQ7#nhGM8-Oo(_#HT1OY#po4;?Mat8p! z#)2n+xx@h8jL^PM_OS5LBLD%zAn9@{HAQ%SV<*4(7-}N`J`_jH36K;t+M~cPvXKP; z@F4WSZOBYCeo#p}|AUhe11pmt0|aIK5P^V!GDZgJ(hvFfzz}l>wO_*ggAZp zW&PLm=elZgW{$YeNe)5JZ{H}_nvk?Sr1C#IrZ5!|a00BV&If<+RtH2wK0003&02M-O I0BZ0CY=q6%A^tSKhv%!p-l5tx^yOiqBn0EH-G zp?wUYUMS@i00IOYu@5wvlIgrCiAt0l0AMhM#?zaBraKO|m?IE)e|P}EhBP_l6UR zFaw^7X9*Jg`CsBOU+;YYw4n47ca>3`l@Z_#iD8Y$^Y2HU@#lfH8lp zMvwu2<4a^Bhy2r9kDLxMPWcKI+3&u;Om=#bSXDm!8U4!e*cu1KKSMK&kD;J(`Mje# z=R7k0*RMYf4IWjZO(Fa22JC|?5nhq=&--CpFbPgiFxMP^`%qW1(ZuI4LIt9W0nXAp zCY%3*&|;*lb`U^!ym9Y;coSd%00BV&ZYI!w1aFt{*cvd%8-+jx9)&4uBDo?7(=Kse zc?J{+Jw%99%dTJsEKOXS&JcGBl%Oa`YIG5DY8P?TUnc+4@R&>h2mj2?-?z{?1At;; zKqCL<>Vh_zpbv-9-4o<>OguD5zyLtZ6>dhbq=MtQ$f0~pvjpG+;l*BHO!y5psQ3>N z?2J_scuBWR11B+%Bz{nNdy}C9He(p2ulFZ$l5+?i6u<}8`o*xt4)@4j$NToZ*IH(d z|5DH84-Vgcd@t^aj5`r+aUR8){r`^e14ZPULO-?uHlHOAq5n1j9DNkEVX>aQgnMku zg;Tzdzx}>GpXiJ#zHGyO9!s(Z2)TU F2II{4j1&L> diff --git a/samples/h264SampleFrames/frame-1358.h264 b/samples/h264SampleFrames/frame-1358.h264 index 69d5868dc0cb8b7b43e0f00b34f6586d34c16642..4b0c9897cfe879467bd33c0a38e77cf920c4d9f2 100644 GIT binary patch delta 1323 zcmV+`1=RYd5V{I~000012`~Tv0YRGJ8oULMFj0x`SfRNAd_&Q8` zXJp_2Orm2<>OxmJJpdRu&Pj0|z!Zf32hP5XR$Ja+V9%r-xea`n*lt(r-@>=FaQt{A;17YI1L1k=qeSdIp8A-7*)+S z(k4R*{6YW%E1O5a5C8}W%9H~U0lxNb3d+MJbYK8*VGI-7CBC@#T@g{<1}aX|R(-%> zOWtHEKnDT=Mf95GpD%bAOQDOPA517Mlv0TX;ta@t3Jk(d;0k6B-~d1{e@pf5#E6?m zZq@uBfCf>w2^#6FrpRa~kZ9p}PCHpBB=Nmv-~cE9;PU9AKts|f89TXOfK&hupv=J~ zu(`E(_)A(2040C|IYDOd-{KfCc~xB-$<(=9&To z%!vSh0$%pKATK|#|CDnsyRgBTN00S6)eH9Jazha6#`){^P zgUIQ6yy>L(*D>mL|K<6OoP|>hNP3#22g4vRDgc23!J?vqVxoJ0_%J6M5ClZ}!{7j! z7|7^z1Q*K=*GWAr-lfg%i@R3^-vn)=hi=fA7}6%z&WRZ+HKC`E5wv55WLt zARKOl&rpYz1$s5~2Pwh@a?#dWPpp6@a9}Ikfsk){yvrehMtDo$kemR6D?<8zvgy5l z(cE4D0D!oI6d1t)h>s>cxJ9AJ7x=&i9jR~*C(Tp_qa+po^@N2N?`!kA_&@Q01FQk~ z4$(X>z)(>kLf&Q{;-#r=@P0(6|KEf#1{Q3{GvN_;rm9zMfrcCc{J{trfhZaRJPARG zng|!00CE@&+#78G9t+PuXo9}`KmzW6*6&PyaFnO8KHmB%%Tz@BJQ#U=CI*1m8VNjq z2GAgtG72iFE9Zt_03~jqxAkFCMpzOkRsIgn$zX5ij{`uCi!I0SK0jycLJCk65^x0N z4&3_Yj0DMGOF#rVEe)YpSr%;Hzi1fz!rE5z$XgNL0W>EFfCNw1*Z1%S2bJf4Z-U)o zQXVnKe!CJ73b$L+-&7lCgo8DDWDX`+6mGhg#6mm}ftW~AlMH`wJ5~ILDevWhHm7_Q z(fy6|9V z<*DL?*?~{{2L`j(r$+667#tsefDn~2iMgd&Uwj8qjs=-#q^Iut<~;G<;U0(pP|{g> zOkDPmx+P?SXWCurgPtyX)9Sh{1+xrQHvZY+&t^c==m!2M? zN&p=FYg*m?`(!2|N{KHk|LVX3S|0W#lM6TY;Li~EzyJUL|NsC0|NsA!3j`t}|NsB< h!Y~Hm0003&06B@S0jt0pi~s-uK>!s(Yk+F-2IB$|LNWjV literal 2087 zcmZQzU|{4l01}R~6QuUAPON8T-lz~HBGSMlAfYc{cl1(){`Z#p5C+bP5~+!zomCM> ze=s&IP?>r2%}mi6Tc+p7rrkLd#LbZ9`F$+JwZKYc~+hP`_ZFgQ4JFdWb~i+j;6d{LsgCymc_Mf{{c%RA~GFbD_;w<|0? zmD{)^W!pOg4hFk*9>*GHeR=rAoOQ~M<&5n=%s*-!jsL*!Al2o0_>jcqr5WY1`@b(> zJS9_jbf?HfmE9_T7539aOJ$%#QzM38g2H^@zW9MYG6uH)o<~=TK0!2ARyfO__8Ql;l zU{FwaU>E-J!HvhKqOT})btJ6Uc{(YPfv=iHA&q502FC}Xb85L0jJp}W7zj#8{Vidr z2&=4A;`;rTfye9Jm&2^VH{|d97Tr4Ok^2XZHr}EiKD>+@OjIKN@h))GN|6W+2tO~` zz_4_R*t;`Ai&B4x1+4p_ZSB2LZrhatF($jnfN1sk_sSQPPH^;MQP47)a%9?>f=u}j zbqq~MBmI?3T&A9!zQ-`c(`8F=mB%dKEfa*D3OX2E{?^vlGbB{TmHp7YrmFZ@ru_9r zMTYWg%Rc@8?aX%F!&9_+-kz@DW7|vErrIe9K4{@(a%#MNBcr5j!6X0Y?gzxVmvTi5 zYbekAN|ii|NQf>-hTf1QO0N>jHZO) blncPcmSyKQ#?=R;d%zq~r`(3D4{VPCBL(c= diff --git a/samples/h264SampleFrames/frame-1359.h264 b/samples/h264SampleFrames/frame-1359.h264 index 4d5f7e754f6429ae2dea9aea9219fd3dc42e73f3..df9ecdf9450919ff1f77ea7cf7df7162f8a9cc8d 100644 GIT binary patch literal 1542 zcmV+h2Ko5_0003AFaQ7nL7M;?yaj@hh!it`1A+>kLbk3+(j5QxtN4C^5D9nJKQEf& zB4Y%2WC(-oM$ft&4B-Tviluw}=QKCk0O4P5pJzS)J3(hUyh77XQ%hu`T=0}ru;S!C-3c{Kgt zJl8-zt}&yaqB=+;Uu7X|3;XZ4HxLjn(4|jTyubhuKL7y-pa2lH0097`&JX}#7u-6F zj0grcR{%hpzynu^Hr*X-2m)}F#BtdiMKl}vZ{RF{u38FyuKfo3M zfN(t(Lf`-*c^Ci?Y$I1%l_@T9t7m`!AT9t335M6mN!CfcVao9zfGIVkL%DmVH29{HG-T{CLE@Z3i?-28*99xuixLmi~<5J0-5)Sto)%`~U#} z*FZ1`s)5X>T7-Rwo7aE<5D!oR7~pc|Z5mYQQhvk$2wX~mZ!VA^LxcUG{Xp>bMxi9A zlp08WSO6qOCv0Z0Du5MJc+wl2`GrbVfe-30HI6HRpSV(&#fT9V8b7WN(wUB zFk$sH|C+=^O%TjNhkd|++6B8jGVj{e%_vVD@jw#YsWfr~)9EAbCN0CW*Ty$$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIxr{s|A^?akBraluGO@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAj1@BwS4o4E>(9PXMhX< zR-ip~HppG$Lq_-h@TfW9c!@}kj4a%pX%ZPYU_i|VgpbP6Vqh|VL16!-{6;twv5+3q z$k7ifAUh)f19lnkLWpVl_V@rWm@Wp^&*`L1E=wQ+%s^Uv3pP1FDj6)EuXw;jqOHOZ zr0>-^S`0i=1v3c0$93=Ugw(`fk&5hp|EvGQIIlN~V7;n?g*fCneA7k-VnUouncz2% zPagdO{P0c`jZ?eM20v&vC1up^pi4Dd38o6jDS=mE`M`t$89QD@!XLYEE6K9jar^!F z05MR{Ez7p7Q_uUoAOH{w0Uc7B1>Uv4IQZ2c{qKXO9Kyi|%LUAkl8BT*3?*W+98F6S zrmw&ZVb_0nYH3ZxUu~{N03tT{uQY54tXlEl3<0(y4R4bNSd9Y}g%L5sg}lookM@AU z`COtDi^iHZ#smqa|H>%EfC2%676{_LffdyBZjBo73`C=smbEodmL_T9a1~vyr0_8p ztZEyR7Kq>fq4@v@92^8x#IK_y03h6TzyL6Fp5t1xF(E{YtN-Ba01^jX&;SStMJY@J zZg@jYh#y8rJRJPSk|Rz4LlcCc6Z=hp$NH@QumJ#wX@ER(JX{~L2p|4^@_5bw*}kK| z(A3R%!V>yK|ELdKy}GU700;m85IRmZtCLv(-R;yc=N({{_2CZv?;um}+$&(iH2@H0n<%z?XB;*b00;mA z0ALJIU3U>591*5;=SVycg0$>~757G$SRLY&Nl^XZ0plQU8g(;3mjxwno|+OdP7Y0y z1+skUz5pyh5TIP(O5Gee+~7GSaKWWvzyLrSk&M6tpc+9I|LKT{$hHx>*)My~=mq@0_#*=W zivSg;_>kox`|tof6AzL$9xWxlP@5c z0T!`91OXr4M8dgzK#0uY5#dhEq0=-UU0(^xF_q@8x9@?#W~+iIH@}%p{orjFl&Vnt zDo_)?pYS~V05cBYIDh@dQj-9hcvnnpgTk0pkbD995CkuNnT|4a4o>(-T??oGmw}}u zf+jVDSVM2ao@S69_0W*1Q|13;6hUR^905%&$aI2Fd>GK<&;d9bzsdmy5FZUd2#`+b z2|F%9uv+?|GRG5u0pD&UW=-@990gq{Rymg6dhmV;joDxSd-($ZDA(%ymH=huvXptF zkJa^6B-m~*u7Lr8HUIztK>%(h;0CWkd{2qs4)y>50YLyciMRo)z#EJJ00BV&6+&(R HYVZc*-~DJS diff --git a/samples/h264SampleFrames/frame-1360.h264 b/samples/h264SampleFrames/frame-1360.h264 index c5d8a375277f73280424a3c94b346d808ff102c6..26b8b1d2c136f03fca4306b684be6f0b41284cf2 100644 GIT binary patch literal 1216 zcmV;x1V8%#0003AFaQ7nL7N~NyakUaP_W+dAdFXl25q;cH$DIWfOrQ5=pomJ!z*`Q z$uk6y^Z*Yq01ys|=l}=?fE9DAoY53~+@Ww_U@fRBJzQ00jUXQf;WGQxWUc6??-k+#NlY z1OO2jgngR;%9=P1cu3QtqT&MoxWE{Zz~;fKt${5y34j0i0AS}52vs3k-IjvE1ey>j z17+R#!k{0S5CAi}1`IMW{rWjk#5Q_`2zrV<@d$tTJ^%nfI1D{)_(-nwN%=O2 z=ZKeI=1L0#vcm7Lf#3=%uqZ1examPzs6PM=oK~15Ax=9$wj^w<0gJ!}QrwtHT%RO05ndOQsL>O3<9zUJ01Rg^P;BqyF>(ou z!57#77*(y{L0ZH39-T6~1j+!ne*(~xSHb^`01lV|&;)p{nOHP^fkocW#;&El58|i) z-&6n-LI4=Cg1+{Gkxk)>?!7fTrKnhzJyfl4?#cd zvvTleYU0~xfrYlX94Gn$bQFPjRuOPZunCR#|F{iB$VuZXivI9Oqke!0JGJZk|G&OO z01iw7`Ui><%Z&-)1k{MZR@eLRNg#=s*o0ui#fTnm)+`{dud@aSfH0-Zf_1b83Hoa< z0ff4MA`-zIu40b^WyYBkBLjc>UsF2V_zf6XX-vSv0&G};K>@%3z!iuC2QC2ujyL(F znwic#PWZ|_`TGABHrlz7m4Wt4!`c4C35gUc3;`NTcjN+nNq7SY?>GQvt^I%f`sk+~ zADB;nfY2!}e|>45*-BMUUnr6HG!R1>Dje72>lM#_4vH`2W8;k$|0YLy2LTrF)@CM_y9T4{b literal 963 zcmV;!13dfy0003AFaQ7nL7Si&yakV8LnWij{1fmYitqqHKqyd-C?rV)Pa-pHf7gZp z1O@;gg@Pn%!V~%!f&3ph06b$d9(-6vo21Wp2q_{SQ)f=9@y{0#;=^I!GlBt-06>-V zppfguVa0mml2eIzj1~4M2zrYC=u*p7+01yF> z(6bE^yZ`|J@y|d22nQToX@WBrAk1xYX0QSPj#z_42qLQp-waE@C;$Qgfhjgj9TCpx z;?jaJ4Hy&_Q$#M@Z94tnfCMNI6!ZKI5fFM>9pwNQsKwz?ocg^5CMP$6C;kh zZ0V31Jp-5E0~dsY0NazW6urhkPY$`Vz!Q0kMCBl&{=k8S!UM=)^^KqeFoqfupNl+X zAea9Q$T$ED72pZF3%-#+4Ily`KyGLe*rHGg78}^@TuL_nt-2q@K0BWOs?&FP03`tc z38WNo3!(H;sNvBo;T`}6Knxo2r>v<@Ucdk5Cjm4HGK(=u_$2@V06{i%pj2yX2AqeW zzy;qiE0_yG{;q^%kvyLAVSZ<$r5+0|AAk^Hf;)8;6@BW3h}+@F1wa6;lAU0E)gWqK zpaP?&02VQHD4nl+r%JE@5C#Ee;E~^G00IJlQlxf9Vc4_7R;<3jc=C(~#W{Eu7pp(_ zw*i0$V8ZM#itK=1xrn=gN%zQ&M*uRmRhfz{r>y> z5PAR(@&EvUK>(F62ZN#nJU$3Q4mn&<!tcAYtOf4>!T~Xop`u@mlWq z1D<8%2y@(EN84I!6&%n1Oaww$nOub*f89+pUiZ>?G6Y;CQVU)L*s%hF0^k5>3o#rtsGo|91fZEpyxHA{S?zsyKT2M33A7OkoaWpfRs+b*k7C<9V&+e*$QUc##4E zM68+sA;aP=687))NCAT%AmBhz%)cpwKy0{qCxDMK<`g>)+x{B&{vUfVKfs#+00BV& lZYJmkuK;*30003&06B@e0jt0pi~s-uK>!s(Zh&g=2II8nkX!%& diff --git a/samples/h264SampleFrames/frame-1361.h264 b/samples/h264SampleFrames/frame-1361.h264 index 880c29f1d162f49e436a6e290bf4f6c42d899ee1..579c900a252f88dbdfd2920e0a289f423b1ab471 100644 GIT binary patch literal 1575 zcmV+?2H5!k0003AFaQ7nL7PAtyaj>$-^SKs3_w!=1ONd5Fa{Kd)3am!lLnXwr5ED> z06-`Mo*69w3@=r_w}1c;1fVz;W(k@HuWU#cg^=0*?mz+n0RV!D;LM;RF{=d=XIsVj zoZ=y?Jzn6)09K_0jeuYAM3QjO9Dn>6rpw^~ND&MK5JW06@B%>rlOUp7?X8{GkiqZ( zHkpYQq~5vU03Z)h7!CnPn!!Wi7(W`?gJ66B0DuS-SDR0x7qL8m zuwIMa00FoGI3-SO2r9lsMt#ZUfB=9X00;*L)|eGi5qE@`7{V8TCY4}U;lgCZJD+{s=PoWfIxxO1Qxj1RX4u_IwyUqBt6%1hA2aBbRZjp~U;rQsCxBo8p#Bi{#Jk;q^6mrz1L$JlNTa<0 zl>lSvb?1FJ6+Y+?`1jxlKtU@K4zhVsaH^mIngx-2ky)yhhENph*M(NIWs z6~1x^gN8{@z*Z@G4-gbF5Rw`_5MSDzmkg1a5CMQl&`AgG@rfBGaDpxh<_WY=SCgOo zocmsY2o{ZwJR+smbDjOX02toDrCU3D6VP7egn;4bkpT#*Rv0ss05AV|90Yg)ZPWvT zLJJ~BUivuwdjQK?|AJ@%90R}5I1nC34`M{@9Uqtg2pj+af``t40D-^<4Dbj50qmOq z3^-BbONbc<#DFN80RXT?6deiF@ME+HT}xk6)4VVQ0t<6PAgSN-bn0K(LS z?!VjrS>o8Tq7BU65BCXf7ywwvw^CjRlT`oR{sVmikSqfbFAnek^u0jUhzTO!y?_l@ zgoko2pdCy&BD!TDyo-P7cleFS3>W~p|44?cd;dp=d<|Bw`Vo7d)=!TH|F{e@!(t}A1y_IRdwA})MbR#w|NsBS zalz&bJLVYx6r|k7W`>FWP|5^qmZq4P!AMSm@{6NxBQy@^x zO#Hv++vP9*;s4m100ks?p2^Su^3Eq;8l(UB{0Ya6&%m1i00BV&ZYIzMuK;*30003& Z06B@Y0jt0pi~s-uK>!s(Z2)TU2IK!5r8fWo literal 1495 zcmV;|1t|Ie0003AFaQ7nL7TuDyakDU0RSKcAh3K;!GTOT@Bsi2FdFY$7N@USNQbY0 z0l+{2U>!u=nV5i|kQpuV@qhq;M*sl;Q7MBz3%x6-X%2ED_&vY?Kxjwb2?*ENjD4n- zCGY?S8-QCxfv0D{y&phE=tjT;fdNIt(FR52%lTDEnIA9!Kpbn}_e5I|5gj0n`xjCcp$6fS`qC1mu&1 zB9ICk5-~NvsL|~35K~SWdwbxy6a7gzUs5no3IR0JB@CRx!~t#;6@U$dQsf#5YmfP$ z2m+=cx1PRS`5Q{M)6f?}4gVWF1K{=c~ocrSQ~XYzzS03IOP21p>oV z385S1)ek0X{?vIu(j)U0qCTqMyZ`|K@GFCZm0t7uR*B`cuMoAK04Q)~scaOXE-9n{ z2mlBN09aTUTwrsmrCx#?`IrcvL}WC|%IK)8-~eIH6oC*{w+PF@Bjd@n6M>EZ$jS~= zegHmz8R zGqShrhq|7%@UiEIx>hG9D9nfs|nhe5tWvFRR?h z&AtF&4n9}0N3~Oc2ebo114e=XC>Oh)0SZ$jm@Nz-odWM;TR68L z@PJeR3XP010hlP)(EAOv*s&Y}9$avbQw-2+*7yS;$1+~;3_XET7iQ7JQW%|I?BVDP z7{39=ffwlq}fwb*VN1& zeI3hRIn)CBJpr5T0zdE9dUstv`~Sg+76kkrLB(VT^Cm@_Bn$h#uSf^HCKahr6HqS$ zARz$=C~N?56e|U&laFs8!f-Hgj6qT=A2=HsL6Jn6h)e(f|LJxlM_xN5d3E>y28b=E z^N=`>?!A)pb%2mVMBYx<)L)@~@tSkOI-WR4QxyQyVY50DuF4Y1Whs%u=B- zBb*n%zyaycTSy->Xl%F>L_)tF6ftfWTS%t}4URBgT+?Z9@6R1>=nwy&`V;p*sFxlM z|8N*Jr9y3M4zB;y`};MrOp90l|NrrvIX&TLUjrZu67r?~AOp*#{>@{y{0JfAJQMCG z<3IgqF)Ma&Hz5CWoFBvuB?U4Cgv3+w|BrrBZ@7Q!s(ZvblW2IEBrd?^3` diff --git a/samples/h264SampleFrames/frame-1362.h264 b/samples/h264SampleFrames/frame-1362.h264 index c40ce9fccb7726e8de39b159b15a9837259c949a..1b2161b2a59df5851a24d7331af344f7aa5881a1 100644 GIT binary patch literal 1006 zcmVJY#Hf=~c}BqN4>aOTj80d3K*KmZUK01N|>NnL{_K}-^ruBIdaad^jo0E8P4`~U<9 zJNwuI#RdWaGiO3`BB3mUoAXB8@R--*_R26w+QKVM0QkC|Ce@ zzyOE^1Ko_f0)i0nJ3sg^LM*0#{7thqVXL}^9{?AOp$HXnO%iFNc7PBFU~!EY1>F)@ zaKwMDo~EyB{t2K2AO$vnFdhu3gW;;q4vL5X1Q9?0L4^^303fOW>7EA1a4-N6BLD#b z-os!6;i>QR20=*y<7ThkzzI~!;t-S=`UEbfuc;`PiU$NJ1ArTp1A*W`m%g11h>46B@B#q?4lq-cQ1ita#*){E@8$_yAP{&tq__x@m=h9# zm~av0|G}6R4FCnL^Z5Oe{{R2)24Gkj%br`ZC#u7s zVs^E;|6UN_5c{pZZKT#Gb_4}e;p6?!cz8G7ihyj_!D7!p`e^_CF9LCV9D$nTQP=={ z)7^luvqb`L9i%Wa)Fdis|Lj`Yq9jRw!JgLf#NYzFzaR_R)C7#Yv+t*cbyA870yzny zSWZ*_|7LJ?2TFVWnzwcXsNzFjSFiuw904VC)+z!>+wcLyvdgDRSFz}$VqQeA|J?yJ z@UOAqNF@%;*4jh8eegHR3ntMzzyF>DfqRzqkD!i2M2<%Tof2!0BttW6vn8F;1D>23EsSoi;%)ix4;Bi z1tv9tgpR0xrN8~a>wo})fQdi=*nW83R+sqy+yDk31(6v41)`&TgxT#TZ-c@hWDYna zQvT+|i(qFGC+ahh0DwdCM1ePLOKS~JDL;4+*u-#b-U8q>u!@2xnK%Gt00TyI2Z^|b zQft=##sC0=2mlB~004wo08uj>yD$sP0*Le+>;VZ8BUHS26S=2Yie(VX@FXF)A(8+W z1^^>Ao&#YJrA=Xf|Kf+lEg^CiFo;6Tb(y#&P%vzQ~pvCIHK0IrB2 z5Ao=?zj#`K0);PEohXfxO0RDaHyH@AYYaOl(1|v_7&Txu(3>I(TbYau=tNH#SO8R| z2xz8)^w!g_5byv92OLmW&yRqX*0K?x3P1=!%Q$mMnJ$~ch!v?p;9;0R@?fiqf^@~Q z5j4d&zykva`E+P7$%w({OF*J@@(2TiOz;73<-quGH-T7uncxTxERn)ZjlD#ESh@Jo zr^4cqfJmui@!%s;X;fCjAb|gEsx={{R2}V9W~x35F3-d^m_}W47yC z@aGsN_?>-tLxB&v+rvJ&p>_Na6sFMKJoo7{|MdO@;`liOH%Sh_ z1MY3u78dBBP2;tU47CXhnm_vrEG1O3uYdmoOuM#x001p{b&yBefRPrz{`Wj9m(`~1 zP)H4AB-_Gy1#jJ7hf@KPlm9=PS!qLLD$~6`-O<1VmDBM6B#jRM6gxhiPL)>NLsBmy zQ~limH1MCX;V3l+W@~AMJ>Iy-!2??qGGv)LzyG)R0{1^!^E^s;g>_;7|M&X#yIW3) z1sXz^JN@?q`n+9b)T{^^_W81c!P!C^9aVLS)QYuLj_?D+ZHVfD|8xYEXB&PkHE>7t zUI!=u8e7pa2mk+vz&dobu!qg!s(Z-8p>2IJdXo$>$x diff --git a/samples/h264SampleFrames/frame-1363.h264 b/samples/h264SampleFrames/frame-1363.h264 index 9a2993711661d8004a577efdbf7f0cd7da88daa0..c5f8cc33d4b705d63a2d22a5f6ace7367fb0f53f 100644 GIT binary patch literal 1276 zcmV6cpe9;lm&T0z*H;;OQ~#os)n8GLsr- zQWLq!=m5dSa*T-gD(2OHn$HNnWU)X608&*%1Wvw;R!d1RC||W0lyfhF;s{_#C^-aU zAQV|6m?s%$M}`Xqi)bvr{RjxvKQ{Bwh6N|tG#4X2Jn^{oY5%|g2mzK500aR7L-tKC zdF)XOz{9xFOr}_>4hj67H`;&zKu`;gumG|Cls5oyUIB}L+=0V{0oLx9tdC$Tlau~VPMHKCivP-oFbDjItKs+FaQu61OTt3>j1gHC5UE| zS3n?)6IKgo-xem~n*lxG;fmP606;~K00IGkSR{WzK&?T~0T|#A64x0a^WjB5dH@0| zU*HS?96*Imrw(0WUwbhP-L!xL0|;aZ{u18Ydv1uP@H3nm%}KWbMK5^0QUEv*3NOW3 zEcpAt!dwhp0QzB3Y^In-HxOn=Msjg0r1ES3V@P{tOAl{75J9Py_&ipa3fSN@3isV?kwi zXa)kD7$o0&TRHyZm|y?lfI#3%g-9r8fP|-JM}OP^0DuSq!iz*Ck4sdBh0#o=4O}0L zB8o#)d5Iuu3oe8?kQ5jlm%IObJ#A6E{{#V;fN{DLJwhH-7wFH>9H$5s%STyh9<~6P z!GN!F20^{*^DKr18Q@pIu{;8ym7#q**>v9E?mPei0dWQ>F@ggT9!z_1i$jnv@qi3F zeZV-MF;E(ekW>HG5)@y(rRR03&p)fu#%v?^|)8`FDsw+tXiCzp8JCa1b^tJ1hPSQ3CJ?bQ(wOTP$uz_ z?O1>uw0rol5q?BbiM9(rto9slaqdEB6AW4yBM1P?U8^2)& zK3&aRd{h5RgO)>J0cbKOj;^RcFq`-QJ{nmacTHdaouFB!(U}Pj7yq=sC*oiPc&5xe z*}@hXM3jlbylCgTQ6xR*hXQDbM_wQy#s-2xGiv3VS%3HZ4k#6}OJQ3S_vjd5R^i0j z7yl}~IeOIf+K4!aCZOx6VK$9k_zIO3lIP0z4}biO%9^KM#;oVIZ})I*KyV$90003& m0B$DW2Co2kFaQ7nK>#_4xB;uc8;k$|0YLy2LT&(R@CM@r!W=#T literal 1196 zcmV;d1XKF}0003AFaQ7nL7D&>yakbe2ZQk-QWO#bRa1_?!+e?rs3~dW-FiK(JO+%IlV1$quf&yq=M0&sPz!8uD7tI8m28H+I z#VfmnSE+p9Pzi$wWWa!A1%N;RKt=)INZ&ML3J%$PPNck}OAn01yUHP=IA=s{aR=is0S{iSK40YsjK3 zQ%K#%a`;srd;kFefEqxNj=C;>@H&3fA$F_bhM)^VNyHFh0FMO~837Z(4*;Mj$4Z9? zoi+||3}umIV2^+r1Fyy$2qlduoV$DRKS1%*42)9L3@ZM+gYu0v;g;!03Z%1LrkW)J}9)SL`e?-AOG$E zfj}{D4HcA$xXLD#ig9;=gcP~-_&k9z3Rb=v6ZilE0^n8<1k5JvnQ?)5)G37Ek?3G7 z5`Pu>Tj0c6kt%YjPOY{0||0^kS=9AvR= zesC&SFu+ zPyoIpGI%V|^)c%SLvqR;;!{-pq5#ev9Mld<>I^P_7Ge)VQ6In2O=3U1FhbCZY7yqR zlkNbZOtFx*uD}XgJEPG6Lfvw-qIJXCss|ua5G+i$9oe-iB0+E0yf^zWvcF%)jX}Nv z1=(pJCZKW!AYujqQ>X?JxP7o=zWD52e4gTP9PQD%ugKEuwFO++QWF3dYT>n_ia3f64?dv*b+6rCcpy7=5Gtis6ZHP{070N zj~8~i|F`%AjgcV;m{y(N?Czg0N)%V?$v8~Fnj$|h zkuQh{2QXpUz722<#7tH$js37dL0iB8Km`d5@3+kfOYiuI${=U}0suY1)%j*f211qX zA{+W>OYqR%Nj%d(|8@`g;T#8C0003&0B$CL2Co2kFaQ7nK>#_4paHAE8;k$|0YLy2 KLTCVL@CM_^Kk+;O diff --git a/samples/h264SampleFrames/frame-1364.h264 b/samples/h264SampleFrames/frame-1364.h264 index 88dfbcf7def3033377b61764fc387f2987077fba..7034b04b24cdd97bc1cd0ca84de8c5e02ef49a10 100644 GIT binary patch literal 1485 zcmV;;1v2^o0003AFaQ7nL7Si&yaj>3{v19|04&T1^#!g-;WOlqSEk4Q9xNr000IcW z03rSW0vgP`08$MA06^X7abN%;$dCXCL7uOFau1tdcZ3Yy_y8(l6c8M@+<7T9~W$aeu=i1HeErE(MZNo>Y#_o)rJwU;%I+ zb!=w|f_Z+$pa2jEbO3QZla{OhHxYscPi+fb=Myqp|K6pbLF#musnTPA{5X6kzyY#m z(3>e$nP!NHD*lj|B>)G;NB|THA?$FlkOSF#_m}`|D8mO6{;WDX9TA?r^2W zl2q@+HRu8fUR1AA(#ZHAC&>M(lT<~r1=M@MU`I({B)D4mc4HV#XrJLBMop)XpCq9? zSUvzX2LX=iBQuD;)PaWu+86c`Y?mcFN_dk`q_06=IAH!C(*i)8VERH`Nb z0Dy1+2oV4Pil_hxWF|ldU_}(eN(*Z$9dNNXAtWb%K*2$h_038Gohnm0|$yfDNx)5Z-j%M`tm z5O3@sQP2pEXELCWQJvFq1OP8g=vvn)-Vgj@`2Z*s&1rOtHsPHW2t^s#aYhj5_&@4@ z=3>a2Jjeb(K%w{SS`8#qeJISwf%u>U0YhgpZ0<`cNN|WS0Zr7y*Ney z>qInC7df1ycy=HuxL^Tnq0pD8Q`@oFKLP>*I2Hhc1z?T{|E(u5Ij-p-+VBOZlYXUk#O)XM@(7( z0x)71U}e83UpB#Qv63GF$f0QNi&9EPNWF#rGE;7vR)@c~T? zS2``yzrR294QKYttN-~tJ$?2D{;(DI)_O<(`DHNA1=AI?H|$pBfj%dnRGcs%g}-_! z&VYdZzs=hI*Ki7|_ve7184*b_&qan&AMh9v*7~K_43GZW|M&a;|G-W>E1!VufB*mi nK>%(h=mxIQ_>fOE9t-MkrrK!>UYIx^sHmL?VlavoH`06}3u z4hpaUSObjU3vV}|0vHwPDD}fWn_VbpZ_L031q)dabzTT4L)`al%>V#^%m4uZ5CGc) z1Go4$-eyA}0O|l{>3}MSV$XaCKp_H5hW?!hyuyempGY4g#dgXi6@mHLXh0_^|>akU5Nip^8}dYFu{4Lc8m2%b$brAcPz- zWC|22eDj45l@0(5CJTXev%F*H6(x`W^AbU6_$=7u^q^$6|6bz(808q^vi+qqcs_st zKrl3|uzf(#YfzSID|Y|z#cR#tm@lfJ;Z8XYUo_Eyn30{6zbK zj*SJxth$ZX31+KlG{Jds!2&MFKxzRA8MD%lra%AA2YEJ4IsN(i05Me0l3crL#XbAI zAOH{w0U1)d1?IKCyqKV0e+NW)gohn47cxdlB2@qn3D~U16Vk=0Yw!aYb>H2ZniFvs z*=v!22#ek`O&=m_7QAc&0BeZj+vL&GBS6Jr4w^vWZm`KS{h%;@M<9hGai)#16JKU5 z023e#00aVsUWCB;7@(bLypqwt0e}F2I7Cf>ho`|V28Y$-()c4`P~a5+f*1k_!T>k` z2m-5s1H1vth2?Mf=)GO*v8tt13^Ac!0dNHc{2_hBIiMOpc8%l60t3I$S%rWAfEAed z00=XHI=z4akQ6ZR4pYq=4E>(mh0FplbBzMp0zm?UIKTkv|IYLVa07Ef@<_mN`-F-c zW=J3a5E&*;0098t1G$8c_JC071kuwou>?u@S5J5V0s#O54j|*2cc(T1l;Mkc2gCqN z1E>>A5G*2S8LSpO01N;V_@Hnf2yxDjjM1=|U6;X-(5O@-3CI~4@H2tHXyy&2tbonn zddeG(W)$4~A-O?d(nDHy%?uor*=004j(0~8y5%tz+LY8^S! z4FCW@1XF_$=0NMA9Tw}X9{vva3mhwz-}bs70P&C$1)o&VCDBP+=cfgll;H2OK(<6y ztKbEY00;pF1;zxi(W9PD1Cmw@8W2zb5C-I80386*2)6ynd>4oU7+?|w1IG${W x z3vf;oYrP~#h5!Npp-%$EOHtElJF=In`@<*#fYbl@i5meI9Jfq_Z(sl*5I99%ki8f$ zM8xQ(J^%p#7#+rxI(Fl_x$A>Z&4bzrV1_dVkQWuGSw=9CU_XF>#s~-MPP{FNpZSnP zqw;`l7)QzgCPSBAFad>t+W<6EMVe{}QdEo70WAOl0OpYZ2gY`~;J~2HedRiUK$m0D=WzjsPw*AV{L6N=@(p8DH8dhz_!z%nwe9F$EK(e$WBio)&e_T!AVT zS_uKD!?hMH{Ony%ssDgXJ`X^kBET%j5B$YXSH7gB&J0jU`2bme%1lN5-M{n(_R8>b z1z?BZX~`wlmd1bn>@NtGAN0w#=* z(y0}lL-03oH#(6V+9cxx0%_r2gaUvI7^BHP`gkMTsM8iwpEiI?OjH&(Kmfc5Lf!D^Zy_V^}S@{kIlS+9Q*!R|L#EVn^xri|Atcx@f~1pn$sACOoKn#qcMm4X7L0|KT5WjmmoSBCs|Mz|WZ{Ge4Z!jkw v6VJeQKmY&%K>%(hhz73!crX9}0YLyciJ}3kz#EJJ00BV&6+&o$YVZc*{{pw` diff --git a/samples/h264SampleFrames/frame-1365.h264 b/samples/h264SampleFrames/frame-1365.h264 index 97e57809aea00479461b53da2f59092857ddd586..1fe4fd425733134888c14e8e31b73e96044964df 100644 GIT binary patch literal 1494 zcmV;{1u6Of0003AFaQ7nL7TuDyakbe5D~WzoHdMx)&dWjgf;-&elo=l!TQ6nJ$eEB;DC_GX*oRs-wDnPNNhM> zs51+73qUUyoQ$E?1F=cTlar5t((r1SC+3jmS|5gr01H*H z3IT(DqgHx8nYFyGM|CGrwIu{_dOwBsh0`tBL!d00aPim;e|M6D5tYp&PN7(G4up*qA&On zK%fN>CkucDfnX2?j0kW*xbnQ{#<+mX1Oos7fHU>9)c^qjzys{U1py!&Z{t~Tw2yt< zJ2FsiRd@v;nM~(^BhCtSmBb(YC>R!qxEXHItp>rum;4FfNCG$#1;A(%3=h{sDhOd$#k?L=cw6&w=8z71BY^&*UECZ7#c| zp1;Q8IAa5=92IO+05F#>5HLKazAG^4!u&A<4L@3&BiT6F;PIe-F(3-G@qx!jkmIo$?jYFp4hScTGTVxO_&)#uKu87&iyiR6 zt|}G!AcW3zy8kjzSRI$SYv5=B$5uuL zm^c#>;>!}*=;$1MfB=9Pb*zvu-C&La)T(1(nLr{D006-3y08|0U8RKjM z!pe#O00RJl%sf=>|KE}T0wjh22slyI3y2y64g?4gK$t54IL}Li-&96*?Tj&`;m#e*Z=K+-F))L>;Lz$1%AQAje&}U z<^TVn>IN-x0rKenr~Q9m7|F(aL--gXaZ5tZ14hOQh}yfapZ9^mk>bLk zBmckuAdQKlysvT%Mk9}Yz3S)s;Bx%GvVo%^#E5Mb>?Ys;>7#bcuPNNC|NHPEfi&^> wkK#W7oxlJ90YLz6Ch!KY0C+F}00BV&If=XhtH2wK0003&02M-S0BZ0C*%cmM(c9-vU1Xpa2L01gP0CbVoa*i%J;4GgwEZ!!F!xI{U%^5WqlF&u%nCLHSsBlmK9( zCqbh;00A;j-EeJyAOipld;=YJnbTl2dIxX71}_N$0NRnT6uriPPY$`dz!S^+0tOcf z3V_@x*x?p zJD&fj(_+=|Mi2nJcuA^!PL~8;y?gNvgYkv<6v%;0P6=8|;93N5Bp5P;4DbM9hwzN8 zIh;Ou6g2h=@I|@eCW5Oy^*m#RkJz99AZ!2v2VIsx0KhUWj!ysq0fE;&nv4ti5J$w| z5(%;}fdPT}=tD@hA*MI??O+ug00aat3;`%E00f}M%J+eSc*h2nML;4HPWQ#tpfzv+ z2m#1Q01)EX03~jNP@9_<{=ggpA=)jE7apCx`+&d#slZ@~PZ-*LnBkS0swFdJ+rdkMK4Vs z?*Iq_0<_#XCg0|>Ep!-4=%Knw6*wFmP5fjkKSM*={&4GRn(t_4grp@;sq;|(=CkQjgX zeg{q5hYCVJPXs$+mTjTmd~1* z08Iu%ujGF$|M~g|=N>ItPE9TU{{36vEMPpEOk4@80|*oeU_eRoW*`608UxW$olP76 zPY8G@8#?m!J-@F5K|Ye%ES3KL0`UmiMCWe5(~Lg7Klb1TS6TIr@qeL-ySM)7+BUWx4IH_{e`oq*88qAsrE=l$St zZ1ckAkN*Gof;KjtdfbD5*2v?{`uD33`@rS-e_}uu8HFODv{KY>zyHuav6S<1bvrvh z{tOAHjl_Qu_yq0%00BV&ZYGchuK;*30003&06B@I0jt0pi~s-uK>!s(X#i^Q2IJv) B#%cfn diff --git a/samples/h264SampleFrames/frame-1366.h264 b/samples/h264SampleFrames/frame-1366.h264 index f3feedce5452acd565a158d96d22e9d2b88b848c..184e6a6788ad3cdb2ede13c8bc0e541340292fef 100644 GIT binary patch literal 1920 zcmV-`2Y>hg0003AFaQ7nL7U(jyaj+xFaQt$1Ob2?Jh5WM%a<-#v0~-RfByg;g8%^l z<}3gW0wM8f+(q?zZurQUo>~=v25q;>ZgK>p8UVA%Z((C#30220-;r4W2mk~GNV(O3 zETSRJtbhPO6aW||RY22Z4fnhN0RT7vr5)1%R@J^(8MA-^0OIV`Ryn0We3UMBQ~$Ww zxoeOC44oWOU;AJ|nKy!vTawrRz8E)PPz%kc1G589&#NN<0RSKXp%bDf+9G*)KPqMW z2!;xB2pPaogEav=W(6wi4#jW&4}bybvLk9vya9mZB;h%G1=|0uNFr%isW%Vy;t1qp9j)I*}%f0ywM*WWWGGFHQjhQj6t^|7bTHU;rQj zWgE zfOwq6h%=5yz!i{0Zvcm&yUG}7yUJXOg!ljh7($>eaZCNNG;#uCg%8#QOaKA_^{J2v zEivoh6c7R5gFY$!7q)I^*!%vl4Cnv?0ols19A2Zh-T(lAXB}am|4YMx?3b3X<3NJF z4Rvu`G)<@XV^vbC|NWXFxsF6}65wI!lK}IeMWW`n`|k)Bw4d_%#6l;SgFka4VqAr1 zWDdcC{8V~lsz3EK@4)x;0XiBQ&Hw@c0RQ;d*ZZ}BICzvR%+uEE^Z;vwed1Y9Xif(t zR0W4ccUY{=AAY)l?>G>*J_t2iAf&9xaLRe>^MPAvNLo5T*JvBA&G?o&fLD9~pb!Et zA!Z*DL&@Sy#ub(aix8bBf71MW0)&ynJ~Iu){d;fP)u+So00aPlABBhe!usJ97PS{2 z!*2t`1v7(*;n9jDT>~5hval=)y0QO#KY%UO00U&89AJ~UQMhHRG-ikix(uf{0R=&^ z0V5o`7~*7YUiSb48`Ko2y4h$)Kmk_3A%FNV{78UC5*biX?Lr7+`LPMNu2JuC2L2#~ zjz)Yg;>N4<@h}0t1FPs92oEENu_AD8!~g^i002Ql^Z*17068B2Q~(9GzySvdI)QNm zAoz#^iJ%Y*1kpjzolgb?68?ceZVbTyMgSKG7V!gbv$bwH-T_RIJNRe2AhdzIdB_HU zVvV{C76Cv-xs#aEJj~2B1k~@ODCNlj1A>qc9&k6*8XuG$6_hw)ln@0LDYHNUVbrN6 zZ~M%M#^^$4JCUEmN!dsM53Um%04y!Bzz_*aHwqoHMk)eC+yDPuXnW{BUk9K_$zb4l zc!rJz7g}xvm#GQ+!zTa%1Tq^SNC%SkSJePeFNfj=VT*Fk6Qy2Fwv`M35C8-KxByjw zUyx8wI_XiZB!31k002M;0|78QAE;#@&>_@eJRCg4!2AV1sXM&UG z=4FI@0Kfo1gxvyo0|6`utfwNJpvV6P9bpk+0(xQaRT?!-L^{Y0-UlIohtL`z6rdFI z^klF+HoU+H9xzBa`POy-0RXF{0o%R-L*;+~AOOGt%_2bX0Rij)^LTt9yEZi(OFVY6 z2e)Bod;ktdv;iN!=+{zHyd20c;fVkXnmnKh3Qa|LZbF%=9LR{42Nmzot|7D3af?HX zG(ung;P46}a3FS*>Q)GrxBvkFU?7yYqk$VxBh;!R9`FN2Il>wOFZ7^ZPn-+@93KFK zp@%|z@s-&X3V&DzbN~SW%;i`LD^Z*80H|bW+m-yjR=8(@`v44drJ#Z{hioxAB(Urx z;4R+3o=J=EFaYTQKLR-Zl}IFIaR-KU*p)c?Z-ZWdECA17?L4@6)%*Y-0&pXglXl3x zd;It|(zn_-_SlHd2@E>c*iZb+{_mlq8ef&W z|Iz?Z^>7F^iB6wqjIBU&A;?a46sZ6PhFONghOLO*_szS#VwU|dDm2bf4*$JkghCvaB1Omh#_4z5%Pi8;k$|0YLy2LT`X- G@CM_)qb02X literal 1435 zcmV;M1!VdF0003AFaQ7nL7HG1yaj+xKmb4l3TcKIX{MTCh8k&~|G)yA00IG@bN~SW za1sm~Mn*N8B6oW*99?jP02~4UWsm`<)-bKWIOqoEk>l_HDgXikfCmjq36bEV>{oVU z;20r-NV34QZaY)i0S5j72Nk0ANg!jYZ>Gw2>xf?`+!}fEWX_TY|)%2nGx+ zNv_ZcU@9`@fFa(ng_XmbWE)Pt4_-|KgjB(lkN;o@0Kfp>Ms9+M&9ljhNNh0&r}Fr* z5VU+?$P>T-AQC2V;=iHWo#)=)uifo@09#%}4!# z^Xvaf&vg*Z|K!CKoPF9eT|X4EbQI0GjrIZgNg>Huz5Enac~ zahUMz*kN$ao9DTL8=_(Zu$V z?0bFW!u-$2N<0#0%u3=3k$+c$GE9~)03gEzcIqmq`_&5(x4=38Dmq{RV;4e++V`|T z1OPxiq_24yYJVa7?EnBkPzqFz$jo~dcxu(B*a1!+uu{B%`eC&=3;;U@7h!x?WCHZa zMZkFSj0eRzcor9{Klir*@CZ2M$XthmI6solxD=!5d{jMQ25j?y01yQ!Kmb4h0Yn$o z8wbZEkK5Ax@zTsQ!OOLjbxdNL;OGYd4U+=-0Yz)x;J}BM96(c+yM-8jHpr|xis_tU~V02rzepnL;rs827G}tG9RyA5&jHM zK!jhwiUfcpfk0qHBLE$nmDcZg7uIeQpXq>5Z!W*QA|eISm|9Y-Td+o5p;6(yJgM*)|!|wY)Xub#*Tn1ni(N`3V<`|cuKVi$@MFK`a z0!|P$lSoo7_8b0I&}ha_cMdFOvAyWV zpg-0Bpc6|9PO(*jZqyq*E4&FHP6&k#fC17J00amC0#aB9unx6Q05A=sf4~R1)R@e# zx_o2cgHpub^z2n1k=L2XtD$VR2v~=dw?qe50wAig2t(L4&j*m9-px(Ju{q+ z|78#$i>Bm$xmyD%G>khJVD!s(X@F|*2IE1zcoF~r diff --git a/samples/h264SampleFrames/frame-1367.h264 b/samples/h264SampleFrames/frame-1367.h264 index 07e792a32aafa4b39e6dd60b71b464dc0fc2ba1a..760b3298763debfc42cbb61e2ce444a34cffe442 100644 GIT binary patch literal 1581 zcmW+%e^gTi82#Sc+fOzaW8#1TPXrx^1i7P-EH+X^Hv}txq*xOH0Z9kqaT>V?Oa}=# z3~-3)`ax=Gk|7|ZypaM@<_t^}$w}fFnmQESv<)Kv`R+OQJKz1|-gE8;00=X3YRC?O z@6Xf)va}ohSb_os z?r5cP4R78j1A!}zDS0Eqtxvbafk&1KxICm>c2WLse-lHpyiQ~OZKj!|iZ^ZvJEZk% zS}3Ka^aj!St1AXGA-n`NN#pBrOBnyBtuC^XAJ$j;QPb73Tj(#FUd_&a`v?Fb4G+L% zst3o0o3nIh$q0JRk5gncFyNdw;X#15$)>ZxcZNUfr*p@TstXR2mbu-^PGicP>QNG( zdHGTw!Gh_VKX`?ETxd_2_HAenplhbzRw!u|gaS@)bApkUY$565Cy#d=EdlwMVefq_ zg>1MRx=6HBGc3(^;K>Y*^~#xld><5)s-w}KlMomVvy4W05LF-v$#a0`zWjF2V{^Wa z0}3)ebMh-gl8(u4aGAi&sd1&dRTHQ5sRT%cfMLX9TWJy}G)*m@aYMNfgiLf>q26kj z+(%OQDOK6|my1!#sB?u#Zn?-uYuQC9+%J=j0+sjV!*&(jl)P?j*#sd?{2dp@gtdwC zRy#q#ryuRE_c~sBT>Ta-nY3S{L~M|Wio-%*ocU1cN3fO^y|t>DM)<5`_>)oQ?b%8Z z*E?o)R%W7$Omtx&w>~oaV%u-Towp#7w01!&UNHBYzTyQ{9G2l!f92xByiL7B9g~l3 z7)He*-FYS*}cC@@G@c1fKkEkL>`exqNvZurfF$I}1o>CB!Y-+;+&j*wxA*K)+ zu-~#q0(Tl9Fw|+GcCL;y`?yE@&U$y~B(iHMyT5?V2yrr%i6~<}kINvDAksfbCA4&o z6^ziuzk$`yv#B%`)AW)vk z!eVrCFA35ZJ|q067I0JLe@gix#B?kA8nqvj(nVF)%3FnQQTjQfl@wNJ7&&H2?=4|R zQi)AMM`VcqJv0*(GKq}HutgUcIF@vZ%4eOA;?e1;;Mvef?H#|^)~HV3FCSR%gczVE zAb;zywWh%Lp&6IiV2Gq6!vzn^pIj1c&-v1ZiPp=P58~d;KdWY!MRkd!dCLl)GgakoI#Y?RnLc`7Kw$-AI>KZK+nT>7Wrd-`$K=n0)UvSCIou2L?q9B8~^seh}4+&Vz!F%9}PSZt+_emb?3bCAHR8(B0HeO(KTk~}- zyoA!gSG&3m!0>uM6S!}eEV%R3k>pPM&P}>E?%q-c-&44(YhTKUL+9YKFCE*vEMhcP zu)EBMor`E`rC+Hclr}-k1WzIUw&k!u>*3xKJ6l9?Z`g5g*NleX9nX6FPDoi`jFrpv zRrR+`C%XB(Gi&=A)0*~As=0fFX`#gjK5*Mu&5qMV)+As8X2#quEe%_Q=ukEjPrwH# zUVRyYJ5TO-`8Dpw2*OmCQ%|)t{JLgr@k0CZTn|TcjX8Mvy08~#H$BOm(KczXxVh(W zN6YA=R^i5G^FLs%I@8Z_3nlTsntr{tOfh9}P=LAw~3+RY<2;Zw# zyZw;RlP1wTYYf`#ovPh9|IDC&&Cqp=nkUuvvi_>QmqFP*FO#y~k`y}|x}^X2KWv#r d&`yK;^)rB&G9&Um=~w=GGc7&~a%{A}{{v~{g~b2> literal 1184 zcmV;R1Yi3A0003AFaQ7nL7IRXyakisNeBc7MXtP9>*=U3cm#~M2lT_?pnxC%ir{kF z2oT$xLG+)O!HA&HaCj>P!9j!o2dvs6jDI(91O+%0u4}9pA!MC*{lEnL9Gcb!5;~Fo zmjCww*8l+p0aAbgko@_=tt1%#-T($529X$t{1%Fh@)GB?nghZhWDYnaQvT+|i(qFG zC+aiM0D#BT$dD%Oscm7o2Z1rssLvjDunD33wWe+CjHYKz|RA(#9Jpg;pS76E5q5CK>KAUJ(wB(b`6 zSI_}=)Lur&@8|$nzCf!(B+L!IfxPoJ8Q=j3SpWm!M}`9a(zqoPm{t4$0RW?b3~7)^ zEDUl2J!3@idz_}Fv{}{dy;Wz*Y z5baa|1PXuvKsG>Fd;sCG#wDT^w}`0Q3UB~Jmxcfl0unM*0nik705E&f0RRy0!NZ6f z7i{pMuzUfG#L`6mX$24yzkS*SJ=QEwA`K!Jt+ro)63ft6hBsz|X$eT3a0mj1v-D!| zTA8>Gfmi}{;0jg%+? zn_6|^9smIVD3^RxxOcixdPL#GpCYUAo z0ANF&9-RgmF&8}PW)x1IAb>bD&j1$wJCBCLXcdRaUI2jN$s8ou+q6Oyjhgz;k{?m}qDVOLxO0%m~20NUFB88e@PkU4M=kP<+E1dt>O zEC5}(rY+9T-DJGrPzVk1G_E6aBtJX4Dh3e;W_LY*gjyN;3mHl54$vq80GRsx8zv$- ztbj>}fy4>|3C!%E6avVhB!B|o0G2>K|Mv!>zd|3>dO9f_QN_Rf7=QKop3RxC!^_}F z0yjE|G>eD!>U+Pd<=r{}LEPOwxq*P1j<3gni4a30#v^((RH*P1Oa0bCqp5%;H>sHx zHM=RX9Y0uq*zW8Z2?z`rlT<&);VUdv(6CqMiTyx-`>eXqBquGERF@eMR-+Xmx zg2gZG`WtP)aDt;~I{*&QpbA7iUnzeG2n0b8;6x+f0_fqWjn--pz4!p_J|z0s5@Qec)0003&0B$Cr2Co2kFaQ7nK>#_4r~#|M8;k$|0YLy2LTUhN@CM`MgX*RL diff --git a/samples/h264SampleFrames/frame-1368.h264 b/samples/h264SampleFrames/frame-1368.h264 index e396e35d05f458c154e99548c5cdbfc1ad58e6fe..91f510ecbb1593e45f9601c6be411ec0b2b08061 100644 GIT binary patch literal 1631 zcmW+%Yfw`M8vX9Qc|k%F0)!9{F9?{G2vI>m5iSo=9vVucwl+%=@PR0T7Am6RO9 zFvS#9f>KbL3VjHfE=qW81$70*br!5nTtKZaqN@cLFq`e4^XHtI@0&Ac&H(_#Mq-7C zI$YRA4T?xrIP0OGDIT~vpD_cHEu5GSHSZ`cgB*W(=+e%ztFh6iEe!IQlL^L)34!>i zHrL5BK(Eh&zu9$7b;EJ*0}k2Ebrx?L4Nas%(_*uy>fQFm!A)$3$-uUt z(>;+~<0(3>*%mtIJJ|&^NPI2~NUv;G({{OCbJB}-Naj?Xr+3?LRKUbINZQXP#a{~v zD|uYi+rOloKG)MxuHKyp3>rEjhC4^9{lTE2{ll`K?WkNWtMWsPtZ%E%2=budu$!JRU8S_fIM;o^NWAUkb~m``t|7Z zvGQLD`yz8AP}#9D#|n+YrWknzqvwM*vo}Ds>7?c>>z_M7NcUrrJQV>Rd4RH6;k|z; z_PNv2-hkf}-6|DS2%r{FzEwHki!(h1m)2J8$@(-zTO0kRVQ1OhSi20|>+5h`m}^lf zY69F1P>M_k3?`@p%;U!otbgms_MJ7bX!m66ySlS5D*+@94EAQLI2bjJ-2U&A3-?JN zK93@a3a`-#M6yxLA%Sa46?$))8V%M_ zPh>b8tatf|y4AX!hqa~KRJ=NX;8gCR+!B4%7u!bnnzxI5YHMDj?%zL|7yt)>qf{YN zo2H9|&yw<)=U3S#51*~Loy{aG9Z>EN$$*$=Guo{g(@~$hK3)*Cs(4@qODv zwBPtofEFl73xPH3;_SWtP+}ZXfDDOfkn7^a+ zc5@hhacgjx3q~hI!$g9%vRG4b{UeLvPwa96Y<_-gL$~6N5r6pmyyC-QhRItZDlmMu zY+->IST$#88FoL`4pPL+J$fAG0@tk(ECSv|8c#kk$Y}XeN7%x0#+vJE|5m+gB*@44 z84DISEYIOKRJa0H_>ZL>)V+_OnJK4_#=lE z4fRU!*aN8DRyl1&to>+4!nb+JM=e)Jb--m|P_a2OflSI%Sc&&$%y>L z{O(Lp0?t{5nmMk08~Rn){66PO5>X#W;~DCgk+1YSZq*~qwQ1o=pLlJcL92E$PROqNyDv}hAcz1Xa966ac#{RoGahjtQAD-|y<9jylK>Pb z=)F;vn;knC7wDqwE1;OKDJ=L91!xNM6;ZNq?+|(eCmNZTF5E2jS0vA7WM4j4$tn1h zKAKEMRjBtkTNcnl>JELpmpNvyv8kugUjsFj_7I)$R literal 1412 zcmV-~1$+7c0003AFaQ7nL7Jc%yahiN6kGrl$^1>|<%R$ZFNKhqAwJYljwYU6m2chB z=HSIVNEd}*0DyslXA`VUp&-8<6W!;)7$_Pt?wEU5ZV0DnC}sc^X@YVd5MFZKfHb^- zAla##z(4>X2Y;@>0s#74b9N7h@FYv;0)R{yLnZ_Re1QN43a~58Gn*P0gFiZ6jsOKE zgZ>WGJNCN&Tma#~00;yCIUriTsRBm}3p6h`yu{@Zd`kk0udfn+fB+BzP~!m<<*IlW zULk@=6DGZxfGDJXAVWxKX$)va8?Z1?)BrG}0$f=RSJ)oc zH0Ou_2mnyJw?BbP8h*Km09FV804N9w^_aC(ip7rxG4L{gfoi@3S0%w%H5^#A(#9}6!4A!7m$W{TQ^`Jf$Nr10EWxJLP!Q737Z8{05Jj= z02K=;RJh6{*Ej$bcmN0mesBN~1_p-25>pyge_kGK7aRXL(Z*v627_wnQWLj<6ut&< zC;_}20hk=H@W>1Sf*>qMNFFV3xBvnL99dad0-+D?ocE{Jb~LI~rkH?G0RLV|6anNA zelh;~&Wr#A1ONa)hyVlvLD-FgrnAQYMghtXK*XeEU89UsfA@d^@Eiaz8^V(xBtPEK zNIQS##-fNtQSn}#n+g4Pd76zABm2oB5@sSX7>wQ@f?xpP0j!}9tDpk|NtT;{kA?$! z;8&hMEV{|w0H6*MuKOZ{W=3Ex1ff(r90aUqNdN$Vh#)+O9#q#jVgVulaKc|Bzyi#w z0N?`v6J-)`cvJBS!J4ilF><07q+*xg;AGrNLZW7tDqH{Xezc7;G-6dn^vnPR7{riNf>Qj=D!$9?B?Sd@zIrAn(KZBIO86|MmXnVq8)RLUV~n2oXRCX^t8axJ_j`eLwuXeR}MvSELDyZ`|JkX$SW6B9_W?`*A#-*|v9 zpa38cmJJ6^kHFmoBr78R&;SGg{{S!p071;!m!%T8Hb1!#1UP^J!bBfB7CZ*^;4FZI zA{EQvPX`zt>>UpaL_-^J*9V~RZHX_}`_=q#0|56n4JzmA6_SJx2<;9=BrC>w;V^_d zd&V%4ydsI80j$=yf^!t_{|N*E$P&T8M}gCTFeGyOObE?L33tFGcMdI)n4)wc^7^7> z`gfp>$B$RH02=hY*6siUOf=|~XP@TS`^@$;Gkw%ahEWcpJQDj#`v3j^{$M7a7vMtz zK?Y_A`~Yfq)|e@634=HGBuPXF5D30yXc5Aj`P>19ezn`XE z>0Sg7VBiDk_an=5O&(3e@%6s`P+1Rrg8=Nn0003&0B$Cz2Co2kFaQ7nK>#_4ssXFO S8;k$|0YLy2LTZ3&@CM^+hdW{b diff --git a/samples/h264SampleFrames/frame-1369.h264 b/samples/h264SampleFrames/frame-1369.h264 index 74a9e3f80df63a54fca15302c5ab0713b92fd1d0..70a9f0b77019d91740822401ae12ee54fa594e32 100644 GIT binary patch literal 1798 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 b0YLyciL3#uz#EJJ00BV&6+&wOYVZc*-(T@$ diff --git a/samples/h264SampleFrames/frame-1370.h264 b/samples/h264SampleFrames/frame-1370.h264 index c7ed6b7a27b5eed3bfc3c1ca846e11e479dee3db..97cc9b2d986a6259954e8a5a460a5095cd03731e 100644 GIT binary patch literal 1970 zcmW-iX&{t~9>)LgJ1aB8i&0}typ}8{G0I_-GO|a?5^+=`C2mONQcQVglExOYBq>I8 zwcS)sbxIjc$wks~D{-PlR1T9{C;Oc4`SN^uK0eD201yrS4{@syahoVkZqeZxU(D`* z2AZ;6M|Z!z$H|2=K-UFN)GmUZPhAu#^gM`mVe$-Td>SiAmOj6&5S*|!|@SE`v06ve%1Mj4Xf`wN8O4_4o1rx}~fX(o5 zc3j%R_ohqFKJS--KkyCKS!*&%1g07z`V%H+vNbs#&G?_)CCS99Rp@9|B}?|GrwxL+@L=45MCT?v78&IM-;Zhwd69V zlHTyLKaf@s09|vj?6o3Z*H>>^y;mRZXH_c_&iXF$vh-@Pye^V9g+!`hscZFC0|#icpW}olpS(^6{90eOaPHYMKS_e=Zx5`V)nf*kP0qH zb&{8}1TRqIbG|;c9)(SS1+G4D{QE{;)UE$IrBhKMsfJ?Y)wj0%Sflc@5aajQ9y-C{ zyan(vx=YdGQw?2x67<$U}qL`1PHZg@UFCa2>sFz(@@45+d{Bb5#^O?sRT(dR|jfYDv(<0mGBh#-%C~y@C@V z6S=joT;(!WRG`M(mWUDUD+&#w3&nmqv7OQU!R|XCLf+6RH$NNQtLFA&tWml8ikzV5 zdCk5DvLA_5;WF>d7c=RC=`5rIN39C)dpK2vBu=mF=ut(HS#=7pIETDic6A>)s0p$(tqwNiurl3zsRz#Rsvg@ z*ZwoDFjUe?WosI5H}iWni_?J)N}D(BIhQNuTbaPhT2?taz{w=K_V>+0S~iYp=XZ@1 zA%%zEZ>H^jWFs;ynxc*oB_6xfY9iUK#A8nPv%JiXL>QG(jAjT ztVxTM*I?1m%ms~Szqj#K}y{t1I8_(QAh|Ldtn1fW~P zMyOcClphu~v-QW?owgAeh}Qaa7t4O*X!J%z5M}Rus8rhv&e0Gxp8q&~3=UV{YUhY< zwMXW7q>HFNf#FwjcK!~eYa*1a`RgG!J*Vs+A47j375ZV!2go^?~HeD=uQjuG^_#FYbvmQ7L zPAnhBungb&;gXb7bKNLYzr*Z<`t0lAjsYM8bG_;MQ6<-+>N}l@c!g5E&ALw5@mHjI zV6wOLA>LiOD5|tz2`6R03ohAn6A%AJk*wEo?Jq~e*BO_Y#>r=6I$F6x`2rn>@nzx$ zQ~-h@6MaXs+`c4`?oEob12qF}eOuC!>=IK6?rXVWx zM)k|awZ6~xaMh#bVw}~f#S;>RCoN!V9p{n=aD!*?T*b&|NUq_Bj}H-rh|+ubYVQW^ z>e5WP`y5l(!FdiGKbAetNr`k8YgB)}{06IP0}dpC|JW0i!S3iUPwQ?9+3{q1A4<4o z(>{m%B@SCV3lyjVd4hEw*8Voq@SXq6AAU688EwP;jO9gX4_kZe_w?~U@lz!;on7$( z0qPDFnXW-fNG#%2lsY!&W5XK2vorK@QIv}RyfHhi;HtD(8KIRO%|!wA1E>g5gfH`* z_(|k{Ir`GvH%QJ{=T5#kW!l#I=g&=4;|Srq*6B#$Hp*I2<(a1xb}#^CDyEgn33f8y zP|QqinfdB_8w;LetlUaa!-NO3WvPkGpxusXN9<#F#Z-E$5B^9G1!>UhBjkihqq@NP z<1Z$UN);ow`!CUmKs^bmu_~y+Z(3i*dvON9p{u`{WWM n)c`%^{}6^mi*o8E*!wq;!8!X3a$aGW_qU_JDvtPviu&#^cz7wM literal 1629 zcmV-j2BP@@0003AFaQ7nL7Lziyag{oVbbi4}207Swj+F3OFS` ztPKj45?01senBuZ~ujw%1(0Prb* zdWVPtl@7?H=cf+<0Rb^U*+{to?Yqdq=lCDMVi9fKCdLG+eo{&Mf*I<;`CTcQ6acQM zE`R&Nqf9g-t?a3>=ZsMX9|Q;h1OyG;fxp+^&4L}D4 zFDxiOz7WVT9zdn-*g;+^u+cUjVSxA&Fl!SD>9Bd&a?}9LxJ<+61T8~>^g?z*IR*3?~y|e1Fe*paF0zP@p(< zMs|=6_IMNuq+xO3QUNW(kde2<00IC2;K6*N#d6l`UfcyX-zyLrP z4k4S}^IhYSPrNVyATR+0tPvqvKR=?MzJvDw3t%G-CQ~7%={GzC6p;=o(`MCp;swNZ zv15SF2nIj_0(FkUL$6qW36_CCz$DmKh+=Cvs|%B3&oc&p&JU@;APUS0VGq(qup*(q zzzG(hi9QVg6akOWu?-SD0098e&p-eO2OL~sf-@E%%x!dJumS*%NP|R(BC84C42&NE zKmZT~2}!b`=#F=17F02SW}uE-Gi-xl)!q;Qh5`bfe}SSR4@*Pb-~$FcnuBQ1002yp z{=N;E0st@ohrlt{X`M0yN1%560AlcvU>kBa0#~@m3E|f_SOOmj?4!nI00icPaM;A} z`Miv%6?fM=mW;jJLdMw#m{8x#55X#$g9|tr6>0Vz%); zDTVk-02j%T009NS01!ZX!E~_z0D*h-fB+E4009)jcpCHzfB=9U5#9iR01#vV4zr-X zfXHzffsGCuP+Txx4fQoCe_%j^;J76f07DqVLQ_Dq#zIMd@Z5vY0KrKB{Ghw3768|P zL?{hf0y`8+0V2bD9V>}O-_{$WGz|I`UiM3{>TU!H}BB8MKr>Ij!S>mbn&eQy}yVO1Oe1PuTH zK{E|m38GN`RzGWbfG`6n5FnTo_5yC}Z_{1|_86L=g)7#$u{J{7_qf zwT&P`)}*MA@A}A`WR7}2|K|(^d%=Qv$(u+iQ7``i!&ftjJBgTk_W>WU0{{aSh){5x zgn#{^7_<1abHL>dzwGh=s#O>U{2=rD#>+{k=jHG&gMwX0bn%yh7oHwI8R;Vbtoy%y z@dymB04@e}j0-~~4S3pbLcKLvrrkLgpqRog&~uGd8wc%(hxCXBPcrX9} b0YLyciLL>wz#EJJ00BV&6+&x(YVZc*mNSiU diff --git a/samples/h264SampleFrames/frame-1371.h264 b/samples/h264SampleFrames/frame-1371.h264 index 1df5afab50d1993f7055f9f6c528fe27e47fb6b5..4c6ceb17c68f30352324b52b821244bf793a7cda 100644 GIT binary patch literal 2426 zcmW+&eIV0$1ONVh`)y{HZLFG?W?u3#IwOTrHgApU5~}6IR8E{~MCPUZhP*sfqprMN z>4k_g@|N?mc_|91l#VdD>*^k93r9!xckI8Z8HU+A0}pC3m+o?L9tetdQ`5}b4JT)UANUqvrrTb;rihpgmvNz zl2^YF@(K1irV%;UCZvGP_nVyMX7nAkZku8NvXRqW07ER?QJ0ymbr5!pe5Dz9M|JOM=j_Mi>xTfBBbU9-W zK9z3=WC&cvot?0Jzp&wc;?p+imcj3i+{&qy{g-Ogy*Xo37fB(d;bMayyD#Yo-{94W zJIi{_rtMEc0zYOz!zx|s>l5a=44ws2;MSqfb1Vh?OgZ|RE$uM3D-V8TQni?f&16jf zhPF-O9a6kU#`;CKS>6GIaD;xHZ}idpXevz zQhhr4U^10W7Pcy;7z<6;Zj9kH`U6n6NeeNLDY;l}Od7v_I0#|@1}+K%BWqs86Q0Ft zIS;cQI|rIM7b!yw!T|)(*>b?UaNQD0k;aVAXRnXa;jq}*too4HZ)eB)@|RN1kv+=w z4_)|lR*pEWvDx%|8pAV=f1pyUaH^yMJV0su#xsvUmp)VMDpX+8`i;(H^@q1fwgbH3 zn0HAIbH^vTu>8P7HV%}A($M34MVBh2MlFm{dmRlij)X@i+G)9Pp zS9ZlAq}9kUAvLz~NS^1i;I`K(D-m^9^(2N}$*E`Hm`SOT=l0mN~C?=Ym2$#`wQgQ#=VxDD=_mk-&tz&bw@qJs|psZt~Y z+JW`w>vG;1DXB@*AOfW89V0w}?IcF07LUS!Vq?;*SrhVcaXJ8)%o6z5yjt5@cC%9k zKL+@*xNTBAMq1nfKBt0!UuG8RCP!yq7vvg0IlGdk7+5m??6 z9j{+fny>)_*3DQ^jHMSd4axu&Aeay~*n+EmU;2_HI3b1hMW|h|Pvijv%igeLfWnw@ zM}M_WW5t~)TM#+`5WwL<(q|*Fy*^EERA(On7#QwwSxEGv;epNZ#g5Y@oo+0^$K^pr z0zlrWOq!u^v$1ZvfM^Q442ctgw%FowWD>(BdEUzOA|J1vPk#UyfH6_r*$s8^y-_fx6#`M6BODqJ59aZ8#Y!Ux0IA8W_+do8;AGxx?n+cyvaWwb!z9yYyi`ch4 zh?-tchg>F(N5t%q2}vb|X$|k@DYlxFgy!d~9{*x$y-b7@x2E`j!Q`+BdfTui21UR8Xv``}wrY-Cf(VLbd!( zY4OCXy?HjbfryCV$xx25#h#)2V3h5kJGCKw=%_I3WSkc830ee z;~&{9$O{{AnS2X~(&ci&?zOK<-aGG&+qim%ujReJ#;OwD*nevmu}f#(nfpB?P-7x) zT{+2$`9Se;bfcTD)UVMYARy`X8{}@S%l4|_$QDUi&&FTb>>jWqUn~I4H*w@n#){M;J-SF5wInw&<$PueVGv!bYG!uh71#!EePR2tHsgr=5#HiE zK0%%|An^X-Tfh3Xq=Z_4XrO?jF$EBH5Wh|C0z?kKoCyyqbKrTA;7*WmTw zeTZ<)h&DIlJIk6Xp+tHyMW21s>iFa_&%S9&*5Rs$8|_R+Uumb8qNzJQezT?T@~rC9 zU-2WZB({GgL{icImf`AjQAAfvm&k3#i1ck%a5;Flk6J4Jl0%Z(jE>`BRc-K+`F)IMh-w)ihLlut2Zh&8$)m;P zP&lI3dLIk(f-|1lg&9WEqP`X;&du2u034kEdYk9IlF9a8ni;kZtn9+|rgj;7T$~|Z zFy>);d*k!EAw6PJlqQwqe>*b9zIG9Hjmhe9dTMeC8;0x+tou{dHpU`G|AVF}!$tUE zebs#WVb?9=Kj&06OV_ct!;-#BQf|{>lIBmVP0md|6~3h!#HY!^GX)ct)s3PROEZkq z%rWB912XU3`VN|+t4%=FOBA}yD>vJTMvoM;-Wy`3Gj8eeSvC&rXcv6>!WfgDRwY+5a-DUBW@Q0yp_Tu66}) literal 2104 zcmV-82*>vT0003AFaQ7nL7M;?ybA$1fB--Mfa2O|rrT|{nrXJ$|Na0D9AgYPh-JO) z0>okq+~51S-QiKt0W1Oq69~LW+a#L%h0@pn2m%EE-~c>iH2?O-mbPKlv(o2x_5bvO5(`Pj&x#TIaR!4@ zpr>YV6C%V0{sAwd6)3;>km;ZR;ABt)m~hu0cW0)T!T80)=hcb@g1hi59ST2427d+> z#$U^hGvhDRb0&tMY z!63r;00IC20{|c%#DZ;5@1CF(-jIW5zyJ^e2m!nVW>{l%>xcT0q#e8f0{}k|z*}=@ zK|wU`kV)VGX8-{KkixW@l_#9Az@otY#y0q-b|0A31{&d`w$XeRSgFGh2jCNw1P&BQ zKaLeS;owGCw7hh@d#-8cMBD^AAYfq99V>V#MV>xI7}@ zH0S=K+i5#%-hcyu0D$56;VBF2giVlnA(#Lv*ixO07tw}2>S$?-zyKgR03VCkXP+Ps zQBDj()8^hy7j%#W4lkTKi|HK#Ln{Ud0pYs9cqa|HpeL|~4HDI4c3kKYnw&QKxnz!t!&Bwip00+L}g z5HDIb2<}cO&>uO%9t3viU9?GW{2zdfAIgY`_#2 z{+=X(6XZl0ZaZc21>s|bV3=py2o7Xn080mk=u*)zd|2!~lR$R!M*Ki{ZcE#}mSNjeJ~mf?`Csh5#wFNspp; zKjpoN2-OTgrZNqjM2VgbUkyeEz`zZ_pbmnN6f7k{bSC#-#X3X&vCII07htPRD{Z_0 z0Ra%|7&$d7H=QYsCM5!mdH?|cFc1&LYzVX_A#?yB03Zkjgo2$k4xqyo0qYC!cJfS( zCQQkbegHAbDT2Z@sO|XqiFAk4h714%04AX9N`L@BMSu>CA1|mCF%;ke0*TG?O9yaL z7(*Pv3LdY2jKB;6Tw(w`V22opuW8`WpbOZXIbw-q+Qi%;1Bi`OFCM4D00R%~b(EGJ zAVe?Wa3EnY;I9IV0uV$R0ALQZ!w_&q{mp;_J*5Bv02P2)U5x5R@Bx%iP+BM$RZzA5 znMGh^Kdr|A@KAfn7KQ;OaGtu4_bD}#vTTm{l2R!ZC^>u=gG>{g7X`+6@W3nYOYk)u zx&i@@`EuHw*cX)mqy&fb4?IKZG2eR_2MH_vqa$sGry_<@w_lrz@BpC@_6+dx?5n)R^X_Iw zhTRT~=?-ErX^JG&TJ4j=V1y2gXNs@c>6~x?0s!O=03ej|-y$yb91s~s00AHf2q2jt z93rs3E#%&~a_#Ml3j*@BM**F@S-mwfDfHS{Wfh!T_8D1n9V= zwMDODM^D-S0DuTkv==(pu7RLkPub`P3~(`Uk_i_lwugbML_h?(`8*o3)dU!bbID!I&9K3|49qAN%(}%dnZ0n{U&#_4umP*U8;k$|0YLy2LTmtP@CM`PA%HRf diff --git a/samples/h264SampleFrames/frame-1372.h264 b/samples/h264SampleFrames/frame-1372.h264 index 7392a28c031dd809b33d7b6ea502e15c50d32d13..9ec720529f2d2f6a9af1df549586af8bc1a0f278 100644 GIT binary patch literal 1548 zcmV+n2J`s<0003AFaQ7nL7Jc%ybA~N{smA_1n|JHfJ8088(Nz-t>6Pw(ojUKVy6F} z04|RqQz=C?OGo%aF}vM@BL)G?go4Hm=waL(z6P*h1u$SBabx&w0QttUlkSWF1V8{l zK!5^9`E5V|N`Oa&p~eBV80V}&y6x@XXm{VNS<4Rqbw$wt-OdkMwWed^8aN5uf2<*C z0$=OaGF2A^5GzuH(7-wsVW$$7$P@s%NB!U;D#ry) z$KgDJJN5tw0}RaV>6Nb#7sLP@7{IDhl?btE1n3kLy`Y6m;R3vyd1>VQ01S6%0Z(1? zxPU5*42=gLAOQ6aFjH!y%GDh1r_=}|s+dJ=b%|s?>-nsq=4hH{fCg>1%5Gqc3$5h= zeoLQ!afZUY0~CD5V91{4pZ??{upGjGwmqRmtRw&ZzyQOLmp0!urU%%BI8k~1b_h$2&Mv#Xh-UIc%`Eib5aQa|IG!!ygro! zkiGZ7h7Yf$A)AIgH}HJu0@ah(+a`( zJfJpi0!SG#VGBE5>(|ckLJo6&Cd|_S{s0I73<4bHzYhb~9v@tDe{jqI0RVs$(bB*K zf&&NaK~h!f8h(!zo?rt${X#pW;{yNz z04F-oBoVUwOaVc^|J2jMQkaJ>uLfR0l{){_vACXYS9nyY%jO~9TS%IE${RI!TQt# zA}dCOL>80y^d>-QPB5?mgg|UuMc+(-pTkxc;gT_;0)#@Q$Uk?CP|+|2K^Fyc1llMo z%Gdr*eXoNlz_&01z<3j1gA=7c!T5}1#UTJbfGM;}3MCIjhzLbeu)&<50l)jiNmJK= z7TrKNBp|XRW$&Yp*SE5MBUm(r0lxHD1j8A5s?UO;J$6^(i@BrI*L!^t~7KsEDLK>DqmuUw7 zaDwUpCXLlB3yA+jP5R!1pRt6-Uj}r|VvGgD4;%glPM3*Qt#5lhz?SmRike4_Dkb~C zn(^Wvw4<~r_P!7zXkgY1V+mvcL_W*ax6^rm2EvRmaX;$Aqp{H$%b0t`0%cIBlfm3F zz;&<71i+y7<1N5}sHt8t27Q*|KeZ)$^mTvz({=; zLR9~Mc;o;C4nP1wN2mY<4nR8|@HO8I00afV06;Hr$N_Mae*kQ8!0|GdEno}M$Yz6} zFd}gi2_dk~s5Y0xVcRREf-(9W zpqAoD|MqL7zt%9#)L*h yL`Q|!hkzm20003&0B$Cz2Co2kFaQ7nK>#_4ssXFO8;k$|0YLy2LTZ3&@CM^zVwTSU literal 1619 zcmV-Z2CVr20003AFaQ7nL7N~NybA~R4B$lsK@hePIN1OML?Ziyja_cw0rm{rF8~lc zVcac#0DS-efEZT1fB{1cH3l!wA!Q{&XKW@PcfJ5(MUO&c9q(IBAs@U5W6)kjCR`7} zvxX(`HG=>tg8)%1e+HZn&NYyq?j`^R004l4fF3iJ7=Qq!lmkPmVxe|kWb)X8S-;+qA9z5ot10xOap zGs|H{WwsS9(GUO#5p?5F7g%_%A9w(O2xS?^f_FWW5kUckj5cE&qZD$Tec%8H1cq^d zcUTFN&552skZ=t8K(HgiT_oYrm+4sdzyX_o%K76D8^G-rsbOjskg~Z2C~=}(X8nQc z@P2y&c?vK%B?R!kR3GN)p$S(+FfxO$=2kSqkf)vifB=9nby#BPi{TcsQyPeQ2;rN} z=7-BVcR#!UWnhHsNdX@#Y!^UlfB?gQ@a1x0Y-ASE)?WVLZUs{vu<#08!LV#W|Lp)^ zk{7xh|3%R!96fB*Rm?&W}Rq2}=~J}!gA zR`nnN2oMdK5C9My0D%3`hXdy^btht}?-)S<0RwHw00JHW03l>;;HVlm0e}VxM%W0A z#dn?XB%28uDF7q^bq>_?i7`wyhyItrh@jALcq;|LL688-EfSfup5P!-gA=^0s~+f1lp+1?-%=k126y_SeJGuJPzX_&08vb z9uWq?MGO$PxpSp3XHj~+_aFoeZAqX9iLW87BQK%-;Dp8^hs~g54k~}{bt!NIZ~)Pm zp{GP4jrFPj;{X6bJOBh7fB-?906{Xyxr}Ry5~HBwU?Cz;DEYhyrb(C5XbWxuL2f7j zU=6oGSwO=81VV5{qn;3{GaY!__hYno7+b_BdcFFF3;UpxLBcp3iWV=w^nd_BoW`P) zz%_`fMCQy5oDrr8qD!FWfB+yM9~v3c@xaDU(4zYQtTdsN5Xlz}2);_!{_q9>DHbV~ zALRN_e^`sX$(e>m%5e)rCjBhMMImkz0O*1j$9l8n>)2`^+n@XYz!E??cY44O6gi?N zKb&|GMFncMqv6)x(xG7qexC&xagxlR74a_04L%RR0R)0n={y^oFH*2mkPH9>0NZ^f z;X{9bYNvnzAOZosMGnxN(B}$L1-O63yw79mzlFe`9%T}XI9rBb))WGM{~8%n0K@Q( z0D$wcknS2t1|$W*oO%EX(`kJ@uF#m^h5-5%2ks%T8h|o4q4s3}B5U*r1j3E(q4Q25 z4h!Fi3N3B`0v*5a7{*b}NJ5T?_12Hsh5&&a1S#ooN>U^N6#)Shgcx%8KLtOI?f`TcB9q?3C&Iakkzm&B0DumtU_XW;Z};9S03Zks>0jO8!U}dH~<6)0UR@?MZm76R^pH| z03r(W1t^J9D7bmTWnA!K7{P9a*ibh_Pjq=DOYi}M7|@@{K~j+;PF16+gUCQAX*~c- zxNI~N3Shu4O7IXl;|w^+n;(tdCT1vM@VUmoSHqqvMq zOI!>aEDR(aPfubcvmo3F90XwyxN!;?0w;g~00BV&ZYIbEuK;*30003&06B@W0jt0p Ri~s-uK>!s(Y=CO;2IJPyoRI(k diff --git a/samples/h264SampleFrames/frame-1373.h264 b/samples/h264SampleFrames/frame-1373.h264 index 296e6534006a638abcdc6a0fd81d00dc868e144f..8948877e6f408d511f13b32c661c9b27059bd593 100644 GIT binary patch delta 1520 zcmVuXDfeIjM)b+1 z_VDcVOo4{zuewX8@0=I{^{$-FliTuQx}4UKYA2XG5d#P)5jX`vTOTqJ0ypPU_yP?B zZ*4{Qf1D5;3?QIS2p9y|4t+)h0kCF!yLAk=gRkL;490dO{t*0K<@%KH67|nIftG-T-6(Acf}) z7TQ9!xGEv_fCvC0;%u_OWuU3La^L`wcn%@oQvR=l?fI^9aW>mnXR|l-pkT3O?tLHw z0J#(kCJ&^noKI_|gtQ)k4D}>QBt`Cjm3!d1-UN|L1)`sW_T^XofIuC9Kr|RM{vHKu zvXv=gB!B@B5ljjxV{K(oM5~phoB033oB$9506}YtIbdeMm@iXAMi_)M002Z-00b`p z06>fumLsIk_3QHcfq)dQB%TZ1z=$M3mH&7S00J6703iqf0stTZ8EzJW01yCw1Pp-< zC{}260jRn_01kjpflLo=2<>2jz9imeLnEngk71Ndct!gs ziU6P)>HG+oa$w2MIYWf^No(zY({4JO$QFpdz+hAmxd2sTDwJqC$ezSQI`zWlBKrbB z06-*F2skj#%u-q_vgH2&CQ=kdrOm`ONk(b_0RX^UWq=wlvL+xE5&>U-+=GP}cBvd) zZ|#2ni+P^SnXvc)2ZKTtWk2W=$yqBe{iFae0-c;ALUX{7gBRLN@~|*}01ycP9B|k& z`}f^&9JGi)JWCP&%eDVgP$2a>S2ndp{egoP3RHhENBBq@3i%Mz?=cCsty3a z33DD`n22}_Bm_0;AUM2@hRgr(dP#=`rVQ5XS?=F4og4=q94&2cfdBu!1~FmbYRA_5 z7*{@i@D>uFP|`uqrnI(y!PyJ__CO(J;L)L^O^Q^HSAjrS2;(-KLU01d!>`33@zXW| zxc|dn&43)Oz!$-aplgC2s=`E(Gd*6wIRHUaz5?XggR^_yU;(hB3>;7Tu;}b`Ms`~N z@8e;WX2mO_8!%zX#U3;|{NeK(eG|m7Mza6`0JbOq2m%8`26GU99+WxYMkp9HZ7Sx> zj3x7s01*EF0Kf-06@e*2c6gTBN&<%r-~fS)R35$|EfCgOHdDczp{%r*bP)A#7cM|K z1O*e)Dv~_?;KrI1pMvNPf|t}MLbII7P-YT$08=o300;~dvU_83blKrHX?_pD2I6is zOC_#~;US!2mkYvwaaO5AOB=O7C;*@b4wq1|YlgDHpRmwGeCdzGTRMaTOe{tI|JLhiZTPzcV3` zd5@TMB?u3Ug9kt;&_GC-jEIzq$Nmfn#s(-NC)eN%fxZO@0!82+QR59BgKh$gfDix> z7eIypIV)|w83xnCpinIk9}@-u42i4-hTV5cq>lYyV1;I$5?FO6UX(lGggGTO29YE4k1BV!PsU2N!?VbQkp@Ce)35Rp5j4%;C&jMcr#PAgeiyyN4mdWN!+rR)2 z4=@m*E6xSYP=24#d?^Q>Fa{NVz&ZV5pmH~YAO5jhA)RlhZ%IGw4 zK_%NT{W(rj-v|EuMgRf;fZ=4rygDZ2tr~2wVZadV0003&0B$C*2Co2kFaQ7nK>#_4 WtO2XQ8;k$|0YLy2LTdnO@CM^G0EH$1 delta 1559 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 diff --git a/samples/h264SampleFrames/frame-1376.h264 b/samples/h264SampleFrames/frame-1376.h264 index 8b1b6843dbd46a4c0b763dab7d6ed080fa963ccf..9428597972fd5207811f4fe77b4b0b1f84bbd14c 100644 GIT binary patch literal 6664 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 literal 2035 zcmbuA`#aP9AIIOHZFaEj+nk2zZpAWE&AI8e%_N5+D>CJ@h&%0D$XVLVXt|L?MYqyO zPPuc4=zz}(#qG}eN{2gT==3eIx)UM0tH0oTUEkLa&+Bzv&)*)`>vcT<01%G;Eu2eb z%Wv||`$(6|SBdig`QM4SQ%kLL)d0Wwz)*Pd0xg2|GJLaeY8P7N<9-i}#-FS7zIDuT zVp%fqxIKF;#-_aa6Z%@2Y<}xPtidYS(e#7wV(cL9{rzLvZ)F_gvWDx|I@6RbPL9a} zp}HL$j~lWb;y?V-Zhd)9{lCs)z*t~sbb97((J!blgksXF1W6(mh@JTxSTBFua??I* z`;00v)hVxTmid!C2z3sV#Mfc{(Oko|sVHMSC;D^j;Ko`Vht8ys-GppBf__v`yl!+_ zSwZg8PwRk_x+flm$>g=0+zu($Jq}uCsQ9xtU86~hXUSVcmX7NfcS!b(br!+|9A`yv zQpoGSzbq~ZS?34;-{s{SOW!lj_U<4Mmq_>3HZgB3L5PvM@CDJYmZnAEK^RG`PC87S zN&prWUxdRCuTM0BNy8qh3~?$jzpY%=Ek(XL@)P4DsFUQQBnJsIuMbUhH zVc-z}A{xMI072>SiQ+>6e+P2(Vo#=o4Y zwJNF^5pQOaU;ucb@3KV3I=64J?b%fXp&&fcL0Yb%%1|#&{YF_YqcF|qEM16NR}9&M z+fQqfJN#69EF`aU9X+{eRCITLRbO>S%U(d!K-Ct8aRXN2odu71Qfa2A5TFN5Tpn5+ zYF~yjFy>wkh&grnyi*xq_d$-2G*N#P?X+3FgDJ19Ec8&4Oc>oJ1ybqtd^jJt_K-lp z{4FB%tCR5SBr+UJ^^sV~pJq1s|Da*}oyN5rer5CEmMy_dH_f$Bdl?L}bZ}2kD8y-x z+7=D_Pq7B^$K=TpHdJ=pCPh2`2^(w)V9TTTcg+@eizj>pV=);bL|;G0^~j=xrKFR> zUadd#_GqICAR?}0(IrDip3fNRW=9SNB`VhD{i3?B$5LpLso}m|93x?pEVrbW6Na+d zrbNf!&rnO3Kg>QHPNQwdZ4l0Vf}nKFx)JPZ?w~2NV_oj^axj__1`tGt$~ZaYf?JhC4#hqO|!(U!E7JB z2v)x@)4Ez6t*|bP^ZMW~Tp~2%RKR3+PTo-tZ~gSyyL?T#{G!bZ zX<0*v3Sc2j_s*+qZS;3hSEH2_#p0~kmt!t|h?1%Ec}CaK@)$vSFf*Qg2z z2w>G7j?1NfiEokrf7%T!E{=KRJ5+3O|LG(06AUN@u#Sh|+?197h!V!%-w7xQcF(`P z9OO>I?IE8FHT>JFflWemdIH(5k0uGZDMDLidQng{uQ!^sF_7U@)qH3pbLVg)R&$i* zd3HR-YY>vE1SZCGUAY zoy?}{vs(QAO#mL_<#5C%!D)uQX>DFlDc+L0d5#N2$Po!HP<+iKv8Z2E*U z7Qnh*Rzzy#(zFt_!8@WQE?+(AriN+Z4EGxq|BX~nqCZw&yAw%$)@y|C7g!JvyH9_v zohW$gYQ>uBZ94fg+jWK6>+ffT7i-!sAA{BgE3#tyAPQG+4~a*IzTtvdMAc+OE`<*|%Do{jVxW5_*5$>nByE3pEi)^X~26K#i(l vn*sZMoS80fH5!!4zFQm|T=NFq0Fr(v9Wahxhc3ZJIX@ab&OuR>3O(@;Cg-n9 diff --git a/samples/h264SampleFrames/frame-1377.h264 b/samples/h264SampleFrames/frame-1377.h264 index e819d8d5da31817540b465225b3e9c4680e147da..a34f2a25c40799d9255ae04ad51706ed7acff375 100644 GIT binary patch literal 3198 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 delta 1298 zcmV+t1?~FB4dV)b000012`~Tv0YRJK8oX$qKzRrV5)leO33Mv%+0TFm7G8rRy1hrN zq8RYok+2AVjXW!;lf;E1u?mX2`63Gt zf$hNM&;f;l01z8rGq-l$yc+-{Rx2F`2c`fcWjRp;gTSI_?6XbIw!9Dpp_PL~!#zAJ zu!tZs2!()DK!jx6{U`6!|AT*k0DvUOKD#|Q09kB3s}wE~%U^r~iMaZlr&F~I@SBZpbCMmlUaZO zAZ7pp2%rEUUI7_kzy<&);I>#*F#s#5`FZc?(GC&fKTVQd_Lqk+^SaifKM%|c@WWa< zlzb|gl9YpV%D8#SRF3m_00m9}0sy0uav+J3l5AWnb{_yF2|_CZBhC(XB7ZY=|9c`h zZ=`HUAl{}Ju!U;OA)@K^DSee0gt&DzUA_Qd22g^UA}8JX7BqhSm$r}t1ZWI16;Pu} z4F(?o0D=vLapH6+ulR?5gE>;C`Lzz}7(ahzgeUCd)f<1`fCNQ>jAliPUF8?+1~Egu zjC36kl93f)BEzT^#o|IF6Mtl1{+LY6APJ+DLH`_>B@Hzr6%*Ne;#av%n_-7Sf*^JX zxC2z9Wc>zbr>7Atv!#ZiS>nN)`armKJe5CR-n zR`ef}u57VjG8+IR?->lH9*<|JZLqz(zyLr&2mrt@HeTq96VVuhjAjl+s9%!&r-**w z01yxphajcOZGog@wtwz02mn5=NXCGg^x@<;1(dj_0f+cE@hZh%@DD&5it~qrF{esU z?z?~QKm(LGD9ypCo-HH(0fhp2e>j|2DHQ+(iA&)Ub$?wy0XQftUGvj1KZ(`r z=?MP_yy6nG*==kV5p&2{|EvAX$k5o~m&kfJK#BlEP9RuP!8MfXG=K0gF9Z%Dr$vM} zr%uH7yLhgVG1yLkg0^C}-~a>!#1aAvC9NJ2l9qtL&_QUyz^)2fh+V|jZ+@T>1a$G} z5}K>r9sqoUv46w-=fs!x|JlF*Hvx`$IypKQCTJVt^f_b009990rJ0( z2FD&!-k}6kLj`$fERzTTCg=bF0YLz6Cin)g0C+F}00BV&If=djtH2wK0003&02M-S IfNJmt<2AV~EdT%j diff --git a/samples/h264SampleFrames/frame-1379.h264 b/samples/h264SampleFrames/frame-1379.h264 index de3acfb27a3ee819f3a1e2de3d791babdaf7b31a..05b1f7bba434d17f4deddf5fcd5bc9a70965d580 100644 GIT binary patch delta 1262 zcmV)_9WB?YS=t&+>*e;P~ z9k?^>fDAx4A~eI4_kelCLq9Wj3)G7cNJueAo))W>0z0XSTsQ6Qla=o!I;h^5$ z$Nl@&;eB0LfBm?4k4mxu=tqJgvpQHZeeeJO|NsC0|NsAyni7$q3u68_@XnDKks)B< z#sCU9gKcm!2a0b24e>tvL?BZ)apD!9*ld4gz$sJa7c1=3!v2N^BJFVs8rDnUFycV> zoHhjA+yg*o$wy;`>e|(`~=IQ}p zdwok^Q`gOP{GDE31TY|kK?D#2DG?=8M52X)r z|6c)Eb4w4Q1u;cNa6_`{%ulA(*fw!G?o1Rd;K;*WFu(v10{{U5KmZUQ0J3KS0Of!bfzLP1><7TOQ4#HH`=w1Wgga|EWg zx7}a+NdRCLXMu*&@zj;~_lV2@8ePB{p$Fhdb*Bb!ccll3ZIMJ$!rT97T=1I<#69LA z|G)_fvJ5GsTk3@rWwf{;5eEbzvO`BsRG;O)?*ITm9dHl|szEEIQ|P+$&i()ZKqWvC zOavxYk)=wGe^1ze1bkKiQAzkL-sk&4@*WOh$>0RRaApHpZF$e_T`7~p>X3URPc_7Wo)uLu$kCqjM3!(=PHV8!9=soaI07Ezh;6J+x+0v{V*x673rs`qx5zo!w00;)0_yH!& z5jrERuYCv3pk*~6AgbYJbACPyma$R5BL+B$IHDr<-}(Fc1cL;;BSg_JSh)%WFhTsp zMnC@*c;Em816i;DlM8$Y(jI&Nb>`ULsnn$_$$%sm00Lmu&H|yE8-6jOA>aVnn3W1a zk6$Qa|5_oZA#<6^M~7kpm?4G$7pQb4|1s^j>>rkZA=m%_0YLz6CYT1V0C+F}00BV& YIfHTZTN&2-pDB8JQdkaN*5cC`oac%hW{#3m)W%01~hl4+Kp&B*36k|9hGhHaM4z zEp9)#czP$?A4Asv`2HWfBfLMA+z0=?3k14Kvj^A5fe2Ct(w0b+b$yY68j?{q3ZvnE9#w>nFE{u zQ^LGI7!;sd;uIGZYF_}|O@xxSje{%*p}qm2GqZ3~8~s26UQ_zF|GwyNnklOO>NfAPie%o_n?#04M>KkHxp92~fL zNUZw20D}~<ddDVVACGa$9vB^verv{RL z*T7RO(!pvJ-pv1l(1PTWsk$42&y@ZIL=%Cf;76c;?65kBao%;JjsuJk@~SYP#W=`< z&3ky0e~8qSe8B4NL5K0MA^-vfmjH8E0Mo4jM2WTv|M!3r0}!ADOfkh9bWQ{@js7qJ zj%awIwdv$q3{y9MA@B@`r~nV3AKQ$i3p|v+_oI;H0CF1%I0lFCcejSBD~=~xF>itC z!v-v4Qh(+62r&R4pdjd001PGzfwi;xX%kD5f5-r{5E`EX&5h5>21_Ta-Y^j;t8j!V zJM~Ui{4rYdc%}>Ls5o1WLzmwe8HoyUGG~C^Jv@8#3-iG^QZ-KRI2iq)*p-)4x`8a! zY$lj1Af^Rfhvxzi1Z3@b7YKgsz^^9DX~*yP-~h!#Jhv{|u}?ql^nd_BC@ zuqLr<$AB;f*o-y4OdVo03|16G#|{?rERsLk0|(`Dh*B>aXxkVZ_!Axx=Kml7z!-J_ z2?F>O6cr)zJ0096%e}G)X zBCU}sGC}Ki?-=w$fB=DqRqg;1BRP>%*XAN8BG`9ZCGY?Q06`3tP6Uys6y~&7OvWwv zxA%Fr-yi#fa)Ddo*Pd_MTaN?)!zH;817chd=R+O_z(42!5P+y^PLIv6zPc{=_&@Gw<=I}5XY>BdMm;eF+-~b>d03IKfFEoFEAmFG0IoP_7vju{x zu}t~^Ob7}cPNR3I$K>NzPT;^37-pbwkTW||b%*6s5DVx6Zh!y)0YLz6CV&R70C+F} c00BV&Ifk diff --git a/samples/h264SampleFrames/frame-1380.h264 b/samples/h264SampleFrames/frame-1380.h264 index 580898c28b312ff1e15931890334a091bdb986ed..c7ec6291192d37ccec4df6b4e95175e798af16a1 100644 GIT binary patch literal 1437 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 E1HtJLi2wiq literal 1445 zcmbW1`BPJO0K~s9gd~^%!4SD6Amqg--mpaO*!kn4pj5ka7U z&`1M{Z9xzyqfj79!X*v@TA;+ENt8oMtGo(wh~yRh3p(8&KC?6X%g*e~0stTl+YPt~ zS%zYog^XZyX;W;ux;LaY7at%b)(zV6ingLW(|I3B#gY`(p@ivL$=>bpWMb_nz|!$* zih4~#uSkK<3$^D(=>i=gHmlJziDjPLzSJ(c*?=8MPjQ}$7#sb>Sz5z4yFa~D?ts}V zm~`4PcgCYvx)f4!yUnT;MW4zT5yA)TK%*q0{$<&4$B0Uf6?waBWtDR|iWv02XoZC| z3J{nR0o&#++!G{ znLD#v(Nsiq?YRq`V;uV@+gzJ7;GFmnk>QyV2)yFLQ>5Bc!=wYX7N~@Dv21d!Dgx4J z^HZ8!SAjmGL@qyif0hGLd! zLuov0<62k^U_b*v`J20NZb!WtLJoU|_rmENkEfq-&%>4jHKGz4&6Lg(Mib!lpO*{N zAVNhkoo7jV6&2B;t04$)h@peeV zaKZl1wWUWkC&10*B9G0z>Vc*8F^Y}8G-ItHb%$D2as2kUX8!voPazipk+jhD8JKMz zS5t@G3BlFWjGn{Cru_EeRSVIO6Q6*?(M0w?L8@~?0=L78hZwN@b`@kwj2}POITVTB zg0hMEFX*n`6{ecsCpI)=nk@}aTQZNmP3drC0U8N^p>vAjPr~-z=9-zMZ!|A%nYbx zDOCzog`38-^)>BPEVUU%*v0gBbq-x#M4tdGZAU;!%|g_CW8NJV0*BT|Wd+?1_r0y1 z5+PI6`TmidKPkGx^h7HMt57k(f^Oy)#A5ALF$otMosw=h%LfpqvHls@=@}0m003vxvowbL#?mT2rTXSY_E@%{%^`wW<<6yhYjyswZ(TW1@1ONa4 diff --git a/samples/h264SampleFrames/frame-1382.h264 b/samples/h264SampleFrames/frame-1382.h264 index 437f3685112e94dcf9da3c87a14305918207ac66..fed16f62f5626b8c02d35c07a5546948635a172f 100644 GIT binary patch delta 1195 zcmV;c1XTO_2lEMk000012`~Tv0YRF;8oVMW%ithHz7L~<+zDFDGzotX^5BzJ4OId^ zvKWgFuLBSx{C<)7BjUyYE)PiK0Z^)!;gzo~y6PE%^_hTVO4*S6UNFhO5?Ps_ULXGa z>M;ZdysN~W@{f8F)9=_noVl!VJ=ny}DLqia4gY8V|NsAyg&C2M2seaJ3G1;TA!Fz- zNHBK-5hDQ?Hk4O;q;=JS@28=}LV9k5g}WFU=39#$03KaJ}PP9e39`!fBgP` zKYU12529UC@B&z-0P)4}$$`kA!NUg;fCoC_J54{|fB_H;anuXmDy43#FG9*8GfR&E z0Rlh)ZV(X3Ctvm~U=m1lowQwK?06Rt$8lHmCo;|qIegZ%MKoE1rqcwt)XF3(6 zUw-j`zyLrnqAi0#+p*3Az#tLs%kw$JQ&xJs2teGa*Yfy4CI zo*^*|Mj70~l;OJ40H7Ec?ZGBd zVDd!WQQ!as0ZL#2hf1kJWX0f8dH?&qKHl4HgAM=)2q-Y=+(iaGe?t`!X2XyG2n&D= z1CdF5pbUhtNyCyWuy23>L2Lj74rXKp0Jq#A2vFj|b;VYYbR%Psi-UQu{%L+u?s5J= zGk^nwQ_Qik6lsdO`@sxArjqd^3KA6QLcjyQ00clN9_(e<6cC4r+5f@+#M?7w8oQ`t zBzOS4We7lvkZ6+)e;c#_fI|a}V8AZ$lEa2${cQAxHSK@GkN~6rqG$sF;L2z|8LZ&s z(EtE~H~-V=)i>NiYCRjAV2JInvm3A;papZj1mvzWFoSd z=uy3@@WajEU#o^3fH0VbBMjjuQrCr6_y!JmBp*^-l_}61Y7wH)1Tbu6kN~h^+C&3Q zkf9L~ib{>wW%qyx2o!L~D6pa>9#v-5cxvDOe=thnfWbpfCD2r;)TpR=N_0QRVT3vm z!#ms{;|m=?19Lt;TJ#lO0EZv|00BV&ZYHn>uK;*30003&06B@Q0jt0pi~s-uK>!s( JYXEBS2IGhn0T2KH literal 1018 zcmZQzU|{4l01}R~5~TJhsh@tJ;IdDwkE?*U(jdXBTK-9c%B6(7Hyr;?>@axsl*x5r zP0hYli<7iCm{_%3I2amlmdLT}++^_hH4|^u%LZ*d)y@8wD`plO*FE^ZzrKlidi;^u zm-?%GzOM-~`o(|n6H8LclzA(XdH<*XCkC|mb3OgA>r{+~gKNL_ojnh>G4f10puFpr z$J%e*Q%eive!cBSOpMU<<+s{8wHsgnT2bTl8Lef5N9skR*>l^l(E;mY>eT;#LImUpM>-XL} zK_q`U?!f=LlRcM21K7B3{$pG5s76&-Z=&zw!!{DqWp7jz z`zpKb3xpXIIHEUusFzeN)7kvHXP)YLZRd{rKkVDRmaSt*4!V%|jkEE!21k4R{AcoS z4GtJBY6`k#tvEN1hm|4GsUl1)G&}O_TKoS8+ZYzG@db4H`1)?Q`*2R~PeTKPgKqxO z9`^O8odc4p{(mq3bHpdBA?L#M1B?y!`N#%jMVq zY(Lp|V8en`=j@|DbvJTMl`e1KU}OOJJazh`CLIqywXKRo8|I zInmQtS~jpGi(Gv9<4{A2P~`rAV56)z3@i*rXAdwnoRU||XkpM}VB!0(#Nc4iEgkvV z@4$m;|N13dEMD__>Xc4A^hcH_z9Y|3@O}M;W43QT^c8j$owrTl^DGPaAd!+#X?m*SQM{F)F^IrC05o=aJ0b|1< zacRH28E>raCGE!oy!Hsa5Fw8UW^HRMtj2TtN(3Fq^(X(p0GUaR zGN}n%?c@M3QQV^9J<7SoUgERDFOyv02LNId_#ZmtVyfOrfkOVMyqlEBjy+yNsEKeD zJP$=0Z*mGZ?H~duPRWcNcf0rf;1~*n8z2WxG^wY7w?{t0R}d1Qf6SA>?Qw##kLmyc z0&{8t_qN+JY<*XUzybxKB^h;ecn@sEy|@0*#s-DgK++WW$e^2l%_ch1 ziU9C5(U_eZ_uXg?e_CcR4-(~nrSK9UjReD?01^O*BftRw06-7`1Oq^qfhL*mmih!V zNe%?Q0AK(hCmcuuz+i)@N`a#+k&piYmtmX%b6|W3J?{V_6uKC}Hg74ufIO&Ho7H|E z0Kf=DkkC9qkF2G??+8MJ2qb~w&zTt{ASQ4aAdm+E01$8hEka%`?+7L0p`Kq7004?- zgP>FzQJfs`P(?Xm`LoLrlmrDF&MGuabhwx~;arnX0Tz>=11Ep^{QiD3m?+8V7{O{F z8FKsp91%gx-lGlyA$mxKi@YCz0T>4cnS~j~&Iq605u&X0YQjwHTC(DqRb@jRWk?h03aAY z=6dJi_^U^5)%+iT22sBrHS?KGu;5Q1&BE}URR=LG-# z;1vJ^uq!Z8j4owe69{WTzyz=WTyRtiKq{B_-Y5VB033e+1OSON06{-I1xW-tFK__B z0YsZc!raq9K$)>H08`%AggOsYpnp8hgAc#}5Cs@DulWH2U061SSj`)N01yEfeti`U z*}h_l5dDu^7e~mr_4(G)HhR1}Q@8&U7z>6E^D+#@Q5#4lO=1J^*x*$G0tHYFm6Vc| z6Wl?90&#z_(G$U8@BmDVWOO-#3+^;Yu>2(y0yR2VOw@z=*(f3Pfq@L|7F6(EW{6D) zcryhg=BV<7KpBV!8=*7QA;iIcjeP;iaDjguv~`vd>tG3-7z#sBG7axnS!ggP z&k1}B6Tm7NS{Kv3mrd>tfobJ94{9pmr0Q?7No)_RKD3G8400=3=ohkqDL*Xz05DEf<%!57=7kXx;cGxiH upa>{-0003&0B$C@2Co2kFaQ7nK>#_4t^upS8;k$|0YLy2LTi9(@CM^8;yGvl delta 1195 zcmV;c1XTOy3!n;r000012`~Tv0YRF88oVSY*a#4v1VV@S0(Owqjq(zUIC0CYfCsNU zB3PvkWAnhTT7auaOo7Tbs*Ro=U!%MxBzyr~dT-u{dgC4Ne_Cc6@tB*5KR7Zj426{l zt%7=voutE#Iw4%nRs8?u_f*`lBox|!kMEJ8 z8IiCGfB)el!n(M@As`MYHnd5xIR*-9kSHPnC-(cm#zgcoVb&67f8H{xL>h?Kuoto* zonjbrz3JgTNWiDq$bcdp!`DHd`l1*_qPcI1+@JX6x^6x3+bo=Npa5Pq5tX^FE;NSqj0E8BN%FGZ;V3b3ak{8wg%%aP z0upu37c2&YU<94u1{!bIEa!|O&WF@!0JzivX##LVA7$|^@9+u$0s&wJ1wQh-%G7GB zC;#sN06<6pF=2TY;!ILSB8BSa-~fsQ0F>uJB)g%7e?g-kyey@~I1D}>4g5;EPGm10Du4>007|9LL6I; zy2Pdie+--WKmulr7?!E$ruDhOmjDJR&{-T(TI+83;EgZ;yZ`|K&;$-Zv*m})=#9<+ zz`PcCKtaHa=J@DEFol_E+Q0zV1670eNL?gGgs1#5PB;l-ijeTNQ8RB#gDMcA+7ih@ zDH@lw`-Z>>EOJ}{K(>%A+Bwz3lK?nY~cR4lT(~Bh(Dm#fs3pD1D zVX43iJph^(Ex!jl3X?DaEt4<-6o2rMe>j|2DHId{2Euaq$-iB%uu2LH=X~@_N1}9l z^n_o8ZexXU*_P=nhjWO6xfP%JSx8MK-1Vj=73ni^C5t5dGz|j8DgMnNSwGg{Vu7BSBU?d3+ zo;?SWYup|He1oyW{O81%_W#+y05<`Sc{({d7ba*azu*QKAn4-i&q9l?D>GHy8=wFX zNB{u=SeXJt-)H~=0bo#ij*X(yz8egB=DNC1H?VDc=2)SEfv8n^&9_y7b190$t& zI2#;!NqU44Q4AI3oU%+H0Gpry00BV&ZYH1xuK;*30003&06B@M0jt0pi~s-uK>!s( JY5;2R2IJX44($K{ diff --git a/samples/h264SampleFrames/frame-1384.h264 b/samples/h264SampleFrames/frame-1384.h264 index 1b1c157bc03a059f4057e1259112cc269b0aecf3..e422623774c051ae57cd8c7bf6f37b4cc34761fa 100644 GIT binary patch literal 1898 zcmbtV`7>Pk9{t|it@~;%+R{xB&l1gurDtO2(U$3mB_mBNLt>c(A%=`4%vf#{M060b z6H6h&5KEYlXSpJlAVFegWRjwh3^ECVq+3Y$^X4CTRquU%_|&KB)cN6a>YO?N07#s% zzii5YVh>$wiX^SZQKQ@g;o)?mXfh`Z8CQ(hhVanF!-w$wm`eCozU%!PCLzM^fbqrj z41_MjE#T57pppV60=3fqK?qdIm%BaxF(6lINToaR-MwvQvLy6JxwqG4PRF&C35B$l zwYK0dY_XBb(}SX@IFg@zLFf5lzjwS-;$y`v>wM9FAEB(J){KKIh^{ZXqjp-<_^30y zP>q>|xka*x!!AJ1UDLy6nr9Ki|_t@n_{JYr(; zsV+L7{2qKOgIDDWcwl%`L+(h-F-D#@Z}T+zOV{hGDG0|<+MvBHT%OOLXE9UP5a$m+ zO#leT0F)pAAyXj!=w;w<(CU7}QUX$Z0lbPZ{G57j^f!u&70X%xpyrW)LeB%IIo+(s ziA<9vH2o{9FZFVN_^}0ho;^xjNKHA|ggQ{go@aC<&*WOqeX0X15f z()g%VUi+jVK;|qappbnyXY+##H0}ncS@Y3@1)ph>$~uW%9?UNnrvM^m1x{MrDE?Vw zf&>vxgiH9QJ}T1_ttMtcWC~46OttpTL1omvKK|xbDWrin_^WAr`UoG&Tn;ztA6PBH zeeDXWa(&-6sYM9+TrFHfNZds=>M!b%9UEDZ(UhY<3FNQfYr^_iobGk*>m-s)aFv|G zYJlyHitU-4%=~0ekEcN{yR(PM1KwQk)JC3O8FkXgt2zP1$thf49iwXXiarAFim5Jq zy!WK$g>OpU=4{v*jpQ$coud_;w9Xg+x*bGGzZr(Zie37jJiuTV+L*UnMmx%T3b$v+ zY{X|nF^1+)IY0m&pvot|+M6w(sl+t=8lf{p8>jD<#uuBMdg$@o{ zU&19lQwa0Z!8rQL1eW5;&)Vn4^DkPZry56KRd^y7j?n*9&30w7!R zW*0TYzOEhxs&Y8V8V~et+$mO@?K8%Xp)ZCh;ystO zQ~CT2dsvK(H<&c8`5}kMgNL92N_OFNfj)CWdQa*nnAlikpwmTFV~37DBfy$>w=P zw&(mD9fRs#f-J;Z-LBd6tJGd?OQ)u*>V>rVU3+Z7*a9D~sV2h2N%s`oSobW7 z*nXn%z`HydY%R&RC#)jxEZeSIW&;?$nic{;0 zk!)=T#uJ_7KieEi7mCv@){sN|uZh~utnG1~x1o)VaR3HP|19-1F~89wYLBtif#2Q) zY)Vf)<^hCIz5&snP|Y-&S|Sf8ydk);VbUF1u*uS59n>esQBxf-K&B0ye$%(*kSR&g z{X18<$-*PpKC#9hqSFMDwU*1mzaF>svl|>QWuk}80pRG8x-s{o-$e|c36Vl^L4m$( z@{c<>`A^f5W)kI3*p?O)xdAc*e02RTVzc6389Zw}VAuMe@&w=0F+vN7`@2bjS!OHr SGp5A-8==}>0HGU%rGEpIL~vUG delta 1658 zcmV-=28H?R4)qOx000012`~Tv0YRFe8oVYa&Oh5ncz>%++430*@ z=HKiFFYw+N*uZ=JhoCBLDBzoyYm@Hl(B<(%LxdL!Ms0#qP*o#*7zo5cehkDKKzR`@ z|01!BfY?#{R=qK|V0;)j_M*O8-hr4jY=%)>_3po{S<3_(3M`)MCqL(Ez#3Oc8zkc` z|JssJPIQjzuYZw|BY)vD!o5U=00l~U>gvvK{d%9P{B>PHTuPWqZ0{cW@MUZO1OZim zL0RC)01Xe19U7`6|D7L{D}VwFqZ;H8^IYQvko#fF@`RcYj4&j1n*<0p3x)-N0RRAuS8!TP<}iw(J`lQ55DjlLN=Lx2ZTtWM0YG8<(V#mTR12Gv z2S~>s1{~rJl7gjjDUM`E-99&s5m0;vj2kmZ`BQsDJ+e-!e2sfawZH%WLk<840RTB@ z3YQ#yENoR3a)1sPM-n9-G{==9s||lEz!(Fq0coX`N7*hYUw`ikf|dlCA2q%tO9b>C zmbhR*iv)}rkokEqk+;gH{V(D%z@{<;X1t9fO(1x%0OO#GhaiQ&_qV_S(1*eEvpQR) zlXBnzW*~Yz9$;Qx_(Yz1z2*eer4Xl8>qth(2w3Bfi4&m?_xMCuA|R1U%zuCXtN+6} zP8Xb`(pv-&(@^GddYPw%nzl0lFb-T*0^7%Lff&MgtlWlr*6+9m04aVozZ5}W<7kus zzy9+AaZVcn6cqGF6%AwoKmu}L1P0WNGDx0MHUDUC-MxwvNF<-zfFB6WT!D#*&9aym zeZY_c0Say?4c#7Sh^qb!H~@bj0KmYmosI6UMS^QYviWO}3;<=`xGFGxL$tM~FcA?# z(9d$#aeKxMQOzfBzgAd=EfI0Spil41@zPrvQOClE6?I z$%=_cfCu;luulLh!nXT_k#C2X&MCC{H(LVRlK3iM03aLy0sv*sfuMgt1R#-a0eA=i zCXpBhJ+OD3ZKyC48w8W^a23gm(~eUr^LYgG9Cg`Vg)!S z6S0zqpD0GmD(G|y3e+9^el%hhxr`YMZ~!0x5CO7n;J;5P-+b@h0t}Zp1I!0jLwy29 zUG8200fLx|TgwBsW$Ax@WjF|Du(l!YN_jCq|HIG#VL)gptQc-+hK{Hq{lC8Ze)hls zK{=qna0=uQR5bf(WP7vgSU_958$f&U5nB=l1zUi40*sCfP0ZiT05Cw<_Ru}wjj}2w z-|zy^91YY9*P9o5&=PW*T0j6GAOH$fkNfj+rAn#s!SC}~rOz__CxJD95U^f}M)!D2 zxBxob0!`=uezB5+~ng_A)6CX*io8h`MCfAWej zN&pTFAt72%&Z?)Qf7AQmF+Z_6t5bSCNt$?^1y^gPPX=Q19Ea9&Pyh5kAOngV2&pMw z1l$28BJThO3R2Ws(nTa>9wwM}04x=EzyKfx6eTblbHoK`ARhS4uxrxU+!c5TN8|V} zwv1F1Z<=iYfSj@b(Ma!LYJaK$m+R%hI0ntt77qwaw~R*V!P>V0o-!hfcmN0i0wluP ztLb5kbm#GESk^3-YH2c zAG`o8*d|Dl=#~p?^o6$ED6y0~ZQ!-cmn*;vAOIkNv4hswp?3uuZ~#C6VF;8>4R%^XSi}5m!S@1-&0{s!!-H~zugxyg?W|M6 z0Ky@eI1QWm9g%^sn12M_00_Vd2%#dfW6vyzz5WlcH<|3&nS<~EKp5-;;(QfvTA-+? z_a3=`03a3s0s)``LbAZm@CYbm0eMxjk8)(k*~S^@0$_o{sL^WQ(VO8*hj3sE0s<-n zo(|5my)mf;4lm#dwg3PDK>%(hs0Ob9crX9}0YLyciK+pszz-XY0003&02M-NfNJmt E<2il7E&u=k diff --git a/samples/h264SampleFrames/frame-1385.h264 b/samples/h264SampleFrames/frame-1385.h264 index 9f21fbfe2a0db7a97d9661d91ec835afe66642fa..1f2ed604d07f758c892716eee2bc2646c43e5cd0 100644 GIT binary patch delta 1550 zcmV+p2J!i>3%(6f000012`~Tv0YRG}8oVec;37jN2|!3JNT$F5w);{Wx71x*$Nt@J zNV{XxUywZjNDD|j1MPYXi`)>?S)JM8?{nB1>innpJaBb)Dzs|&XP1#-8iOoo8TpS0U5VPn`}e{up$gZ5;UgJzO$McQSmEaz~uAj#5 zGquos_kVfO&G6kD4+9E=o)?kPEt7Bs5`UYZp{wdjBZ%idY0e93Ie#7<#DX!LBW>0|zvH zog4t+23(RZcl&|>#t@1qDrXI%Dh#a^fANLy^7s@$o)J73hCu+c`~>u6oG^?WGDNWl z>W~U2pg43Nu7DB0s{h^aGC1r|0LO56Iy}I~{=5=$?&krCD1yKO0KRxBLyZ9y>F=3k z7!{zvzhS-O!TkaB26*>8E0NGHlW+wQe+cpgBfwxEGXZ&@hVTVI06+`?1Ofo0Qo4ZK zedQK6e|Qoj0D;tjO#8%EeqI0n!$klKRj?cf3wDh;sJoGXWNvBd17DGV3s53zE>$bL*e`2SL{iO~T?mzAb zP+QfJ@T580h3A5oq$3QDD5N+?l1o8{^C5$~aFD`>#cWKm8iK%GL{InS020c;erV~g zr}V+H@WEva7x7Ufi^~8fFaT?NfD{A+P32NFS_f`sAOH{~009CER=@!uF5%Bc7~FsM z5*O!~_!JB?TFgwaNu@fT1sA}ApoMUMW00IF3Fm@A4!=-a6)vwQmKtD1d z0B3Xz7-VDn^m3z!Z1oBd^%QyH5dZLe004k+7<$|AkzMGM@@)~%99LiFN(%$B_kDa1 z08v$eL0KioN(#+E_yBC;w80??aoT?cu_I+*3|;^-mgK@p9K1Uw)Bniw_!!jB6~ zsnX-z0uE{bhhP8z0YLz6CddY_0C+F}00BV&If=3XtH2wK0003&02M-PfNJmt;}wpP AW&i*H delta 1284 zcmV+f1^fEG4Xz7V000012`~Tv0YRF;8oVec;37jN2|!3JSxtZd?f)qc_gb~>n>~{H zyQo7e7i@JJ^N_ayBn8F~0MgSzao)TL-<@WA{#&G<%ncsbl=|cke}k%ubxrHZkzo{( za0QWY1(9$CMF0L2Ja5E>Ad%n|ASUh)9C;z`7JwolfY=;>!XToEg>w6Mc04Q(^xZgr zV`fSN#@;iv)cA(0TeFI{*OS3^-wYF+Skb*(^qX&IMIWegFV~Fanm^K*&>V z<%R(xAnCvYz+r_Ie%mnP{_CF46hd@DGQk`omZo%)l+h z1pmeFz$*X;zyLro2p4*Z+z{9fm#-*9%H_?4Thg%n0Ez$%36e3WysEa6B+YCgWpL)% z2Gg&+5DXYtlU<+?z*J?+07Jd6CW1mLV1LR-|FGZ)0Kfp>Ms9+M&9ljhNNubja-$Fy zlO2UB|KWOV|2N&ZTWCT64mJT8g@eLAz8q?4Z(iO22moWCMjJob^vJqM4zxl50Rauo zDu7+!k()m700aa<3J^Jug=TbSBdC4~K$`#z+i#TI`;aX`!bLpXm7(hQj2aDeYk$YC za3NDNw_a_4Pa(nqfruxJsiAQP=G4$bRnZJBuk#Ab=mLn`5YTWnU01V^=FWzVbB4-#nkV}9;332X0BrSZpzyIOz z01P+>fi2+6m`{?`^+i8}4}i)7v46#U769hY2#Q<3{2i76Rs{n~Wd)0#uV?_lq!Zc+ zV|fe>jEjANK64-l7LN`nTUgSN00;p$gqqLKFc4x++!T-Q*yvEPlxh!uoBvS3;Zy&n zgaIe#nhi1L>s}mBLmvcRU|eBC2wK+>erTYTzzC4xKt~dPGRQV|1qqJ)gBgthFVnYW zEih34+P~kix%b*n zhkycR00su_lSn$e2rN4dg)37=lnyw~;QRjY48naJPiY>62F)N5BMg3j~$ud~IH_2JwOFVOaLrm=utaf_fC~y03Zwpn}SAtpa2L80ZNhC8INMm4O+DO z0prRr9~9-_SYE9E-rNQN6@v?~z9)aO0eWU6?gc3NUlk8nQJWBO9{_`nP3*nk&QIjC z?*W`(7$GdRUpf2z_xK?603GB20RVylDqar#_4tO2XQ8;k$|0YLy2LTdnO@CM_YyCBH` diff --git a/samples/h264SampleFrames/frame-1386.h264 b/samples/h264SampleFrames/frame-1386.h264 index 9431666b53e117150fedc4b79034b8ae41c7fab6..530d0828d8636d4a333e7dfc8e35849e76f8e26e 100644 GIT binary patch literal 1835 zcmbVNc~DdL8vWgyn-DNUNK6C_;eu2VM1mqlmJmRytg#PNTB(Gkh05{*2n4s>D6((X zKG0EFijT5c0ii{zBw=%*$Wkb_2!uswA0RBG-k*T%{w$rhC#plaIiEE< z$&c%?1uLQ#4S!o~u=ct|sah8~6?IR)elIeHQ%bU{JM^&c01=R2#*{<{H^?*!h!Y7| z0D*z;K~FB}?dsE>O+ZWR{9k@L-(%ouYDl?~0B75w&`Ao>pWt8Ih5t&WKAX8)_j;DdI-|6T+B(D+08~leq;&FNJ^z z4PRy84UQulvScf*gu_o?L}u80(3qdz$`x*h(mg{nfe)u_~uFI#mi<^S(5S+Of6lP^D-Y(+4Euq*j7$ z-h-%2BNavlZf(DWVx7*u^^-l|(0x34z9R5gJ1=?Po^oXy~<3ty9!;lT6+E-kVDj>Y6ql<*Mq)D)&4zj`qKMF>u*VJzdKuuZg*M|>w zk|OKmB>Y$t6fB{4T`vybX5uWbK@hy)mBrafT@4bY2&?vc!$i%3jZJM%qmtY99DT1| zpoe55dFSW#F5h}ec9R9j*cn={;?-A*BIFR<+t4RG&{;k0q!t3}2V#%9gr)7p!sQSRGXwu#SFni+c&Ju$x3}DIEY{Xs)H5%*s2?Vk*iAaK!vyO9j}ZX`Ua6p7So z5o<+sg3Xm#DRqfi7g&ln*0N0sITTdX$bwt~S5Mg*Z({|H+C`|^6y6MWj08&EX+!hy z%GSp?J<+M`UCL4e2%$HGn_l}eRF?V@+jxvjFbH~HekwoDke4B4o#kBVVIctJo*f&} zq>oN~`eU&Z;G#htTCo{SVX6OkK50KSaIWn`p{XFD(>>kee3*RJ;pJ#sg0K1pDDG>7 z@%P++p{r)-xO`US(FPtJwKv=2Lq*aWyd%1b9L9ewNKKj~i1@qqc75a~8o2{VmWO<1 z)+CFCmYL@0^DensP&S5X)CQ-FPEm$aCsdHO^w0JK(c5|mcYyG(Dg^t}>!B*?maM-N MnoATosUS@J0ofU59{>OV delta 1507 zcmV<91swXT4w4N{000012`~Tv0YRGJ8oVke;32^Yje-{KFaZ{Z$yHJ!b^rflkBb?4 zUY1S=6>-1=KmpnY3zh;X028qQ_MnAa7|MsyzUjkd3E`K{=)&dmI+v z3OA_o0&{y3Hi_`YKmdSbk!ED(1^9rWKG%!@1OTW2 zIplyfpdiS!kthXmqWF1006;kAix@XCI1718B1!N7F{1$191k%t4*%vEH#-0h2pstg zX;bt;xs;J7`G5!q64)ien$1Khf6SU_IDmivKo;zfz!JVGp&y0tc>BN_00RS-p#9=n zSLQzH1YphV1GqxX4FF+y7&le!TtUJSNE{$wq@M@H4CjFkSwbsLY&z+#E;Lh^MjQnJ zU!?qe%2pr?u&}HES~g2)$usx$K#@f-@qCVi692paD0dl-J*kUxU+@3-fA_$0tZX|Y z%zEJFacZHX3sM%K2m$~hka7#zyJ^l4C4UKun{Ml6I_8H z+!=I%U`K?yNyDP#DOmTw2mlBJ2UdnIn7$EfB{8UnyY%VJPXHN65S?itcgouZ&>GMT z3IZ#+X-b%iMj-#*djUL!e;6DPf_Psn5A*4v30FigJ_g`cG20IS#mgH9L?8aJ7{g;T z7Ct)IOtyR8xd5yj7E?Y*nd9wu5K-W(KPz(Iir1GsQ}GpT?Q2nJ9NHo4W5 z*f>f8QZV1J{ppipe1%734_FKU1OpFBd<^gudS(HTM1S{yBV&LSe;k|@wu@v%63~0C z2mk~DhxU5=hmF~oDIZDai;QJi>i7D0mzG-h_!W13bN|jr4N$sMvQ4|DtdqW{rC-m0G3%t9oUF}{2cJUUj(?h>>?IG1OuQk$zUCQv?~|Z_zj`4 zI0U;KS!-N;buaV6k?|vu@Ed>O18cMr*lcJ^01FHhqsJnF6qea4k^S$01JD4#5JD(q z+UzZw$N%303{bKxq+ryhDuq}z!XAen013_61cYDz!}AOQ!%hEb$Vc-j%A<@m z-}5sFgad|)!fGtM5ik3UAA|+q21bPy0eB|IkfPmE z{Q!rT4k7A677X~mgakp8nnrRk;CD)ucyWuG6jz`B@caN`Xn#eN6O_Iq8YqZOcSFEX zKBWb_`_CkjU;pflgrpS>S6-LI4uzp{0db!(sQ>%tpnSxVQxjF4bZz zykciN;|Ymw@;nHkfC8&v7!hs7YyNZhiI4*KQBmoqUwBx60b>wZp#+U4aq)Rzpz5jK zSdqjADx&M)`t(6phmzDNyBs+pExCg%Q2L}6RM)xoDIPVlU$g`)#m|%;F3? z0U{q!28JOEQVG$ky%dKPw9E}!ni4;FNCv>C7juAC*r}A~a5@0q6xk*CAF(n>+haix zA>Fqh{PDSy(FH1#-~|&Z;0VS500BV&ZYH<}uK;*30003&06B@S0jt0pi~s-uK>!s( JYk+F-2IE-uiH!gN diff --git a/samples/h264SampleFrames/frame-1387.h264 b/samples/h264SampleFrames/frame-1387.h264 index f8c779407359baa9376285d3ee90aeb763a9300f..673a4b2069b2055115cc4d97cad5d57218356a7a 100644 GIT binary patch literal 1126 zcmV-s1eyB)0003AFaQ7nL7QM2yeucg_?`sg`FsVO5ds)&K=6oD053^9o?pzC*{Iwt`Z2lj*CyZybk`FyYtV28v&1$#|cJVXC?LB!Yqe86Iu1m7&z zM3gL=!G@p!Vp4z+4+BBq+2$0bXMe&?4mvWT?MvVyK@KEHkzoi7hK+2DjKSOd(s&Mv zePazc)8WnGS6`xs%=f^iZpJOTk8-Y?AO5e-@D@WUa>oqsQaAM|)v zFP5(;KqxjOfSV3j4K8#x1KgIMTT4X%0DxGl^*#1yK>$a{U;hv0KyHn7j&3zyDwWfDpjr7%&UEB(UL_|64sTAOJ9A6aq?tJX7hQL(!>F01yyRVbi#Z z40?ttBF%>&01y`d7zZMf`9K*7V3UU=S76@&0D{;62pr7F3IT7pKoFtDg6oQ{Am~QN zAs0X7B4jd=|2oZn)fbU_D0r1sl`U4=Z0pn(*FJJ`f zWl;!941GsoUDQbeKxs_2#tTXDt)Jil_3&O&$p(+x`x?PCiZ57Z--3r=IyN1c8kJ z#Y_v{f>Qkb=mieLuJJM)KtoSg1}g<`#Jo^AC(Hq>fZ#|dUY=jXWTRqvE5Hl{CQc{- zU`qJ64jvbYUV{#A0{vf(j1u4sCLxH!I7!sC;Z?o^1vC-_RF@}CbO&1mXtV(g8wMZ% zuwvRo15J>j5fO??jo0^p2nZB#$0)F(B_35~)p%;(|9>z_;ef#-ZY9WAsMM&aG8+y6 shhP8z0YLz6CfEkA0C+F}00BV&If=FbtH2wK0003&02M-QfNJmtPx# literal 987 zcmV<110?(a0003AFaQ7nL7M;?yeucg_?`sg`FsT&BnV-#1HvIJ0g=U>P=8^H&}LJ= zPzG-Ge9(q5FiAR|&x)&X8%UQo?6n|KmTSOX2}_kG*} z0096eC<=Knfsc~%gw!uK)c~_Fd}*KngWv`S4@!kr+M9^#n#Rxu002M`IAPLyo}Sef zi{?vsYES?W9u-MI84#>_uF!!8z!(E8YnXNBfgt4$$$9#qV{7;X1VA_NluhOIdQeOM zcmQCuIeK|AAY2c+Mk87eIswoCK~j#wbHOEwk^cB^j@5hmMT2fCB!s8@6(q9)#y+Ft8b|P%rTt>03+-y{y@G>8woEJR`@F$lW8}f z-#jaq-HHNdjTX$+TZ{X2+K2o0l*nSw}kEEy+4rIo)0rbAOUay zAa^H`03aAejjZ*jU~o%^M~osIb%&&uKFHyIPXqA{$Ra)O_86zVUJ=eQPFd%yp~)_~ zUIPq_4<@+L1uf0i6q9r2L^8Sv%uCXyCqQ5TLXn9vY{H6NxYbo{Hqmhk_CrN`F(Q_IOv$K!6%k zEwO=VX$frppaAtg1?4^zrhjZ`!eDUt@>WI2RY|`51zQ}nNm6{ogCeHB&;nrnCCAiB zMyLD)uMrN+k=8r?RyMhmDh+z){16q9!};Ud#LR~`jnn=6|1ZuUe2OCg7Nv}`kp?{8 z{hb3U;ZuBf+zn!s( JYyfKT2IHORr|JLz diff --git a/samples/h264SampleFrames/frame-1388.h264 b/samples/h264SampleFrames/frame-1388.h264 index e7badc04c2e24a694d37bb2db058dce87058cb11..b9c6723e745fedfe04f18de61807d2f4507ee7ef 100644 GIT binary patch literal 1285 zcmV+g1^W5`0003AFaQ7nL7RXYybR~~2=G#1fapL#BY60Y-{b)YyKlaq{=@^Mp#F{E zBf&_*a8~89$>0=8m9XZinabtsmi>RJix+RN7XV%7c3YeO{(;HLKO_6S;A!h^mfIu$ z-M$N8|Elr&zkGNS3;%>bL<;Z#aN&>v0U@8^@N}5=&dI<4nMsW^sR`8WH+@j(= z%DKf};Te-hCI0}xRT$X-IfmlZP2+7rvJmc^?7gLWi? zc_ZI3;5%9TCxPqdfyj*e{#@&Q@X{9XlV3b5tB_Do5RMIn?T>p8Z^3EM*IXaJ-V*kQ zy^H^=hRls9A~emv{vT}prjEQcizAO03m_KFklySNnyh={r@gNT zbRMZd{&}4SAAkTL3NUM5@&W|9ux$#lnl}IdV-L@wp}RNiQAfXH*2U5CEDJ3c>xBr7@g?>CK1LqTmb*TUU|Nc-@`oGct z8=ngW-$^YG_f8j2uY>;d{AhhiJ$_&R7fi?im_XOBKP=W+QcQ(pC{q320&+XR1+>4b z}XayVoKN;5G>M@aU@X9S0T#(c&_Ofhm5(&i%(h;0CV%crX9}0YLyciMRo)z#EJJ00BV&6+&(RYVZc*`_V}? literal 974 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 IfNJmt<900n?L&H%RadH_QLJtZEvU(;)+4DR`i z97#2i2i4?)ggno7D9`{14A=ky0AK;O1_v+e|NXQw01m(fZk7UQb}a9}gaVKx*l+33 zi_9p3dGv>2h$Z64@JystnO^(I0hA!7hzR#?MMR~KN%@-x4g#c#W=1TeG_6X~__7F! zgOiMars9cS1VwOgBeJIK#qfRv5Tk}HfkK4Oo^YY^;lKgVhrrs|{W0^)lE?s9#0IC} z!-JF3fr82E_m~LORk-3Z((@Ui_y7b00?FDqIWkfz2=@EgMO&H4j>JQL8a)H}Z5WA=jLR-I1j1hrAHnqXE#f(2cN=K|0O$gRk@ zNB2$zc{W+6AHUy#0~HMN+`D?kJpa4Y00IF(BcfM8yws*WgL~fwZG;9g1TH)Xf0j?trZjy9}|Mr23 z;s}^P;cl|gGyR}2en%jMBJrh-v6@rDyivsk8~{8oR#_Sq(ffc=X($OX?93o>UsG(dps>E9}L90%QSz0Dw@d(3l@16cepCl3F+bFaQt-2#K&T^!O#f z(E7Z3Uj%F_90H&aLjXY-KnDN;099}RcYrx?ysiHo7puK?HB_pBhBPbSDgdCrgfX~> zGy`G>Xx_gd5DNc6W)=Vf09Iq503gl)>&yTI0LTg$AUu<1MQ0x;*8y{Yge1d2xU>X< z2no#N00W=ifW-w{_H-a7SCP) z0Dw>cgNQWeAL-42T}WcyLGb_+z~}_p#ES@;2CBu600RI7{wN3o;SM>`@tL<1i?aAK zI8-VU1mp~i_!y$b-(=c*NQ~bOQiGrk+vew8-@p8U3>$kdqJs$f>HVKuyhalykxqEf z>+k`<06+`@iVeQvC-Y)84xQ}>001BcDS?P{Aa&rDoCfQxUJoz{j>5TJ+WWu)#z5U7 z&!%V;;GDJg+9V>J9rj2T*oyT$09b$_K)Jw`x;S&Gz;a5lhK3XX1Od4ifCoS{7f;{w zOhisau#MKqd;kFeFvUuz2ft1s&1jyPj9c-q?z3gRKlcXZ0>8ztJ@53g4+H?iCAkm- zB3w}CLmdXdJ?H=sfT(JYkIk?Cx-R$lKYM1_->a&x55NFG3@XF0xe))GxV&a2$+lns z2nT=wfS3Syc32ni1RN0nCp#Ar_F%A8Rw<`I34sAasnl-u2trOYa_$TPF@|af2?H~= zH(Y*IL*acX;azy}rRc_PU`DT+bKcjQFggL^Nh!|}e$NC0oqXt8fzN;I5f(S#Z)1l;mQpB)AED{`}-t!s(Z2)TU2IChQ BjL!f7 diff --git a/samples/h264SampleFrames/frame-1390.h264 b/samples/h264SampleFrames/frame-1390.h264 index f866bac52e122a36c9213c00e650f8fb10c67273..babea8d4f6d1c0cff57acdedd09b68d49b716be6 100644 GIT binary patch literal 1364 zcmV-a1*`f10003AFaQ7nL7TuDybVY5@FSP;0USspFiC*`0ssJjhysK381Vt{MRyq# zyD(!0fB>Ta0Rc#hzyLs08X6NoQ(a2l0|sEW%L%Vdf)vh+|5-1B7;bh7P|g4dCMpXg zOE1JLX5&^23YfywgC4cEHNbtH09XLRg)BnIzlY4M_I~gH1OT7|jDl~d$JG@;g;kym zzi=wil>`6`oI^flAPlRaL&%*SATl;8D}CbtF`)oc;8N>gPfddOUH}XVDHF=5J8ScB zcrKSh^+0jDc%7ig7YvJ#5MYXUPk@;PCLI6|8+4-b?NCu~)Yu9ynI;`?4~u4pm{h{p-av$bsLO<$O#spzE3!E75n3L6 zoO}kCgH*vkG>85GH~)4PKVIM zusSKauyVox1P`QgsZYEBfp8m{LqvqsbxOXL`p^If09Jkjh8wjYrNhF{7AS4nJcGfV z`swfYbl@o=!@K2NPu&0jAOq~c0KkBmENzVl-V&$)YP^6*I$6wW78co%ic<=%OPb)u z)z|1K1<)}8sAs?cRCWVFl&ch5n6Rbcl>3N?KzzN^R+qc)002N&fEe%txKg2eyd3Xu zCls-`Z~z1is$u{LY-R8427(7mMC(wFp{l*z;20dIoSD?C4oHPp@Bjn?hHtB{eiDL) zk*5L*4=H#Fmq*QbYAShpA{b>L!;nD45?jM!p!eoMfk^x;6lhhw%NZ$9OaksAf4?XI zo>l;;ctu-LJuqzi5H!)_Xc-t#ygLl0iy-hA5(>zPfO`M~U&;VD4g$|-UOs3KEi(uJ z1Pg!wK+{vO05l6cvkz2u-IM={wm^VKCa64YtGQut(b#!^7^;AqN^ax==1`!+rcmV^1@aiEnix8V} zA~-w5s;0Y(go%H_#>4;w0>2qEc6tCO%sy6sLl~Ut4~7~9r0lXXV|V`s4tV@I3Lm2w zMu1eHk4xdM`Dou6ph3YhMEUeq%ZM@_p}~gvM_(Yf|AX)V1O|XGY+CvQ$N8*d__7mu z((C-mL11=X@2NN*0HY@Yg0e@BlogtT@ByQW(*%Sm$7mMFm8F0&cmT>PXk<0@;|Rl&)Epz9B8v}qfDj@)FDFrwChNxics2kAGngngck&rI1jXQs z>;McZR`4La<@^s)nQek)0QY|aQj=G~|BL_*m;v|*@jWu2X!8Qgw$H;-y59%!Q~%(H zga8Sl01Pnjw91_>JPa`ArcpTszz`y@T0zA-e7a=6!=#!#RTdm81WDrdcH(*9J@t=F z4}zcWW@hi(!@t3pR94~G4x9iPU@EnL%jijpCgZt|01(Eujw5mb-7oMrL{=3^#^pQz zZ~>#T{BtUe7GM9o%-NeW^KIjB7NBGd{3bBje}Exa0003&0B$Dm2Co2kFaQ7nK>#_4 WyaB7g8;k$|0YLy2LT>w@J1D literal 1068 zcmV+{1k?Kf0003AFaQ7nL7QM2ybVY5@FSP<0-gjh;Ul7%ZUS%7|K7k*KmZ^X1`p2h zBr_F6B}i$l`}kl0AOr>g6iWeemLZ6qo+~4P(|`q-MiMp=DaUD7JOmuEM3(5A9nvtt zYkn*~2msCq20#G;JHoKgRr`h6+Gq*}0pewLLlc?C*+@-|n;M*3)``k+1OTL9Ye;^O zIe~T0{s2h*hDez*1cS_Z{F#)z0099J#oz&^9FR6rdfW>_NeRlp0sumqF!4f3uHtvY z4e$j306-`;VkN-Hwuk4pbdlgBU??oF3T=>m5q|JM0geR+kR!!dE%0U1?0{{jSAurI)OCKG=5MwGn6^XE&8BHmnJ}~cx+oRJo^DE3`ZJ0bO7;QIf$Xm2^f(K!EjEH z2H+WJaZ+87-~c=T5`av~H3tHTRUhUK&u_^QPyhV`Kcdz4A_7DhkAO!tVkl&nbOV}m zTP;8E&}e6KYHBFWBO4S&{DXnX8Nd{Z;u8OUykB;p0{cCUd!L-E>B1{11(kozKh@<4 zm%#!2VWN@w3WPfpj2IC(u#+TYM*yV~C*}Qt0}F)*%pFo2z!1V1SW12@@sNUFd^I58 z05EbuKR#X53jk~2A`}Ma0FK2HfJ{Y(_BvS;4gan5WX#EN8eO503M0%#Ov7Gl4_C;$io3A3dFV_R4>EsvY*%vu0yMj)lo37&?SZh7)JmKxG#mb7l^Zow-O_P-ZfP%$Tk{y z{|7%<00;zrGEa7T04K~oR&P_8`O+Q?HVI4iMpo`ChPD7wvu#!?NJXi65FYsna zi1AeM3jkcKFJxBc@Eto#rU&6q*D;r_^KTCQfx%+FL23YZjsiY4UoZK62{A<6cW3~Y zt)r9B5qwx0qA3Sbak)#_4wgIca8;k$|0YLy2LT!L*@CM`Y(!5*% diff --git a/samples/h264SampleFrames/frame-1391.h264 b/samples/h264SampleFrames/frame-1391.h264 index 68b6315f301fe6a1d3d7991280b9ad6b458e0095..46da748fce10366ab42dfec555c50e56730b8b4e 100644 GIT binary patch literal 1813 zcmV+w2kQ6$0003AFaQ7nL7U(jyaj+xC;$)u1Ok8#3p8lavu4ejG-%ngU;n@dk-z{z zS<3(c0MI@R4McH&)#1B%9%NK^EUcmM$am;iGGVk1`bJ%13{{lEYq1s{j5(50M)sis0g@BPMM za`!L+ghr(eL;re#13GsHB*&vILxUAOBs)zI#MV*LOJ!s*1_5QKWW;<<(Re=;r?>L` zghK^61PuHF1bTyd{0&r#gks142fzT@HY9(ddhh{&DM=LWN@(eQDaP!dbH)4k_XG|F zM2ptO?QFo)7J@&(0u*z?x%|EYgd2dF0$G@du%-Y#GncXcmM(doGU>{qw}!vHKTKPTr>moDwqY`?0AiRe%4pAvsW0 za#)uG4@^oPlf^Y#FrV+dBQ}%%UpRl_`sxGA zI1G6N(Smid1*IVp;LLgK_rPA-8VWiP8|?#i+CRjzr~y>?0N@G%@@QRyVyOVHX!6)8 zU_DsH?L7XMSpqTC%7X&ADJe$Th)=sAhI@!N@q!u< zoqTkIDwPZ4#K2F0I=_J6AQ(>%<0XLT{}=!W6aWB$HfjJI503l&Pyh%4Y?uHTFld@4 z#ZCkCpal~^5Cns1p!jaK8IKD46cB&~Yi?D#|MGnyRq4sk8!!GZxfPTEi<+UQwhSm= zv4#K=Fu*r=vxt06rW9nL?rXjV1NW5e@t1*lcJu z{a_4U05X>3!ir@jzTgB1j|<7vWQn@*zd`!|0}8dg2rpQE!_=l*4#6^jE#JVjB-Qtf z01lV|&;)p{nOHP^fk%fgiC1s06qplJJzH4$o;*dCJqOk zX@jdWL5b*IG5q&|p&Y%ty)f-l|JJs|MnF@-=KgH(2@AH4_z~9z@j`jkfE^3N`zv$oqm7yqa z#t-qdANsNljC%w9!kdNw4#`2#+vssExc%Xn@UOBCT4Q8Bor55$*WZ7zMmva66Lg%@ zVnPNfZF*e$4Ow$7lmHwI zbFgVC5=sKl9FdR6R&`i9$g$4r+y8sRfjTB2erLe-UovY~GJ;4Zgz80iOaBpj`UdgB zpJw~0w>E8#XZL_{AOHXXK>%(h_y(^4crX9}0YLyciM|1=z#EJJ00BV&6+&--YVZc* D`RE;8 literal 1505 zcmV<71s?hU0003AFaQ7nL7RXYyaj+xKmb4l3TcKIX{MTCh8k&~|G)yA00IG@bN~SW za1sm~Mn*N8B6oW*99?jP02~4UWsm`<)-bKWIOqoEk>l_HDgXikfCmjq36bEV>{oVU z;20r-NV34QZaY)i0S5j72Nk0ANg!jYZ>Gw2>xf?`+!}fEWX_TY|)%2nGx+ zNv_ZcU@9`@fFa(ng_XmbWE)Pt4_-|KgjB(lkN;o@0Kfp>Ms9+M&9ljhNNh0&r}Fr* z5VU+?$P<77fL#+X(O=N*&hx)--|za)UjPq7^^?Bno&Wx*5(+qk#q$wLG@rfsepk?s z|Nj6BhwMWkMbsi~Il#Il~Yp3D(&ecqDvzHlc7az!@1y%5T62Py=$o zYV(i^jPG~|7F!y1o(D)$3_ztkNsV6r2Hj^1F+%7dh-%C(@ca^h0Dxe-K43Nw z+{w2+;u0L&-Qqa~$#iEq4^Uy1hAqrj8CVpkYkjHO-*$r9MS06>8Pym=K>B0{l} zcew{Z0;8q?3kh8cf;I1GKtOQsnomrNe2+9AzTf}^27ptnG8rF_gCs}p-G6`-;p+!8 z$_wLd{>eX0)y5s|J(!M2oxn6N>N~Akv!Rb>?uO& zs4@vyQQQ*X00aWcPyi4L04Sq8qu^XADYDKGn8i2Sxc~vcLu|lG z1B`Ea(QqN+vGX3Z2+(bxb-<@_#~CNLF)4Re3)z=T!RUcQ6KRrU+4=_nP#UJ-B;7AAGurJHzU zAw^C(+}HXTkP<}z0RVPK&zoEzJTS7lO_LPZOsL%=q6m(we}V~C;NYz0D~Mric45l zY_i|(z}ywBf*PeskpJJj0gqfqXG8py;h*3^9Ppp9K?nd|meRkkzJTbe)THIjm;VF* zdI0MH8L>l8=fWN+1mFQH3HaPVSEUx~Y#VWe0f2ZPyd$rMr#|7Z`oqi0Gl`jGMA0WcmKHSdPV z&>A)Ns!Ae4$)o*Z1J_0t(7rX;KQZ{O?;=H;1{?{|G7W3Azqf(ZOuSuDTKE1UBb-=k zTsXR_-_x|VkVXyEGBme*bK>%(h;0CV%crX9}0YLyciMRo)z#EJJ00BV&6+&(R HYVZc*-JqWm diff --git a/samples/h264SampleFrames/frame-1392.h264 b/samples/h264SampleFrames/frame-1392.h264 index cd40324dd9c882e21ee5574b465423e1facdb941..80075709ea7b8b0b49e4aeb023baa6cd491f7cab 100644 GIT binary patch literal 1227 zcmV;+1T^~q0003AFaQ7nL7D&>yakisVG=t53tRyG^zePjd7H=iehk7eW(a{$Fc@wC z2mk^AAP6B3r$)#7CJe9XSK?Ow=s-mP`i2P!-Mk(HLKO3jh->B5u!1{P5~L1y$FB{?5yQq{`Lk@gTx4kvPS$# z|3WB%!CL?EKJL8$D)k7bGi#U4GN4Ali?|%Rya#%Nu?7Ji4oAXh0JY!=BF6mSMPcBU zK$^B$`VLp;tQ1U9$m2OnijYSZw1JZHHNel=?#7*gpoh?^@rR51O+FNz){-|-+#;DG&mZl zEdm(-kdcT52S*gJlBpR}@CN(wx+rb8_4N&s~1o{L4CSs_nDd9Z6goPn-O^FIY?(nz=G6FB|2B-$|<_2+O zpu)HPhCTuTDRvXSumc+l71&Ox^Geu{_wW->3hki=5EP`}{#a(>PH`05Q+@~g@(2TZ z(_;E7US?o*djUBc0#x)hhxFl;<2W=xt&~?nPIwOWfh{NQkKBL(7FE9uk0p;lCNu(Y zOW5CCl=}kYl&A9nkSYJ{5C9Kz_46x044Ll!m;0*Hr~AYHcEs5E4o6oALHG<9CRuK;*30003&06B@E0jt0pi~s-uK>!s(XaH*P2IG=q_l5uf literal 969 zcmV;)12+5s0003AFaQ7nL7Si&yakisNeP4sJrAc}z$0b4o`4_#PT+G}2smq;N%WtW z!HA&HaCj>P!9j!o2G(YTle(gQ0Rc`0D|zb0$YCd4|8M~ogO^_5qDN9c(%=5jZU6!b z0wo{=VfpiQT3_SecmNrI06-jg#3*o9DmTbWqRwa!N+4tf91)R8OQ)Y zVKR##P1{o1LvzYc-UK!=7#mlBs12+mpo%6h05<>wS0RJM;B5?K*Q+o91Q);nLLdMH zBESNPn&sOVONtt^!Ny^Pk!v_v;!g_a;6&&sU}gOc!AL+w-vA21fDG%WfY=2pYYad8 z#sJ&^C~nhErp|-@z;Lw?+$ezzPSn}vOMnKTK+0Er1jP@tm?Ocp%m6?E-7!uBcp(k{?+Z{MP^Ic| zr6Hn8)$QRNqA3z3VTWY<5GL2bgH{7w39=xixtPGtghug&fCWln%Z^ZGynnx zfW-xT`1lEIYakkcqyU5*lZP;wlIXlFfl8me3=z&AOcixdPL#GnCYUDp0ANF&8jS`S zFBm-OXcSJKApme`z5p%!cnBSa&?*noyaEG@BzTi!Z&4qWE_ya+@VKO45++$JcnH** zRTZ|-KmZ_wXz`KKAdV~_eXaunW`M&0%G%J3na{yU95_MYT>f7HA_Nc-pg|fV92DRa zn8~~VAKK1W|9k{S4-g`xvA+<1CJG>McD}z0^B@fvPICdfQ?Few`hgw-F5pvg_#NsF z#Rvf&4n#pRgc7YF1TyF!--5e<0KA|({o4=0Nre>3Ba$@V{!_v4?K}uwffh0FaYpvQ zOo0SXf|KnB3PK;X=6UfeKeYMrcpIuf90~A;hOPo(;avX;i4qVE2!V4j1q}$#csBL` z8?_(|5Nzl`OlCWCY$B(Byj!RcGOQBuu|f*^b`+UrF3$RRM=zlvh-_1d3PJDTa1LYy zU)(`jU}qL!pu)8bd;|hV$WHpeBLj-;1Y`K5+8+J_Y2jV8Ai@HZe7)TkQv%Eo`fi^G zyb#DXnrwacS48t0ivIW$k+4qIhOkb~68L1I1o95xra+CL1t1M@<8U9?6KWJmk3W3? z0+IfJP3V;H(x%$v_WC59VPtE^{Y)%heat&N!77REC r3IG5BK>%(h=mxI73uV3IGBCWrP3$072pVrkA|- zCWYX_xbaM;SgH;Q{G~_QfB-;93y!b=vHp`c0B~Lbi+|jK!-N6cq;+ryfF4Z>oEUll zKCt-S4fMb|1)07Qx0f2H4U?gQVRrk|P zfB*mOcuoLUvQS=t7rOWW0sssE6dJpvMu!Oa;_x~C`QRX+NkOUfj?(f$jZ!7AKFF{F zdq4tVgFOMQ#>%`*03rYYfO0?p>aZMyVNKuwcl*Et0176;`3>!I|NR0qEO#gec?Ff)0uC-^8Ymg}xsWGl4>bsLaBNH*6=4%| z0*|`9rFvL6x1nBN`{D`g58A<}bA|-s0z3|w;{OExD8L8-1wa5*c7;QETF!#%?%)gu zI50`CHMVp8h^~U*!X6J;sRWJi5R~-D_xpeV5CH%bD6~RJcC|QUT@=b-(ZTq_D5Nz< zn34vdvgkvX_%Tpe5gGFv6vc6$$}LZFgY*Cb0ZcFzlI=au0Pw6^cmOnV1BVC%a?#bo zpaWT;J$DBNIVyP|B*736$U_tV^FV!xefR(n{t(B<#wciyX}rvFfDIl10D!21lorTJ zqRXo;v!`+Bo8tp_3NRA7xn))fg4Yqc#6u0Yv;YDCKmZ`cAOmaQ|3Q|J0{B@7IrS=~ z|ACMG{7e7@0)XJNV9&%w-kPahwhTCv!oM68*f#2y;(96iz5oJg&2`@Mu*PccfAFJg z-;fw^UHT5#GgrSyRI-n{f~GSL;g@;PF~>DVh=p?hg!u5FD?N8~fB*g90T*{xtns=p z{`zeTDyH$@`ir9T0(^nU=aaqu|9FE5{6)C*P&~x50%_r2gaUw|?M-i}`+5>2OOuCh zwo_n#tI&7Gi$0Uz{$TQVePiR6_&frdZkA!qJ^F?O09VOwa}nv+gd)$B_;H?POH#}j z;OLt$g~7qMDs(Xey>CnO%$*K20NXRsJb~<${ESuo-VN5QNyKt%)q#T!0w}A8$nL9v z8;?6#SqQ4D|N6{tJVioM8}HD-o?lmdKukh(oIm^F%SZ$g+*ZHZDxf_VhA6uuEq~w_ rC;$KfK>%(hhz73!crX9}0YLyciJ}3kz#EJJ00BV&6+&o$YVZc*hBYcw literal 1089 zcmV-H1it$K0003AFaQ7nL7TuDyaksO6o3PO0R$`!BZ*>&02V|A=ka0jgWw${l2{87 zF*U@LVgM6>1zf>74+tt8^8h4J2T6dbqC{DI z;7|#J1|YzIXOJKOK&t|M!#Sa$cs1{(=->cSSU=$HL%(Zp^*|0B004kM0Z9Va^+*&v zP*IVI&Epf4$6%}qGQPY?-T(kV2}6toRFkdUvPV5((k-L06+qT)tUSXSj+XyKmxE3d;p*z zE7oGwS}Ybg7RSKO0t*NKt#&4A3B)wWw>&d|3N%HFGaDu(Br9+iIsrVtoK7qhkGtRi zni7`6CaSxB0#Hy_H|M5WJrSe#xP)JfbYYUS-HkA=5p&2~J=@&Oni~p2`-w*g5kL%S z#0?5uCbFSEkNzwU4+IV&r^W;~Cr-rnzi_UNFM?4a@R&FRAh0qs;0yo+0o_0`Le0#; zfVKU!SPU9r!QH1}9=JUl_oxUE>Vbp_3nhHIJ?1&aiE{*W5iBSt>Cf$ zfB+yO6^sLMV5tKKjz=#eaD~9^Fu`r3XPy=*i~s~sT-pd@4=%J0N=0Y?xGM!%2BGNf za9~G4Dc}GI2a90=X;+OPQe6zS?f~B-!~-}02p47!b+`Z#K-4S=z&UaN0RVUbfEWiE z$5!R4MD5L8#2}nu1P+F1)hj>vQQ=+!TnHk<8~|RH`mR6!`+yTu_7*>I9u5AXrUf4j z=$35Rl~e*`2spA8Xi&S{SQ5}U5=smX@^rHE7lL)=I#weIi`yEOzx#%q_z&A)O+0_c z1t4hK^s9+%75RV%8g{yV{;Oq~t(Lq09^JRf!G{O-gSQCUetS~MAnFR3%sYf#=bbY) zrM)8mhWPj|O|EO7|NrO!i@Nsg?OFfx!1hAQsWtJwXb|x72P2CWzi;>R#27{K7URmG za%NX}6Hf~KAQS_K>`iZ|xB8YOOLmpn{)2dRMuWa2S@hQb^9v_`Sbt9VEG&~s-)Fy` z{;&c6Te~ef@Wfg0drP=%zv~@h8WwcX0d0J@Ss=Xid; z8r)!lB}bpu43$&2@IQcDpa1{?K>%(h@CL5{crX9}0YLyciM#=;z#EJJ00BV&6+&+S HYVZc*EGWy= diff --git a/samples/h264SampleFrames/frame-1394.h264 b/samples/h264SampleFrames/frame-1394.h264 index d496ff81869d18c7e2aec4e811753f6820ee88e3..a5fe255a5ef9159c4cb7bb13c1de8ba20fff2bf0 100644 GIT binary patch literal 1386 zcmV-w1(o^$0003AFaQ7nL7G4syaj>3{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIFEqv06+jR0K=mCU_S$yNtg+|bzkZr01yV6fL4g=oC>Yo zHxBI5nZMuy(1%wEL82^@X!UylNaqlu8ZDiqK}OqC!z3862JI-$V}m0NbkAT^02JHu zfEdzf#ZdU0)pAMg%-O{NU;qdKfB=A?00<9&Su=qEa=;2e=bPsC z1K@P1kANMC!$(e^`|Gx0`f`=aeck^rii(+*Gn;CX&;l?8xU|kobN!#f3sN`$2mq?) z@Fgcd|8RqPFlil9>9~W$aNQ3pS-^lHZUvH2o>Y#_o)rJwzy-ivwW*vY3FM80&;SSo zJ^)cYlbEajHxYpYFE)g(^U0Yl|KK5YI!n~)G2wjP*85us1pomNfCdH%&lPTa&6XT{ z!IuzuER)_07E;~E|G0z#fNt#ysNm8r7rFoTkN^k-fWWTnG8hV0R0boB|F{4+XaJHQ zuIbQ-K*+u=o ztb~z>#F?T0|8m;@Hh=$uk$*-20ssqA2>?*RBMbUbkYV@$AcbiM5YevnVv9QJzy+7W zKxRR3R0M$mp@O-I00V^MkgLVD7d0372}l6I7VQ9Fo|!Y_pMQ9azyLr6u22D<6e|K^ zSDXw{DDO-5QE6@Mh2}OlfKZ+!?kpJKT>9m=$P5Im)01yHo3`F1*k>*_p=GS-t z0s(dg02pJyX|}hobP$`weEuux-4MowM{z3|SFndSi;-Wxrg&;%|1P>@LMA0{7**a`6 zK@MAA<{~lw_^yBeAST2>07_Xf4Wtky_qy|JZ`@y6*6}a`VR!%ufeVTV%&sIH;fH_% zWMd3L;jd!?6KP!vF_j(6l!C97}FL1{kBlyadP*LLo>BHH`}i zoC2^UWIyrMl0+B1z&G3m-=G5RS-(Qr{gyX@|B=4j2m5pQ39urFfIm_U)SY}k|9*CF6k3Ihs0A!d7J%7zH0kZ;& zlI#5c)O2)oKn?-2EO^^J=Kr_}L&Zn!IwUXO?MypwuAVl3+WbFW=A;o1@L=}FueOKq s3xogw0YLz6CXfcN0C+F}00BV&If3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxL?*bVTf`9;>X1lNe$Q{Z7P#W+z04sn9P#PJ;z`G@sGCoQ$00amC z0Ru1VDzJeo&I)ciB3Q)|L|ao{ur%!yi*1BR2(hGA{z z6YmB*_JZP8okr^gF;%3~1?9&E3d-FA5D}ScQa%v<{NPuSv0k1Zzn`E6DjD)i7jHYP!kpod`j0ec|i~<9e-DD>9ns$d@?%?>c zhP(xrqFfatK;Rj{a9k*z4g@WPk%#|u0e}z^suJ&44`uYE@BV-=z+r}nh#-Tp%6nRO z?%ps3KmexixB!BU<_?F%-S_|B^TXf_2=dJc%#5EV|3-i{yjS)ZIIt38yZ{^k=nPDd zfi!ssc-(vd7Hy>A(}9W;ZI1h{3LNgRssoAW1!4doF7!y?ct%T#LPpcxF^vgW00;y< zAlRxP$`*?)viLC+1TerP3I~oe=3o#r$ZG;{i(Ba;JTL$d1qyf;DqfD8$=sB`U)~wO z6a=3~r^0Lm8}i#S5Ond+V02mqOlsa~!d%5$2Pt6sr2)L{; zju!B!twP!%go+375E$VA{Ylw{aWkNq1WErW2APaKr~+g;b>jdSSPh^9MKoEapp7L! zxnLKd03aO=A^;DJZGFJNpw4~eL>%ni6ElTh_W%GO00a|$pzQ_OW#Dorxueq{m z4z_JG|J|93#PDw13+~i-6Hd6>+ck|Mw9IL3d7kEYxg>~_&Gf1xjp|qzwiZ=Mz4CP0cPC_XYeU>Ll_qis{`jyE{PH(4|JZ-)t)Yvvzda~Nd~vJ# wzx%_0Tp$1d0YLz6Cin)g0C+F}00BV&If=djtH2wK0003&02M-SfNJmt<9p*uZU6uP diff --git a/samples/h264SampleFrames/frame-1395.h264 b/samples/h264SampleFrames/frame-1395.h264 index 325b532d15eee6b86ad9cc8558160d8610284311..13483673d248425fce945a0e6daf09bbd6245168 100644 GIT binary patch literal 1131 zcmV-x1eEAFaQ7nL7HG1yakbe5D~7$StONa>PZbfA$xX{GQ(4bH(z8NdMq#Y54hSLYYP zV&DP~_)55^<~_U@5CQ-gqm&^|x2DRZ)_(8+3IK6XO|+EiVm^ABt_EMYI(sR=1x6ts z{pMr<0sscM7!DvLY2iU(0o%)QfHAln*fnKwC7z)y4)6fM&Uhg-g>70ixZbPG&CTU>O^ldVu%j zU;{(Xwg4F+M`p@7zjOcr`>+5&!ME_RDt7T3 z0099F(g1J+!du3PQ5~5H%EvPlWw<771pvARAThl{)qo&FT>4wk41e7pc0-{M5mI3$xZ|i^@1OrXwRy0@+ z+{{1#AV>fL1Q@M=0ztE$1kNOAeRca7lX^Fz3V*?1uQ4DF)bW6Wp#*sBLc54IEkl9{ z;*7T9pZ*Vk01y%Zf>`f{4DnF6(F8`GTK_UoSRI$Se}Uiy9atC}l3aMG)Itxy17{Vd z4GdSG5i^N9s{k?h03w+5!%Jl;zR(Ro3>l)JsuUe%!QfNt!!d%E)d*<>Nv6?6d;q92 zyf-2_$(s3W{_h4r01yB>m^c#?;>!}*=;R!IfB=9Pb*zvu&18-P6slujnLrV?D%gJdDav{~Uk z0z?WXxloYD|9hOh x|98fQ`~p7!00BV&ZYG!puK;*30003&06B@K0jt0pi~s-uK>!s(X@F|*2IEX8*UbO` literal 970 zcmV;*12y~r0003AFaQ7nL7D&>yakbe2!;3%$At}kV7ve?U;rQt1rXit`LFS%d;dUI z00aa8AeDk7Ye(nwQ3LosZ~(IzPZJ4{(=?l&1Qd}DDbuG@c;}0V?PA9PoDd9v0tBxe z1czU+{u3+#1OX>Pbwd+bMOWOVnd4K7cC%6(0s!v7m5}WqV*+ZM`~Z>q3FpC}0st}U zHesSifB+yKIGg}kX6_jyF=7nH_a;jK5Cn3>8X!Rx*hct20YCr{1PMv9VCar#M;3H3 zfM}pcE(p6I+9JEc01%+yr=H+wh=bD5?fDB#}3B#h2n7MLpd+zHpb{`OtWoUjo1(fgr(DVV@WQgAdUgV)Z;+LtP~H7vYxTL`@}Dc@?-fE-T`I z0D+(Y2pw*j00O|v1NZ<01_oT_W-u?{K_8QVNG8b90s{l%o`f=sf*ND@^#Bzd00acD zfF)o6B?dNC^}HA-jBsgGRRTdg>wH~W16P0mKn_ws0EZU90W0CqZWD4~z#IY~j~2oO z$Ej<6;4lHy;4t`StZh8ZaMD@-dlaMC0&J8&m5X5+G4F zXo5YD-mzn+0H=VP0!Xl=0LoTuk*?4MSH3un-TjYcOc}t|m`TGLA3z#V7&Myv2^cYD zb_W57aP-&a0$d3q$}$X^Z29x?o;s}H3QhX5)y+>@>tQ%JsfXSK)51Fp(-aiIc=xOi ze@Fum-ynT#^L|tj1Pa<%lu4GNM?FGW8w9F zzyKp*27t`nv?}z77{~yccu$ECC@3R47`~rJv~dK$i!}mkiIQP)+fq_4WD`)Kgu;7l=aFxFA@RJT(K$bCmz~BI_7elIedBFcYpF(uM__>&y_rrPc s2>bv50YLz6CV&R70C+F}00BV&Ift<8 diff --git a/samples/h264SampleFrames/frame-1396.h264 b/samples/h264SampleFrames/frame-1396.h264 index f135116fbdb71bd76c0172e2f73d92b465f0ecc8..9baaf74ba2f9b60e7c3042465178e7c2c3a781cb 100644 GIT binary patch literal 1875 zcmV-Z2dwx20003AFaQ7nL7IRXyahKwV%OC4=KuZ>LM8wS3^*~&T&QJ95!Zz#q+SGD zY!blmDRsAoZ(pYGij{Q~p%?%-;SdH3AMPH7NR4Z2UEnY(2yB2Vag|Fn9cW|Nh-Y57 ztcJb?2+ z`uM4vKfy9@z!ND7BGTsK8l;AHnN@ z<)lIZ;#jBm{A>Ua0s=3ViEPVwIs+k405~y$6s0N=V$uoFC@FhE3Yo$Mc{cLX$(UW& z=G=7yu$iJK^e_&ESZTzivIPJxQU7=dim|~{arjRlj{G~jfB}XZVoT1!S)B*q0Ajm9 z3VN@d!~s-bWN11000*dXf*VyHR;b@~KA=GzP{JzXtV<#A05Iew&$gB0B1o!#_kbAy z3?X^L1-6jAZVI3JzytshaW+|CGSF1rIXD0$UIK`B)W56XA$2-S)af$8fIbv`h5!ds zzy<_Fj`EiXtd4#F4g&^tt?0erixG9N`{9%TX7+H9`(zYOS=t$q4QwJ#7f?4gf=9u~ zrJ`t>NB?gC5Ev(9;kGvyO`a2GlmP?)bZr5LKu)?Ld^TCrYrqCkHyS0f*F|uk&M{Ch z6aY{If=K_Z8f0N(8<79^3&L}p)PkNbYq7%sk^nX~A`L)!Tl4M!%Ag7Y$io^Y%b|kJ zzqkQ_4rp)KA+0b9K49@U#N}Z}5N$2}{YI7l>Xp6T2t!KBrzI>AhJuwqWbf2{v_~dL%$XDwT!|%n5_JON2ADo10YuOY1cGRw=uV@9 z0vA%()b!>^VMg%cP5=l95$QZqj{OFcU*#GM5WfWBKnUdRf$>_lnZLR#_!x$sF&;X! z=XDxq|KI>Y46Y!j9ID38pju-{DIAi)aFJS4E{Og$)f{@+_v-hcpL6z;Ir zC084djCSyVWpE&@oiQggm~UdRz!NASE1H2Y{&jJN0w>-;;l>@RM^|Ybv)lp*iyyN) zmdWOf(g>oxHRu1o-Y^Cge!w~XVxV$2LLdI{>_}ql-6t^@-e3c)1Mm^2Y_5Yx6B2lH zS&bx)I0qY^68I!1s5TE&X#qmmXMsa+002Nd2vmwgf^TR^=Vua|r{8P$Kn;E%7)eHM zfp;)~>ReO<1nO@rQ-;`S=r$@DU(q zFwMXLAO=F_!Y9JI+l$Iy8WsT}1rzbYv_J$+OE_yL4u zh05~j?!2b|>slR-xl5or0YU{5kY@?AC8^WIFEpv0%(w+81ToMouz9_|L0h9pnbuO zLhy={BX9&}2Edwx3dkh95JWXnfQm_D`MKdtlRp*Ic(Fhc z3!@iuc6SdzE#`rV_|h69_5&BOF=WrL`|kl*8F@i9Q!U_+x&K4vh~f-Of%h8uul~AV z1+N-F|Bq%5=@gKT1VXJ`03O*^p}3se*Xa>ym}mW?pb7vsf@VMt_vM8Y=KrVm!s(Y5;2R2IJPSJWK!p literal 1485 zcmV;;1v2^o0003AFaQ7nL7E^Myaj+y00cH>cV>5HcXt2y0QLZ6I0P&p?g$w<`L4n$ z=o2vkDhmJufCMoh_iZdwz#jM+nZySL5l0K%Z(kYek@vO?2Wr#fe>hJ>3U~krup9z< z;c&{P&6WZ|UgwtzvC3bh06iNLb(7>*@74s0IfskH zbRd`g?kwGe06-KQqI7?gaNqD@M)=O>bc}?`rY={gU;>*&jM$M}`_pZS3{Ju*FAWYy z8FcV+_-ZgV1|WI`0CX|}g@md;hTkoqVG^JA9KZ#^7hvp7OkcbJ0ReDT1O%w9mvgB( ztnA2XtndPb4%ICOE{qAt00aO80svS@IEa9!B`SLjt)&21@*^Wi$(b^5zyln^oHR2_ z4@pAj29mF?3{VJ+AjLDl1$+-kM623C0SX`rp+iY)8cK5I|9pg;+NVd>{Z21_}Imm6icFia!7agkkOqEDH~9 zeqwa*nHh;t=2jP!zK1awG{q8XEq2Y}kTF3~jP+K3K08hT06;9jpaDgzm;DjaFfb`O zi~s__2n;NlKu9w(3qhooy=jLBVC1FivGm#Bum{*xC|?-qqU^u+1^~khDmJP!!Q$Kq zl%(MRCjemH8yc3#H}qir`#=B?1qB48$e)-~qX7>5S?B@58aa4vB;S!Qso-izi~wt| zks^L|I3QyvqRVl@$tLahfB+y87g!Y?ibbbR{3W`M3d59FGFDiJe8Z3c2m$hd1OVnY zq(L!@R*C=g#|i=3dQJQQ4Zy}V_AB%z`9aNp2Y>o*br3<0-j z2`pKlU<1N%Mx&k(sS_O_Y>$9~ya9(3gAhOmUh0N`&_9A1Q3^SR2(k)zKhgjJ0&^OQ zPXP8JsT12UHgHCmCW$VCov-rv7{bDExPZ9NnACs&^H5ORuA%_`0AWf?D+z#Lvdq>Z z%gjvYd?K+e-ba9xFaT6W&@dw7iq`z+#K-|J)O95^?d}T@0DR+397w{a9~Jbl6dhGM zg^3!0imT0o=_;bG(Z!I*-W-t@+V`w^Vl3!-WBpqX6@`iHp6&q%Lkg%zK{i=t{=t|G zr-CPuBt!px@EP(ASy0_?(I4PL0_ov={(c1G`~*lD%qual07L*W8=ZwEV2-{)*h}L= zz$8GTemG``0fEV<_ONpcTdp2V31QkPVzwoG05Uv~mEX&&je4*5%?;S=l&}tfP=Q3G z8NstZ*U!)X5(`?A%N_qFZcj68J>xmG^wZohrIX^d}zg8lyx_reSk3Q&qOZh zCQ&e`aUTIT1koWNCTub1CvjTyfBDuTKz+c+rNSyql>iZHMRi<7Nst!=qc^`|8xeW@ z4S_WX6_D@(#Yk$U0ThzP^Z7l@lRp*Ic(FhkqoWscb}NUV7V#irezb;&{eZ>nOj$GQ z{`U9@0^1aqIY#F0 z*Xcx)8BhOV&;%(hhz73!crX9}0YLyciJ}3kz#EJJ00BV&6+&o$YVZc*Vw8Q? diff --git a/samples/h264SampleFrames/frame-1397.h264 b/samples/h264SampleFrames/frame-1397.h264 index d4f05687d381a7b1935c39d04ae4dda72d9f64ae..dd2ec7f4bc2e563c61afb31adea646be59afc936 100644 GIT binary patch literal 1039 zcmV+q1n~O+0003AFaQ7nL7Jc%yahKwLs!(4OTh>^&G?%$Oau4;AOHvffH0&!otq!* zm^8peD8FU^0Dw>jJTh1SkU%guqYM?bT=5!w*&x6Hh3dD~80P`t5D511erGs{YR^}O84gtI@F8^~ zOVo)sA!AhO<^xEgKmyGu45PqH;>Ma1n2>w`1Y$)gSk08K%>Doa0Qv|;IZ>`E(E|ZB zehPqS0_AkDfwNE@!VW+HAQ}Jy1Hd}`R6dr~vJ(XbRSW>|0N{8Zngj}jnR$RN0mcm< zoivy-D-*@ByvZ{Ye52gs{D5Zw2L`8@V`3=N6>;~17=cYC;zkrCDbj_22YdhsfKWZy z%djXR4->Qhga3)PX3RBrP{uQW3&v1{3b_V}G|{_22m~-V#tZ`Q2`o5fKi1Dk3+vkd ziGT&b3T*&j5)7t;!J5kPK>z^+Z~zcxMgRbUr~~$U!AC)W0D%|)2oClc00@Szf1nu! zBnOR~kiUQvsg=YbATS|yHGN4>+0f-;o(_PBLI61Z0@%%)i8aCpnUhH103cLCAOP83 zst@M!ht>G+0kC)igv2ozMhiNIye_Z6Fmu5m`jX_SPJrV;jShezgJ9SII5;h&Ks4bB z5fK=qsNMf~0D!?pjdIKiB2nd4ZBSu~D}Vj`!7GLX1r4~DL1Lp)vY~8RhkjM7zq7!gTEM!AJ$7_D%H>{I~$N73-rysvo{E16r|fh4G*Nnx9z< zE-d+=7;vpK%r=AkL5T`Z%|ll+!X3N+UjMj}8F?5YD*=Rj9f*LL0*Hd|-~Y|y<)dcz z&-hR7@O1Bd83iV4@!`hyjR*hAfKY*EK_vKK4H1BidH067i!s( JYJh6+2IH&nv&sMf delta 1037 zcmV+o1oHcj2$2YX000012`~Tv0YRET8oULQ;7JLDhxcCSeuKlcCtVgM|dK^{y;0!)Q}T5c!rgVKUIfx?4EqK0uxivZX} zIb)b#|M*~ksRGUQRcd@hTc#erAP8X!658lANG4#He+%480096=fB--Q3>_>b#J-ot z0dRnO2?DVJah?Fc7zPee4g*LK#tsi3`=3R1_sQ30^bd|D6RR}M0-jscx1o<)|4sZ z2?uGl$DSeJ01y-up@cl=n+DNd|)^#_n^v;_lXqW0BCoNsr1wE zYI5zX-UhTGlNCGJINSZWSP4Wc<=K867pxAV#D~MV$L*mwL;w>>wvtV>pa1Xxb1{c4 z>Nw>VJvElVO@UNMQXAqTKy80YI10ci)f;bs06Vmd9U+R(tUc30*++ZxT5LUW0LrZf z{m1lLh!c|HKG)oTXOo}<6D-7}zsw!` z3g{cZy)F$-Bfmy3^}m43fB*miK>%(hkOr>+crX9}0YLyciKGFmz#EJJ00BV&6+&qM HYVZc*@PVu* diff --git a/samples/h264SampleFrames/frame-1398.h264 b/samples/h264SampleFrames/frame-1398.h264 index d6dbac2df1435df610b201db03663d5ff9db38e3..48dae2b1f0d21b0b172d96a8a75aa7a454526d5e 100644 GIT binary patch literal 1296 zcmV+r1@HO*0003AFaQ7nL7KoCyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zAuF7ofD9C7sK}3Vu5nkmtniEUOPm1U3_^bc=U(FhiEnvhi+h%Q#s;GPbAX*YpmsdxC_KZv1f9_BK z7ywaLvz!^GB}H2P(qpYCpbrC08Hv%qefEIormSEdC5!@l#Iai#00;<>-~b>T27*WQ z6$;dx@DPg#F4mcQr$S0ldH@0|U*HS?98i@`r4HR=UwbkRUA2G$0|;ab?iAnLd##D8 z@H3PXO-c6wgtM5vdH@4q0HZvLY?eQd0||5~bb%EDqRB-lkZvH%l@?(qaH*O800aXE z^uJ#0NQty|?O(z80A(9+k*=D`Y=(k)25uLG#3!ob-DJ3f>w}u4c z0~8Sx>+l9Zir7XV2?<~YwIpzZC=j3#asWU8K!pJW16xgR^)D6cgIKj6fBn2A6aqCm zSWM)L`q?Ta^?`v5?G{wG9Cyvg080>nVM&|p2p}f+0bEF-{0z8()?x+b8Yco*z%hQE4jqa4 z?artQYu2SNz|zuva#RR}1FqWrd;ahf4MUPA? zZvhA|b?2vp1B7n)`+FaC|YL~SH1g)*hkgR{x;l8z~M|8Zwh{$2y2p#4qIvImi%NisS4HkS6s|#E@VaMwH zDhLRuSTtIteXI;O1VLip@I(stz-=0DBOnmz|EdH*7aV8+rITcyG;#&yGb!tFp}&1g z4*X~kLZ8du2B>cVzJ7Pwh)jP@7@Lk^7u^(w}>7CAz+Jj9N`^9W)MdjV6JsH z^dHDLf1IU`_ja$FlK+A70003&0B$C*2Co2kFaQ7nK>#_4tO2XQ8;k$|0YLy2LTdnO G@CM_S)g9Xa literal 1150 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 b0YLyciLL>wz#EJJ00BV&6+&x(YVZc*U%d72 literal 1562 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 UtH2wK0003&02M-P0BZ0Ci_@% literal 1105 zcmV-X1g`r40003AFaQ7nL7Jc%yakUO6s9~51IK3=9RRQjJ`hv_c!poXA$|lgS_6Ou zZ~zbp1Bhn#B5V9=D)+_!1O$Kr2w);cv>`vDh#$fD09lNuiIm83noZ9E1te3-bm`Sz zIpZRHSh2uo1Op%d;VQ>N4SwVJ{QkfofF#&fsA6Y0s|%FJylQc8T5qQSfIBcHk9LwV zffY^u07$il^XSk402uuXFv%;x01yov{r~|0!;6eCMrOnqjjl|V03ZnDh%`WgDzJ_4 zegeP%AP5qZWWmuK?#=9|V*t@%9+wQcAlh~Jga9FcfVZFEXo!o_(C;V!!KN=Xg=BdE z08Ekp2LM0@01)^FI_)#2Kxp(1-+&BW5)1=wPQXg{8UZ{y=E}fM;;b?s9pc#WaD?q|+y($ToCY5Z^^ND+jv7lp?_!jF z08NsI^0E6{%mIKIK!F+Ti?(nqROX)mcL5kFq=4OE#zdk;VH=nL2mzLW1OVU^dsk(? zie4H&-T)8;1ZZI=Od*f8|1m2i0I41o&*$JyKcEyKS&&dmfIUV=LZ$#=6s_G_dt#A@ zR|nI7V2U$9LJ|auAMUA&s-fTAm&FMIA_erQL;&xMmcx%$3RD4l;4Y*Pdsk?Y<3}B3 zfrO%)hh`Tmva;3&Yt0)z}WfkWV~Cvcb{mbfYJ0Uzd+#xgyA z@LZf}u4~^0CY{i|j|_%55uhyS*2_lVV!XDqwq=}+;5U1J_z&i34XDtNScm9N6aWAB zg*=W!%7OS359R!dL~%ht!hj)JB#Nzm1Tb(pdjg6_;|sSKh1bWxZ3(K{ll$-4JDacX zzvhikUWaVw8rsNef}WlgNUS>b-}v|G)uZ zu`QISBrT}#xCugCZF=S#2LylmUza9?i>Jfj|N1Edd+eMx0aDB2lsm>)o;K_WsDkov z847a5EUBbub|gsih#cNc3(xt9TUhWB5g-A`a3fF&Z?Hz@J%!gCyYT2h@Mr*qf!ft! zOyV#Cwet9Icn9d+w1Z2$ckM>~|JU6B;OFlaa_fB*miK>%(hs0Ob9crX9}0YLyc XiK+psz#EJJ00BV&6+&u&YVZc*?JChw diff --git a/samples/h264SampleFrames/frame-1401.h264 b/samples/h264SampleFrames/frame-1401.h264 index cc4d88a88df1129ef094a782302be70cf210074b..a1f5eef567a9512e984c7eeb2c575c4c301d7805 100644 GIT binary patch literal 6818 zcmeHL2~ZPRyX}Oq1Og;%vd9u--(*unS;D@FL_`Ck5H>*vMMMPwO@M#_*;G^%G%PNl z0vQ!Swgd!3kX?qI1W^VNNKg<2lKx$uGxMhYziMXQysB5P=Brz`yQ}NgckbzPzI*!u z004m_fzN%gHC=HCf{~ixEfNqA1OOfY`lSm}&=10Vc^}eYM*MsUB9r*aK=5fd2H5@c z^S?Lx_n-LdO&*2;h&Hty5o1eFI$}n_HNYHVvAkX7d|~ z<}FfVBZ@Btl3nmV4X$$FbVTI_P5Tq8PRe!zVKMt~h^gaEY&#?FR!O!A1nH9z&x|Md zZ&Did3Uw=IgdC#8^khB*KO%HC_`KaYYf%l^2kQ*4;(Z`u!amvR{_t&NJ2(>9OJxwD z_JQIW_g6@#z}N8PvM4P)~7O#@m5d)AL7j{$=A*jF<@w{b?ajC z7?Yc4>+B8vC>Fv1f64j{n$@DHk?pcu!ci3O)Uuv{`qI>QFu%dz1v!E3{tWA}`z4A? zT@Wu}p3TnFqKj3z-i;yxNGJe-W�vwX~I|k2aVA!b))^+ZvM_96&k(11JeiVgaNf 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 NDDWQ!{x=vP{tMJjd_w>L literal 1833 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 Hn(*Oo9L|QD delta 1133 zcmV-z1d{uT3;hUx000012`~Tv0YRGp8oUKBL1Lt9#DREL00Wva@&y01yXWroajUKjVu~OfG`tzHlf6 z!GtnkKr_S$06>cdcZPDpf^h$iH>UsqfN1Iy&_;o8H5S@`U<{rB0DvU`?*^yIxbcDl z3yDj8qZx{Vs9`kq#~a`P3xyCDMnaEa1;cLvR2B006<} zlu&Vs;lm~ZwyHaZ1ponA4FSbK0FM^GkP5%N1Hho-S#)WV<%63?H*+{J4}f?obijcx zVe~<&;-w9L02~}Z)|Eqrb_F#{E#d$O0Y=Su^cJaSYLtK+fj7V?5Hr+L)k-Q7Fg<^R zC=l=iTgi`w(myrCXKTh71Bp6p=vJtnIwN2_W&(MCKtaWVkx&3^B`uAo>nGq!6gykv z5hWd)voE9~_(S9oD=n5Sg{g~JkN)rXY+pMZWac-2xIq*H7E=U`SZ%o_c>m=01$W^G zFyUebeOXt+l{*AK()cA39|?mXMj$dX;1~cMlm;L{Sd=&pj91Tr3rsjWtjcDl3r79$ z5JIX1IN*Xzym-S?2A&Lumo6##;4*??X9|3vxWa1!kH7nX05X9LHROOS63~vY^l}6L z{lG(ifr)7F%aY{u3*4My?*<`6hW7#-c+b^35jXGv1OmZOz}bnfXp!Ud&^Z)@??wv^ zVA1={f(ulTNx%yHW<DkduLclk7_klv*qd-~y?VvqF>Ro4^1N0}DiehfTa-S9Mm! zUp|1x00$w6773UdgP$WZSKR;r?*Kpw0t{q-%#ZVN67&0!0g7M&Muoa)cq$0$0M-Ee z9v9E&;7&i6z)XRzgb!#U6z0wVFW^;3QCT-&0J}T7$%aq;RDX`anE(4V0#9f1By-*l z)CC9{M{ogI#JU+%&*5PJEO;vn5MTfh1waJG1q3uC$R7Lz=o!Ks24?EV{rd1S4dgC= zb81v8@IQ3!$MJkp;Q#ypT0vF)FvdUo-vzUjZB0M_{rDw-0003&0B$D02CoGoe7*u? z4e5zKBrO0VsB&SKX1o9%b_vaVu!fn8DVOPq0YcBHUEWPVjOcK~ zNy#m@<@OSwjOG;pE)=rU(~0-tl7JY001nVNyVrsaPkVzwZZv)1C{8u*T%Tv4@IkH* z|NsC0|NsC0|NsC0|NsC0|NsC0|Np^Jeh@(gB!3tbC||_wrY3do`cLVDz#CmjP8EV= z0(qyCk&&fksbHz#C9o|LWA(qWX9)`z1^EEvMFP-3@Oh}iMh(}{*c5F4V}+1FF|BXF zR}^dEa__z!2k~EReg{Guj=&YU$)M^04`NF9;GAhDKlHOTFdXM_A&1*V))~ime!IiR zhsaG|I6uz|lS>66BcIRb^ZED#A%Fk?0YLyciLe2yz#EJJ00BV&6+&zPYVZc*Qqu5- diff --git a/samples/h264SampleFrames/frame-1404.h264 b/samples/h264SampleFrames/frame-1404.h264 index 4f5d16435e9575bda7ad0df4ed5b51d85788a50b..1805d676f5b8c8963e73ae869c05c8437fca70c3 100644 GIT binary patch literal 1186 zcmV;T1YP?80003AFaQ7nL7HG1yai7|W7oo7IuHpI$iL0T!iE8PrGH0-^Kt6Ym(ga-r#TaxEod}ZxiUe=?KjRLDCFl^FYGaI};Bxw7DrWxwGjhb0stTYARGV!0iZCMz<_c<72?`oS;z>3 zaXOvgWvm%09*@pl`D^eQZB`y01yOx0Z&~BwO{$Tj1VGn z;PS^biE>~5T(v{Mfz;_QQ>4d+ad5%8iwZEP03kcGGrPMpJGcM;zyZMmnknX$Hf>jh zzE-YZ6bR5<6a!Ged?*xZ02dLE(4_8cU;E%D3^y*Y(o9lTi~j*B0Ki$C1Q$!i&`;mq zCcp-la0FPxFnC>dhEVHD3p`5ah*U%Wc8PkhLy`MdxD0FssfNwSWb zdOXzVK2-)n{0x0jV2F%2{*h5#`Az!T! z)3fI@yF5Dx0xiP;3pR>SBs7Kz?d9-40Q(*p&*$Kl0003&0B$Cj2CoG|egb3-qJrE2 z@D$6mbPxB^04-IAOhS$_wcbS07|(sM8sqpD2v!;i{ov*Eklzt41bJ@&Uu$n>hy~w< z2@4bexGf}Uyk7wA&Ln0Yz4d)@Wwih-rNv&S_Q&V@vbyidcY&qY-S@!IfsbF_8H+f` zOYiChQzaNGAtampiG|=yKbPJn5{eiYfEmw-u!VQ^Q6YN>Q069KH=*wu00IZ93vNB| z8Y!mNo&TN&V;*KtE&n_sO}+yxethuHlu%m2_4O20%22q9jKL@CE4r00BV&If5z3Wc5R4p^ zDpp0gK^Z{;4u>cMUqcl{1xBh|BR8ZJDN%}6$x-#W)9F6!?7r;m%q{=`g=c>t-c_nu zC)R-%VRd9CedG%fF zhRQHu_ltua)KKIKF~94-@XWMGq)S%)vW2Ak^8FZjvQt}zAMISLGyuK{T==!u?trR` z1OlWmV5k9@oOUxPHI+|&RzC)|MuOxzJ>0fSorcUZnHWkFq!BmQYi-k1!U3D~1oe_+bajE7$Mn&bC(gFn~MLV9*08E6lbC_h2c;>)L(sr^SJ8j8=s{(m96&e zhhQ$?hVl3EkwrR_KAIfDR00!s<_+C@d|HF>oH;uK zRwoLcBq^tVt5_a>)Upw6q(rFFND}6{#!DoOVW1qiXg1oN<=t@Q?IU`eBwL&RLs{>$ zluUrbP>^&_--+jSJ9oPFHVOew2LXsTC~9b;N)Vn0mC%2yIPC(%ZGb(<-J(M>-j^Sw zDVW+6>XHovZo+n9ya`&r2N z@g2dD?^jm_tkU6&?s z;#(hF(nz%b2CP?3!bUU8Du+nm>Sxk>C|x(L@Gp1uR5lmksEWqq=Olf)9@9&1_^?$W zQJgAZw>w%NRw+{}W%BFx>uYjN0MGlNVpR&OyKH#LcQ#pUtQwo3<}1ubbkq9Gvn*R~ zs7LZrAt~x9CF-E2_`#27MXgf{9NV>bDve}s`Jm!I#oxAG_<204)~9=IWll5Q#%QX_ ziH2XN`pW3HjcBeSnm3s_wfnVeQyWt-Nuvct%>Dw4kJ32)2&enf7}g;DBt-CGLuKuu zgc#|lOE~2)#4ilb49^B$7LVcrSqf diff --git a/samples/h264SampleFrames/frame-1405.h264 b/samples/h264SampleFrames/frame-1405.h264 index b61f91b7a3155cf22759df918cd834082ea1fdc6..ff02736762e6b573d08317a6f60652a05cd5761e 100644 GIT binary patch delta 1630 zcmV-k2BG=I2cPTw>+<*^hUZ|V4EzK`pteIN#V@Dh{NMrwP8P%%{OYhT=m2;DjugZRTjXr{ zwI0s^03ZQ>017cz)?@36_=Q!T@MZdeQmm>d0A%7D^DzJ;E`<&vbanB8u|fQP;eZTi z;4#oCWw0lv!GHh%00svXiKSE2E*tO&Mpot9uJ729|{n3Ip)G#6cDCNmULE8pe8Nw zT^Rro&@RA(3s zykPz#`915nR^1w}wuSF~S$Q+c4na%oQl69=oAxBs?y00IF#0}=sR za-#KYew5T);f=$903bON5CfGq_x8XbzO#FxQ5~;$cnlSbBj*39$tmUV00IC8E3#Em zu*QkE{lN+vjGfT}#8@8!>SX`ka0z99 zV18(+s)yRf-;6YYLOguY1>>QRTrrT`Q33J-2ob;rzNi9$0p;?g5+?(;jfemQ1^@s+ zI@7QLprOz3S?COPA$a*=k%w9cPK{{7aDbMB-a)YRS%1L@&J1{OFdz*_OX^$Vb^6${n;yAs5 zy;-qDLQC=Edj>u^fCG01)H=00BV&ZYH3U zh5{geChtKN(ffIT#!;jQv_qT#95|Ok2m3(AZ`P!}40#fnzwEIh08@daL=k>RfhYoy zWgd;qf!MOrioZA^|Nme^2ri%rP6(3f5JA+SNX*MZ{QsB0N`a&V$QpVd1Rd&+6~G6O zC*A@$en++(Iq$Fh-5=jSZ(Wj9y&vmdU!2~2lfI^D8JN8RNL>~h_FfZb~l;GkoPFhFWx0uXkQ#<&)L zqW9%wFgH~ls1bYnsKTWa42UpYo&_2o-VAC%9YjKr``>vDVH&hQ-@m~Dz?;YsgViZH zV}tkQ@h1>Up#e%S1e^rda4GzNg*LS|SN-kI0tbBBZBhN#!J>c#X?F@r{2qZ^00IC! zNGLgBG;xA32OeBM&szWn00XEFLh^|<7%FBm`~gc%ChJN%9N{Iil{5ve{{RaB!2%4G$Im=XFS+c|#5ct!3>Cs^YF}U?1%bdJ z3e3&8eeDB5pfB-=ufu=}+d@VMSNkOUG!w5itA%&#{71}X| zEsWv3@fNSd00IKw3=PiY2z$!JTb_-WbkVQ_b`r_*)L-}S5C8}W1_TE@!vmy*$lHx| zkae+q01XR&-uOHL3>dSy;49k55)V3DR9xmDIn8JgKf|GJ#r7p261a?F3P`2sr`25gZH50efNY^S~($;Y#00u!IOE9fD&_)Zym}DT?o%)BF9vGYRx4$!T8V zS^y0Iw*aSsWeiA(&`48}NIwsh0Kh0b@!aDW&wEVg4vwHDo+1uj4U>W}~g z1BwQ*asbGwFCYH!Aqo)2tf3_wA?2D%x@i0h0XIMZ00BV&ZYI!^mINSwP5KHI+4@4> zatORH$QDA^H8-N&;jJBjAVZ$ZFsN$Upz!BZj&?hYtt7uh0qxvn$g9 zD2-e7zNNFaU@=?0!jJcV{Pv?jrC9Qftq^|RfI3XvEO4K=c@>EXlvvE)t?umo1R`c; zj&LF+uAcXSF!4HsqD2J*t$+gvSOI{^?LmS4*x*Yok1)%e)qoSrY=dZ`E`9^udCP0T zf-P)x%Hx!4UQn&wUnAE0$3Hdf6+pKVVbB3cHKZs@fvbOhDWH~rJ5UjL`iv@3FlXU| z>`wtgR`AUPcNt1i?|r4%DTI|q-~I>(0&d7YWbUy0$Ny0QNf-FgrxutX{%F!a_IN#E zBo>5qK@MLBQ3MeP1MN_U_6rRF0RkTY8I5CS7$XR{d+-rpOZf98`?2dVgF+yK;C@tuYf8j0003&06B@Y0jt0pi~s-uK>!s(Z2)TU2IJ{~#Yq4F diff --git a/samples/h264SampleFrames/frame-1406.h264 b/samples/h264SampleFrames/frame-1406.h264 index 09574df7177509362dccfb42ad60c429c9643a38..434774a1aefa44e24a02c2266160aec973aca3ed 100644 GIT binary patch literal 1624 zcmV-e2B-M|0003AFaQ7nL7Jc%yagXHS#^C&Us6-T3{ai`2^h>|=L(h-hqW9g5zIUV zkk2u_|D(4Jl?>%Cf(Vo}KrIk3N9klSb2{v=<8Q;-YZChc(;fw1{2KzT^rL_j;ScHACSxd2>I;-N`QNtm|z#!DGtmt&V0AS za+u}-0tG-ITu@vk`DVjqgCeLuBR~_fkPCbjcJpB13s@<6*V&B!FbJDi8!f;91fUKi z!KcMkN7DGHT3C>X&H%3qq_yWqo&)F)9#qtw-oPHfsK%Dokwiv#cmM+dIT>pjoXi#? z|Npm$2f4rj0}NVvW#r9~vIK+%AYm&sS*HWw02n#UJ?jT_*m@#C58m(qY5}-v8ptG) z*%K7+Czb#L00093AP5sUSm{s{Ul9-w#!dkS0air$b0H!di9+6h4wr&Ba^|^c5PFd% z>U5mn25A=DN8%xX3cK0?LBjp2c8s_H5*Vf&j~Ykp8d!_$cnBqi_K-}>=-PQSVgLvb zt;S@;PmQ?(1V94N-XxJi=>$La@Bjn>%S-?UhJk{V#@<1h3~ureF+-&eQk7Rokx#(H z1w#;EGAF$bOcT(=4ZHvVfN6q2Dl+>tiFqhX|L=P{pbv+ z0v}Va5%l0x`=Ddv-S^w~w}TD|K}b-n*+LrGgRej%q;iY^6xaX=25X=P03;=>Xp|A+ z!y2rxI2VTDV$1hXlvls)iV0kKK3w`~Pi-jNp*Nt*w=(W?%OE8Zo8wJ9Gb> z0HNyO5Ni^hKF=3gz>J9J zsr#M(gM+bUL^B%jf4EZwFu()ZLkWM(dhVZ(^3Vi30003&0B$Cz2CoI8coWa(_z6%r ziygzgECGYJbx)nIsi4(D)$}tC@N7$_DncYx|hpa#~J|TcZRt}Cjb>`kV(ZC`v%|Y zHTn@Zbf)Gjk01AKv zOZWue^kNf$sInqILoVjK+uxVsGmWyqk})igGZexj^}v9TY<~(h+f;!K>p;$BZxukz z7|TEBn6d^I2nHjqiCKTByhwrA1_s&-YCP%z0kVS{j|yfIp~!>Y^h9ihF)}6ukQ2^v z=PX0s2jW14>)lcjKl7o1IKB}$mEt}KXQnuE5vS+AR0cdDCxPg<6o_l{#{t+ZFN zQ4shOkQ8NCeiefJ=rA~d)xk#9m*jnH_IH5y=|Vkf=D+!PNJLM(4j2MbfB*miK>#_4 WssXFO8;k$|0YLy2LTZ3&@CM_1V!62h literal 1430 zcmV;H1!?*K0003AFaQ7nL7QM2yaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`L0eYF&+$9KmZ&71ONaF0Vete8E-4Zzzs{F$+SA4P)e|jq$BNBuM803Z>F%5 z?-aX2K>1GqU;wA2CG-v@1_6hQfGPj@4RFJF?A*3ddw1Xz013>11On<_*)U&g9{;>x zB917W22xk?e3d<;fDJ=CTOcWMdN^MLFT62YNxV}9^;8@!#{&)?pauX8-O>Z1Rbe@( zzkmS%1_K5*RT@soL@j}f(k~7{%Y0@*BGJY^HBVod>Fu`L^chLp*r1wWrvBf+OaOo( zPQ?J7(dwA8@8IA7<6sepSUe-^;l`$x_3hCR00?b$Y)o- zfCdyNg<)k@wVc}1|NIyLX4`zGyRx$!bLpXm7(hKeKFnF=5f^xBGiTc z00;nMphg=%+4RV|NDi!E$YC0?3K7JwyZ`|K5JH3wW8qny8i?v2f{-TZ0bn5@k|l@= zzb97bz5qY~KsX(m3T;vSBIZitVGsFUoix?p0M0Vzgwnh;DLpFx_e=mF zW%imjjrE1F|Ndzg$%ZeH8UP3Y3?UQKg4?E&)-d=0H~<(BJi`ofHBwy#6-=#YJ#Gp+d z&I}mIx-1q9r2THl=gwpp#+R7anX8bA`Z&lYkv1YGn40lwd#Vt(DPj4?+!qVZhO`;Vl3$oL^n1a ziac**zGw(Sm{meK_E~5C>l26=|es9v|>-{3%C3Az9P0YLz6CfEkA z1)_Kp&*%6FP&k-&07Ms|c=W& zBTukG#>v^$4nzOn?}0S&{G}8-jRFGzeA>$I&i}A(qXCpjaKpO&FP68CBmiq&hPgr- z&;<0*Q8?{z7!=dHi8l5Gzcly8#s620Ew3cck|ZDQa0&+E;!vx_E-_>N_s}4YBIDEo zqy!AYVZdBBO0Zj}7tXK#55o~KqF9xoZsp$w%m5H3Sk;5T4rUDHaY^MKvPfVP4+-iz z#SVdYJpchv03u012mSgCXW9ay$GtF%n99G@P?6<^-1{`)AU7q7K1dgoE zJYnYl{0$HhWjOg_4}Y+JP$9bZ)TB@B=wMDSiF0^}cJbJ*ct&IWU;JY*JSd$;_tBO)H^ k58`1^z!HoA00BV&If=FbtH2wK0003&02M-QfNJmt;~ZgthX4Qo diff --git a/samples/h264SampleFrames/frame-1407.h264 b/samples/h264SampleFrames/frame-1407.h264 index c85fa8247c6572ca76c54dc66f1ebcd4edcb11ad..741ad484564b1867e414d42bec2e38e496bc0171 100644 GIT binary patch literal 1298 zcmV+t1?~C(0003AFaQ7nL7KoCyagW~6xjz*v)&X^nD>26MevODK<6SfE!7wMSD?}N zo|WK)9Od{k2*DU41wg=OfC2yjfCvHzL+R16{>g(Z1X7Fl;KODtKxwq{(Qk=d`=S5{ zzyKfzpb82TyLdoPrl0-50RtJtn)MiS3lfS;Bft;<2m>HkS8D6n%(W0rM`geO2n8Jh z#MZn)H8gGJfA^RGU;rR(VZNi_0yUQnAnw> z0DylD#j5chfsO$|m@4rL!~Qx^g^3~#3#S|cfuM0BW$}D`xk0&x5Y9djnfj3{ih>7@ z+a83&hEZyl61>?AoY&zP>!bD@Who)RFj$G<07&p~1(8?)I~4&DB1QjbZJ{}v@4x_z zNy=6;Wh=8UfB?Wfha#LP#}#OSfSSJrz%&6ex>iWpsSe#2AOH{z009Bu9i1j0Pg=PN z0%DzJ0CxZi2Z8yZM5s-x%mGjeFlhAQq`{F$nkQ_bqu}l02hp*2o-V- z5^1A$fDi~^af}!R-V#`F%zv$(khw2w{tDm(APOdcAPELjLEyz_0s%>g00a@h06~YN z002Q$0pB(Nf}H~Z0Rk`p5Fh+901*w`|3G9F;5=;Hh3r6;RH`8fLja-J6iNmS5c}h) zkAc}kDudpEL_Qx7An5Q3iXI6E+;s0jFl+}vN0d15KL2GI1Q&9zgyVwwnFofTdHrz& zq*UMtrBF;s_^HBEgaR~G4}qG{P5vhjNQ!ZR-k0G2#Y#bBY~uiR*L-jkm6fZG*8&4* z13=mU0-zw71{G8Pk~}+_LCu~++l>tbY(U5VLP>xEWMd<-%ou;|qRxf@v4xa^LQTkO zFYxoC3qb=9l423P=gE>n3^*6K=vtPT5@UFrAX0H%Npj8S?cdNniO{A3voQ&Zqz5HNuX+)Oevp8wzP z!-Sx-MM_YF{r~^MEJEHh&UiR4^AVn?iZj5Pcvs;7pjh76BsJeo1_-c;f6IsO{a~Zk z?{ELIW_$;p`x*1>TM+$r@z(U?UbhQDbhwwqw%}f2cy&C00?o_hcu>2q#|nqD2)UI7 z$QnUWFGcipO`TXWDH1cofD{HNT8QJH7$61cPE2jL;r{o?7?Mb;D5t@JJCIBkS$W|9 z?y3@B{ve9yNTFm;2=#iH|JTum+cytgUl9m~0DvF>00BV&If<+RtH2wK0003&02M-O I0BZ0C<0|(s?f?J) literal 881 zcmV-%1CIOv0003AFaQ7nL7RXYyak6RgsK2Ip8`pOPzYIWLFftq61XWX;{>(OHiN&W z+MpI@4~@V92A}}|pv0+Hb;ymjx%?x59smIVASfV3J(1Lc$vA}?)m|E$00aq!Qc?n9 z)=#$G5+nElfElC6Ve(G{K)oi}z?o1nmHq($hyu}-A|qS~bG1W{00s|%P1yxWfS3l8%o6|jWs%yh@8C}_@%SNxU;*G@0Ky_f8-g)~g}6}9cwnmm zCVr~$pei-f0#c{~7(<>Kss|JSP|nOV7Lo$KVMIxJ&Nf$MM#+&kd3A!*OB*h@s^=(_qY| zVxFY(Pxu0EfB*miK>%(h;0CV)@%;P=$MgII*c?nd00MKQjtyC_;F6Avd7akk0Wt?1 zSqECwp^(&l6a!|paPPPT!jpe5_fP)wf9Loh3E)mPaX!?#&B_1y;7mWC_~4`fviP5w z2$}#Dwzf%)54W&ES^t_L4BqtN)Tl>*!-4ub7i&dhe@BEjvSA0tRrCBnRNn3=rjJ=` z0@P8yrNz7N_1r@Veh><90L+l0^+xn+XaD@uA;oL~cntvL2zAn7*^hhw+wc{kC_K?p zlp#NV|MZvQKf)z`@Ni$|BRx?RXMr^EufhR9w$EW9t@D9`Q5(fw&{Ti0rQ5yy{h-`4 z_6D)}EtNKB@3tYfn%=$-u1j%7*uRS#gpB|Hg%Ut%e+V0~YO^g87kd0~$XhUvDU`?1 z9w4Zadh$9aeykZ3i5cO*I1Ea)k;gtTKnu`_Ol`Mm{`bHe5=Bu%JAlBQ$Sw%0?C_WW zsW$un#2FJ#0vnvKGICj_-nhN*%>CE=Od=Qp0Du4h0YLyciMRo)z#EJJ00BV&6+&(R HYVZc*{pp59 diff --git a/samples/h264SampleFrames/frame-1408.h264 b/samples/h264SampleFrames/frame-1408.h264 index 4b3d5fd20d131d319d63134f761d9b97c29eac26..77571ac47f0ce284860936b05d93e1b536aeb0f9 100644 GIT binary patch literal 1266 zcmV$WBn*@0N}g>7XP^ehX@0?Nb2AZ06dx%I1>** z2pu3GzEXBz4}J&27z4)r;2;Pr86;%q8%eQ*Qf3Dr-~g8Z0+<0GN!9_Api3CdCa!=% zoGz>s;l3&oiLI@Bjn>Mh$EJKtPvP4WU*uM&JMpVfpk_H)j2cDEI7o*t$MN$E(hoPknO^ z)b0Pv^D+#MqAw8iHHZ&`VMO3bfnd>5K`~K1zx)^zjfeswcq~2u36YGBhcH2Xwh1yA z0!ks>cxJ9AJ7x=&oJAJ@7pD|DxjF4OZ))Ewdy`<-L@PFd~4zLH{J4Eom0YOBC3wfA- zik7W+!THjk{{%h}fB=9%91?69@Q}OHHEXoNhcy60umAu7K>%(hxCXBQo_{}|fjIvG zA_tQMAOOb5NzQd3$XfUSE#j#m+qg`B^@IBjdV+>@!`JD5$A~Oh6JU^I&?f)|0keWl z#Bh=+SAmT{0^o?ym*Au*6%fftI1`V6pd>JVa*5PSwY5iqaNff(?ogmKLf z%L1Re+s?4g^!4ub>+A+W^|E=llk5W<)bJ*r75KoU0kYFc!wa|2R;XQ`5H9b2yXAJK z(~o=&9JZ&C(}iyPICBT7(%BgJU=obj=aRy~fBsjC6TtDqOqbO$-uJ_Rs}QQs%sLK= z%e3Gb14xaXl~S+&-o^;r0g<%yIJpl184R_BU#b#a?ck3iQbwLEO-CET13T$0k41n c00BV&If1a)%so zZbc+WF3BGNLkZh?{(}^!lcJducqcdj$iBee>3o#OcmM_vppdE@Hj)<5yK;T|fWbkl zl}6I!Y+9Uhr4^3k)e=M7o7EQffN9RoZ+EMgw|81(f`G(-Uu8+PK*d|PML}A ze&JmjW3=cATQOVk00IJH2>}I?){iJj%RpdgA+%uNR|PFZF7j);zfcJRI(YORS!>)L z0DOb7!~EyOm-heJzyLP^j(IvcIu|BrDZk(a1_(Mjy0g%t>x#_QcSh&{1QGxMKvpI| zkoVjG0Dx!~L8>}7i%R%xFYlYI3?mFQ(gi+QS8u!q=7>N5n_pwbe)@h2!BX-FmYOh% z4Lkq=0Py-iB0U_7ZwXKrT9aoygI53zx&Q!xgMj&8#{*-JDKAih zDj|ZrvzAGO026co00BV&ZYJmkuK}KaKc9g({{bQglLR0Dk(h{zadi&mtpEY<7trn8 zH4^{Ihp=nZ6f5Q%ewX}sg2j-Sis%U70Lg%v!_(s>B$ap=WjF-jo#XfTFu0~)^?2=l zV0(@=jS^FU*Xh$*f#VwLE2Jx?799S8&R(Xq-(V)5KVnS83<^LQ8_^y9A=a3rI(wwB zccd>B0(yKgfX5$!ijf2~1}VqOz!oAE`Vb=?6!2g1k{iISdvnw?_NS`%qPFQ^Lc3!6 z-vfYSS9lXo3jAPF0nVJ5VSl`baJnlFjdS*1;}7n4w)h%3ZBHII3f-&X5G|+Hnm7L1 z#Ad_t7E#arx}O#%;CaI%TB;;9>jeSwu@zHx6#C128U{FaNUuf%{=m3BL#P zz1@yKqd?pMk%K z7};C_3V#3-Y)2q;PaZ*qkkohpy|3v! ze+>8Vfoej40DxOAZv$2#|NDdtv@k5cDRoFBNUj^Q$-{tv5YhqW7<~(u*qdix`-}ht z05}KTYn*|wXJqUnKmZ^h=m2rQkt|jJn~1s53zE>$b>OG0 zDsVs%LWwE!K|wMu*7}!!cmM(cu7F?>RRh>gwFvtmH?M#IARgcYLmUoV-Xlw$3R8#x z5V*Ah-d!L_hUfc1`hf8DMxi9Alp08WSO76G6%gi9jFmMZ`j8P33FjN7q zzWzXE@UU)Z5L_iJv_gb|DaVX{C>#J{vXwX%XQ6Bb5Cj57>WtPEbMBjRXhLz z0Du@X38i7uxfJTx=fa>JlXWop2vhTT00IJ{wt*3w4^D~eZQKbBMbX^;!V3E^dpG0a zq=4TFK!_#?9#CG1qHf8ubl9-SJx|y9h>U;!ZvX%wD#XA6rkYFw=>!RX?!4O@_ZQZ+ zyi5R?UH}4M^~8i`R}v0!s}BGK$i_!Qm>|C6M4R~;2(8R?D4vykGB(5nw+sL*W?Lyg z1X-+q?hn8a>;M1(K>%(hzy_}XkRQ+I;7&ilN`c(Npo``X00uCp@iy|n2)WXzmB}RD zOZEaJ1X!^GgbNS>kbUB*eSmZ{Z6Hh=gCXNp83BYK03mH3z(1kf@C^n_a344-d&9s< zfy7>a3hpk z@E8g_nxOyuuofG6T_LFN`Z1EL=rU)T*Z==&5>?N8|8jAD*^Cbj;lMS}0003&06B@U V0jt0pi~s-uK>!s(YyfKT2IG?>o{9hf literal 1376 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 diff --git a/samples/h264SampleFrames/frame-1411.h264 b/samples/h264SampleFrames/frame-1411.h264 index 2346a5b9a4bd19701cffb8686723c2751f3f664a..922db557e8985f6f6bc9a9ff38d9d87d003d57af 100644 GIT binary patch literal 1540 zcmV+f2K)H{0003AFaQ7nL7PAtyaj>$-^SKs3_x1|1ONsB4s&0Jf$NVCt~tNB7ytqR z04bxTpay;YXJ`rl1wf$EutcyWYUe|-)FprWKm-5=A@~uW8v;4P@k3Kj2})udy1l~# z0096*R1g{hzMWD$5(0n!i^v5wUkCy~h+rUsAyJ$Fkb#pSk7stp^Eyihzyn=2NcAsT z@Bk12*@3`OrLgglyMK%@Weo0CxT8WliD;ZRv0zn2+nB~5SOUuIa@+s_N&w{UbH8;G#Ujm~ZYgR-N8Sr=j0|7Z1ts0!n79#)uw}dTP zz{18YJvQ=YNaBE)fW!Qs&T;QpJEp_Y5(s_wfCEqsgHYB%B$mjSr+GZE z01yBG0|5X)n##vYfRgx#fPOM?1Q-NaGv&*Kh;AhddH^|IrJzCTbeE~pXP5{EDWm`h zAOnGec-3Nsc7~6iRzi5J3iQrPCh#xa6hpl;T0M-%vycEN3>eL$!v3*@A7v*XGk^{r zjp1#Ze1Jo5yZ{Dr00=sj)aFb^FYF@V0GJdW%w@O`H5Do&|9C<;;Rtc!i9C6Ng@6D- z6fpe60B})^!gi825^<0H?`^hb*!rsZ0HMGzK@tsPWctYejChmZhZoInyp7rh=?40bLi0#H&EJ2p^;wqWbf2!sfFK|%hml+7Ac#0%l>7x^ zm!R*m2^%1i9pe%kCUAl-3g!v4P*;<${G9tV6D%feWc?>UwvE0DwVo3djI^0Clt*B5C~p_xt&W!}{>xkC70F$RiIA zLmUxL4geMz`-1=!CI6>GViIEo{qv^3%ufW-!-pI27;?iwRHVpIm;>y_$a8|i9y zVN|PXo>YJXL6&jwKwFr$J7YZEwI{DUfY0m&#<{8}ulv>D0fngv-G8_Kv&FGxL>rmB zAMO;~FaY*QFx%*HE!ciPz!2;J00BV&ZYIzMuK?j6&*$JyKfp|Z%*2M0ZcG6X?AZkh zs7vNJ2@pK$5eZ-p%VvN;AV959d-2Qg1K6yqttL6Wg0_j2_ftUP$&LK<6#u}>=i&K$ z1n3?>Oo8RpA;K2}xC`5juKs9;Py`jG_11t4#I7B(Fc{e1+Y&{Uc(J!nh79VaGR`JMtWK}&1!H{2a< zBq4Fy=7hWU7~&yaCdUa1aj;@nRcT@;#t#G4$!tF1OuqN^^qYzx24jE#fFK5sOTd{1 zRyq;ctG)m40%^XH|A)lj4uJw~#WF$))gm~DhG79)k<>iJDT)2>1-!X{CD;Nt@dx($ z+V_8TzDi0&e}-39z=eDL;n2xKluP%5wdu6YodC!b*dzs+1cYt?4$_;G4FT qO07*SmWIE44?lPWE&u=lK>#_4v;nKY8;k$|0YLy2LTvzQ@CM`gvzzJw literal 1432 zcmV;J1!wvI0003AFaQ7nL7D&>yakDU0RSKcAh3K;z@S?lzySatz}9xT>#)hnI>*2O z;6MR@$s)|j#0u>JLVhn800;q40CPzIYd}GfX(CVx<3;d$fB=AT%@#0jW^fkrmPC`_ z0AV8lwVV$#G7kUd7`HnB4hR(a3~5vHLAjKnC;5N~2NKvNvU<%#Da_jGG=P8rKo;zf zz!JU*hv9r4zWv}000DuEP=4_}EApRof-q+G0o);`hJZA@3!AFOL=ylUv-E5{%A;3@qD1WBl%gK{qe> z08z3FIr#|galOB)YFrIfjDxGlY3lI968LH`HU=Pi1pst10)>RCK8D{cq-*6r?M`3< zpv|y$Cbl>4002N-6@!A5R?C`HoYr<=G}h1n2m*j$AFAjXbYMOZzuxCkr^6BE~(T101R^uaL~;xJtqsBn##VoF+eIZgA~sI74SbI60d0l1So(i zg$-Ec4iXPwQb;3&A;%Wq_xNrO897rxi4i_A6=v(e*x&{3PYT<`HY4JA2p}lP!mJyG zJ`ey10|fp&%F6(n@N*$x0>%Ic;=m0VJQYq=b6j!&h8UqQu91U469Z1S^#qYpUlJTa zcwk697*F5;2nU4$wISMtQH;W(m>Rr*Lj`dKlnZ#6%7O-pI3Sm64RZ9rtAo~sA5t93 zGiz`|@9X_W7^27|FY}aM?1RJ^L^;bIRPZv(rK3gv0ALhcFK3#?OaLvAIBs0ffH*%j zFa)VZ^n;P?G(f-+1$ly&M42D7al)kB_yYtXWBWsfj)7q=b)(6PgG2++37Np?(Z?e) zzR!37AyNW@j4QrTLhG_5F=2l#FaQuF3$h3auug}&!GZh3lmo>JH=vXRbIBoMUkid( z7%&sqNN2zR5Cu>Pf?XT9O+}Z275{Pr@PNDk=-8s5F9jL$6kV=;6+qQyK>9%w>i6q+ zwiy(2OWQ*Z26U-+hM2jbMY+HK55NW|hxA!dIa}f}vWSG&d_Ms}s+1Pz?!1yofB&)y z!cz){qpwTgV;m<7hzpE>ENVahq}3EQ>!^St@CFp6vbeYg3@+7jEIeXoJL4G&bz(RX zMgRf=rdR+V1&eK3|D65eWB|R~bb4vm-WD(bSi}}+;zkuX=)3^L9aXs7J%k1-F1-5m zK@Gcu$?6ne;fWD#ulmL=LduZzLvv&CT=}T{SRzn~A|Lzr zfX@(Ys)p-+o&FdR08P*U00BV&ZYF>RuK?j6&*$JyKfp|Z#KeZ+$Uq;qC1g|LFYD6z zgn*F)&x{Fj#{lwXsQ_Srtx$dO%kTr(tg4oi9NfX*q}J!%z%`N*`RFOFz|5Meya)Wg z0(1``CP4D)5aA1f{0Ec{|IirHE{(~r|M#W@)n#l8c{#>gf7fq;v8Nacb)gMk^>$E? zz;My+?5@ba|G|MU^XiaHP*NG?jfd%U`UK2c!?;m#>w-@J={Yjq?chcjVw(INT4vf5 zVR4q`g}e3`;vroo#|a8^!xE8IWs08|JP!^_!|oKz?*6Rg?h=3*jsOAxKo*kl0%$Uj z=*1#eiv|SKeIx%5iNGBK1lx*agcYhpaSsf_0hUS913f3K8~qHIrt{H0?2A7D)Gg;uT> mOG97$%oYI)fB*miK>#_4paHAE8;k$|0YLy2LTCVL@CM@<;B*rJ diff --git a/samples/h264SampleFrames/frame-1412.h264 b/samples/h264SampleFrames/frame-1412.h264 index 629ae668a06a6bc4e9614184a3baaf13787211c2..bc66782e4909dd39da9f2b2002063e8b6348cb1f 100644 GIT binary patch literal 1077 zcmV-51j_pW0003AFaQ7nL7QM2yakUSQ<|5+!X%?11=;|^lHBOhxbplPgka1Q0-#_p zoB$921OPw~LLWwrkM>L&U?P-XlK3#4ix3)ZEVWnSR{rRK0uTq(G)zwI0Du5M8A8JRS6;?uD1u5lt^fc)DC`aB_50tr9^0Fa&;^~1YDCy#N3}WB@P@MJ09&l?5uZV z&O(3yffxV?4)z-W2!^JApf)(*G;G!T_yH=ZR6-JiA3%lF)%7J3@j&2^2LRQ;;LzbZ zIeR-C7LndK0fC-T00j+O7NJu@qvtLRIlK$?ekus~0}%*}f-vy(F~jBj1{|=^O(`-o zW&ry!vMk`T7+?WmpSUmqLSFiGHX6~QA5uZYZ^;lAHSF-aDYMJ=F;FI zNM1}z8v%y^L$Ck<0YLz6CfEkA077T;`TYC|r}O!I1V{=oV5lN&A{M~UJU~($r1lZO z0{`Cvg%G!Z1Ni`;UzPaAz}xLZ{8#?V0V)TP{OG_70!)COOpuH71Fn4J%nAShbnhqV zGJCEyV)=HFk^W!6tIBXigNjS)odmRP-lS%e^VZfaMDhH8} zSS?Qf_+0z{@DAmc)ldKT0qW;82mAi$1NQr^)!+X=hOLuL({LBaTn6!;z2^r7Z|n(G zh1CodfBV1bR3k~63;?hOOyAWY=A2X+16l6_R)DDg<^IszXTHeQe;)tu{@FnRl3J{l vviJOdi~oRcJxZmA9G7@77f=8I0YLyciM9c&z#EJJ00BV&6+&%*YVZc*wjtHY literal 1023 zcmVT zg9;x?2liut>wo})fQd)|$a;F^R+sp{-T($51->y4_$w6~WF^mMGzWwtkQ8u8rR~lL zmcg7zp09nx00<0yNU$d5xou&&-6!t?8yt)anE)ySYe?uKiIac~pa5#lVDVQG!cltP z_`m=VUjP9JfB+DS0175y7kI{)q3awQ>;xo@S$duX-a_#D`uuqr5QN(YzBc4d6l~0PtV}GU?zpQ3_Pn7yte+2H*pS?KI|W*cC?#c3=o$3KF`gH1PQ{Jo+VJ zA^-vaQUC*kg~=b@UrXZvxIjIGfX*N;Gr%wm2MbXR!e|i0?MWJXJoq(CfCCTtOmLhWI;=F zF@c>3jpGXd3Y791DZsrovg^cX00avGiVFGh@DkY8Kr{hJ0SGxK4rx;*(Rf(`l|OhG zBb+>#F6yA2DRhWSFiY?Nz=u3N84NOBFn7+(C!IV&0B~8J04@A@2pxvdD-V-A0s%&n zI6<+uXoM)+Ji9gcTv9Lz6)c`S1ZqtxirO7P002N6?u?7M38Nu>U2qr^GzJ(3*4OyS zoct7l!+;ZX0003&0B$CT2Co1@XY={|{0XP?`FsS33APA?n-~<~Gwpa$)gTPtSaO;C zEI|$bz*yrN@Bmw)08l^Md~r}9C;#XT?U;YSN`d5m7BB%oOMn}wPQj7$utncEjAsA- z;Nz?4=Yk(vbHBd8uZgU=6`$t&$Zd7yI3aKxQZ0O+`rp6<36)Z*xbC~Z{=o>i>5HT4 z|NpoNhmYi9g+K+FOe`~bUohkv1uX|Nar|xi4TF>p5R^V;!*YT$5#RB{D#EW~UHW(BFy0_V zu^BG9`7Gt7$sPb|39(+e;%VzkkcEJp8#yU_1*BrP_?>&c4So1}^wjNvIe?J^tBiqa z177+VJ|unr<1>8+|NpEc?&h8DumSsRc8)3y)$q*s-1q+e{Bhh|2S@0M6MBT5e@Y5_ zkGfJqJ^(yDv~T*E?%V^xvIeu}2e)8UQ0Mr`?Pfl%t{>~m{r}1&;Ak^hYqN4A@BFEM tpZgjHUFurp#T>j0Z#WC60003&06B@G0jt0pi~s-uK>!s(Xn<<)2IFG?zuy1= diff --git a/samples/h264SampleFrames/frame-1413.h264 b/samples/h264SampleFrames/frame-1413.h264 index 2ff96a5002d15d8163103c1fce22afc04e72df99..434a38e0a896c620bdcff91df0b95c9345343765 100644 GIT binary patch literal 1166 zcmV;91abQS0003AFaQ7nL7RXYyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|iq{f-l zgz9$m0AS-eCPaCab85ZKSA_Nx+Y-j~5b5Wu1cLC7H) z1be{6Id1>}KnwsVDu;xbP44*u8D!FdqQXZ20`J00^vq zfG_}Y0#!PkJ9mkN?8rEF)&LF+A%g#fH`gBPVk$ep&TwlrX50l7z2fx902d4e7vijx z93JptHij;MeL$eLQA#5lh%+Tcm`U6LOvCU1AQ(TT`uAc)O{2GJ{tv(dINyYgeAZKB zG!n=%aJ(lStdtUX-mdTf6aa8(R8b%y=>!a%+^4`U00&@ZV51mh+WaCE)`NfvU;wz_ zs1|@#AMdmAe>YI03fIU3eM7~cPm)TSzX!z zfaeAYHRiU?|FI?4|M*}KI1-^(k~hFYQ?nz#?f?Kl1OVX$q7p}?szXBPrc(y455^Hi zA*wvYkToTjN*u@v4R&7T{qXg*M)Uj-24Vrm=uG7ZaZq2QKR|MvAXhCNWu$u83TFZV zUeSH| z0mS*MfYfAyzy7e0qy6nCIak5|i~u^oAAs!>!u$mV5)=Rc0|5m%bEQB2{38GX0H8P| z*fY@)ccv;=X@d>`hhP8z0YLz6Cg29I08FRz`S=r0=koXnun{6c2V#y93t*6JWoT8R zhJY4lQ%@7<0Lz;q9emVDH+}BEb!+U|n|0vB-U3VyA|<{+f$uPoM&R-c1jrx6mjEBg z%gA|)m9TOE0UErY40Q0M5Z^jO z4ETCEnu3_U($eB|J_;%pMu>=KhXQeYNY-VRY g{sx!;00BV&If=LdtH2wK0003&02M-R0BZ0C*>KwvS3rJcFutE+)!cag!(kKsCya6%*59NlK1O&F>#Uizh zZIb!Gpc4iV$$eG00aU69FQ%4 zOo2ni1sWKe-ePi?g&Xa@Bjh;TsXi*Ia;0tmab}=Z0_rM~Sg!V`PMcg)RdJKqqrUC~hCi z_JD(n1tOpTni8MJO;vVZVJIjwo%7Kx9*NQK(h+VExz0;Xb~UhAMamWM|IO}fOPz%w zdCx}(5kLrOgbfK?CbFGAkN!S4kAepf)1v|#)23p3U$|FBm%%8I_)HlBF#(aE0AK(h z4(b7k7H%d41+VR*z+%yd0=mwkJ#czA?|?vuR16?USyspin`sywMS&Daq!>>BxCSVS zF3|#}hQcZB%cwv1001BgDCQSMP*nSZ`@xu40q6eUAmBMq3lWi?E2wrvBE{YeVG5Z? zLtY|sg?`1)`~U#~5Op{gF}AOj6BLO@k{ ziNK3xp;1}}^U>=imG_ycUqQG%66pJ4A%J{AKkPIjQ2m~pEfwQCVH~tb8k^g7_ z0sw!27y&?e%^H`Z61X)#xd;LnKmg$)51k7h18VRUzzMnl00BV&ZYGchuK-M^^ZED_ zPv`RZ3J?%ug(fiJ5T*g$ct*^|D5L))ch3p% z5@3B86!1n2TI9y&G)CV+#pq>*)p#N*lGLl`;ydr2|M)%BA#MsL^`Np?;^~Y*K=seB z1_pGQ)z6Q;`S;(zoL>?(k#X=7Hcbt>6&cd8BqcB*57G<|wazd_F<-Z`4jvOrdM|C| z=C9!%fdX$GpApFLkg~faeD5*--~)~$n^yh#XisKOKPms)NCx|){Guz6!Z0+z0003& Z06B@I0jt0pi~s-uK>!s(X#i^Q2ICElx3d5M diff --git a/samples/h264SampleFrames/frame-1414.h264 b/samples/h264SampleFrames/frame-1414.h264 index 06fafa9d3a90b4f8e2191af26756cf8fa6b0e9cc..013a3323ffaada76c8470f426a761170e370357a 100644 GIT binary patch literal 1298 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 yje#Pjba5B}=GnxF0rP~3H literal 1340 zcmV-C1;hFP0003AFaQ7nL7Jc%yag{ogCtl^695DNgO*W67FlJKQAL(l|L_3B00IEt zTmT0G!6K;LiRQ?i-pmF9>x7^H;DBVX4=RJ-s2p4m$YM9(08{`30stuAL+s$dg{dBN*_hF@4R(MdLvt@us@I zVa#6vIy?4zexH0_02docnq-;#`k+Xnm{`0=M?JrL$9GtEJMRD#+DVS0cR%O$NFr1- z1#ysMaTe3T%i*ZN*cgH66amo43KllO=uPgr1iC~1)aC%FWXLMhO568<03aeALkFg% zX7i;nq|BgE($D}10DypgD_}*TF$OBkVNgQQXj!yKVXYWMhR z3K2L{0e3_<#6gQs2E_ng#No>nLnhcJ;RqZ=YN2@bJ`eyHe`BnqunDF7Kz{@>7ur`a z5EmxG8QN~e*sNC7>7}{|A{w&`wm|$Y01&)1P^r#bf8bay0!Rj8SrpDuHA`Py#px8T z$^l3J-qSFHz}-&;e9R5pGp;hitf9W28(IbIBxG0#`N zKn4VSkS_)a-u1zOea8@gLlpMYee^Ojw7t2eIeQhh`S5r`jFM!NM}7VRht#3we(T!z zxBuB25|CbMI`qB%(hs0Ob9YX|fB_!E!p1c(~U69|SNOS}xv01uxfx77dt z|KJ6=B<>5np%2{P3)zY)&fvYQ=aHxNHmX%sDu4ZHWczT`-~EBhYfGW%ciEoNvn9u1tH_x%LVy1-CMoW3w4e41KmY&%K>#_4ssXFP zz@IOGi2)xBL^7q1h~QvfN?AWM`5<8%Hpq4DIu6dZ&1VGon z!~P_Kum#`%5CSPc06>fY611fN0Hk*S0RV6WtAGRY9>0YLy2LTZ3&@CM@o=1Zag diff --git a/samples/h264SampleFrames/frame-1417.h264 b/samples/h264SampleFrames/frame-1417.h264 index 375d6530f6e2dfc6ff8010f073f102cfd81fc928..cfc4dc38e2b5d4811ce7ece165d7582010339324 100644 GIT binary patch delta 1078 zcmV-61j+mA2HFUJ000012`~Tv0YRDo8oUKJL1Nd`^!&nj(FHySl8|r$sV^*fehtDf zW(k2ncqncF2mlxeQySbf9;m>|(<^%?;Ka=GfKiLq*ICmm=>R4G3!orTs@2S#-G~2h z07D^#C8!{TJl2rs@CX1h4Fk~4(g?rkO*a+500;mT0+)7whCGA>te^h&0e}F2p{P_Q^1u&t1At+3L$?05FR|tT90BgD&=?cB-~*n(1?2O_~R5+UH=3nH)py)Xd~C^d6|EE>IK@BkAe#`%(WR7datz*`yK!iiZG z75GnqVru!M($IQLeh26Gi6^mb=Rz!3z!0Iim5c#_Gmu@$7;FNDzGYM`_TWBx>cL=Y$xr*{X0SHmXbudy&A#8Gihv0|oT}A{J31uC|ga$-JLk2^ZfFam_ z0003&0B$CL2Co2hC-eAE0S2i0`hWfazQ~QwJS_kK0YLyciJ$?i!N{M0i38X~F$i3K z>=EqW_={YaTU-E-uj?EDyE`@#Si$}^zxGF}zy=31f$az=Dc87^4E@UZQnZ5{-)}$P zdf)gPuNWOUo+XUwfZ*!S`doP*5AAt>&ZEvCd?f}WFE4^09AxpakKJztUYDyAoBsgm z9Id1oU;mq-ghV*J*PQ?NNSI~>!~TbcBETWwLZ^@s79ncfy*?HIhm*@Z;+rsG$qx7D zgWIF9#{K8ODs?AaKkGc{BHeSq*LAEIC8 w9}Phyl$Ia&=mK;ESRP1xA+!TfD|4fSTYqba5Gwtx!n>0$12zU|0BZ0C<1ZD=NdN!< delta 836 zcmV-K1H1g%201009Az3xZ7)XmyYMzyX*53N%Z*6P^cgkmjwGJ`YNNAlN9Of)=(gbfpG$7wR*R z0tPmu&;!I*kkSyCQ2y{jQxQQkXc+^F-}{|P901$^604Ln>;xlyYJdJP00a}j071|I z1R6jOCQ3Pgyueee1{q%%(0NY#tH7RL(A*G^Q~(HI1ZC4e*hFfDzyI?9+yJ3DMH!VU z3jYcfpa{f&ai*5z1`59a9iFU)00y7{;DHy7Yv%&@%i{pJKs|(kcz~Ewz+f;qLTGF{ zf-qr`dyJO=J_r#>=V6oKT;(XRYv=$L02NT+e+)$5@4PKR0uOYr?(k#jQ|aOjL`O;G z0RpddaDzV#60kjyl};yOP9!M!cJYeR8o|`T%(hum-OHbtm)qPXPv~`uczV0KUkL&pa&v z00BV&If<+RtHH>hfQbXxL@gN)p*MeUNV-g0TmXly^6UV#?=}-yz_*+0^!kuu01O2S zhwTV}V*g4E{mQt?kYcz0xxW6l%r{W)5iq<7hxW%~!w~t9$n3G` zsV|0_It+}-E;5c%5YJv2fZX~*KIz^H#Gd9uL;tiH-=35A%{(*lL2d||4K5=Nwc@HY zk8}Xv(Cfa8S)bXzY!y2)03;RCRE?XqL+ zU15D!;txeENcG9q^3b8dMAUOdC_qh2H}k1b%PNU%ynoUG(jj`%f| zP>%tYM+X9e#Vk;YgmoM4AuOD+=JGOev`>I66$q~LaWk-z9;KhBKi#27SxOIYtVpYv z^-ni*P^Ik>OjHi+aPiW#$L;ludP=tXJ!-TCY*5m?zI`X`*#`beqK(iph_|F{Qy#g` zoPax;XtF(Uz=+A>#C&4$a3z68DrHsi2HY3S>vjwsX)6G(9GF>akUHNx&F`E6oz;AWL*gTI zpJnF;Vbv!b!6?kgj8?qBonkuHQmS?hk^*B%+Ar%d$P5L?wsprYrE9qKI|TZTmLQ zy`|(euDN5;0Vs*D*&29lVl`1$zaNLr7P>vhvehqyhM7lUW4&zFi~3>28O3r`tSaO8 zlyf6EI7~Yf6&Ff7+4ob*`@wcKAV@rE@e=H`q9!7cJTs|cs0gLf`5NtYdy za&zorV`g6$15v(^{80NTYZ15|ElC*I@~vEJ)LLXm0LO}Aa*CYJbsN1KFvO3%D`X6Q zP8}R@&Lv-gq-cH27rHXxiF1(KZhfQWdcIS8T<(N{if;!-m*N6?QDcyQd*6HF)&E(tJh6@gx1W zsUPj7YKt^a_;`B4K8yKupqSF|+FsZ6h;=yQN%N%J)Z^*ruhlPArEj0@BKp6ee|IoB z#JlR=tC6Yc8Rfs4teTmdB)U0>xN;)5o4b9guKXqT$KyliHQ$UEjV@L0)+_R<{tVOw zrR@G`fr*tO#jf1{Y=s(zlk?LIL*q}1gQ@?W`FYEv*OroJ6i)%i4juCz(ruf})CT(~ xvfVtk4>aKGWu0SYZmzy^t_)pw<5<(-I+ypPng2J4IkLVSb*@hgw#Pv3{~KSPAz=Uj literal 1117 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 literal 1342 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 T_y&pq00BV&6+&!)YVZc*5C5|c diff --git a/samples/h264SampleFrames/frame-1421.h264 b/samples/h264SampleFrames/frame-1421.h264 index 327e69d1c723dd0a0b999c8795be82cc05d2390a..02278165df81abe50139a743d047b10d483c8959 100644 GIT binary patch literal 1870 zcmV-U2eJ470003AFaQ7nL7IRXyahKwV%OC4=KuZ>LM8wS3^*~&T&QJ95!Zz#q+SGD zY!blmDRsAoZ(pYGij{Q~p%?%-;SdH3AMPH7NR4Z2UEnY(2yB2Vag|Fn9cW|Nh-Y57 ztcJb?2+ z`uM4vKfy9@z!ND7BGTsK8l;AHnN@ z<)lIZ;#jBm{A>Ua0s=3ViEPVwIs+k405~y$6s0N=V$uoFC@FhE3Yo$Mc{cLX$(UW& z=G=7yu$iJK^e_&ESZTzivIPJxQU7=dim|~{arjRlj{G~jfB}XZVoT1!S)B*q0Ajm9 z3VN@d!~s-bWN11000*dXf*VyHR;b@~KA=GzP{JzXtV<#A05Iew&$gB0B1o!#_kbAy z3?X^L1-6jAZVI3JzytshaW+|CGSF1rIXD0$UIK`B)W56mQqUmvI!n~)F@Nx24}~9L zfC1F-0f7-Cyrse`BcFf+fMCwGzoz(gpLMVM;gkSo_Hd9zqA8~;?HtI4wh<=_s2iI> zBjDsx(KJmX|F?h$3=^_&+Z&6f&k3_i0D=HIHh{yRCtVP}8!YLy-~%X|jS|^wqPS3J z7^oNu04M>$B!AY8GBB}?$bb8V;W^G~K~ER8*x`Ul02><-2B18x`S$>2Pz3>GVT}`I z(7|Tk+yKA_G&k%J)|dq!Fn9nV?==c|S^3Tkm4#iR)6Mce9%1`_zHjrP(|R9m{gj0d|*Em013bWo>&8&<3PLP zRGkOoOaKG{Wbh0C6bRuDY|A~^4=&(9AQM9u0);*345$JhQ?C*9;8f|*A@S}20}x&L z6bjj%T1hqf-Q>(w9bB%f(tfXd*c-1XCxnnzbdFI6iLd|= z4A(#o07y$%(I_L;hBaAWa4!we3l;m*6x{G#?9*8gNPS1u&%!mNMBxodq_juVfnZgLTE0`w{NnTEW@^kHa03cd6IMLNEv)b?N z-~h(<1uEIw*q(y+EG7&+5+ETJO2Yv10eK}1vUc#Ac`nD z6R7Wa?E)84*VOdpNMT0s;!Xev2odQ#QjYxwlV9Z;3=qEr;XnxF?Sb)Hwwb@WEBF|O zo-rOewC8miXaC>;K@6@SryQ!s5UilX%!rB%4zS-$-yp#X%{(Nq>P$T-cmCg7RNjC9 zU=;4K)+JXPkBoNkfMswXter6@G?;HmEtylF{NM!-RRM>wDckJvl`IZehcP+GD5L-y8D<*}8pbWVW%FGpZWO@`FaY*YVJ}d}uHpFqEdWEX z0003&0B$Cr2Co2kFaQ7nK>#_4r~#|MZy(RVoPR&CK7r&9Aa@oNzze-eW5OliE}1ax z7tGO@-~rT!Dp~0GIuDF7`tHeK*N&pm=KOQ{8L-|U!hke_W#fd1 zABQvvg}1AwH}UB{fM@GUu2rFykFX<#06>A25)v#j8;&1XS5yj^1IDKT9UygGf$#UliJ`#&f02Cg ztDmO=gV!Z delta 1459 zcmV;k1x)(R4z&w^000012`~Tv0YRHU8oUL7PXGiqW_MXG-h3Rh~gNWw)$ zQnYQj?U&GhW)>bu;hq>kDbHvqXQqcK3QLFq`GOb?+&7Wx?CM9d%3q`aS~JDE{ki}B zSP~R-1&hRVAea5^Cms+1fKYCUQT|bIehety8QgAxkf~J#%JmEY3-nQrqbcuxo7oUV z65fBvQrB7kCyr2snL}Wdc zx~E0{02t;R;h~yWdP){IG?o5vVt_B-S5%D|(5ENu#Rt>_R2mk~Df`1-mWq?iM zkH7(87<+j&1n4LT3Mq*Ssm4)Rmq0B}NF+`e+U9)&(3{X^KJyoC2j?;hu5DPFU z08wh?|3q|*3<^$T006K80}Ccl5)90O&}k)quUcWj*f}YB?0q(O>;d)_N*BgDXuB`{ zfq*c>3XQ6a@OZZZB`G*S3BVXPhQ_6`4gDBDe$W5}0YO12GAHH~=)gn27J2}1Mvh(^ zNjKz6>UbKGBLEufT0M00IDfpaB3mjp-0fV%4I5{V~FTcAk@e00VF_jeUy!3BFKsU%}t-00v zgF?phz)Z7oAOOG{c7T$AVSoZca7Lq^5UCR#AY_k#g1iBT6N3;y2VUxifY3jJ8Bq#3 zh6u6>ct6wt0tBWt6rKUBMKUM0U~J%jjWA6TT?ac~`+5J>(vE++B8`Vec{PI+g|nzRFJ!*JtJN~!^LC9 z_iJ{62vZ8EM-wHMZ|=a=|D2BewP*e27mQ3=A=VG}>Kwf%tHVG?eEZ?Y|es!TRF=f8Rq(!5~0Exdp-*qF|Fa?2pXqAMRXpo zy0QQI@n_)RfIh8Ob!w;Y_yr2A=`6JO-gJh#`xa>eCU#4sfUo7>|MvuKG4BDG8V15k zcQ62YZ9A4@X=i$c@YM@8{VM<_i`^w*9DaBZ7fdP|JlVE5`+t1@!21k%6O-Zs5*`D8 zK5va6DH<9R{fB=9f7TgT{`rsxfJvgwX82p?DDMcuPQ&@HZF!_C>oJ&)-2h+}7ytkP NK>!s(Z2)TU2II>8Y;gbp diff --git a/samples/h264SampleFrames/frame-1422.h264 b/samples/h264SampleFrames/frame-1422.h264 index 030294dd72b4ea89f8b759a3f292d1ffe662d005..311b3ff523b7e594e7f6dcc3fd4c28f457989fb7 100644 GIT binary patch literal 1068 zcmV+{1k?Kf0003AFaQ7nL7Jc%yahKwLs!(4OTh>^&G?%$Oau4;AOHvffH0&!otq!* zm^8peD8FU^0Dw>jJTh1SkU%guqYM?bT=5!w*&x6Hh3dD~80P`t5D511erGs{YR^}O84gtI|5H#P z^&(5ui8mBj)jWJ(^z#9vQ6K?klm=1YCGlfT2~0>n00J>0l&ogTS7v_z0f2o3BAlq# z6=;Egn!g1=Gy!tDSU}mR4&etN01yoT0RiA0ekvbJYS{^bf~tl9cmQxb56uDvLQK5C z7Xaf1kItG*85N1**xqEBiM~}A*#5QmA`|H1#n+cRbwyQpIszy;$dLIqrdM4D*bpacRK9AgFncZ8N4Gau_` zqy_cuf59{WAOHbLqyYf%Wkenf)!jHe! z9Vh?@4q7{aP>lrl-}8Ax>il<7Eno^05X4~^Eb1EYy1xLy&jf?&OOmBJ1C2s7S^$O( zjIsa@4hv}z4LCxCL`EqpH-Fv$ATUv*T(bg*lzCNKR2X84-~WFwO5uRPBW@+gSg6#j zs9O>t;0SgA00BV&ZYHP(uK;*30003&06B@O0jt0z=kxF#$aYM_D5)=us1%^6pE9?pm2+%RNmHs;( z&A0C`G;Zcg{s&Mvf#eP%;L|bK5=J8K=Rqd1K0po^^U;%({uWd2!~E;kpYSH071$w( z5GW`ByXjlh-dZW6Ktpj*O2L1yE+0-UF?Ijxn=j+F2LvhyMY!eBVKNwKfB-;uslXdQ ze~1c<$ol4gsw*k#^fXA2h@g<``jP%F3!N_^6s!Jk17v_1^iUw2SVisggO32&%K{H5 zsRwL;1PV;JhN=NLzUC$*Xs9J0I23n0a`w4da|g5E!XKp+4B0YLy2LTZ3&@CM^}cEElB literal 1027 zcmV+e1pNB|0003AFaQ7nL7QM2yakisNfr_w271>8?gCx#9JB=h3Dg|5@rR1y4f+4l z_%Re34i5!jxF|9J4U;yAqZ*?x0D$KMm(6*Dq_Ck9f9?PgcpSR&0R@HhYih6mXfl8R zg7C>m0BjhF-7C~ZlYPJd7{CiE5J!^{u#+iPo0PQ4YIJBOQG@m#CGk^eqC3i3^ZS*mhX3zdG00bMr z078%e1S!A(f@YC@;|Xy=Edjy!Fi0N3^{)bXe?xFXBmf%&01QRZAR8!#u6GPRFasz6 za9>qkr^H3N;OqC`VTuylC^SeWV4r^sTtff>04x9k03cxbaV`Amd|(#{2e6PU5EB{T z3;_U8^-$z8g$!Wa_5MqM1K=Pc)$c*k!5)KDSaum;0RRDAG*Aohq;2=!3s5j1YZdv@ zpy@>Hc<_!+k%Q;orDLpg2#*`01C9BPaH@;O|Cxi4*&pw zprs5VDoz0{t|a5&34jP7Q$!MRbEefKFqwMv-U9}40VTor)&}a#rDEyQe}Dr41R`x3 z4>oEL5q7u?;&+fh3J*Wv0?6aQSV9TlAq9z^0Dy7jg%f^8MwnKq(G-a9;JD>r8a8b_ zc?(yaSD3ru2mk~Wgq0l&5{6N@Q$=tL1kC`WfK`pD$IhalZUZL(Cg=bF0YLz6CfEkA z0C+F}00BV&If=FbtH34a^YAAh;CTbdiNFKqS}n68HolkW4j>}bq!ti>2dRdZ;}8dE z%Yg~eO%Q|mjU0xN^5YFkcqU>G4s_br*c1>UDoQVMtY$tn@6J$R`Dn6+fbs_sa9uIH zp#~!E|CZxTr?jvM3;F0o)ja}9ecYk3?wkpyg>wERP$OtSprZ&4S71aTpjjHf01j?T z2vSVv;K9z|0#*y{*KY;f0>A(uAM#&-f^caK5+ouj6W*i#4nbR_%M-c3&jgSLT{toM zz_+*1NcaXtco10w=wt{11twVKr~+|)%v?xBR1`mZU;xQ}fbxI5FYW|%al8W4n=g!v zi{HD_-2~G8Fg@|r`G4@Zk!1msO>CJBLE$SRI~%xm-|#RR=?BWxa2hG!`vq=8Md*us z1uzl`Q7>tVB}?vPanZpNI2eRgj6t+dg~+%3aKL3a;m{|?zML=+DZ}Da`v$>{_P9k{ zRE9xHCHMk9DBK4Geq#B!s(ZGdX<2IIEwugm}d diff --git a/samples/h264SampleFrames/frame-1423.h264 b/samples/h264SampleFrames/frame-1423.h264 index 4b304d7a3a6dd308daa1c284d77f7f22a57dc974..da7606e3de1238823f64b6fbbdf9d403d01c07d4 100644 GIT binary patch literal 1245 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 literal 1469 zcmV;u1w#4&0003AFaQ7nL7Si&yaj@YA%zIw1J#eQBbAJRArGJ`yvjhn)(I!3`_=Ho zc-B9sPAc%8iIMd$;w&masKI~$fpurx!X|!xS;G&-6@5sqJA{7nA-JgGQimnJVHgM` zUr!6Fs$Hl5`CxjUVQAB<4)1`N&JgRRwh-m-+7Pt%IbU)REh_H*!JiI5vCkoo|MhYp zG(<8MU}UXT90f*uQjlp8*RruMA@+eV7WM?%u&%2QzR&;-!M&$~EmEI}0j}EbA;P42 zZ~fdELpAFxARK6>_ioDC2tC6HVJkq4#UK0n0D~Nv+1ZBi4)rg`h>0EuL14%fojDq5 zAD|Ne93rF@z{EN#k#Em{0||ogZE)_I`Nhd(09lL;Pr-)AC#3@glhyAS2-N2Yaaq3e z8N5gZ-ISMrxG>S$ek5M6e&8G+02NDHfE*QFL%FE*Zbg-ELHJ^{lX#{J>ZmwVj(BqU zri={4jM0-e11^4j|MLUG-atw z_(%Ww!0wT-C=@f`#@k`S0IHV@#c-N6J7|!7`y;=2Pm3^wI2Sdd>aIcKu9nmC@4S_0N)4; zBzVC&fI83Y06gpf3;|BU1x3@SBLCW`gs!4uzxV&KEWUx*WduNs z5)X{{O27hs^@Xm2^d*Ew*zg7yLfHRHSyGIkI;tS!L#_Zw00;npF+sQ7ME-C_nbV!W z|LQ=sq9L6%*?r-_0mCzh=^jq41-g3ehwe5ECVE0|fAonofAokbcFw4mz($UW^x@Vsuj<004jt4)aSLJ5jyd`LU3Uw{CBb4Y*#V>?}NFmPu+K~V=gHH5_3SN-4s6#^U>*!kTG;;5ViB5*$N zFx;nrg!BId3g10b_ly7p1b_xmP(0v6Zw`JW8ta5$1l<4t0YLz6Cg=vQ0C+F}00BV& zIf=RftH3%3^ZED_kMKN!#K9;8`WleepaE(6sDQ;F_WN=vIV?mZx_Q|Bwt_ZFi5q zydA@?zqf%j@V=@fU|WDX38fVQ=<6Z@0LJ7Mq9Q%<*f5tyksglPb5Z6Y1gJT|?{$(w z(eIuY%lMI@y^0D2>qbs|sW(6k<_lvoq(B%eXRJ7|pa`7{Gs47A4EilVPJ!eOVxXtI zO6G$?K;x?gA0|MmQWMZp!}D%6VqotEDSu5cfXfFd_y z9mxC^unUBwI19!GqX2P~NbdnCIVPY1;gwdv#n(4?_QP1Btwq9Yk<>fW2UUmgVg9Jb X2VGV__zLI%00BV&6+&)+YVZc*m!q0l diff --git a/samples/h264SampleFrames/frame-1425.h264 b/samples/h264SampleFrames/frame-1425.h264 index 1a5e6e08589e017825c27dc6c78a895d49b7132b..12a63a28d8cfa54408b3bcac64f828cdd3e43288 100644 GIT binary patch literal 1337 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 diff --git a/samples/h264SampleFrames/frame-1426.h264 b/samples/h264SampleFrames/frame-1426.h264 index a98ce577c592b745f2b0e4d1fdaaf438194abf0b..a11988f4dee78b895b748bbd119ef85014d8c815 100644 GIT binary patch literal 6668 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 Gp#Kv!?=eIG literal 1720 zcmV;p21oe-0003AFaQ7nL7U(jyaj83zy|;{gasf0_z5e6yy4Vc)sH|!fCte~0}VWW zWQNxOAV3YtChFEb8K{5| z0!$>NltIOPcmH?-I2=hW$V^Dgp4BST*zd-DtcL69m; z6)#t~g*KRS2cXPJ$(|Mh7DCpLC$Iu{n#%|QCLMy9C9>is(wKyu{qHPp0ji_`pz%tc zjf3SL2B7EiB%yg8iPzt7eleWke@TC=){^#yuwG%X0H%`0zalT&v;&qBO8p>b_GBKK&;`6B{W|*y&}akiMWv$f8by3ABK#m z|A5f3D`iW_NdNtwBoUE}WF{~}6wUx;5WBKjv8`CAH{caWH#u{TzW@**K>`rG*d*~Z zPxa9Jh`<3Ikl+SOz(&m{^ToyS5Cq0joB@D{Z{k1FH%$U?pd(YYjm5s2hyCkVSY*xb zk-opMwk9XTAfz7ezkmm$Jc*piH~;#eNKwo@ULh2MU-!Id8}$M>sT`+Xq@| zV}9@e1O>yeASFd?yPZkRXJ$h!Z2$m(I0gaut^t=t#N+@100IF3EF>I6KvR;HJ%-lO zfGl|tk)&ekoj>pZW0-S>hHGKzI9%M)Rr$e+0a271miPd_f%yoLdC(UTTF@v#JZMvN z9U_oM2usc_tKZ?cIArBb0whHE#8sQG17m;}xjZXx6xff6;2?mbBMPu?6!<^@APf`u z^D8U@QG@^6VMFi$L>WYL5^1S$uPU#)7y*DDC$%zM)D|=(gi|B`pbQuT1_~*7sstgc z85M~^8iN4zBn-zB!(bc`gfrpoGS<>~vGXth5C#A@#})yk2`50dwdlqL+!X}T=a!VN z(9Q}Bg;)d~Hqkj~xA%>$reX9j=(^B?Lu_J5T>Q*xl~wzO8N|~R3O<{TzwiGBo`#bJ zPj2u@UdOh94X!e1(sEyeF(A}fTtHMQ=pTktfGgAFfV5c*-sj$XAOJyU0un5Q*edVd z0Aq+{2uu4YP?9C3a36uNZ~}cS*dbj>u_KDI>BE3)0vT8yJ?#3X|Ig|o0AK=*wxQ&# z|K0omA^Li~;Z#X9a8LihNHHFjeQs?;-~Vj}SveNMg=Z(bh77@ZkBLy9eM^7tQQ_!Y z8R3op+RE2BEI=Z}%cZ|~00IOcLBd9!CNX#VFi$kR9ES3?!~;M!gMpP4=91JeCJgO% zU@>@*aC-| zYRN{PFqq<|n9fV}3P=e<0096MN6;7P*kTQn=0+di!J~O`s zN3ga!gM$Q3^Nu4U*@46jp$kvE5C5O~8X8HWe%<^21-7rG+xyi&KySpOJ^qZw{`Z`7 z+gqnA=*@QUCY~4G5Qz%`4S4s+xG^zO4K3JYQ7phcD_cN8*x!@F{0<;(7#8&JJxt$- z%j|3p2-N}PMdcR-ym!9vCqUW;vG@-@vStEtRNwj!AYwf_LxYcNXl<}mnOy-G-Ztwx zvHy1b<)^YdXMvX?ZR`{xuKj`V{HeF#>?i|w+kURVWGBxAx|vO9-?Wmz{*lhAsocyX zD?dN!*&9Rx!Vjc;+imat+yCsK1F4EF@<;yvv`r?@9*^>X03u{mau^&FMm1B8=@|e3 O0YLy2LT`X-@CM^^H32FB diff --git a/samples/h264SampleFrames/frame-1427.h264 b/samples/h264SampleFrames/frame-1427.h264 index 6ce083b01708a9ed7a358da22c0f0bb5d5f8a17b..e5f7d6e544eaca73d2d08124c91a4fe3e99e42cb 100644 GIT binary patch literal 2503 zcmV;&2{`ru0003AFaQ7nL7E^Myag99Lx7QXMqf`DD*#`wfZxxDsCT&O;Y|GVX zX95P1+fsf&ZCSu9u8#llN6Z%NL#t39>ER{y-2T5=;Ubj3Z?SKL36S1paWAkp%eIR# z2m1ZMJSU($8|*^z=&&t_de8|(-QZb*=xE7!aK@Ncbn zAOG^a5QCDHG{b4I{oSxL`fVA%6J}|EXq*5L0Kmm5ZNkB+i3zMPv#w?U0pL5uO8^oe zVfidc@}vze?@BFzBz|7n0DuB9cq;rRAHEgeFcJVGg)O$=BAuHgPksB07yxD}_|OU0 zdJqZ;|Nf_VmB_^|uK^fxr@}k|e!c^LJ|3ao-5fu0WE@_~s9+vPdornSAC#Mi<9{_&~$17LV6{h_1G2B0@o`F;cc zL*Sc{FcCfG-@c0}N0Bf`eU)N85p(@r z&X7aU?dFvb#6tDG@b@}=rojL3TK`AA{P@e|0~%j^RbZ<0K|8yx5NH4h0RWE{OB>sy zep-ogL+~H^G(i{u2mt{sv9{@e%#n2g==jN-|2Rp!)&|Cp=y}~OeTemr9{L0CBIr0w zyjuzT?cw?Z{q2{qKK4)4_ADunOtCkOSW53T^rS`_Cqz5|NY}r^ajB2Rr^Cnm<>Q~sq*{> z{)S(~fnQ@rcVLh9ednf9j{pe@m6_a(>Q>(Yp7U`hnA$B7`*sBG{jB#17f>FE0+;{@ z0suG@ub`2fgHa3Alk@-q0B{Tp?>lgdL-<7%GL%4ekZ=GHK|!5>2A2K6Ea3u&NE8*0 zJTbKUikXSNQSNi}44@7Z+QQc&%R*Q^;sjuYF+v>k1rl-K01yq}1c5_UjI#!bMGKYx zga5DF*|ykW@Bw*@#tEksAtVjj06`c646}pkm{35B_wt*LUl{-tfVK=C5%VJw6V>SU z{(o}^&;SS%fB=ELPyh%FfSh?f!};6KKy0`-X(SBrcKkgI00aU+0r|)WMe*yXu)GZl zC^WeG)o~4ew3CWR(|W$&X*%N*UkCsD!xJupg>xAGGs*@eFK?A*4Xe8Zf3xpBGL&of zhL1ntGmrFMz@6WZOL2S7ttKx>D8*8~ipO}#Rwdj9+m8}~{7_xxlDy&ZdYr@KRMWgZ++kklUnl>2-$PR~^{4nUXa5<8rS;oz z2Y(h12LJ*BCFzht*}r$-4n(Mky`TEq{we@iI=oLyHVmom`hK0W(bstpD`?Nq6|IGhl6wgROT2qawTn zs4;%4?qAmhf(sh>(Mb1kE)9ysVzFJoK;ob#-5rkKd0hfor9xk)ac2Pb#`M^n>jE6yyVUuVy|hfK%Uae%czRU{3u(+vop| z_=|aG05LV*KZ;TR_Tt=!{0$y#_4q5-SG78(8rFf^E$1HQNq^T-=-==N>rya2UJFc$&t5W0?HA?v65%=Xw|~g{+YhSj0;5l1bDTHr z&?5h=N%1BETO(X#y8nIl#p+3PWk2^YGj81*fA_GM^9aISUZw?hGO1roUo)e+rvL;2 zKkNk4!+CrSpmhb%ZX_8*h5-&!fB~AAxLPs>a`FH?8MNhrFNHJ*Gl?039Ebb#GqY=& z{rzCKVJa*d4RX`NIeZQvTfou>83cx*5@7?PQVK5Q3!#;nj*9yHDE1l`f&A3s5HYv_ zCTmL{Bv$s4MP!$V{rVRG00BV&6+&o$YVaZ($6xqJF#rdcWH|v!@`KbMMZ`S^2G@a) z|7`-IXYk#YLm7vo$1dXFV*9|5*V;#%L>_Qk`fPW9{3Qj^h!*b8fCMfcEDm#+6*$W* z01c6iP=wAep&#Z!@MRdCV!#qI6DdC7G%;M?+Xxn5{qJ&${VB6&O!EKyJTJfi!i%mw Ru#+eiGRz~4T?{w_D}W?W%2faW literal 1020 zcmVyag{oVx(s@WGp_F@Fbf8Z@>#c5CzmLQy4*JAxE(J zd>D!i2M2<%Tof4q2#a!4Hbndg6u_i!T}H&*x0!Fi6VUICVCRea26jtBZ~zcIGN=Fq z2EZ~2v{9kfJ@)_xKma(=F6>Tt9mqqPvR3#!Ar*p(8X;?A2MS@Fm#WWt06;@(WbgyT zSCG;Wm{5EWl*C~9v?90C1;U;K0Rh4jLt)eqgA9wDW4Hm( zV2V$944(?-DMf>8umS)TlMujuj7II;h{=}aWKqZ+Nz00+i|NjG6N~xvt5nuY?%-)l4 zr@RHh4C$@5jz$v6|NDj#G1#Sa-~b>50k3-jH1NKVU5FAE4e$&A1Oo7j0ZnsoVC^6S zis8LGp71w2NY-FLqCNWn>)^m1>tL2MggpJ;r-kzP8^F7Pqz*PDF%6I+i7R60ff)?7 zffV_)k}LOyp!s(XaH*PB5?so06f8n z)(vYb2=J*&Bs~GZ-rx)_pU5@<0t7&m2W+th7=irBXG%T*0!x?P1dh2}0K#t}(&6`Z zhxFL)|M*CO!FYl0?Dzm;;E`aWoWP1Q`tSfYMm0hcIKG5`nFqm?Vs(oENXSg2`-I_& q=KknFqbKis;#ah$&AFZ*|A&V700ta=@P|VUpj_inwlSy$w0~xx01yNVNYD>DlZC(m!GKxc_aVnH5g9$DEhqQ={k@wr!{7*bBvLB> zcnDmL%8&if0f17o3_vEZa8m!-EUYj9C<6);46=T{*9R?RU|5wQ`~;qEb}N!LZ21fw z5Kpl}lo~Ps0lo)+px}UqaPC||3eWQa1liF@4xkReV#YHRiLhq{mk!EKOhaow{|DfJ zKU@NegY?Y{Ap%YsiGtUNrzK(5U_-XQQz7hD7)CE=m;g^uW_qL+xl3&btKc_K6dueW zj5ey`ju3gFfpRX400IHKCDqx-IHwMQfc@Km@tz&CB}JG?-U?K%1_s?C;&!0@z4TJv}3{>iYjN;PZt8Hr8O$o||w3e?^!7au)gw6do6yE5zgD&+&`Q4IpO{Vr!lM zFM%zIGpS-)R=?i_=14gK2aZDYCw?LV(#(#UJ`okdpa1{?K>!s(X#i^QA|Nz@mmo?3 zqcBHFKw`Y1p#HhoK;LT>`KI)Hz=^yz11PTSfB)bh|4V9;(;vTV4xh_ur0>787SP;a z0?78%td9!M|M^nbk^&!gj8zV30um-?q#~cox#bX%ko9;8aP{*dR5|J|NsC0 k|NjChe{ac+ah2l$O40tJBLF;FL)o4K+t88v!TbSjz?}{VbpQYW literal 1014 zcmV90003AFaQ7nL7E^Myag{ogCuLjfp}H`2oOOrnKUBf13GBdjl2Pl2|9l2 zlg}EdfI!Re0RF_RSjA&0z%;dii??OqAOQfY)W`w>UhlnlWFd!%eBe+Cg9v26fM<|^ z2r`5D!zm#X@TX1}rvLzeII2Bh39u1bQX!%Nn}7fi00CYJN0VWqjv6dFOM6B$Itrmr zqm3}npa8h%0QW}F?FLAAop&vW6UHEP}|mD!UK{Ily9A_Vfbz zgzo#u0DvgDs~v|ZQMzQH3_+KGLj-b(QfNg7i3?kJZVYGw*SRi_pl(-ap0|uJ4tONF zarz`|(b}PM;1kRG0uC$`ihu)RWAQY<>G%?k6^!XZ6`=O7E5H92M1K$l2w~u$&em1ng)Xz7X?zli4}`&xBM=!I z;1~dPP&o$^c(5uZQ#1_U>oJO{BAKZtj{Cj>2t+}`8aP1)1(jhi_kwdtW1jQ-fXW*Q zFyUkbMAFrf`TyJi11K>>wcrvM!Tn)atOY;&feHj6qXKNnkPi7pod zI0Kahb&BzuFc8}A-(A#dHh~MC@i0Km>aD?2YAYE}dFyZC-#}S^{DrT|Mh^mAQkD~s zk3WO#f4(p@ft*Q<(~gb$zeZwYbv#O?HU9M`Re%DI4ny`gFA+d=xM&>Eb_j~$Pyhe{ zK>!s(Xn<<)A|Nz@mmop_wBlhMT>~7t+OenKs6gN~futaBfwf*<$Vow9y5Il&Bp57kVn6==aCSiGCbBXr-;qaRhoDmKH&d<|NsC0|KLSlLYYQPhMVy?7(1o@ kq9BkIQ1}JI9JcR?Wy>`TYKWKc9dt7;Fc+A^-pY diff --git a/samples/h264SampleFrames/frame-1429.h264 b/samples/h264SampleFrames/frame-1429.h264 index 42118b8ee4e5658bd6af80d20460dccd9f723234..989e05d96d0aa69d2cc2d39fcbe216ce39cea77b 100644 GIT binary patch literal 1316 zcmV+<1>5=n0003AFaQ7nL7HG1yahKwgI@@9fybL`fcF6UY4}H?I39qKH~~1E~PIJTse*R*b+j8o&V(859fzou%q5TqD|@VI3}y^7{agkvrjY>9mjsHJp)b2X-T(ot3<#fvtd$O@TnTgd00+QmLV`Z+BPqTi zEr1E}SO++k0E7Ddp#BaXLGdld^V%6NmH-Ty86e42ibqiXAe%-A0U&p2unJp40zVX8 zFh}R%hRQ1!3J(2b3gGUzyTl=5C{|zaD$Ta zVM!F)9|njx03gaaub7ibCgLtULK2WTO;YJvQc{f^zA=xf9w@DRP3kH{ngN>+HV8!9 z=soeG2mm7t55V2zUab*Wwxx)G2ztj^oc!JZ0Dvh=0BN$0ntyqFq4MxfUx5y$G_Fs` z!LE-|*dh#5q^COXPyKEE1cD1-y{RJQ3pUaiApT+_AODKz00IE0m;oUxfwG2{``G_8 z%xdoA%K;%!00ac!?FqyfR#_4rU9$K7^(dH3CH*xK(1jKLtp~XeVfXx zihlW}^uVG5EO10Z77{VQ0QOn%Ca!XZ|A51b(m>As1`5PcVUfot&jOq@wa@_?7{7nZ z;86hwjW9+o2k8X*k3o4ee+DXOhFSeQ1HE>&*9?O#H`@26W*#{pY4;905d6ZR0003& z02M-MfNJm}3G@b#Fp%Pd5DM|6`v3zjGYP7StDeQ6gAjjy1+YaP1;06u}asn-C~(Z~Mu=r#dZnDT&; zyBFI&r7&jNPAS2La8tn#=(5><0t`k14uuu~2?>JWeC+<1>BY%p06fG8qsRsu9G#O4 zmR^5&z==*#ge6Mn>T>_#ir1UPFke+c!rXEkzGrr0-?Z!Q1eyx5kCtL9I* zGq(V;E?fOj61@h}>=l+cK~+njLtLxfLn#Dg#~cVto_YSzF#L?>Bd(T7_BueC@I%f1KmmX-tN;=V z;GqJn^oJ4yK|b{>{xDxrNFCs#0199{N%0D`Z^fp~QwC|^0R*%F0tafBumA`u004pA zKoEyF`rbr>#&`fA05BM2*PYvDrGQ~T-POz3DM8*A!;oBv!9NZI@#X*m000C51|W36 z7f2AKr+N$k5#fP?BZN<))M`TNo26EZ4b^rd76k|03b1y zdq5Uup-G5|$hIBU$$S6|XHQKDW?1$uXLQ+z)D%u@6xGB3aLi%XrIUZ_s#C%N41~ad zM7N0Qj2;~Ump}wy2?(RX^hK4<4}1I{{9DZSKC8p<0DxmK35l@F8d47kjj?K&00ID@ z03ZSY(b-|DegYgK0r^s_hcX04n8p(51j7Xg|Mo0<6SfewcLo5kK*)fmg0iV6L|WoT zL$m=mKmY&%K>%(hkOr>+crX9}0YLyciKGFmz!<6g{0YbS96+vPZ~*X+(2HkwPW|mK zwgnIoVE~APEF>D9U<27_0X1`+8~w}9EQtY%e=xv71ZpBI7@kQ#<^?!yYp?@65Wj!R z;86hwjW9+o2WWzHp>Q`R*YIMk5r;pgfSYN}bEg;uWZ8av`DvIu`k-mfgT*5s^c4UA z0YLy2LTLbM@FEHH29Pk2;)2iyRe0J9|9}9Rc8q3jqp0F&6@Y|C&ul+h;!@-D=M?ruL(jlVM5#}yg$(Ta*Yntb-V8PIlFyKErjer3F33>vI zfBYQ86;NV?HP^fl^teGzI0-&K@Bjb*|NjChe<^aYL@|C3l#zymh_mGj^L2mtU0 zAZ3#hKKFfV3q^2l00%*+24_e$bunEyZ|`tGt=cFdC(ZPMXXWri4bH(z8Tcf8T4t&d z_+0-$2w#eSa|b%C3;O^d8Nh@ci#H7$8wrbTqBP;UgFiI>a2LhM z2X2hPf$4+p5XhpyhR1XZOeJyHiib!2_Q#_=NS`ERa(~C{aq#U3aJ{?1R%7Xi0`WEv zB>?OO(F6t;h_EZ2*z{-WM6Mz{2Y$fK35NylfFCfv8;dYOaYkIlo5Meb!yg)803Z{m zfFJ=wxku~MZcG3ZeZt^1m^=psY_pL7Ah|}UxY^(#XeO|QmL}4dbq7JHql%55q?^q^ z2W)@{F!+pUoG$FuOQ0MA#W9DZ4Q$aFkTN2Ow+m<}1<)}8sAs?hPCyg~vh$hv zXicFEi((Q5skv|J@4Ns30D1yE24RVa)uFl)u@f{jzyLtPKmZ|O;r7-8LJR&+bWcWW z-M|Q8*q3b1^*cyuJOBX^)snAv5VQ0C;R67oD*|GW-#u288NEainFe+!ra8zAKe%C8 zw9$Vd?jQK5PQm()feio%8Xax` z2d?m!zmfdK2pBHU*Cz;I2nz!T%OtrCiXuMv2OG>m00c2Z@H>sA_k6=Aw?1L!L;wu# zfrAW-e|}C>aSe-5p$$<-o+(fN2fzRb2LOXq?*xkPM4yvrj(cDs3>2i;QA*b5{`=%YlXEJ)vQeFn$2hN>GJ?7wQlvCd^n2=l}u$)rycPjKuG>4}gNO z$jAY3MFB6DLyLBzm zg}ZR`uk42BhILUQg3!MjR0Oe|eK@l8r+0qxfcwFODw7Ei0RtkSBpTDxdZk(P@W0RJ z^ZES#e?I~-f0vX{SPXoIC=(ApZ@+0=eROBFIf5LE-ZLj=V-CVW2iY@Vzy5!d0pLCb zeod1Ggsoruj^QWI09bQbl9tyD?|{?+)@b$?M1SA*_qN~d$pqiZNPK6*6M)liNT`vn={s0yXAcx(i$}sOX=b4d$A53f@ZN7#j_5vVS90Cx)Tx0+c zV26}|pH~rnZ4+|d01#>r5a^E@rA-N_HRkJ~CWZqF)FlE0AlfjP0+=Okr?`MhGT?ARn1AbT1^{#lBBFSnTpylCoxw^iw}^(MQCm3R zd;}O`ZC$Pp;ND9<@G^)78m#f#f~|GWp_d>7ynp~_1*KL3rjGmn-Vuf{q+tS(S&bm4 ziEH=*Zh!y)0YLz6CYT1V0C+F}00BV&IfTP!=kLkz z1ndSU6}*j?|NsC0|A7?n&V&t$7#Ofn1^jF?(xI!75g*bGKIw4w@i>og1~+O6 V7DP%Of6oj2{(nE8&*$^-1p{jYsN?_u diff --git a/samples/h264SampleFrames/frame-1431.h264 b/samples/h264SampleFrames/frame-1431.h264 index 4bd561ca90484c69f296528df091a9fd2e28c8e6..396728c3d14d08d53335aa2df79b041c2c6d9381 100644 GIT binary patch literal 2026 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 diff --git a/samples/h264SampleFrames/frame-1433.h264 b/samples/h264SampleFrames/frame-1433.h264 index 3af6126ba07727a01506b64d9ebccf04a1656e56..cc0553f3e3b5933df2a6341b51ee99117ef25420 100644 GIT binary patch literal 1273 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 literal 1015 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 FQDEhQg5&@I literal 1429 zcmV;G1#0>L0003AFaQ7nL7N~NyakDU0RSKcAh3K;!GTOT@Bsi2FdFY$7N@USNQbY0 z0l+{2U>!u=nV5i|kQpuV@qhq;M*sl;Q7MBz3%x6-X%2ED_&vY?Kxjwb2?*ENjD4n- zCGY?O03o;qv`89ud<)U_1a5>(05}j7Tul&UUQEB0REd%E00aTXz7KT1)A5SKw;GKg z5C8}V-IfXfrZ7wxf>;{9{on?G03ZYgF<{Okdf4U@c!RJdd4L^34-#wuLAVMCR!~k! zIEbVIhXjmGaws%+JOmWeg!jix}b(CKkY|28byAh)JN4@_kaK(J`Ui(m7r819HJ~_E^AUi~&|OdjeB5OdhB$AjAq%9w5fQ!MGe1Ia`3~VUDpIYDM5O z3IyWYv)?3ZV<;8CK!8w)!mbFyp9BB`0s-j9+hJf6OZ{MmLcjyY00IC6N#Fq?5fjwr z5*rcd0t^trq+3wo-~~WQ_YUCJGE3q^h%XEY2crr6009AT;2ToksC7s}AD6&j@&JMY zJd;cU2$cvVC4Sw&gKn%AOE$pi0I%|w)`QtXK5KAc@9+Ia3{aBG527PXhlJiBXBa{s zDr{Iw>i04;Uw{|`kCp6E?Ns0a?Euh#(V&0|1@7m7LX^oS3quGeK)?`#mT=}3GF>-? z5GhiF-~$2_(7)JGgE5n?wt-ab!LtDL0do{N2#9(enR$D_07I+;1CA}mal=U|G8pjJ zhmn8)fp9O#I5y#GUhe||(2!FAJY>_lj6i=xz8@vl+yfS{jLe7Y z(?oxR08P*U00BV&ZYIbEuK;*30003&06B@W0jt0pi~s-uK>!s(Y=CO;3DNxg3CHsI z6hMX$9wc573UCHU(^#S^e}WeGKmx~9w#n}J#Eq6&NR#{hgSju6n0tW-FN8z^1POJB z%_fNHL__J70KxzjK)0v@jd_u}8CMO8t4s!IcoWkAFA@ZA>mG0aih6#WlD( z1&7jxL2+S}Mck853h2To6cmS}@4LoDic*oMhVfcrM}>U2Y!m3g7L0>>YLF807!!;4 z(6f)sL*1{N;Ja?Ep8fq^2p35wx^+MQ`2)Z&^XvQ&ZzfW8KWZ$&51340AaB-H_kDpv zY~TYG-_pZ)9rU;rR-A-<#F z0(6%RADSta*OzoBkX9RH~?A%qN$B*n7=JZp#XdX78cF2wMQO-s6YS^N&pZ9 zgmBNU9NG~;ExI-600ILb0f2HTE3jm!DS}e9)Wm=eFBtFu5QAa=fB=C9e|rE}puj*T zZ0Js8R3(+vN)`Ye@BktKK=)%V zz@UUYPS5@fu|R$Q;%%9;4PDeQ_W&1+p$HXnO%iFNc7PBFU?9c}11^cIIATBA%R^VS z{{+wgqybH!3<5!w5PUOP!O4gK1QEahL6s4J03fCS?;ZLjj|ZVaCn}02qiwWD$Z(p^gZr@ECH#K{TYuP?!Vk#>lgR*kde!1%`g$ zzy%3=>Co7Sn8AN|0Rs*&Q4o2_QoPNU(<)cwlZuWceci z9|8(22_Q)qqysn(paq-`5U5lSgU&d4fRsiupq-ZWxlINJ1n3e$=&t}79;x*Id*D2~ zY_JOtdD#Z=0Z>Cg8XW7?;sT?f0qL^6#LS=P+6rurx{j1-ovZ+yhV|0EL-*G<8i4K? zS;Ru@h>86dZvzW_9<(`d!|qN!-}+jx3IIj1sHmEhK?&RBlUAMM|NidrKU12W^G^?h z1}hcm$?m=}o*VoSwWZ@fmaFwA^^5{?gDv8&qNuq6VcH^8nEAi}RUpI`e0T|^{6e7u zgh#(7>{Gu@?2+{yy zK5=LjG@t|$Vo^%~*@mXk^dhVOf8hv8DHv1N&dvY!jDUn|o}&Kj@Q?oE0ly?fEt#@5 zWWj+tB;q~~yN8VA9~k)1ri6$groge!#Jn2X>vJF3q9T~A9Ku8A<_N3O@B|8b|C!hW ZcvEbb;BfWwFzhGPB2rbq_x^u?^?=1{-JJjc literal 1058 zcmV+-1l{`p0003AFaQ7nL7PAtyakp7lMa9|4vCL4@Z3-Y00aOWpm9Bh7<`A8Cb2nu z7>W%C2ZFF%6c}Itd2G;2V+A4&)QV}aKI0R-U^ zkO7eV`NFL)@&CL43_uGaF%S1G6&vIw&uKFUr4VEV91)R8OQ)25c-iI zRohb9LsQC6-UK!|7#mUmR0ft2P(>3b01Ti2AOTg%9wy>ANv~V~7ytqcAOIl{00I$U z0YuGm?TjVG4O!snU%`Zds(-C`6L||mkBg6(hggbb5Xq685$LwA`j03QMdQoZOZD1Ds49u1CQ0ssYM(}3O{i+%Tn zs1Ptx^?A~W*(9rW@dI&?ix#lMvRw$1Yv94N0j`AD5K`RCU}r)ic*4K}r97sJa4$`5 zI`J9+0Rq5cg1&rw1h%!14M0)=LJnEOnoP-b-V{KsN)H1J#}6h7xUeToT_O`qQ+xn0 zFprl;gAACA9(1${Cr==NI4r*a7XCaBhXZI8hsmA*fa1vxB)jn0003&0B$DG z2Co2kFaQ7nK>#_4v;nKY8;k$|0YLy2LTvzQ@C;G@1TZ9v9m8<$@D$ayBCwwT0Dunx zjV8d71d(|FLa-eu0Q3$j@aR4To-xw^az+i ziToIK#-26s`;fRcbKcOtwtxhG3CBg!An)Jr1S3qH-Jiez?(rl8Y0kTwfB!#*0D@vS z@@uCESA*b%sV14clwPa#Ot zqnH2Q0$A9JEbMZI&8JKK(I&tdkJY{1zyP&BB$>^eAOjCYBl#Lm>-@=B!ehW z*E6Z~fCkiM2NEXFuL9=>V*(x}Xa1|iB;+v+>UU)odNKkT?rMqqv%)|7f)|k@B!tL> zMr;@pqD~{=qfX)CIS<@?D0M9fK0yE6z@V$P?3R<4gyr*p5e~)R=1bS$XtYL6z1a*0 c#T1)p@Hu+zqY>TCVoFMf{Qv*N!eM~)fXqj{WB>pF diff --git a/samples/h264SampleFrames/frame-1438.h264 b/samples/h264SampleFrames/frame-1438.h264 index 8c800b55dd8905af92a433bc4639077eb2b3a461..db94702929da6e9c287014126346afe99a7b9aec 100644 GIT binary patch literal 1467 zcmV;s1w{G)0003AFaQ7nL7RXYyakbe@Q4V3K`sCe4+(+CK@>2c36==%Zd?Efl1yxl zrZ;g>=m21G+@oUu&e7F~b!Fin?3OqHPy>{zU^*uE40lV*5Lkcq8JKr3g5n5ZO$6ZN z5R8CG?4~>q{9>vc@L=?K_k+yQ>{L?7l>6^N1P3qKJRd6-GGO{kX8*7N5C=Rk00;#J zg7{58`tV^Nfr5}F=G8b|Cxy{1REtmm2n+%7)&LC){ITc((ZB;X|G5Ffh5*l6I>-Q^ z0rc?sz=%Bn5FH>8Z)y>!0mNW77C;3}`@kR!GzgeDf1Rb;!Z$qua29|PPyi4GI00W! zi$Fw7b&PtKUqB$l537bWBWDRvakrXyvX6@c<+}pP69>GRNyfvkiJ*|002QDCM?^3D zPDO_%zBUiY;gv2Cp+>;q#|=Tzv|qy!T$B7)4mUVHHV@PniH(S5!Fk2p(Bc=B4vXR= z;010EM*$1C5Z@JQ!gK{30QJB=xnu#D$axg0L2^ffz(6Zw009A03II^a@TNkOs^gvk z4A8^wd9t4sC|;BB01?pt05AX$0TeA$>Ool!CQ>=*CVt`o2n;dMH~3S%AWNi0)_4q6 zikkaga4=&xiAs0Nk)j;=y~c833&7> z!T4r4r9FaH+C)@ol_AW4px0&Y|L5Cb^?Vfq&mktN%RZ!h`*$|*sfw0W14 z`=AKL5G{p}FA~|6dbMZc4gV2*5)R-52(1nHo$^|?**~K200aic9I!(qhhp6s_~jge zU=#RY0fN0G0C9e5;2MmubN|*76ffS=dzE}2_`m?^03U#73gNy10fdFic--s9TUNW^ z|Ea5g@I&Dk00;*F;Pc>30a4Nu_3b#rL&3$j-WiiopgZXRA;sxZ38#ee_@Co~kY4modv%@xs6WGl8FKM3u3!HY6aoC}5}{)| ze)ppzVHYvjtby!Qs;ZbY+bNSCEfF9-V%)wtP}p*~3B~`!oPG&*2b_39`e1skur~3_xX8SX#yUUHA_YLcM-P`HA)oA^jKCzHqVPI;a945Rh5s zqyOy?K#AZ|Hfr15_m1O*xB3fSJ@oi>vSi$N&nHL(c;O`|#qH zUP3G6zHlf6!GtnkKr#dXfB=Av1AoUziE(5}|Gmk80D!o51f~XR3xBkeYk&n!-~b2) zPytH;Y@t$y1r$DXawGE-oMrKD4m!^eEKkq?2m>f6Kr*z=e}k+=aBTy`|7IX-h@vb{ zNZr442vZ*T0097i7zr5bqUY}e$L&HFYP-V?Ko*3Ph#BV|oM0fU4Fy1G5Dz!%vN^TYrG06+ml>fF%-*E&Mk zr~o$s|G)(SfrweGU5K=3P{Th1I0PC8P}<8=wZ-Dv>Pc>-b-tok-5@Bjn_L$QD_m=2RRCLsz);TT@vb{HUg>e!J1 z<2b+oM#b%*L5>ovuMy24Qy&Fj?Eq>BN9=(?Z6!y503aqkh5{0^2%uDJ1RHn&Gsy7( zVt@fuu_7d304|Z}d>a5gY5)NMum%7y2AjuMCTqs8Pg%kUG7c!9h+dCU_5ZtUzwiXz z0003&0B$DO2Co2kFaQ7nK>#_4wgIca8;k$|0YLy2LT!L*@C;e}{0YbO3_!vW4;Ul> zDZ0N&pZ~}gAaZ{vSLyf=?AOS%^Yz6ls*nHvCGfZ)2OvQ&9l!@X$}%#Wv~&T0A_t3> z7yv*4ng@lD112vaDDvCOpPQd}d3+v$2O1=-A;8!=zBMva)3|_Bz4K-Fgc(&BiyI7x zR0vvc@4!isW7a@Ug^*ikG9;>^Xrn@SePIQW2L7N50g#unj@}7EoTIcvnIV ziV6Xoa#U1!&X>KkVqV3}c5)`Nyi%oCyYxFW*d^P4Al${9CzP@je*T~*7ylA*_!2dN z_T%w?u~A@ei-7O|upg|qVE895GM7KGi0~@_m1Q;02Tp|pRC$rj(7fm2@<))Pg|nbPb2@q@w3d? b$X$p}_&WxP`C=(5f4RkaQMVGT7+^ghaZ%PR diff --git a/samples/h264SampleFrames/frame-1439.h264 b/samples/h264SampleFrames/frame-1439.h264 index 4d94e1bee41db731c743a6ff8320578780ebf31f..88ab160bd44696f08412d4fb10bf24b4af0ceaad 100644 GIT binary patch literal 1508 zcmV(}O=qBMdo!03Zec z0s?>lAU*+P&IAF=04W2WZ=2W;fzqNr080~wj-5OH`t6v0oTn*orSVZyGR99y`$;o z*)wQOl&Z|LL_`&TNK6ud1LGtB3I!1MI9Nyl?7n-<05%k1gNgrE9UYE{&fbdE7z1}W zQsT)fcj6lK0R*oqSE*@ad=L}le$`2;BH04!J>W1Sq_7fPEqpsMj3%^C@Q|Y>)5uSf zP@XIw02+gU$8`~z#9wMa%1`~XgkCVZT4o8jbj%ZnPx0{n004j(_)wq6e%&2)BUumD zfC8wz3NVbN4_rH(kjA^B+~J+>lls2^1cu}>99H^>Q(B|l|1XLJXf6r?s9-)bD1d+k z!c;39-NdEe@3et}A$fvPTU-7w{iJ{}9&drh)bZ67_xFg{05-Wm2+_yjKy9XjC@a!~ z#Jb3$DO-Q;z?4)~FNk?1Bfo$W6|OL*jb~~UQI}HSfXEQ?9Vj?-?MQ}&pWXlffIHw| zDrf|*oj;=M&wKm;0RWW%Xk!5hlcZ%*<5TJY5pl=>qM(`qXE%F;_#Pghy!WB}Tf_3e z0g;f?6pG?{li~3oCQM*J0zfC#8Uk`CFd=mRd)R7?N? z0N?-+A^-suPyi6fOn?r+iYbPa7S>cc;bLw>m?{&d2M6;nZZkv~QVTfs`j2dBx z1Or*H0Fw)R2Gfpz?bn-Qey38DuOnoN7yw%(3~Sy~*KzPa07I|<00BV&ZYJmkuK;*30003&06B@e0jt0p zi~s-uK>!s(Zh&g=4%z+0WCWlLflxqyb7NiVH%q{rfRY~q2r(7lTJgX51|^WgL32%@a*J#L1Ob2mKvgEJ z03q+S7bxfmWM+@nv91ka=#U`Z;8=9<|I$ymEo*9JKNp}ln@>V@(g@nD-KVfeZm=Kk=xgppfTa? zOMp#67!W{`D>#5a03Z}t2bW3!8@)jZCz6W&F0en;zi~NXKy%W_4r?CpG&Huvq+3<) z_zeT(zqjyI5d7+*O@SR)AOGM2eDuGhfB~^%su*#{+Nv1D!FPsZf|+Y^6=`>j=h{{N4GIwayg3ICbsD$oADG0=F199@BZ zhH7vO7LShX9YZ&!IH*|q##BTU;sPyTQPXVi0;e=Y$PNAP&CCYyprZ1x_%v;qvKqT& K!MAS%z*0bRM3iCx literal 1629 zcmV-j2BP@@0003AFaQ7nL7RXYyakDUfnZ2!0)S5#761nT1%Ls76i_0HK10;f+gp%O zcnW|ZODF(N$+I{W9KnQ1fx-qI6v_%#04?FRioa`&5KspubB_X8*Z2m%Fo z2Vts#QE-|nZNz0G&QDmVFmzjVtap`;!OLvodytiVF004lV00jUOK=7ru z3iq~#Kmwowvr7X0D|{$Ta6oOW+9 zT;Rp)4U6*M?vU0fwicK#AwvwRkIn;75h8o39~uAta68Ge+TY*rfDGg^j>OwiaHsv; zKmZ^J1Y}BRHuJ4{<6~OSMvM@oJSe##@^9Un6`%$Zu~`abDV&8rfMx@DyxD2`Y<;!Z zGf%3x}%Lc$002Ek`8n^&f zfMR2^vE*DxrrlW5syheZ!2Ak;;k_2N$2a&SaNQG^kO&>W&ne&l$}O+}5IF$i_5c|I zgct*p>qde;rZyo90T6PF2CNDUk(NXt4e$K#K*|7|vG;J0NW*WDFu8&N0RY#@Kmc$8 zw~fDO2^kEaYYoY#2&h)|-~b2#05GQ*V+`!JKvfw1eb2-JcohM3vxJR?hv|fG01N%Wd{RAu3arI3fc8H4MXn_xle2265;zyN0mIzHAx_D1)>BCf0*;90|W zS2t_G0?mSCi7ts?w$Di1ZJ|UdL%zucu4K7h04#t2f(OnITOx(ImISX@Fwu?x0tQN% z009H=01yC#2;aPy!FYfnh5;Z@JaDJYfd*@qp}0kD^~ZQ%03ZT6ptIpW=e6rM?N#@N z;5ZUz`!X`H;YuCC=Z|0jAOt9?wIlfPmko!X$G`x95D~@_E?%O!vExFo$&3e^gfSQ; zqoDaF?*g}Y58yz>7yxbvnE{xPwG53@`%oH2Ft&gb0ZXqi20R4N0?+2F3_}zYVpM%(h;0CV%crX9}0YLyciMRo)z#EJJ z00BV&6+&(RYVZ!({ezGogK!{=2yhYaooPrRHYw)f=bw%NpaZNNE><=K5Fm@-;0OQ+ z1F#2D0Ii3t4=OSFVf&j?=EPKiIRPX-1Q22?Lx4x0VgG-~6K?Yf!64b93q;HS1OhMs z2o0=HK*fHilym^T{GqxxmJGWFuvv5rZt4VYwD*(0-RRhVN=T6uEXkkXaPRm05BK@_ ze6dg?zg6r*Yd`8P){RT@3>Q(Qk&ypx>{9d&LCi>>6dE`1*B^hkyc5X+0pKT$A~b*F zX4TK33Y#a`@O&o^leP}U<%3M zRxyV^{nb#x#0enE0FdE{LRERhXDaf%cm

      WB>$U_$=sC|BK_JyZQwNrOA8#4Dr_B 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 literal 1515 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 YtJu2$6m~N~teX!m$Andbj0(qrO6%Eoq5uE@ diff --git a/samples/h264SampleFrames/frame-1443.h264 b/samples/h264SampleFrames/frame-1443.h264 index 03657888da5d28976cefd72f7ad828c92893167a..665e6c48510ffeca6738932bfa1245f231c77e26 100644 GIT binary patch literal 1311 zcmV+)1>pJs0003AFaQ7nL7E^Myakbe@Q4V3K`sCe4+(+CK@>2c36==%Zd?Efl$dRb zrZ*_4@&E<}2=yHo_IA%KLz@o-e-XTJ0H6mYG{AIC^f6g4Btc-0>@hI*Uj+z50*OJ$ zAsGaFz+$&YfB+y401gCDQL|}~^RO?LTQCS16h{C706k5pkcf$2)xb~y5D7dm00;#J zgEvtx`tV^3z{8YyLu#BdkpXmzRU*^?0s{bib$|mx|15R@cyIvCzwSVA;ea#Nj~fVuy`32*=q126$! zP>VoBOmm2QmtR02&Kp+@a7PXjpyOaB^I)0dFzf`2`r=qeV*mjGQVIZ2+3=o1le+Vs z0SNFxw>bNWpARYdC;$lQa6bSb01z3rC<74yzq}BGvrzeEKzOz2NC*HB3^C9@_*=br zmtPlMz+$XK*UIxSV>g*E`eXnMh5-k7tEPtsybLzrLumsm28QzLp;$mF&^7{4Ob9_w zfB^sj2}pd*;C{BC3U&wjvW5Ty;06GtDBx)Ni!DRr?oh+bshj{-x>R0(4gGt-01yIT z08o2xmk0!kIpO*d(UCj?4hNPBPqcQMmk(=|E+F$GfG3gw3ziT316zblJ;J~MhyVfu z2><~As<;Y95mh1p10UW13;+r?!~C7W7YG6d+a)QS6{0Kv3rEr7U;|(&qJ0J*001C1 z05B771xbieHC8>uMOieMxQbn%;-4)0{|nfSO!kJ@1!=8 z-(jkJzcV3-opbpGsjN_ZF$yn2jg0~(C52_>au4`0A@`y{Cl+7epT$5B0S7<;D*H-c zu9&x=+T64OfN@3zo%d_P6gVcr|NjOUNWTfuY_{WRMJtUz+yDT8C;(97(+nx%^`MC6 zG?+lS!T4r4r9FaH+C)@ol_AUg7^o}=jDRd`Q4{17%r%6N!2Ey!KuCcAR?fUj$pBz- zIgx+@M<5&&pgY!&G9LgB=YS!11HlAupG19PQN>2spZ}Tyz9BvM00bAq97HNVOH3uI z`#Qz|2_66dfat>*9?)jC!s(Xn<<)1p2^&4nZg{6cXd0ZUACd@<#7a6A1ct zRP=@20Vs2y=nyI#L~rSgs(}CRW$X|2w?UUVwCyS^-|RJd>DS}IHmdoprouJ^A7wFC6!loSr7g43pTiUir0b%>dESu zrZ@J!3V+;VF^B!&PA`{JQ0xFxxn;vb_o$$d$FSxQI_x zIH00Of)xlMN(M>X4bmgnNrqqqOM+P+F%XpmFg#{voO98QO0oiRe(w?_Q~+J7_CghJ zz2N)XA`S%{-#|8;>ECbv|Nn~caDp^G_FtF(ad0x>zRgp`uke6-GpbAt>z2F!{$UE{ z)%k<~&LK3(f}u{fZvCJD1Sve!4#~2W_4=%L1mAex1HcDsbpvQ%#Cv6ebJ#bwx_8)Bne3)cA>`z@?KI7+e4V literal 1117 zcmV-j1fu%@0003AFaQ7nL7D&>yakiQfp}0!zySb&!Lf*s5U5CF=Y_W*L+}F!0b}HJ z!|NMzNjssVumGz@3CJxmsB+rC2Hi*j2Gxw-0ssJj1%I}{0YEyZT}Z&tEr5Y9oC*Oj zVGNiM4DkSf0Dz1Ge#a<@d2C5R-sE5a=C~ygGf-NB(oM1e6*m9?AQ%8CU?p@aP{5*x z&W=R4j81Wqg4`T+o+MbG001BiprHWD(>4ANF%`kQ4-?+ZK-UpOSe}uqj^+@iJ@5bm z0RS)(E!RcQ-UmLUw{XZUZ`mz6nH!!eGb|hzyMQ0{{U4@+boq zH0;j|4N5N~kS1usz~pGEC4Rx3Z{DB~Fo{TkLc`0rNL>5K;5wcHD6{0D3h)Lf%QoR7 zA_Spz7sgbd`@jGY2NWTu(_9}EL9nkpNe=)BJ^=@S3R}a4B_eJziKRlEe*+j&=Tq=O z5@HmsdNwKW00afVtZ)-Bo3cg51>-QL6M{#h0>Nblf;x+g*sCa>fC3*Fz)AwS*9L`& z)YzN4Tor@72K&+brkO*}002NV7YhJEadixc|80Diq2d5xzyLr=YzP{O8%DH{%)q1j zKmZU2`~V;UfH?k*&D4xvA0OO;0KyOh4hj$v4T(UW&;pnNH$VUY0YLz6CV&R70C+F} z00BV&If;4_lgfXf zK&WvMzo#`-0sqr7_%Q__gcOUWGk`2(6Xci-u_*rxA%QRbm>+xqEnEPY@F(sAA5GXS zr%w8O>PZOe{RRv;_58JDcE4-;xAOQU1vt?qggrbq=kf&7B?C!qo-6ckLjK}HO621NW0sE=VL0PJF263Fu)iBLj=!&~P9_^DCgCl~JVB1iWZ zUBDM=uVf>f|K1Cmn<5Vdd;g#$)~9#B|NT5VVDYGp4D9^B-8i@!;jD>Mr>F3s6=q+n z!H$|sfB&ZhD;jG25CbTL(xwJ7J>;?9--bXUDfBxe*;n0uJ20pt*}r5w0CcxX2Fwh{ jwpdHM277>~up^P$xQwY9fBa!L&)a+ZpWCEA-WU|1tdP@6 diff --git a/samples/h264SampleFrames/frame-1444.h264 b/samples/h264SampleFrames/frame-1444.h264 index b106ed95ca5aec74756d412a60fbf02fae262ea5..78af7453221df6f43b464be3dcf57efe057be615 100644 GIT binary patch literal 1348 zcmV-K1-tqH0003AFaQ7nL7G4syaj>3{+uWh-~z%R1pttjsJ;SWBvTcSSD*_4oDF~q z4Al`ckqp*sJ)zBy{CX?|NX_YK;i$`Cl}3t z0DzHLgMg#L$*s`^&|&xhAspir<(_)V7?SIyFNA>1g5anL0s}(@a}odx5}Zz&N_yfa z_rOX(Fcxot1yJFXllS+NU;(Ad0hTb#92H@~lsi&`PZGF?(Za+3V2m22`<71VTXvv~JXqvj!b|3=l)iL}UNL zE1&=f1fyUALR$fHhaCIedwHH<)TLLG0U=NT1P0(mOa{U=b~~UZ9smuQiF2@quMi<$ ztq{|*=QF!JI}jAyFaW%iF|Tn=Ovk|d0S>?b00BV&ZYGchuK;*30003&06B@I0jt0p zi~s-uK>!s(X#i^Q1p0qqgcOHCIIzS3!aO8ZLGS?!^2OAjQFHG=LV5fPzo8UwZQx`J z#Bub?$F={Oo@|WSxZ7jcDFq_nLj68NFn%NWx>`M*f)NN*!9AtaFF*a{O0Xv&QV2l^ zGZlbNq{RCG4o)9pIa^nyKG0MnuI?BCKw~)Dofy?e-)K~115f}E1aSZbuJAd0K)=KU zZH)+y?oDHU1_2M8mHveY8pR9%!O~1P=j{mR4T!6-CQz zf%u%J1`6hMaD!)ufGB`K;{mf8)!q(7Ha$ z05fdNk&lKZCQQZh01LNQZOi`jlT;Kaq`llw5?yj75}j{>_-IJm6Pe(^@_JJKdEywa z2!VVF#qz}bLA(KwdC!&m_w^`+tl=`q-G>AKAV>guz@20N8F|nf$7nKT literal 1264 zcmVSXkq1b-{CNiB6Y-#FPu&FKmi$m1P0uX0?3xsQXo66U;rQo z3cvusP%c{NU4#4GrTo6ch`>p}MT~#~U?(U`1l9{bH`en@?{p#ohvRO|LMUPy=`&({rCXNLMW>HUzl_L?jQgV00vY~&`sw$>w>_U z;o%%+jwbNS?%I|SfCq@gRK+5>9EC4{W(L#$3b$F!JhM4401yOftTmE+2|??Pfq>T- zN_DVQnf8WK2&s-Z6sI`z{h-3?i&YKrvMafJ%ZvpI2(ndVxK`mRKm$O|8xce z4@Z*TQ69T!+rRn*7yyBSnJB_w`_os8mw&jxfCYZ)fOAUb3XYm+`~LRvumB(#L>L=p z#%x!#J_cJi|B)cDr+@+g0|ACjdEK^ZSOydg-CTeH9vB!RI7Ip_Mx_`N_GLIFJ}-q&XeJ^x22h z6i#Op)x-aA%wgB1lYi@qL&5!s(Xn<<)1p0qqgcOHCIIy$;zI-HAKyU$x4WQWJ)h>l+p ze@-#6VZvYa|A`Bf;Ih0$IID3?GsAEN5C#Y&4v55duL5c@0SF-!AQ2+ij>sr*kDq~o zn3CFKz&H2JgTm4uo56d(CJq1fzgUqX;RT#?B0p>3QbW7Mj6)go&4Dvto3{HBA`}SV z0=hB+2m0ZQxdRzW3|oXy<30ai3A1T2;HQ%&Y2W}p+`GknfW7 diff --git a/samples/h264SampleFrames/frame-1445.h264 b/samples/h264SampleFrames/frame-1445.h264 index 647c8ffbd9e9ba42362eae6009d05162d619d9a8..d62af57599ae38ab26dccdf0c9087dd0f8afa903 100644 GIT binary patch literal 978 zcmV;@111riC|!JM}piwByeB%3!9W~8QqUmv zB1_bX5N4D!`RvdDoB#0gqIT6e&g|rj`=oo<1GvEPHP!<*K0t)Rm8Ej1{;zD5cGjIKCzVHA9 z0{8?Z0<`5t?ASwAwb=J%+NDdq40 z0suxUkt_1B#*3%@!UF(NRe_PnbEfOek6w_7A~>Qshd75QFyGo3b!{{#fs?u*V2cCb zT}+?*^8iaK1M@{qKYv-L;|(BCkDoL_d0-!a4SjG94g?pz=7INsaPUb1MmYyIl~?TFZ7^Z51g?1K<#59SHN*mt;&S_2USFy=W-LEML@fya5JAjk$lzKi9Hq z7!wBHU;&Plv=IE^+Y3&KJ%pSEyVyOHBKSY^01l7?@FS1uRDwoV5L4Os)zwGA`33jF z049V0LxBgZP)R}UfCM-K9e@A;0YLz6CYT1V0C+F}00BV&IfKXYBCIi7>gb1{Us8D8LHKT+d_ zS_2&sT`c3n+bl!}&OESO{v+wsZUvdajv(U`Fa>x+nG6X_#QBHF%s)2vlClTiPf<-U zYHctHyA)Z^12RftFnn|d&9uP(Y5y$Ewg``=@qiq(!3i-dIF_zXBM^!^0thfWH66^GJZ~z+wVNHt}h2=jy2zQ(z4V5m7g}6-GmMm}? z!2rkrAeCa{K`+>D8<+$z5>#%8Vp}=qVo7Fsu+RC!=x`7U%o?{hNffcNfy9APm9UzDp4#MULN06-%=;Kv&JYkv42z)%1PH6_T0&1_sD zTk;|alo8(unQ<`c?+5{i3LfLTioA8nC{KI7}ySFnqLcn zqcD2h0I}jAKmqh^flF9m3t`bLR04Ut83XAy9DxOn!efNLqg)O2-ygqt24Yzp&T+L( zPw0RU1_!K#Zz5|?t$z9f*{%jQxLy=pEL&gZCyAg@lv#?O!cYKXa7)8tde<=EF%LlB z?K1=mK|HRE(u8I9n7ty=f3!51egOm!WkscoG}$80pF@xp01CNtEFW}SDNj%ZMfd=b zD#_4qyekI8;k$|0YLy2 zLTLbM@C5w?AcVs)vF;6RVy3|eAs4_^tH?L}85B`hAwLelodh6+SBB*?30Y}tlQ$I= z$NlGt6<}s6Cr1sEJ8ba&BhVukmvOUm8V_?zlQ1HlAF47K5m$-+L1t-SS7;gzo<3yL z2Cb$6H)4wxcnm{Q(tt{TOh4d{&>+!cy4WHCQ+PmQ){F?ZLAs}yOv}IxRZdv{xbY(d zzV_zkhUhe+nqdocArv<0?Zvh@mw`Ko_&~09K_AcWbcCQb1gowbpcDdce5GX+OfT@r CH$Be) diff --git a/samples/h264SampleFrames/frame-1446.h264 b/samples/h264SampleFrames/frame-1446.h264 index f39f8ebaecc15726e547a1e231e7dc70d8a732a4..9002c37bcdf5e09f6e4997eeb94b5b6cacd749c8 100644 GIT binary patch literal 1734 zcmV;%208fv0003AFaQ7nL7IRXyahKwgICm)=KuZ>LU;fqU|<;T(W5`ICfUggF9i13 zN&q+mwVi;NgY@0;QUxGUOEv%wI79&li|-D?4~wbl9pGTR<;Vn1GMNQ}s|foNF#Y-V zCGZje0svu-aU=bs40HA3bNSB}QTCt!5C{)SkOhe8@~{{@2VMVg!dD@b z6Al7mEXwcyf7k8o*`LTbQ3Ps{#n|rG?f^r ze)??x1j)YuSZv}a*u3Ve`vc$rf*s`wSrVjv(dUYldz1iR3TAPL2G$P@U-&y9c9Nk1 z;T+%Z_}Bn|AZ7Bi*($yZfsw!fIAR7;l&H$J&`aVX7q~}zhB<_v=L$rr-}7!df!GYu z6Z#kr$gq;gOD_-sci;Db@?wSi{CYXg`vFf?00aF8MfIM4{|CSUg>qQiSso%U5l8;u2EYh$wt%dlBTE7& zKej+10TU8S!0RSnpT6b50#87u3FNEm`_$A3Jx-GKI!s^u7z5!&*uVflM27$Y0N^wd zKcJ{qr03uO;KC|Wyt}~^T~$BthTs`Jm`DvY{l(%_l$DM-X)SIT8bBKxHX1CX{d(XVs15|P3t_ca9DRrP0KgQn`%$c6Ad@7F z06p$;P8|XP`?mq(90~Dx13Jeoz3E07bk47t+C2M80evn!o|c;4lFJ8zJ30?{)_la6nLBxHL8= zyK(>sEKR(Fc;R5$;U6C00gx9}E+0j8NpWx0u(K?NrcYU`+UEDL*Y^qx4{I(b#gxSy zUfJyR<_^6AbdIDRO@IJ^B)S2>G+P*YMBik@t9%0j@Yr-y-}J>dK+sw+)HnhNI)t*9 zN<*QdFUvrL-N5q&8PRU$+_RKq9)VhBhyw#yTZixJHyb8#3GnPey(}eH|L`Kv1Qv;m zBt+jyjd%9&0g31sisfr(Y%@|vL5HM}BNGz@IaB}w0zdbL837&vZTJd2Nfcg?uxz#4 z556V03f3WpiogjJWv$a5E2vX zLsB=p-UP!WFr#>JB0vEG4Bs^3h4;)NuShT$5q=Vm0ot7`GJ0T+w+jq>7=@N2`ejMZ zsVu+$zyO3IFoGCjD;PpE0}nDHC@?z1eKT_mF&So!BrbyvNEx@!TU6d?02m5qSW1$s zOUH#fctAvOVHq|`OmPs7L_Pwsgbvmp3gbrCTx>J_$T(33YLUg%?$z!A3Dz$p^DL3P z6_gQ0de@)+|9HSL*XjZr#i|6MXm9`C9f=HGo3G64?=S~Y4}h#QWb_g)nfHe^n9@k) z$CmI{3J<+Ouv(&6I6~}hAYs4&2nB->BicGILJqkujK6`Gx&Z&o40uBI@inx8)UnVA zJ{$88AHW1KT;ZG+8?QwQfAfGC zdZ-93Nk*MlN~u8PLy@`IQl$VP5>asBDlkvI^Iv>_NF#_Nd$7(wb?VRpvgnuG_x=tY zo>W62F9-XDHw*w#_4r~#|M8;k$| z0YLy2LTUhN@C5vSKLT<5z83@{#4#q04R8jnd1SAc8P82#to-!aaQsEJlYFM*&J^ z&V4_}13>SAumQX+l4qCxXbX8* cM`D0~=Vt&P_i0DG{L!i-uu7@3*_-x*fDH}r4gdfE literal 1412 zcmV-~1$+7c0003AFaQ7nL7HG1yag{of}~hZ82|(}W_MHpeL|~4HDI4c3kKYnw&QKxnz!t!&Bwip00+L}g5HDIb2<}cO&>uO% z9t3viU9?GW{2zdfAIgY`_#2{+=X(6XZl0ZaZc4 z8HI!BF@i>mI zYyS63b`SyqK{=)Wx7;`UF~sn$V{{3QkxWdV5Woc+K_Z{CE1Lg)tCimjAS`k?&FjI- z;i$ma7=h>%0no?_7B<1?O>V!6e24vmm;&LKV5>zdU%UVT0PyMdixBv(M2m%3NAg4_Os4&GacEUgo-bl#OGHjVQ-~$|^7$km`T)hYx z7f8LhGk^i6pz2Ei06;~c4vil#Y7j9F2T|gbF+$DI5r3%Vh` zA`Du1HYfu2Ck|Mm88*Q;2teW^RSU*42m){n6Qbgh z)fT;p9Y1IQ0stXG&|K?Yx(0!DKWCsEF~G&bNF-dI+8ze25daeFjOacTIW~1yp$c9(MGC9?V;6)4obZi0!S!r6I z8vWwX1?;2u{W9~y%m8@KEU|VRSfuE)J& zEKsxPa~r$dc3lo7vQ~i@Wff7}+a!|zb&Y|Pu*GJhAN&9K46_NDP`zK%zrlbe=l}o# zK>%(hm8+6a zO$oZUBwu133C3V&mGClBf*XAYKVljhOBaDGjM(DU@9#hip_rS3`iVXO0RS)vqAGKN zas_GOQs6iLZ^MB&ziN<(|B~6gHSmJ1tv9E%xsI&>@!{x@6hrHG-bLT-lt_V`BAjqd zQhodn23nqAtWpZK5K4*s;Vq2Y)UXz@93Kx>SAYP7vB7lxUjOVUCi9SDxQHH;3;-F7v>E~W@4~^MfB)3e#HAw~y1ZFH9#nw~sS;kKNx6>? zB=cZJJiuubXaGL20W}T_T+mAfui1V81jv}(87Fl_UjP^jW4qW%Od_LC38C<)8UZq| zslsHSe^BHA0stTYAQS{wA076TaW)e>q(F27g29YsE1Um=|BHE^ z&9=iUvhV?Uj7AlrlxZam+5kX|0E4XXO>;_#lZkMr&han+;3=dA1%>{DW0G~^f&c;q z-~b?l*Z=|qpg$jYEzrOKKr{dk%q{?!+|Tq4iYPqjMT+lgLPQ|~kL9pU-v&Fzg#BsH zFN14@sB(qyVlB`BEM=+?2Nqp$vG9}9W&Pj~Lx(wuc#_U3YZ$Es4m&b-fp_O5w92k*H zWyih)OoRMYirIs{VBxArGfF^k{20Nk&{2C(Y%);TLztfUJ6`x?F>(ZF*Y00byn>Pb za8g5Y#eq6f37K$PF-DqBI{NShi0Ud_Qy~9ddP+_sOO2ontV>+GbYSa3>>_Fv{`yY~ z<^E8fAW&cltW1c9%f$r5bQnl!?*;12&=Z0UJMS2)OmIZ|@Fzndk^Gg!;w`VV{($!0 z*wTK7dT$+q8==i0yl<}jzWa)cgWK%TyzUkPpf?24^)Z1MA_I8S?odSzT0003AFaQ7nL7IRXyag{oVY5bN~ScZ~+GL zh`hjFU@6PM@YMkrhV|CkNH3KO(ZnNpy? z@S|D)j7J)2Y&cM>?{C@a$Y20+01gNdbl%={zAy`f1K3CvhzpGH7zhp!ni~$Fj2L8I z;~l^cg9K8$$Yl6eIZ7NG9e@x3s)%4Wh9chm;#dIy!0na&-VGp)E?ywiM0K7}5GMC0 z2s7}*RsvTURN{6d;zEyyZy2xx`gsdDKV z5Rq#GnJT1703WyuIWE)qkD@=#mMKAAzi7v7%{IQ}7lesHt(xgZBGh8k4d(^0XgfC+17zeVlgqd}CULzoEFq=K#yser9po32P+7!nCKKu#L$Yg(P9ENW7 z`7Hnqi3KKuMBO%Q@V7O(1}iUp@!Tn0hxkt^2=j5Ag6YZ&UyP diff --git a/samples/h264SampleFrames/frame-1448.h264 b/samples/h264SampleFrames/frame-1448.h264 index aabb106c88b5297affcdb28834681e9d5d5b2ae6..6986c9d8586893cd572e1bb11d9e965daf5f072a 100644 GIT binary patch literal 1084 zcmV-C1jG9P0003AFaQ7nL7KoCyahKwV^`FaNq_K&2!UPz4md;sg2(xXfl?z%%Etf# zYAn(=B6m4G0Aa;yN}FD$4`H-Sct!FjjsTz;>GU5k_YCIe6rsX=q^XLlD;KsTXpMt24f|t}MVzZpcYAnJ|;0k6B z-~j=Gc28_>E}J|i#V^750hCS0iEOpeTqHA$QsH<`bDEG-#qCfE04M>$B!AY8GBB}? z$bb95Q~)}HF9a0Aq|?)*7~z0P02><-2B18x`S*$d1mFPAECJ5(pk48rPB;O84tQ_a zC9Nwe>v`U}AzI zIO4wmWD58wKoTziTS7$`JqKI`mH;3CAS!_j0CHCAxH1i=hd`k|`(KHJ00uiGm zrBWw+!v-rf@RGynFzlhrh7hkYs4R=SaYg_Apa2*ScUWr@tBuFTyIr#%r*TvF!Td0a zE7M+o`~CUFb^c_nuHNO}{l2!OY(EGDR{{#r(-L!uhIT3B4jf^cq;+<`ws-+Df&#gy z6A$NC7+@lOo)Y*ZCjf#X$L!AKvU#I4yZ`|J^8p9~yx?5b2kHF>!jO040AW|`1E1C^ z2P1SL|LYPMyEjS9Meu*-06M@w0UCD7=rnOLAOHX$ix2O_zyLrH94wf3hXmY|rBRkH zn*+cQ>;M1(K>%(hum-OHcrX9}0YLyciL3#uz#EJJ00BV&6+&wOYVZY|!OSKRFj2q< z(c37;AN&9Zi`y)YsQIZi){zMOUJ(e6CmqWij|S9R_TT&1d?FDS1ieTBD{T;d+S{Cr zKu52Kzhg!MJ$Mt4C<=r}jKey}HPT^d*6;O@jPPKd2O7W-ICK%PM>Y1+l}ajNYkB&g z$Eea^GvtG?Kx70s(D1>CQ4rGsIKSUx@gv#WN5Rk8(gs~ugVt2$Kw~KW{{Y>tIARU^ z*#+i)j|BbzmKF?3fh|xRHS{~d8Jn;JUrIeS`KKDHUq3S}1s(y~@%BLfy1c}1QkdfB=AK>J!jLfp0Z7+F%TufB+Bz z0PhE<$+Yo;0t<;tZ!$2>ORp z;K2L=;Qyxt340%+4HlIsY5*{z2DGXiE3hf5SI-~-fE;~UpFv8NcA-cCxD$8+2pQ`s zN}&}A7#_axWda@mYk4e)T_e+5#&*0ifH%(hs0Ob9crX9}0YLyciK+psz#EJJ00BV&6+&u&YVZY|!AvF* zFj4?6I_RSwH*f%Wmf0jKv*%_slz_Ug2!uuxV1zk?NZBm_0v`U_FJ=8TBa_q^;^HRd zkZ0RO8>;s1Mj$1Z+xXakN3Q~M3_bWfdiBO0s!x*Av|M}l9Uyn+8!Hexl- E{ubVZd;kCd diff --git a/samples/h264SampleFrames/frame-1449.h264 b/samples/h264SampleFrames/frame-1449.h264 index 6f5fb0a10b8326430454ad76b219033e86321b54..4ba524263f248a332574c8186a03ad7487b125f6 100644 GIT binary patch literal 1571 zcmV+;2Hg1o0003AFaQ7nL7LziyahKwV%OC4>kur(fC46APKI)_iip090t@x94LylX zWA97qBFfmqUexaxN{*S$4!ogjFHcrT~eoC`RbBn*adRC)HF%O~e1&!vatN1}5_?4U=sO zH^2102q7p;SZoME9smq%f+LQ*K}vho!17%IZ8)(IL;vs!8JGsDG8#G(JX3#z(Sk`- zID>6bQAMYi00IRd03fIU0uA5+gw7BH0_u*!!GYjnqNqGe-~w+T*j}71gf&f10096L z-~b>r;4XlSVul^`zA7qaSk7LFya2Sja(IsO|AbzAVlTRl-y|& zCNMxgSPW05BJF!`U)G>?ipY%=iCVVpkNgNJ%nnbTAQp zD@s;#!GHyOy>9>S1akPGMuOm=6ov!iFQWwj4-+A=$=uMt_u4^*<<%PUl$E0Y+(-ro znc(97f9w+mO%B5~q<4RKM>vHLv1{!j z2`2jk+f+tVv^zj zBjS((h)=`J?0>W$s60JUIql}*FAvKA22BkyN!(9I_(mFI6-9UZcgy}?F@hnS5l8SEFikxrW9td{ za}gN$|Gt0#AQFv$2?=Zk${b_wVYiv)8kD6TSP2e*03bI9XdpfjtFYf1pm+c_W+l$T z8oWS-OMd^>h-umLnaax!#057D06nN;Uhi?Ys%fL8b`6>o+5z>ip{X`L^-!As)bM)d!DBjjj_BjKD^ zt?BFD4o9#v0-6E^w_Wit$a45jAeqCWg2qrpk?2+M40N1_7j6Dx+fgb6sfJKti;uirO`cztf@0ktLtt^r{qzjodL3IKW?{$T##0kRvZFWHYnhJ;`N zh}(Qg_R+EjHz`Qw0Ks2+jjG7Z30wYo)_PqKAhf?V$Ey(}R_F!#GZHR;> V!FnqBv;MF$+f6?qnm^Cr!@w8G$4vkL literal 1436 zcmV;N1!MXE0003AFaQ7nL7KoCyag{oVHuLF(SE zLGgreau$O^KCz!T%2NI!!lVj}7yu4eqs3xBRi^*<4BWw&X4obX`_dYnu)m7*=?uXE zPMrhW-KIbP%Eqzd;H55zC5H5ifnTK+xtREucU|%6IEG!-t4-82{Z^5F|n& zBn*V7px&71)YNO;`?9w-#`JVZ%HGi7dsXYcGr41)OY{g!x)KQ zyg*r3^{ra%VGAl^8lEfKe*d>XLJ{#ha|^{Y^)JVWi5?0{G7W7x-95hmkOGLC2-x?Y zp*Q{SfCIuG2F{D&Es{;EfCaFCJ5&c43zW7tDLr2E1k|N4M`h|rM)5&)PS%3a!->ms zDDs)8>zHk22J_;;X`ge0kw=CE5^)29U z4WJDO5=rTTbxY0u;ERI%ay`pl3sd%p4=Ml{2v!cAb>UC*RU&4=Vmkl+()tG>lo0|j zKsqzxG5`SpMd?8AVK^$?55UE-sc$Yx7Zc&q5D$O@fCd9FU2_tw8WljfULXJQ7PO2+ zxv}?$01ILX5=eSxg4sJGakZ8;9wF}~D<1$XfCxczf>xPey=21HO*2Fo00L;{eVA-~b2!3(ZCsgniH-x`4d^0ws_Ev5hXY zUz~gXYXDk)k??O)4FGKg300;vBWDE-` zDbJtNiRhy>04C@F00BV&ZYHn>uK;*30003&06B@Q0jt0pi~s-uK>!s(YXEBS1)T_q zFhV#afCg>xEnJKJJCq_8}5rt+}_afp}qwC^QpEIZty252ACrVHsu+S z|G(XQUTwBM1;@5EAH)(j;NS=&5orGS_E<-g@&_5kdtSPG=|`|L2RsA|ZoA@PkmdJ8 zqlZNWj);;fUI0X-8zq%#P>1Vgu^n@dK>4n--*<^aK8cpkdRm?aa_ q&{RmJ2jABK57i;n@PZcqusl#dc<4ZbapesQ0M53whGJ;_V8g&e;AUC? diff --git a/samples/h264SampleFrames/frame-1450.h264 b/samples/h264SampleFrames/frame-1450.h264 index eb639fd8211aa901bb7850be034d5c54dfb3da9f..2be5fa19eda455c372d02ea24e356c93ad1d8469 100644 GIT binary patch literal 1186 zcmV;T1YP?80003AFaQ7nL7M;?yahKwV^`FaOT>aPUH}=l{I7;*zyJ^j0Yh*xw#7n9 z_FCTM8^XW87yrP%E3^zLkC}+@-@#(1) zF+6Ym@aPDCr=y5po?sXt1Oc23K&o|{E=2{e_W%Jv3UkjOrIHI-k{b60|4{$gRKNs8 zZ~ynUKmbIr5E$XW#?OeIC*F=Q49EaOz!|N<+u#?2ya2&WXktD)krFV_*7h$>8=ya_ zXb^gxCF*pai`X)Ql!fAx84;F&z!ri4%pad=?Lcr59>l-_z5~DTC}7v{@>J>HU;bbq zPn{T|@sj`n0Ns`VKmdTAk)bIPaxfFNw6y^($dC&Q-B@zQ0K;V)qUYWL4?%a7Fwu9E zxfKb3KFC~gb)?9)=Sf*Pjyt7Ck^*udXH*cPk6A(A`{<~V3L`^1U-~m&R1Au#^h-cuS z%VKFy5)%ihy?^@M_kaK(7r-$f6{jjQR>$ehMa~%bZ~z1cDq;X3bFY7F0SEM!j)_Ee zz1#qX3dNQ4d(=mi@^}CN00R|Bm3dfWMbrM^g$-)3E;$Y~*?EEM(h&siAdX>-AcX^l zRGwro>fC5i11EGq!4?O=x|u)soB=GT56cxa(Cb;E@rIBnN6(shd0-!a8v5W01Of}? zN+M1V9PqfMfuddh|1v-WE1*Hd#5=bJX*h<@QN}F<7HPzP_&xvtKp+SuE$Glj z-;nB65pNtFom4omDMLEMB2Vdzxyq`H>8PEU(1T&Rj zAiYNKv9aZ#bSg6OZxUr zLjq9O>;N&+mV$`R9k9gclh{eXd%b}?lGnlim;iKuAAuZyN~97pxPqR~#;&S95B>Cj z38Wwb90)yPf=Ub^{2l;@U;qFCK>%(hzy_}XcrX9}0YLyciLe2yz#EJJ00BV&6+&zP zYVZY}4303%zypLTt-V8RvhHumf663D#f$(pZd-(Up_&tm_Hd4biomWI*ysa1HuDrU z0MFk4{w@T}hAtJ7SP?CR|8O4U=D~56*R#U)l5L-#Nt9CvrQ`q!ZyU zeAi(L>wmr@H}U{mT>Hn*e2l4rLvVL~NRn|46<+UL19fX{u08Y)=EkG{^DGKqfM8Gs A%>V!Z literal 980 zcmV;_11tOh0003AFaQ7nL7Lziyag{oVx(ssq&D(^;kXoA)HpdRDSrrs_z=ccgjT>- zfS>_500;mBn1A@Po6^xwh)IEvVf-)vK!6Rk25>+!00<>m_|Qw%8^+cF1OiKq(F_Y`JnTs<-fT1eaQYks2UZPJ zo1_U?=|LZW6gq-=bVvgLW53me2p#|cfH}c<01haag0D(df)PE5YQPW(&oD8@zM7xD z8Ha&D03fs(d_HSq0SfPt2uz^^E*UoB;g#MH0}v27$2Syw2Ne^4_km0yhH>59>&lXwT1w$EmE~WCvaIXsRqh+HY0{ieS?bu zV?nt50wtIB1Pm?|8KFl20dNFj6iC!~L84-L) z3y$U6r}V&j@Bly+-T)l3mH_3j;3*n#UcfvJ%+V`&h_x&4+zbGyP!ME)OYJbkOtwe= zdnrY*A4DPBsAksl0KgFeM(?REb_NRw)8IRSm~q4a56AYgZ(F zor)Kq+yFozR)mmjsy!s(Yk+F-1)U6zFzO7_09poaE>PSot6Sv1D0Xuf>{J6I{G> zJ1qcW(YKhPR09{i|NLADnhabsB(QZl6aBzt#PzUTWw(3G3QXJPo8WIj%I0`35dG`G zoWYEw6#z3gbl3k@YNcp>-^q`deGCZQR+ z-&?#I{Hzzl@A5sshfIt>AiDrgFY!2#h^mU9JO)>+CsqROQ!Iw-{O|`$;)w@DC`IAf zVN;9QBjpEV;p1;^~?tIx`T|zKiE$MJT5^g8a{(OEFTzAfAW{^mk5#p6nxmV z-~Y$~m-oUuqX<`f?eUqvO#lzcd#%r>g9u+C*zeC;HjiS=$bS0i1ZBS`PChT-FhamK CWtS2F diff --git a/samples/h264SampleFrames/frame-1451.h264 b/samples/h264SampleFrames/frame-1451.h264 index baf729d309d7e5aef41ce187c238f293b03d2c68..2dfad653888ab0225e08310a643450e6e4315205 100644 GIT binary patch literal 6809 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 QLz_B?Jj_o60LAhD0lUp}J^%m! literal 1823 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 diff --git a/samples/h264SampleFrames/frame-1453.h264 b/samples/h264SampleFrames/frame-1453.h264 index 52b85202df53f267e940e7e0626440952e9e554f..05b32741dcf6529c4b8c78c2d0fe658d9795d442 100644 GIT binary patch literal 1193 zcmV;a1XlY10003AFaQ7nL7G4syahKwgICm)OUHnK6+Z-fPxyX-4h_rzVM>qNqPf~s zWL5x%2PjpLB1*cK&NBc30Wrd2e2(5J{T>K>3r;`)ASwV8FGJXQyfB1`BrcD`xGfbqaXkq;5+>X1_i%|b7E%3&+`ESeCVYIPy?_CSm$D)R}A1txG5B#nuo@J z{tv)_6&nCSa4Ss^xD_VjtSy4qiOy=lR$ym$dW?smNHDEm1R4QPP%}M%)=XolO<(T- z-9RW7>>-Rk%Oehzd7*&47e@d9fDjY1ecy<=!k#?=0B>#JFms1&$x&t!cY>LP`~ZQ5 z?f7MF#girupCTWC8<|j3PYA!&923SPad?#FC1FcFC4f)@fH+(I>jjk*Os=Fq{oqsp zR1Ca4m60Nj8x*$;1dsybXF($=PuH&~07?K6uK>n$z}g-w7S z_ZNuhAE$)tiRcJm{s03IYMa*z3f`GSC{5dN05b#nrNJ~;7MGa)Z?ed77CBvQsl8tE z{j_3LA#)4K?gST%gAc*QhM+nmAb3FR7|Hzq;6dLXB{rAsXRNe>S0TIE3c8`!ydJBAD80pmk4dT@TQM5Pz>k=8({8mQ35B$I#Kt2Mn&6Chjx?&5q$LZXz z_rd>&@h|`o00kcSS4K~_BmEW_F!N6UL$Ck<0YLz6CXfcN0C+F}00BV&IfG^ldulhF;PT@b8$KoQkcgr(5Mj6wvi|MF00W#) z$e1NHf;{wqPjp6QGYoiyQ~8F_dDQddL&}s_<@k)5#lSyA_yiI6@@>vbb9{!t-Tt5e z7$8$5u!&e>|J?or;{S*UND+!H^9bY~2JQgXb|sH}6vn^I+#H;9!+eAk7$)v+0NUGc zZ)X4huK|z%`zT}aO5_thw2~k(4|KKMV|4~r;9|r-6 zmoz>jfgIIFj9BU6Ej+U!z5agAQH2)?aP{lZ&YtvI!~B5R27}D72Ji(Ilo+Rg7C(W? zFE~MDseTFNB;o=vN50F1+Oz<0?DPr;9B$BH5jwuFph;P#+nsQxbw1GD+(q&%99(!59)gAT5R93FlE73?Kr#ydG~z%;#phuK-Y1ONyFw^LvR0Uzj>B>T|HxT>)0s=^R#FQLj zxNymUt)hPn3IGDS9s`Pi0Uj-XAQgXj2LVCPZLy|{6%K41-OV7t`~$&LW(5g*52wn! zG`heB6hPLMVQqm;QoZ+x03Zh+RpZc7rQN7f0B!{S06_yiMJZIGp(4YV-VC5aKnrhW zz86UJ*AcCc44@7q>9e7Fq=(PiE}P z>JfY~atZ4#mL?U(Eh9YLz1t@kjyL8%xIs7uET#z>u-j5gZ~x22*Pr-7&NxVcpI2G% zrB2ZY^u7s1hr(dU5r_AaCFR2nB+nLGcq_(Ie-lU~VZ1+!!o9!$)s42rW|n zPyktRj2Z*6l@0<=uPQcCaJU)32U8_xg(s~%0096nu<#J+w~Gqys@SXVkQm?q#_4v;nKY8;k$|0YLy2LTvzQ@CBT)0*o>Mdwnl|#()6%_ZG}qU+q8x z;#!VS;JGh^ghdg-P{VK%3yGWExM~0e(h6eHR?v7QPeMU&z+*2G%!hsY@&bjbK+-|G zLuWqinEg3L^xt<7K}xujhLuUzhcB@iGlV@>2Jh{bjJH5(6n{7idUeMl^TS%&?0?_% zm%#iNpcX<)1cX}-kKVlI0XbNKff&F?`Z&V$2m-}7a2$prQzA3kOim%uQkOhi<8oQg z3Hb;pAO#nzEYrWVNX*Q2;`e|3XxXM1BSWNH0?X%|GdW zdnDolFa)cX==&lx&N>1S|NnqkwVJBG5%zur3;>g+(a&FSBp1yY8A7iO2--Te_4j84_##^TE8?6wago diff --git a/samples/h264SampleFrames/frame-1454.h264 b/samples/h264SampleFrames/frame-1454.h264 index 541c19763af7f916d8be6b903794b471cd0d747f..cefa94c09044418e7ff59c21974d4eda0909e4d1 100644 GIT binary patch literal 1126 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 diff --git a/samples/h264SampleFrames/frame-1456.h264 b/samples/h264SampleFrames/frame-1456.h264 index 20a6e3541c822f5941d7a36ede332e7161bc045c..78bc4d57a18f38fe8dfc9e17f234868a626cf3c6 100644 GIT binary patch literal 1516 zcmVhIF5-y`4~V0HgdslfJ1u~U=YoR&Y3nNzySn1$`rCCNd2SF z6)N|zfCPs7w_@t=R52L zJyZY?K{X_-Xg4!RKL7?RGyx7(vo?T#@NiZy`2ZZDMIK90L!}o?uRw-nLY)`ZdH?($ z00tGwV{K%3h`dD~`+yq&A;#JQvVe^&2%P@e0DuHcNiPGenRAdM zGXOLq4gipE$mfI-2>_G800;z-Xbz0JyrNDB5dZt$*|s<8Rd-po`ODG20&t{WLy88A z&dA88gYW?m3Km8ZPS^01=qpMenqUAR11EsM2LrOY06Ad~DTzkI%`~LNOe*US7Zh@eLeM5jCK&%$(oiPuBMTktm#6a{sK;a)6_HIqPPDqRqshS`R2C(;! z-_&f4lQ=;>9f~)l#j5xIF5S=q4@K7&GGx?aoBg~1F+D?*T+QtM0yZdkU7&g-fQ)QR z7*?bJzy0A>Ku3Trx`5-x6GizOWX{^h-xB~U1HRC3P+RzSI3~fsm;eYE004p)&42)b zAP+-?1RwxgYyd%rg`!a5b`PKmCV;@O&(LgkQ-PQexFYK2uc;}^_)yqdDDVJdXiVa! z@rYV`;4sFEQ!ta=MjPAbswNxA2I#!SoJK$5P2d0s1eCA>O_(Bb{xYrj0097$Yye4* zTm{M;bN@$M;03pq0z;qx2n@iAm=1($?00(h^E|^>a)Sm9qcuwh?9-u~05N*T($`Pk zNQkI}IeC~%TgQs;a6OVYIcz_kZoN z5u6e*4CfY8`!fHx*wLE#7`gw>0AcE&AhjVnbzLfz1Cb6!@XS@Gt8kM z+0!fcxJUpMs3q;qfDmRDaVKE9OEdGQUtjw`p9}?u4B&Ns02i%`Tir(f?Jc;+>!>7* zf6?}p2mN5c89rnYZ?*-??D)-H;AdzZ1nA+dzXvbpeF!}K3f@@vf7Mt4gE2!6{;W`v z7!4*l@~Vj@A~W{iq0Gbx7#=RSt{?vu;MSiyG;A}|=sfmfKqt7cHkJZywt(y zi|O4B$PVqGf=Tprg|7zBw@!6@5-KFahJc-ORN{EvJTb#G(!iLk-6( zUPej>@JH11-r$=~9&;eerd9LP2O?w)_c$5Uf))WL*hoz|0XZD_jexp(b6n;B|A%As zrYeYI^r~^CZjvZLq2HC3qwo$Cz~vH9`_wF801y;l0DU7502R8Un2Ps_4S{UhAMfq? SAHKXmyX3D%GXHR6e$!k+#GqXO literal 1321 zcmV+^1=jii0003AFaQ7nL7Si&yag{ogCs{&RuhE40RRvwhMHlf7-@!@VWxio4gey6 zS%61|Pc=hu%>VOToK|Dt#X%qdZ~*}DERI10*v7ly7rcedW7q=$-xM0YGraMDK@Ai1 z3LaRA_Cy#X;1~mw;@9C1C=_7=KsEn?8GyJq=L+{_%!UNyZ@5lEa2!V8ez70e~5IY#8bV?PmM{1OUN? zD(__)dLq_6Uem`w$6QrIO>SaNnU0>@Z7-u6RJL%IK_vd)!5|0>Lox83P~-EfKZAe+ zngSz|79+bO|NaaB z!1BI3NS-ya$T|G*Y80VHoLLc7hpWN&ugv1rLq-OtYv2R{h=RDV-OprBwE)$OY{n~y z;*{&}002M~BZ>!YVVCn>S8!x11brZ&W{+jY44)Z7zrFxK06+*TEFoWr-4=0A8c2J; zx_3_iGO*9qk_2>(tWUz40|f%7xM3-hiUg$p-*^(p;sOSsmKMqb{M|T0RKt`X18{XI z+YbSXlr9LHfBL{;3yjHF$jbwxGv4*c3c*9jUx^VtUccY~K=CrM2Jm))HQ_0X00#pC zaE`KsjJhO9?5)@Ty1*dcno0C(Oe>%N%_8|Q#rh-w5CCI3dT2{B*R^Xl00;mWA)mjE zUT}SDDQ=Vf6(Qdc_p*|J(o~07&XIA5X5lO$~d503oYu1+PlVs9XR4 z{9DZSZL{`eIDfa7>)ohFfCK{-fJ{w>*wUDIL~V~(%+x~w0Rc>_+5ock9xr&n01yQL z0RT`3kIQ%naEJ%xO0pct5gKC{OW}^$e~3W|!Z2#MXj+CZyWfBV0Ago#d2k44auW54 zambu3m+^j_Fa#QI3jhHDmD}h6euD$|{|A7e|0sK(y!X79|NBkYl!s%JSEca-p=ew{ zTxZP84P9J6I8D_{f%pR*$z@?M2oO=4kFfJ18D9{{=T;+u6fgnNum~Atr7C=9_lrOm zx{i(Uv5yu+vtls8K~-Ce4Ly(<$?}JfK@a`CqluxNPz*rT*!QeuiWYqi zV|ROw%b~=!O3)(=qN+QaC6Zt6p_m(#&do-D@BiR3%qC?*?SD@H1^}C&0003&0B$De z2Co2kFaQ7nK>#_4x&f=e8;k$|0YLy2LT-R+@C5u5zycn>>ihrr06b~i=6(y_C0pqEDk%{ZVj^q=Bz)liOK(_-Xgt}x2m0kOZp49i&r diff --git a/samples/h264SampleFrames/frame-1457.h264 b/samples/h264SampleFrames/frame-1457.h264 index d09d6cdf3b0692e6e366c4427f2ee394b16f5098..76bffef71685f5b1a8c87b4d0f1e1b64f096dac5 100644 GIT binary patch literal 951 zcmV;o14#S;0003AFaQ7nL7KoCyahKwV%OC4{KuiyJP?DN--)v{z%(O(0ssaA6vn>| z2dXeKw9ekim;eF*04ZZ7fC&f~FDD8SGDt(e?@iVKBkO%*v;cqs9NZax7Y1*Ik|qK` z0URmsvH;3@6&iR=4~0O`36*_L6D0%shadnD z0RRC2pdz^V@3f$AOHdcyZ|H)30^YH9xW8EZ~hPdE#`YR+YJAf@Bw*@ zMiruzX(bKX06>fYgRJmPb4rPmiEyXR@h||83TXj>VSk|5FC;$Wr zKz<$;!vFyQ&;UO-08DQme*v+@0#1Ziv49~%aVr=Aj0wiX3`72emjDFF#z#Y#Aim>7 zn+ySC9(+7$i<${|FyYl;(0?N#6_m$9h?S`!hnv8^R}3itVj&TbMjjr9ICQUphb%M| zN=%IzfIiG@i#RNUVSojOe&E0b347_#*oc_He*hp5FyjR|MGrhttZ6NHe*VO+5C}XR z+FS%lOUa2zhaU7F;&c#UoxC8b4=Vr-;0SU600BV&ZYHn>uK;*30003&06B@Q0jt0p zi~s-uK>!s(YXEBS1pLAPpfm^tg*X7aywK?k|GS`KM=TLF_h#$JIp;)4 z?|ut&8r0RrhMVD~c<%rM<1gps8^9+ZP+&kfSAs#XKh(erYmp5B?5l=?J*WT#0eAoi z3Sg`O9e$VfD2>1m01t~|M-STji(1u2`PO4L-rrD%_t1Vrh@XJ}ZP*03hN$hFG5-B| zkZ!m0_dtLY6j;FkVu>PSn-sn8?ka8=(n%t|1h;rS2MJ+}F`aAuf)&keW4GWkQgI=` z)BfGKGiC(bK%>L_0t!$x^=gHrBA+oF9Y+ec)OiI24f6nQB@Y2XB5%Ht*< zYdeGeIrb&7fw61y)q$zGe|T-oSOBK4o=DEp9S$H{HK?7k5ox!xs1+l` zmaKZYAAj@jU+wHIEbBT9QT^B&JW19B>@+<8m^1K8|G$3se-3wR5jEB;=PF_qIeq^T Zg1|9{#|5(!7UhKX-2VZ)?uYo8M}RQ#jb{J= literal 911 zcmV;A191ER0003AFaQ7nL7TuDyag{oVx&h>*T@m!VgSVW5==S*Jl!6EAOcqo^v4)@ zjd7ndHq`*LFnnns0EfUJV3d5I!xB>5LNllgzyN@PiYDG8WvwKlxfi@_U;rQ#WkdjI zY?*Fm3?c9s2$RmkPA~@m+dRii6ax?7LAWn)lt|tS_bwRl10IAYO?8m?Fwqg3kn@0G z1Tv){U12N`ZM)!p-u?vg{~v-GAOpq##2y3U31I#RSGSA}zzR2g{3JSS>=QizOv5Bk z^!I@fimjQ(G8QfX6!LHf2T-}wG(rFu00IY3IOcX|d0R%fr5U1aNtQcU6>~IDID3E*MABjhp$Pk$He|Q57>t?Xm?T#l8xa00#m~GM~VGQ2uqV7MXa!kWv8UqKj{i z3E5mFfF|ew00BV&ZYJ;suK;*30003&06B@g0jt0pi~s-uK>!s(ZvblW1pLAPpfm^t zj^F{(^Odl=t08`%59Snl0I92M)4oa(y*my90dODS%}X$Gi=G+|592*@q+9-Zf6c8S zIu+9UAAj@$5Zm8#sWH9q6Obq{ARH*X04rJbcHRHHaBX84;|JWPVci>G(EtEI2S5No zYmhvU0k@_9VlfZ_-~#xztRf2guhAmJy3L*Sw+0l9xWw+v!ifKiItJD}zxX$kQQz3G z0xA$p`d4X(`mv?~`uyt`OHJ$$i$-2Xc-tP)LrG9z1cYs_7XyJc2@#O+bW`9#FkpO%f2c3mL^!yH zEUJ$V0sw)x@Lg#OTtp{;pc4};R?y~r1^Uh3Wv8E7Q&$|v@ynv#b`z=J&##B~Ww14d z(V(rxmq377Q+Rs-6m(wlLqC21VpF?u`|N-Znn_9-yr@GR2c$S)@q!bl?GYB-Fm~I) z=Rh`CYRwN1qxJL-er>xv<&^yY07kY?VHbLB_OkhVi)eRec&+MIZj2Hs7&5Lle|QM({WggyR4J diff --git a/samples/h264SampleFrames/frame-1458.h264 b/samples/h264SampleFrames/frame-1458.h264 index fb782c88812e87ba654ba8a8c00c92bcffaf7454..0f0ffa981626c4f44f1aa9848eddcb7f49d273ca 100644 GIT binary patch literal 1235 zcmV;^1T6ai0003AFaQ7nL7LziyahKwV^`Fa{Kuiy7yk%=h!k!B4md;sg2(xXfl?z% z%Etf$X=af76S>Lg0}dlnRNC_}dkmsm!Yz?3Pz3;_C-5R+$i-Bxqz)0~C9gM4xaw~q zS|a}eflxx^0ac8uQK0K0dl3xl*9(}7>Z$x&t!cY>LN`~W~;y_1I6>|Hu|O`1^r z0A&+#qFXI=R|ySc6u4d!oaUqy@q1JPfC>O`Ngw^AOpGjJav%Qi6#x#Pi@^o3sWkNX z);M4iKnBLdL8uQaetqJA0XP6N%K&q{Xcv5Hldb?@0-78432RIOkC!|EJ@0pjUM&;C z`Q>yNd;kD|2!qz|JZN_{ixP={fBS#{%m?;K0k&tBk_~>h%$W`%=PRo8zgLH9fBe5} zhDTE$Fz8x1J{bcAKq$~aOqh&_kc!9t24F(qi@KJ+r=m@ch@J}%fCFY?Tv7~r`2!aZ z#KC|AB5MI**PYU-BfnTMLbFc^EIN}9N*wUQ73M7lkvFa=-~Y4#1_Pbe8pNvOG4YPx zv_nop=QEU!7;wUEtu^oc|G({jnE^qr-sRuD`r4-Oeh>(*1Qny^B<7J0>{rMfIK#C_ z>g#`O@B(EF3g)0pKb;(5fQj~a1ucX^cnX9?kJ)|8Wb-C%-~b2*m=K|)aKTqgB z6obDQ0}8)j9R9ITIUB?O{;?s8vvi!!z7PDs2UrKdb{(?14IE5N000Og!~5|t01yNM zhLaBP=$n$XYBIrx07I|<00BV&ZYH<}uK;*30003&06B@S0jt0pi~s-uK>!s(Yk+F- z1p5U6qXZyF><{&92{L|}sSY@Y()yS1ObI3lh!`V)12%|^8}tziS~)o9+|=u|I5?cD zCV;x#YGZfZ-eUGzRh{4n5&!w5b2Gp?V?Sg5(F1^pA;GcTDY#~rec}G5-%kOwYzbw8 z^F%KHGBr?t|ND3><+sn--}S%?GlKE_CkV3t0XlI)ppmdYzE^cp*ZsMXG7x1#R2fhu zLBzu$(3fI@91e@+Q;u9Qu$xxB&l23=_CgH&fzvtVB$ze~WNG0e$JQ7ep#^D}JK9C0 za3-qAOaW}IBf228dxvAWpRU`43GjI%xtS3E_28j4NU2&7`GkZ1bUxAU=w}1cC2$Lq0>h7Ef5Zyio#u*G6RYz|Q1mPYd`TR`YCldew literal 997 zcmVhfuZ1dh2!EzK3D6K$%vSsW0DxJ6Km!X`Bz+OGP%TU1V1cNGa3qh|f!0-pyRWM%|>B8&3_HY0<0vOlWq+~_%Lz(^nVTKhP zT^ZoP=Tug&PhVwuG5CsJUpva$?Q=yP4zOsEBt8%F_(%|Bia`zud}$%V3)0u# z6#z5b3^EHB0~vC}gc6^R@sX;r|MMOX277Plr&?G4 z(5;~Ip(+fhN`r}pL%{$h6cGB4rD%G4MUz2~TQ@Lhg+)iqgcHsP4`S+Yy6<5zi_wsT zNAiXQ)maIFBcyk62b0G^%g{Bp5uG>cpUkfQcYB-=HY~1&8@9wh!ZW z=I42U0hOD`hN#~HYv#xjz4O_S2dt(*5yKhzv8#J&A*J^r1+y~)58?wNzyF8f?tHdM T2YQyl-lc)wrGT6x#D714e#5*) diff --git a/samples/h264SampleFrames/frame-1459.h264 b/samples/h264SampleFrames/frame-1459.h264 index a8eda63e7bedcb99b51eed990965d7b1a549328c..571e2258f875237e4e1ad977a51da4b848c26b92 100644 GIT binary patch literal 1875 zcmV-Z2dwx20003AFaQ7nL7M;?yagW;6vOD3RB!8=zyeeQ_W7gW1hGs3&@VIy^&S7G z_yR)kk7(tgTx3jOj0wdd2tLNox;OA{6DK06M}8id z&0~E5L%f`ZIPB~KM=H8eA%wmATYx}oZH|b|{oeQeXTN>mWeC(v#iBBD)B1r|wMu|U zJo2uW@Ro#u2xq3-Uw{HbRxpVzy1^b*KX4B<*ag<}M@eLV>?9FCu!r<_|F3<<;sOQy z7_aNzU;qdofB=Kw00>!t0DwYg2mmk-?ioeK1Opp8fFe!c0k*_)2SoAiFt>7W00;%A z009F@C<1H+`k+-FaRY0yRCDOHcRxK#AE;h0nc;*IN!gm#ss_o=z>OfR&R@k5lz5Q1&7dizl34rSp5N1348#L z3(a|JzDrT0I0xj&2m&8Pc&`D^E>bg%GX4_Ou@FgUkiFUcz##=(j93Rn_Mv7L2jC!o`-lJp1PmMokOt5C zj7(lCqpN@KF)Nq_4nOMXec@vlUH|}qunc*ISirx?mp@bBV%moC< zdt2*U@Bjn@-2lKMs|PZjZ{y5_-o5|;fO>!l4sbb>c#W!bDLxDKUe@VWE){sX>wGwmOu^aASO&9zyrV)`fdP(sxe;|j0t!F z&X`Ef>!yS5BOP@8P+uD=SA$owykTCn2d)Xof|BcL=;dPfoh1mUGKgkvH|Z~zb{7dqLsKK#hWXF=WSEev|0%oPA@ufLcXd@LKD z1Q!TPEfAp~PI2QOiU$A~tffu`8t7XAL;(Pix}&zvNEmrt2R4}S0RU@Su8Es8d}z=$ z0-J6+G~I#AU;pv|F;hU0(S8&|0E5~g7s)LE5C8}VkvD4rB@q}5KN!3~6e)SiykQlY z^`saK7-R71K}K693_hlx^H_+9q8W%#@3;^gouh$_85zZ6OFJ5>RZjo_Kp+MT!f9A^ zu0=Yv`S7R*WZg_YLKOVo004lft)Nuq)6=55+jjy(QFLb!*g;Qb4`%#q7?Aua0w9=R z@`ChD6Lw9Lrp1p3srvsh5s&}P-~a>#SeO73X=K1Ql1P{S>&>yhbGgnd#J~xK-~c8B zE+{23xR7#&9smiEjE|0Bg8OU|Z{%bmvY6;m616578)5>Rh5!!9LD1XiaV@y~7+?r? z0003&0B$D02Co2kFaQ7nK>#_4umP*U8;k$|0YLy2LTmtP@C5o_!7wNV0Epv)AxjJg z{13ze%{h&^hby7EK7kN0GZ!&}apS9uNlZg1s;(yd5P5Ri8!< zGoS>Jvp;w6If1JXvfnHJ^!P;@V~2=u*8$H8<@~Im)T9&?2Z6nV%s}Pv9sFTZ+f42L z8m!7N2wNp%UDB60u# literal 1399 zcmV--1&I0p0003AFaQ7nL7D&>yaj>$z9iTnK!h3$3IGBC0Dv)t^ogeDN^vPk-vmFH zWC3sPYFJEbhyQ>8AUp;Q?u3W%_2%jQK;WPw_!tyIj7>un$yGv}7yEB$f0Y^1_zesV znWZM&^k~PnK6CVCw@t3U_%PrAfCvERs5(dxCl@w0n%O`H3?T-KSI#}=O0MI}@Gt}a z0^9R0f-V{eI>G(qzzh@(6DvQyB#ef1i40y05affxN9CxY%)n^>^?F~#V}VR$0>Gxo z(hoZzdPV>O05Q;K!4RUG_xs=g#2~yMd^@HQIJqo<3mCxEco=YUdQ31`Jzn8}j4Ir5 z6@JqhyJ5sfm(U+1IR558RLd2n7I+q|h$&t$pv$jau`wL6|8-f)1Dqm?I?-DWC-j*sRAh zoJ6r}@Ban}FZQu~Z;V18Y_43ds0BrwZ z;AnDYd|?TFqJPu}uwvat@Bjn=00uB$DB2-E;UwdkVR@V{tv|3`oV z004j(0SFDg;v?f?H4dEV2Z7L4osgow=+f&0tWuIu`~Cn9HVu;_PNrxS=$x(g(IO0> z6Iy5xUtgfB+x@ z2xOvgd-UR*){5zv#lIT<>o!}{|8QEf#*jr zU}E$@Kpg?WWCCF{Y!*KD`Qsn;Tfm0-$k?c)-WY<>8Qzz{ z?(wWrubvJz8aPQw;Td=ni{ubTkU&B^K%g5~f#wlz!o4sk&4a8AtKTrOY5*iG&TqIF zU~0xJvf2N)!zkuFc#in_;atA$jYUF&fU!^5Jj4!Mz3Y^BZRU@>5^V_kfA@RrSL-y&cR9<{1X)qMwL&TUkQxZ2tVN};vM<6KVW_Rcnbhx zgeXGacMg?F&Hcat6aZ04wxZokN3YXW?*?9!9Vp6&02LU7eX#(_nh-33k*7rk#09a1 z<^aTw2Q~~@Yzb$mM+3kE2M~#b&=;-AXe01z;3{A>ywyhgwPKtptZ902f^@uE~mWI z2BDt-0^+DV5&cq1@evR@Et&NZ7#}8YOHaQ%0099S0LFkTgswk#0{tu`0tL4Y004nh zOaOBy&wu+^2puau2#HcO_x6AgU{V@VXMI#sPAvWa06-8$`a1Vgf)5*S`+^)A_2hgl z4z%5g@TKVpMSl&1SYH2@%I3W8`+b(aT$Pp=Hd3R_emq`plyiX-3!L6zaT z5zb84%V+m^G5`R80o=jBn4cC{md{5Z3{`59D$xTz$`4Npa1{}9K*#<-~15uKmbI71D+CjGU5hLyg0V_j5LSvJy=-k z02_cI$N&HVK>%(h$Of+fcrX9}0YLyciLwE!z#EJJ00BV&6+&!)YVZVG1i-+-2+5EE zVu^Uir#bLPXV~+b<$}OqE(5>=a1?acm>B>*;Yya@8Gr-8qvpHAuph-P-u(FH##JqO z1Jg!OL;9Uu1oHazj=&kRjF{^H5YC2i5#;~X0i{CtAw~iL_{Xy{5cq5uf5xf<46R>@ z5+EXA-@(}GpW0v7!|n8pg8!^u-+ud;*c=uL0dSC@5(-Ua$mwvux6--IG}m4;=0IUX z{o&xiI#?6L2YY=U0{}tkfKD&VatSCxA(}uCM61GYR`osq`|wk%$C+{d@D1wXB(Nes z`@B@sMi76VItmQp(m|AhTlRl2v3U4!3;|Jq0VSF7M#%zhWf_3Of9|e?ihySdW@vyA z6!+doLfTaopz_fH{QO5%M}axykVtOJ^|#-!s=hEz5WfGiw-7+{LA5|vf}uPiBx$>L WSd9&}aUmkEj_>{dH~d5*7!;ry$XICr literal 964 zcmV;#13UZx0003AFaQ7nL7E^MyakU5g$Uu1tC2KpEWg1&0vN9V2Lu9y2;z!l(LRXH zpoZuB!vFyQ03ZPbun{9xKR=>~AHnm00L*4QOeRB1%D#9ADIy+Ir%tBv&leHe!(rev zf&q{KK$YU4kjwWU!exL#076lJZf=oT7QQD09Ig22zHP$fi(^O08n)X zN%Uv{fDC?xh-i`E00;(-Cjb^%tAHfI01(A-38r1pa#AIAwX_u2<%ZH1d9#qbgm^Ee^%WYpwEt{zv>?YeiqU#UxZ)jnqnf-fIF5r7SW3(zT%0(hMgw$l@Ungtm}n56s?fB=9Y{4AhUYikCahk(EZ z-!UtQCPn>T2+1;7x#Yt9&N@-xlRxl&06~Tb?bKCK_o@~nZ+4&;00Ok9SRZvr8mFoN zDmq{RV;4f1+V{G2s{jE2U>0r(9rpkLASeYYM?&K;>{;QfR$uL7++aQ`%g_aeD&K#& z3;;TZ7hzmiWCHZeN!$ui^qwjnv4(6xzF0C+F}00BV& zIf8bp4FLOvD%;w206&38#h2r-72=m<(=?m?arb m|FX9bK}oRL0nu|9fjmMBd|NN4tJVmRi6e#=o2n)e@F_rqpNsGS diff --git a/samples/h264SampleFrames/frame-1461.h264 b/samples/h264SampleFrames/frame-1461.h264 index bc7b9ea861e57b565f206c27e44a6a113f95e7df..75bed37dc934e3954886ba4ac14ec183c43ce71c 100644 GIT binary patch literal 1560 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 diff --git a/samples/h264SampleFrames/frame-1462.h264 b/samples/h264SampleFrames/frame-1462.h264 index ddb94e9178002cf9868fbf481b2299d04218aa5d..7fa180094a517dca13ff2aa01062d3afabbcb98c 100644 GIT binary patch delta 1030 zcmV+h1o`{j2a*VX000012`~Tv0YRH!8oULQ;A0Xy2$~vl7SF$(3tn>k8H8ZW5dxrK zFx&tT00aO)5JDeLjgR(B8DJumU%v($F(&{hT6t=>#I61D00dwF5CPBy1qt1}Ab_V$ zAOHjmXA*1Fam*}QD=3eEC;$Qg$`%*mx_C1&L=#WdzyJt;1swsz*1SnIG1;Hq)V^%{KzCZvVG5{C{B9i+CN`jarOI=uy0mb7U00IzfKkxt$An)z~EKpz| z6E<`yGAR;D>M~O`p~^kY{D5MC=TpqFu@q^FwEMvfK&F!MBMK4}=|aE*z5oP3C?4!( z*c1?liP`_bfn}7(|B1F{%r$pV!{7q(lpzAHL8486G;YuW0Spc?g8;k2OAZ;2^|R8| z?SH{E0E7UdXafL{ZA2doR`7CR004nV00761*0{&W~C9|HgZ0x$p&9qzyf!(YFD zkPU?-2927(djKa>D~Li+W9SgNn!co`#Va5t_iXM2QSkhYX{rtfzgaQu-G?xJqQvza8 z*$8k1I{*LyK>%(h*aoivcrX9}0YLyciM9a@tH2wK0003&02M-QlWYPVe;vV{tH-ly zL+D*v0zHiY!pdPd`T2mJUk3oeh+~Z$ZUR49z1jdR#r+m>|2?)>{}A>;xu6I7Qmv&@ zU`vCYoIKr72hHrksQx&h|GYp(un}})Asq4l`*N_B=QwSfTNB{+IQ@PkZ!s|}M&Q63 z3XD!QOaRFX&K$u>laEJ+d%tbAG(_aJ4}|4wixsR=VH-aQaJhH6V#I9E#lqXG5(b)Bd5;Fk34izLYv0~K`(x_>`QuPPll|J)9^00<}ulzG7!DSi8-&myiQ1dI z$8Z4n5Hi*7!7)?p<_NHCb^ss%S49v8@bp{Xye&Y1Lf5O#lt#%XTepOF5eTts3_B;# zi8j6r8n7DJO_2ocOvXlZA}5S204h_;Xr}`7*3+*Mpa2jo1}H1%$G}T#Spd`pAOs-g zhZONOwbr$8CzNrlQ@7B0mFb3bN~PWK>%(hmV_0Kgmz99+FJZ!g%|Y(jJ^f{r9{xFXq`&;b7xlEvggzs*sp3Nnhh{XiS*31tdPtFUkr6QRw@2d4I6 z@zOY@|4aJ#fQ}N$f0+IMNA?Qp^MVu}Ig@5WM(c0zU=4?a0FzCcY^LNu-(l_G)o>sJ zb^WUvL_gmva%NH**Mah+0pN+}g}uJ;Q4qo;gJJ>&T<|Al2xmY5sxSZu002Tt0RJ6= zYfQrfKVE~yw1Zkq_4R%!Tek2d9m@1i$H0gY{kJzfE0^>rL0Eu@P%X)WVw=m{7Ky@FCa)u$3bvutVd|?P^NodkB}ohn^LIHVlEm1_I3=r1R&0 z>VbaR$E?5ipWV4kAjKyJj5KRh-a)Zx%$WdnJYB0m8~Wx1a? diff --git a/samples/h264SampleFrames/frame-1463.h264 b/samples/h264SampleFrames/frame-1463.h264 index 96710e50e8618e1ffa06ae8d100591010bf00815..b141fa6dd0d3f061c4651bdd80f2bb5f658d6887 100644 GIT binary patch literal 1443 zcmV;U1zh?70003AFaQ7nL7RXYyakbe@Q4V3K`sCe4+(+CK@>2c36==%Zd?Efif&fU zrX_JvVoB zNOO#Omv2B2Vh7cuTtDWEl4EZtI7E0l_@12xooEgzExd_??h~MpkOV%K>3~e8i`}@` zp`ory3Vw_YmQ!Xsjtz<}YzOdSuxT;PC1P-mb7cnllE-r?vMmF^C4$IUXZ^eWJ5 zgP)4dia>y%Zv+wWrT9-C4&l@UEs+&c5r7tg2@Cq-Sgniz1O-Sa0YhiPnF>y;j(7wk z!3N&rt|ojCTk=o<5z_C#2mk~H?MeWpKri0}VC>jESyTW71{mlY{3+j%A=ky$a2Tr* zRrb8#SjKWo|Mf@!a4-lv<=r&+`@q9&1ul>>sBCX8s}+PItjNkN!cO1{W)JWHAPfun z*nEfPR9)c-3h?{@8Nz-RJcxxl`fM7=5IvQqD0Z?`NU}Y5zyJ^cfC7PL(L|uK63CoC z!H1 zH;`Kz#0{C?*im{GY-kZNEh{f8kbl5{UQ1>O1Z-1K5I*mZ3YrXge-a7&Q~>}GbN~Xc z)hY_ z5FJL77#Fxd4966wuu9uVij6X)Igk_@?7iRp>vgpwJRgAoGY|$Jp>Zh^UATtw|DYVA zlpX6wnQ=e50E|%r*jWPcEtyxVR(>$w@fX1$?f^iF(BFyQC97?d`Y!+gKx|>l1Tsi= zEzzHjQOG6%KZXDpE7Cv*7v`=3sLKaG{b3#_4 zxB;uc8;k$|0YLy2LT&(R@DAaB1;9WCfIv`)Qvk0`8s-rUSQ*D&0VBX*fFAUi(`Lh; z^WX)5*Cnyfih-ZGMJn@t|I<%a3!xFe0f(@Z9RUDm6(AiD4(P~jsAn7$Lc6@cM9HYh zn7S&5;Rfl`ufK<$4^li2V&A~CJCMpB+;||q*X??t>Z{5>6JJCM(js^ti*vW{0%`{U z=o|q6P^c1z4U)vn_E|K0sy+Y-K>AP|F=rV)hzPO1Q5dutDSB0=v@wG?iFEUc3IuWV zMmjJ1ZUBkeG%}-C)ZP*atQ`Tx2vQ87@D}l;nV_jr;3lsi*k5c?j_Q4u(b^>m91j41 z5E(UY-eJ#V^AEN%280Q;ozCz7`9)oz%2U6tU*Vu{gbyTF;B1(VLa`V44I?4Kv6YS5 zwh3C=F98Ui6u;4CI7gru0R1E8LcRZbN)+yJ0gq(7dZtdmW)+lE)sJXaZ>{&b_KvY2 xGf(cZn|H)ies6nk%-bJzQ2J*C=uVY8qnrJPw%f<`^)nv7{0YJ%@gL8?QNZ)}Zjt~1 literal 1166 zcmV;91abQS0003AFaQ7nL7IRXyakbe0sv1E1tCEw03ZVpb=|#8qX1*k0~+aLi`fB+B< z02Hti$`vSJNkiv{B3sN(aTmq7IO{w>u^&JHAPk_P0J_sv{tqz~!L$!keVBo+B8ag) zBX<4FAxwMV00aU6U?gLXi=Vs?AG8P^sqYLW09p`EAcGJDI4G#d2%Z3V4g(BysBnqX zVCN9VSr$Pr02%>TqYVU-!jy5-BV{f?0l-jz*H%NN_X7K3A9#QOKnMUReOsC!dgn-6 zH2?Kj>RcDS@#RI7u*iUg4xYUJ+;i;9ik0saWAfIy%aw}%Q!#N6c*N`*MPz`_Vz`hFfnn2jqwjS2h!0Rd1u90bfF^pSCa zc+@F`;E}+<@JRunj-ul>3d$#-0E*#^1b{1>aA;VaO^Lgu!B{&$Z;+4MIM2NB00aX; z=+F)-E}4-p?Xi;dJU|RM00;>!qrj+HWw+ z7(zg4u`&W7p(qpDfKhhYd_Mq9&;S4dK>%(hpa!o1crX9}0YLyciKqdqz#EJJ00BV& z6+&tNYVZ!>e+9rm27o|Nh*JPj)|_ojCJa%Weq;jP!2cKkmgM#{%+m+_0I(Y5_Bqh3 zGxsS<{LQ!ZG;~GbGn@t_-(BaA=9rjZSQoY6Z*nC8~dBlW*IKD$IAN{wRb6tR7 z8hVv@3=k^>jZXMauDfRI3AQ%_EB1Z9o7J&(vzObyO2;rn! zi~;OZtazCm|9a^FHB!ut?$JU3;J_8&vMpEPRRJN8_V^6W6J^2lm3{v19|04&T1^#!g-;WOlqSEk4Q9xNr000IcW z03rSW0vgP`08$MA06^X7abN%;$dCXCL7uOFau1tdcZ3Yy_y8(l6c8M@+<7TJEDh+vq;)H%=bj^m=nZfX1SP<-OEb!m*|Wl*`-}i30e05L zaF{E%>?VK!Kq=4xPizduU-`I<5HfRUTI3#7*>C@PmV^HE&=JH6>U5W>(qn)8ID99- z0kUS$n<-V9W{8L?{*ag@00+iM02B%#>~OG<1KE7{m;h`j!v_=otU5a#5uLpisxSub zaHYkPRPV$!=mH5|RIgIf$oL>9$o;C5R7J7{)O)~SM@e8LxLWvjV;D_npWz`!O{b8b zB%wT5J^(cb0gmb;Gl;&_fs~*7X9&DubhOM9aOs#Q4xi)U`~U#}G4P>3j{Uki>PE63 ztpEj4cobn7N*=g(IU$XAMY+Q}-6!>a00|AqVmPh!5T><9yZ&Dk2+&*<15m(xWb~*2 zE+Zhwa(5Dwf431JdzOq-~@$Rj47jA>V+0%w74J<2M$A|hYp>o5Yn^zzyJ^j zd;|k3fJ*69_AbElzrX+x3E&M3P$3d_ohn>%d_V#^6o3jTGy@K9f3zPV;o=MAl85nc z2jzeQNs!YNisE_~;rfshY(PK)Kr7VR0&*x|Lh4%jo}KXmj{pP%KtZ`#vbU;! zE1&=f2BTmBA#Z@%L(YBfy|y>%btz8rU=j;}0WfOk0Z`3_#~9fV@BnPgONv2{Um#-t zS|O()bD7FVhhhSoh5#PP1`~gj_1r%J_yQe(0003&0B$De2Co2kFaQ7nK>#_4x&f=e z8;k$|0YLy2LT-R+@C;)D5D)>d5Cw!R7zDQ%lr!m$kU`ezmIlB@01v=Y83x)8oQCaI zr5}PNla`uGRNGh+kU9b&5COnMC;%XjSMqQ03OYrbGv#=xM6Q+f2<89*0gwSzsvqDXSQ=urZC&30p!6>mC?)py-V5(C72>}8z=b=$ z=>MvCUoY^XM_~}LnfmP|mH|+(NDm3#0x#NNu}y#AeDKTGxvVrm1MePLvmM46oKU24 zgSBRPBOnmRw)x?I0&E=t0E0XYbg+8lQU`7K?Z*iaDr2U)120W%M)64?K;?kgcOD1_ rfj9-gUmr3w1}!YusDp!?*})l4_pG`%jz+QmG5+4)yaogF!Z03iUlED% literal 1639 zcmV-t2AKH(0003AFaQ7nL7Jc%yakDUfnedp34uIdPyiYL0svS51OWgHG#gPbpv7$3 z_CyX`0RR{^)PNVdZA6cPSQSQ?7YGn#hCd@cM*2&vwjc00ahL00;np2G|%K zzrnut$ie^}KnmS31yJZ&?|_5?5G2@V>Hij(P=xd82Lpxzjx3IZNySucxn9vkB3X&_CD6){!wJS^F$Ra6&lrjRFiY0gv6~Vxc%B!;%!T1nD4j8fp z3Kc$i!iUR;00tre*a2^b@s65YmOui`Ne00m1)Ch6l?@jEz2*c;D%^1ysd`~U(0 z0cB|%A6PUS)Fzt?93S{%wdV0m7u8U3w;YErnrOhxNY18A*bU`-&%gW^=D|4b)Df<5 zG5bMrD=w#X0$QrtOqdtf3Sd>%=n#NLjna|uhySMox<l8;vY&fSUU; zU;vo_U;rQ#D)c4?$i)QfP2`r201N;G0m33|3_U&xa5O%z9+$xz3Worw1Q5UwMi2qO z06-O703F~CTrVqs$3^PzU5!;Lpka*)_zQq2FX0RBAJ0svNH z-~b@b0P6Mt0stfh3_JtW??(eaXSX410E`^tK(>I8K%mYr06D+&y#bs6+|av{FdRPN zB8M8af&c*ll43*vP!`c6U*HrvVKgFUdLW5E3hD0v06-uBK!Q#=r+RZ>8BQ3szxY6# z1)x6GAXr4mGgvHm02lxwc%UE;kMYirgw3#+U6;X;!l6)*Cm>{Jz{M6i`zI3CKxXiA zlpTO@-#0q${r}_yFm3R@i3}s-$M$_rc#I}eseA7rhrj^<06+`@hz+jdBjbWJ&K&6n zfB+x{a6rhR%z@WJIxriqum^br$6d>fma0LNpQRs;qAr}0$%!H3%03Z-J>b*gFuwH?Q(Oi50 z0RR{o=9W5kqr123V{gxeYpYr;F_<)fsI5ZEA%up8lK2P=aDaYCX0uH}DoT-hfGg!Y~4E zfB*miK>%(hs0Ob9crX9}0YLyciK+psz#EJJ00BV&6+&u&YVZtW0ss&Jun+}~!X^ty z5CT9QAylwn01!9;9Y8W<0ohPGDw*1?N>B~G-~~uu lMxHpQdaf$U0gLV+x&L~*r{j^K{^za#zyCka!OsZ5dB6v#t=Iqn diff --git a/samples/h264SampleFrames/frame-1465.h264 b/samples/h264SampleFrames/frame-1465.h264 index 47ece8ffa197e61015e9f7045563d793d8514fe9..f857cf46bdae9b2ceda8df2fb4592ad04ab0f55b 100644 GIT binary patch literal 1273 zcmV(dER2E2< zUx-%C#ux$zP8P%zUzoPIA7lVb0LKhig^_;`nOW@p-~b2#KnEEF-%*dMDuD{CJQ;qV zRjVor02w%je9S-@S3-x8IyyjPY*cpg+%N+hfTzH<*1)El1@ODT0KlRXII4rUkeh>{ zbh;O-17(>2hsnquIDr?*$G~ZLHB1xpNPpl1fB=Aaeh@`C{V&+LRfVk&!$klEs@Mep z!M{9~2l>5L47Xi7HG)PTHRIBN4tpEUk1!v$m zVY^ZaTs$oCVuszL$UGU}uAcvQP6Cn~JHA!K{m=jc06xqB3}srhI{}8$51pEO0h+`ii%ztPxccK3zK?U(oOe( z03a*C1T+B86sTVBhdbLz#Vj$xzyJ_7iHHCpv3I|)8VCxOiN>WqLl=9yz%V&aF*j*d z9FYpM-~b2(4BuB?{4E6wBW?&dJeA-kSsyj!n4#U|A_zi|V2mK*OD*8TC}8=BpjRh} z1sD}`a;A!48(4L@3&BiT6F;PIe-F(3-G@qx!jkmIo$?jYFp4hScTGTVxO_&)#u zKu87&iyiR6t|}G!AcW3zy8kjzSRI$SYv5=B$5uuLm^c#?;>!}*=;R!IfB=9Pb*zvu-C&La)T(1(nLr{D006-3y z08|0U8RKjM!pe#O00RJl%sf=>|KE}T0wjh27$8yA3y2y45O4%L0003&0B$Dm2Co2k zFaQ7nK>#_4yaB7g8;k$|0YLy2LT>SiNKCa^FjzZHQl z-}27Hq|g`H6jNeC><#$7ButN|5kx=l^f3GcN51cWzpf%(GRPz;qj8W+yz#_*0UJ|W zCZ65y119l}%5u2x^pe)KJBCkbz5r3>jgUA2K@*6C6{&5yNoW&akShTH>X&;v8SsEo z74Fs^pZIvLoPhey4*^ua>#+FjycXYI|Nr~XgQCoqq)7hn*b~ws{Kkpz_4GChjB9HD zS9f?vKro+|`G7#=*4yTPcUbo$mH>I?Syy>&4FUoN(PLiy$<3El(RSS%x4 literal 1060 zcmV+<1l#)n0003AFaQ7nL7KoCyakbef_?-sK`sCe1OY<@^GPzP2_z8wYr+2TzyLr9 z1OOOQ0g|>Mn4X?1B7xI@1(-$>E>k7PX*WCs9I=F!=$k##GRbS6tTrA4I3O7S2L!L3 zgd+XJaNR$&0)T)#M7F44b2!^63AWkebBlJ-H=F?gJFqpRKWQA$y5b*z5GB`vL|R2n?AuFkm8Kh@qi2r z6N0qG>LjJNJW1>q;LC9%CbI4jO^ytu#a0vm1OWg8m&sTJ0#*m`00;&Gswqsbhkc4+ zNni)U?5z+W7!8hk7}`z>YnR{H04fv!1PC(?0E8F-0hkipPVg`yLI?zzMNl*wL|kL5 zAPpP<0Du4hr6d3Z0-kFC0@&;mhP|1;_5gSUQ3)R62Ex?6zi=1;Du@AsraotgnyDGo z-~Qk!!sr2ZQVHduS|)jb7y!%%3e#j>xq*`h^!Nkl1|VaK0L`FV8ev+%$;#_4 ztO2XQ8;k$|0YLy2LTdnO@C;dh2Y^Td01>Dn6u=pp9M!v+H$lt|6fNci-**67LCY8H zKfiz;xwRL$kyTYw|Ns2!RZ-x>*r*VIkUyLQKn##rxd5PjkcEBw3vMO^qNk4qBKVPq zi?0DVfBx=L(w*DF`CZt5{m#6iZz0}b2mlBIh4wXwhIeU2<^}}U;;;r^Up?}e-kJ{1 zsK1&#fi}}m>{MspQi=EA9gRk|nr$g} z=a|%|D~|nHD{E5(EszMxV?+)BNQC1nir;OzNoW&G|KtkWbtFC41+079!U0G-e7!5U zH3cUiIdDMNTW*(Q_x`YWo3C?!{htL(B3hDYe(zu}swMjxYyXokAE2nlwpIUM-w5Rh z0%7150L`zE5Aw1UY=9xeB~&)?3$I7vF+)o=LmJ&^oK e!ObD3xex#D0Rr(rK@q>IcYm+e7~kMd@E*`*C$yjd diff --git a/samples/h264SampleFrames/frame-1466.h264 b/samples/h264SampleFrames/frame-1466.h264 index f486a79f7771e6e653b2ec1b1b412d56400de942..e5cf24ce24452853281981d0627621e2300e04bb 100644 GIT binary patch literal 1834 zcmV+_2i5oh0003AFaQ7nL7U(jyaj+xC;$)u1Ok8#3p8lavu4ejG-%ngU;n@dk-z{z zS<3(c0MI@R4McH&)#1B%9%NK^EUcmM$am;iGGVk1`bJ%13{{lEYq1s{j5(50M)sis0g@BPMM za`!L+ghr(eL;re#13GsHB*&vILxUAOBs)zI#MV*LOJ!s*1_5QKWW;<<(Re=;r?>L` zghK^61PuHF1bTyd{0&r#gks142fzT@HY9(dTJQmYDM=LWN@(eQDaP!dbH)4k_XG}w zM2ptO?8h_E2!(S4Ww-zUwg6G*1QNYnA4}q)X<|YnGT<3>E|b#5ZTouxvF~lo`|JXs z078r{bb6GKm9idy03Zedkc{?(uNj;;SO0GaEn7fg!`81KD5>&zKurt=C~=HDXo11- z00ICYab9g6i(b6)BH?;3cmNH+3BhV}U_n)~EHmy;EC2)n002NZHnPB~u#3zjz{(If z0RsSKmlayPu%`mhNALhby-h%a)QK-rB+-CJ6@aFk04+wqaaE>N;h+8L!b6Jv>hbgS&0A`mBtSMLFf~CLr)zf#!9SLfB+B!2r-ZhWNK5^VlUw!N~QY1L_h!# z9j#1&X~~5zfKVU+q~Jm$i0Z}j^Z&x{`oI{x03w#;!b@c*zVHA91vplMkw@oY;A=+a z?zm_O6qP)T<2WQ`*Y{&mRI2~~W=uwJ{g>yM~>+5i}ln8mT(yI38Mt-WD80{CBc~U+3$e8v@{fSAUE0u z>$HD~XHWvE@BzRS1LV-V2E|bDtz^t#tgs%mV)UK=OY!Uq5=RX9#&U&ElH2lH)ucZF z06-W3=pGIGrgp+KJ8(G^K~Io)K`U6%d=Uv%BX9ru;1cSs0Dy1^ zHY;y}MR%f4$)rbq02?^1Fi1k2c7be(SOx$N2A~KP4G|6d=Gbg#HT_@=UH~$dnN;I9(A5hBlk0Qd-icdbG=*!{htCJnU2z%_9*S`5m<(;kQ5 z5zE#_4z5%Pi8;k$|0YLy2 zLT`X-@CnnvkOYGW-~jrsw~!|*fBOPJ5`~NpGf*9;slO~ypesgI_?zS!3Ff7|B-sdkAL1A8(WAvB6CRa0RRlZFH5ljcI)52cN5k99$EN{ zIN5Uf;79_NaihYRtGaS?T{@~3qv6xQhiR_UYw9cx3*>DW9Tn}1z+BCkLIl~`LE~ZX z$^IVhle_{>2RfVk-rNG#;7K}&kNxw)uqKz`K_YPjf&pkM06+$4G`dg=#fg-wg!qIX z_1*WuFY-3<7+3qZg2G)Tx>tXH$Pf$M?MjrPjnC=fe7}-mhYJKk!6DO9#GmI{U4?Lp zQa1Pn*b%xQ3iG9A4i)+Y+Z)xV-sk|lr?eC)%zn{B2tBj&f)HO`vk01B%AzpWL5H3f z@Fu8?nJwcQ#}>6%k$?AY={Dqu2?Pi6Vi}Fh6QdLh!ZcmZgYcpQv`PXxFV+QEyGu!h YmwW$KBnuK67D9|-UG5KZ4tTf)5}e~HEC2ui literal 1467 zcmV;s1w{G)0003AFaQ7nL7Lziyaj+xKmb4l3TcKIX{MTCh8k&~|G)yA00IG@bN~SW za1sm~Mn*N8B6oW*99?jP02~4UWsm`<)-bKWIOqoEk>l_HDgXikfCmjq36bEV>{oVU z;20r-NV34QZaY)i0S5j72Nk0ANg!jYZ>Gw2>xf?`+!}fEWX_TY|)%2nGx+ zNv_ZcU@9`@fFa(ng_XmbWE)Pt4_-|KgjB(lkN;o@0Kfp>Ms9+M&9ljhNNh0&r}Fr* z5VU+y$Q}R!0ODsFE4m%I-fZ^%e*gLN-~!Oq6Taw*e*UNu6mbcQIvh>T8|Syh!4d;knMhL9!++Sv(sBz$=`p>Q$485v2+Z@>r819Gu) z^GF3oX1oLnEsZ+QgQP725HU{@V^_byxEvKZTY%|dj6j! zfKZ6St_Z@P1ONg80qDouVPF$W_<;ThWG~k&nlJ3{`{T?!{_-q8RM0RZ-rz2s%7{D<$f0099&DN;KlG3;64 zt5%<21vq-aO7aKkhScCN0PGlDh4EdG3)3MN0prRr9~9-_SYE9E-rNVkAmfuEavlue z{!2dKQjewaQ1yfvv(5kjKoq3_0RR965MNYm9~_cDZ%gyXOEArjOJEq2oYU3rfT#n2 zl6{yL!9}b4uLAYMjDC=1oE+xcL5R5KlJ?M?x~T=~tE8{d1tFSArfuJS0|7v8=Lfm{ z#FlAf|M{yLa3?VGhp1Bc7{>|1;sWC!3mSz=eIodwJhsw6{s1uNEt$u_6g=CON;dI? z#T7Kia>>*wAVi7)0st)f0)ub7wW>ltyd^+wys}i4;Tzrw1Owr0GPy#+9JEIMSPKr! zpF>2BfHBp)m=`Sa3Vp%mwF(!|7?D@r|ExCTht&m^8@qFMD=}GYm;T@gV+b;-NP^_k z#QwnCD%TEL5hX+ae&`JO0%v1%mEm9DU!s(Yk+F-3DgMyNHMqocCF7Kl&$^iP?=f(cwVB=9fEZ zj+7_|wm$;z2C>@Y5OdvDFhApG$#3M5q|gq8pR diff --git a/samples/h264SampleFrames/frame-1467.h264 b/samples/h264SampleFrames/frame-1467.h264 index 50712459d753d1a304c721d690a3ff3040ffc3fc..16846395d6c0877630c87779423859ce2f73e5d9 100644 GIT binary patch literal 1201 zcmV;i1Wx+^0003AFaQ7nL7D&>yakisc@jGT3tRyG^zePjd7H=iehtDfW(k2%Fc@wC z2mk^AAPgZ7r$)#7CJe9=>P;^01yMv1qBIRydWvlPyXNl zfsEo!B}W{>#rtk)p!5`0Y_kQHJ*}A3ux=j`G5uh0tVI_ z=@9@Cq_AlYaX5d&fNbCpOfx2l!MWrl048=|3J434A#^M{dw2)cXdDa_?mo$uargip z(BJ?dJONHXf~R~0_k(~ekEf*o2V}qijX}Um;>Ow%n2>$|1Y$)gSk08K%w7NifGvl8 zIx(eMc)(3x?*+g#0dl&QK-tI-;TIqP5DfqU0pJ~;Dj!c;xd{SdjZJ_Y02B`c^CD0t ze7)=f;2dDV*~2M=0--cp986O9F$93610YxgBs1s(1pv~h-?~Tx;7j)hV*ii<0ThlX z7$u5cDq$ad01*R#c)eMA?xKUBz$^eG|N7hj0svM34zK|6gzy`luX6xp01j&ao-cg? zKmi4C#ohshV5(LtgpY@WYi^Fp90Fph3;=00`uGL`-L{YKcmN0h5CN{jn+Jr?^&ay? z@d?o6K~Z|7qyG&SI}%?j|Nia<0bW=vfE!PLBKG?(vA?`PG6Xye0bNnu$)Kh(_Rm%V z`%n-L6zU!d7I3Tp3#>2z2oC^LvL?CTVDJhmfadcL7f*iR2pBM9!HOhHxn&r_Ua$tP z@jg%jiJ%MuLA20(HCw^KAOH|a009O*i~s=zPy#UGv$z-l2oZn)fd65z0Elio{Q%ff zKzP}y3)lfFnOsB?g92wDxF&cAv!{as5I_Tt@GXqlxRYEUd6_j2009D{LLdOuUod|! zgwWt>kSzij{}4#V1A&^gg&9oZzwZ!ncnkrY#q>l&w5!7p$PzOIX9EZU11SlD$FBgu zar-iK2s5;~0G!NND&+7*6bLbjqtfV)b!ncw*oRN74F`hdd1)qs7rB7ca>9Wur@f2E zuFe1VfI$Q})~JC+np+w}0f+DA2}&3Y5;o#|g^G?b00BV&ZYF>RuK;*3 z0003&06B@E0jt0pi~s-uK>!s(XaH*P3Ch5b1p^F}eFOpdLHk6ftO)>60w5Fz2*8+0 z8RZTrfoBB+OyCtGxMr9%MhVA^AkNfCS^T&%O)~)X0}K$j5`dsS2m=6V3!nhMM^=Lk zWcSz6Dawdq(qFYcEHr)>z#7`u+9q%R?clI9^<|HH>a-}mb>oly_2m*MXWk$Gu0ISy zGGnGaE<Ix_s7rCs9-H@xHt%U7yp^)Lw@@OFDBrF!;jyfVs5*mz(2N|*@)ejk~@3>ta0iG z_I^9`1^^uT>c^Y!`vNM@5Pr)*i$ap>FO+`!%f_my|Io=}j0wj+{X+qd{e@^%M2fH9 P|KK+VfjItuKLDb@dw}Zx literal 940 zcmV;d15^9}0003AFaQ7nL7M;?yakisNeP4jGvI4$cxwP+d41QQ2mmE09M-}P7UvLs zCuQ(rC^Q@%3c+wtVE_TOn?zF|ME(K-oCsF))NEbrB>Q{-MWE!@xGD(#tVA*tmjz=p>o1Li;qfYQP$2%=>00k{AfI~Y7p2N1?ldeZ;^L3{uNA^-qF zEC48(u3fQ&xS^{&9@YN_5+rKhec(;xJnT*vMg0xnLLmSGurL6`Z59Eth-$}h|NrrT z89)Pq`l|IlA}!AcU!MaEP`1}e!htg6`}|(&SO5qDKmZT{10p(HOPNymz%CFEVIVVz z35@Ut0KhPMi0&CchA(h>|0Tcy@DLSh_n_$Dk4dsT8ydg?00CVXPz&(1E$`k7P!JF` ziu~zNc$#)RctWIwBFC^iMq9yBu6!69FbjM(;G&o3VFB$RvEvH>1zJ$2j36DR*I#&t zfB-;HQiYKfB>-NX2?D0fR7rvY`0|fx5F9ShjMT-~hlu zNSjWB&KiUS9j=2&o#F@qK$HFeERH+{gdm;*5L%t!2nQZmNjKzVsfB7?5lBwH3yxL+ zqbAeGkhO8ud5fQrAOH|hJT!DHNEpWfO&7QZ0%m|gz$(VnqsLKDI02J@6LbIo0YLz6 zCcp--0C+F}00BV&If<|VtH2wK0003&02M-P0BZ0F%D|8X0}O&4ygLA`6djhED*`|i z0E`6z!Y~N?Nr&{pgoqM2aQ`!aEI5(O0>F40hSHDb>^aNZ7|abrL5IMU1p)A20|03W zRDcWg)if}g{`#L{oT&`>zkbquSb5YxfL_a9h|T}`cz6IQ`s46E!zgk4mLI?OUQuCB zIqx6*Df&Dil|41^vK95h0%?D)Q9>l+npI8$sst30g0cvaC0`gWlJ-Duv%K`)tx z4qE_g9RFxPv+>@m2ciH|?yPyc&+MCyvC*J5YbACD;h+D!TxwmH!5pnYxZ?0X`wF?L Os;~F{1mpSq`~r(SG?g|0 diff --git a/samples/h264SampleFrames/frame-1468.h264 b/samples/h264SampleFrames/frame-1468.h264 index 507e27e9712a3d998484278b5459c3df88f86107..3908e4b5bcd8d12e049224e79bce3ceabdad91cd 100644 GIT binary patch literal 1334 zcmV-612c36==%Zd?Efi*D(P z@zO)FM{F-U{PS? z5{!U3Y?GKd;}u?y3?2_2@Nt?wii%hgpCI%QKytsM!Sb5^zkesv48-8sRaNiZ1_(hN!@wR z0EBpPx47$xp9B^BlmG;Dx?TW403b7LU5Je;Mn>=mI38dnUeVfaSUs{-xP$CPfC=va1;Yn^0nNfD9u@!uKmZUJ zNB{^0Rlrg)^->T3GX3BHzyZbBf0MW**#Jb_WT`Vkv_*gcsiDNc2EbE9_WuX`004l< z0KiSS6(%7>)mZld9F6Y)06+u;0%B^PK?#TxI7R>dGtruB^*|5iU0W!d{6Jd03f~?=fdOkw8Cniv#ekMk>CIb z42Us+hC?-%9vXLv-omku#se#d2nQ~F0C+F}00BV& zIfES%SVFnll5N^be3V6;aux_L3pki)Q3ixs`6qP%> zZ};lwyTRk5U+)`;8o)5aR(Pz9+Zfh+=Y?QRFU2|$V*-PMLrzDJIG$&NEPKGHduYIp zIowowDhu+1$m7b5-A1v~E$HwLXV@U36yZ`o#XNXQlP1(QuOa3hm zLjMu~?FOCT3djMA09S@@!~vI6;T%CT^dJ)~KYtqZwLO*$y{HNRvBzKoAUPN>Aa_6H s9&#R)zja#Xra>5$f++CgA6TA=S+S`P-#>r+_#E)838Fkl&;0xYD>s%e=l}o! literal 1163 zcmV;61a$iV0003AFaQ7nL7N~Nyakbe1p~1lQWO$^0tf~T#031OL%1A z?!%5*cL=YN`M{tP1`x@C08_{a00;=cH|%qWmlnjI``(8D0n1=YAZDPq`$;yq08-!p z1OosCECjNJNf;DR@!`mp^Ans#@oo+}zYr`>fB+B#P*8wfX{!GRn2R9V2Z`@yAZv)C zEKf+?zjFvv9{2zO0H7EN7~`Vn?*pgp0vBq##sHuI2m_G?$N>T%2=Gx+kP$oqpd1Al z=}^%V#{teEjIu0)1MmT$6@D<#K|E5EK-5UuHKc}S1s~b~0DwC10e}ht$MkM)oMQO&{^AG&3P21vC`3p$ zB?5au3Sb1?0003&0B$D82Co2kFaQ7nK>#_4vH`2W8;k$|0YLy2LTrF)@EtHH0YF$w zfD-kdL~r~6N+}yv;2ze90)-C02yeydBi!N3{smwt0U!zjXc&L2IP8PtUi& zPS~6crF)hL^}m1smT79lKhFwYxbcC&7Wg%ZrK}2fv4Za zyzKNV^}zXNPHP_t;3jE0bG!ZajAcSrWXjdM`o@%ze}{lONdj2#Y(P3Z0h}5ChyxST z>%Ksl{#bxa(EIy*c|Dd4y`}u&1;=1GEGm4NOdKJsm{$3o% dSe}NsjB23xb$$Q*yd3bX38Fkl@gL8?GO%}a3{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIlcqH0RR9%6aWkrGHQS)0UYKI28bV8`iKAo1SX&z!o0VG zu6IqtyELY6_yDvJbs%a_7j(nNtJnfUw1WzG_j;jbAAOGoOc2lkJz6!WSRy^!R`UR; z00;n|zF+~*Dx6maMqaClCz;I8kYEB3b8cD-B2}>`-~J5101yWN0RjL35H|o(Gk|~! zcmU-Du>R`p3&*AuXz#s%PfF#2X`sMl}+1LK#00K}C zy7oJU!G4pljDP?@LC^r>dm>t^|2GkV0hixH+bBtq6`%eBY2jSn*85us1pomNfCdH% z&lPri&6XU0!IltNER)^}6jI&C|G0z#fNt#ysL;|b7rFoTkN^k-fWWTnG8hV0R0boB z|F{4+XaJHQuIbQ-K*+u=o#F?T0|8m;@Hh=$uk$l(y2oD^D4gi6oMi}s$C^4`A4}by)R*-QG z8t+ypv#zWFS$rf0WETZMNDvwrD={Ddu$*!gbhV=DFZaMoKn4J_XafZH!LJ+p`^07d z0st*hKn8eFoJon^a4|%qzBc(6#}rEo@BN`Du&kz_!c8d;{s0!XlZV=K>l9KRH}df{#XDcMk2Bt%2AS~q(4ys5fH#Y0pJS#M!@{87!w}^0!D||U$Kcd&1S+V zIecfBAmAPSK=RF@L<6mV00IfX?g*|Ey%%224?FWSFx^h}tND1e00IVv7Tif-2`cHJ zhyR1{8NuXiD6HN&KFm=tegI%FmCP9+E|UHks!)fo)x@002-ty#|6jMWZLq`jU-`U= zzG4`104{E(50HgFH-G>jDl2Fe8MO51p0?dUkknln&*UJdvj?<(HVjC96oC*-5Ims0 z6GYvUWa+TM1UYSgn25*!;=BL=fU7nD4K%V~8%ZQn|8?!Lzj1wQOT@qlh2Q`t1TH8e zGPsa)h8_S3k&KRqFhPCBi8t~x5m`)hD2ZB=4#WjF3;-RHgQ2(3!dtQUFu)M(0003& z0B$Cb2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM@Dng60bp2530n{gmDgg?&*Uo(0%|K7t&zc>4M2p7v^CDgyGMiw8yL3di76@fMd04fR!90AY- z9aVsspwnTkw~Pe-bNA#hHMNc({P+?AvdcaftB<{e1`7$_Q-2UjLd^(L>+k=>HX5`} zwuLYAUJ(gSf{FqSNkAL+q=%I6w*-UO1-~<`jliu)c-H?sD}gw^G)Y}z0*suSMk)rJ z{Fpiz&i`;NRODrT1wl<9u9eOOKvvgUv>fCbGxYDxp#=r^62>n%{hcSISUhoPKhM7Z M{r`Ud&j`Rg(9H2cApigX literal 1285 zcmV+g1^W5`0003AFaQ7nL7PAtyaj>3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxL?*bVTf`9;>X1lNe$Q{Z7P#W+z04sn9P#PJ;z`G@sGCoQ$00amC z0Ru1VDzJeo&I)ciB3o;`1&+A`_vP(@${205HO( zK~mLvh*N2YAbjwC01P4pz}ngUG4o53$N+hXAk=&oY;t-~Fj;@Ec)&!Wtb>Zn_L$A! z_#FdntdtG~O9{e}v;V<@FZg1$=J8Ay)lhJ^9EUHOXu!-!%^4Z68|UZW|1d|J2(&30 zf;;a9JobX(R$Wf(1hrMAtQD3V5Gw3+2A~n6DpM|ofB6HtM#Xwp_xs=g&S5l{FJ7@k zANO!T1R2RkayOaQ{y><+ygVHd<`xP%U@Bycj6|jY9tl|NhclF9scY~97~fygo%^?p z0Z;%byY2uWqj`g&@i%?{_x$kq0|Gp=LNg;L$-mK{4R00wh7hn4V!Qwl0O$<(k`OLW zAnzHN0JCJ_)4_=oZG-1^!D5~Kbpb^50I>iyg6~9*2ZSWJqy$YqF^vgW00;#=An2kH z#ukfhviLC+1TerP3I~oe=3pRakk$n0HoMY9cwhh^3KZ}xRJ|=XlesB+zq}d16a}A0 zq9kmDTk_j757VxO8 zLfRpOh8g|>0~jbDp(^mMCST@35|7IPq-rDOKo=p)?-&5Wz-@pUDWc6a1gUC8$^g9p z0RaY)00zc3y5L|?XFfqu2YWSy#MxK8N06+}dR&G+@ z3++e+R750e|Iknkq+L<{XcL~Igh3rNa1j>J^Hnhz3>zRdw}LmIV*=SW%zfxE@81XF z1%dobDPo1P+3+wJ!X4;1e<<-l`36+a7B8(p5gr&-$<`s)Tl`^-AqM0fG`(1!$HUWC(BG1xi1KvHT&ybKY7S0r@FFFH_2pVbohA%^E*r3}*WOjH(KDxEmA z35_tp{v!!e3Qonf;QI&xFa|h6gems$*;Ja(+yDVU1r(cUDb+-J^)+7LW%7fkvmw9) zOe6pM+aLfC04Kn}bHaw56&DZ_U$|flP68VSs zK;Ym{GfEl!G-v=<0096+L^uJ03pJlDs4)H-C;(cmfZ#M+v}w&o9E<}ab5BqSentQ^ zKXqW`i~t}_BX!7q-~<+dHn&ZKo~{pI`>k71ix?lf*cn0wc&_?rRfO6BaAT)5#*BKVZWIM4#eRh z#Se zdlKF3QN0jT{tE?pi2!z|j07DBBgbMD+(EHw91u?wWw#Xn@O%IOfRGFl$9ynniiN(2 zA~f>X`I3Ub?7hqU4*)3Yz`)#+jHopjBWr9&=FX!a})rI53V}EumylE0bp?Lfq*6cMq7Xpyj}6y zM?jzt;S(g+r}zNTS6krr60964&wxQhvQ8KlE zjqYhbJQS6E5|7vhjR{whAwnRR|DE7y+t{^4wXtvhzgdh^frdHdbMv~7@ArX{Rf={v z)YqM_0%{N&0>Bsrd7#DvgLsPF>-0+i7yt+l7yvZ7PzZ=B=2Hql|92u3ovp56Coj{i z@X@9}vkZXd=3{91h@CSah>(yvtQv4j`D`PRP7{kF*@uzdugWL3fUfB(PV{zf-OVEW9EOk;@uJUA22 IK7Ik`fP)wa&;S4c literal 1096 zcmV-O1h@MD0003AFaQ7nL7QM2yakbe2!;3%#srQA838|p+<)!>PQU;_Fb5RwZcO+5 zLM-+e-2V&!1OR|Q0YxwwD`FXnDWak%9Jl~j!Z?v|nNB-Px!@3T#u8iNEcZmi1+Dn8 zV}Q;G20#Y{ubl*fFWfH;%Rnd?2Z)x{3{GboWg#_<<8fPh^U@pw0CF%jq(5mK(7NaU z03>?B5-v-DAnOiZ=0z_6062{uZO-0VNqxYqTHFNHi-DgRzMm!00961 z0|S(h01yg!jQ|T{uud9vX8+g$;1NV5Yls~SQuh78FaTCK1__w?o#JZbXH$Rs*rf}g z1=(mLwuNS!%mBa!U@%sDB>mh?7(cJTA3zX+k0=8+fm~^YivuSx01yQ&00sbH1c_|? z)d%(h*aoivcrX9}0YLyciM9c&z#EJJ z00BV&6+&%*YVZ>40)QHfXarBmnII|Q6Up|eAdMHDy1=jnfGq)FaO|eQ5}mR#<^c*W z`0XL68h{r;Uz>{UUW#U@czuWbg#W)yY?@E4msxPku3%k1% zYHQBRz?y^xz_11ZTowlg@fE)MYybs706>7i0j1J_Ef80fO++-I`~4~AaJspKob=b7 z#i-Yx6tInZG&gd|KV?x7I%Yu;As||~95_alNq+$ygTB#itMkqO@O;29Y?ECcucHW4 zR#LTi9y}76U@0AY-xS;u5J*Ch1g%3yDK!ZtzrleyflvztkAuJxsc&>#Kb^WMQ!GmF ze+DP6aozYmmJNw9$Q}CM1$fbxK0<%6H7mms5`5AiicYYK9R%xsUm1|xcMbH$Oy|Iw zo=!dMPyx^4yku|dfLYE#mQKbPU;pXRzxKaXXsiaH1$Zx3R-5x>zx2lF!R)5>+{zT5 O-j>dLFejdT`~%PLA;P8r diff --git a/samples/h264SampleFrames/frame-1471.h264 b/samples/h264SampleFrames/frame-1471.h264 index 504edabab17d9a330f32e3e0a55802d235eb9cba..0980853e3bed6e6581c76ad1a51929d5e0b4b3ea 100644 GIT binary patch literal 1878 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 U{(nCLN6+W;`TYKWKc9dj7|h6;ApigX diff --git a/samples/h264SampleFrames/frame-1472.h264 b/samples/h264SampleFrames/frame-1472.h264 index b279ea02ab31019db2338d66b512be6106ff3b77..b3623b7914bafb6acf306d7c5d08a5940c1e78d6 100644 GIT binary patch literal 1020 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 V;6^<8{QiGGpU>y>`TYC=Xu!6n){FoE literal 1460 zcmV;l1xxw>0003AFaQ7nL7U(jyag{ogCs{&R-y=DLwErC&5)wH8306j05+rC0cdDF zYqjXUFpdsV&}c{4E`yD!FXAjJK&Zih0EPNIOxBxOBGy!i9K}!lni+~F=0Cu1bG#4jqY)*Q;>?Wltf;z8OLN{P8t=fap!3A&g zU3yEt2N(e8Pp}3Hq>*gYd9+DOeh1?WqQ4x1(n^jQg}ga@(?$kjMrhM`H;c=^{$U&( zN^>g+cg+m!pcGuQ+Mp?V4cJ=3@)RJdr2ODE1W2BxWrTnKoEeL2X}`bU05Xt@DwA#U zgg@@$00961WJIQdYdP0iE;ej7j3b0-!Y>PucGR$q01pw6XpTj5ISO9@%mmRnqEY15 z>glb?fB=9aUV~{Tz_cE`@GuhMD3$AAi8Dhf1XRWx3R9eU{?K7_vzUy!NhjC|uLNQY zUI2V>ot&(0s$T}dB9Iac2#Od$6b87!98pJ`m<*^0Oy(c^!T^illLWhI$Y%Agn-~3~ z0y=O(=YciYr4}vB3W^s&ORFcQrj_5k00h(kC=UvM7MePAY7!N6@K23I{A@{$ssHu> z03Z-RaVBI;R2|(G(VmO|Gyq{N9rvkJ-vo(4BZ5u~EPe5G0m~f@aj-+!63!u1C46!76^@0mVQA0ZYOTn|0w&{jm`lu(2I~|7m># zu*wL57$6-P@Ra~I-dMDJjT*Pc*zg#(HBIHoeZ=^5gahCJfCB*-Hn)jYjSKv_UJzjg zEh7;uOnu?N0nMOjlEc$97QxvYud&$Fc!s^{TKmR81TeY5EL5;wvSC{$nW78;1PQuk z002O|02quJ_oeV&AP8ZANE8noXU_r%wk1Mw^*6Sg;eY{(Sb34Y<*mBcE7SLkFccbB zyDBD_xi7hon>~O590{T*X51#xaHDv503Zkzr4S-UXVE&MK`+gpY3m4PASi<%tL)ki z+F*VJ2;zVnXG(#%zh)8@rSPC>5Q5JEFg53&KA?pQsDa03ulc8yM2- zgANs~u!%#d8Ho835Bq=t1}I{pB(ouchTycg9BvFsLcw3I^d#+a^gnpO06-7}AYfrp zPQ3n{PemE10XIMZ00BV&ZYKB!uK;*30003&06B@i0jt0mqznLdFvtKz7s#e;lk+7m zUt<8=J=ZJ@fM^^tHYC6i{`e2|0j1nYkB@!;g8YgGcLX*jBRmhjH{a$5z%G!MMc?#K z{J(vB)}vm@Iwgsp{tp8%8VATA1`fyztO|$T@5a6ooXbs3eWsq@K)r6?ZQoAqL-6~o zNq#hL@IU^4f&}+R!_~A|KHN46A0?!-<^SFRi3&!zx!F75CcaTzwJ-t;5*~W<=wXBz zE1|D#^bCtEfY|;h2~J00BV& z6+&--YVab!%m#r0fCLk|SRe0EAY`fcgcsKM<#T{)-bi?4eBr;47*G9HT8QGy0C*CR zfgVDn9z*&EhS}t`2mcv^zT0e&CuV$Vqy8`=!hUDWYvjptAZ742|NsC0|NaDH&!5ld O^ZES#e?Onkz!r??J(&^! diff --git a/samples/h264SampleFrames/frame-1475.h264 b/samples/h264SampleFrames/frame-1475.h264 index f5bcdf240b512f02c4474ee7e52b808f4cf91224..ba350045edc38c221a392c3d77c263c47c4af2cc 100644 GIT binary patch literal 1287 zcmV+i1^D^^0003AFaQ7nL7M;?yahKwV%OC4M+oqNht?nr>x=*v&Vc%tyhtMz-~pR| z%J^n{0097S6gLAKY*Zw#Wv%W}yet3(FaQt;iRb_b0fvkiKtfXMcrc1I(Z$KVrrtO^ z+DUv6!*j4whJ6Vi9-5Iu6UP7F4uFUHdN_so<^h5LKpDWq3a44J3|DpK0V!90Wqxm;g7xcm4$o z8vY(ioqGTC0RnvJ#TSg200;)`umS)K3F#UVu_q$|J8Mf&J-HGAfs3mSSil%;qjX&R zz#-@^@`f5N@|Pl^FadT#;YHSyBFmj6Wac>Tl^#pXh#A!cD5*VV0wYC4h*26D+W;~` zip`W$e&_%W*?2p8yM- zfE)weC__I523r$Kc#xPqP3!;G@4Ns30KNf<0IfMudpJKzYA$f6i~s}&B4Pk?=U(q% zG!TDDXy}wjYu&&IV60hRH@!r8PbYu?5CAb$iC2||G+jUL2vF9m0^^Y9O_!J+y&?!s z;t1v(!W^K(IDq>@4zI?A5Hfc}j6UGl7g}pw{J4dq01J_mhZ1&G=T$GBI%Nq!0l?C`STL!{l+BHQ`~WSW zDC@!GQ6guu`Vmj^6;1Ee{eMpH{)Qf317I3}%m$2t2fzl%63T}sD|lB zrq5aGxtM)&_##89MH5+tKY$Jy*;+y*bj)9l`@Q@1i4s^E{^@~zgFUbanly%&vZAeL z1HIssa~ZwGlH|OOXcLR#Mt&yH1708ogMt7B{sc=mNG-q)2L8Ah1Z~$e#p}+g;T*px zYY-ZV2sFpR99=?|^sszTLl)N9v9T3@%_Z0&MUX@psL8tDR-Sb5j0vUv)yIS?uq&__ z_ejUX{bqr7eJC$rdt&f5RwN6{3RtI*^$yag{oVx&h>(r}D1YAI|7IYa@N|F0XD@Q7c53}lCF z)!+fR00;mBm~NzLPVt0$|1=?94i_8X7YqOpAO|@?cPYjuU#4!LslWo*5snKMD@xLC zco6S6Qd=%%7YlHiwJccRGlBt-07B~>4FtVWylr3*z)4ZMA&G3Korxuz%)>qB3*o>( zDzIvt%_Ktx%L)7dpy~;w!5|C)j{Q~;Ab0=*0OtkZ063yzN*tp#wYs zFoO8psacjXYrfOiRYH3jWVo}1buTlApQC^PfiM6F6Lwbs3&h};H4J8eGrFkp?X>D z1^|i*H+@NSuq;^p{0DF&4mf}Txd3)*hSZK6zyZAgFbo2W=-h{su|oIzfCvN((2@<6 zN4lRCkiY)`Cg=bF0YLz6CV&R70C+F}00BV&IfbhC1K9U-r*E=fO$rm|d`s;1Od^k|td;|L;7tPg<4&+ZB+&Km{RFT61sr zfGLblx}~KWl~O>QUntMS&JN|*f&ezb62^cG6H5TkuI+pC;vt;BC~FWJi41&0eu(E* z4=6@ux+G6cS{LXA7@2J9-SMY}U`;RXt~@c}BElpd(f0v@l44=^JG|iV5D9Md;5PRE zG$Y6g02E9+89i8U|G2&Y0s&M2xj^s$N(ZIjA@N4)cYk5qlmGDoSwI+qWu1-_{st|| qZJDxjj^ui1f(CI58eRS1bHcGu0003&02M-L0BZ0eiSa%sfHJ67@|0u% diff --git a/samples/h264SampleFrames/frame-1476.h264 b/samples/h264SampleFrames/frame-1476.h264 index 9ebc9cd34e320cd78b215bb8be4590a2d537129f..6d13d7a84e2304e9f9b1d4dc4f404d3a3aa74a82 100644 GIT binary patch literal 6769 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 Qt1AEbL;geHzazl-4`*G;K>z>% literal 1810 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 JX#i^Q2ICJFvxNWv diff --git a/samples/h264SampleFrames/frame-1478.h264 b/samples/h264SampleFrames/frame-1478.h264 index 8466c3df40184bff578c83f7a1658df699be9b14..0fe23968b060f33f2ea050eb8b6ee6292fc85232 100644 GIT binary patch literal 1422 zcmV;91#$WS0003AFaQ7nL7G4syagX9Sb4gDSRUU5k>=_FV0okyUw%DtbtQb9*kC{_ zn~qrDEP1+sSRU^l0stc)pb)yg-(>9o91Nxa7-J!u_Fp@z4-E4*0EPj|9iT$%ai;7u*l*s+}uM{w058X5DW#T zSOKE@B3=P;C>D49$T(4lYLUg*?$_`5x0&qOn-72pJsJ?JDgQu*O37G%?oa?=1v@xK zgyn%D1^=~YigSPffJgx2hQXKLzS}_Mra}SXivN4TBzd}kSRQEv*WZs^2i&usuu8g- zKJpGmg8zu+13bY1$ELl;#4RTP28nedUo>#O;Bs=#dciEg(FFSxD+Prn01faCui$Vf zJdPg33C5pm*Z-IZ8|Ok6Q~>S+9u)joHbBk8K{V|L}eS06I1R!=NW!5WX8M z>9ih7mM+35tdthfz)1ajdW?fiat0mD=(9iw^#L50NE+GAeMq<945|R2EQ}$o6K&9e zB5xWD0`y%70MNd4dnm1*Y83Fa1^}Po02C6A-oG*$i!hVC6wE&W2n-j}duy?D+2J;6 z{tv(gQ8ykXve!j$kk&Cvh2c1>RH3Ge+MpBwPy>gN|J*dl!p1iv|L*}%0O|<55>m>Q zPY;b_h5;l1Y-~gtfbzHJ-Y5VQfCD_R20O-qcgATr;06FGp}%03w7@9&bHD@M_jrZk z(L67nS3!rs00;nx61REd19_}iluPsf+yDk3yYeX)vplsBYxTZl$Z-`MuB*~NSE`@? z6BtDX&@VGXXHp*!ep(O+FBt;`Kq$~k0WxAT5>gu&Gxy2{a3JtYhESUAKxw?1u1X3z z3m?>#_s0QVV=yq$6YG-zM8GKcUTFjpDYjnShzt`pncyq{;?2egx!MP%WTcEg69xbb ziL3>OU3W^PPW@oP3e7wuu=-3pD09OISD3UGMBccf|NhVb3uQ@1!U2`Qg0gh9oZ?}0U5@R308F8QT*L{7 zbE}Ln5kAiXUj)S95XiB+Gr4T8WX-Pt06;vzLV&M07d1ipe?jo19(ceQRr>(v^@@SW z-XH({Kl1<`U>|^uJ7shlIGB(C01!oo6%T@66954KKyb2Q-JB9~R+Tnb zF!N6}_oQ?*5CR;40003&0B$Cb2Co2kFaQ7nK>#_4qyekIIxs&0pu;o<02UR8Oqp01 zu-sq$V#EQ+4g$p(E(VT9FrE9i$4>M_$^u3~R#d(L-;|(5`-8tXddsK)l;ia-hkv)g zPA`v?Vh9BV1V{imnM_>jN4Bvlnzu*#cn!tpKREMZ3oi!%;Z@Y1hzw!?VBMssAG*W7 z(C3G<6vR{D*YC2fCKnE_$AzpGwR4G+{~o~6Hi=0YYYhJPg{Kld!QcCU)YP9&+5a76 z;r=>N6!Pk~wkXMv*=7I&0h<^OZ>NReO)r>GkgIYJ3q$zfsconJ1rYHB8X^TP^TIQF z6DITbg5-SA$U7JOz=zLK<0BuJg7ebzQvdq;FtIp-L_v3s#hCBp-MydwAi2=606{y7 z@wpr5fe`>6i+5X`Q5|&65i|V&Sk>4b;RBl&1Q)!W zVfdf0muq_8kpCdp8eT^{FW^q%2L^xNb?@`7l@ cNgv<(xzV^6^Y9h00003&02M-M0BZ0C;}TMS^#A|> literal 1124 zcmV-q1e^N+0003AFaQ7nL7HG1yakbe1p~1lQWO+`0uTrjh#zAqJQw@IG!*~>WJVjX zjKz|+F@6AGI0+(lyCy|n1Rz{MX>F_}Ah3p^$^; z#UizhZIb!Gpc4iV$$T$1OrGkLyifXwh5gw8@N;PfKUJg09{Xz1RDSW0N<}Em;{~x&*$|V) zi~`%jX(aj|fF1=-iYzpaG$QSo7%6f9911Wg#gOHF!Tpn8c>n?cI9*$xz@?18V8j3| z0SCYo1OiNf>QWK)mLTU6M}-d-#s$X=$#(D#3TG7^PHBR?Q3CNBIO8Ne{XYSXf`-S z=Ms((B7hLn2pST&O=UWLAN+ht--He!r$vwcy2OLE`-OCgd=iNdgu##_5E&Wp3;+ZI zT|hBH&BVZfwf(eM3|cU7E3E7z*9W71^#KAMR4{=dWm_O7Y2r8zr@@p-vf~Nh7@{nz zL<^c72&cF%p#R(e0DvjLVG5?0Dt*C?;M6Ms^Z#%Va2%%vh{(?s)H@;(V($hq#)47c z$H^O`Td{Nh002Nt9Zm+!ZL8%3#UfGUbQ(PvJUoD~zG5PU>d9t+10NW`)C|_x6h0=z z*hRX~sI3Ee==GAz`;FiL2n2%BU^u9XMbCR>d{_6#1{44U0g}<6>CyNcpoE2Ff7$>5 zfF0ll0AL6?n^P2GR|d!TA^?Xt0C159&V`Qwy?6@X1l<4t0YLz6CYT1V0C+F}00BV& zIfM!ogNR zuozGS#;w*L@#HO{W6=Za_>N=wdtjXs_^;z1=e_Z&J2m|9uYowed}}73t#|=1}20Jx0;zr4~IS1 ztTey?Z~_li!BZ9Dqjs{r+a`DZl{;=MbVAEuEx6 zM%z=vBp9#;?I_M;gCh-e!vFw43;+ZL002OI0?C{R1C{_%2Rz?5upa}ZM0^02Ck-7s zcm4I-F#S1BQr}DBqNZhx<<4;C04>Hh5G2aexKDd)29&E(z`XmVf|2A?|<*Cva;O|J+6d48FP+ zxd)RvTmRmrp#PS@c22sTCF*pT@V0YAhSKrW zmG}3FumEj$03$~ofdST<8A0BZ9woL#5=z_uc7@LkvCt#QDG&YtNL9GPnmwMVQAS-$ zf&(Do$ZU||)0H9`R)2T^0s!uSz*SNST`Hc%*PeIy00IF#0U?Y8Dpt{@OO8*d07pZR z0c28W1)JUPgZLaCsJ=_kP8RUVe6RpXG8luuGp3aQ`0U^);1PNeO&H|yE z8-6nLKzsljGZNyEW7o(Szt)Ip$Xw=fk>S{YrU+qx1?n9Mf6RMsI|t>U2zCGf0YLz6 zCYT1V0C+F}00BV&If6pcVP7PbqM3Hb@ahLC1Ur(JvopUSKCZ#S#Es>_3!4piHKnK#T%E$skyv_r2o7 zunIiaULYrlhjJ^dxBlqU)d&6Vf5V;dHP!PFct{i;v)auY>3kGf*_UL0SB)*)NDK$(TF(Ly>4UIjC{o{X8!MY!3i*6cz-EfyR%V`p|A-M{#rzo|t)Z3gi|^%Pr=WnnO5S%gX`b{ z{Yehh35C7*0Poj;3gcK|Q!%&@m(L6M6N~3U6S#n;mH=aeoF(!89 xAy6L48M{BLC6okvs1)|JI``EP`XOY44tPcc^ZED+=l}o#K>!s(X@F|*2IGPt0xSRk literal 1096 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 S6$k(T0YLy2LTZ3&@CM_rP1)E0 literal 1473 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 NK>!s(YXEBS2IC&y%60$% literal 846 zcmV-U1F`%70003AFaQ7nL7Lziyak6RgsK2Ip8`pOPzYIWLFftq61XWX;{>(OHiN&W z+MpI@4~@V92A}}|pv0+Hb;ymjx%?x59smIVASfV3J(1Lc$vA}?)m|E$00aq!Qc?n9 z)=#$G5+nElfElC6Ve(G{K)oi}z?o1nmHq($hyu}-A|qS~bG1W{00s|%P1yxWfS3l8%o6|jWs%yh@8C}_@%Tg$1fT(6U;sf8gW%i{j4Lg|hInAB z0VaN`@SrL+(*jbc0vJOc8mb2t0Z@5&En%$rx<=*gSgUi)IAvWg3zyIh400ICt@ecTxSI@Y=2vOXAYEI@G-Jf~W08I;UZ z)SgNI08P*U00BV&ZYH<}uK;*30003&06B@S0jt1npgaJ80RRVKK`BR|1@hS2kzaZZ z#fljV=GgK8+TTJe&x0fzFpxX};B)|flla8W=I|q0F9>ger(WR~>f(*B{tj3MmDgpox1K{E(W5Hxd_!qfX6Mo-)Tn{<{+f!b&*gJI90iw`f{xDi|MgLHu8}|A9wcb+2*)`yWDz0=V0+5}pU+NtU`$>^ z548hPl-eK-2790O|HqC6l2~itl1uG~?i+9b==EyiW=CREf%PHifA(?0WCu(gA2@0N z+;A}{^Ry(UrM+|_Q-B4QUi#nkgM$XtoT2aKK=LfJcYpuQKzIA>(m(yYY#<3>e{;gT Y{0XP?`S=Eg0003&02M-OfNJmt<11oqhyVZp diff --git a/samples/h264SampleFrames/frame-1483.h264 b/samples/h264SampleFrames/frame-1483.h264 index e0273b15076d91fdadf98dee77ae6ee9bdb76707..6ff5ca1e7f03c4bd027da5ac1c06304874bb92f9 100644 GIT binary patch literal 1267 zcmVYGRo;U%(6omc<&c2LRTgfmeXVq7ecQ1nC2w+Jl zIRs-MLM1tgQg%0n3kHj5EVum#2-Q6_>(GV;C)zj}BR)LoxbR{11dM2aWr{AP6iOBxL6L$+Lt~W(OeP0Hy!}17Ls^^qpWAI0W$x z5^CrK5rS&LO&j9G+*4pDm-WQ4TNnTc2$0|aARGpQNAwj6)SU1Ug$yp{n_&|nq`n~l z0Ts=o;0OQ&1Z7GAh=AXEHw9&3in>4mI536@?ULVId#;G6?*kPlS?NCDFs1V{6(9qF z0HXR$a?h8%3?<;@&<~~*7D_2ZV{ry#sIv(>fGL=M00aXE^uJ#0NQty|?O(z80A(9+ zk*}P}Y=(k)296hm;abT-Cy(nd00BS;2bV|W1U({wlbe+I1wa7m3d|H^3z=7hLR!#p z0W1I)92El43Zwn^iU0usCjbEeB254gN6!ILK@N-@05AYiCed)WG|&(xWJmxK_qE{; zfjW*K;tb$thu{DR1B@Ei{E&eztQ$hCW{JQ67=!P~sBX>k6iA2dzS%MlBcA}7`#00hX!M?;t( zzT-rj3;`t+0yR2VOx%n5*(fFTfq{(87F_UER)|dq_%jYk&r#)F=>{AB_J9B&1^}Y5 zGj2+x9f}9Lc^L?;%ycN8m3U#p3AVCp-~0c5wffDAiQ;2ckys0~I;EC1^W3U}*@%xmEP#sChm2jDwIaK8aT zG=(4l06|V1=}-T^2*3b9C=LrU4ERJ{`I?p5U}!i39e@A;0YLz6Cb$N#0C+F}00BV& zIfSSLCA zZXi8mUP!~mf9m)=2K$QWaB)9s>Ko`Sg%?ESM|=FhF=Jvr_GxAJ-Va1JZe1bbd)Nuj zu~6W|0BxxerVM170BaqezYYR)O%YMHlG=WOO}n(wpYLrMG?6HY23z#-o?q>(P(g+T z%xPhbeJg$EYXAa|IwxSw&^)~3P3^>Q04z$~c0NDdf-sdjSdt_E{dt4`{5%l^Kr~=> z96pPL2fhJd#?bz_CbRDTNbvyO7NZdz&)shV zleh7Q9s`|KFaOnZ0BcNwLV$c{=VMd)h`<=yzP60Po--S#VxPBoqd&a$pP)SlKi}H- df&B2V&%m00Kc9enpa1{?K>!s(Yk+F-2IFJ?8W8{h literal 1043 zcmV+u1nm0&0003AFaQ7nL7M;?yakbe1p~1lQWO+`0uUH4523VBl8-EkrKTE4RN`2?9f>k3r;` z_XmI%(hzy_}XcrX9}0YLyciLe2yz(yDF5CD3>Ljk~0OMnB7 zB}o2T5ex7L%jgfczgb;y<;g1%W1jv4uwf_3voTaHx93LHOY*z~5FP|T6wgx*3?M%v zLD$la%KUV%j{-IT0y{ud05E%(;2?nTJ^-xF$fg3p|L!oQf^&vx;EiaRCLVMDFN44z z`Z}S(#Qm*Lf*7Ld6O|nAfM~^wi2K>3m)~wFEC`kPwa*jYz)pRNh!}tdNXvBs7;Enzx1YM6F6IHx$!&yJiu}1%CYZ?RG#{2oN!2Wnw=ip60pU=QPPyhe{ NK>!s(YyfKT2IF?_z&ii{ diff --git a/samples/h264SampleFrames/frame-1484.h264 b/samples/h264SampleFrames/frame-1484.h264 index 7900fbd45bd0539f870a65c1753bc4a402e2a416..74502b648c21a57b92e2b9045cd3a51ba75c98b7 100644 GIT binary patch literal 1507 zcmV<91swVS0003AFaQ7nL7M;?yaj@hh!it`1A+>iLbk3+(j5Qx6T|cXfJybw%jUSq zn86+y0wDVlv+jojI6)^Osb2p%%?HYTpfK}_2fPz;^eDuGBv?K^aJ8!tu_t0Pf!|Y)eSvtWUO+R=K zHP8>MjA-a6juHsh_+r{S|JT19-4GyOp-Q~|^8f%q`~U?f`{1fCjG-$Q=@c$T+uZJOEs<03kv7gz(7Eed&BuRLrrFmQ}CXV=CMjrT}*q zOm=Pj_rHV-QWO9L0@ZVP8nF-m+#qG4fo1tiu0bM2aeu=iyaWJ-kPk4!zPVkAwt4@! zzyOp3?Y+)G*e|knk&plg2s%IkM*c)GU%kRGATm+7J+g$E5n2D>Cl}}@3!qIB2eJMD zuml5v=&Bb00Tal;0E1x~y40yjbB$X(0099|08mV}zCsQ%QPU0Bi1Y#u0kcSamn{WR zgyEPmPXIv2v>xygYGGb%0|QGbxEtUY0HWqhGJEMsyId^+r09e6y)OINfC2=V319%} zmQ6)ZLC?-YP-%{W2 z002NW&_22*m1JnRUI2^gVMwK=cpRoV|3rkQn<}si1JOBXzfEY6grD4*!6zbRK!k`_K zbujq|Q}cKL0s^A8fl-@JPKxU-+zAau(VYIm3i~j7N8{q6KyQU0L=yxLC@)0PH)z>9 zYzYTb_5NZbAOD-600;`P5CAnSm<7@Z5c}PEwm0rCt!sFg0WiD(1i|Zx2+Xb|9Ocgk zzyUHbkcSdmTNja5pOK|sogl>rtuH|mh_vNJ#{-PMgqr2nCTCQgs*Gan)=12a|O{$U2} z)WCb@(+aLTU*83+dfnT*{Vos^BsM4N5f<_V|I_}hf#X~Q3cdt9E{wgjOeX?qedEg@UKlF;(|^Gn#+|) z5%IVD<4_2QSUlr-!5I=@CI=U$MK<^V#8&##()wm-6Fq%X!hQtRK0(!aKlEZ-h@N^e zSC|m#rcV;PKmCxy3{_pgfB)Y_{}jF?;MM!{4#6LQ|JDYSJ_k_# zMo$HA;=l^;74Z=Rp8C!&t?Tjps^^!s( JYyfKT2IDJUh&%uQ literal 1377 zcmV-n1)ll<0003AFaQ7nL7N~Nyaj>$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIxr{s|A^?akBraluGO@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAj1@BwS4o4E>(9PXMhX< zR-ip~HppG$Lq_-h@TfW9c!@}kj4a%pX%ZPYU_i|VgpbP6Vqh|VL16!-{6;tw#z1>d zMv(HN1H`}pUQCgN_k*CPNC8>ll+8v<(K*eE1OmN|EGRY(T zpfG+{D1{>Nrj4@29K5xus)VsKPZNNu?R6)C zh`nP_+?cdR|NRfh065^_BBmvM86W`$kG78f-xNGCAPq<}{HSZ~_>dB>J0V4V(WTZ0c%>3lKX?FG$O+Ok>ZXA%iOSz?!a}7u zIW|}p$coiI09gP4fDm9@;7Z#XIo#kkC1}G!3IGBC-i%@Z9RSh@yWdPiPDQYd*2#PT z0RRxiN~Z!y(~5IiC#GW-{A>HX+i#Ekz}%o#__gP}{+9E>05HjJL;%>A6gkkxVXzOn z00bZ^8k3{*Ywxa$z5Wm0*|s<8Rd-PQ00aQSs5=Xh5BYoy24ZZRW&i+ycmN0qfC59Z z#gBi0AmFG0IoP_7vjxJcu}t~^CIkf!r%}7qAqhCq)3`7M#u=y_Bn-~f-EsL<4~6sr zH$VUY0YLz6CddY_0C+F}00BV&If=3XtHIg>fC%6a03ZbfxBy%_in%K>Re%CF`upBV zxFZRITM^e#60`=ez?f~4co6^T!KGC{3$ zqwF7ynLZSl8~6eiufI08rpbkJ!`tAv@8(7~bwBn6TowT|)YH+L@23E#$z+~HyWjl_ z(fe=FFvI>z;S)_af6*|U38nmpu>=$p2COVc1&M@z>lPCv;gn*x=S&Tva5fnDSd+gz z9A2?!zTX5drRvY*U*+gm!TSIW=1uQC42-}DP{6DAhVugWGiq@@ub=;*ExQBn{=_jY z9~Y5V5C8w<@UMY2_Cdf5#EYtZ=eytrNgr%rd7XrxgVmP zFMMF%VgB>>^)o&(8g^Uw>~I`{;m?Q_LtQf>!Ar0p0bSz0G9W4Mtpa^-kN5Pg&uqkL j1{lwI@BIP(cvt7(O+TN{z!Dq)00BV&6+&!)YVZc*T1#sb diff --git a/samples/h264SampleFrames/frame-1485.h264 b/samples/h264SampleFrames/frame-1485.h264 index 66e73c91c58be2ab101246b9b2e6392f421c7128..61184655efd2856cfe68a512ac8447604d84d265 100644 GIT binary patch literal 1147 zcmZ8hdr;E_9RL1)+i#m}$q08FGGjdCVItcxUNPMR70BeVc0Q)a5K|1Hp<*B&{t#j; zkVk^3piBtDBV%a+)h?!T-5^bQB#$c`kq{)00)nxPWp!7b-#K7V}f^92B8 z756!at2k?QSdjQ&f8Tt#@1ickona&d&Ns|_h5!P}H9-VtrOcx_<>qv(?p46JK&Mna z0y=@ZmW$`zd_0@5=4f5vg%d@(jCaeWORo9jih7#ShnLn-zOy{qStvqXe!5ny9G%o| z;vigFY-B*x?fiK0F{>V8$RXpU(oUkbla`fx*8AjwjEgup*{m}h*s7(oNA%x3RI{1Z zG2{vdv4_L0cJ#e4$eO%TJT=q^%&SW++4V;yFjd=28<&7TBeQYc{D+UID1~l3v zBf=rR`lBc9I?N40Z;+e6d#&zx33=2LP~@wPfD_O!x95ErY0yUv_4Hw_ZX&LKdcwCX z!b|0;g*6$(&De0vJ#1L|v((*)N^oOA_>QEmN{>vvIrr#;KpZ5$JtVa>N>zTc9fB#` z$#vV|E}!<3uzC=u&^J705Z@T~)Pu-94wS^ABQBln!CL1}4aEujeKi`UsDpI92B_6I zn-J#_Cd5el9A9s7qo2OqYHKm;flk%1O6__pn70$>8*0a?scb+H!zHAvYO`%hA(q}U z*LDwOnMD-ECwrZPtXnfn{BWQHPp0m#$m8!6PSaUv(Z|%{@T)=cL)r6r;?M&3ODEW2 zNRDdGRkdsMF2yOdmPFA9(iHowO4G|{O5}+Vb z6uP~K#TzOa)<6Mb`T(5b(AA!LaC$upGs5jwVG0htCmtrNn7UQ^1_BCh^mcn1<|*} zH%?RbDU42x9S0pdn0Q6BJ(d+nHjPxToE6qQ9G^2;{!hq9UJ(AZK+NBN1{jiK_}jCj G(LVtO?(b^= literal 891 zcmZQzU|{4l01}R~9i;ZK>N_SaaSysQ{S(tX7Q+~Yq<;;}EexzI9H(}lnBx%j;5h#^ zrVR`Z4ID*>-Uape)cf2$7~H@*qbqY`vdLbx=Z##STNNigyGuSf1w<^5n~T&uo@6lZ2cy-Qx%@^a7?>jFf8#wMz{cR5AaL5` zoH#R^!q**)$wwR<7~kYFdPgL1CtlVLVJZ*0S)br==%Hf(OR|W^{SVD7$M!#O+8)Co zQP$x5W44_F(>|hYMBlO|Mw5?|>c$hDk|JGZ^x?rBa zTc(o9Z=bk{nRll!IvxJNq0p?UtCP6wq*%@Wt&9N-tBZByOJX$rLl^_=7*wK8)FthG z6SIbag`pvGM@HK@1_lQUnQlq$j>8khUA4pO*Uo#ysByaSAXno5wL2sjuV{3gd{kLb zS1Di4so^We1Q|4X=p366$Q!R~!)WdRN;3?3Y8TknGnD!>3a~di=D9I@YsRzqEW8`~ zgQLNQe z+}VvUt|$M9NbBo9&i8!9eFnYl|9|KIKO@=zw#l+{3*+j8mw*-}2r^VjNIXcGxQsEj z?oU)<&*zT6OYX1ZoZQp!_Vb_pC#GpLDE6;=WczgqgUMAVN7)wBFPzesVmhAL|3`p7 zvigb+O4+NI{abz}F2(cm!S7i~LHvEXhgg0`zhsoDXE+qEJ(FSDGu{IRo4x;(9b_px z$8h?qciR09TSo4~r)3Yw&yzg={PWL0|LX1MBQrjfp$Wj1d|+h;`$W_!mm%u|+hYKI CEQ*u> diff --git a/samples/h264SampleFrames/frame-1486.h264 b/samples/h264SampleFrames/frame-1486.h264 index e240a5f5a62e0e82546111ef0fe8f30e4362cfa6..ea9e3196f6f9d7e2c84397e969f41d42a09ba258 100644 GIT binary patch literal 1412 zcmZ8he>l^59RKW>4a?^DESHIiYt9tn@?)4&7hyaZm3YQ<@?(|UP`58Dj6GQwCvhS2 zqlKPJd_+YK zv}yo?e z5){a@x}WgO(*m7=dxXD+KD$A zpS0|qtJ0vahle=;hJjxpMBTbp`|fmvBV`ZWArY~1J9&EB6$}KFa(T%-l?WN5$>Q{H z#j9HYENAyE2HB#-c2>JSLGt<@P{a0x=(hA9j*vb=h5Q0*;VfeH~=bGq_QwD~WClbZ~2068@6%1e@{kH#%}3xee3 zDs&J)f_N1HD27Hp)>XWMlpnErSgpm*WjyP{1c1-Lq{ntPnQ^P zGnxu1e*>tMieoihJQ>V80ZB_TvA^-ckC;Y1^_L;TgTBR13TRso0}fJ{h#ROJ>nBH% z6l=N2#pNZVp^ECG)>~et6u^;s_fwlj@hi5>vx8VV&cDyVaG{m`X1wi9!NRBuji760 z_IjE7!lk@dS2Y*b^NnMqM74DUjth8Zwj*B7s#xm=&R+f(4-L(&!`PU#&9p4*f&C}+ zA^_YXVY30T&wMsP^Wb*ovK*^K(K`mLhbPn-2A)ks$&V5hCxg&4~~K(?)O zt0v^IY+*eb$BG@3v_ z03Zu?NMH$H1jF#Y4_|)p27my-#i&1co|XAexF z7%3^i@k2S_Ly}O6+nWx$Yn!bU$^wQW(E0 zp-@fF{s01gLe757r?vk6msflZWsQYLkn`2xWiN)K17KnYpil=xASf&)LHIWLWg`fb z|Ft=Q6$V{{u~oIdcmM(dpsWZ9QCm*uPIp=9kkeV<4iG<7v>duHCm;Y201yZPVPN7S z0-Tho>^8QP0b|IFhM8NcDk}H@W0-S>hG|{tC|umqRrSG&0TGlKruYEAf%yoPdq^N5 zL;+MNYR9Z-fO`Ux2;m4rjxDe7+#E7;rhyV7d}1oi*MYIX3*4R+w~A~>#PAS6QIUmM zHwt_p01yTV{CSm@0W`nX2xPzom;n^<3py4usEq8H$O17OXq0&I04@nM*}x~6CGjD| z7ls6b(VyS|2nU4$wISMtQH;W(m>Rr*Lj`dKlnZ#6%7O-pI3c#y8s+VQR|l<%zN9&n zX4c?`-`Dz#Gl9Yq7x~&RbVcF}q8#RrDtH-X($S*-fG`R!7qiV`rT`Ym95*g#KpY>M zm;w}{`a#I{8X#Z@g1o^?B216kIN?%md;x+GvHhXLM?kQbI??3C!J+}^1kB)cXycKY zUuV1k5UBw{Mit*Ep>^337_h&Vm;eY81=$1y*e65X;K2Ri$^qhK+t5k^IpnahFNMJ? z3>XRQBs1Uu2m+`C!7hy4B%;f~3lF&g_&{C&bZk*j7lMrW3NF_^il8ZnI7g`jTjJHF znBWl_IjGGHI2qEV-Wp=&g%;-j{67E~o*&U=MCEUY#>yfSUGVS(8mU2Me)C@>lKnQY zl!Bq?)#-c;V}#*x0db!g)L;EcsvvFGQ^EKFg()n|E&+newOE5M7@5vkV(NZ1B)eBiO@g1+t? zUPB*vaztBm{;<-J^Q1j7xv}`HD_bRdZ2<^F45;pHnpwZPgHh79C%Q;~@BiQ#<{L7h zcHgIeg8)s?0003&0B$DO2Co2XF98q-p+RlH6`x)P|HJ?vt??u0zAPHqZT0&b|Lg=> zS+R>4cb~z_;3EL=0vHbpSdI=)p097-K^1Ah2U`(asl3gEB`Gk?5^xa!cnEa|k}r6` zSDKm`yU&caF3zvx!#c@?It9OIwdB8gX#z|NsC0 z|NsC0|NsC0_&Piy>`TYKWKcCO%^ZES#e?Onk=kxje`~hgd0003&02M-QfNJmt E<3_VjApigX diff --git a/samples/h264SampleFrames/frame-1487.h264 b/samples/h264SampleFrames/frame-1487.h264 index 02e20df06e58962df8f6f786e5a08db7c74bc9bd..95788e10a3962ba44ac3b8772a891638025d9c57 100644 GIT binary patch literal 1085 zcmV-D1j73O0003AFaQ7nL7QM2yahKwV%OC4OWpNYXKbw5we)}y00P(u5^A+`M|WZW+yD^FVP4b_LLO^e zLwE!L8;t`}&Cm(I@J%lTzyJsU6#|!bhcu1}VPF010{{U5%O9#T0h!+(Lr}0y@Lva; z!@v-1NS?!idIymhM`RU%0)Q0Cy8*#d`~U^#umZ*dE~iO) zogxePkR$A9tN<<-D-fj-3D%)NP|D`?ZQ_aJSr`BixB>#jY`-lQ(k6iNw6CB52nB#J z72ba#S3Q2 z00z`s|}sLk*OA`uw`V3O!#hsyX2IboohQe-Gh z0rq2bIl*ij7+?S_Gxr7nC`;c?hQvh13;Vzb7;%D}qKBR+)-;y9KLkH8mBIlBgPTi$ zi79z8DEBQ$d8h&%fB*miK>%(h*aoivVGt2Odufb~KEa09TNAm}|NZ2~&e;kAC=Ua& znfPusoINfAvdmPJB?>p#HXa%<9eNu{p!e_*fOrU6fv6Eny)&S^hrMtF2yc90<|#Y? zEns4kQ_weV!W8MzfU07}wdj4nu0xhH@hFdeOzkh?XKli`S z-|hAWNr)%J5|jVDzkE{uct#e00003&06B@a0jt5tpA+JE12%vF00BV&6+&%*YVZc* DHFnPM literal 956 zcmV;t14H}(0003AFaQ7nL7RXYyag{oVx&h>(sFN0fh5O(7#E_>&&4tTfC5(sEwF=x zwZxx6`Ft3P4F?B;uv`=vU;zY85@yhq{s2J&loX9;h}fG}L3Th;C*ZHGVCRgWXJtSA z!Pfu*1H&Q!06=U5Ae&Vg-Qxdn0A>IKjS}wU=Yia0Ijbd4gTfJ5D50Vjb})3N8OeIA z_aFiS8&Y@y;w#8&2utWcctTQIAtyR8E1^s9Bq6*AM1TijfHN+h z2Erp%E&u<_18@R_@Bf)n;J@*qS^$h^8fk1eP^-`J+3Lt(0CE5h2oZSJ-gLe&3xosM zNDSfvVNU^oz~KrZu;K{8hGp(C+yM9>MJK(6Pla=oqQR}$0ss}1z<&!w-|xIu06-8O z(!aR?!U0U<5&4V5JczPwgIXsW!YAMKD{TmQ)Q;lieOkQhWfx3}{c}AhAe^ zpBmBB!Q>zmJg$Hx+;$oXg)m?irFaM&@rE8`O|QnJ3L1%*d@6CM7IY;ncN&x(lon%z z00IU?i#`V(12fT=tl%(A&@hmFEq;j>%)?+Kanb;rpa1{?K>%(h;0CV%VGt2OdY8=yzIVoh9=5Q;8epB zCbus-24jC+Z14l9VXqBDN-}Zp6;&Rd7w{&R)s;jLcv>gPy?+3#M5QM`f9>FC4^r5d z{8WDM2^#Ca)zCVO@7@zlAnO#Juh~ij=(|Nrh+Be#()`J${}oa z09cardSm{u0P#v@ta3mABQLQCfyWiuK{?TM64I~t&KP(}O)?<=v#|d>FAG2b00BV& eIf=LdtHH>h6XJLSHh=&C0YLy2LT&(R@CM_EahVSQ diff --git a/samples/h264SampleFrames/frame-1488.h264 b/samples/h264SampleFrames/frame-1488.h264 index 197590cd9227753967a8e0bdd0472608e2488722..bc5b108382023519dd2d7503e8e8d3684f4f343f 100644 GIT binary patch literal 1172 zcmV;F1Z(>M0003AFaQ7nL7RXYyahKwV^`FaNq^`f0w5#c0ON!}7%YF7coiZvtgLqK z01c&$BB>gwThIm^MyRQ_YGC#o`ELpQiF1G`26}%2W!+2}jwu5Vu3O{V{V#&z2w+hJ zVB`>tfKh651{RrYyTc0vo^T8<%0o_5H7euKgbYV=V13!4cT7d9AJ709NB|5hCsfhz zeh(pF1Y@wV3ZhB=Fm0k_n$!RS0f4lt05o4@OTaE90kePHgM}Cl)gz05a04l0rv@H? zApQjr$_&f{9f1L)1D5^ZATi(#9#qEKUtbC6TnIrp0Zae{1j7KX`IQ4@!F)oLdU^s8 zhuMJ`E5x5^Exk)XgVc#HQY8IHR`4JP1#DmdAQr^{0RSLqXvSg#(uX_<#{&herCiyO zgne!R0w15?7y#x2Fd-;P%L>~`NKWCL01z>VgV)3@Vj9}!%4jpVYcI>Nf)}e__ohGq zsKBCnO>#qn-V8~hN%$^+@F{yjbSpZ{l@?(qa;caB=P>{|sQ-$F;t5l(Q`e7TZQ!y2GXbcKqLBs0g zL63EPW&i#d2skY#+(52^l9!Vh|8M{d0Y(&v$N5%_d`&yQf)@wl2&WlnETp(kl26d) zN{d~Wxpx7#>uN@LKL`d_0t(Uc(sM|L_9^5J9ATQIb#)QjJOG(N0bJAxhx4n9FcCh_ z349V0fI$(Xc3*PYJjr@q004k_fP?{Fa4u?t^!|h4NIUU>Fst?f&+8QfQM^6>>k=5d zH(!{G;Q!13>Hzo-!?ssJqlt+C00RL8Sbu&K0096%aMEGjoD*_ZjYe2#NH_u=fB*mi zK>%(h;0CV%R`3zPcnF2K1#{tN02dEgCZFT|fCJaLdu0A{bLfzVHqcj9LHEczP!WK5 zANs(s14!v$>y;oY?gQCeW>5turno+7ZJ51x&(SrZm2=AeWUj6gK zFeaD%@!^jOMS3mnKjKI|zVFBPJK|3`z+oy746ogfm4@zW26mnQZ!o`r^COlFq?q-a zmP(8RD_6EgpBYA<-*gV$M_>Zr@?UycP5ppE3YyxWzL!X}ul?kG|90!c)2h2M{_TMu m=Z0WT5%c-@UH||AK>#_4xB;uc8;k$|0YLy2LT&(R@CM_t`22tX literal 1050 zcmV+#1m*hx0003AFaQ7nL7Si&yag{oVW03aCvnt$L%?n6XiT_6BV zLJwaycuU3Pyta79!&Ho}LOAGD8oC{Y*zkp8JPx1$G1yQnjR7_`g~I?1fDS+q4u9ao zOA`~_GNgV8U>>I^z;LG$K~+G2PYiPTz@QTb3_*ba&kzs*fffw!45ftxq3;}SOaKG} zM^L_kGz)mBw$lJ&+yDT85C?cQK25>~9uQngUwM&+VxX!RO+9hu_y7gR5En*9mth5` zP`V2e-q=7X%~&8_bF-9%U~VDs00IC2K=X){lfu309HdlaZmsw#joT7 zukQiCP;m^lG|_Uw&7+&Sq(1=gRO!J2Uc=~vMa4cLiR}U(HjBd zFcZu9#Nxq7ubLMvjFR=+@Dha%)_By(M`vuyk|EebqY3FPi)#uPwVC1WZ*yefp~g;g zQNjtpF(oia)rT9BTYvrpAA}skgq{TYvZMmFI|MWdd=iNdgu##_5E&Wp7yuoV1|UIr zlsFEIS5JWp3^+S1s&=HbJ@Uc65T)2ns11L5caH1rIMiW>R zegE750h9<~ZzKUAmV~y4qmT$c_W=b1kkR3nCCTU(x;Vw&7={uT{T^ZAA5-W=-@pJ6 z3l60Q#7%odkDi@@xTGg=V6fH=9lX#WwM+Rx0cFNu0)PypoD2mYURZ3R;cywi1ydzv zg(uBC0096nwD1u5w~Gqys@SXVkQm?q#H>&vTxt${jEP_WXaEoJ1OR{_#%#$@oQM~n z+=v7zfCU^F>7n4LBd7yd0XIMZ00BV&ZYJmkuK-r?5x{r|g|di1B5AnvZ~^f3vSs=I z<^V;nY=DY6R}v5%=%p%v@gHgeFb@Mg+aSOOnwAc@sRVnlKgqqc`M*-XFZc++J7s_o zlCnZk8&Wf@^_M%d|J|JDleD=z{?-_|8Rp%>rC;6xaeo9F#K5n{)KHA1KV(mJ!Lg#b}9m?mfgZMl1Y%H3_pu$a+2FQN#K9vBQTE_ZJ8-vMM`6}*8yRcs^wgWJQE z9J+CYUEy61fT-Z=yzmxAo`mk2MEE)3m=jC?Sn#(42MCwef6D*3{v19|04&T1^#!g-;WOlqSEk4Q9xNr000IcW z03rSW0vgP`08$MA06^X7abN%;$dCXCL7uOFau1tdcZ3Yy_y8(l6c8M@+<7T)ZI-0=cB4#MO(5Ckp2vP(0{k?FI-pZkmeB>{HY zrf`@im+T`z03ZV_BdEb0qnke%m6kNVS|bPRvjIVh|b=M)ffYJI8x%t zDtF=<^Z^8~Dp#p#WPA`4OJ5vBc!krTrGS%F^nd(Pw{xlxOB`DhfneF{r~`g82C`1$9~-%bt731)_?-2 zyb3Ukr4L*?oRG%5qTJz~?vwhz00f5QF&tLRBNFdpxLhSEUlO8fhS%m5l?0A`Lm0t2nS(9RCjpz$rT zD2i6!`?Mt%5mdY(|J^1e}DiW5}*kTU?EbrjjCL7eLw;}DF7ZsCV*MZ-uORIczC0G-_PRSAC>?N znGG>X$|tEQ4~YRXVgdjX0bZui6p=xJ3#qH>N_WEoj{pP)fWvaLWq7tv7#B*SU;qdQ z004my00^pp0ER+j0CogXOf;ajvZ2=t6LK8EP_PjD`GbHA1U6`K(WvE`73&g~b9(`R z0DyC1D}X^h4D~X{CrfPH^Py!4+0?|!EYb6Bz)oGB(Y<`=S%;Xh{ylpyZ``z zYc>E9VJ(39L&QJ#UTux~l}b~*OaUR#00aqOWzGVjn+uLGXgmNLGZNyEW7o(Szt)Ip z$Xw=fk>S{YrU+qx2eN}2|CIIIKLPn@0v&(=00BV&ZYJmkuK-NY5&(EGS{SW-1b`j_ ze87Mp?SaW_D1N>K?k2&*(BAms$B2dX;zH6=HB1}lh2Tvu|AfNNgewOH0te*CTLAfN zDEI&gJMR;R;GC6*u5bYNo)>{QN2BmGKmY&%K>#_4x&f=e8;k$|0YLy2LT-R+@CM@- Cf&SM3 literal 1353 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 literal 1069 zcmV+|1k(Ee0003AFaQ7nL7U(jyakbeASvKO6cWHd^=4jG5Da7nFAF>k zFYE{yTqrWEkw6e(gf3N74G=mSPLJdAt^fgpya2qU*%XWbERYTcfS}M2yp~W890~1w zwlN65t9==uV$%Hg{Z2`MXCTUab@$+m5CB{-fU}jlh`JOI5jwm>pi~@gfQH5kWFRel zFM((gz>r|d5Hr94VS;>4n5{&aw$Ce`!F2{%1d5uAxJfoRH!do%Kmb7q00b33Er0-k zkQHM2S>ON&004kR#Ho~kci5&C7Jz&%%FzS@0dwC&8b!fPGW+{L1wzOG2oPQx0SGVv z1284Ho(2R+;sFK`Pz?sr7bxz?12=#GAOHY!761YP4>f=RY+=|Z4LY-62Y^HoZ!iIX1YkH;d!+T;446Nsz#l*{ z0~}BWZ34K{3l;`WU;rQrS^x|HzzGrA`KmFg8RPxH0Dur3z=DsPOZzlU%}js53Az9P z0YLz6Cin)g079z)AP0eANCPiZaE^ci)qD|3!{N1$^Bgb420b{{=Lr%7N#C!CkKO`+4gx}yLN)fud;0!BXGY}uThLKkiN-(px*KqkK<__e z?KHrk%rmh;JNv;8wRJ3^KWZYEzfTIlnD%mDeW}gT-~aaI1F3$oCrBU^q6z=L|32;D zh-+nwYSZ`sP*U{2=>7N*{oiMNz*<_F6@xi%|4+&~CwP@X#udGpi0_(s>2qxh;ivf n`Qca-gna&f0_Fe!0YLyciM|1=z#EJJ00BV&6+&--YVZc*74^O# diff --git a/samples/h264SampleFrames/frame-1491.h264 b/samples/h264SampleFrames/frame-1491.h264 index 2d235b8b47e2397403595193915fa41c44d1145b..69a8fdb7a97f600310872547d817b6ccfc48bdd0 100644 GIT binary patch literal 1773 zcmVbR0RT_{V3}0|O^`R<@Bjn=-~yC)OaWU~`Cw+w00aYzvsGB;l>zclx!F(t z<6`BmKm;;$aY=vefd*vW3PEm5U;g-D-GM+aHk=O34L?4ti~s}xfC7Y0h@WVQ<>36O zm+T@KDaasa0YVJa1nrmC6PK`Do)XgbFVTMfJ{TIX zDOBpVV?WFSChQHC-~a+p2NG!0;;N(Rd{iwgNJJ^X&qT_2;QsPGRJ% z2z zA{&W9-hd8KQ|ej|xT4B6SonAy1~0s(W5dnH0UTBWnkWD*R=_CB6EY;f|9Y@;!TqX z0N~Bw5b0nZCoy6S_E|7=YhfSBP!^??%r z0DygJWCBY}diVtd0C(Weiho7zo0;}L|EvQ#004k?a;ydysO|Rv03aF1SZDvz{0?Ni zwTJ!2fd_gT>f*R)i!blSs-;zCh;GFqIf~%JA?cF<^Pokd=CAwj2p6=U^7+I}!NjTG(8D4ZIH!9K;3_!=n{Mx&^oiWnki}oPYnky`GT(1FVz-j1qE=8@bx|ruN|Lt31BRV8t4Cfvt zKl496hKy-$R`35v0f(x9!&sE*)^y6&2P|Wdoa7Wz01X65hQo%jjc>MJ=A7l}K>uJ= zNt%Zc{qIEp$4J~W^MC6+TNYG7F$_UEL#kkFDEokJK*}dvxdREh zutWp^3VHwn1gIVjdEoeR|A3eSzzJYH3xuf$M`1cWT@5)g-=q79n>&|*^>q}@Ki$B9 zX;$pGtj76(oPbCH_ynLGgSUQ_uw;f zjC;6r3IO^MGN6Hv2>1l8d@ry-4FGr!qyXha3X0NbcK86w>Utci!(VUqR%8EM(Ji?C zK@gYz4#bYxK~EcA!HICc?}NmHzn2p5XFUIW@QewfJV&GO2vh(70YLyciM|1=z#EJJ P00BV&6+&--YVZc*{xSus literal 1430 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 literal 1050 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 CNHE9% literal 1180 zcmV;N1Y`RE0003AFaQ7nL7G4syakbe1p~1lQXUkVoB$Aj!FqxAGNXZiyd(O608EHw zD+sJfD`OMD1_OYSCu_1~Rq*n{18@IZa|@7ILwU*wVaa$(0tS&l`sVNi$N)c*7GMw( z+lLg2)-|?E=K_FC7(*rm13W-L0fR6J_Z;TNh2YoDm!p6INnqcDwGREQzt;dbZ~y`U z01ikNzozjcg#{WIo8Dq_nCun7Mb+ntKfnM80dV616(y>A7G5HPNE0T#us{??{vbn0 zou5Le@-6TH0sw$uXonmVH*6F-WH)f5xL_6l0RR_4AP6=90s+2WQ!oiXyaT{cIHunT zI%vQxxFwR$q4)uyD)d2Nq;a7bZotJ$kO1IO!A>lPEA9{MntQ|m1OO;qTc5y{jXz+# z04oFkfD{A;dW>4CMPmnp82A~$K_LJ2uEfnjIEI-P*M@KbMv1XzV`PMcg>C}}Kqr^< z1RPi?6#xX#N?!=ms_4GLaNw?Y&rG!XCs)5nMexGr5SE_HX@!Jrp$UWB-sZ^RvBEDn zlyF8U0S!6BLRJZ^r%$KJzd(uiPu7OW>49d?pNm7=XynfG_|M z2Xz3Xi#HQO0@wD@U@>unkSnb0Bi9F`{`dq4bwI)dg_Uf8nYR(Z)4<9k`5?l5z%fKw zR)`feHW5#5T|xi20096|M=-i-f~VXU+6=u|j;7iIHe>H#P1mgZ6;twc9 zzys&h^*8>;TX7%#a76~hOQ=(SfxsiH<9?{=5W9|Cd9;Z!_0Qc#E>UlfeuoGOhvUBf z()ONTP!j-lq7Zmc9x_CLnty;ej9+9MApe9O%&vSv7iBm;1aVxtk4r zsGr;@7YD?sD}6jG0%?9a`yLdI2#TCU$G;x|7VMRc?=riG1M7R+GG=#~0kr0>`hWjm zh~4%7|E2&dqA_AvIS*}=Nk`M;N#L%L$Tc%RZ)OMkh!7+qIuuwp7jS{z`IrjFKrC&L zKe0m(5dZ4~07bGP{QLt_Mm9stIw$>r1(bD#_4qyekI8;k$|0YLy2LTLbM@CM^9r}>Kj diff --git a/samples/h264SampleFrames/frame-1494.h264 b/samples/h264SampleFrames/frame-1494.h264 index 87983b1683f7edb39663cef39dc3ed48be7d9531..d57e20382f26d3d0bf29b7edc974cb814a610e43 100644 GIT binary patch delta 1347 zcmV-J1-$y|3ET>Q000012`~Tv0YRET8oUL8zy6#kJAexWU;}^_3MW{g2f+*|g(KDI z0${HSz&w9+M}=eBWKAfL=EwhAK{$_q@BlynFaX1%`d~i;nMs%lymepdAOH{snt)b_ z>YNI#-8T;G(wV>D0?>z72|=PPl4$jN07&N$q8croq(Mf1+f&0N7_bKID9&SpBMo%V zU{nAU+wy=I(rCp{_?y*oN$t$vAix=hF6CjazPX`q{{~>f4}e)SfdF#A z3P9(Z=Jo^Nbf}Mj9f`w7PM`bhwqg2mmCJqI|1XM)nU*qZa_4vedoFL1`LBM6ElA)1 zAOfqr2}#d?`@kv<=s?msmD6+25yk%&$47vGV%!TPqdd7CojfW3xWEEX9_?&r34*(R z(r5q#0-rz!6WKY6{q7?I247tZUFVfHWB=Zzph4<%m#NZY!uh?e_O=iU00JfeV8gGZ z*^X~yg&Xi?gceD8Z4NwCMVJ4%5F7>WkeW;ieWI3szy8ty0RT`icJX-$4pUKtLk<79 z065SBNM1LFMaD|XXVVw|yaa+YWV46JzZAY-ykXz~5C_YUZ^(B44KV$~AOQ+CnNcPf zs-myI>>?;kgps9x|J++&=Fk7^7!CR`01yCLkVpcC2^e3}jDrur0R$^ZIEIaPs}xz+ zRwXlk75u&u12PMOpd<(l3>oGm01hP;$eLQwb5VbQlz=cEZ-K_t;nbJ+_X)57ZMXw0 zarhD)ZT5z6ccll5b+JTIw*TFsDd9Fd1bfOu|9}Ult2R@9c8CBG0M4LN1{Gvx_B*@) z0RTG!02E7r^6YI=&|X>l9BRZ3sw zfCDB&L@7Io=t@KNASO&eKmx!g)fxhFC}2YBTKb-y;(4stXgPKHgcJsM5HO=Wr-EyL z00I(&uw?9w=&H70S)Q9S8mU&*fB*j$fB-FC%K+~ zBp-laV@nJs(25ImR+$%icNkmCnApI>|G&5Aw!;tAf9CQg`G{eN0H*3;@)6I?-~b2* zobUlA&J{W%tgmn+eCh^MQUVID7H2o(V95`{kR&7+CE*$-iF(DzP$7a3%Vr`m|Mn}u z00;)NU;!o)*bkIEL;rQ{vAS{YrU+qx1+q}az2!Z39|Q8x1Umo#0YLz6CXkax11x{KuCT8>ZqbMU z+5jrS$KKc>#lQ_n0KR}@_&JANnd)!+{{#U%1hN^OMt&%@HHZue&=UZ192VdPCfyPH z^Z@U>99ob^ZTI&PQf7GB%nmmz;5?*5Dhq;aKwr$vWpz2!qor#|VeZP-1lbD9oji;G z=O9yUOXPr{0R%pXJS~4A`7lP{LGbhoEV9p*$Nu`m3jpo)+Xo}%aYIjsNO!s(X#i^Q F2IBx!TZaGu delta 1232 zcmV;>1TXvC3hD`e000012`~Tv0YREz8oUL8zlZ!jXaF`C24&G8c@bhu8a<`G>O)m}1PmAkdS4d(}y{00?dZ46P+`l&Y+U zM8v$)0097eQUCye015&ou#pe4e|03Q^7|4a0Ve?#G5`sHPH@@}yc#DmZF$D+au4^6 zU4h*`Zi}0C-BpY*HyqhR0~!xQu*;Yh6|00RROr zb$}T2IfEfn?O%WYJ9yXt2mt_Q6mTxjkKo6s{0(n^oBzm=VZ!hLKmZU201y>Yb;**s z76ji7W|JTQAn2jTr{+SusD@UEiu}QfNW9H|S9XqbD0_w=1|S5?T1#9Mrz{G{AG~4c z#{dBXq*eX^4;!TTx3A1ZPDQZpwoIM?0|-Q-Xlt_48pa>vW*=}U+}1H&eK<8JJ9P5x zKHSATAP6EEgMit;k<}O)34lw`0E7;PB*?tk_uC>*e}n&vd7j7Bczyr~108^DL`_>v z)}SaVJ;kzM00;$u0Dx!!u$-`efI&kb3(BpOdy^(U&M?nF69f(wMvGSdjNb}eJA(jN z5D`!u@OE{j>5WJzZ~&X20003&0B$Cjle+^fe+!z2crV4H*daiz-~nx5Q{91siQq26 z18;!`{0uUyzNF%n} z`iQAan&!-~aj`Ff_>l~#E(B~qU(C#I>T|1$>tBW*;u)3}Lb1}N)&G9w?A^(HkQ4wQ ze}gnZ;c64<7$a~a|9ShEv9yxQ{8=Y`-+;Q+KV z0~NIa7uO71eHxz7G^7~@pMCwBz2^R}sk37`Boa02RXi`3@YFQ0h*%Qf%xhdYxB=f* z;Nh46dr9{`f9E(4oqAv{bx{P#$NAxSdJ|WWZ~|F%ueblXh!L5p=T@hGf4{557#tb= zjd!-gpJg||71G6Pex3g)J9D$dDo$@c2rlvxKdC*@LDsjOulMh7fA77CzzHtCBYe#F ue#h_j_V@e`=Z%3p{(b?jfB*miK>#_4rU9$K8;k$|0YLy2LTP|%@CM_04l1<( diff --git a/samples/h264SampleFrames/frame-1495.h264 b/samples/h264SampleFrames/frame-1495.h264 index fc830146c1ce82737cfa016f52df40430f08814c..a3d73d3173a3f19936cfd53fa7e2618fcd8217db 100644 GIT binary patch literal 1270 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 YIfcV>5HcXt2y0QLZ6I0P&p?g$w<`L5Ad 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 XiK+psz#EJJ00BV&6+&u&YVZc*U5>cJ delta 1050 zcmV+#1m*kn2=@qo000012`~Tv0YRF;8oULQ;7Jw|3?O#?1l`SO0st3Ka@QPSmbiny zc3%b}gF(UItQQ3aKmoP0LesjVF91Ms2bs-%gJm?aGJoy>5$F`!_Xide(XFdL{lIm= z06}nMqyRb$MQ)YrBFFyV02qJ^CK5-J5wMdfR*R^C@On^xjzDmr(U~3(ikYB}vM1_u z&;TG1O(Qoz`3uuqK{%SH;6X9UpiN2uhzA!GQO1+zfDE7jAProG1&h9n!xn$^U;qd= zfB=Oc00>in0R+x+`(q7pK`jH?zu;k_N459f1oHld;D$&5Rtx|!7es(;A{w#WfB*bo z22cP{PgPcbXT(LiVD0zdV1)~1bebd+E>Ew;t|5Q`fFu9`05B+YxR)MuzAy`f1K3Cv zhzX7G1^~b?a)@pkLW(YMdjBQB0jL-iYWJY{;EzeFEE^iY0ssQKD4-YNNL$~$7NB52 z)+}?SLE@>{@!<-R6pJ3v@d+k%RJUY&$Tw4%q1EC3a0LY^>ycDr4D z;vN720YOR@L{yXlTbxP9z!LxvK&FZ$(x=U;Kxs1dsJsjr#08fJ$SMuhn99Yol-~db z0tiIfbRKZjARzB_8N}}(Knet(@BxH!;3^>n5DM92SGI4D&Z{P{K z0003&0B$C*2CoH>6#!Z==l~>R84)Qhq#4gGKmt#d?!EUIUF97d!=wifrC5=|5aVbN z0Ll#lZgZ3k{sVhaUVVA$h*3CKEc5^M<^#M`bpWKry|x7|sA^<@qF?p|0uL{g#t;nS zPCxKoh!V~m8_`qx0#z25fk9r!_5#Ss^!GHr4!|O{t;-qM|M&s~=r3Y&XLq~*a0`Y= zH9;{XEjLE?lgR=hf5NZmI$o#X0yuJ6n++s_OjCl9Nqg*KmUP3(0i_S7MG?%EgEMzW z*w;%ysXDjROe^yLEdn6|jpAzRFG5TGE^eKAr~|f64244!_x)563DA)m6L2K!f+nIG z_r3S|vA>C^lIkE07Y~IoU$Bz+Bn=nvc3I?@;cEZ?zt10^lRpF)lTHK)e}6v(icEvJ z10+5OkL|(?<1EG8m&6DOLqY;#LI(Ic{C#mpOT2}A=Aq^s0wuI;Y9S_h@4t000012`~Tv0YRF;8oULOfAEM1fk93H4jeK7AS5&VJ`R%}+1WS% z6DcvKbs;O9o`4J#W~j)IbFOh$xUBGt^h=xo;0!{41Lt1j0f}#UfkQp2yrY@79Zlpb zL{Inz0;tBw0o9EvY2anit%Qy)-qUjxeSshVAR0Rc3J^PgyERsh?vNkg1kOT?)Rg{F zELyuz00;^Jan=A5KhlQa4GVz(zwbchI6$siI?JEy{`T8uZI7y`d;lO?5>b~|M}YQ> zOWc3%PyiSJQC72@8KxygTK>{wttg-m15Fu;(Z7B6faj*HU>+rm0(-=!LP}7200Jvt;0yp9P?b)l4&7s4dom7PwSWQx2xJTH z6yMx?t%<7eGn5leN%sMSvzWbl00UtFqdbaimOqaJ33MrRffWLx$werTZXnE+7GWoF zshEBM1Oo^3zh3M}iL`d@U%~hQWgBpjuA0hhhJty225uLGQ23MASt7Ur4)1k8y50zUS~QRqaoy(C(*?iH%%7&E2=|gJ~B{Y0|;=u{@3k5PyxVRfj|SmK})<4zpL0I zO>KorLZ7wpCT4n2eiZ-R;F16U0YLz6Ca?yt1!epMz#ITh0jNMoU{in!izw-FRPx;5 z0L}`+=!bt}z3vYY%V|k%0~~*RG-K!^*+CD;ffamCI=%=1UHv}Y&%W{i zZY!O~2ryJkDjZJ&VxSTLU>+2exlH}>zpOH*wFG~NxS#s)Ckd0yb*OWD;1uoa(#Tk( zZun%w%r+{Q?4<}0To?15n3?x$`~n(>i#5Ok0kkyw2+9UlcfR$EAkP2?o09&ozu+eX z>SENg>!1F^I2nvm)!_(l-NFGER;_2hw;$m0fEw1Br`zi$TSQEQr|;~yGE^TqML%>r zOTjKtQmWtk`UW0&SLfhO5#m3efG;=z00BV&If<+RtH2wK0003&02M-O0BZ0C;~jk@ Ab^rhX delta 1121 zcmV-n1fKh)3jGLw000012`~Tv0YRGJ8oULQ#DREFQUC}D7<^`RXp|%u$L+}Fy z14dob4{Ghf6s-jezyr>5DTReK22o%J-;e|wH4AtM00aQ<_1FMF2&KnYVEBImM80q+ z1i^$dU_dj-5CCAz0)59hv9V}1^QGy)03aq6gMJRwJNCAJ|5O0szyJsY02Ht-e^h}( zg#{WHo8Dq_n5-4SMOEjCKfnM80Vr{RigL9*3$GDDBngvV*dPiiABaDkQqQ4Oc^3Ep z0RUhyG(&C)oVE%avKzQj-Y^RQ0DudinE*ks01yrO@|l21;12=7;+=dX>7xL);F?K3 zhu{W)tI&XHu8FZ?V`PMcg>C}}Kqr^<1RPi?6#xX# zl>QMlRonXs!9iT_h)lHlCr7_XMX<+487n>5*1=qVW6}_>|JVDOiE&s`7o7BPMkoOd zFo9t!gw|81(f`NEcsvj|hMg7=-km!W+Wo@1G`G zAS-`u7K0X;I24OJ2=&40-@X9?9Z)cVA!S=2CT+xU9Zv!&=8$1O{@@wFoM@+tm>meH zw=ST6|J(oofGNO13#O$>7A7UZG^IxC40YC=yZiId4YU-oeaU2Sda4g}+5eaFzQsTT z+|Q325~Ka9bu6+r>+`|bL<@v^3k_cQtAYJjgCigVANT>a^5fVN4@n zXn>dYT|^?RU*D$J@A2{Z019z@%~-5iZ4qQ2KYwLAB@djZe`uJ+ n0%(sQ5&ZlCdB6Yw0YLyciLL>wz#EJJ00BV&6+&x(YVZc*)F#m| diff --git a/samples/h264SampleFrames/frame-1499.h264 b/samples/h264SampleFrames/frame-1499.h264 index 58d4f8020bd3251b640ec2fa67c089f0ecdabe45..47d870b5e4bfb2b11cdd42d08d45440122b82ac2 100644 GIT binary patch delta 1633 zcmV-n2A=u&3xExO000012`~Tv0YRGJ8oUKJL1Nd`^y?5T$AAJCa!$r6S;bXvMgW8D zd;ww1RAQxd-os)6sf5p%`V)jo`|hT0P98ws+w7UkMXBB007i7a;BmxW+VR% z-h>QccbT9rPP{bs|I+wc5`@Kuz=RRt0LI886f1Q{Fp^o|c`9Hnt}$Yyhxi631xkxU z zApJaB2z#1;oB#p<>A(O$n4lA2ZZV^8dS4Y4Gc0Fc4P94&7A398F&*#y5L%JI06+y7 zcs(Y+?`VTjgGln1P47HMLv|kl076^~B%?g39Gg5T|G2;c;4bRe&JzW4{i{F#AQ1Ne zD4og7SNm}oAY}H?wa7e~vfuvoEdmcyq`gj)C}s_RMHU2#2D^c@)@0OoeE~?WD!Si6 z<(|J2Kp6pxab5Q1fw|oN5y`yTOY8HwdIGMyGa63-Q1}tdI;vlATPLI5I&i|Nr1z-~<>Cnq3ox zD#Ut!q#t|#x_ARH0bUW&l4vAPNDnelyJg*mW8RY?1T~38dY40$W@g z4$_t1^`Vh)?ozZ@jr{k$17+k6OV8r}V;ZP`|9>ZWKmAM`Q^zSK%ef2z7t*x)&Ui2Y!L;nQo56=KiUepb3IRx9J{0e81H@z- z9EwpXH~Ziv0|e#g2}Nyhy1(!epbQ6_;9=B|I+DKr@iqVrE>H$&ed@V2>oEKl{QJZZM{eZ)y}#w^ZPO$Pn@!Bsg^CNQRZ4-T(lAJD@NX zR03B{r?G|Sz5Dn;EODbjNf|C0t>_vZgb^ciQv{<{8OF@hm~oDoOx z8xS{%-Kj}5Mf?w2I0HFB`2@oi{@wr(>f6yHYrq?Y{wFAi5Q|Vwz5_5gJxE?ciXrZs z2c$;=E}_k8Bi0d~6lFHCb$#YP6bAr9GL<|ukB2@S#6~_p?|=XZ2D4xRp)G*=ai{+6 z*PCO0rBamd69ACt00IQCD(8WJP|c0M7-8T5*_f3IL62W3V0z-R$L27zV)i<8QN z34js<(nBPdz~c}Ep=phryqp(PMU`$-@B&MTyS+6zkiY-`hmowBoxlBm_!FQe0N6Ot zOX1(c0f0mn_D&G_xI5}-PpXAUzk?eNV+(-YKmq}RevlD<994Z_2bL%R2nYZ<+9DU_ z`Z%5>cv$@x1%m;tMmhKOU;pi3QXbN7@A>fCBqmo??*nYbq7~RCcl~%QwUknxP$(vS z-#jk_kN^MyK>%(hxCXC(1xy6M7z`jF7CPLsjk@OZD;qBAM}z2W3P0Rc_AIW3wz#EJJ00BV&6+&x(YVZc*3eCQ_ literal 1528 zcmah}do<-^rNjq<4HhxXZv@jbbdI@%OpHVm8- zv+P7a#wIr%j>Y-Dyrg;d$7iBDYvcUY0%{+*<23hlHY<&XTzuHfkeTPO5@edRWcl{w7nN6Bgfd(4psF_f@0U(4do3++)BCVP~6pBe)EvhU48?D($O zBMBi$f)nW0>ep!vk`@!Nnm_RLb z*hqY4r##+dXiVc$G0Bwj9Xq;5Wh#6v-+>*EE*Xm*lnNL%v{JDCy8Zq#%>)XlCvRcO zMxd#=V8VsCyHZ9A)y;3w(_f*rqRQL~U+li3wL3U_fe*)M-KXE&Sd%C(kmUOxQ~x81vFI|)+Rv&Ya?Xc`C)GVp zG4QiTv)$4vJ?mB@?^UNFZs#W=iNN|?i-TsQ*P}v36dyQ|2`v}eBS-g5r#!ng#}biC z9L?@gr;fe7qFsd3s0~mJHP06^`G?Wm#*XlXh|{9-fz z&mElerK=f_&e%3!cFqctrX2D!8v{6BF}+C)+&W<3+!9LNv6JWf5X~nEDKuSmGM#TW zX7Riz_eqPUHN^fza~4u12hS zbj7=jC(eN%m%wJmneBL{Nkqv#;yrs}+9kPmw(%$`Ss0+K;0&+fY%0l zHn*l&yh1wXQL+_m-=SSrqG1>~slxu|busf5<6WEB)}Sc!<+b~3LvE)trE|;Y>f#7j zVjI47w_{gfO04lox&q=)!#FLPd8g1bnFI_YG_zK^N%p6fSY6Gdtub30DSO>|c`b~m z09RZa=@-t^_=}hte?~D0KsfJnfXoCaKyVWMm|vG%FHobaK!OqBmI%W7z+1%Tp22~* z6aWE}JmMBjWkPU$;_Cz4P!wFxd?U_bwe0$~$}wTtPIdRIG-?*zjc`;N0u111(8V#| zwO?lTYbUx-=ny#cNe}7N_8{z0i4iO~O9un$)@TOxsGeTgT#-#$NGLFM$qlCCEV1p- ztB=)|u123REhwwy;7~CjiXu-)Q%Sx1yxXt-KD5Td3*iFQBwf2`pEuc3SGkEDREX0g zw^Q{elAc)Ql`cL55Q?uRkbYz(EM)9$t4fxB!oQW7f_9D!EbLbb4(1oujpwnrES?p- z3sn?=qL)CgQIt_&ibwRU{m}L_lv#Yv-W8SCx85q=hRQV?&(>WYVifa{ar&$$EyLJ3A(ppkHVK3Q^DDU7SZdShT+H3~(CZ#aWv0kT12HCLryL!q8C6V}}F4x2N(XKd{|<>#)* zCAb8C=i_0_!pUpH&twe-wWV`RAYORYB+;?8dOu)Uk^1@6u39SAhDHaD){KI)n=EW< z7093(#f?O;4aZqOki|A{5-+^5^($h4xo?cQ4OaT#Pu zAl~AQM!jGs-=VRm1wCe=5*+ Li2%RKaU*{LG( diff --git a/samples/h264SampleFrames/frame-1500.h264 b/samples/h264SampleFrames/frame-1500.h264 index 7f568e68af54ffcd1b71d467db38811a3071842a..036607205178f84d7fe87c91cccdd2c82ca52895 100644 GIT binary patch literal 1427 zcmah}doa{_0RR5>O?xbPthHx%35~~EChKi?wVt^{5~B&pA*3a*_AEawTFC`ve-k{6j(;iaVjBi$R{^lRM>xeNoU5yauErT@`1KC?dV|Io?}AfEsP z^ui55V9dv76LI^nwfrI3I`xA84{Lv-iUdJ6=ZVP~>VePYT)N(Iiw4I#6o!uYD@|QfXDxR%l{jSrbXfGPYR*Y|NMu-eZ zX-A^ixdx{hNNol#i6psmd%{FDCx?Whjr=kF&Y^fKf^RdT!g1(g`!xc;(sY4aS8Vm9 zRj;rzc42_e$Pu(v60szCF59A;6B0C@HHB<)Il z6UZg;klgeaZ78qghDMl_nEhi~#FmscPnQ%D>8n%5%>*dJ<8?`=ndd!czoFrj84K5n zy_HDkrUD)QQw`OeCs!0iGWZ?Xc@&RS1?S8IjcFK9u$a{4;%CjIfNgRd@X)1klp*qT zi(#`*x$!IOrY3#14Aa~Q)azj~^7y{b%02jQ^QsjZgI_1feYxDbTlE7-4RksM9b>Zm z66m~p0|4YrQ~(qxLtj;OVDc%Gk!gN3(t0Lz{#J}&ImjsZ*^U(80P#9^;pQVFv&MBC z9`ZVh9xxgG-o}o__nUecaU`fiGW;RvRtKp>S6>1=Dvb2(K519lidA#XVYqB>bYOSc#Ja#NI)o{xt9 zA%@;1v4xto@HMzmgS3hQyt9p;4zL!xWt=Z=fRQ@;ahl9aL2`R`lrb9H0>3{NdSh)aebQ)*$_r$LY$LCb5eZJv>Jfw3s8Xr`%iNS|4|C zAh_PP$ygQG+vud4gc<-~yEq+1luX2Kv9l5QN6qg1@x@}ad+!NCXeXLDP_kK`2~!7O z+_Txp?&OVjeFbAIb*RRXQ<4Otc41!>R9fq%N_ z-4fU@F-ve`wyXud)~~o6!xjW;Tjg^(@*K>T8h+m(^+;Ls4Yh}@!xT!5z6yZda zxUy8s9dNZ+*+OO}RvUhRrJ-+!f$(YHj;kdi!3A=~z;N)Hbg}FtEIg)EMCjO`aQx{? z+cH|hab|{eb?2oD&iL-E=6}R)oofrTypiXY^R+S?)ngJJRz5mtlwV_s3V_z;u{)l; zT-E0OMV~xcVmU|~*xhy%YI-a!BSlZt6Zu)j+!A|hq$ID|1=@E4HDE-NEdJcPbJ?H>8H8{~BG7B#@xM Gy#5=mf=si#cG$+VhY9qA$jY{&SS*ESEc=apJ;(s_98ul~MW+Hpcv9TuN4(s6;D(FrqwrQx zPZ8qwHcJ~W9LLPpGnLrz#AQX65dlg$4A&XK)9# zD!A1ldqdCnZym5_P$hX;%$z1!#LpaK4v191%RHYv^atAkos8KFCnPXHVts$(iovyw zuT##MZ(V#b@LJ(`*iXlUa2A|YeQ0$sHr;ZFUtn&1Mc$ZbnuV>sYQdQk{A2}UScyV~ zoc3qi?~aZQ$iK|cu)}kU%*_FUM#`s#sx^SN06>^~t#+VdZ*~m%65~ZzHbm*PgwY8p zR=@EC4OWR3_Q;c@{E8T@3R>%9#Ezg0y&c3;)Z21df_RDK${dJi+Gh!`g)X6hM-ZZ* zl2s3_bl7%G-K#=F@bZ?l^zfxC)5akLr$lZ#Oi?Xw*WOIpHHnt{n@LxUp46C~OHda0 z0!!@t=zN22bEU*Zun`@rX5e4o_snF>A%*y4al-(nLJ9l#r@6`sTu!_gJ$ zrwB7HFrQSS(aZ2(_lf=)(k-$0siycHDOzlhfcBCX0&5W%>`HzpY`-UKx-9-yR#&^O zZ9VZ^5b9=gBy#;>@5J$Hg=xU9-lE`zv5~HP4|S9A+8z>qU6fKkc^q8@y|Rr$z}oMkhTUVoGeLslamAmbmA>kt+PluvB9T z*3IW4-(UbNCjY6S473Nx=<}cRR=zd${xDaW|?`!c* diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index ef438266e5..a227f35af3 100644 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -2284,7 +2284,6 @@ STATUS incomingRelayedDataHandler(UINT64 customData, PSocketConnection pSocketCo CHK(pRelayedCandidate != NULL && pSocketConnection != NULL, STATUS_NULL_ARG); - DLOGV("Candidate id: %s", pRelayedCandidate->id); CHK_STATUS(turnConnectionIncomingDataHandler(pRelayedCandidate->pTurnConnection, pBuffer, bufferLen, pSrc, pDest, turnChannelData, &turnChannelDataCount)); for (i = 0; i < turnChannelDataCount; ++i) { From f31453fe957d2444708a4e68b7123b59d06bd7a4 Mon Sep 17 00:00:00 2001 From: jdelapla Date: Wed, 5 Apr 2023 11:23:46 -0700 Subject: [PATCH 072/102] Jitter buffer overflows (#1677) * Modified jitterbuffer to include checks for timestamp overflow * All tests passing, some new tests still need to be added * More tests and accompanying fixes * Resolve coverity finding of multiplication causing type overflow * Change function order * Clang format * Mac compile errors fixed * Commenting out long-running test, adding timestamp overflow test --- .gitignore | 1 + .../kinesis/video/webrtcclient/Include.h | 7 +- src/source/PeerConnection/JitterBuffer.c | 390 ++++++++-- src/source/PeerConnection/JitterBuffer.h | 7 +- src/source/PeerConnection/PeerConnection.c | 1 - tst/JitterBufferFunctionalityTest.cpp | 735 +++++++++++++++++- 6 files changed, 1092 insertions(+), 49 deletions(-) diff --git a/.gitignore b/.gitignore index ab8c440fa0..6cd9353247 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ open-source/ outputs tags CMakeLists.txt.user +*.swp diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 329dc9e499..a37c8de6cd 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -619,7 +619,12 @@ extern "C" { /** * Maximum sequence number in rtp packet/jitter buffer */ -#define MAX_SEQUENCE_NUM ((UINT32) MAX_UINT16) +#define MAX_RTP_SEQUENCE_NUM ((UINT32) MAX_UINT16) + +/** + * Maximum timestamp in rtp packet/jitter buffer + */ +#define MAX_RTP_TIMESTAMP ((UINT32) MAX_UINT32) /** * Parameterized string for KVS STUN Server diff --git a/src/source/PeerConnection/JitterBuffer.c b/src/source/PeerConnection/JitterBuffer.c index aea092edc0..300c3fe07c 100644 --- a/src/source/PeerConnection/JitterBuffer.c +++ b/src/source/PeerConnection/JitterBuffer.c @@ -32,11 +32,16 @@ STATUS createJitterBuffer(FrameReadyFunc onFrameReadyFunc, FrameDroppedFunc onFr } pJitterBuffer->maxLatency = pJitterBuffer->maxLatency * pJitterBuffer->clockRate / HUNDREDS_OF_NANOS_IN_A_SECOND; - pJitterBuffer->lastPushTimestamp = 0; + CHK(pJitterBuffer->maxLatency < MAX_RTP_TIMESTAMP, STATUS_INVALID_ARG); + + pJitterBuffer->tailTimestamp = 0; pJitterBuffer->headTimestamp = MAX_UINT32; - pJitterBuffer->headSequenceNumber = MAX_SEQUENCE_NUM; + pJitterBuffer->headSequenceNumber = MAX_RTP_SEQUENCE_NUM; + pJitterBuffer->tailSequenceNumber = MAX_RTP_SEQUENCE_NUM; pJitterBuffer->started = FALSE; pJitterBuffer->firstFrameProcessed = FALSE; + pJitterBuffer->timestampOverFlowState = FALSE; + pJitterBuffer->sequenceNumberOverflowState = FALSE; pJitterBuffer->customData = customData; CHK_STATUS(hashTableCreateWithParams(JITTER_BUFFER_HASH_TABLE_BUCKET_COUNT, JITTER_BUFFER_HASH_TABLE_BUCKET_LENGTH, @@ -70,7 +75,7 @@ STATUS freeJitterBuffer(PJitterBuffer* ppJitterBuffer) pJitterBuffer = *ppJitterBuffer; jitterBufferInternalParse(pJitterBuffer, TRUE); - jitterBufferDropBufferData(pJitterBuffer, 0, MAX_SEQUENCE_NUM, 0); + jitterBufferDropBufferData(pJitterBuffer, 0, MAX_RTP_SEQUENCE_NUM, 0); hashTableFree(pJitterBuffer->pPkgBufferHashTable); SAFE_MEMFREE(*ppJitterBuffer); @@ -82,6 +87,310 @@ STATUS freeJitterBuffer(PJitterBuffer* ppJitterBuffer) return retStatus; } +BOOL underflowPossible(PJitterBuffer pJitterBuffer, PRtpPacket pRtpPacket) +{ + BOOL retVal = FALSE; + UINT32 seqNoDifference = 0; + UINT64 timestampDifference = 0; + UINT64 maxTimePassed = 0; + if (pJitterBuffer->headTimestamp == pRtpPacket->header.timestamp) { + retVal = TRUE; + } else { + seqNoDifference = (MAX_RTP_SEQUENCE_NUM - pRtpPacket->header.sequenceNumber) + pJitterBuffer->headSequenceNumber; + if (pJitterBuffer->headTimestamp > pRtpPacket->header.timestamp) { + timestampDifference = pJitterBuffer->headTimestamp - pRtpPacket->header.timestamp; + } else { + timestampDifference = (MAX_RTP_TIMESTAMP - pRtpPacket->header.timestamp) + pJitterBuffer->headTimestamp; + } + + // 1 frame per second, and 1 packet per frame, the most charitable case we can consider + // TODO track most recent FPS to improve this metric + if ((MAX_RTP_TIMESTAMP / pJitterBuffer->clockRate) <= seqNoDifference) { + maxTimePassed = MAX_RTP_TIMESTAMP; + } else { + maxTimePassed = pJitterBuffer->clockRate * seqNoDifference; + } + + if (maxTimePassed >= timestampDifference) { + retVal = TRUE; + } + } + return retVal; +} + +BOOL headCheckingAllowed(PJitterBuffer pJitterBuffer, PRtpPacket pRtpPacket) +{ + BOOL retVal = FALSE; + /*If we haven't yet processed a frame yet, then we don't have a definitive way of knowing if + *the first packet we receive is actually the earliest packet we'll ever receive. Since sequence numbers + *can start anywhere from 0 - 65535, we need to incorporate some checks to determine if a newly received packet + *should be considered the new head. Part of how we determine this is by setting a limit to how many packets off we allow + *this out of order case to be. Without setting a limit, then we could run into an odd scenario. + * Example: + * Push->Packet->SeqNumber == 0. //FIRST PACKET! new head of buffer! + * Push->Packet->SeqNumber == 3. //... new head of 65532 packet sized frame? maybe? was 0 the tail? + * + * To resolve that insanity we set a MAX, and will use that MAX for the range. + * This logic is present in headSequenceNumberCheck() + * + *After the first frame has been processed we don't need or want to make this consideration, since if our parser has + *dropped a frame for a good reason then we want to ignore any packets from that dropped frame that may come later. + * + *However if the packet's timestamp is the same as the head timestamp, then it's possible this is simply an earlier + *sequence number of the same packet. + */ + if (!(pJitterBuffer->firstFrameProcessed) || pJitterBuffer->headTimestamp == pRtpPacket->header.timestamp) { + retVal = TRUE; + } + return retVal; +} + +// return true if pRtpPacket contains the head sequence number +BOOL headSequenceNumberCheck(PJitterBuffer pJitterBuffer, PRtpPacket pRtpPacket) +{ + BOOL retVal = FALSE; + UINT16 minimumHead = 0; + if (pJitterBuffer->headSequenceNumber >= MAX_OUT_OF_ORDER_PACKET_DIFFERENCE) { + minimumHead = pJitterBuffer->headSequenceNumber - MAX_OUT_OF_ORDER_PACKET_DIFFERENCE; + } + + // If we've already done this check and it was true + if (pJitterBuffer->headSequenceNumber == pRtpPacket->header.sequenceNumber) { + retVal = TRUE; + } else if (headCheckingAllowed(pJitterBuffer, pRtpPacket)) { + if (pJitterBuffer->sequenceNumberOverflowState) { + if (pJitterBuffer->tailSequenceNumber < pRtpPacket->header.sequenceNumber && + pJitterBuffer->headSequenceNumber > pRtpPacket->header.sequenceNumber && pRtpPacket->header.sequenceNumber >= minimumHead) { + // This purposefully misses the usecase where the buffer has >65000 entries. + // Our buffer is not designed for that use case, and it becomes far too ambiguous + // as to which packets are new tails or new heads without adding epoch checks. + pJitterBuffer->headSequenceNumber = pRtpPacket->header.sequenceNumber; + retVal = TRUE; + } + } else { + if (pRtpPacket->header.sequenceNumber < pJitterBuffer->headSequenceNumber) { + if (pRtpPacket->header.sequenceNumber >= minimumHead) { + pJitterBuffer->headSequenceNumber = pRtpPacket->header.sequenceNumber; + retVal = TRUE; + } + } + } + } + return retVal; +} + +// return true if pRtpPacket contains a new tail sequence number +BOOL tailSequenceNumberCheck(PJitterBuffer pJitterBuffer, PRtpPacket pRtpPacket) +{ + BOOL retVal = FALSE; + // If we've already done this check and it was true + if (pJitterBuffer->tailSequenceNumber == pRtpPacket->header.sequenceNumber) { + retVal = TRUE; + } else if (pRtpPacket->header.sequenceNumber > pJitterBuffer->tailSequenceNumber && + (!pJitterBuffer->sequenceNumberOverflowState || pJitterBuffer->headSequenceNumber > pRtpPacket->header.sequenceNumber)) { + retVal = TRUE; + pJitterBuffer->tailSequenceNumber = pRtpPacket->header.sequenceNumber; + } + return retVal; +} + +// return true if sequence numbers are now overflowing +BOOL enterSequenceNumberOverflowCheck(PJitterBuffer pJitterBuffer, PRtpPacket pRtpPacket) +{ + BOOL overflow = FALSE; + BOOL underflow = FALSE; + UINT16 packetsUntilOverflow = MAX_RTP_SEQUENCE_NUM - pJitterBuffer->tailSequenceNumber; + + if (!pJitterBuffer->sequenceNumberOverflowState) { + // overflow case + if (MAX_OUT_OF_ORDER_PACKET_DIFFERENCE >= packetsUntilOverflow) { + // It's possible sequence numbers and timestamps are both overflowing. + if (pRtpPacket->header.sequenceNumber < pJitterBuffer->tailSequenceNumber && + pRtpPacket->header.sequenceNumber <= MAX_OUT_OF_ORDER_PACKET_DIFFERENCE - packetsUntilOverflow) { + // Sequence number overflow detected + overflow = TRUE; + } + } + // underflow case + else if (headCheckingAllowed(pJitterBuffer, pRtpPacket)) { + if (pJitterBuffer->headSequenceNumber < MAX_OUT_OF_ORDER_PACKET_DIFFERENCE) { + if (pRtpPacket->header.sequenceNumber >= (MAX_UINT16 - (MAX_OUT_OF_ORDER_PACKET_DIFFERENCE - pJitterBuffer->headSequenceNumber))) { + // Possible sequence number underflow detected, now lets check the timestamps to be certain + // this is an earlier value, and not a much later. + if (underflowPossible(pJitterBuffer, pRtpPacket)) { + underflow = TRUE; + } + } + } + } + } + if (overflow && underflow) { + // This shouldn't be possible. + DLOGE("Critical underflow/overflow error in jitterbuffer"); + } + if (overflow) { + pJitterBuffer->sequenceNumberOverflowState = TRUE; + pJitterBuffer->tailSequenceNumber = pRtpPacket->header.sequenceNumber; + pJitterBuffer->tailTimestamp = pRtpPacket->header.timestamp; + } + if (underflow) { + pJitterBuffer->sequenceNumberOverflowState = TRUE; + pJitterBuffer->headSequenceNumber = pRtpPacket->header.sequenceNumber; + pJitterBuffer->headTimestamp = pRtpPacket->header.timestamp; + } + return (overflow || underflow); +} + +BOOL enterTimestampOverflowCheck(PJitterBuffer pJitterBuffer, PRtpPacket pRtpPacket) +{ + BOOL underflow = FALSE; + BOOL overflow = FALSE; + if (!pJitterBuffer->timestampOverFlowState) { + // overflow check + if (pJitterBuffer->headTimestamp > pRtpPacket->header.timestamp && pJitterBuffer->tailTimestamp > pRtpPacket->header.timestamp) { + // Check to see if this could be a timestamp overflow case + // We always check sequence number first, so the 'or equal to' checks if we just set the tail. + // That would be a corner case of sequence number and timestamp both overflowing + // in this one packet. + if (tailSequenceNumberCheck(pJitterBuffer, pRtpPacket)) { + // RTP timestamp overflow detected! + overflow = TRUE; + } + } + // underflow check + else if (pJitterBuffer->headTimestamp < pRtpPacket->header.timestamp && pJitterBuffer->tailTimestamp < pRtpPacket->header.timestamp) { + if (headSequenceNumberCheck(pJitterBuffer, pRtpPacket)) { + underflow = TRUE; + } + } + } + if (overflow && underflow) { + // This shouldn't be possible. + DLOGE("Critical underflow/overflow error in jitterbuffer"); + } + if (overflow) { + pJitterBuffer->timestampOverFlowState = TRUE; + pJitterBuffer->tailTimestamp = pRtpPacket->header.timestamp; + } else if (underflow) { + pJitterBuffer->timestampOverFlowState = TRUE; + pJitterBuffer->headTimestamp = pRtpPacket->header.timestamp; + } + return (underflow || overflow); +} + +BOOL exitSequenceNumberOverflowCheck(PJitterBuffer pJitterBuffer) +{ + BOOL retVal = FALSE; + + // can't exit if you're not in it + if (pJitterBuffer->sequenceNumberOverflowState) { + if (pJitterBuffer->headSequenceNumber <= pJitterBuffer->tailSequenceNumber) { + pJitterBuffer->sequenceNumberOverflowState = FALSE; + retVal = TRUE; + } + } + + return retVal; +} + +BOOL exitTimestampOverflowCheck(PJitterBuffer pJitterBuffer) +{ + BOOL retVal = FALSE; + + // can't exit if you're not in it + if (pJitterBuffer->timestampOverFlowState) { + if (pJitterBuffer->headTimestamp <= pJitterBuffer->tailTimestamp) { + pJitterBuffer->timestampOverFlowState = FALSE; + retVal = TRUE; + } + } + + return retVal; +} + +// return true if pRtpPacket contains a new head timestamp +BOOL headTimestampCheck(PJitterBuffer pJitterBuffer, PRtpPacket pRtpPacket) +{ + BOOL retVal = FALSE; + + if (headCheckingAllowed(pJitterBuffer, pRtpPacket)) { + if (pJitterBuffer->timestampOverFlowState) { + if (pJitterBuffer->headTimestamp > pRtpPacket->header.timestamp && pJitterBuffer->tailTimestamp < pRtpPacket->header.timestamp) { + // in the correct range to be a new head or new tail. + // if it's also the head sequence number then it's the new headtimestamp + if (headSequenceNumberCheck(pJitterBuffer, pRtpPacket)) { + pJitterBuffer->headTimestamp = pRtpPacket->header.timestamp; + retVal = TRUE; + } + } + } else { + if (pJitterBuffer->headTimestamp > pRtpPacket->header.timestamp || pJitterBuffer->tailTimestamp < pRtpPacket->header.timestamp) { + // in the correct range to be a new head or new tail. + // if it's also the head sequence number then it's the new headtimestamp + if (headSequenceNumberCheck(pJitterBuffer, pRtpPacket)) { + pJitterBuffer->headTimestamp = pRtpPacket->header.timestamp; + retVal = TRUE; + } + } + } + } + return retVal; +} + +// return true if pRtpPacket contains a new tail timestamp +BOOL tailTimestampCheck(PJitterBuffer pJitterBuffer, PRtpPacket pRtpPacket) +{ + BOOL retVal = FALSE; + + if (pJitterBuffer->tailTimestamp < pRtpPacket->header.timestamp) { + if (!pJitterBuffer->timestampOverFlowState || pJitterBuffer->headTimestamp > pRtpPacket->header.timestamp) { + // in the correct range to be a new head or new tail. + // if it's also the tail sequence number then it's the new tail timestamp + if (tailSequenceNumberCheck(pJitterBuffer, pRtpPacket)) { + pJitterBuffer->tailTimestamp = pRtpPacket->header.timestamp; + retVal = TRUE; + } + } + } + return retVal; +} + +// return true if pRtpPacket is within the latency tolerance (not much earlier than current head) +BOOL withinLatencyTolerance(PJitterBuffer pJitterBuffer, PRtpPacket pRtpPacket) +{ + BOOL retVal = FALSE; + UINT32 minimumTimestamp = 0; + + // Simple check, if we're at or past the tail timestamp then we're always within latency tolerance. + // overflow is checked earlier + if (tailTimestampCheck(pJitterBuffer, pRtpPacket) || pJitterBuffer->tailTimestamp == pRtpPacket->header.timestamp) { + retVal = TRUE; + } else { + // Is our tail current less than our head due to timestamp overflow? + if (pJitterBuffer->timestampOverFlowState) { + // calculate max-latency across the overflow boundry without triggering underflow + if (pJitterBuffer->tailTimestamp < pJitterBuffer->maxLatency) { + minimumTimestamp = MAX_RTP_TIMESTAMP - (pJitterBuffer->maxLatency - pJitterBuffer->tailTimestamp); + } + // Is the packet within the current range or is it a new head/tail + if (pRtpPacket->header.timestamp < pJitterBuffer->tailTimestamp || pRtpPacket->header.timestamp > pJitterBuffer->headTimestamp) { + // The packet is within the current range + retVal = TRUE; + } + // The only remaining option is that timestamp must be before headTimestamp + else if (pRtpPacket->header.timestamp >= minimumTimestamp) { + retVal = TRUE; + } + } else { + if ((pRtpPacket->header.timestamp < pJitterBuffer->maxLatency && pJitterBuffer->tailTimestamp <= pJitterBuffer->maxLatency) || + pRtpPacket->header.timestamp >= pJitterBuffer->tailTimestamp - pJitterBuffer->maxLatency) { + retVal = TRUE; + } + } + } + return retVal; +} + STATUS jitterBufferPush(PJitterBuffer pJitterBuffer, PRtpPacket pRtpPacket, PBOOL pPacketDiscarded) { ENTERS(); @@ -95,16 +404,27 @@ STATUS jitterBufferPush(PJitterBuffer pJitterBuffer, PRtpPacket pRtpPacket, PBOO // Set to started and initialize the sequence number pJitterBuffer->started = TRUE; pJitterBuffer->headSequenceNumber = pRtpPacket->header.sequenceNumber; + pJitterBuffer->tailSequenceNumber = pRtpPacket->header.sequenceNumber; pJitterBuffer->headTimestamp = pRtpPacket->header.timestamp; } - if (pJitterBuffer->lastPushTimestamp < pRtpPacket->header.timestamp) { - pJitterBuffer->lastPushTimestamp = pRtpPacket->header.timestamp; + // We'll check sequence numbers first, with our MAX Out of Order packet count to avoid + // defining a timestamp window for overflow + // Returning true means this packet is a new tail AND we've entered overflow state. + if (!enterSequenceNumberOverflowCheck(pJitterBuffer, pRtpPacket)) { + tailSequenceNumberCheck(pJitterBuffer, pRtpPacket); + } else { + DLOGS("Entered sequenceNumber overflow state"); + } + + if (!enterTimestampOverflowCheck(pJitterBuffer, pRtpPacket)) { + tailTimestampCheck(pJitterBuffer, pRtpPacket); + } else { + DLOGS("Entered timestamp overflow state"); } // is the packet within the accepted latency range, if so, add it to the hashtable - if ((pRtpPacket->header.timestamp < pJitterBuffer->maxLatency && pJitterBuffer->lastPushTimestamp <= pJitterBuffer->maxLatency) || - pRtpPacket->header.timestamp >= pJitterBuffer->lastPushTimestamp - pJitterBuffer->maxLatency) { + if (withinLatencyTolerance(pJitterBuffer, pRtpPacket)) { status = hashTableGet(pJitterBuffer->pPkgBufferHashTable, pRtpPacket->header.sequenceNumber, &hashValue); pCurPacket = (PRtpPacket) hashValue; if (STATUS_SUCCEEDED(status) && pCurPacket != NULL) { @@ -114,38 +434,13 @@ STATUS jitterBufferPush(PJitterBuffer pJitterBuffer, PRtpPacket pRtpPacket, PBOO CHK_STATUS(hashTablePut(pJitterBuffer->pPkgBufferHashTable, pRtpPacket->header.sequenceNumber, (UINT64) pRtpPacket)); - /*If we haven't yet processed a frame yet, then we don't have a definitive way of knowing if - *the first packet we receive is actually the earliest packet we'll ever receive. Since sequence numbers - *can start anywhere from 0 - 65535, we need to incorporate some checks to determine if a newly received packet - *should be considered the new head. Part of how we determine this is by setting a limit to how many packets off we allow - *this out of order case to be. Without setting a limit, then we could run into an odd scenario. - * Example: - * Push->Packet->SeqNumber == 0. //FIRST PACKET! new head of buffer! - * Push->Packet->SeqNumber == 3. //... new head of 65532 packet sized frame? maybe? was 0 the tail? - * - * To resolve that insanity we set a MAX, and will use that MAX for the range. - * - *After the first frame has been processed we don't need or want to make this consideration, since if our parser has - *dropped a frame for a good reason then we want to ignore any packets from that dropped frame that may come later. - */ - if (!(pJitterBuffer->firstFrameProcessed)) { + if (headCheckingAllowed(pJitterBuffer, pRtpPacket)) { // if the timestamp is less, we'll accept it as a new head, since it must be an earlier frame. - if (pRtpPacket->header.timestamp < pJitterBuffer->headTimestamp) { - pJitterBuffer->headSequenceNumber = pRtpPacket->header.sequenceNumber; - pJitterBuffer->headTimestamp = pRtpPacket->header.timestamp; + if (headTimestampCheck(pJitterBuffer, pRtpPacket)) { + DLOGS("New jitterbuffer head timestamp"); } - // timestamp is equal, we're in the same frame. - else if (pRtpPacket->header.timestamp == pJitterBuffer->headTimestamp) { - if (pJitterBuffer->headSequenceNumber < MAX_OUT_OF_ORDER_PACKET_DIFFERENCE) { - if ((pRtpPacket->header.sequenceNumber >= - (MAX_UINT16 - (MAX_OUT_OF_ORDER_PACKET_DIFFERENCE - pJitterBuffer->headSequenceNumber))) || - (pJitterBuffer->headSequenceNumber > pRtpPacket->header.sequenceNumber)) { - pJitterBuffer->headSequenceNumber = pRtpPacket->header.sequenceNumber; - } - } else if ((pRtpPacket->header.sequenceNumber >= pJitterBuffer->headSequenceNumber - MAX_OUT_OF_ORDER_PACKET_DIFFERENCE) && - (pRtpPacket->header.sequenceNumber < pJitterBuffer->headSequenceNumber)) { - pJitterBuffer->headSequenceNumber = pRtpPacket->header.sequenceNumber; - } + if (headSequenceNumberCheck(pJitterBuffer, pRtpPacket)) { + DLOGS("New jitterbuffer head sequenceNumber"); } } // DONE with considering the head. @@ -187,13 +482,13 @@ STATUS jitterBufferInternalParse(PJitterBuffer pJitterBuffer, BOOL bufferClosed) PRtpPacket pCurPacket = NULL; CHK(pJitterBuffer != NULL && pJitterBuffer->onFrameDroppedFn != NULL && pJitterBuffer->onFrameReadyFn != NULL, STATUS_NULL_ARG); - CHK(pJitterBuffer->lastPushTimestamp != 0, retStatus); + CHK(pJitterBuffer->tailTimestamp != 0, retStatus); - if (pJitterBuffer->lastPushTimestamp > pJitterBuffer->maxLatency) { - earliestAllowedTimestamp = pJitterBuffer->lastPushTimestamp - pJitterBuffer->maxLatency; + if (pJitterBuffer->tailTimestamp > pJitterBuffer->maxLatency) { + earliestAllowedTimestamp = pJitterBuffer->tailTimestamp - pJitterBuffer->maxLatency; } - lastIndex = pJitterBuffer->headSequenceNumber - 1; + lastIndex = pJitterBuffer->tailSequenceNumber + 1; index = pJitterBuffer->headSequenceNumber; startDropIndex = index; // Loop through entire buffer to find complete frames. @@ -210,7 +505,6 @@ STATUS jitterBufferInternalParse(PJitterBuffer pJitterBuffer, BOOL bufferClosed) * *The buffer is parsed in order of sequence numbers. It is important to note that if the Frame ready *conditions have been met from dropping an earlier frame, then it will be processed. - * */ for (; index != lastIndex; index++) { CHK_STATUS(hashTableContains(pJitterBuffer->pPkgBufferHashTable, index, &hasEntry)); @@ -242,10 +536,10 @@ STATUS jitterBufferInternalParse(PJitterBuffer pJitterBuffer, BOOL bufferClosed) startDropIndex = index; containStartForEarliestFrame = FALSE; } - // are we force clearing out the buffer? if so drop the contents of incomplete frame + // are we forcibly clearing out the buffer? if so drop the contents of incomplete frame else if (pJitterBuffer->headTimestamp < earliestAllowedTimestamp || bufferClosed) { - CHK_STATUS( - pJitterBuffer->onFrameDroppedFn(pJitterBuffer->customData, startDropIndex, UINT16_DEC(index), pJitterBuffer->headTimestamp)); + // do not CHK_STATUS of onFrameDropped because we need to clear the jitter buffer no matter what else happens. + pJitterBuffer->onFrameDroppedFn(pJitterBuffer->customData, startDropIndex, UINT16_DEC(index), pJitterBuffer->headTimestamp); CHK_STATUS(jitterBufferDropBufferData(pJitterBuffer, startDropIndex, UINT16_DEC(index), curTimestamp)); pJitterBuffer->firstFrameProcessed = TRUE; isFrameDataContinuous = TRUE; @@ -325,6 +619,12 @@ STATUS jitterBufferDropBufferData(PJitterBuffer pJitterBuffer, UINT16 startIndex } pJitterBuffer->headTimestamp = nextTimestamp; pJitterBuffer->headSequenceNumber = endIndex + 1; + if (exitTimestampOverflowCheck(pJitterBuffer)) { + DLOGS("Exited timestamp overflow state"); + } + if (exitSequenceNumberOverflowCheck(pJitterBuffer)) { + DLOGS("Exited sequenceNumber overflow state"); + } CleanUp: CHK_LOG_ERR(retStatus); diff --git a/src/source/PeerConnection/JitterBuffer.h b/src/source/PeerConnection/JitterBuffer.h index a5a0ca59be..543b05c78c 100644 --- a/src/source/PeerConnection/JitterBuffer.h +++ b/src/source/PeerConnection/JitterBuffer.h @@ -28,14 +28,19 @@ typedef struct { UINT64 transit; // holds estimated jitter, in clockRate units DOUBLE jitter; - UINT32 lastPushTimestamp; UINT16 headSequenceNumber; + UINT16 tailSequenceNumber; UINT32 headTimestamp; + UINT32 tailTimestamp; + // this is set to U64 even though rtp timestamps are U32 + // in order to allow calculations to not cause overflow UINT64 maxLatency; UINT64 customData; UINT32 clockRate; BOOL started; BOOL firstFrameProcessed; + BOOL sequenceNumberOverflowState; + BOOL timestampOverFlowState; PHashTable pPkgBufferHashTable; } JitterBuffer, *PJitterBuffer; diff --git a/src/source/PeerConnection/PeerConnection.c b/src/source/PeerConnection/PeerConnection.c index 584880ac69..836f1157f4 100644 --- a/src/source/PeerConnection/PeerConnection.c +++ b/src/source/PeerConnection/PeerConnection.c @@ -367,7 +367,6 @@ STATUS onFrameDroppedFunc(UINT64 customData, UINT16 startIndex, UINT16 endIndex, } else { CHK(FALSE, retStatus); } - // TODO: handle multi-packet frames CHK(pPacket != NULL, STATUS_NULL_ARG); MUTEX_LOCK(pTransceiver->statsLock); // https://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-jitterbufferdelay diff --git a/tst/JitterBufferFunctionalityTest.cpp b/tst/JitterBufferFunctionalityTest.cpp index c857bea78a..8408629df5 100644 --- a/tst/JitterBufferFunctionalityTest.cpp +++ b/tst/JitterBufferFunctionalityTest.cpp @@ -14,6 +14,10 @@ TEST_F(JitterBufferFunctionalityTest, continousPacketsComeInOrder) { UINT32 i; UINT32 pktCount = 5; + UINT32 startingSequenceNumber = 0; + srand(time(0)); + startingSequenceNumber = rand()%UINT16_MAX; + initializeJitterBuffer(3, 0, pktCount); // First frame "1" at timestamp 100 - rtp packet #0 @@ -22,6 +26,7 @@ TEST_F(JitterBufferFunctionalityTest, continousPacketsComeInOrder) mPRtpPackets[0]->payload[0] = 1; mPRtpPackets[0]->payload[1] = 1; // First packet of a frame mPRtpPackets[0]->header.timestamp = 100; + mPRtpPackets[0]->header.sequenceNumber = startingSequenceNumber++; // Expected to get frame "1" mPExpectedFrameArr[0] = (PBYTE) MEMALLOC(1); @@ -34,12 +39,15 @@ TEST_F(JitterBufferFunctionalityTest, continousPacketsComeInOrder) mPRtpPackets[1]->payload[0] = 2; mPRtpPackets[1]->payload[1] = 1; // First packet of a frame mPRtpPackets[1]->header.timestamp = 200; + mPRtpPackets[1]->header.sequenceNumber = startingSequenceNumber++; + mPRtpPackets[2]->payloadLength = 2; mPRtpPackets[2]->payload = (PBYTE) MEMALLOC(mPRtpPackets[2]->payloadLength + 1); mPRtpPackets[2]->payload[0] = 3; mPRtpPackets[2]->payload[1] = 4; mPRtpPackets[2]->payload[2] = 0; // following packet of a frame mPRtpPackets[2]->header.timestamp = 200; + mPRtpPackets[2]->header.sequenceNumber = startingSequenceNumber++; // Expected to get frame "234" mPExpectedFrameArr[1] = (PBYTE) MEMALLOC(3); @@ -55,11 +63,13 @@ TEST_F(JitterBufferFunctionalityTest, continousPacketsComeInOrder) mPRtpPackets[3]->payload[1] = 6; mPRtpPackets[3]->payload[2] = 1; // First packet of a frame mPRtpPackets[3]->header.timestamp = 300; + mPRtpPackets[3]->header.sequenceNumber = startingSequenceNumber++; mPRtpPackets[4]->payloadLength = 1; mPRtpPackets[4]->payload = (PBYTE) MEMALLOC(mPRtpPackets[4]->payloadLength + 1); mPRtpPackets[4]->payload[0] = 7; mPRtpPackets[4]->payload[1] = 0; // Following packet of a frame mPRtpPackets[4]->header.timestamp = 300; + mPRtpPackets[4]->header.sequenceNumber = startingSequenceNumber++; // Expected to get frame "567" at close mPExpectedFrameArr[2] = (PBYTE) MEMALLOC(3); @@ -224,7 +234,7 @@ TEST_F(JitterBufferFunctionalityTest, gapBetweenTwoContinousPackets) mPRtpPackets[3]->header.timestamp = 400; mPRtpPackets[3]->header.sequenceNumber = 5; - // Expected to dropped frames when "2" "5" is not received + // Expected to dropped frames when "1" "4" is not received mExpectedDroppedFrameTimestampArr[0] = 100; mExpectedDroppedFrameTimestampArr[1] = 200; @@ -1120,6 +1130,729 @@ TEST_F(JitterBufferFunctionalityTest, latePacketsOfAlreadyDroppedFrame) clearJitterBufferForTest(); } + +TEST_F(JitterBufferFunctionalityTest, timestampOverflowTest) +{ + UINT32 i; + UINT32 pktCount = 7; + UINT32 startingSequenceNumber = 0; + UINT32 missingSequenceNumber = 0; + UINT32 firstSequenceNumber = 0; + initializeJitterBuffer(4, 0, pktCount); + srand(time(0)); + startingSequenceNumber = rand()%UINT16_MAX; + firstSequenceNumber = startingSequenceNumber - 1; + + // First frame "1" + mPRtpPackets[0]->payloadLength = 1; + mPRtpPackets[0]->payload = (PBYTE) MEMALLOC(mPRtpPackets[0]->payloadLength + 1); + mPRtpPackets[0]->payload[0] = 1; + mPRtpPackets[0]->payload[1] = 1; // First packet of a frame + mPRtpPackets[0]->header.timestamp = MAX_RTP_TIMESTAMP - 500; + mPRtpPackets[0]->header.sequenceNumber = startingSequenceNumber++; + + mPRtpPackets[1]->payloadLength = 1; + mPRtpPackets[1]->payload = (PBYTE) MEMALLOC(mPRtpPackets[1]->payloadLength + 1); + mPRtpPackets[1]->payload[0] = 2; + mPRtpPackets[1]->payload[1] = 0; + mPRtpPackets[1]->header.timestamp = MAX_RTP_TIMESTAMP - 500; + mPRtpPackets[1]->header.sequenceNumber = startingSequenceNumber++; + + mPRtpPackets[2]->payloadLength = 1; + mPRtpPackets[2]->payload = (PBYTE) MEMALLOC(mPRtpPackets[2]->payloadLength + 1); + mPRtpPackets[2]->payload[0] = 3; + mPRtpPackets[2]->payload[1] = 0; + mPRtpPackets[2]->header.timestamp = MAX_RTP_TIMESTAMP - 500; + mPRtpPackets[2]->header.sequenceNumber = startingSequenceNumber++; + missingSequenceNumber = startingSequenceNumber++; + + // Expected to get frame "1234" + mPExpectedFrameArr[0] = (PBYTE) MEMALLOC(4); + mPExpectedFrameArr[0][0] = 1; + mPExpectedFrameArr[0][1] = 2; + mPExpectedFrameArr[0][2] = 3; + mPExpectedFrameArr[0][3] = 4; + mExpectedFrameSizeArr[0] = 4; + + // Second frame "2" + mPRtpPackets[3]->payloadLength = 1; + mPRtpPackets[3]->payload = (PBYTE) MEMALLOC(mPRtpPackets[3]->payloadLength + 1); + mPRtpPackets[3]->payload[0] = 2; + mPRtpPackets[3]->payload[1] = 1; // First packet of a frame + mPRtpPackets[3]->header.timestamp = MAX_RTP_TIMESTAMP - 100; + mPRtpPackets[3]->header.sequenceNumber = startingSequenceNumber++; + + // Expected to get frame "2" + mPExpectedFrameArr[1] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[1][0] = 2; + mExpectedFrameSizeArr[1] = 1; + + // Third frame "3" + mPRtpPackets[4]->payloadLength = 1; + mPRtpPackets[4]->payload = (PBYTE) MEMALLOC(mPRtpPackets[4]->payloadLength + 1); + mPRtpPackets[4]->payload[0] = 3; + mPRtpPackets[4]->payload[1] = 1; // First packet of a frame + mPRtpPackets[4]->header.timestamp = 300; + mPRtpPackets[4]->header.sequenceNumber = startingSequenceNumber++; + + // Expected to get frame "3" at close + mPExpectedFrameArr[2] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[2][0] = 3; + mExpectedFrameSizeArr[2] = 1; + + // Third frame "4" + mPRtpPackets[5]->payloadLength = 1; + mPRtpPackets[5]->payload = (PBYTE) MEMALLOC(mPRtpPackets[5]->payloadLength + 1); + mPRtpPackets[5]->payload[0] = 4; + mPRtpPackets[5]->payload[1] = 1; // First packet of a frame + mPRtpPackets[5]->header.timestamp = 600; + mPRtpPackets[5]->header.sequenceNumber = startingSequenceNumber++; + + // Expected to get frame "4" at close + mPExpectedFrameArr[3] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[3][0] = 4; + mExpectedFrameSizeArr[3] = 1; + + mPRtpPackets[6]->payloadLength = 1; + mPRtpPackets[6]->payload = (PBYTE) MEMALLOC(mPRtpPackets[6]->payloadLength + 1); + mPRtpPackets[6]->payload[0] = 4; + mPRtpPackets[6]->payload[1] = 0; // First packet of a frame + mPRtpPackets[6]->header.timestamp = MAX_RTP_TIMESTAMP - 500; + mPRtpPackets[6]->header.sequenceNumber = missingSequenceNumber; + + setPayloadToFree(); + + for (i = 0; i < pktCount; i++) { + EXPECT_EQ(STATUS_SUCCESS, jitterBufferPush(mJitterBuffer, mPRtpPackets[i], nullptr)); + switch (i) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + EXPECT_EQ(0, mReadyFrameIndex); + break; + case 6: + EXPECT_EQ(3, mReadyFrameIndex); + break; + default: + ASSERT_TRUE(FALSE); + } + EXPECT_EQ(0, mDroppedFrameIndex); + } + + clearJitterBufferForTest(); +} + +TEST_F(JitterBufferFunctionalityTest, timestampUnderflowTest) +{ + UINT32 i; + UINT32 pktCount = 8; + UINT32 startingSequenceNumber = 0; + UINT32 missingSequenceNumber = 0; + UINT32 firstSequenceNumber = 0; + srand(time(0)); + startingSequenceNumber = rand()%UINT16_MAX; + firstSequenceNumber = startingSequenceNumber - 1; + + initializeJitterBuffer(5, 0, pktCount); + + // Second frame "1234" at timestamp 0 -- first frame comes later + // The "4" will come late + mPRtpPackets[0]->payloadLength = 1; + mPRtpPackets[0]->payload = (PBYTE) MEMALLOC(mPRtpPackets[0]->payloadLength + 1); + mPRtpPackets[0]->payload[0] = 1; + mPRtpPackets[0]->payload[1] = 1; // First packet of a frame + mPRtpPackets[0]->header.timestamp = 0; + mPRtpPackets[0]->header.sequenceNumber = startingSequenceNumber++; + + mPRtpPackets[1]->payloadLength = 1; + mPRtpPackets[1]->payload = (PBYTE) MEMALLOC(mPRtpPackets[1]->payloadLength + 1); + mPRtpPackets[1]->payload[0] = 2; + mPRtpPackets[1]->payload[1] = 0; + mPRtpPackets[1]->header.timestamp = 0; + mPRtpPackets[1]->header.sequenceNumber = startingSequenceNumber++; + + mPRtpPackets[2]->payloadLength = 1; + mPRtpPackets[2]->payload = (PBYTE) MEMALLOC(mPRtpPackets[2]->payloadLength + 1); + mPRtpPackets[2]->payload[0] = 3; + mPRtpPackets[2]->payload[1] = 0; + mPRtpPackets[2]->header.timestamp = 0; + mPRtpPackets[2]->header.sequenceNumber = startingSequenceNumber++; + + //sequence number of 4th packet of this frame + missingSequenceNumber = startingSequenceNumber++; + + // Expected to get frame "1234" + mPExpectedFrameArr[1] = (PBYTE) MEMALLOC(4); + mPExpectedFrameArr[1][0] = 1; + mPExpectedFrameArr[1][1] = 2; + mPExpectedFrameArr[1][2] = 3; + mPExpectedFrameArr[1][3] = 4; + mExpectedFrameSizeArr[1] = 4; + + // Third frame "2" at timestamp 300 + mPRtpPackets[3]->payloadLength = 1; + mPRtpPackets[3]->payload = (PBYTE) MEMALLOC(mPRtpPackets[3]->payloadLength + 1); + mPRtpPackets[3]->payload[0] = 2; + mPRtpPackets[3]->payload[1] = 1; // First packet of a frame + mPRtpPackets[3]->header.timestamp = 300; + mPRtpPackets[3]->header.sequenceNumber = startingSequenceNumber++; + + // Expected to get frame "2" + mPExpectedFrameArr[2] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[2][0] = 2; + mExpectedFrameSizeArr[2] = 1; + + // Fourth frame "3" at timestamp 600 + mPRtpPackets[4]->payloadLength = 1; + mPRtpPackets[4]->payload = (PBYTE) MEMALLOC(mPRtpPackets[4]->payloadLength + 1); + mPRtpPackets[4]->payload[0] = 3; + mPRtpPackets[4]->payload[1] = 1; // First packet of a frame + mPRtpPackets[4]->header.timestamp = 600; + mPRtpPackets[4]->header.sequenceNumber = startingSequenceNumber++; + + // Expected to get frame "3" at close + mPExpectedFrameArr[3] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[3][0] = 3; + mExpectedFrameSizeArr[3] = 1; + + // Fifth frame "4" at timestamp 400 - rtp packet #1 + mPRtpPackets[5]->payloadLength = 1; + mPRtpPackets[5]->payload = (PBYTE) MEMALLOC(mPRtpPackets[5]->payloadLength + 1); + mPRtpPackets[5]->payload[0] = 4; + mPRtpPackets[5]->payload[1] = 1; // First packet of a frame + mPRtpPackets[5]->header.timestamp = 900; + mPRtpPackets[5]->header.sequenceNumber = startingSequenceNumber++; + + // Expected to get frame "4" at close + mPExpectedFrameArr[4] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[4][0] = 4; + mExpectedFrameSizeArr[4] = 1; + + // Actual first frame, underflow timestamp + mPRtpPackets[6]->payloadLength = 1; + mPRtpPackets[6]->payload = (PBYTE) MEMALLOC(mPRtpPackets[6]->payloadLength + 1); + mPRtpPackets[6]->payload[0] = 4; + mPRtpPackets[6]->payload[1] = 1; // First packet of a frame + mPRtpPackets[6]->header.timestamp = MAX_RTP_TIMESTAMP - 300; + mPRtpPackets[6]->header.sequenceNumber = firstSequenceNumber; + + // Expected to get frame "4" at close + mPExpectedFrameArr[0] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[0][0] = 4; + mExpectedFrameSizeArr[0] = 1; + + // Missing 4th packet in 2nd frame + mPRtpPackets[7]->payloadLength = 1; + mPRtpPackets[7]->payload = (PBYTE) MEMALLOC(mPRtpPackets[7]->payloadLength + 1); + mPRtpPackets[7]->payload[0] = 4; + mPRtpPackets[7]->payload[1] = 0; + mPRtpPackets[7]->header.timestamp = 0; + mPRtpPackets[7]->header.sequenceNumber = missingSequenceNumber; + + setPayloadToFree(); + + for (i = 0; i < pktCount; i++) { + EXPECT_EQ(STATUS_SUCCESS, jitterBufferPush(mJitterBuffer, mPRtpPackets[i], nullptr)); + switch (i) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + EXPECT_EQ(0, mReadyFrameIndex); + break; + case 6: + EXPECT_EQ(1, mReadyFrameIndex); + break; + case 7: + EXPECT_EQ(4, mReadyFrameIndex); + break; + default: + ASSERT_TRUE(FALSE); + } + EXPECT_EQ(0, mDroppedFrameIndex); + } + + clearJitterBufferForTest(); +} + +TEST_F(JitterBufferFunctionalityTest, SequenceNumberOverflowTest) +{ + UINT32 i; + UINT32 pktCount = 7; + initializeJitterBuffer(4, 0, pktCount); + + // First frame "1" at timestamp 100 - rtp packet #65534 + mPRtpPackets[0]->payloadLength = 1; + mPRtpPackets[0]->payload = (PBYTE) MEMALLOC(mPRtpPackets[0]->payloadLength + 1); + mPRtpPackets[0]->payload[0] = 1; + mPRtpPackets[0]->payload[1] = 1; // First packet of a frame + mPRtpPackets[0]->header.timestamp = 100; + mPRtpPackets[0]->header.sequenceNumber = 65534; + + mPRtpPackets[1]->payloadLength = 1; + mPRtpPackets[1]->payload = (PBYTE) MEMALLOC(mPRtpPackets[1]->payloadLength + 1); + mPRtpPackets[1]->payload[0] = 2; + mPRtpPackets[1]->payload[1] = 0; + mPRtpPackets[1]->header.timestamp = 100; + mPRtpPackets[1]->header.sequenceNumber = 65535; + + mPRtpPackets[2]->payloadLength = 1; + mPRtpPackets[2]->payload = (PBYTE) MEMALLOC(mPRtpPackets[2]->payloadLength + 1); + mPRtpPackets[2]->payload[0] = 3; + mPRtpPackets[2]->payload[1] = 0; + mPRtpPackets[2]->header.timestamp = 100; + mPRtpPackets[2]->header.sequenceNumber = 0; + + // Expected to get frame "1234" + mPExpectedFrameArr[0] = (PBYTE) MEMALLOC(4); + mPExpectedFrameArr[0][0] = 1; + mPExpectedFrameArr[0][1] = 2; + mPExpectedFrameArr[0][2] = 3; + mPExpectedFrameArr[0][3] = 4; + mExpectedFrameSizeArr[0] = 4; + + // Second frame "2" at timestamp 200 - rtp packet #65535 + mPRtpPackets[3]->payloadLength = 1; + mPRtpPackets[3]->payload = (PBYTE) MEMALLOC(mPRtpPackets[3]->payloadLength + 1); + mPRtpPackets[3]->payload[0] = 2; + mPRtpPackets[3]->payload[1] = 1; // First packet of a frame + mPRtpPackets[3]->header.timestamp = 200; + mPRtpPackets[3]->header.sequenceNumber = 2; + + // Expected to get frame "2" + mPExpectedFrameArr[1] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[1][0] = 2; + mExpectedFrameSizeArr[1] = 1; + + // Third frame "3" at timestamp 300 - rtp packet #0 + mPRtpPackets[4]->payloadLength = 1; + mPRtpPackets[4]->payload = (PBYTE) MEMALLOC(mPRtpPackets[4]->payloadLength + 1); + mPRtpPackets[4]->payload[0] = 3; + mPRtpPackets[4]->payload[1] = 1; // First packet of a frame + mPRtpPackets[4]->header.timestamp = 300; + mPRtpPackets[4]->header.sequenceNumber = 3; + + // Expected to get frame "3" at close + mPExpectedFrameArr[2] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[2][0] = 3; + mExpectedFrameSizeArr[2] = 1; + + // Third frame "4" at timestamp 400 - rtp packet #1 + mPRtpPackets[5]->payloadLength = 1; + mPRtpPackets[5]->payload = (PBYTE) MEMALLOC(mPRtpPackets[5]->payloadLength + 1); + mPRtpPackets[5]->payload[0] = 4; + mPRtpPackets[5]->payload[1] = 1; // First packet of a frame + mPRtpPackets[5]->header.timestamp = 400; + mPRtpPackets[5]->header.sequenceNumber = 4; + + // Expected to get frame "4" at close + mPExpectedFrameArr[3] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[3][0] = 4; + mExpectedFrameSizeArr[3] = 1; + + mPRtpPackets[6]->payloadLength = 1; + mPRtpPackets[6]->payload = (PBYTE) MEMALLOC(mPRtpPackets[6]->payloadLength + 1); + mPRtpPackets[6]->payload[0] = 4; + mPRtpPackets[6]->payload[1] = 0; // First packet of a frame + mPRtpPackets[6]->header.timestamp = 100; + mPRtpPackets[6]->header.sequenceNumber = 1; + + setPayloadToFree(); + + for (i = 0; i < pktCount; i++) { + EXPECT_EQ(STATUS_SUCCESS, jitterBufferPush(mJitterBuffer, mPRtpPackets[i], nullptr)); + switch (i) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + EXPECT_EQ(0, mReadyFrameIndex); + break; + case 6: + EXPECT_EQ(3, mReadyFrameIndex); + break; + default: + ASSERT_TRUE(FALSE); + } + EXPECT_EQ(0, mDroppedFrameIndex); + } + + clearJitterBufferForTest(); +} + +TEST_F(JitterBufferFunctionalityTest, SequenceNumberUnderflowTest) +{ + UINT32 i; + UINT32 pktCount = 8; + UINT32 startingSequenceNumber = 0; + UINT32 missingSequenceNumber = 0; + UINT32 firstSequenceNumber = MAX_RTP_SEQUENCE_NUM-2; + + srand(time(0)); + UINT32 startingTimestamp = rand()%UINT32_MAX; + + initializeJitterBuffer(5, 0, pktCount); + + // Fourth frame "1234", first frame comes later + // The "4" will come late + mPRtpPackets[0]->payloadLength = 1; + mPRtpPackets[0]->payload = (PBYTE) MEMALLOC(mPRtpPackets[0]->payloadLength + 1); + mPRtpPackets[0]->payload[0] = 1; + mPRtpPackets[0]->payload[1] = 1; // First packet of a frame + mPRtpPackets[0]->header.timestamp = startingTimestamp + 300; + mPRtpPackets[0]->header.sequenceNumber = startingSequenceNumber++; + + mPRtpPackets[1]->payloadLength = 1; + mPRtpPackets[1]->payload = (PBYTE) MEMALLOC(mPRtpPackets[1]->payloadLength + 1); + mPRtpPackets[1]->payload[0] = 2; + mPRtpPackets[1]->payload[1] = 0; + mPRtpPackets[1]->header.timestamp = startingTimestamp + 300; + mPRtpPackets[1]->header.sequenceNumber = startingSequenceNumber++; + + mPRtpPackets[2]->payloadLength = 1; + mPRtpPackets[2]->payload = (PBYTE) MEMALLOC(mPRtpPackets[2]->payloadLength + 1); + mPRtpPackets[2]->payload[0] = 3; + mPRtpPackets[2]->payload[1] = 0; + mPRtpPackets[2]->header.timestamp = startingTimestamp + 300; + mPRtpPackets[2]->header.sequenceNumber = startingSequenceNumber++; + + //sequence number of 4th packet of this frame + missingSequenceNumber = startingSequenceNumber++; + + // Expected to get frame "1234" + mPExpectedFrameArr[3] = (PBYTE) MEMALLOC(4); + mPExpectedFrameArr[3][0] = 1; + mPExpectedFrameArr[3][1] = 2; + mPExpectedFrameArr[3][2] = 3; + mPExpectedFrameArr[3][3] = 4; + mExpectedFrameSizeArr[3] = 4; + + // First frame "2" at timestamp 300 + mPRtpPackets[3]->payloadLength = 1; + mPRtpPackets[3]->payload = (PBYTE) MEMALLOC(mPRtpPackets[3]->payloadLength + 1); + mPRtpPackets[3]->payload[0] = 2; + mPRtpPackets[3]->payload[1] = 1; // First packet of a frame + mPRtpPackets[3]->header.timestamp = startingTimestamp; + mPRtpPackets[3]->header.sequenceNumber = firstSequenceNumber++; + + // Expected to get frame "2" + mPExpectedFrameArr[0] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[0][0] = 2; + mExpectedFrameSizeArr[0] = 1; + + // Second frame "3" at timestamp 600 + mPRtpPackets[4]->payloadLength = 1; + mPRtpPackets[4]->payload = (PBYTE) MEMALLOC(mPRtpPackets[4]->payloadLength + 1); + mPRtpPackets[4]->payload[0] = 3; + mPRtpPackets[4]->payload[1] = 1; // First packet of a frame + mPRtpPackets[4]->header.timestamp = startingTimestamp+100; + mPRtpPackets[4]->header.sequenceNumber = firstSequenceNumber++; + + // Expected to get frame "3" at close + mPExpectedFrameArr[1] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[1][0] = 3; + mExpectedFrameSizeArr[1] = 1; + + // Third frame "4" + mPRtpPackets[5]->payloadLength = 1; + mPRtpPackets[5]->payload = (PBYTE) MEMALLOC(mPRtpPackets[5]->payloadLength + 1); + mPRtpPackets[5]->payload[0] = 4; + mPRtpPackets[5]->payload[1] = 1; // First packet of a frame + mPRtpPackets[5]->header.timestamp = startingTimestamp+200; + mPRtpPackets[5]->header.sequenceNumber = firstSequenceNumber++; + + // Expected to get frame "4" at close + mPExpectedFrameArr[2] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[2][0] = 4; + mExpectedFrameSizeArr[2] = 1; + + // Fifth frame + mPRtpPackets[6]->payloadLength = 1; + mPRtpPackets[6]->payload = (PBYTE) MEMALLOC(mPRtpPackets[6]->payloadLength + 1); + mPRtpPackets[6]->payload[0] = 4; + mPRtpPackets[6]->payload[1] = 1; // First packet of a frame + mPRtpPackets[6]->header.timestamp = startingTimestamp+400; + mPRtpPackets[6]->header.sequenceNumber = startingSequenceNumber++; + + // Expected to get frame "4" at close + mPExpectedFrameArr[4] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[4][0] = 4; + mExpectedFrameSizeArr[4] = 1; + + // Missing 4th packet in 4th frame + mPRtpPackets[7]->payloadLength = 1; + mPRtpPackets[7]->payload = (PBYTE) MEMALLOC(mPRtpPackets[7]->payloadLength + 1); + mPRtpPackets[7]->payload[0] = 4; + mPRtpPackets[7]->payload[1] = 0; + mPRtpPackets[7]->header.timestamp = startingTimestamp+300; + mPRtpPackets[7]->header.sequenceNumber = missingSequenceNumber; + + setPayloadToFree(); + + for (i = 0; i < pktCount; i++) { + EXPECT_EQ(STATUS_SUCCESS, jitterBufferPush(mJitterBuffer, mPRtpPackets[i], nullptr)); + switch (i) { + case 0: + case 1: + case 2: + case 3: + EXPECT_EQ(0, mReadyFrameIndex); + break; + case 4: + EXPECT_EQ(1, mReadyFrameIndex); + break; + case 5: + case 6: + EXPECT_EQ(3, mReadyFrameIndex); + break; + case 7: + EXPECT_EQ(4, mReadyFrameIndex); + break; + default: + ASSERT_TRUE(FALSE); + } + EXPECT_EQ(0, mDroppedFrameIndex); + } + + clearJitterBufferForTest(); +} + +TEST_F(JitterBufferFunctionalityTest, DoubleOverflowTest) +{ + UINT32 i; + UINT32 pktCount = 7; + initializeJitterBuffer(4, 0, pktCount); + + // First frame "1" at timestamp 100 - rtp packet #65534 + mPRtpPackets[0]->payloadLength = 1; + mPRtpPackets[0]->payload = (PBYTE) MEMALLOC(mPRtpPackets[0]->payloadLength + 1); + mPRtpPackets[0]->payload[0] = 1; + mPRtpPackets[0]->payload[1] = 1; // First packet of a frame + mPRtpPackets[0]->header.timestamp = MAX_RTP_TIMESTAMP - 500; + mPRtpPackets[0]->header.sequenceNumber = 65534; + + mPRtpPackets[1]->payloadLength = 1; + mPRtpPackets[1]->payload = (PBYTE) MEMALLOC(mPRtpPackets[1]->payloadLength + 1); + mPRtpPackets[1]->payload[0] = 2; + mPRtpPackets[1]->payload[1] = 0; + mPRtpPackets[1]->header.timestamp = MAX_RTP_TIMESTAMP - 500; + mPRtpPackets[1]->header.sequenceNumber = 65535; + + mPRtpPackets[2]->payloadLength = 1; + mPRtpPackets[2]->payload = (PBYTE) MEMALLOC(mPRtpPackets[2]->payloadLength + 1); + mPRtpPackets[2]->payload[0] = 3; + mPRtpPackets[2]->payload[1] = 0; + mPRtpPackets[2]->header.timestamp = MAX_RTP_TIMESTAMP - 500; + mPRtpPackets[2]->header.sequenceNumber = 0; + + // Expected to get frame "1234" + mPExpectedFrameArr[0] = (PBYTE) MEMALLOC(4); + mPExpectedFrameArr[0][0] = 1; + mPExpectedFrameArr[0][1] = 2; + mPExpectedFrameArr[0][2] = 3; + mPExpectedFrameArr[0][3] = 4; + mExpectedFrameSizeArr[0] = 4; + + // Second frame "2" at timestamp 200 - rtp packet #65535 + mPRtpPackets[3]->payloadLength = 1; + mPRtpPackets[3]->payload = (PBYTE) MEMALLOC(mPRtpPackets[3]->payloadLength + 1); + mPRtpPackets[3]->payload[0] = 2; + mPRtpPackets[3]->payload[1] = 1; // First packet of a frame + mPRtpPackets[3]->header.timestamp = MAX_RTP_TIMESTAMP - 100; + mPRtpPackets[3]->header.sequenceNumber = 2; + + // Expected to get frame "2" + mPExpectedFrameArr[1] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[1][0] = 2; + mExpectedFrameSizeArr[1] = 1; + + // Third frame "3" at timestamp 300 - rtp packet #0 + mPRtpPackets[4]->payloadLength = 1; + mPRtpPackets[4]->payload = (PBYTE) MEMALLOC(mPRtpPackets[4]->payloadLength + 1); + mPRtpPackets[4]->payload[0] = 3; + mPRtpPackets[4]->payload[1] = 1; // First packet of a frame + mPRtpPackets[4]->header.timestamp = 300; + mPRtpPackets[4]->header.sequenceNumber = 3; + + // Expected to get frame "3" at close + mPExpectedFrameArr[2] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[2][0] = 3; + mExpectedFrameSizeArr[2] = 1; + + // Third frame "4" at timestamp 400 - rtp packet #1 + mPRtpPackets[5]->payloadLength = 1; + mPRtpPackets[5]->payload = (PBYTE) MEMALLOC(mPRtpPackets[5]->payloadLength + 1); + mPRtpPackets[5]->payload[0] = 4; + mPRtpPackets[5]->payload[1] = 1; // First packet of a frame + mPRtpPackets[5]->header.timestamp = 600; + mPRtpPackets[5]->header.sequenceNumber = 4; + + // Expected to get frame "4" at close + mPExpectedFrameArr[3] = (PBYTE) MEMALLOC(1); + mPExpectedFrameArr[3][0] = 4; + mExpectedFrameSizeArr[3] = 1; + + mPRtpPackets[6]->payloadLength = 1; + mPRtpPackets[6]->payload = (PBYTE) MEMALLOC(mPRtpPackets[6]->payloadLength + 1); + mPRtpPackets[6]->payload[0] = 4; + mPRtpPackets[6]->payload[1] = 0; // First packet of a frame + mPRtpPackets[6]->header.timestamp = MAX_RTP_TIMESTAMP - 500; + mPRtpPackets[6]->header.sequenceNumber = 1; + + setPayloadToFree(); + + for (i = 0; i < pktCount; i++) { + EXPECT_EQ(STATUS_SUCCESS, jitterBufferPush(mJitterBuffer, mPRtpPackets[i], nullptr)); + switch (i) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + EXPECT_EQ(0, mReadyFrameIndex); + break; + case 6: + EXPECT_EQ(3, mReadyFrameIndex); + break; + default: + ASSERT_TRUE(FALSE); + } + EXPECT_EQ(0, mDroppedFrameIndex); + } + + clearJitterBufferForTest(); +} + +#if 0 +//TODO complete this test +TEST_F(JitterBufferFunctionalityTest, LongRunningWithDroppedPacketsTest) +{ + UINT32 timeStep = 100; + UINT16 startingSequenceNumber = 0; + UINT32 startingTimestamp = 0; + UINT32 totalPackets = 0; + UINT32 droppedPackets = 0; + UINT32 rangeForNextDrop = 0; + UINT32 nextDrop = 0; + UINT32 dropSection = 0; + UINT32 packetCount = 0; + UINT32 frameCount = 0; + UINT32 readyFrameCount = 0; + UINT32 droppedFrameCount = 0; + UINT32 currentDroppedPacket = 0; + BOOL dropped = FALSE; + std::vector dropNextPacket; + std::vector packetsPerFrame; + std::vector packetsOfFrameToDrop; + + srand(time(0)); + + //between 1-3 UINT16 cycles + totalPackets = rand()%(UINT16_MAX*2) + UINT16_MAX; + //100-200 dropped OR very late packets + droppedPackets = rand()%(100) + 100; + startingSequenceNumber = rand()%UINT16_MAX; + startingTimestamp = rand()%UINT32_MAX; + + dropSection = totalPackets/droppedPackets; + rangeForNextDrop = dropSection; + for(auto i = 0; i < droppedPackets; i++) { + nextDrop = rand()%rangeForNextDrop; + rangeForNextDrop += std::abs(dropSection-nextDrop); + if(i == 0) { + dropNextPacket.push_back(nextDrop); + } + else { + dropNextPacket.push_back(dropNextPacket.back() + nextDrop); + } + } + + while(packetCount < totalPackets) { + if((totalPackets - packetCount) <= 30) { + packetsPerFrame.push_back(totalPackets-packetCount); + } + else { + packetsPerFrame.push_back(rand()%29 + 2); + } + packetCount += packetsPerFrame.back(); + frameCount++; + while(packetCount > dropNextPacket[currentDroppedPacket]) { + dropped = TRUE; + currentDroppedPacket++; + } + if(dropped) { + droppedFrameCount++; + } + else { + readyFrameCount++; + } + dropped = FALSE; + } + + initializeJitterBuffer(readyFrameCount, droppedFrameCount, totalPackets); + + dropped = FALSE; + packetCount = 0; + droppedFrameCount = 0; + currentDroppedPacket = 0; + + for(auto frame = 0; frame < frameCount; frame++) { + //is frame missing a packet + while((packetsPerFrame[frame] + packetCount ) > dropNextPacket[currentDroppedPacket]){ + dropped = TRUE; + packetsOfFrameToDrop.push_back(dropNextPacket[currentDroppedPacket] - packetCount); + currentDroppedPacket++; + } + if(dropped) { + droppedFrameCount++; + } + else { + mPExpectedFrameArr[frame-droppedFrameCount] = (PBYTE) MEMALLOC(packetsPerFrame[frame]); + mExpectedFrameSizeArr[frame-droppedFrameCount] = packetsPerFrame[frame]; + } + for(auto packet = 0; packet < packetsPerFrame[frame]; packet++) { + if(!dropped) { + mPExpectedFrameArr[frame-droppedFrameCount][packet] = packet; + } + + mPRtpPackets[packetCount]->payloadLength = 1; + mPRtpPackets[packetCount]->payload = (PBYTE) MEMALLOC(mPRtpPackets[packetCount]->payloadLength + 1); + mPRtpPackets[packetCount]->payload[0] = packet; + if(packet == 0) { + mPRtpPackets[packetCount]->payload[1] = 1; // First packet of a frame + } + else { + mPRtpPackets[packetCount]->payload[1] = 0; + } + mPRtpPackets[packetCount]->header.timestamp = startingTimestamp; + mPRtpPackets[packetCount]->header.sequenceNumber = startingSequenceNumber++; + + packetCount++; + } + if(dropped) { + mExpectedDroppedFrameTimestampArr[droppedFrameCount-1] = startingTimestamp; + } + startingTimestamp += timeStep; + + } + + setPayloadToFree(); + + for(auto i = 0; i < totalPackets; i++) { + EXPECT_EQ(STATUS_SUCCESS, jitterBufferPush(mJitterBuffer, mPRtpPackets[i], nullptr)); + } + clearJitterBufferForTest(); +} +#endif + } // namespace webrtcclient } // namespace video } // namespace kinesis From 3dd633e51b36eb4c75072b12a1afc49460cae141 Mon Sep 17 00:00:00 2001 From: Gordon Date: Sat, 8 Apr 2023 04:53:52 +0800 Subject: [PATCH 073/102] Fix port printf in log (#1682) * Fix port printf in log * Fix the clang-format Fix the clang-format use ./scripts/clang-format.sh -d src/ --- src/source/Ice/IceAgent.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index a227f35af3..a5cd55e57a 100644 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -1237,10 +1237,10 @@ STATUS iceCandidatePairCheckConnection(PStunPacket pStunBindingRequest, PIceAgen if (pIceCandidatePair->local->ipAddress.family == KVS_IP_FAMILY_TYPE_IPV4) { DLOGD("remote ip:%u.%u.%u.%u, port:%u, local ip:%u.%u.%u.%u, port:%u", pIceCandidatePair->remote->ipAddress.address[0], pIceCandidatePair->remote->ipAddress.address[1], pIceCandidatePair->remote->ipAddress.address[2], - pIceCandidatePair->remote->ipAddress.address[3], pIceCandidatePair->remote->ipAddress.port, + pIceCandidatePair->remote->ipAddress.address[3], (UINT16) getInt16(pIceCandidatePair->remote->ipAddress.port), pIceCandidatePair->local->ipAddress.address[0], pIceCandidatePair->local->ipAddress.address[1], pIceCandidatePair->local->ipAddress.address[2], pIceCandidatePair->local->ipAddress.address[3], - pIceCandidatePair->local->ipAddress.port); + (UINT16) getInt16(pIceCandidatePair->local->ipAddress.port)); } // update priority and transaction id From 5b155380a409661e5572784e50be232006b8e9ce Mon Sep 17 00:00:00 2001 From: Gordon Date: Sat, 8 Apr 2023 05:37:22 +0800 Subject: [PATCH 074/102] fix turn permission delay 2s (#1675) * fix turn permission delay 2s * Fix the clang-format Fix the clang-format use ./scripts/clang-format.sh -d src/ --- src/source/Ice/TurnConnection.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/source/Ice/TurnConnection.c b/src/source/Ice/TurnConnection.c index fe01b3b0f5..32f7fe1c76 100644 --- a/src/source/Ice/TurnConnection.c +++ b/src/source/Ice/TurnConnection.c @@ -1018,7 +1018,7 @@ STATUS turnConnectionStepState(PTurnConnection pTurnConnection) CHK(FALSE, retStatus); } - if (currentTime >= pTurnConnection->stateTimeoutTime) { + if (currentTime >= pTurnConnection->stateTimeoutTime || channelWithPermissionCount == pTurnConnection->turnPeerCount) { CHK(channelWithPermissionCount > 0, STATUS_TURN_CONNECTION_FAILED_TO_CREATE_PERMISSION); // go to next state if we have at least one ready peer From c6c1c4c8c8a034042ee4d483b8201cc81fc85f35 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Mon, 10 Apr 2023 12:46:56 -0700 Subject: [PATCH 075/102] Instruction to build on MacOS M1 (#1689) --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index c4246bc26f..d46632c41d 100644 --- a/README.md +++ b/README.md @@ -295,6 +295,9 @@ More information about what environment variables you can configure can be found This is useful to reduce candidate gathering time when it is known for certain network interfaces to not work well. A sample callback is available in `Common.c`. The `iceSetInterfaceFilterFunc` in `KvsRtcConfiguration` must be set to the required callback. In the sample, it can be done this way in `initializePeerConnection()`: `configuration.kvsRtcConfiguration.iceSetInterfaceFilterFunc = sampleFilterNetworkInterfaces` +### Building on MacOS M1 +When building on MacOS M1, if the build fails while trying to build OpenSSL or Websockets, run the following command: +`cmake .. -DBUILD_OPENSSL_PLATFORM=darwin64-arm64-cc` ## Documentation All Public APIs are documented in our [Include.h](https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c/blob/master/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h), we also generate a [Doxygen](https://awslabs.github.io/amazon-kinesis-video-streams-webrtc-sdk-c/) each commit for easier navigation. From 64eae79e10f846793dd86dcdba64c7d6435e798b Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Wed, 12 Apr 2023 10:39:24 -0700 Subject: [PATCH 076/102] Fix build dependencies off and add version requirements in readme (#1691) --- CMakeLists.txt | 25 ++++++++++++++++--------- README.md | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 78329d30d9..9bf76ebb97 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -163,18 +163,17 @@ if(BUILD_DEPENDENCIES) if (LINK_PROFILER) build_dependency(gperftools) endif() - - # building kvsCommonLws also builds kvspic - set(BUILD_ARGS - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DUSE_OPENSSL=${USE_OPENSSL} - -DUSE_MBEDTLS=${USE_MBEDTLS} - -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}) - build_dependency(kvsCommonLws ${BUILD_ARGS}) - message(STATUS "Finished building dependencies.") endif() +# building kvsCommonLws also builds kvspic +set(BUILD_ARGS + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DUSE_OPENSSL=${USE_OPENSSL} + -DUSE_MBEDTLS=${USE_MBEDTLS} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}) +build_dependency(kvsCommonLws ${BUILD_ARGS}) + ############# find dependent libraries ############ find_package(Threads) @@ -306,6 +305,10 @@ include_directories(${KINESIS_VIDEO_WEBRTC_CLIENT_SRC}/src/ice) add_library(kvsWebrtcClient ${LINKAGE} ${WEBRTC_CLIENT_SOURCE_FILES} ${DATACHANNEL_SRC}) +if(USE_MBEDTLS) + target_compile_definitions(kvsWebrtcClient PRIVATE LWS_WITH_MBEDTLS) +endif() + target_link_libraries( kvsWebrtcClient PRIVATE kvspicUtils @@ -322,6 +325,10 @@ target_link_libraries( add_library(kvsWebrtcSignalingClient ${LINKAGE} ${WEBRTC_SIGNALING_CLIENT_SOURCE_FILES}) +if(USE_MBEDTLS) + target_compile_definitions(kvsWebrtcSignalingClient PRIVATE LWS_WITH_MBEDTLS) +endif() + target_link_libraries( kvsWebrtcSignalingClient PUBLIC diff --git a/README.md b/README.md index d46632c41d..f08fa47962 100644 --- a/README.md +++ b/README.md @@ -64,12 +64,20 @@ GStreamer is installed on your system. On Ubuntu and Raspberry Pi OS you can get the libraries by running ``` -$ sudo apt-get install libssl-dev libcurl4-openssl-dev liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools +$ sudo apt-get install libssl-dev libcurl4-openssl-dev liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools ``` By default we download all the libraries from GitHub and build them locally, so should require nothing to be installed ahead of time. If you do wish to link to existing libraries you can use the following flags to customize your build. +### Dependency requirements + +These would be applicable if the SDK is being linked with system dependencies instead of building from source by the SDK. +`libmbedtls`: `>= 2.25.0 & < 3.x.x` +`libopenssl`: `= 1.1.1x` +`libsrtp2` : `<= 2.5.0` +`libusrsctp` : `<= 0.9.5.0` +`libwebsockets` : `>= 4.2.0` #### Cross-Compilation @@ -112,6 +120,29 @@ To build the library and the provided samples run make in the build directory yo `make` +### Building with dependencies off + +In addition to the dependencies already installed, install the dependencies using the appropriate package manager. + +On Ubuntu: +`sudo apt-get install libsrtp2-dev libusrsctp-dev libwebsockets-dev` + +On MacOS: +`brew install srtp libusrsctp libwebsockets ` + +To use OpenSSL: +``` +cmake .. -DBUILD_DEPENDENCIES=OFF -DUSE_OPENSSL=ON +``` + +To use MBedTLS: +``` +cmake .. -DBUILD_DEPENDENCIES=OFF -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON +``` + +Note: Please follow the dependency requirements to confirm the version requirements are satisfied to use the SDK with system installed dependencies. +If the versions are not satisfied, this option would not work and enabling the SDK to build dependencies for you would be the best option to go ahead with. + ## Run ### Setup your environment with your AWS account credentials and AWS region: * First set the appropriate environment variables so you can connect to KVS. If you want to use IoT certificate instead, check Setup IoT. From f2a94fcb0b5e04776c503527df8951a5b8e21538 Mon Sep 17 00:00:00 2001 From: Jeremy Gunawan Date: Thu, 20 Apr 2023 11:00:06 -0700 Subject: [PATCH 077/102] Unlock mutex in case of error (#1696) * Unlock in case of error --- samples/Common.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index 962d33deb8..93e23386b6 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -1152,7 +1152,7 @@ STATUS sessionCleanupWait(PSampleConfiguration pSampleConfiguration) STATUS retStatus = STATUS_SUCCESS; PSampleStreamingSession pSampleStreamingSession = NULL; UINT32 i, clientIdHash; - BOOL locked = FALSE, peerConnectionFound = FALSE; + BOOL sampleConfigurationObjLockLocked = FALSE, streamingSessionListReadLockLocked = FALSE, peerConnectionFound = FALSE; SIGNALING_CLIENT_STATE signalingClientState; CHK(pSampleConfiguration != NULL, STATUS_NULL_ARG); @@ -1160,7 +1160,7 @@ STATUS sessionCleanupWait(PSampleConfiguration pSampleConfiguration) while (!ATOMIC_LOAD_BOOL(&pSampleConfiguration->interrupted)) { // Keep the main set of operations interlocked until cvar wait which would atomically unlock MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); - locked = TRUE; + sampleConfigurationObjLockLocked = TRUE; // scan and cleanup terminated streaming session for (i = 0; i < pSampleConfiguration->streamingSessionCount; ++i) { @@ -1168,6 +1168,7 @@ STATUS sessionCleanupWait(PSampleConfiguration pSampleConfiguration) pSampleStreamingSession = pSampleConfiguration->sampleStreamingSessionList[i]; MUTEX_LOCK(pSampleConfiguration->streamingSessionListReadLock); + streamingSessionListReadLockLocked = TRUE; // swap with last element and decrement count pSampleConfiguration->streamingSessionCount--; @@ -1182,6 +1183,7 @@ STATUS sessionCleanupWait(PSampleConfiguration pSampleConfiguration) } MUTEX_UNLOCK(pSampleConfiguration->streamingSessionListReadLock); + streamingSessionListReadLockLocked = FALSE; CHK_STATUS(freeSampleStreamingSession(&pSampleStreamingSession)); } @@ -1216,17 +1218,21 @@ STATUS sessionCleanupWait(PSampleConfiguration pSampleConfiguration) // periodically wake up and clean up terminated streaming session CVAR_WAIT(pSampleConfiguration->cvar, pSampleConfiguration->sampleConfigurationObjLock, SAMPLE_SESSION_CLEANUP_WAIT_PERIOD); MUTEX_UNLOCK(pSampleConfiguration->sampleConfigurationObjLock); - locked = FALSE; + sampleConfigurationObjLockLocked = FALSE; } CleanUp: CHK_LOG_ERR(retStatus); - if (locked) { + if (sampleConfigurationObjLockLocked) { MUTEX_UNLOCK(pSampleConfiguration->sampleConfigurationObjLock); } + if (streamingSessionListReadLockLocked) { + MUTEX_UNLOCK(pSampleConfiguration->streamingSessionListReadLock); + } + LEAVES(); return retStatus; } From 73eea7fc3ad591f5e947f1ce07b7c265a86b4315 Mon Sep 17 00:00:00 2001 From: Ben Mesander Date: Fri, 21 Apr 2023 09:58:02 -0600 Subject: [PATCH 078/102] fix typos (#1697) Co-authored-by: Ben Mesander --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f08fa47962..7e70ca7bcf 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ To download run the following command: `git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c.git` -You will also need to install `pkg-config` and `CMake` and a build enviroment +You will also need to install `pkg-config` and `CMake` and a build environment ### Configure Create a build directory in the newly checked out repository, and execute CMake from it. @@ -93,9 +93,9 @@ You can pass the following options to `cmake ..`. * `-DBUILD_STATIC_LIBS` -- Build all KVS WebRTC and third-party libraries as static libraries. * `-DADD_MUCLIBC` -- Add -muclibc c flag * `-DBUILD_DEPENDENCIES` -- Whether or not to build depending libraries from source -* `-DBUILD_OPENSSL_PLATFORM` -- If buildng OpenSSL what is the target platform -* `-DBUILD_LIBSRTP_HOST_PLATFORM` -- If buildng LibSRTP what is the current platform -* `-DBUILD_LIBSRTP_DESTINATION_PLATFORM` -- If buildng LibSRTP what is the destination platform +* `-DBUILD_OPENSSL_PLATFORM` -- If building OpenSSL what is the target platform +* `-DBUILD_LIBSRTP_HOST_PLATFORM` -- If building LibSRTP what is the current platform +* `-DBUILD_LIBSRTP_DESTINATION_PLATFORM` -- If building LibSRTP what is the destination platform * `-DBUILD_TEST=TRUE` -- Build unit/integration tests, may be useful for confirm support for your device. `./tst/webrtc_client_test` * `-DCODE_COVERAGE` -- Enable coverage reporting * `-DCOMPILER_WARNINGS` -- Enable all compiler warnings From 20758fa46e3a63dff61e805cbb9a8f65f8d6c98a Mon Sep 17 00:00:00 2001 From: chenln1124 <112364884+chenln1124@users.noreply.github.com> Date: Mon, 12 Jun 2023 14:10:48 +0800 Subject: [PATCH 079/102] IoT CertificateId as Stream Name. (#1721) * IoT CertificateId as Stream Name. * Fix the clang-format use ./scripts/clang-format.sh -d src/ --------- Co-authored-by: Lina Chen --- samples/Common.c | 7 +- samples/Samples.h | 1 + .../kinesis/video/webrtcclient/Include.h | 104 +++++++++--------- .../kinesis/video/webrtcclient/Stats.h | 10 +- src/source/Ice/IceAgent.c | 2 +- .../PeerConnection/SessionDescription.c | 2 +- src/source/Rtcp/RtcpPacket.h | 2 +- 7 files changed, 67 insertions(+), 61 deletions(-) mode change 100644 => 100755 samples/Common.c mode change 100644 => 100755 samples/Samples.h mode change 100644 => 100755 src/source/Ice/IceAgent.c mode change 100644 => 100755 src/source/PeerConnection/SessionDescription.c diff --git a/samples/Common.c b/samples/Common.c old mode 100644 new mode 100755 index 93e23386b6..ac37e7e66c --- a/samples/Common.c +++ b/samples/Common.c @@ -733,7 +733,7 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE CHK(NULL != (pSampleConfiguration = (PSampleConfiguration) MEMCALLOC(1, SIZEOF(SampleConfiguration))), STATUS_NOT_ENOUGH_MEMORY); #ifdef IOT_CORE_ENABLE_CREDENTIALS - PCHAR pIotCoreCredentialEndPoint, pIotCoreCert, pIotCorePrivateKey, pIotCoreRoleAlias, pIotCoreThingName; + PCHAR pIotCoreCredentialEndPoint, pIotCoreCert, pIotCorePrivateKey, pIotCoreRoleAlias, pIotCoreThingName, pIotCoreCertificateId; CHK_ERR((pIotCoreCredentialEndPoint = getenv(IOT_CORE_CREDENTIAL_ENDPOINT)) != NULL, STATUS_INVALID_OPERATION, "AWS_IOT_CORE_CREDENTIAL_ENDPOINT must be set"); CHK_ERR((pIotCoreCert = getenv(IOT_CORE_CERT)) != NULL, STATUS_INVALID_OPERATION, "AWS_IOT_CORE_CERT must be set"); @@ -786,6 +786,11 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE pSampleConfiguration->channelInfo.version = CHANNEL_INFO_CURRENT_VERSION; pSampleConfiguration->channelInfo.pChannelName = channelName; +#ifdef IOT_CORE_ENABLE_CREDENTIALS + if ((pIotCoreCertificateId = getenv(IOT_CORE_CERTIFICATE_ID)) != NULL) { + pSampleConfiguration->channelInfo.pChannelName = pIotCoreCertificateId; + } +#endif pSampleConfiguration->channelInfo.pKmsKeyId = NULL; pSampleConfiguration->channelInfo.tagCount = 0; pSampleConfiguration->channelInfo.pTags = NULL; diff --git a/samples/Samples.h b/samples/Samples.h old mode 100644 new mode 100755 index a60855c1ad..de4164efec --- a/samples/Samples.h +++ b/samples/Samples.h @@ -45,6 +45,7 @@ extern "C" { #define IOT_CORE_PRIVATE_KEY ((PCHAR) "AWS_IOT_CORE_PRIVATE_KEY") #define IOT_CORE_ROLE_ALIAS ((PCHAR) "AWS_IOT_CORE_ROLE_ALIAS") #define IOT_CORE_THING_NAME ((PCHAR) "AWS_IOT_CORE_THING_NAME") +#define IOT_CORE_CERTIFICATE_ID ((PCHAR) "AWS_IOT_CORE_CERTIFICATE_ID") #define MASTER_DATA_CHANNEL_MESSAGE "This message is from the KVS Master" #define VIEWER_DATA_CHANNEL_MESSAGE "This message is from the KVS Viewer" diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index a37c8de6cd..eb558a74e7 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -745,7 +745,7 @@ typedef enum { ICE_TRANSPORT_POLICY_RELAY = 1, //!< The ICE Agent uses only media relay candidates such as candidates //!< passing through a TURN server - ICE_TRANSPORT_POLICY_ALL = 2, //!< The ICE Agent can use any type of candidate when this value is specified. + ICE_TRANSPORT_POLICY_ALL = 2, //!< The ICE Agent can use any type of candidate when this value is specified. } ICE_TRANSPORT_POLICY; /** @@ -843,7 +843,7 @@ typedef enum { * @brief Type of caching implementation to use with the signaling client */ typedef enum { - SIGNALING_API_CALL_CACHE_TYPE_NONE, //!< No caching. The calls to the backend will be made for every API. + SIGNALING_API_CALL_CACHE_TYPE_NONE, //!< No caching. The calls to the backend will be made for every API. SIGNALING_API_CALL_CACHE_TYPE_DESCRIBE_GETENDPOINT, //!< Cache DeleteSignalingChannel and GetSignalingChannelEndpoint //!< backend API calls. @@ -1060,18 +1060,18 @@ typedef struct { * issues that we have today. */ typedef struct { - UINT16 maximumTransmissionUnit; //!< Controls the size of the largest packet the WebRTC SDK will send - //!< Some networks may drop packets if they exceed a certain size, and is useful in those conditions. - //!< A smaller MTU will incur higher bandwidth usage however since more packets will be generated with - //!< smaller payloads. If unset DEFAULT_MTU_SIZE will be used + UINT16 maximumTransmissionUnit; //!< Controls the size of the largest packet the WebRTC SDK will send + //!< Some networks may drop packets if they exceed a certain size, and is useful in those conditions. + //!< A smaller MTU will incur higher bandwidth usage however since more packets will be generated with + //!< smaller payloads. If unset DEFAULT_MTU_SIZE will be used UINT32 iceLocalCandidateGatheringTimeout; //!< Maximum time ice will wait for gathering STUN and RELAY candidates. Once //!< it's reached, ice will proceed with whatever candidate it current has. Use default value if 0. - UINT32 iceConnectionCheckTimeout; //!< Maximum time allowed waiting for at least one ice candidate pair to receive - //!< binding response from the peer. Use default value if 0. + UINT32 iceConnectionCheckTimeout; //!< Maximum time allowed waiting for at least one ice candidate pair to receive + //!< binding response from the peer. Use default value if 0. - UINT32 iceCandidateNominationTimeout; //!< If client is ice controlling, this is the timeout for receiving bind response of requests that has + UINT32 iceCandidateNominationTimeout; //!< If client is ice controlling, this is the timeout for receiving bind response of requests that has //!< USE_CANDIDATE attribute. If client is ice controlled, this is the timeout for receiving binding request //!< that has USE_CANDIDATE attribute after connection check is done. Use default value if 0. @@ -1082,17 +1082,17 @@ typedef struct { //!< A smaller amount of bits may result in less CPU usage on startup, but will cause a weaker certificate to be //!< generated If set to 0 the default GENERATED_CERTIFICATE_BITS will be used - BOOL generateRSACertificate; //!< GenerateRSACertificate controls if an ECDSA or RSA certificate is generated. - //!< By default we generate an ECDSA certificate but some platforms may not support them. + BOOL generateRSACertificate; //!< GenerateRSACertificate controls if an ECDSA or RSA certificate is generated. + //!< By default we generate an ECDSA certificate but some platforms may not support them. - UINT32 sendBufSize; //!< Socket send buffer length. Item larger then this size will get dropped. Use system default if 0. + UINT32 sendBufSize; //!< Socket send buffer length. Item larger then this size will get dropped. Use system default if 0. - UINT64 filterCustomData; //!< Custom Data that can be populated by the developer while developing filter function + UINT64 filterCustomData; //!< Custom Data that can be populated by the developer while developing filter function IceSetInterfaceFilterFunc iceSetInterfaceFilterFunc; //!< Filter function callback to be set when the developer //!< would like to whitelist/blacklist specific network interfaces - BOOL disableSenderSideBandwidthEstimation; //!< Disable TWCC feedback based sender bandwidth estimation, enabled by default. + BOOL disableSenderSideBandwidthEstimation; //!< Disable TWCC feedback based sender bandwidth estimation, enabled by default. //!< You want to set this to TRUE if you are on a very stable connection and want to save 1.2MB of //!< memory } KvsRtcConfiguration, *PKvsRtcConfiguration; @@ -1157,29 +1157,29 @@ typedef struct { * @brief Structure defining the basic signaling message */ typedef struct { - UINT32 version; //!< Current version of the structure + UINT32 version; //!< Current version of the structure - SIGNALING_MESSAGE_TYPE messageType; //!< Type of signaling message. + SIGNALING_MESSAGE_TYPE messageType; //!< Type of signaling message. - CHAR correlationId[MAX_CORRELATION_ID_LEN + 1]; //!< Correlation Id string + CHAR correlationId[MAX_CORRELATION_ID_LEN + 1]; //!< Correlation Id string CHAR peerClientId[MAX_SIGNALING_CLIENT_ID_LEN + 1]; //!< Sender client id - UINT32 payloadLen; //!< Optional payload length. If 0, the length will be calculated + UINT32 payloadLen; //!< Optional payload length. If 0, the length will be calculated - CHAR payload[MAX_SIGNALING_MESSAGE_LEN + 1]; //!< Actual signaling message payload + CHAR payload[MAX_SIGNALING_MESSAGE_LEN + 1]; //!< Actual signaling message payload } SignalingMessage, *PSignalingMessage; /** * @brief Structure defining the signaling message to be received */ typedef struct { - SignalingMessage signalingMessage; //!< The signaling message with details such as message type, correlation ID, - //!< peer client ID and payload + SignalingMessage signalingMessage; //!< The signaling message with details such as message type, correlation ID, + //!< peer client ID and payload - SERVICE_CALL_RESULT statusCode; //!< Response status code + SERVICE_CALL_RESULT statusCode; //!< Response status code - CHAR errorType[MAX_ERROR_TYPE_STRING_LEN + 1]; //!< Error type of the signaling message + CHAR errorType[MAX_ERROR_TYPE_STRING_LEN + 1]; //!< Error type of the signaling message CHAR description[MAX_MESSAGE_DESCRIPTION_LEN + 1]; //!< Optional description of the message } ReceivedSignalingMessage, *PReceivedSignalingMessage; @@ -1208,59 +1208,59 @@ typedef struct { * @brief Contains all signaling channel related information */ typedef struct { - UINT32 version; //!< Version of the structure + UINT32 version; //!< Version of the structure - PCHAR pChannelName; //!< Name of the signaling channel name. Maximum length is defined by MAX_CHANNEL_NAME_LEN + 1 + PCHAR pChannelName; //!< Name of the signaling channel name. Maximum length is defined by MAX_CHANNEL_NAME_LEN + 1 - PCHAR pChannelArn; //!< Channel Amazon Resource Name (ARN). This is an optional parameter - //!< Maximum length is defined by MAX_ARN_LEN+1 + PCHAR pChannelArn; //!< Channel Amazon Resource Name (ARN). This is an optional parameter + //!< Maximum length is defined by MAX_ARN_LEN+1 - PCHAR pRegion; //!< AWS Region in which the channel is to be opened. Can be empty for default - //!< Maximum length is defined by MAX_REGION_NAME_LEN+1 + PCHAR pRegion; //!< AWS Region in which the channel is to be opened. Can be empty for default + //!< Maximum length is defined by MAX_REGION_NAME_LEN+1 - PCHAR pControlPlaneUrl; //!< Optional fully qualified control plane URL - //!< Maximum length is defined by MAX_ARN_LEN+1 + PCHAR pControlPlaneUrl; //!< Optional fully qualified control plane URL + //!< Maximum length is defined by MAX_ARN_LEN+1 - PCHAR pCertPath; //!< Optional certificate path. Maximum length is defined by MAX_PATH_LEN+1 + PCHAR pCertPath; //!< Optional certificate path. Maximum length is defined by MAX_PATH_LEN+1 - PCHAR pUserAgentPostfix; //!< Optional user agent post-fix. Maximum length is defined by - //!< MAX_CUSTOM_USER_AGENT_NAME_POSTFIX_LEN+1 + PCHAR pUserAgentPostfix; //!< Optional user agent post-fix. Maximum length is defined by + //!< MAX_CUSTOM_USER_AGENT_NAME_POSTFIX_LEN+1 - PCHAR pCustomUserAgent; //!< Optional custom user agent name. Maximum length is defined by MAX_USER_AGENT_LEN+1 + PCHAR pCustomUserAgent; //!< Optional custom user agent name. Maximum length is defined by MAX_USER_AGENT_LEN+1 - PCHAR pUserAgent; //!< Combined user agent. Maximum length is defined by MAX_USER_AGENT_LEN+1 + PCHAR pUserAgent; //!< Combined user agent. Maximum length is defined by MAX_USER_AGENT_LEN+1 - PCHAR pKmsKeyId; //!< Optional KMS key id ARN. Maximum length is defined by MAX_ARN_LEN+1 + PCHAR pKmsKeyId; //!< Optional KMS key id ARN. Maximum length is defined by MAX_ARN_LEN+1 - SIGNALING_CHANNEL_TYPE channelType; //!< Channel type when creating. + SIGNALING_CHANNEL_TYPE channelType; //!< Channel type when creating. SIGNALING_CHANNEL_ROLE_TYPE channelRoleType; //!< Channel role type for the endpoint - master/viewer - BOOL reserved; //!< Reserved field for compatibility + BOOL reserved; //!< Reserved field for compatibility - UINT64 cachingPeriod; //!< Endpoint caching TTL. - //!< For no caching policy this param will be ignored. - //!< For caching policies the default value will be used - //!< if this parameter is 0 (::SIGNALING_API_CALL_CACHE_TTL_SENTINEL_VALUE). + UINT64 cachingPeriod; //!< Endpoint caching TTL. + //!< For no caching policy this param will be ignored. + //!< For caching policies the default value will be used + //!< if this parameter is 0 (::SIGNALING_API_CALL_CACHE_TTL_SENTINEL_VALUE). - BOOL retry; //!< Flag determines if a retry of the network calls is to be done on errors up to max retry times + BOOL retry; //!< Flag determines if a retry of the network calls is to be done on errors up to max retry times - BOOL reconnect; //!< Flag determines if reconnection should be attempted on connection drop + BOOL reconnect; //!< Flag determines if reconnection should be attempted on connection drop - UINT64 messageTtl; //!< The message TTL. Must be in the range of 5ns and 120ns. - //!< Specifying zero will default to 60ns + UINT64 messageTtl; //!< The message TTL. Must be in the range of 5ns and 120ns. + //!< Specifying zero will default to 60ns - UINT32 tagCount; //!< Number of tags associated with the stream + UINT32 tagCount; //!< Number of tags associated with the stream - PTag pTags; //!< Stream tags array + PTag pTags; //!< Stream tags array /* --- V1 members --- */ SIGNALING_API_CALL_CACHE_TYPE cachingPolicy; //!< Backend API call caching policy - BOOL asyncIceServerConfig; //!< This parameter has no effect any longer. All ICE config retrieving - //!< is done reactively when needed which will simplify the processing - //!< and will help with issues on a small footprint platforms + BOOL asyncIceServerConfig; //!< This parameter has no effect any longer. All ICE config retrieving + //!< is done reactively when needed which will simplify the processing + //!< and will help with issues on a small footprint platforms } ChannelInfo, *PChannelInfo; diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h index 187925fde4..a8294fd699 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h @@ -274,14 +274,14 @@ typedef struct { DOMString remoteCertificateId; //!< For components where DTLS is negotiated, give remote certificate CHAR tlsVersion[MAX_TLS_VERSION_LENGTH + 1]; //!< For components where DTLS is negotiated, the TLS version agreed CHAR dtlsCipher[MAX_DTLS_CIPHER_LENGTH + - 1]; //!< Descriptive name of the cipher suite used for the DTLS transport. + 1]; //!< Descriptive name of the cipher suite used for the DTLS transport. //!< Acceptable values: https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4 CHAR srtpCipher[MAX_SRTP_CIPHER_LENGTH + 1]; //!< Descriptive name of the protection profile used for the SRTP transport //!< Acceptable values: https://www.iana.org/assignments/srtp-protection/srtp-protection.xhtml CHAR tlsGroup[MAX_TLS_GROUP_LENGHTH + - 1]; //!< Descriptive name of the group used for the encryption - //!< Acceptable values: https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 - RTC_ICE_ROLE iceRole; //!< Set to the current value of the "role" attribute of the underlying RTCDtlsTransport's "transport" + 1]; //!< Descriptive name of the group used for the encryption + //!< Acceptable values: https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 + RTC_ICE_ROLE iceRole; //!< Set to the current value of the "role" attribute of the underlying RTCDtlsTransport's "transport" RTC_DTLS_TRANSPORT_STATE_STATS dtlsState; //!< Set to the current value of the "state" attribute of the underlying RTCDtlsTransport UINT64 packetsSent; //!< Total number of packets sent over the transport UINT64 packetsReceived; //!< Total number of packets received over the transport @@ -461,7 +461,7 @@ typedef struct { //!< after a frame has been decoded. See totalInterFrameDelay for details on how to calculate the interframe //!< delay variance. - BOOL voiceActivityFlag; //!< TODO Only valid for audio. Whether the last RTP packet whose frame was delivered to the RTCRtpReceiver's + BOOL voiceActivityFlag; //!< TODO Only valid for audio. Whether the last RTP packet whose frame was delivered to the RTCRtpReceiver's //!< MediaStreamTrack for playout contained voice activity or not based on the presence of the V bit in the extension //!< header, as defined in [RFC6464]. This is the stats-equivalent of RTCRtpSynchronizationSource.voiceActivityFlag in //!< [[WEBRTC]. diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c old mode 100644 new mode 100755 index a5cd55e57a..b6886b3944 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -2641,7 +2641,7 @@ STATUS iceAgentCheckPeerReflexiveCandidate(PIceAgent pIceAgent, PKvsIpAddress pI CHK_STATUS(doubleListGetNodeCount(pIceAgent->remoteCandidates, &candidateCount)); CHK_WARN(candidateCount < KVS_ICE_MAX_REMOTE_CANDIDATE_COUNT, retStatus, "max remote candidate count exceeded"); // return early if limit exceeded CHK_STATUS(findCandidateWithIp(pIpAddress, pIceAgent->remoteCandidates, &pIceCandidate)); - CHK(pIceCandidate == NULL, retStatus); // return early if duplicated + CHK(pIceCandidate == NULL, retStatus); // return early if duplicated DLOGD("New remote peer reflexive candidate found"); CHK((pIceCandidate = MEMCALLOC(1, SIZEOF(IceCandidate))) != NULL, STATUS_NOT_ENOUGH_MEMORY); diff --git a/src/source/PeerConnection/SessionDescription.c b/src/source/PeerConnection/SessionDescription.c old mode 100644 new mode 100755 index d8831e3a7b..a3fedc2cc4 --- a/src/source/PeerConnection/SessionDescription.c +++ b/src/source/PeerConnection/SessionDescription.c @@ -1018,7 +1018,7 @@ STATUS findTransceiversByRemoteDescription(PKvsPeerConnection pKvsPeerConnection if (count == 4) { codecs = attributeValue; // codecs = 111 63 103 104 9 0 8 106 105 13 110 112 113 126 } - if (count > 3) { // look for codec values from payload types (111 63 103 104 9 0 8 106 105 13 110 112 113 126) + if (count > 3) { // look for codec values from payload types (111 63 103 104 9 0 8 106 105 13 110 112 113 126) if (STRNCMP(DEFAULT_PAYLOAD_MULAW_STR, attributeValue, tokenLen) == 0) { supportCodec = TRUE; rtcCodec = RTC_CODEC_MULAW; diff --git a/src/source/Rtcp/RtcpPacket.h b/src/source/Rtcp/RtcpPacket.h index 9dfee9424a..3a11499e02 100644 --- a/src/source/Rtcp/RtcpPacket.h +++ b/src/source/Rtcp/RtcpPacket.h @@ -37,7 +37,7 @@ extern "C" { #define RTCP_FIRST_REPORT_DELAY (3 * HUNDREDS_OF_NANOS_IN_A_SECOND) typedef enum { - RTCP_PACKET_TYPE_FIR = 192, // https://tools.ietf.org/html/rfc2032#section-5.2.1 + RTCP_PACKET_TYPE_FIR = 192, // https://tools.ietf.org/html/rfc2032#section-5.2.1 RTCP_PACKET_TYPE_SENDER_REPORT = 200, RTCP_PACKET_TYPE_RECEIVER_REPORT = 201, // https://tools.ietf.org/html/rfc3550#section-6.4.2 RTCP_PACKET_TYPE_SOURCE_DESCRIPTION = 202, From 4ef06fda0dd65b9af1de750b3642ee9f1d1e1777 Mon Sep 17 00:00:00 2001 From: chenln1124 <112364884+chenln1124@users.noreply.github.com> Date: Mon, 12 Jun 2023 14:14:54 +0800 Subject: [PATCH 080/102] If local ICE is invalid, return from sending packet. (#1718) * If local ICE is invalid, return from sending packet. * Fix the clang-format use ./scripts/clang-format.sh -d src/ --------- Co-authored-by: Lina Chen --- src/source/Ice/IceAgent.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c index b6886b3944..18ed380a0c 100755 --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -638,6 +638,8 @@ STATUS iceAgentSendPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen) CHK_WARN(pIceAgent->pDataSendingIceCandidatePair->state == ICE_CANDIDATE_PAIR_STATE_SUCCEEDED, retStatus, "Invalid state for data sending candidate pair."); + CHK_WARN(pIceAgent->pDataSendingIceCandidatePair->local != NULL, retStatus, "Local ice candidate is invalid"); + isRelay = IS_CANN_PAIR_SENDING_FROM_RELAYED(pIceAgent->pDataSendingIceCandidatePair); if (isRelay) { CHK_ERR(pIceAgent->pDataSendingIceCandidatePair->local->pTurnConnection != NULL, STATUS_NULL_ARG, From 8370c46e3b43a58a133c0dd88fdfca1d6a1cd259 Mon Sep 17 00:00:00 2001 From: Stefan Kieszkowski <85728496+stefankiesz@users.noreply.github.com> Date: Fri, 30 Jun 2023 17:07:12 -0400 Subject: [PATCH 081/102] Adds RTSP Source to GStreamer Sample (#1740) * Adds rtsp source support, modifies source-type determination * All use cases tested and debugged. * Clang formatting. * Clang formatting. * Updates credentials configuration to fix sample-check error. * Sample-check fix attempt #2 * Sample-check fix attempt 3 * Sample-check fix attempt 4 * Sample-check fix attempt * "" * " " * " " * " " * Update README.md * Updates sample run instructions structure, adds RTSP source instructions * Update README.md * Renames sample file to be same as executable, updates CMakeLists to reflect this. * Update README.md Co-authored-by: Niyati Maheshwari * Update README.md * Updates usage statement to new sample executable name --------- Co-authored-by: Niyati Maheshwari --- README.md | 33 ++-- samples/CMakeLists.txt | 2 +- samples/Samples.h | 12 +- ...ple.c => kvsWebrtcClientMasterGstSample.c} | 144 ++++++++++++------ 4 files changed, 136 insertions(+), 55 deletions(-) rename samples/{kvsWebRTCClientMasterGstreamerSample.c => kvsWebrtcClientMasterGstSample.c} (71%) diff --git a/README.md b/README.md index 7e70ca7bcf..9eb302626b 100644 --- a/README.md +++ b/README.md @@ -193,27 +193,40 @@ export AWS_KVS_CACERT_PATH=../certs/cert.pem ``` ### Running the Samples -After executing `make` you will have the following sample applications in your `build/samples` directory: +After executing `make` you will have sample applications in your `build/samples` directory. From the `build/` directory, run any of the sample applications by passing to it the name of your signaling channel. If a signaling channel does not exist with the name you provide, the application creates one. -* `kvsWebrtcClientMaster` - This application sends sample H264/Opus frames (path: `/samples/h264SampleFrames` and `/samples/opusSampleFrames`) via WebRTC. It also accepts incoming audio, if enabled in the browser. When checked in the browser, it prints the metadata of the received audio packets in your terminal. -* `kvsWebrtcClientViewer` - This application accepts sample H264/Opus frames and prints them out. -* `kvsWebrtcClientMasterGstSample` - This application sends sample H264/Opus frames from a GStreamer pipeline. It also will playback incoming audio via an `autoaudiosink`. +#### Sample: kvsWebrtcClientMaster +This application sends sample H264/Opus frames (path: `/samples/h264SampleFrames` and `/samples/opusSampleFrames`) via WebRTC. It also accepts incoming audio, if enabled in the browser. When checked in the browser, it prints the metadata of the received audio packets in your terminal. To run: +``` +./samples/kvsWebrtcClientMaster +``` -Run any of the sample applications by passing to it the name that you want to give to your signaling channel. The application creates the signaling channel using the name you provide. For example, to create a signaling channel called myChannel and to start sending sample H264/Opus frames via this channel, run the following command from `build/` directory: +#### Sample: kvsWebrtcClientMasterGstSample +This application can send media from a GStreamer pipeline using test H264/Opus frames, device `autovideosrc` and `autoaudiosrc` input, or a received RTSP stream. It also will playback incoming audio via an `autoaudiosink`. To run: +``` +./samples/kvsWebrtcClientMasterGstSample +``` +Pass the desired media and source type when running the sample. The mediaType can be `audio-video` or `video-only`. The source type can be `testsrc`, `devicesrc`, or `rtspsrc`. Specify the RTSP URI if using `rtspsrc`: +``` +./samples/kvsWebrtcClientMasterGstSample rtspsrc rtsp:// +``` +#### Sample: kvsWebrtcClientViewer +This application accepts sample H264/Opus frames and prints them out. To run: ``` -./samples/kvsWebrtcClientMaster myChannel +./samples/kvsWebrtcClientMaster ``` +### Viewing Master Samples -When the command line application prints "Signaling client connection to socket established", you can proceed to the next step. +After running one of the master samples, when the command line application prints "Signaling client connection to socket established", indicating that your signaling channel is created and the connected master is streaming media to it, you can view the stream. To do so, check the media playback viewer on the KVS Signaling Channels console or open the [WebRTC SDK Test Page](https://awslabs.github.io/amazon-kinesis-video-streams-webrtc-sdk-js/examples/index.html). -Now that your signaling channel is created and the connected master is streaming media to it, you can view this stream. To do so, open the [WebRTC SDK Test Page](https://awslabs.github.io/amazon-kinesis-video-streams-webrtc-sdk-js/examples/index.html) using the steps in Using the Kinesis Video Streams with WebRTC Test Page and set the following values using the same AWS credentials and the same signaling channel that you specified for the master above: +If using the WebRTC SDK Test Page, set the following values using the same AWS credentials and the same signaling channel that you specified for the master above: * Access key ID * Secret access key * Signaling channel name * Client ID (optional) - -Choose Start viewer to start live video streaming of the sample H264/Opus frames. + +Then choose Start Viewer to start live video streaming of the sample H264/Opus frames. ## Setup IoT * To use IoT certificate to authenticate with KVS signaling, please refer to [Controlling Access to Kinesis Video Streams Resources Using AWS IoT](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/how-iot.html) for provisioning details. diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index ae738c135d..513182b907 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -66,7 +66,7 @@ if(GST_FOUND) add_executable( kvsWebrtcClientMasterGstSample Common.c - kvsWebRTCClientMasterGstreamerSample.c + kvsWebrtcClientMasterGstSample.c ) target_link_libraries(kvsWebrtcClientMasterGstSample kvsWebrtcClient kvsWebrtcSignalingClient ${GST_SAMPLE_LIBRARIES} kvsCommonLws kvspicUtils websockets) diff --git a/samples/Samples.h b/samples/Samples.h index de4164efec..0fbf0cd78c 100755 --- a/samples/Samples.h +++ b/samples/Samples.h @@ -40,6 +40,8 @@ extern "C" { #define SAMPLE_HASH_TABLE_BUCKET_COUNT 50 #define SAMPLE_HASH_TABLE_BUCKET_LENGTH 2 +#define RTSP_PIPELINE_MAX_CHAR_COUNT 1000 + #define IOT_CORE_CREDENTIAL_ENDPOINT ((PCHAR) "AWS_IOT_CORE_CREDENTIAL_ENDPOINT") #define IOT_CORE_CERT ((PCHAR) "AWS_IOT_CORE_CERT") #define IOT_CORE_PRIVATE_KEY ((PCHAR) "AWS_IOT_CORE_PRIVATE_KEY") @@ -58,6 +60,12 @@ typedef enum { SAMPLE_STREAMING_AUDIO_VIDEO, } SampleStreamingMediaType; +typedef enum { + TEST_SOURCE, + DEVICE_SOURCE, + RTSP_SOURCE, +} SampleSourceType; + typedef struct __SampleStreamingSession SampleStreamingSession; typedef struct __SampleStreamingSession* PSampleStreamingSession; @@ -76,7 +84,7 @@ typedef struct { volatile ATOMIC_BOOL mediaThreadStarted; volatile ATOMIC_BOOL recreateSignalingClient; volatile ATOMIC_BOOL connected; - BOOL useTestSrc; + SampleSourceType srcType; ChannelInfo channelInfo; PCHAR pCaCertPath; PAwsCredentialProvider pCredentialProvider; @@ -117,6 +125,8 @@ typedef struct { UINT32 pregenerateCertTimerId; PStackQueue pregeneratedCertificates; // Max MAX_RTCCONFIGURATION_CERTIFICATES certificates + + PCHAR rtspUri; } SampleConfiguration, *PSampleConfiguration; typedef struct { diff --git a/samples/kvsWebRTCClientMasterGstreamerSample.c b/samples/kvsWebrtcClientMasterGstSample.c similarity index 71% rename from samples/kvsWebRTCClientMasterGstreamerSample.c rename to samples/kvsWebrtcClientMasterGstSample.c index 54c4d247e1..c71b3af6b8 100644 --- a/samples/kvsWebRTCClientMasterGstreamerSample.c +++ b/samples/kvsWebrtcClientMasterGstSample.c @@ -151,41 +151,91 @@ PVOID sendGstreamerAudioVideo(PVOID args) * */ + CHAR rtspPipeLineBuffer[RTSP_PIPELINE_MAX_CHAR_COUNT]; + switch (pSampleConfiguration->mediaType) { case SAMPLE_STREAMING_VIDEO_ONLY: - if (pSampleConfiguration->useTestSrc) { - pipeline = gst_parse_launch( - "videotestsrc is-live=TRUE ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=25/1 ! " - "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " - "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! appsink sync=TRUE emit-signals=TRUE name=appsink-video", - &error); - } else { - pipeline = gst_parse_launch( - "autovideosrc ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=25/1 ! " - "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " - "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! appsink sync=TRUE emit-signals=TRUE name=appsink-video", - &error); + switch (pSampleConfiguration->srcType) { + case TEST_SOURCE: { + pipeline = + gst_parse_launch("videotestsrc is-live=TRUE ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=25/1 ! " + "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " + "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! appsink sync=TRUE emit-signals=TRUE " + "name=appsink-video", + &error); + break; + } + case DEVICE_SOURCE: { + pipeline = gst_parse_launch("autovideosrc ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=25/1 ! " + "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " + "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! appsink sync=TRUE " + "emit-signals=TRUE name=appsink-video", + &error); + break; + } + case RTSP_SOURCE: { + UINT16 stringOutcome = snprintf(rtspPipeLineBuffer, RTSP_PIPELINE_MAX_CHAR_COUNT, + "uridecodebin uri=%s ! " + "videoconvert ! " + "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " + "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! queue ! " + "appsink sync=TRUE emit-signals=TRUE name=appsink-video ", + pSampleConfiguration->rtspUri); + + if (stringOutcome > RTSP_PIPELINE_MAX_CHAR_COUNT) { + printf("[KVS GStreamer Master] ERROR: rtsp uri entered exceeds maximum allowed length set by RTSP_PIPELINE_MAX_CHAR_COUNT\n"); + goto CleanUp; + } + pipeline = gst_parse_launch(rtspPipeLineBuffer, &error); + + break; + } } break; case SAMPLE_STREAMING_AUDIO_VIDEO: - if (pSampleConfiguration->useTestSrc) { - pipeline = gst_parse_launch("videotestsrc is-live=TRUE ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=25/1 ! " - "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " - "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! appsink sync=TRUE " - "emit-signals=TRUE name=appsink-video audiotestsrc is-live=TRUE ! " - "queue leaky=2 max-size-buffers=400 ! audioconvert ! audioresample ! opusenc ! " - "audio/x-opus,rate=48000,channels=2 ! appsink sync=TRUE emit-signals=TRUE name=appsink-audio", - &error); - } else { - pipeline = - gst_parse_launch("autovideosrc ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=25/1 ! " - "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " - "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! appsink sync=TRUE emit-signals=TRUE " - "name=appsink-video autoaudiosrc ! " - "queue leaky=2 max-size-buffers=400 ! audioconvert ! audioresample ! opusenc ! " - "audio/x-opus,rate=48000,channels=2 ! appsink sync=TRUE emit-signals=TRUE name=appsink-audio", - &error); + switch (pSampleConfiguration->srcType) { + case TEST_SOURCE: { + pipeline = + gst_parse_launch("videotestsrc is-live=TRUE ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=25/1 ! " + "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " + "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! appsink sync=TRUE " + "emit-signals=TRUE name=appsink-video audiotestsrc is-live=TRUE ! " + "queue leaky=2 max-size-buffers=400 ! audioconvert ! audioresample ! opusenc ! " + "audio/x-opus,rate=48000,channels=2 ! appsink sync=TRUE emit-signals=TRUE name=appsink-audio", + &error); + break; + } + case DEVICE_SOURCE: { + pipeline = + gst_parse_launch("autovideosrc ! queue ! videoconvert ! video/x-raw,width=1280,height=720,framerate=25/1 ! " + "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " + "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! appsink sync=TRUE emit-signals=TRUE " + "name=appsink-video autoaudiosrc ! " + "queue leaky=2 max-size-buffers=400 ! audioconvert ! audioresample ! opusenc ! " + "audio/x-opus,rate=48000,channels=2 ! appsink sync=TRUE emit-signals=TRUE name=appsink-audio", + &error); + break; + } + case RTSP_SOURCE: { + UINT16 stringOutcome = snprintf(rtspPipeLineBuffer, RTSP_PIPELINE_MAX_CHAR_COUNT, + "uridecodebin uri=%s name=src ! videoconvert ! " + "x264enc bframes=0 speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! " + "video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! queue ! " + "appsink sync=TRUE emit-signals=TRUE name=appsink-video " + "src. ! audioconvert ! " + "audioresample ! opusenc ! audio/x-opus,rate=48000,channels=2 ! queue ! " + "appsink sync=TRUE emit-signals=TRUE name=appsink-audio", + pSampleConfiguration->rtspUri); + + if (stringOutcome > RTSP_PIPELINE_MAX_CHAR_COUNT) { + printf("[KVS GStreamer Master] ERROR: rtsp uri entered exceeds maximum allowed length set by RTSP_PIPELINE_MAX_CHAR_COUNT\n"); + goto CleanUp; + } + pipeline = gst_parse_launch(rtspPipeLineBuffer, &error); + + break; + } } break; } @@ -208,7 +258,6 @@ PVOID sendGstreamerAudioVideo(PVOID args) if (appsinkVideo != NULL) { g_signal_connect(appsinkVideo, "new-sample", G_CALLBACK(on_new_sample_video), (gpointer) pSampleConfiguration); } - if (appsinkAudio != NULL) { g_signal_connect(appsinkAudio, "new-sample", G_CALLBACK(on_new_sample_audio), (gpointer) pSampleConfiguration); } @@ -386,7 +435,7 @@ INT32 main(INT32 argc, CHAR* argv[]) pSampleConfiguration->receiveAudioVideoSource = receiveGstreamerAudioVideo; pSampleConfiguration->onDataChannel = onDataChannel; pSampleConfiguration->customData = (UINT64) pSampleConfiguration; - pSampleConfiguration->useTestSrc = FALSE; + pSampleConfiguration->srcType = DEVICE_SOURCE; // Default to GStreamer test source /* Initialize GStreamer */ gst_init(&argc, &argv); printf("[KVS Gstreamer Master] Finished initializing GStreamer\n"); @@ -399,7 +448,7 @@ INT32 main(INT32 argc, CHAR* argv[]) pSampleConfiguration->mediaType = SAMPLE_STREAMING_AUDIO_VIDEO; printf("[KVS Gstreamer Master] Streaming audio and video\n"); } else { - printf("[KVS Gstreamer Master] Unrecognized streaming type. Default to video-only\n"); + printf("[KVS Gstreamer Master] Unrecognized streaming type. Defaulting to video-only\n"); } } else { printf("[KVS Gstreamer Master] Streaming video only\n"); @@ -408,20 +457,29 @@ INT32 main(INT32 argc, CHAR* argv[]) if (argc > 3) { if (STRCMP(argv[3], "testsrc") == 0) { printf("[KVS GStreamer Master] Using test source in GStreamer\n"); - pSampleConfiguration->useTestSrc = TRUE; + pSampleConfiguration->srcType = TEST_SOURCE; + } else if (STRCMP(argv[3], "devicesrc") == 0) { + printf("[KVS GStreamer Master] Using device source in GStreamer\n"); + pSampleConfiguration->srcType = DEVICE_SOURCE; + } else if (STRCMP(argv[3], "rtspsrc") == 0) { + printf("[KVS GStreamer Master] Using RTSP source in GStreamer\n"); + if (argc < 5) { + printf("[KVS GStreamer Master] No RTSP source URI included. Defaulting to device source\n"); + printf("[KVS GStreamer Master] Usage: ./kvsWebrtcClientMasterGstSample audio-video rtspsrc rtsp://\n" + "or ./kvsWebrtcClientMasterGstSample video-only rtspsrc \n"); + pSampleConfiguration->srcType = DEVICE_SOURCE; + } else { + pSampleConfiguration->srcType = RTSP_SOURCE; + pSampleConfiguration->rtspUri = argv[4]; + } + } else { + printf("[KVS Gstreamer Master] Unrecognized source type. Defaulting to device source in GStreamer\n"); } + } else { + printf("[KVS GStreamer Master] Using device source in GStreamer\n"); } - switch (pSampleConfiguration->mediaType) { - case SAMPLE_STREAMING_VIDEO_ONLY: - printf("[KVS GStreamer Master] streaming type video-only"); - break; - case SAMPLE_STREAMING_AUDIO_VIDEO: - printf("[KVS GStreamer Master] streaming type audio-video"); - break; - } - - // Initalize KVS WebRTC. This must be done before anything else, and must only be done once. + // Initialize KVS WebRTC. This must be done before anything else, and must only be done once. retStatus = initKvsWebRtc(); if (retStatus != STATUS_SUCCESS) { printf("[KVS GStreamer Master] initKvsWebRtc(): operation returned status code: 0x%08x \n", retStatus); From 0044b5bae5dcd733d54e264e5647eb31be5abc7f Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Wed, 5 Jul 2023 10:32:28 -0700 Subject: [PATCH 082/102] replace stun with sctp (#1743) --- src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index eb558a74e7..04eb5e04ba 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -324,7 +324,7 @@ extern "C" { ///////////////////////////////////////////////////// /*! \addtogroup SCTPStatusCodes - * WEBRTC SCTP related codes. Values are derived from STATUS_STUN_BASE (0x5f000000) + * WEBRTC SCTP related codes. Values are derived from STATUS_SCTP_BASE (0x5f000000) * @{ */ #define STATUS_SCTP_BASE STATUS_PEERCONNECTION_BASE + 0x01000000 From b0f186ada3a74b71d79b0483338b865b547b308b Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Thu, 6 Jul 2023 10:19:24 -0700 Subject: [PATCH 083/102] Modify the PR template (#1745) * modify the PR template * Use bullets --- .github/PULL_REQUEST_TEMPLATE.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 6bdaa999fc..114f2c6879 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -2,5 +2,14 @@ *Description of changes:* + * What was changed + * Why was it changed + * How it was changed + * Changes in upcoming PRs (if the PR is part of a feature item and modularized) + +*Testing:* + + * Unit test (if included in the PR) + * Local test (how the changes were tested locally) By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice. From 583e2f33e24ed39e5c0e730d3ec00f1be87f84b5 Mon Sep 17 00:00:00 2001 From: Ben Mesander Date: Thu, 6 Jul 2023 13:54:23 -0600 Subject: [PATCH 084/102] Update raspberry pi hardware encode to current gstreamer (#1746) * Update raspberry pi hardware encode to current gstreamer * - Provide build instructions for 32-bit raspbian on 64-bit hardware --------- Co-authored-by: Ben Mesander --- README.md | 5 +++++ samples/kvsWebrtcClientMasterGstSample.c | 9 ++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9eb302626b..05e0d1a9ed 100644 --- a/README.md +++ b/README.md @@ -343,6 +343,11 @@ This is useful to reduce candidate gathering time when it is known for certain n When building on MacOS M1, if the build fails while trying to build OpenSSL or Websockets, run the following command: `cmake .. -DBUILD_OPENSSL_PLATFORM=darwin64-arm64-cc` +### Building on 32 bit Raspbian GNU/Linux 11 + +To build on a 32-bit Raspbian GNU/Linux 11 on 64-bit hardware, the OpenSSL library must be manually configured. This is due to the OpenSSL autoconfiguration script detecting 64-bit hardware and emitting 64-bit ARM assembly instructions which are not allowed in 32-bit executables. A 32-bit ARM version of OpenSSL can be configured by setting 32-bit ARM platform: +`cmake .. -DBUILD_OPENSSL_PLATFORM=linux-armv4` + ## Documentation All Public APIs are documented in our [Include.h](https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c/blob/master/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h), we also generate a [Doxygen](https://awslabs.github.io/amazon-kinesis-video-streams-webrtc-sdk-c/) each commit for easier navigation. diff --git a/samples/kvsWebrtcClientMasterGstSample.c b/samples/kvsWebrtcClientMasterGstSample.c index c71b3af6b8..c1a281a8a9 100644 --- a/samples/kvsWebrtcClientMasterGstSample.c +++ b/samples/kvsWebrtcClientMasterGstSample.c @@ -142,13 +142,12 @@ PVOID sendGstreamerAudioVideo(PVOID args) * appsink sync=TRUE emit-signals=TRUE name=appsink-video * * Raspberry Pi Hardware Encode Example - * "v4l2src do-timestamp=TRUE device=\"/dev/video0\" ! queue ! videoconvert ! " + * "v4l2src device=\"/dev/video0\" ! queue ! v4l2convert ! " * "video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! " - * "omxh264enc control-rate=1 target-bitrate=500000 periodicty-idr=30 inline-header=FALSE ! " - * "h264parse config-interval=-1 ! " - * "video/x-h264,stream-format=byte-stream,alignment=au,width=640,height=480,framerate=30/1,profile=baseline ! " + * "v4l2h264enc ! " + * "h264parse ! " + * "video/x-h264,stream-format=byte-stream,alignment=au,width=640,height=480,framerate=30/1,profile=baseline,level=(string)4 ! " * "appsink sync=TRUE emit-signals=TRUE name=appsink-video" - * */ CHAR rtspPipeLineBuffer[RTSP_PIPELINE_MAX_CHAR_COUNT]; From 7a7a25ab007554c02d085fbfa3e8dcff1e65aa72 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Tue, 11 Jul 2023 13:05:32 -0700 Subject: [PATCH 085/102] Set a default user agent if not provided (#1739) --- CMakeLists.txt | 4 +++- src/source/Signaling/ChannelInfo.c | 19 +++++++++++++++---- src/source/Signaling/ChannelInfo.h | 8 ++++++++ tst/SignalingApiTest.cpp | 5 +++++ 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9bf76ebb97..768584075e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,8 @@ include(Utilities) include(CheckIncludeFiles) include(CheckFunctionExists) -project(KinesisVideoWebRTCClient LANGUAGES C) +# The version MUST be updated before every release +project(KinesisVideoWebRTCClient VERSION 1.7.3 LANGUAGES C) # User Flags option(ADD_MUCLIBC "Add -muclibc c flag" OFF) @@ -37,6 +38,7 @@ execute_process( OUTPUT_STRIP_TRAILING_WHITESPACE) add_definitions(-DSDK_VERSION=\"${GIT_COMMIT_HASH}\") +add_definitions(-DVERSION_STRING=\"${PROJECT_VERSION}\") add_definitions(-DDETECTED_GIT_HASH) if(NOT OPEN_SRC_INSTALL_PREFIX OR OPEN_SRC_INSTALL_PREFIX STREQUAL "") diff --git a/src/source/Signaling/ChannelInfo.c b/src/source/Signaling/ChannelInfo.c index bc385d7638..17cf3e4bfe 100644 --- a/src/source/Signaling/ChannelInfo.c +++ b/src/source/Signaling/ChannelInfo.c @@ -8,7 +8,8 @@ STATUS createValidateChannelInfo(PChannelInfo pOrigChannelInfo, PChannelInfo* pp UINT32 allocSize, nameLen = 0, arnLen = 0, regionLen = 0, cplLen = 0, certLen = 0, postfixLen = 0, agentLen = 0, userAgentLen = 0, kmsLen = 0, tagsSize; - PCHAR pCurPtr, pRegionPtr; + PCHAR pCurPtr, pRegionPtr, pUserAgentPostfixPtr; + CHAR agentString[MAX_CUSTOM_USER_AGENT_NAME_POSTFIX_LEN + 1]; PChannelInfo pChannelInfo = NULL; CHK(pOrigChannelInfo != NULL && ppChannelInfo != NULL, STATUS_NULL_ARG); @@ -49,10 +50,20 @@ STATUS createValidateChannelInfo(PChannelInfo pOrigChannelInfo, PChannelInfo* pp userAgentLen = MAX_USER_AGENT_LEN; - if (pOrigChannelInfo->pUserAgentPostfix != NULL) { + if (pOrigChannelInfo->pUserAgentPostfix != NULL && STRCMP(pOrigChannelInfo->pUserAgentPostfix, EMPTY_STRING) != 0) { CHK((postfixLen = (UINT32) STRNLEN(pOrigChannelInfo->pUserAgentPostfix, MAX_CUSTOM_USER_AGENT_NAME_POSTFIX_LEN + 1)) <= MAX_CUSTOM_USER_AGENT_NAME_POSTFIX_LEN, STATUS_SIGNALING_INVALID_AGENT_POSTFIX_LENGTH); + pUserAgentPostfixPtr = pOrigChannelInfo->pUserAgentPostfix; + } else { + // Account for the "/" in the agent string. + // The default user agent postfix is:AWS-WEBRTC-KVS-AGENT/ + postfixLen = STRLEN(SIGNALING_USER_AGENT_POSTFIX_NAME) + STRLEN(SIGNALING_USER_AGENT_POSTFIX_VERSION) + 1; + CHK(postfixLen <= MAX_CUSTOM_USER_AGENT_NAME_POSTFIX_LEN, STATUS_SIGNALING_INVALID_AGENT_POSTFIX_LENGTH); + SNPRINTF(agentString, + postfixLen + 1, // account for null terminator + (PCHAR) "%s/%s", SIGNALING_USER_AGENT_POSTFIX_NAME, SIGNALING_USER_AGENT_POSTFIX_VERSION); + pUserAgentPostfixPtr = agentString; } if (pOrigChannelInfo->pCustomUserAgent != NULL) { @@ -139,7 +150,7 @@ STATUS createValidateChannelInfo(PChannelInfo pOrigChannelInfo, PChannelInfo* pp } if (postfixLen != 0) { - STRCPY(pCurPtr, pOrigChannelInfo->pUserAgentPostfix); + STRCPY(pCurPtr, pUserAgentPostfixPtr); pChannelInfo->pUserAgentPostfix = pCurPtr; pCurPtr += ALIGN_UP_TO_MACHINE_WORD(postfixLen + 1); } @@ -150,7 +161,7 @@ STATUS createValidateChannelInfo(PChannelInfo pOrigChannelInfo, PChannelInfo* pp pCurPtr += ALIGN_UP_TO_MACHINE_WORD(agentLen + 1); } - getUserAgentString(pOrigChannelInfo->pUserAgentPostfix, pOrigChannelInfo->pCustomUserAgent, MAX_USER_AGENT_LEN, pCurPtr); + getUserAgentString(pUserAgentPostfixPtr, pOrigChannelInfo->pCustomUserAgent, MAX_USER_AGENT_LEN, pCurPtr); pChannelInfo->pUserAgent = pCurPtr; pChannelInfo->pUserAgent[MAX_USER_AGENT_LEN] = '\0'; pCurPtr += ALIGN_UP_TO_MACHINE_WORD(userAgentLen + 1); diff --git a/src/source/Signaling/ChannelInfo.h b/src/source/Signaling/ChannelInfo.h index 628f875f88..22b3aec222 100644 --- a/src/source/Signaling/ChannelInfo.h +++ b/src/source/Signaling/ChannelInfo.h @@ -32,6 +32,14 @@ extern "C" { #define MIN_SIGNALING_MESSAGE_TTL_VALUE (5 * HUNDREDS_OF_NANOS_IN_A_SECOND) #define MAX_SIGNALING_MESSAGE_TTL_VALUE (120 * HUNDREDS_OF_NANOS_IN_A_SECOND) +#define SIGNALING_USER_AGENT_POSTFIX_NAME (PCHAR) "AWS-WEBRTC-KVS-AGENT" + +#ifdef VERSION_STRING +#define SIGNALING_USER_AGENT_POSTFIX_VERSION (PCHAR) VERSION_STRING +#else +#define SIGNALING_USER_AGENT_POSTFIX_VERSION (PCHAR) "UNKNOWN" +#endif + /** * Takes in a pointer to a public version of ChannelInfo object. * Validates and creates an internal object diff --git a/tst/SignalingApiTest.cpp b/tst/SignalingApiTest.cpp index 6ff92aef7f..6cab41140a 100644 --- a/tst/SignalingApiTest.cpp +++ b/tst/SignalingApiTest.cpp @@ -13,6 +13,9 @@ TEST_F(SignalingApiTest, createValidateChannelInfo) { initializeSignalingClientStructs(); PChannelInfo rChannelInfo; + CHAR agentString[MAX_CUSTOM_USER_AGENT_NAME_POSTFIX_LEN + 1]; + UINT32 postfixLen = STRLEN(SIGNALING_USER_AGENT_POSTFIX_NAME) + STRLEN(SIGNALING_USER_AGENT_POSTFIX_VERSION) + 1; + SNPRINTF(agentString, postfixLen + 1, (PCHAR) "%s/%s", SIGNALING_USER_AGENT_POSTFIX_NAME, SIGNALING_USER_AGENT_POSTFIX_VERSION); STRCPY(mChannelArn, TEST_CHANNEL_ARN); STRCPY(mKmsKeyId, TEST_KMS_KEY_ID_ARN); mChannelInfo.pChannelArn = mChannelArn; @@ -32,6 +35,8 @@ TEST_F(SignalingApiTest, createValidateChannelInfo) EXPECT_EQ(0, STRCMP(rChannelInfo->pCertPath, mCaCertPath)); EXPECT_EQ(rChannelInfo->messageTtl, TEST_SIGNALING_MESSAGE_TTL); EXPECT_EQ(0, STRCMP(rChannelInfo->pRegion, TEST_DEFAULT_REGION)); + // Test default agent postfix + EXPECT_PRED_FORMAT2(testing::IsSubstring, agentString, rChannelInfo->pUserAgent); freeChannelInfo(&rChannelInfo); } From a2a76d78925467191c1cbc11449f4d643d5a9208 Mon Sep 17 00:00:00 2001 From: jdelapla Date: Tue, 11 Jul 2023 13:16:52 -0700 Subject: [PATCH 086/102] Connection timeout sleep (#1744) * Remove thread_detach and looping sleep, add thread_join * Added support for socketpair() and added it to connectionlistener * Clang formatting * Fix test that previously expected TID to be invalid * remove unused variables * Fixing incorrect typing on comparison * clang formatting * strlen -> STRLEN macro * Off by 1 error in poll rfds * clang formatting --- .../kinesis/video/webrtcclient/Include.h | 2 + src/source/Ice/ConnectionListener.c | 81 +++++++++++-------- src/source/Ice/ConnectionListener.h | 5 ++ src/source/Ice/Network.c | 29 +++++++ src/source/Ice/Network.h | 19 +++++ tst/IceFunctionalityTest.cpp | 7 +- 6 files changed, 102 insertions(+), 41 deletions(-) diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 04eb5e04ba..8c36481590 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -143,6 +143,8 @@ extern "C" { #define STATUS_GET_SOCKET_FLAG_FAILED STATUS_NETWORKING_BASE + 0x00000024 #define STATUS_SET_SOCKET_FLAG_FAILED STATUS_NETWORKING_BASE + 0x00000025 #define STATUS_CLOSE_SOCKET_FAILED STATUS_NETWORKING_BASE + 0x00000026 +#define STATUS_CREATE_SOCKET_PAIR_FAILED STATUS_NETWORKING_BASE + 0x00000027 +#define STATUS_SOCKET_WRITE_FAILED STATUS_NETWORKING_BASE + 0X00000028 /*!@} */ ///////////////////////////////////////////////////// diff --git a/src/source/Ice/ConnectionListener.c b/src/source/Ice/ConnectionListener.c index 92995eba91..33eb21a37e 100644 --- a/src/source/Ice/ConnectionListener.c +++ b/src/source/Ice/ConnectionListener.c @@ -26,6 +26,13 @@ STATUS createConnectionListener(PConnectionListener* ppConnectionListener) pConnectionListener->pBuffer = (PBYTE) (pConnectionListener + 1); pConnectionListener->bufferLen = MAX_UDP_PACKET_SIZE; + // TODO add support for windows socketpair +#ifndef _WIN32 + pConnectionListener->kickSocket[CONNECTION_LISTENER_KICK_SOCKET_LISTEN] = -1; + pConnectionListener->kickSocket[CONNECTION_LISTENER_KICK_SOCKET_WRITE] = -1; + CHK_STATUS(createSocketPair(&(pConnectionListener->kickSocket))); +#endif + CleanUp: if (STATUS_FAILED(retStatus) && pConnectionListener != NULL) { @@ -44,9 +51,8 @@ STATUS freeConnectionListener(PConnectionListener* ppConnectionListener) { STATUS retStatus = STATUS_SUCCESS; PConnectionListener pConnectionListener = NULL; - UINT64 timeToWait; TID threadId; - BOOL threadTerminated = FALSE; + const char* msg = "1"; CHK(ppConnectionListener != NULL, STATUS_NULL_ARG); CHK(*ppConnectionListener != NULL, retStatus); @@ -56,31 +62,35 @@ STATUS freeConnectionListener(PConnectionListener* ppConnectionListener) ATOMIC_STORE_BOOL(&pConnectionListener->terminate, TRUE); if (IS_VALID_MUTEX_VALUE(pConnectionListener->lock)) { - // Try to await for the thread to finish up - // NOTE: As TID is not atomic we need to wrap the read in locks - timeToWait = GETTIME() + CONNECTION_LISTENER_SHUTDOWN_TIMEOUT; - - do { - MUTEX_LOCK(pConnectionListener->lock); - threadId = pConnectionListener->receiveDataRoutine; - MUTEX_UNLOCK(pConnectionListener->lock); - if (!IS_VALID_TID_VALUE(threadId)) { - threadTerminated = TRUE; - } + MUTEX_LOCK(pConnectionListener->lock); + threadId = pConnectionListener->receiveDataRoutine; + MUTEX_UNLOCK(pConnectionListener->lock); - // Allow the thread to finish and exit - if (!threadTerminated) { - THREAD_SLEEP(KVS_ICE_SHORT_CHECK_DELAY); - } - } while (!threadTerminated && GETTIME() < timeToWait); + // TODO add support for windows socketpair + // This writes to the socketpair, kicking the POLL() out early, + // otherwise wait for the POLL to timeout +#ifndef _WIN32 + socketWrite(pConnectionListener->kickSocket[CONNECTION_LISTENER_KICK_SOCKET_WRITE], msg, STRLEN(msg)); +#endif - if (!threadTerminated) { - DLOGW("Connection listener handler thread shutdown timed out"); + // wait for thread to finish. + if (IS_VALID_TID_VALUE(threadId)) { + THREAD_JOIN(pConnectionListener->receiveDataRoutine, NULL); } MUTEX_FREE(pConnectionListener->lock); } + // TODO add support for windows socketpair +#ifndef _WIN32 + if (pConnectionListener->kickSocket[CONNECTION_LISTENER_KICK_SOCKET_LISTEN] != -1) { + closeSocket(pConnectionListener->kickSocket[CONNECTION_LISTENER_KICK_SOCKET_LISTEN]); + } + if (pConnectionListener->kickSocket[CONNECTION_LISTENER_KICK_SOCKET_WRITE] != -1) { + closeSocket(pConnectionListener->kickSocket[CONNECTION_LISTENER_KICK_SOCKET_WRITE]); + } +#endif + MEMFREE(pConnectionListener); *ppConnectionListener = NULL; @@ -205,7 +215,6 @@ STATUS connectionListenerStart(PConnectionListener pConnectionListener) CHK(!IS_VALID_TID_VALUE(pConnectionListener->receiveDataRoutine), retStatus); CHK_STATUS(THREAD_CREATE(&pConnectionListener->receiveDataRoutine, connectionListenerReceiveDataRoutine, (PVOID) pConnectionListener)); - CHK_STATUS(THREAD_DETACH(pConnectionListener->receiveDataRoutine)); CleanUp: @@ -237,7 +246,8 @@ PVOID connectionListenerReceiveDataRoutine(PVOID arg) UINT32 i, socketCount; INT32 nfds = 0; - struct pollfd rfds[CONNECTION_LISTENER_DEFAULT_MAX_LISTENING_CONNECTION]; + //+1 added for the pipe() to kickout poll() + struct pollfd rfds[CONNECTION_LISTENER_DEFAULT_MAX_LISTENING_CONNECTION + 1]; INT32 retval, localSocket; INT64 readLen; // the source address is put here. sockaddr_storage can hold either sockaddr_in or sockaddr_in6 @@ -292,9 +302,20 @@ PVOID connectionListenerReceiveDataRoutine(PVOID arg) // Need to unlock the mutex to ensure other racing threads unblock MUTEX_UNLOCK(pConnectionListener->lock); - - // blocking call until resolves as a timeout, an error, a signal or data received - retval = POLL(rfds, nfds, CONNECTION_LISTENER_SOCKET_WAIT_FOR_DATA_TIMEOUT / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); + retval = 0; + if (nfds != 0) { + // TODO add support for socketpair() in windows + // This end of the socketpair has been added to the list of sockets polled + // in order to have a way to end the poll early from the destructor +#ifndef _WIN32 + rfds[nfds].fd = pConnectionListener->kickSocket[CONNECTION_LISTENER_KICK_SOCKET_LISTEN]; + rfds[nfds].events = POLLIN; + rfds[nfds].revents = 0; + nfds++; +#endif + // blocking call until resolves as a timeout, an error, a signal or data received + retval = POLL(rfds, nfds, CONNECTION_LISTENER_SOCKET_WAIT_FOR_DATA_TIMEOUT / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); + } // In case of 0 we have a timeout and should re-lock to allow for other // interlocking operations to proceed. A positive return means we received data @@ -377,16 +398,6 @@ PVOID connectionListenerReceiveDataRoutine(PVOID arg) CleanUp: - // The check for valid mutex is necessary because when we're in freeConnectionListener - // we may free the mutex in another thread so by the time we get here accessing the lock - // will result in accessing a resource after it has been freed - if (pConnectionListener != NULL && IS_VALID_MUTEX_VALUE(pConnectionListener->lock)) { - // As TID is 64 bit we can't atomically update it and need to do it under the lock - MUTEX_LOCK(pConnectionListener->lock); - pConnectionListener->receiveDataRoutine = INVALID_TID_VALUE; - MUTEX_UNLOCK(pConnectionListener->lock); - } - CHK_LOG_ERR(retStatus); return (PVOID) (ULONG_PTR) retStatus; diff --git a/src/source/Ice/ConnectionListener.h b/src/source/Ice/ConnectionListener.h index 86596910af..207465f1ad 100644 --- a/src/source/Ice/ConnectionListener.h +++ b/src/source/Ice/ConnectionListener.h @@ -13,6 +13,8 @@ extern "C" { #define CONNECTION_LISTENER_SOCKET_WAIT_FOR_DATA_TIMEOUT (200 * HUNDREDS_OF_NANOS_IN_A_MILLISECOND) #define CONNECTION_LISTENER_SHUTDOWN_TIMEOUT (1000 * HUNDREDS_OF_NANOS_IN_A_MILLISECOND) #define CONNECTION_LISTENER_DEFAULT_MAX_LISTENING_CONNECTION 64 +#define CONNECTION_LISTENER_KICK_SOCKET_LISTEN 0 +#define CONNECTION_LISTENER_KICK_SOCKET_WRITE 1 typedef struct { volatile ATOMIC_BOOL terminate; @@ -22,6 +24,9 @@ typedef struct { TID receiveDataRoutine; PBYTE pBuffer; UINT64 bufferLen; +#ifndef _WIN32 + INT32 kickSocket[2]; +#endif } ConnectionListener, *PConnectionListener; /** diff --git a/src/source/Ice/Network.c b/src/source/Ice/Network.c index b5ec9b8722..557cb7ce49 100644 --- a/src/source/Ice/Network.c +++ b/src/source/Ice/Network.c @@ -147,6 +147,21 @@ STATUS getLocalhostIpAddresses(PKvsIpAddress destIpList, PUINT32 pDestIpListLen, return retStatus; } +// TODO add support for windows socketpair +#ifndef _WIN32 +STATUS createSocketPair(INT32 (*pSocketPair)[2]) +{ + STATUS retStatus = STATUS_SUCCESS; + CHK(pSocketPair != NULL, STATUS_NULL_ARG); + if (socketpair(AF_UNIX, SOCK_STREAM, 0, *pSocketPair) == -1) { + DLOGE("socketpair() failed to create a pair of sockets with errno %s", getErrorString(getErrorCode())); + CHK(FALSE, STATUS_CREATE_SOCKET_PAIR_FAILED); + } +CleanUp: + return retStatus; +} +#endif + STATUS createSocket(KVS_IP_FAMILY_TYPE familyType, KVS_SOCKET_PROTOCOL protocol, UINT32 sendBufSize, PINT32 pOutSockFd) { STATUS retStatus = STATUS_SUCCESS; @@ -302,6 +317,20 @@ STATUS socketConnect(PKvsIpAddress pPeerAddress, INT32 sockfd) return retStatus; } +STATUS socketWrite(INT32 sockfd, const void* pBuffer, SIZE_T length) +{ + STATUS retStatus = STATUS_SUCCESS; + ssize_t ret = (ssize_t) length; +#ifndef _WIN32 + if (ret != write(sockfd, pBuffer, length)) { + DLOGW("write() failed to write over socket with errno %s", getErrorString(getErrorCode())); + CHK(FALSE, STATUS_SOCKET_WRITE_FAILED); + } +#endif +CleanUp: + return retStatus; +} + STATUS getIpWithHostName(PCHAR hostname, PKvsIpAddress destIp) { STATUS retStatus = STATUS_SUCCESS; diff --git a/src/source/Ice/Network.h b/src/source/Ice/Network.h index a88acabb98..d57a649b66 100644 --- a/src/source/Ice/Network.h +++ b/src/source/Ice/Network.h @@ -59,6 +59,16 @@ typedef enum { */ STATUS getLocalhostIpAddresses(PKvsIpAddress, PUINT32, IceSetInterfaceFilterFunc, UINT64); +// TODO add support for windows socketpair +#ifndef _WIN32 +/** + * @param - INT32 (*)[2] - OUT - Array for the socket pair fds + * + * @return - STATUS status of execution + */ +STATUS createSocketPair(INT32 (*)[2]); +#endif + /** * @param - KVS_IP_FAMILY_TYPE - IN - Family for the socket. Must be one of KVS_IP_FAMILY_TYPE * @param - KVS_SOCKET_PROTOCOL - IN - either tcp or udp @@ -92,6 +102,15 @@ STATUS socketBind(PKvsIpAddress, INT32); */ STATUS socketConnect(PKvsIpAddress, INT32); +/** + * @param - INT32 - Socket to write to + * @param - const void * - buffer of data to write + * @param - SIZE_T - length of buffer + * + * @return - STATUS status of execution + */ +STATUS socketWrite(INT32, const void*, SIZE_T); + /** * @param - PCHAR - IN - hostname to resolve * diff --git a/tst/IceFunctionalityTest.cpp b/tst/IceFunctionalityTest.cpp index 74f0a852a3..8e51c11aa2 100644 --- a/tst/IceFunctionalityTest.cpp +++ b/tst/IceFunctionalityTest.cpp @@ -206,12 +206,7 @@ TEST_F(IceFunctionalityTest, connectionListenerFunctionalityTest) EXPECT_TRUE( IS_VALID_TID_VALUE(threadId)); ATOMIC_STORE_BOOL(&pConnectionListener->terminate, TRUE); - THREAD_SLEEP(CONNECTION_LISTENER_SHUTDOWN_TIMEOUT + 1 * HUNDREDS_OF_NANOS_IN_A_SECOND); - - MUTEX_LOCK(pConnectionListener->lock); - threadId = pConnectionListener->receiveDataRoutine; - MUTEX_UNLOCK(pConnectionListener->lock); - EXPECT_FALSE( IS_VALID_TID_VALUE(threadId)); + THREAD_JOIN(threadId, NULL); EXPECT_EQ(STATUS_SUCCESS, freeConnectionListener(&pConnectionListener)); From 1c8accf0cfdde71730b756510554ec0b5c190db0 Mon Sep 17 00:00:00 2001 From: Stefan Kieszkowski <85728496+stefankiesz@users.noreply.github.com> Date: Tue, 11 Jul 2023 23:51:27 -0400 Subject: [PATCH 087/102] Fix comment typo regarding default source in Gst sample (#1750) --- samples/kvsWebrtcClientMasterGstSample.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/kvsWebrtcClientMasterGstSample.c b/samples/kvsWebrtcClientMasterGstSample.c index c1a281a8a9..a7459c5188 100644 --- a/samples/kvsWebrtcClientMasterGstSample.c +++ b/samples/kvsWebrtcClientMasterGstSample.c @@ -434,7 +434,7 @@ INT32 main(INT32 argc, CHAR* argv[]) pSampleConfiguration->receiveAudioVideoSource = receiveGstreamerAudioVideo; pSampleConfiguration->onDataChannel = onDataChannel; pSampleConfiguration->customData = (UINT64) pSampleConfiguration; - pSampleConfiguration->srcType = DEVICE_SOURCE; // Default to GStreamer test source + pSampleConfiguration->srcType = DEVICE_SOURCE; // Default to device source (autovideosrc and autoaudiosrc) /* Initialize GStreamer */ gst_init(&argc, &argv); printf("[KVS Gstreamer Master] Finished initializing GStreamer\n"); From ee5e345a179b48eaed6f7fa8784f1b785399fcad Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Tue, 25 Jul 2023 14:54:02 -0700 Subject: [PATCH 088/102] Parse IP address if the hostname conforms to Public ipv4 DNS format (#1759) * Parse IP address if the hostname conforms to Public ipv4 DNS format * Unit test for ipIpAddr function --- .../kinesis/video/webrtcclient/Include.h | 2 + src/source/Ice/Network.c | 122 +++++++++++++++--- src/source/Ice/Network.h | 14 ++ tst/DataChannelFunctionalityTest.cpp | 2 +- tst/NetworkApiTest.cpp | 38 ++++++ 5 files changed, 158 insertions(+), 20 deletions(-) create mode 100644 tst/NetworkApiTest.cpp diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 8c36481590..5f471e5089 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -145,6 +145,8 @@ extern "C" { #define STATUS_CLOSE_SOCKET_FAILED STATUS_NETWORKING_BASE + 0x00000026 #define STATUS_CREATE_SOCKET_PAIR_FAILED STATUS_NETWORKING_BASE + 0x00000027 #define STATUS_SOCKET_WRITE_FAILED STATUS_NETWORKING_BASE + 0X00000028 +#define STATUS_INVALID_ADDRESS_LENGTH STATUS_NETWORKING_BASE + 0X00000029 + /*!@} */ ///////////////////////////////////////////////////// diff --git a/src/source/Ice/Network.c b/src/source/Ice/Network.c index 557cb7ce49..77e5a009b3 100644 --- a/src/source/Ice/Network.c +++ b/src/source/Ice/Network.c @@ -331,45 +331,129 @@ STATUS socketWrite(INT32 sockfd, const void* pBuffer, SIZE_T length) return retStatus; } +BOOL isIpAddr(PCHAR hostname, UINT16 length) +{ + BOOL status = TRUE; + UINT32 ip_1, ip_2, ip_3, ip_4, ip_5, ip_6, ip_7, ip_8; + if (hostname == NULL || length > MAX_ICE_CONFIG_URI_LEN) { + DLOGW("Provided NULL hostname"); + status = FALSE; + } else { + status = (SSCANF(hostname, IPV4_TEMPLATE, &ip_1, &ip_2, &ip_3, &ip_4) == 4 && ip_1 >= 0 && ip_1 <= 255 && ip_2 >= 0 && ip_2 <= 255 && + ip_3 >= 0 && ip_3 <= 255 && ip_4 >= 0 && ip_4 <= 255) || + (SSCANF(hostname, IPV6_TEMPLATE, &ip_1, &ip_2, &ip_3, &ip_4, &ip_5, &ip_6, &ip_7, &ip_8) == 8); + } + return status; +} + +STATUS getIpAddrFromDnsHostname(PCHAR hostname, PCHAR address, UINT16 lengthSrc, UINT16 maxLenDst) +{ + STATUS retStatus = STATUS_SUCCESS; + UINT8 i = 0, j = 0; + UINT16 hostNameLen = lengthSrc; + CHK(hostname != NULL && address != NULL, STATUS_NULL_ARG); + CHK(hostNameLen > 0 && hostNameLen < MAX_ICE_CONFIG_URI_LEN, STATUS_INVALID_ARG); + + // TURN server URLs conform with the public IPv4 DNS hostname format defined here: + // https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-hostnames + // So, we first try to parse the IP from the hostname if it conforms to this format + // For example: 35-90-63-38.t-ae7dd61a.kinesisvideo.us-west-2.amazonaws.com + // Note: public IPv6 DNS hostnames are not available + while (hostNameLen > 0 && hostname[i] != '.') { + if (hostname[i] >= '0' && hostname[i] <= '9') { + if (j > maxLenDst) { + DLOGW("Generated address is past allowed size"); + retStatus = STATUS_INVALID_ADDRESS_LENGTH; + break; + } + address[j] = hostname[i]; + } else if (hostname[i] == '-') { + if (j > maxLenDst) { + DLOGW("Generated address is past allowed size"); + retStatus = STATUS_INVALID_ADDRESS_LENGTH; + break; + } + address[j] = '.'; + } else { + DLOGW("Received unexpected hostname format: %s", hostname); + break; + } + j++; + i++; + hostNameLen--; + } + + address[j] = '\0'; + +CleanUp: + return retStatus; +} + STATUS getIpWithHostName(PCHAR hostname, PKvsIpAddress destIp) { STATUS retStatus = STATUS_SUCCESS; INT32 errCode; + UINT16 hostnameLen, addrLen; PCHAR errStr; struct addrinfo *res, *rp; BOOL resolved = FALSE; struct sockaddr_in* ipv4Addr; struct sockaddr_in6* ipv6Addr; + struct in_addr inaddr; + + CHAR addr[KVS_IP_ADDRESS_STRING_BUFFER_LEN + 1] = {'\0'}; + CHAR addressResolved[KVS_IP_ADDRESS_STRING_BUFFER_LEN + 1] = {'\0'}; CHK(hostname != NULL, STATUS_NULL_ARG); - errCode = getaddrinfo(hostname, NULL, NULL, &res); - if (errCode != 0) { - errStr = errCode == EAI_SYSTEM ? strerror(errno) : (PCHAR) gai_strerror(errCode); - CHK_ERR(FALSE, STATUS_RESOLVE_HOSTNAME_FAILED, "getaddrinfo() with errno %s", errStr); + hostnameLen = STRLEN(hostname); + addrLen = SIZEOF(addr); + + // Adding this check in case we directly get an IP address. With the current usage pattern, + // there is no way this function would receive an address directly, but having this check + // in place anyways + if (isIpAddr(hostname, hostnameLen)) { + MEMCPY(addr, hostname, hostnameLen); + } else { + retStatus = getIpAddrFromDnsHostname(hostname, addr, hostnameLen, addrLen); } - for (rp = res; rp != NULL && !resolved; rp = rp->ai_next) { - if (rp->ai_family == AF_INET) { - ipv4Addr = (struct sockaddr_in*) rp->ai_addr; - destIp->family = KVS_IP_FAMILY_TYPE_IPV4; - MEMCPY(destIp->address, &ipv4Addr->sin_addr, IPV4_ADDRESS_LENGTH); - resolved = TRUE; - } else if (rp->ai_family == AF_INET6) { - ipv6Addr = (struct sockaddr_in6*) rp->ai_addr; - destIp->family = KVS_IP_FAMILY_TYPE_IPV6; - MEMCPY(destIp->address, &ipv6Addr->sin6_addr, IPV6_ADDRESS_LENGTH); - resolved = TRUE; + // Verify the generated address has the format x.x.x.x + if (!isIpAddr(addr, hostnameLen) || retStatus != STATUS_SUCCESS) { + DLOGW("Parsing for address failed for %s, fallback to getaddrinfo", hostname); + errCode = getaddrinfo(hostname, NULL, NULL, &res); + if (errCode != 0) { + errStr = errCode == EAI_SYSTEM ? (strerror(errno)) : ((PCHAR) gai_strerror(errCode)); + CHK_ERR(FALSE, STATUS_RESOLVE_HOSTNAME_FAILED, "getaddrinfo() with errno %s", errStr); + } + for (rp = res; rp != NULL && !resolved; rp = rp->ai_next) { + if (rp->ai_family == AF_INET) { + ipv4Addr = (struct sockaddr_in*) rp->ai_addr; + destIp->family = KVS_IP_FAMILY_TYPE_IPV4; + MEMCPY(destIp->address, &ipv4Addr->sin_addr, IPV4_ADDRESS_LENGTH); + resolved = TRUE; + } else if (rp->ai_family == AF_INET6) { + ipv6Addr = (struct sockaddr_in6*) rp->ai_addr; + destIp->family = KVS_IP_FAMILY_TYPE_IPV6; + MEMCPY(destIp->address, &ipv6Addr->sin6_addr, IPV6_ADDRESS_LENGTH); + resolved = TRUE; + } } + freeaddrinfo(res); + CHK_ERR(resolved, STATUS_HOSTNAME_NOT_FOUND, "Could not find network address of %s", hostname); + getIpAddrStr(destIp, addressResolved, ARRAY_SIZE(addressResolved)); + DLOGI("ICE Server address for %s with getaddrinfo: %s", hostname, addressResolved); } - freeaddrinfo(res); - CHK_ERR(resolved, STATUS_HOSTNAME_NOT_FOUND, "could not find network address of %s", hostname); + else { + DLOGI("ICE Server address for %s: %s", hostname, addr); + inet_pton(AF_INET, addr, &inaddr); + destIp->family = KVS_IP_FAMILY_TYPE_IPV4; + MEMCPY(destIp->address, &inaddr, IPV4_ADDRESS_LENGTH); + } CleanUp: - CHK_LOG_ERR(retStatus); - return retStatus; } diff --git a/src/source/Ice/Network.h b/src/source/Ice/Network.h index d57a649b66..93d1f79678 100644 --- a/src/source/Ice/Network.h +++ b/src/source/Ice/Network.h @@ -22,6 +22,9 @@ extern "C" { #define KVS_GET_IP_ADDRESS_PORT(a) ((UINT16) getInt16((a)->port)) +#define IPV4_TEMPLATE "%d.%d.%d.%d" +#define IPV6_TEMPLATE "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x" + #if defined(__MACH__) #define NO_SIGNAL SO_NOSIGPIPE #else @@ -120,6 +123,17 @@ STATUS socketWrite(INT32, const void*, SIZE_T); */ STATUS getIpWithHostName(PCHAR, PKvsIpAddress); +/** + * @param - PCHAR - IN - IP address string to verify if it is IPv4 or IPv6 format + * + * @param - UINT16 - IN - Length of string + * + * @param - BOOL - OUT - Evaluates to TRUE if the provided string is IPv4/IPv6. False otherwise + * + * @return - STATUS status of execution + */ +BOOL isIpAddr(PCHAR, UINT16); + STATUS getIpAddrStr(PKvsIpAddress, PCHAR, UINT32); BOOL isSameIpAddress(PKvsIpAddress, PKvsIpAddress, BOOL); diff --git a/tst/DataChannelFunctionalityTest.cpp b/tst/DataChannelFunctionalityTest.cpp index 507b5176ec..abf373d5f5 100644 --- a/tst/DataChannelFunctionalityTest.cpp +++ b/tst/DataChannelFunctionalityTest.cpp @@ -107,7 +107,7 @@ TEST_F(DataChannelFunctionalityTest, dataChannelSendRecvMessageAfterDtlsComplete MEMSET(&configuration, 0x00, SIZEOF(RtcConfiguration)); - auto onDataChannel = [](UINT64 customData, PRtcDataChannel pRtcDataChannel) { ATOMIC_STORE((PSIZE_T) customData, (SIZE_T) pRtcDataChannel); }; + auto onDataChannel = [](UINT64 customData, PRtcDataChannel pRtcDataChannel) { ATOMIC_STORE((PSIZE_T)customData, reinterpret_cast(pRtcDataChannel)); }; auto dataChannelOnOpenCallback = [](UINT64 customData, PRtcDataChannel pDataChannel) { UNUSED_PARAM(pDataChannel); diff --git a/tst/NetworkApiTest.cpp b/tst/NetworkApiTest.cpp new file mode 100644 index 0000000000..c5702a61c6 --- /dev/null +++ b/tst/NetworkApiTest.cpp @@ -0,0 +1,38 @@ +#include "WebRTCClientTestFixture.h" + +namespace com { +namespace amazonaws { +namespace kinesis { +namespace video { +namespace webrtcclient { + +class NetworkApiTest : public WebRtcClientTestBase { +}; + +TEST_F(NetworkApiTest, GetIpWithHostNameTest) +{ + KvsIpAddress ipAddress; + EXPECT_EQ(STATUS_NULL_ARG, getIpWithHostName(NULL, &ipAddress)); + EXPECT_EQ(STATUS_RESOLVE_HOSTNAME_FAILED, getIpWithHostName((PCHAR) "stun:stun.test.net:3478", &ipAddress)); + EXPECT_EQ(STATUS_SUCCESS, getIpWithHostName((PCHAR) "35-90-63-38.t-ae7dd61a.kinesisvideo.us-west-2.amazonaws.com", &ipAddress)); + EXPECT_EQ(STATUS_SUCCESS, getIpWithHostName((PCHAR) "12.34.45.40", &ipAddress)); + EXPECT_EQ(STATUS_SUCCESS, getIpWithHostName((PCHAR) "2001:0db8:85a3:0000:0000:8a2e:0370:7334", &ipAddress)); + EXPECT_EQ(STATUS_RESOLVE_HOSTNAME_FAILED, getIpWithHostName((PCHAR) ".12.34.45.40", &ipAddress)); + EXPECT_EQ(STATUS_RESOLVE_HOSTNAME_FAILED, getIpWithHostName((PCHAR) "...........", &ipAddress)); +} + +TEST_F(NetworkApiTest, ipIpAddrTest) +{ + EXPECT_EQ(FALSE, isIpAddr((PCHAR) "stun:stun.test.net:3478", STRLEN("stun:stun.test.net:3478"))); + EXPECT_EQ(TRUE, isIpAddr((PCHAR) "12.34.45.40", STRLEN("12.34.45.40"))); + EXPECT_EQ(FALSE, isIpAddr((PCHAR) "567.123.345.000", STRLEN("567.123.345.000"))); + EXPECT_EQ(TRUE, isIpAddr((PCHAR) "2001:0db8:85a3:0000:0000:8a2e:0370:7334", STRLEN("2001:0db8:85a3:0000:0000:8a2e:0370:7334"))); + EXPECT_EQ(FALSE, isIpAddr((PCHAR) "2001:85a3:0000:0000:8a2e:0370:7334", STRLEN("2001:85a3:0000:0000:8a2e:0370:7334"))); +} + + +} // namespace webrtcclient +} // namespace video +} // namespace kinesis +} // namespace amazonaws +} // namespace com From 68eea2c712a01611e20da08cd57a356249b72170 Mon Sep 17 00:00:00 2001 From: jdelapla Date: Thu, 27 Jul 2023 14:44:52 -0700 Subject: [PATCH 089/102] Include and use threadpool for signaling channel messages (#1761) * Include and use threadpool for signaling channel messages * Fix clang and linux gcc compile errors * Fix pointer cast * Using SignalingClientInfo to pass information about Threadpool * edit README.md * Not necessary to change struct version * Update struct version again, add fall-through * clang formatting * Clang formatting, again --- CMake/Dependencies/libkvsCommonLws-CMakeLists.txt | 2 +- README.md | 5 +++++ samples/Common.c | 2 ++ samples/Samples.h | 7 +++++++ .../com/amazonaws/kinesis/video/webrtcclient/Include.h | 4 +++- src/source/Signaling/LwsApiCalls.c | 4 ++++ src/source/Signaling/Signaling.c | 10 ++++++++++ src/source/Signaling/Signaling.h | 4 ++++ 8 files changed, 36 insertions(+), 2 deletions(-) mode change 100755 => 100644 samples/Common.c mode change 100755 => 100644 samples/Samples.h diff --git a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt index 46d0839ed9..1c3ff91c1f 100644 --- a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt +++ b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt @@ -6,7 +6,7 @@ include(ExternalProject) ExternalProject_Add(libkvsCommonLws-download GIT_REPOSITORY https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git - GIT_TAG 8bd5adc78e8453e52a8707748c3469d8c9b74c29 + GIT_TAG daf742a0a53f72341e5b2df75a05ebe6d2557811 PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} diff --git a/README.md b/README.md index 05e0d1a9ed..d1f1244dbb 100644 --- a/README.md +++ b/README.md @@ -348,6 +348,11 @@ When building on MacOS M1, if the build fails while trying to build OpenSSL or W To build on a 32-bit Raspbian GNU/Linux 11 on 64-bit hardware, the OpenSSL library must be manually configured. This is due to the OpenSSL autoconfiguration script detecting 64-bit hardware and emitting 64-bit ARM assembly instructions which are not allowed in 32-bit executables. A 32-bit ARM version of OpenSSL can be configured by setting 32-bit ARM platform: `cmake .. -DBUILD_OPENSSL_PLATFORM=linux-armv4` +### Threadpool for Signaling Channel messages +The threadpool is enabled by default, and starts with 3 threads that it can increase up to 5 if all 3 are actively in use. To change these values to better match the resources of your use case +please edit samples/Samples.h defines `KVS_SIGNALING_THREADPOOL_MIN` and `KVS_SIGNALING_THREADPOOL_MAX`. You can also disable the threadpool to instead create and detach each thread +to handle signaling messages by commenting out `KVS_USE_SIGNALING_CHANNEL_THREADPOOL`. + ## Documentation All Public APIs are documented in our [Include.h](https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c/blob/master/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h), we also generate a [Doxygen](https://awslabs.github.io/amazon-kinesis-video-streams-webrtc-sdk-c/) each commit for easier navigation. diff --git a/samples/Common.c b/samples/Common.c old mode 100755 new mode 100644 index ac37e7e66c..c30aec8637 --- a/samples/Common.c +++ b/samples/Common.c @@ -813,6 +813,8 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE pSampleConfiguration->clientInfo.loggingLevel = logLevel; pSampleConfiguration->clientInfo.cacheFilePath = NULL; // Use the default path pSampleConfiguration->clientInfo.signalingClientCreationMaxRetryAttempts = CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS_SENTINEL_VALUE; + pSampleConfiguration->clientInfo.signalingMessagesMinimumThreads = KVS_SIGNALING_THREADPOOL_MIN; + pSampleConfiguration->clientInfo.signalingMessagesMaximumThreads = KVS_SIGNALING_THREADPOOL_MAX; pSampleConfiguration->iceCandidatePairStatsTimerId = MAX_UINT32; pSampleConfiguration->pregenerateCertTimerId = MAX_UINT32; diff --git a/samples/Samples.h b/samples/Samples.h old mode 100755 new mode 100644 index 0fbf0cd78c..2ef6b5c35a --- a/samples/Samples.h +++ b/samples/Samples.h @@ -52,6 +52,13 @@ extern "C" { #define MASTER_DATA_CHANNEL_MESSAGE "This message is from the KVS Master" #define VIEWER_DATA_CHANNEL_MESSAGE "This message is from the KVS Viewer" +// Signaling client threadpool for handling messages +#define KVS_SIGNALING_THREADPOOL_MIN 3 +#define KVS_SIGNALING_THREADPOOL_MAX 5 + +// comment out this line to disable the feature +#define KVS_USE_SIGNALING_CHANNEL_THREADPOOL 1 + /* Uncomment the following line in order to enable IoT credentials checks in the provided samples */ // #define IOT_CORE_ENABLE_CREDENTIALS 1 diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 5f471e5089..a8177fe126 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -491,7 +491,7 @@ extern "C" { /** * Version of SignalingClientInfo structure */ -#define SIGNALING_CLIENT_INFO_CURRENT_VERSION 1 +#define SIGNALING_CLIENT_INFO_CURRENT_VERSION 2 /** * Version of SignalingClientCallbacks structure @@ -1206,6 +1206,8 @@ typedef struct { INT32 signalingClientCreationMaxRetryAttempts; //!< Max attempts to create signaling client before returning error to the caller UINT32 stateMachineRetryCountReadOnly; //!< Retry count of state machine. Note that this **MUST NOT** be modified by the user. It is a read only //!< field + UINT32 signalingMessagesMinimumThreads; + UINT32 signalingMessagesMaximumThreads; } SignalingClientInfo, *PSignalingClientInfo; /** diff --git a/src/source/Signaling/LwsApiCalls.c b/src/source/Signaling/LwsApiCalls.c index 1e898c394b..44ee3771c7 100644 --- a/src/source/Signaling/LwsApiCalls.c +++ b/src/source/Signaling/LwsApiCalls.c @@ -2012,9 +2012,13 @@ STATUS receiveLwsMessage(PSignalingClient pSignalingClient, PCHAR pMessage, UINT DLOGW("Failed to validate the ICE server configuration received with an Offer"); } +#ifdef KVS_USE_SIGNALING_CHANNEL_THREADPOOL + CHK_STATUS(threadpoolPush(pSignalingClient->pThreadpool, receiveLwsMessageWrapper, (PVOID) pSignalingMessageWrapper)); +#else // Issue the callback on a separate thread CHK_STATUS(THREAD_CREATE(&receivedTid, receiveLwsMessageWrapper, (PVOID) pSignalingMessageWrapper)); CHK_STATUS(THREAD_DETACH(receivedTid)); +#endif CleanUp: diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index c3d02b9e8a..2dcbf3022d 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -37,6 +37,10 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf CHK_STATUS(createValidateChannelInfo(pChannelInfo, &pSignalingClient->pChannelInfo)); CHK_STATUS(validateSignalingCallbacks(pSignalingClient, pCallbacks)); CHK_STATUS(validateSignalingClientInfo(pSignalingClient, pClientInfo)); +#ifdef KVS_USE_SIGNALING_CHANNEL_THREADPOOL + CHK_STATUS(threadpoolCreate(&pSignalingClient->pThreadpool, pClientInfo->signalingClientInfo.signalingMessagesMinimumThreads, + pClientInfo->signalingClientInfo.signalingMessagesMaximumThreads)); +#endif pSignalingClient->version = SIGNALING_CLIENT_CURRENT_VERSION; @@ -222,6 +226,10 @@ STATUS freeSignaling(PSignalingClient* ppSignalingClient) hashTableFree(pSignalingClient->diagnostics.pEndpointToClockSkewHashMap); +#ifdef KVS_USE_SIGNALING_CHANNEL_THREADPOOL + threadpoolFree(pSignalingClient->pThreadpool); +#endif + if (IS_VALID_MUTEX_VALUE(pSignalingClient->connectedLock)) { MUTEX_FREE(pSignalingClient->connectedLock); } @@ -605,6 +613,8 @@ STATUS validateSignalingClientInfo(PSignalingClient pSignalingClient, PSignaling break; case 1: + // explicit-fallthrough + case 2: // If the path is specified and not empty then we validate and copy/store if (pSignalingClient->clientInfo.signalingClientInfo.cacheFilePath != NULL && pSignalingClient->clientInfo.signalingClientInfo.cacheFilePath[0] != '\0') { diff --git a/src/source/Signaling/Signaling.h b/src/source/Signaling/Signaling.h index 738e980fb0..fe432db9c0 100644 --- a/src/source/Signaling/Signaling.h +++ b/src/source/Signaling/Signaling.h @@ -328,6 +328,10 @@ typedef struct { UINT64 getIceConfigTime; UINT64 deleteTime; UINT64 connectTime; + +#ifdef KVS_USE_SIGNALING_CHANNEL_THREADPOOL + PThreadpool pThreadpool; +#endif } SignalingClient, *PSignalingClient; // Public handle to and from object converters From 95020ba41572dad5d008d5e9359435b2071bcf99 Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Fri, 28 Jul 2023 11:30:13 -0700 Subject: [PATCH 090/102] Fix the Windows build in the CI (#1764) * modify libwebsockets to work on Windows * set LWS_WITH_STATIC 1 * resume windows ci * add rest of the options * fix syntax in ci.yml * remove other options * set cmd vard * missing space in bat * add missing = in build_windows.bat * introduce cmake arguments * find_package openssl for non-windows builds * static + shared for rest of the builds * set static + shared true for shared builds always * add back ssl and crypto paths * rename vars in libwebsockets' cmake, rearrange, pthread fix * static=1 always * remove ssl and crypto paths * with_threadpool=1 * correction * correction 2 * correction 3 * correction 4 * correction 5 static * install gstreamer on windows * test mbedtls on windows * use if(WIN32) with set vars * 1671 * remove openssl arg from mbedtls build * fix mbedtls windows later --- .github/build_windows.bat | 6 -- .github/build_windows_mbedtls.bat | 6 ++ .github/build_windows_openssl.bat | 6 ++ .github/workflows/ci.yml | 74 +++++++++++++++---- .../Dependencies/libwebsockets-CMakeLists.txt | 38 ++++++---- CMakeLists.txt | 38 ++++++++-- 6 files changed, 126 insertions(+), 42 deletions(-) delete mode 100644 .github/build_windows.bat create mode 100644 .github/build_windows_mbedtls.bat create mode 100644 .github/build_windows_openssl.bat diff --git a/.github/build_windows.bat b/.github/build_windows.bat deleted file mode 100644 index 836e44c000..0000000000 --- a/.github/build_windows.bat +++ /dev/null @@ -1,6 +0,0 @@ -call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" -mkdir build -cd build -cmd.exe /c cmake -G "NMake Makefiles" .. -cmake -G "NMake Makefiles" -DBUILD_TEST=TRUE .. -nmake \ No newline at end of file diff --git a/.github/build_windows_mbedtls.bat b/.github/build_windows_mbedtls.bat new file mode 100644 index 0000000000..0e3c9eb1a9 --- /dev/null +++ b/.github/build_windows_mbedtls.bat @@ -0,0 +1,6 @@ +call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" +mkdir build +cd build +cmd.exe /c cmake -G "NMake Makefiles" .. +cmake -G "NMake Makefiles" -DUSE_OPENSSL=OFF -DUSE_MBEDTLS=ON -DBUILD_TEST=TRUE -DEXT_PTHREAD_INCLUDE_DIR="C:/tools/pthreads-w32-2-9-1-release/Pre-built.2/include/" -DEXT_PTHREAD_LIBRARIES="C:/tools/pthreads-w32-2-9-1-release/Pre-built.2/lib/x64/libpthreadGC2.a" .. +nmake \ No newline at end of file diff --git a/.github/build_windows_openssl.bat b/.github/build_windows_openssl.bat new file mode 100644 index 0000000000..bb13f8f3e9 --- /dev/null +++ b/.github/build_windows_openssl.bat @@ -0,0 +1,6 @@ +call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" +mkdir build +cd build +cmd.exe /c cmake -G "NMake Makefiles" .. +cmake -G "NMake Makefiles" -DBUILD_TEST=TRUE -DEXT_PTHREAD_INCLUDE_DIR="C:/tools/pthreads-w32-2-9-1-release/Pre-built.2/include/" -DEXT_PTHREAD_LIBRARIES="C:/tools/pthreads-w32-2-9-1-release/Pre-built.2/lib/x64/libpthreadGC2.a" .. +nmake \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0340da387c..4fc193a3d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -342,33 +342,79 @@ jobs: run: | cd build timeout --signal=SIGABRT 60m ./tst/webrtc_client_test - # windows-msvc: + windows-msvc-openssl: + runs-on: windows-2022 + env: + AWS_KVS_LOG_LEVEL: 7 + steps: + - name: Clone repository + uses: actions/checkout@v3 + - name: Move cloned repo + shell: powershell + run: | + mkdir D:\a\webrtc + Move-Item -Path "D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\*" -Destination "D:\a\webrtc" + cd D:\a\webrtc + dir + - name: Install dependencies + shell: powershell + run: | + choco install gstreamer --version=1.16.2 + choco install gstreamer-devel --version=1.16.2 + curl.exe -o C:\tools\pthreads-w32-2-9-1-release.zip ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip + mkdir C:\tools\pthreads-w32-2-9-1-release\ + Expand-Archive -Path C:\tools\pthreads-w32-2-9-1-release.zip -DestinationPath C:\tools\pthreads-w32-2-9-1-release + # - name: Build libwebsockets from source + # shell: powershell + # run: | + # $env:Path += ';C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Strawberry\c\bin;C:\Program Files\NASM;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\bin;C:\tools\pthreads-w32-2-9-1-release\Pre-built.2\lib\x64;C:\tools\pthreads-w32-2-9-1-release\Pre-built.2\include' + # git config --system core.longpaths true + # cd C:\tools\ + # git clone https://github.com/warmcat/libwebsockets.git + # git checkout v4.2.2 + # cd libwebsockets + # mkdir build + # cd build + # cmake .. -DLWS_HAVE_PTHREAD_H=1 -DLWS_EXT_PTHREAD_INCLUDE_DIR="C:\\tools\\pthreads-w32-2-9-1-release\\Pre-built.2\\include" -DLWS_EXT_PTHREAD_LIBRARIES="C:\\tools\\pthreads-w32-2-9-1-release\\Pre-built.2\\lib\\x64\\libpthreadGC2.a" -DLWS_WITH_MINIMAL_EXAMPLES=1 -DLWS_OPENSSL_INCLUDE_DIRS="C:\\Program Files\\OpenSSL\\include" -DLWS_OPENSSL_LIBRARIES="C:\\Program Files\\OpenSSL\\lib\\libssl.lib;C:\\Program Files\\OpenSSL\\lib\\libcrypto.lib" + # cmake --build . --config DEBUG + - name: Build repository + shell: powershell + run: | + cd D:\a\webrtc + git config --system core.longpaths true + .github\build_windows_openssl.bat + # TODO: Fix these tests + # - name: Run tests + # run: | + # & "D:\a\webrtc\build\tst\webrtc_client_test.exe --gtest_filter='-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3'" + # windows-msvc-mbedtls: # runs-on: windows-2022 # env: # AWS_KVS_LOG_LEVEL: 7 - # permissions: - # id-token: write - # contents: read # steps: # - name: Clone repository # uses: actions/checkout@v3 + # - name: Move cloned repo + # shell: powershell + # run: | + # mkdir D:\a\webrtc + # Move-Item -Path "D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\*" -Destination "D:\a\webrtc" + # cd D:\a\webrtc + # dir # - name: Install dependencies + # shell: powershell # run: | - # choco install nasm strawberryperl # choco install gstreamer --version=1.16.2 # choco install gstreamer-devel --version=1.16.2 - # - name: Install pthreads - # run: | - # C:\msys64\pacman -S mingw-w64-x86_64-winpthreads + # curl.exe -o C:\tools\pthreads-w32-2-9-1-release.zip ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip + # mkdir C:\tools\pthreads-w32-2-9-1-release\ + # Expand-Archive -Path C:\tools\pthreads-w32-2-9-1-release.zip -DestinationPath C:\tools\pthreads-w32-2-9-1-release # - name: Build repository + # shell: powershell # run: | - # $env:Path += ';C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Strawberry\c\bin;C:\Program Files\NASM;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\local\lib;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\local\bin;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\libopenssl' + # cd D:\a\webrtc # git config --system core.longpaths true - # .github/build_windows.bat - # - name: Run tests - # run: | - # $env:Path += ';C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Strawberry\c\bin;C:\Program Files\NASM;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\local\lib;D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\open-source\local\bin' - # & "D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-cbuild\tst\webrtc_client_test.exe --gtest_filter="-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3" + # .github\build_windows_mbedtls.bat arm64-cross-compilation: runs-on: ubuntu-20.04 env: diff --git a/CMake/Dependencies/libwebsockets-CMakeLists.txt b/CMake/Dependencies/libwebsockets-CMakeLists.txt index 00a6876e17..90bec7d553 100644 --- a/CMake/Dependencies/libwebsockets-CMakeLists.txt +++ b/CMake/Dependencies/libwebsockets-CMakeLists.txt @@ -5,14 +5,11 @@ project(libwebsocket-download NONE) SET(PATCH_COMMAND git apply --ignore-whitespace ${CMAKE_CURRENT_LIST_DIR}/libwebsockets-old-gcc-fix-cast-cmakelists.patch ${CMAKE_CURRENT_LIST_DIR}/libwebsockets-leak-pipe-fix.patch) include(ExternalProject) - if (BUILD_STATIC_LIBS) - set(LWS_WITH_STATIC 1) set(LWS_WITH_SHARED 0) else() - set(LWS_WITH_STATIC 0) set(LWS_WITH_SHARED 1) - if (USE_OPENSSL) + if (USE_OPENSSL AND NOT WIN32) find_package(OpenSSL REQUIRED) endif() endif() @@ -23,13 +20,23 @@ else() set(LWS_WITH_MBEDTLS ON) endif() +if (WIN32) + set(LWS_WITH_THREADPOOL ${LWS_WITH_THREADPOOL}) + set(LWS_EXT_PTHREAD_INCLUDE_DIR ${LWS_EXT_PTHREAD_INCLUDE_DIR}) + set(LWS_EXT_PTHREAD_LIBRARIES ${LWS_EXT_PTHREAD_LIBRARIES}) + set(LWS_OPENSSL_INCLUDE_DIRS ${LWS_OPENSSL_INCLUDE_DIRS}) + set(LWS_OPENSSL_LIBRARIES ${LWS_OPENSSL_LIBRARIES}) +endif() + ExternalProject_Add(project_libwebsockets GIT_REPOSITORY https://github.com/warmcat/libwebsockets.git GIT_TAG v4.2.2 PATCH_COMMAND ${PATCH_COMMAND} PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build + LIST_SEPARATOR | CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DLWS_WITH_HTTP2=1 -DLWS_HAVE_HMAC_CTX_new=1 -DLWS_HAVE_SSL_EXTRA_CHAIN_CERTS=1 @@ -37,21 +44,22 @@ ExternalProject_Add(project_libwebsockets -DLWS_HAVE_EVP_MD_CTX_free=1 -DLWS_WITHOUT_SERVER=1 -DLWS_WITHOUT_TESTAPPS=1 - -DLWS_WITH_THREADPOOL=1 -DLWS_WITHOUT_TEST_SERVER_EXTPOLL=1 -DLWS_WITHOUT_TEST_PING=1 -DLWS_WITHOUT_TEST_CLIENT=1 - -DLWS_WITH_STATIC=${LWS_WITH_STATIC} - -DLWS_WITH_SHARED=${LWS_WITH_SHARED} -DLWS_STATIC_PIC=1 + -DLWS_WITH_STATIC=1 + -DLWS_WITH_SHARED=${LWS_WITH_SHARED} + -DLWS_WITH_MBEDTLS=${LWS_WITH_MBEDTLS} + -DLWS_WITH_MINIMAL_EXAMPLES=1 + -DLWS_HAVE_PTHREAD_H=1 + -DLWS_WITH_THREADPOOL=${LWS_WITH_THREADPOOL} -DLWS_WITH_ZLIB=0 -DLWS_HAVE_EVENTFD=0 - -DLWS_WITH_MBEDTLS=${LWS_WITH_MBEDTLS} -# enable for debug output -DCMAKE_BUILD_TYPE=DEBUG - -DLWS_OPENSSL_INCLUDE_DIRS=${OPENSSL_INCLUDE_DIR} - -DLWS_OPENSSL_CRYPTO_LIBRARY=${OPENSSL_CRYPTO_LIBRARY} - -DLWS_OPENSSL_SSL_LIBRARY=${OPENSSL_SSL_LIBRARY} - -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} - BUILD_ALWAYS TRUE + -DLWS_EXT_PTHREAD_INCLUDE_DIR=${LWS_EXT_PTHREAD_INCLUDE_DIR} + -DLWS_EXT_PTHREAD_LIBRARIES=${LWS_EXT_PTHREAD_LIBRARIES} + -DLWS_OPENSSL_INCLUDE_DIRS=${LWS_OPENSSL_INCLUDE_DIRS} + -DLWS_OPENSSL_LIBRARIES=${LWS_OPENSSL_LIBRARIES} + BUILD_ALWAYS TRUE TEST_COMMAND "" -) +) \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 768584075e..1c26c82bd4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,6 +31,11 @@ option(THREAD_SANITIZER "Build with ThreadSanitizer." OFF) option(UNDEFINED_BEHAVIOR_SANITIZER "Build with UndefinedBehaviorSanitizer." OFF) option(LINK_PROFILER "Link gperftools profiler" OFF) +if(WIN32) + set(EXT_PTHREAD_INCLUDE_DIR "" CACHE PATH "Path to the PThread dir") + set(EXT_PTHREAD_LIBRARIES "" CACHE FILEPATH "Path to PThread libraries") +endif() + execute_process( COMMAND git rev-parse HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} @@ -98,8 +103,8 @@ if(USE_OPENSSL) elseif(USE_MBEDTLS) add_definitions(-DKVS_USE_MBEDTLS) # FIXME: there's probably a better way to inject MBEDTLS_USER_CONFIG_FILE flag without mutating the global CMAKE_C_FLAGS and CMAKE_CXX_FLAGS - set(CMAKE_C_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR}/configs -DMBEDTLS_USER_CONFIG_FILE='' ${CMAKE_C_FLAGS}") - set(CMAKE_CXX_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR}/configs -DMBEDTLS_USER_CONFIG_FILE='' ${CMAKE_CXX_FLAGS}") + set(CMAKE_C_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR}/configs -DMBEDTLS_USER_CONFIG_FILE=\"\" ${CMAKE_C_FLAGS}") + set(CMAKE_CXX_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR}/configs -DMBEDTLS_USER_CONFIG_FILE=\"\" ${CMAKE_CXX_FLAGS}") endif() if(BUILD_DEPENDENCIES) @@ -132,11 +137,30 @@ if(BUILD_DEPENDENCIES) endif() - set(BUILD_ARGS -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} - -DOPENSSL_DIR=${OPEN_SRC_INSTALL_PREFIX} - -DUSE_OPENSSL=${USE_OPENSSL} - -DUSE_MBEDTLS=${USE_MBEDTLS} - -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}) + if(WIN32) + set(OPENSSL_INCLUDE_DIRS "${OPEN_SRC_INSTALL_PREFIX}/include/") + set(OPENSSL_CRYPTO_LIBRARY "${OPEN_SRC_INSTALL_PREFIX}/lib/libcrypto.lib") + set(OPENSSL_SSL_LIBRARY "${OPEN_SRC_INSTALL_PREFIX}/lib/libssl.lib") + set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY}) + string(REPLACE ";" "|" OPENSSL_LIBRARIES_ALT_SEP "${OPENSSL_LIBRARIES}") + set(BUILD_ARGS -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DUSE_OPENSSL=${USE_OPENSSL} + -DUSE_MBEDTLS=${USE_MBEDTLS} + -DLWS_EXT_PTHREAD_INCLUDE_DIR=${EXT_PTHREAD_INCLUDE_DIR} + -DLWS_EXT_PTHREAD_LIBRARIES=${EXT_PTHREAD_LIBRARIES} + -DLWS_OPENSSL_INCLUDE_DIRS=${OPENSSL_INCLUDE_DIRS} + -DLWS_OPENSSL_LIBRARIES=${OPENSSL_LIBRARIES_ALT_SEP} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}) + else() + set(BUILD_ARGS -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DOPENSSL_DIR=${OPEN_SRC_INSTALL_PREFIX} + -DUSE_OPENSSL=${USE_OPENSSL} + -DUSE_MBEDTLS=${USE_MBEDTLS} + -DLWS_OPENSSL_CRYPTO_LIBRARY=${OPENSSL_CRYPTO_LIBRARY} + -DLWS_OPENSSL_SSL_LIBRARY=${OPENSSL_SSL_LIBRARY} + -DLWS_OPENSSL_INCLUDE_DIRS=${OPENSSL_INCLUDE_DIR} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}) + endif() build_dependency(websockets ${BUILD_ARGS}) set(BUILD_ARGS From 863a1a47eb8858702f3ec444032957e2332cc693 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Mon, 31 Jul 2023 14:23:50 -0700 Subject: [PATCH 091/102] Introducing profiling of code sections and APIs (#1755) * Adds RTSP Source to GStreamer Sample (#1740) * Adds rtsp source support, modifies source-type determination * All use cases tested and debugged. * Clang formatting. * Clang formatting. * Updates credentials configuration to fix sample-check error. * Sample-check fix attempt #2 * Sample-check fix attempt 3 * Sample-check fix attempt 4 * Sample-check fix attempt * "" * " " * " " * " " * Update README.md * Updates sample run instructions structure, adds RTSP source instructions * Update README.md * Renames sample file to be same as executable, updates CMakeLists to reflect this. * Update README.md Co-authored-by: Niyati Maheshwari * Update README.md * Updates usage statement to new sample executable name --------- Co-authored-by: Niyati Maheshwari * Connection timeout sleep (#1744) * Remove thread_detach and looping sleep, add thread_join * Added support for socketpair() and added it to connectionlistener * Clang formatting * Fix test that previously expected TID to be invalid * remove unused variables * Fixing incorrect typing on comparison * clang formatting * strlen -> STRLEN macro * Off by 1 error in poll rfds * clang formatting * Fix comment typo regarding default source in Gst sample (#1750) * Initial commit * New structures to track signaling latency in diagnostics * Make peer connection stats accessible in application * Fix ice agent profling to store in variables, new APIs for getting ice agent metrics * Profile create peer connection * Macro fixes * More macro fix --------- Co-authored-by: Stefan Kieszkowski <85728496+stefankiesz@users.noreply.github.com> Co-authored-by: Niyati Maheshwari Co-authored-by: jdelapla --- README.md | 21 +- samples/Common.c | 143 ++++++++---- samples/Samples.h | 14 +- samples/kvsWebRTCClientMaster.c | 214 ++++-------------- samples/kvsWebRTCClientViewer.c | 157 +++---------- samples/kvsWebrtcClientMasterGstSample.c | 197 ++++++---------- .../kinesis/video/webrtcclient/Include.h | 71 +++++- .../kinesis/video/webrtcclient/Stats.h | 36 ++- src/source/Crypto/Crypto.c | 11 +- src/source/Crypto/Dtls.c | 7 +- src/source/Crypto/Dtls.h | 1 + src/source/Crypto/Dtls_openssl.c | 30 ++- src/source/Ice/IceAgent.c | 191 +++++++++------- src/source/Ice/IceAgent.h | 17 ++ src/source/Ice/IceAgentStateMachine.c | 17 +- src/source/Ice/Network.c | 9 +- src/source/Ice/SocketConnection.c | 11 +- src/source/Ice/TurnConnection.c | 2 - src/source/PeerConnection/PeerConnection.c | 73 +++++- src/source/PeerConnection/PeerConnection.h | 11 + .../PeerConnection/SessionDescription.c | 0 src/source/Signaling/Client.c | 22 +- src/source/Signaling/LwsApiCalls.c | 9 + src/source/Signaling/Signaling.c | 62 +++-- src/source/Signaling/Signaling.h | 11 + src/source/Signaling/StateMachine.c | 25 +- 26 files changed, 745 insertions(+), 617 deletions(-) mode change 100755 => 100644 src/source/Ice/IceAgent.c mode change 100755 => 100644 src/source/PeerConnection/SessionDescription.c diff --git a/README.md b/README.md index d1f1244dbb..2677a3271b 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,6 @@

      Pure C WebRTC Client for Amazon Kinesis Video Streams

      - Build Status Coverage Status

      @@ -164,7 +163,7 @@ export AWS_SESSION_TOKEN= export AWS_DEFAULT_REGION= ``` -### Setup desired log level: +### Setup logging: Set up the desired log level. The log levels and corresponding values currently available are: 1. `LOG_LEVEL_VERBOSE` ---- 1 2. `LOG_LEVEL_DEBUG` ---- 2 @@ -186,12 +185,23 @@ export AWS_KVS_LOG_LEVEL = 2 switches on DEBUG level logs while runnning the sam Note: The default log level is `LOG_LEVEL_WARN`. -* Optionally, set path to SSL CA certificate with variable (`../certs/cert.pem` is default one and points to file in this repository): +Starting v1.7.x (**TO_BE_UPDATED**), by default, the SDK creates a log file that would have execution timing details of certain steps in connection establishment. It would be stored in the `build` directory as `kvsFileLogFilter.x`. In case you do not want to use defaults, you can modify certain parameters such as log file directory, log file size and file rotation index in the `createFileLoggerWithLevelFiltering` function in the samples. +In addition to these logs, if you would like to have other level logs in a file as well, run: + +``` +export AWS_ENABLE_FILE_LOGGING=TRUE +``` + +### Set path to SSL CA certificate (**Optional**) + +If you have a custom CA certificate path to set, you can set it using: ``` export AWS_KVS_CACERT_PATH=../certs/cert.pem ``` +By defaut, the SSL CA certificate is set to `../certs/cert.pem` which points to the file in this repository: + ### Running the Samples After executing `make` you will have sample applications in your `build/samples` directory. From the `build/` directory, run any of the sample applications by passing to it the name of your signaling channel. If a signaling channel does not exist with the name you provide, the application creates one. @@ -298,11 +308,6 @@ In the mbedTLS version, the SDK uses /dev/urandom on Unix and CryptGenRandom API If you would like to print out the SDPs, run this command: `export DEBUG_LOG_SDP=TRUE` -### File logging -If you would like to enable file logging, run this command: -`export AWS_ENABLE_FILE_LOGGING=TRUE` -You can also change settings such as buffer size, number of log files for rotation and log file path in the samples - ### Adjust MTU If ICE connection can be established successfully but media can not be transferred, make sure the actual MTU is higher than the MTU setting here: https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c/blob/master/src/source/PeerConnection/Rtp.h#L12. diff --git a/samples/Common.c b/samples/Common.c index c30aec8637..76862d1bff 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -12,6 +12,18 @@ VOID sigintHandler(INT32 sigNum) } } +UINT32 setLogLevel() +{ + PCHAR pLogLevel; + UINT32 logLevel = LOG_LEVEL_DEBUG; + if (NULL == (pLogLevel = GETENV(DEBUG_LOG_LEVEL_ENV_VAR)) || STATUS_SUCCESS != STRTOUI32(pLogLevel, NULL, 10, &logLevel) || + logLevel < LOG_LEVEL_VERBOSE || logLevel > LOG_LEVEL_SILENT) { + logLevel = LOG_LEVEL_WARN; + } + SET_LOGGER_LOG_LEVEL(logLevel); + return logLevel; +} + STATUS signalingCallFailed(STATUS status) { return (STATUS_SIGNALING_GET_TOKEN_CALL_FAILED == status || STATUS_SIGNALING_DESCRIBE_CALL_FAILED == status || @@ -45,7 +57,6 @@ VOID onConnectionStateChange(UINT64 customData, RTC_PEER_CONNECTION_STATE newSta { STATUS retStatus = STATUS_SUCCESS; PSampleStreamingSession pSampleStreamingSession = (PSampleStreamingSession) customData; - CHK(pSampleStreamingSession != NULL && pSampleStreamingSession->pSampleConfiguration != NULL, STATUS_INTERNAL_ERROR); PSampleConfiguration pSampleConfiguration = pSampleStreamingSession->pSampleConfiguration; @@ -55,6 +66,10 @@ VOID onConnectionStateChange(UINT64 customData, RTC_PEER_CONNECTION_STATE newSta case RTC_PEER_CONNECTION_STATE_CONNECTED: ATOMIC_STORE_BOOL(&pSampleConfiguration->connected, TRUE); CVAR_BROADCAST(pSampleConfiguration->cvar); + + CHK_STATUS(peerConnectionGetMetrics(pSampleStreamingSession->pPeerConnection, &pSampleStreamingSession->peerConnectionMetrics)); + CHK_STATUS(iceAgentGetMetrics(pSampleStreamingSession->pPeerConnection, &pSampleStreamingSession->iceMetrics)); + if (STATUS_FAILED(retStatus = logSelectedIceCandidatesInformation(pSampleStreamingSession))) { DLOGW("Failed to get information about selected Ice candidates: 0x%08x", retStatus); } @@ -70,6 +85,7 @@ VOID onConnectionStateChange(UINT64 customData, RTC_PEER_CONNECTION_STATE newSta default: ATOMIC_STORE_BOOL(&pSampleConfiguration->connected, FALSE); CVAR_BROADCAST(pSampleConfiguration->cvar); + break; } @@ -219,8 +235,6 @@ STATUS handleOffer(PSampleConfiguration pSampleConfiguration, PSampleStreamingSe if (pSampleStreamingSession->remoteCanTrickleIce) { CHK_STATUS(createAnswer(pSampleStreamingSession->pPeerConnection, &pSampleStreamingSession->answerSessionDescriptionInit)); CHK_STATUS(respondWithAnswer(pSampleStreamingSession)); - DLOGD("time taken to send answer %" PRIu64 " ms", - (GETTIME() - pSampleStreamingSession->offerReceiveTime) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); } mediaThreadStarted = ATOMIC_EXCHANGE_BOOL(&pSampleConfiguration->mediaThreadStarted, TRUE); @@ -244,16 +258,23 @@ STATUS sendSignalingMessage(PSampleStreamingSession pSampleStreamingSession, PSi { STATUS retStatus = STATUS_SUCCESS; BOOL locked = FALSE; - + PSampleConfiguration pSampleConfiguration; // Validate the input params CHK(pSampleStreamingSession != NULL && pSampleStreamingSession->pSampleConfiguration != NULL && pMessage != NULL, STATUS_NULL_ARG); - CHK(IS_VALID_MUTEX_VALUE(pSampleStreamingSession->pSampleConfiguration->signalingSendMessageLock) && - IS_VALID_SIGNALING_CLIENT_HANDLE(pSampleStreamingSession->pSampleConfiguration->signalingClientHandle), + + pSampleConfiguration = pSampleStreamingSession->pSampleConfiguration; + + CHK(IS_VALID_MUTEX_VALUE(pSampleConfiguration->signalingSendMessageLock) && + IS_VALID_SIGNALING_CLIENT_HANDLE(pSampleConfiguration->signalingClientHandle), STATUS_INVALID_OPERATION); - MUTEX_LOCK(pSampleStreamingSession->pSampleConfiguration->signalingSendMessageLock); + MUTEX_LOCK(pSampleConfiguration->signalingSendMessageLock); locked = TRUE; - CHK_STATUS(signalingClientSendMessageSync(pSampleStreamingSession->pSampleConfiguration->signalingClientHandle, pMessage)); + CHK_STATUS(signalingClientSendMessageSync(pSampleConfiguration->signalingClientHandle, pMessage)); + if (pMessage->messageType == SIGNALING_MESSAGE_TYPE_ANSWER) { + CHK_STATUS(signalingClientGetMetrics(pSampleConfiguration->signalingClientHandle, &pSampleConfiguration->signalingClientMetrics)); + DLOGP("[Signaling offer to answer] %" PRIu64 " ms", pSampleConfiguration->signalingClientMetrics.signalingClientStats.offerToAnswerTime); + } CleanUp: @@ -315,8 +336,6 @@ VOID onIceCandidateHandler(UINT64 customData, PCHAR candidateJson) !pSampleStreamingSession->remoteCanTrickleIce) { CHK_STATUS(createAnswer(pSampleStreamingSession->pPeerConnection, &pSampleStreamingSession->answerSessionDescriptionInit)); CHK_STATUS(respondWithAnswer(pSampleStreamingSession)); - DLOGD("time taken to send answer %" PRIu64 " ms", - (GETTIME() - pSampleStreamingSession->offerReceiveTime) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); } else if (pSampleStreamingSession->pSampleConfiguration->channelInfo.channelRoleType == SIGNALING_CHANNEL_ROLE_TYPE_VIEWER && !pSampleStreamingSession->pSampleConfiguration->trickleIce) { CVAR_BROADCAST(pSampleStreamingSession->pSampleConfiguration->cvar); @@ -344,7 +363,7 @@ STATUS initializePeerConnection(PSampleConfiguration pSampleConfiguration, PRtcP RtcConfiguration configuration; UINT32 i, j, iceConfigCount, uriCount = 0, maxTurnServer = 1; PIceConfigInfo pIceConfigInfo; - UINT64 data, curTime; + UINT64 data; PRtcCertificate pRtcCertificate = NULL; CHK(pSampleConfiguration != NULL && ppRtcPeerConnection != NULL, STATUS_NULL_ARG); @@ -375,7 +394,7 @@ STATUS initializePeerConnection(PSampleConfiguration pSampleConfiguration, PRtcP * if configuration.iceServers[uriCount + 1].urls is "turn:ip:port?transport=tcp" then ICE will try TURN over TCP/TLS * if configuration.iceServers[uriCount + 1].urls is "turns:ip:port?transport=udp", it's currently ignored because sdk dont do TURN * over DTLS yet. if configuration.iceServers[uriCount + 1].urls is "turns:ip:port?transport=tcp" then ICE will try TURN over TCP/TLS - * if configuration.iceServers[uriCount + 1].urls is "turn:ip:port" then ICE will try both TURN over UPD and TCP/TLS + * if configuration.iceServers[uriCount + 1].urls is "turn:ip:port" then ICE will try both TURN over UDP and TCP/TLS * * It's recommended to not pass too many TURN iceServers to configuration because it will slow down ice gathering in non-trickle mode. */ @@ -404,10 +423,7 @@ STATUS initializePeerConnection(PSampleConfiguration pSampleConfiguration, PRtcP configuration.certificates[0] = *pRtcCertificate; } - curTime = GETTIME(); CHK_STATUS(createPeerConnection(&configuration, ppRtcPeerConnection)); - DLOGD("time taken to create peer connection %" PRIu64 " ms", (GETTIME() - curTime) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); - CleanUp: CHK_LOG_ERR(retStatus); @@ -459,6 +475,8 @@ STATUS createSampleStreamingSession(PSampleConfiguration pSampleConfiguration, P CHK((isMaster && peerId != NULL) || !isMaster, STATUS_INVALID_ARG); pSampleStreamingSession = (PSampleStreamingSession) MEMCALLOC(1, SIZEOF(SampleStreamingSession)); + pSampleStreamingSession->firstFrame = TRUE; + pSampleStreamingSession->offerReceiveTime = GETTIME(); CHK(pSampleStreamingSession != NULL, STATUS_NOT_ENOUGH_MEMORY); if (isMaster) { @@ -473,6 +491,10 @@ STATUS createSampleStreamingSession(PSampleConfiguration pSampleConfiguration, P pSampleStreamingSession->pSampleConfiguration = pSampleConfiguration; pSampleStreamingSession->rtcMetricsHistory.prevTs = GETTIME(); + + pSampleStreamingSession->peerConnectionMetrics.version = PEER_CONNECTION_METRICS_CURRENT_VERSION; + pSampleStreamingSession->iceMetrics.version = ICE_AGENT_METRICS_CURRENT_VERSION; + // if we're the viewer, we control the trickle ice mode pSampleStreamingSession->remoteCanTrickleIce = !isMaster && pSampleConfiguration->trickleIce; @@ -518,7 +540,6 @@ STATUS createSampleStreamingSession(PSampleConfiguration pSampleConfiguration, P // twcc bandwidth estimation CHK_STATUS(peerConnectionOnSenderBandwidthEstimation(pSampleStreamingSession->pPeerConnection, (UINT64) pSampleStreamingSession, sampleSenderBandwidthEstimationHandler)); - pSampleStreamingSession->firstFrame = TRUE; pSampleStreamingSession->startUpLatency = 0; CleanUp: @@ -599,24 +620,12 @@ VOID sampleVideoFrameHandler(UINT64 customData, PFrame pFrame) { UNUSED_PARAM(customData); DLOGV("Video Frame received. TrackId: %" PRIu64 ", Size: %u, Flags %u", pFrame->trackId, pFrame->size, pFrame->flags); - PSampleStreamingSession pSampleStreamingSession = (PSampleStreamingSession) customData; - if (pSampleStreamingSession->firstFrame) { - pSampleStreamingSession->firstFrame = FALSE; - pSampleStreamingSession->startUpLatency = (GETTIME() - pSampleStreamingSession->offerReceiveTime) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; - printf("Start up latency from offer to first video frame: %" PRIu64 "ms\n", pSampleStreamingSession->startUpLatency); - } } VOID sampleAudioFrameHandler(UINT64 customData, PFrame pFrame) { UNUSED_PARAM(customData); DLOGV("Audio Frame received. TrackId: %" PRIu64 ", Size: %u, Flags %u", pFrame->trackId, pFrame->size, pFrame->flags); - PSampleStreamingSession pSampleStreamingSession = (PSampleStreamingSession) customData; - if (pSampleStreamingSession->firstFrame) { - pSampleStreamingSession->firstFrame = FALSE; - pSampleStreamingSession->startUpLatency = (GETTIME() - pSampleStreamingSession->offerReceiveTime) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; - printf("Start up latency from offer to first audio frame: %" PRIu64 "ms\n", pSampleStreamingSession->startUpLatency); - } } VOID sampleBandwidthEstimationHandler(UINT64 customData, DOUBLE maximumBitrate) @@ -720,13 +729,12 @@ STATUS lookForSslCert(PSampleConfiguration* ppSampleConfiguration) return retStatus; } -STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE roleType, BOOL trickleIce, BOOL useTurn, +STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE roleType, BOOL trickleIce, BOOL useTurn, UINT32 logLevel, PSampleConfiguration* ppSampleConfiguration) { STATUS retStatus = STATUS_SUCCESS; - PCHAR pAccessKey, pSecretKey, pSessionToken, pLogLevel; + PCHAR pAccessKey, pSecretKey, pSessionToken; PSampleConfiguration pSampleConfiguration = NULL; - UINT32 logLevel = LOG_LEVEL_DEBUG; CHK(ppSampleConfiguration != NULL, STATUS_NULL_ARG); @@ -745,24 +753,35 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE #endif pSessionToken = getenv(SESSION_TOKEN_ENV_VAR); - pSampleConfiguration->enableFileLogging = FALSE; + + // If the env is set, we generate normal log files apart from filtered profile log files + // If not set, we generate only the filtered profile log files if (NULL != getenv(ENABLE_FILE_LOGGING)) { - pSampleConfiguration->enableFileLogging = TRUE; + retStatus = createFileLoggerWithLevelFiltering(FILE_LOGGING_BUFFER_SIZE, MAX_NUMBER_OF_LOG_FILES, (PCHAR) FILE_LOGGER_LOG_FILE_DIRECTORY_PATH, + TRUE, TRUE, TRUE, LOG_LEVEL_PROFILE, NULL); + + if (retStatus != STATUS_SUCCESS) { + DLOGW("[KVS Master] createFileLogger(): operation returned status code: 0x%08x", retStatus); + } else { + pSampleConfiguration->enableFileLogging = TRUE; + } + } else { + retStatus = createFileLoggerWithLevelFiltering(FILE_LOGGING_BUFFER_SIZE, MAX_NUMBER_OF_LOG_FILES, (PCHAR) FILE_LOGGER_LOG_FILE_DIRECTORY_PATH, + TRUE, TRUE, FALSE, LOG_LEVEL_PROFILE, NULL); + + if (retStatus != STATUS_SUCCESS) { + DLOGW("[KVS Master] createFileLogger(): operation returned status code: 0x%08x", retStatus); + } else { + pSampleConfiguration->enableFileLogging = TRUE; + } } + if ((pSampleConfiguration->channelInfo.pRegion = getenv(DEFAULT_REGION_ENV_VAR)) == NULL) { pSampleConfiguration->channelInfo.pRegion = DEFAULT_AWS_REGION; } CHK_STATUS(lookForSslCert(&pSampleConfiguration)); - // Set the logger log level - if (NULL == (pLogLevel = getenv(DEBUG_LOG_LEVEL_ENV_VAR)) || STATUS_SUCCESS != STRTOUI32(pLogLevel, NULL, 10, &logLevel) || - logLevel < LOG_LEVEL_VERBOSE || logLevel > LOG_LEVEL_SILENT) { - logLevel = LOG_LEVEL_WARN; - } - - SET_LOGGER_LOG_LEVEL(logLevel); - #ifdef IOT_CORE_ENABLE_CREDENTIALS CHK_STATUS(createLwsIotCredentialProvider(pIotCoreCredentialEndPoint, pIotCoreCert, pIotCorePrivateKey, pSampleConfiguration->pCaCertPath, pIotCoreRoleAlias, channelName, &pSampleConfiguration->pCredentialProvider)); @@ -817,6 +836,7 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE pSampleConfiguration->clientInfo.signalingMessagesMaximumThreads = KVS_SIGNALING_THREADPOOL_MAX; pSampleConfiguration->iceCandidatePairStatsTimerId = MAX_UINT32; pSampleConfiguration->pregenerateCertTimerId = MAX_UINT32; + pSampleConfiguration->signalingClientMetrics.version = SIGNALING_CLIENT_METRICS_CURRENT_VERSION; ATOMIC_STORE_BOOL(&pSampleConfiguration->interrupted, FALSE); ATOMIC_STORE_BOOL(&pSampleConfiguration->mediaThreadStarted, FALSE); @@ -854,6 +874,38 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE return retStatus; } +STATUS initSignaling(PSampleConfiguration pSampleConfiguration, PCHAR clientId) +{ + STATUS retStatus = STATUS_SUCCESS; + SignalingClientMetrics signalingClientMetrics = pSampleConfiguration->signalingClientMetrics; + pSampleConfiguration->signalingClientCallbacks.messageReceivedFn = signalingMessageReceived; + STRCPY(pSampleConfiguration->clientInfo.clientId, clientId); + CHK_STATUS(createSignalingClientSync(&pSampleConfiguration->clientInfo, &pSampleConfiguration->channelInfo, + &pSampleConfiguration->signalingClientCallbacks, pSampleConfiguration->pCredentialProvider, + &pSampleConfiguration->signalingClientHandle)); + + // Enable the processing of the messages + CHK_STATUS(signalingClientFetchSync(pSampleConfiguration->signalingClientHandle)); + CHK_STATUS(signalingClientConnectSync(pSampleConfiguration->signalingClientHandle)); + + signalingClientGetMetrics(pSampleConfiguration->signalingClientHandle, &signalingClientMetrics); + + // Logging this here since the logs in signaling library do not get routed to file + DLOGP("[Signaling Get token] %" PRIu64 " ms", signalingClientMetrics.signalingClientStats.getTokenCallTime); + DLOGP("[Signaling Describe] %" PRIu64 " ms", signalingClientMetrics.signalingClientStats.describeCallTime); + DLOGP("[Signaling Create Channel] %" PRIu64 " ms", signalingClientMetrics.signalingClientStats.createCallTime); + DLOGP("[Signaling Get endpoint] %" PRIu64 " ms", signalingClientMetrics.signalingClientStats.getEndpointCallTime); + DLOGP("[Signaling Get ICE config] %" PRIu64 " ms", signalingClientMetrics.signalingClientStats.getIceConfigCallTime); + DLOGP("[Signaling Connect] %" PRIu64 " ms", signalingClientMetrics.signalingClientStats.connectCallTime); + DLOGP("[Signaling create client] %" PRIu64 " ms", signalingClientMetrics.signalingClientStats.createClientTime); + DLOGP("[Signaling fetch client] %" PRIu64 " ms", signalingClientMetrics.signalingClientStats.fetchClientTime); + DLOGP("[Signaling connect client] %" PRIu64 " ms", signalingClientMetrics.signalingClientStats.connectClientTime); + pSampleConfiguration->signalingClientMetrics = signalingClientMetrics; + gSampleConfiguration = pSampleConfiguration; +CleanUp: + return retStatus; +} + STATUS logSignalingClientStats(PSignalingClientMetrics pSignalingClientMetrics) { ENTERS(); @@ -1044,7 +1096,6 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) pSampleConfiguration = *ppSampleConfiguration; CHK(pSampleConfiguration != NULL, retStatus); - if (IS_VALID_TIMER_QUEUE_HANDLE(pSampleConfiguration->timerQueueHandle)) { if (pSampleConfiguration->iceCandidatePairStatsTimerId != MAX_UINT32) { retStatus = timerQueueCancelTimer(pSampleConfiguration->timerQueueHandle, pSampleConfiguration->iceCandidatePairStatsTimerId, @@ -1144,7 +1195,9 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) CHK_LOG_ERR(stackQueueFree(pSampleConfiguration->pregeneratedCertificates)); pSampleConfiguration->pregeneratedCertificates = NULL; } - + if (pSampleConfiguration->enableFileLogging) { + freeFileLogger(); + } SAFE_MEMFREE(*ppSampleConfiguration); CleanUp: @@ -1312,6 +1365,7 @@ STATUS signalingMessageReceived(UINT64 customData, PReceivedSignalingMessage pRe * any ice candidate messages queued in pPendingSignalingMessageForRemoteClient. If so then submit * all of them. */ + if (pSampleConfiguration->streamingSessionCount == ARRAY_SIZE(pSampleConfiguration->sampleStreamingSessionList)) { DLOGW("Max simultaneous streaming session count reached."); @@ -1325,7 +1379,6 @@ STATUS signalingMessageReceived(UINT64 customData, PReceivedSignalingMessage pRe } CHK_STATUS(createSampleStreamingSession(pSampleConfiguration, pReceivedSignalingMessage->signalingMessage.peerClientId, TRUE, &pSampleStreamingSession)); - pSampleStreamingSession->offerReceiveTime = GETTIME(); MUTEX_LOCK(pSampleConfiguration->streamingSessionListReadLock); pSampleConfiguration->sampleStreamingSessionList[pSampleConfiguration->streamingSessionCount++] = pSampleStreamingSession; MUTEX_UNLOCK(pSampleConfiguration->streamingSessionListReadLock); @@ -1368,6 +1421,8 @@ STATUS signalingMessageReceived(UINT64 customData, PReceivedSignalingMessage pRe } startStats = pSampleConfiguration->iceCandidatePairStatsTimerId == MAX_UINT32; + CHK_STATUS(signalingClientGetMetrics(pSampleConfiguration->signalingClientHandle, &pSampleConfiguration->signalingClientMetrics)); + DLOGP("[Signaling offer to answer] %" PRIu64 " ms", pSampleConfiguration->signalingClientMetrics.signalingClientStats.offerToAnswerTime); break; case SIGNALING_MESSAGE_TYPE_ICE_CANDIDATE: diff --git a/samples/Samples.h b/samples/Samples.h index 2ef6b5c35a..dedd53d65e 100644 --- a/samples/Samples.h +++ b/samples/Samples.h @@ -34,7 +34,7 @@ extern "C" { #define CA_CERT_PEM_FILE_EXTENSION ".pem" -#define FILE_LOGGING_BUFFER_SIZE (100 * 1024) +#define FILE_LOGGING_BUFFER_SIZE (10 * 1024) #define MAX_NUMBER_OF_LOG_FILES 5 #define SAMPLE_HASH_TABLE_BUCKET_COUNT 50 @@ -110,6 +110,7 @@ typedef struct { startRoutine videoSource; startRoutine receiveAudioVideoSource; RtcOnDataChannel onDataChannel; + SignalingClientMetrics signalingClientMetrics; PStackQueue pPendingSignalingMessageForRemoteClient; PHashTable pRtcPeerConnectionForRemoteClient; @@ -134,6 +135,7 @@ typedef struct { PStackQueue pregeneratedCertificates; // Max MAX_RTCCONFIGURATION_CERTIFICATES certificates PCHAR rtspUri; + UINT32 logLevel; } SampleConfiguration, *PSampleConfiguration; typedef struct { @@ -148,6 +150,7 @@ struct __SampleStreamingSession { volatile ATOMIC_BOOL terminateFlag; volatile ATOMIC_BOOL candidateGatheringDone; volatile ATOMIC_BOOL peerIdReceived; + volatile ATOMIC_BOOL firstFrame; volatile SIZE_T frameIndex; PRtcPeerConnection pPeerConnection; PRtcRtpTransceiver pVideoRtcRtpTransceiver; @@ -158,15 +161,16 @@ struct __SampleStreamingSession { UINT64 videoTimestamp; CHAR peerId[MAX_SIGNALING_CLIENT_ID_LEN + 1]; TID receiveAudioVideoSenderTid; - UINT64 offerReceiveTime; UINT64 startUpLatency; - BOOL firstFrame; RtcMetricsHistory rtcMetricsHistory; BOOL remoteCanTrickleIce; // this is called when the SampleStreamingSession is being freed StreamSessionShutdownCallback shutdownCallback; UINT64 shutdownCallbackCustomData; + UINT64 offerReceiveTime; + PeerConnectionMetrics peerConnectionMetrics; + KvsIceAgentMetrics iceMetrics; }; VOID sigintHandler(INT32); @@ -178,7 +182,7 @@ PVOID sampleReceiveAudioVideoFrame(PVOID); PVOID getPeriodicIceCandidatePairStats(PVOID); STATUS getIceCandidatePairStatsCallback(UINT32, UINT64, UINT64); STATUS pregenerateCertTimerCallback(UINT32, UINT64, UINT64); -STATUS createSampleConfiguration(PCHAR, SIGNALING_CHANNEL_ROLE_TYPE, BOOL, BOOL, PSampleConfiguration*); +STATUS createSampleConfiguration(PCHAR, SIGNALING_CHANNEL_ROLE_TYPE, BOOL, BOOL, UINT32, PSampleConfiguration*); STATUS freeSampleConfiguration(PSampleConfiguration*); STATUS signalingClientStateChanged(UINT64, SIGNALING_CLIENT_STATE); STATUS signalingMessageReceived(UINT64, PReceivedSignalingMessage); @@ -208,7 +212,9 @@ STATUS freeMessageQueue(PPendingMessageQueue); STATUS submitPendingIceCandidate(PPendingMessageQueue, PSampleStreamingSession); STATUS removeExpiredMessageQueues(PStackQueue); STATUS getPendingMessageQueueForHash(PStackQueue, UINT64, BOOL, PPendingMessageQueue*); +STATUS initSignaling(PSampleConfiguration, PCHAR); BOOL sampleFilterNetworkInterfaces(UINT64, PCHAR); +UINT32 setLogLevel(); #ifdef __cplusplus } diff --git a/samples/kvsWebRTCClientMaster.c b/samples/kvsWebRTCClientMaster.c index 9f3ce4f5df..1913401f18 100644 --- a/samples/kvsWebRTCClientMaster.c +++ b/samples/kvsWebRTCClientMaster.c @@ -2,48 +2,29 @@ extern PSampleConfiguration gSampleConfiguration; -// #define VERBOSE - INT32 main(INT32 argc, CHAR* argv[]) { STATUS retStatus = STATUS_SUCCESS; UINT32 frameSize; PSampleConfiguration pSampleConfiguration = NULL; - SignalingClientMetrics signalingClientMetrics; PCHAR pChannelName; + SignalingClientMetrics signalingClientMetrics; signalingClientMetrics.version = SIGNALING_CLIENT_METRICS_CURRENT_VERSION; SET_INSTRUMENTED_ALLOCATORS(); + UINT32 logLevel = setLogLevel(); #ifndef _WIN32 signal(SIGINT, sigintHandler); #endif - // do trickleIce by default - printf("[KVS Master] Using trickleICE by default\n"); - #ifdef IOT_CORE_ENABLE_CREDENTIALS CHK_ERR((pChannelName = getenv(IOT_CORE_THING_NAME)) != NULL, STATUS_INVALID_OPERATION, "AWS_IOT_CORE_THING_NAME must be set"); #else pChannelName = argc > 1 ? argv[1] : SAMPLE_CHANNEL_NAME; #endif - retStatus = createSampleConfiguration(pChannelName, SIGNALING_CHANNEL_ROLE_TYPE_MASTER, TRUE, TRUE, &pSampleConfiguration); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] createSampleConfiguration(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - - printf("[KVS Master] Created signaling channel %s\n", pChannelName); - - if (pSampleConfiguration->enableFileLogging) { - retStatus = - createFileLogger(FILE_LOGGING_BUFFER_SIZE, MAX_NUMBER_OF_LOG_FILES, (PCHAR) FILE_LOGGER_LOG_FILE_DIRECTORY_PATH, TRUE, TRUE, NULL); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] createFileLogger(): operation returned status code: 0x%08x \n", retStatus); - pSampleConfiguration->enableFileLogging = FALSE; - } - } + CHK_STATUS(createSampleConfiguration(pChannelName, SIGNALING_CHANNEL_ROLE_TYPE_MASTER, TRUE, TRUE, logLevel, &pSampleConfiguration)); // Set the audio and video handlers pSampleConfiguration->audioSource = sendAudioPackets; @@ -51,79 +32,34 @@ INT32 main(INT32 argc, CHAR* argv[]) pSampleConfiguration->receiveAudioVideoSource = sampleReceiveAudioVideoFrame; pSampleConfiguration->onDataChannel = onDataChannel; pSampleConfiguration->mediaType = SAMPLE_STREAMING_AUDIO_VIDEO; - printf("[KVS Master] Finished setting audio and video handlers\n"); + DLOGI("[KVS Master] Finished setting handlers"); // Check if the samples are present - retStatus = readFrameFromDisk(NULL, &frameSize, "./h264SampleFrames/frame-0001.h264"); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] readFrameFromDisk(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - printf("[KVS Master] Checked sample video frame availability....available\n"); + CHK_STATUS(readFrameFromDisk(NULL, &frameSize, "./h264SampleFrames/frame-0001.h264")); + DLOGI("[KVS Master] Checked sample video frame availability....available"); - retStatus = readFrameFromDisk(NULL, &frameSize, "./opusSampleFrames/sample-001.opus"); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] readFrameFromDisk(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - printf("[KVS Master] Checked sample audio frame availability....available\n"); + CHK_STATUS(readFrameFromDisk(NULL, &frameSize, "./opusSampleFrames/sample-001.opus")); + DLOGI("[KVS Master] Checked sample audio frame availability....available"); // Initialize KVS WebRTC. This must be done before anything else, and must only be done once. - retStatus = initKvsWebRtc(); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] initKvsWebRtc(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - printf("[KVS Master] KVS WebRTC initialization completed successfully\n"); + CHK_STATUS(initKvsWebRtc()); + DLOGI("[KVS Master] KVS WebRTC initialization completed successfully"); - pSampleConfiguration->signalingClientCallbacks.messageReceivedFn = signalingMessageReceived; - - strcpy(pSampleConfiguration->clientInfo.clientId, SAMPLE_MASTER_CLIENT_ID); - - retStatus = createSignalingClientSync(&pSampleConfiguration->clientInfo, &pSampleConfiguration->channelInfo, - &pSampleConfiguration->signalingClientCallbacks, pSampleConfiguration->pCredentialProvider, - &pSampleConfiguration->signalingClientHandle); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] createSignalingClientSync(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - printf("[KVS Master] Signaling client created successfully\n"); - - // Enable the processing of the messages - retStatus = signalingClientFetchSync(pSampleConfiguration->signalingClientHandle); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] signalingClientFetchSync(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - - retStatus = signalingClientConnectSync(pSampleConfiguration->signalingClientHandle); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] signalingClientConnectSync(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - printf("[KVS Master] Signaling client connection to socket established\n"); - - gSampleConfiguration = pSampleConfiguration; - - printf("[KVS Master] Channel %s set up done \n", pChannelName); + CHK_STATUS(initSignaling(pSampleConfiguration, SAMPLE_MASTER_CLIENT_ID)); + DLOGI("[KVS Master] Channel %s set up done ", pChannelName); // Checking for termination - retStatus = sessionCleanupWait(pSampleConfiguration); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] sessionCleanupWait(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - - printf("[KVS Master] Streaming session terminated\n"); + CHK_STATUS(sessionCleanupWait(pSampleConfiguration)); + DLOGI("[KVS Master] Streaming session terminated"); CleanUp: if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] Terminated with status code 0x%08x\n", retStatus); + DLOGE("[KVS Master] Terminated with status code 0x%08x", retStatus); } - printf("[KVS Master] Cleaning up....\n"); + DLOGI("[KVS Master] Cleaning up...."); if (pSampleConfiguration != NULL) { // Kick of the termination sequence ATOMIC_STORE_BOOL(&pSampleConfiguration->appTerminateFlag, TRUE); @@ -132,26 +68,23 @@ INT32 main(INT32 argc, CHAR* argv[]) THREAD_JOIN(pSampleConfiguration->mediaSenderTid, NULL); } - if (pSampleConfiguration->enableFileLogging) { - freeFileLogger(); - } retStatus = signalingClientGetMetrics(pSampleConfiguration->signalingClientHandle, &signalingClientMetrics); if (retStatus == STATUS_SUCCESS) { logSignalingClientStats(&signalingClientMetrics); } else { - printf("[KVS Master] signalingClientGetMetrics() operation returned status code: 0x%08x\n", retStatus); + DLOGE("[KVS Master] signalingClientGetMetrics() operation returned status code: 0x%08x", retStatus); } retStatus = freeSignalingClient(&pSampleConfiguration->signalingClientHandle); if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] freeSignalingClient(): operation returned status code: 0x%08x", retStatus); + DLOGE("[KVS Master] freeSignalingClient(): operation returned status code: 0x%08x", retStatus); } retStatus = freeSampleConfiguration(&pSampleConfiguration); if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] freeSampleConfiguration(): operation returned status code: 0x%08x", retStatus); + DLOGE("[KVS Master] freeSampleConfiguration(): operation returned status code: 0x%08x", retStatus); } } - printf("[KVS Master] Cleanup done\n"); + DLOGI("[KVS Master] Cleanup done"); CHK_LOG_ERR(retStatus); RESET_INSTRUMENTED_ALLOCATORS(); @@ -168,21 +101,10 @@ STATUS readFrameFromDisk(PBYTE pFrame, PUINT32 pSize, PCHAR frameFilePath) { STATUS retStatus = STATUS_SUCCESS; UINT64 size = 0; - - if (pSize == NULL) { - printf("[KVS Master] readFrameFromDisk(): operation returned status code: 0x%08x \n", STATUS_NULL_ARG); - goto CleanUp; - } - + CHK_ERR(pSize != NULL, STATUS_NULL_ARG, "[KVS Master] Invalid file size"); size = *pSize; - // Get the size and read into frame - retStatus = readFile(frameFilePath, TRUE, pFrame, &size); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] readFile(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - + CHK_STATUS(readFile(frameFilePath, TRUE, pFrame, &size)); CleanUp: if (pSize != NULL) { @@ -204,11 +126,7 @@ PVOID sendVideoPackets(PVOID args) UINT32 i; UINT64 startTime, lastFrameTime, elapsed; MEMSET(&encoderStats, 0x00, SIZEOF(RtcEncoderStats)); - - if (pSampleConfiguration == NULL) { - printf("[KVS Master] sendVideoPackets(): operation returned status code: 0x%08x \n", STATUS_NULL_ARG); - goto CleanUp; - } + CHK_ERR(pSampleConfiguration != NULL, STATUS_NULL_ARG, "[KVS Master] Streaming session is NULL"); frame.presentationTs = 0; startTime = GETTIME(); @@ -216,51 +134,39 @@ PVOID sendVideoPackets(PVOID args) while (!ATOMIC_LOAD_BOOL(&pSampleConfiguration->appTerminateFlag)) { fileIndex = fileIndex % NUMBER_OF_H264_FRAME_FILES + 1; - snprintf(filePath, MAX_PATH_LEN, "./h264SampleFrames/frame-%04d.h264", fileIndex); + SNPRINTF(filePath, MAX_PATH_LEN, "./h264SampleFrames/frame-%04d.h264", fileIndex); - retStatus = readFrameFromDisk(NULL, &frameSize, filePath); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] readFrameFromDisk(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } + CHK_STATUS(readFrameFromDisk(NULL, &frameSize, filePath)); // Re-alloc if needed if (frameSize > pSampleConfiguration->videoBufferSize) { pSampleConfiguration->pVideoFrameBuffer = (PBYTE) MEMREALLOC(pSampleConfiguration->pVideoFrameBuffer, frameSize); - if (pSampleConfiguration->pVideoFrameBuffer == NULL) { - printf("[KVS Master] Video frame Buffer reallocation failed...%s (code %d)\n", strerror(errno), errno); - printf("[KVS Master] MEMREALLOC(): operation returned status code: 0x%08x \n", STATUS_NOT_ENOUGH_MEMORY); - goto CleanUp; - } - + CHK_ERR(pSampleConfiguration->pVideoFrameBuffer != NULL, STATUS_NOT_ENOUGH_MEMORY, "[KVS Master] Failed to allocate video frame buffer"); pSampleConfiguration->videoBufferSize = frameSize; } frame.frameData = pSampleConfiguration->pVideoFrameBuffer; frame.size = frameSize; - retStatus = readFrameFromDisk(frame.frameData, &frameSize, filePath); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] readFrameFromDisk(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } + CHK_STATUS(readFrameFromDisk(frame.frameData, &frameSize, filePath)); // based on bitrate of samples/h264SampleFrames/frame-* encoderStats.width = 640; encoderStats.height = 480; encoderStats.targetBitrate = 262000; frame.presentationTs += SAMPLE_VIDEO_FRAME_DURATION; - MUTEX_LOCK(pSampleConfiguration->streamingSessionListReadLock); for (i = 0; i < pSampleConfiguration->streamingSessionCount; ++i) { status = writeFrame(pSampleConfiguration->sampleStreamingSessionList[i]->pVideoRtcRtpTransceiver, &frame); + if (pSampleConfiguration->sampleStreamingSessionList[i]->firstFrame && status == STATUS_SUCCESS) { + PROFILE_WITH_START_TIME(pSampleConfiguration->sampleStreamingSessionList[i]->offerReceiveTime, "Time to first frame"); + pSampleConfiguration->sampleStreamingSessionList[i]->firstFrame = FALSE; + } encoderStats.encodeTimeMsec = 4; // update encode time to an arbitrary number to demonstrate stats update updateEncoderStats(pSampleConfiguration->sampleStreamingSessionList[i]->pVideoRtcRtpTransceiver, &encoderStats); if (status != STATUS_SRTP_NOT_READY_YET) { if (status != STATUS_SUCCESS) { -#ifdef VERBOSE - printf("writeFrame() failed with 0x%08x\n", status); -#endif + DLOGV("writeFrame() failed with 0x%08x", status); } } } @@ -276,7 +182,7 @@ PVOID sendVideoPackets(PVOID args) } CleanUp: - printf("[KVS Master] closing video thread"); + DLOGI("[KVS Master] Closing video thread"); CHK_LOG_ERR(retStatus); return (PVOID) (ULONG_PTR) retStatus; @@ -292,42 +198,26 @@ PVOID sendAudioPackets(PVOID args) UINT32 i; STATUS status; - if (pSampleConfiguration == NULL) { - printf("[KVS Master] sendAudioPackets(): operation returned status code: 0x%08x \n", STATUS_NULL_ARG); - goto CleanUp; - } - + CHK_ERR(pSampleConfiguration != NULL, STATUS_NULL_ARG, "[KVS Master] Streaming session is NULL"); frame.presentationTs = 0; while (!ATOMIC_LOAD_BOOL(&pSampleConfiguration->appTerminateFlag)) { fileIndex = fileIndex % NUMBER_OF_OPUS_FRAME_FILES + 1; - snprintf(filePath, MAX_PATH_LEN, "./opusSampleFrames/sample-%03d.opus", fileIndex); + SNPRINTF(filePath, MAX_PATH_LEN, "./opusSampleFrames/sample-%03d.opus", fileIndex); - retStatus = readFrameFromDisk(NULL, &frameSize, filePath); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] readFrameFromDisk(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } + CHK_STATUS(readFrameFromDisk(NULL, &frameSize, filePath)); // Re-alloc if needed if (frameSize > pSampleConfiguration->audioBufferSize) { pSampleConfiguration->pAudioFrameBuffer = (UINT8*) MEMREALLOC(pSampleConfiguration->pAudioFrameBuffer, frameSize); - if (pSampleConfiguration->pAudioFrameBuffer == NULL) { - printf("[KVS Master] Audio frame Buffer reallocation failed...%s (code %d)\n", strerror(errno), errno); - printf("[KVS Master] MEMREALLOC(): operation returned status code: 0x%08x \n", STATUS_NOT_ENOUGH_MEMORY); - goto CleanUp; - } + CHK_ERR(pSampleConfiguration->pAudioFrameBuffer != NULL, STATUS_NOT_ENOUGH_MEMORY, "[KVS Master] Failed to allocate audio frame buffer"); pSampleConfiguration->audioBufferSize = frameSize; } frame.frameData = pSampleConfiguration->pAudioFrameBuffer; frame.size = frameSize; - retStatus = readFrameFromDisk(frame.frameData, &frameSize, filePath); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] readFrameFromDisk(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } + CHK_STATUS(readFrameFromDisk(frame.frameData, &frameSize, filePath)); frame.presentationTs += SAMPLE_AUDIO_FRAME_DURATION; @@ -336,9 +226,10 @@ PVOID sendAudioPackets(PVOID args) status = writeFrame(pSampleConfiguration->sampleStreamingSessionList[i]->pAudioRtcRtpTransceiver, &frame); if (status != STATUS_SRTP_NOT_READY_YET) { if (status != STATUS_SUCCESS) { -#ifdef VERBOSE - printf("writeFrame() failed with 0x%08x\n", status); -#endif + DLOGV("writeFrame() failed with 0x%08x", status); + } else if (pSampleConfiguration->sampleStreamingSessionList[i]->firstFrame && status == STATUS_SUCCESS) { + PROFILE_WITH_START_TIME(pSampleConfiguration->sampleStreamingSessionList[i]->offerReceiveTime, "Time to first frame"); + pSampleConfiguration->sampleStreamingSessionList[i]->firstFrame = FALSE; } } } @@ -347,7 +238,7 @@ PVOID sendAudioPackets(PVOID args) } CleanUp: - printf("[KVS Master] closing audio thread"); + DLOGI("[KVS Master] closing audio thread"); return (PVOID) (ULONG_PTR) retStatus; } @@ -355,22 +246,9 @@ PVOID sampleReceiveAudioVideoFrame(PVOID args) { STATUS retStatus = STATUS_SUCCESS; PSampleStreamingSession pSampleStreamingSession = (PSampleStreamingSession) args; - if (pSampleStreamingSession == NULL) { - printf("[KVS Master] sampleReceiveAudioVideoFrame(): operation returned status code: 0x%08x \n", STATUS_NULL_ARG); - goto CleanUp; - } - - retStatus = transceiverOnFrame(pSampleStreamingSession->pVideoRtcRtpTransceiver, (UINT64) pSampleStreamingSession, sampleVideoFrameHandler); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] transceiverOnFrame(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - - retStatus = transceiverOnFrame(pSampleStreamingSession->pAudioRtcRtpTransceiver, (UINT64) pSampleStreamingSession, sampleAudioFrameHandler); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] transceiverOnFrame(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } + CHK_ERR(pSampleStreamingSession != NULL, STATUS_NULL_ARG, "[KVS Master] Streaming session is NULL"); + CHK_STATUS(transceiverOnFrame(pSampleStreamingSession->pVideoRtcRtpTransceiver, (UINT64) pSampleStreamingSession, sampleVideoFrameHandler)); + CHK_STATUS(transceiverOnFrame(pSampleStreamingSession->pAudioRtcRtpTransceiver, (UINT64) pSampleStreamingSession, sampleAudioFrameHandler)); CleanUp: diff --git a/samples/kvsWebRTCClientViewer.c b/samples/kvsWebRTCClientViewer.c index 21fff286b8..7ed9a3c4ba 100644 --- a/samples/kvsWebRTCClientViewer.c +++ b/samples/kvsWebRTCClientViewer.c @@ -12,7 +12,7 @@ VOID dataChannelOnMessageCallback(UINT64 customData, PRtcDataChannel pDataChanne if (isBinary) { DLOGI("DataChannel Binary Message"); } else { - DLOGI("DataChannel String Message: %.*s\n", pMessageLen, pMessage); + DLOGI("DataChannel String Message: %.*s", pMessageLen, pMessage); } } @@ -20,13 +20,13 @@ VOID dataChannelOnMessageCallback(UINT64 customData, PRtcDataChannel pDataChanne VOID dataChannelOnOpenCallback(UINT64 customData, PRtcDataChannel pDataChannel) { STATUS retStatus = STATUS_SUCCESS; - DLOGI("New DataChannel has been opened %s \n", pDataChannel->name); + DLOGI("New DataChannel has been opened %s ", pDataChannel->name); dataChannelOnMessage(pDataChannel, customData, dataChannelOnMessageCallback); ATOMIC_INCREMENT((PSIZE_T) customData); // Sending first message to the master over the data channel retStatus = dataChannelSend(pDataChannel, FALSE, (PBYTE) VIEWER_DATA_CHANNEL_MESSAGE, STRLEN(VIEWER_DATA_CHANNEL_MESSAGE)); if (retStatus != STATUS_SUCCESS) { - DLOGI("[KVS Viewer] dataChannelSend(): operation returned status code: 0x%08x \n", retStatus); + DLOGI("[KVS Viewer] dataChannelSend(): operation returned status code: 0x%08x ", retStatus); } } #endif @@ -41,109 +41,50 @@ INT32 main(INT32 argc, CHAR* argv[]) PSampleStreamingSession pSampleStreamingSession = NULL; BOOL locked = FALSE; PCHAR pChannelName; + CHAR clientId[256]; SET_INSTRUMENTED_ALLOCATORS(); + UINT32 logLevel = setLogLevel(); #ifndef _WIN32 signal(SIGINT, sigintHandler); #endif - // do trickle-ice by default - printf("[KVS Master] Using trickleICE by default\n"); - #ifdef IOT_CORE_ENABLE_CREDENTIALS CHK_ERR((pChannelName = getenv(IOT_CORE_THING_NAME)) != NULL, STATUS_INVALID_OPERATION, "AWS_IOT_CORE_THING_NAME must be set"); #else pChannelName = argc > 1 ? argv[1] : SAMPLE_CHANNEL_NAME; #endif - retStatus = createSampleConfiguration(pChannelName, SIGNALING_CHANNEL_ROLE_TYPE_VIEWER, TRUE, TRUE, &pSampleConfiguration); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] createSampleConfiguration(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - gSampleConfiguration = pSampleConfiguration; - - printf("[KVS Viewer] Created signaling channel %s\n", pChannelName); - - if (pSampleConfiguration->enableFileLogging) { - retStatus = - createFileLogger(FILE_LOGGING_BUFFER_SIZE, MAX_NUMBER_OF_LOG_FILES, (PCHAR) FILE_LOGGER_LOG_FILE_DIRECTORY_PATH, TRUE, TRUE, NULL); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] createFileLogger(): operation returned status code: 0x%08x \n", retStatus); - pSampleConfiguration->enableFileLogging = FALSE; - } - } + CHK_STATUS(createSampleConfiguration(pChannelName, SIGNALING_CHANNEL_ROLE_TYPE_VIEWER, TRUE, TRUE, logLevel, &pSampleConfiguration)); // Initialize KVS WebRTC. This must be done before anything else, and must only be done once. - retStatus = initKvsWebRtc(); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] initKvsWebRtc(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - - printf("[KVS Viewer] KVS WebRTC initialization completed successfully\n"); - - pSampleConfiguration->signalingClientCallbacks.messageReceivedFn = signalingMessageReceived; + CHK_STATUS(initKvsWebRtc()); + DLOGI("[KVS Viewer] KVS WebRTC initialization completed successfully"); - sprintf(pSampleConfiguration->clientInfo.clientId, "%s_%u", SAMPLE_VIEWER_CLIENT_ID, RAND() % MAX_UINT32); - - retStatus = createSignalingClientSync(&pSampleConfiguration->clientInfo, &pSampleConfiguration->channelInfo, - &pSampleConfiguration->signalingClientCallbacks, pSampleConfiguration->pCredentialProvider, - &pSampleConfiguration->signalingClientHandle); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] createSignalingClientSync(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - - printf("[KVS Viewer] Signaling client created successfully\n"); - - // Enable the processing of the messages - retStatus = signalingClientFetchSync(pSampleConfiguration->signalingClientHandle); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] signalingClientFetchSync(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - - retStatus = signalingClientConnectSync(pSampleConfiguration->signalingClientHandle); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] signalingClientConnectSync(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - - printf("[KVS Viewer] Signaling client connection to socket established\n"); + SPRINTF(clientId, "%s_%u", SAMPLE_VIEWER_CLIENT_ID, RAND() % MAX_UINT32); + CHK_STATUS(initSignaling(pSampleConfiguration, clientId)); + DLOGI("[KVS Viewer] Signaling client connection established"); // Initialize streaming session MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); locked = TRUE; - retStatus = createSampleStreamingSession(pSampleConfiguration, NULL, FALSE, &pSampleStreamingSession); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] createSampleStreamingSession(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - printf("[KVS Viewer] Creating streaming session...completed\n"); + CHK_STATUS(createSampleStreamingSession(pSampleConfiguration, NULL, FALSE, &pSampleStreamingSession)); + DLOGI("[KVS Viewer] Creating streaming session...completed"); pSampleConfiguration->sampleStreamingSessionList[pSampleConfiguration->streamingSessionCount++] = pSampleStreamingSession; MUTEX_UNLOCK(pSampleConfiguration->sampleConfigurationObjLock); locked = FALSE; - memset(&offerSessionDescriptionInit, 0x00, SIZEOF(RtcSessionDescriptionInit)); + MEMSET(&offerSessionDescriptionInit, 0x00, SIZEOF(RtcSessionDescriptionInit)); - retStatus = setLocalDescription(pSampleStreamingSession->pPeerConnection, &offerSessionDescriptionInit); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] setLocalDescription(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - printf("[KVS Viewer] Completed setting local description\n"); + CHK_STATUS(setLocalDescription(pSampleStreamingSession->pPeerConnection, &offerSessionDescriptionInit)); + DLOGI("[KVS Viewer] Completed setting local description"); - retStatus = transceiverOnFrame(pSampleStreamingSession->pAudioRtcRtpTransceiver, (UINT64) pSampleStreamingSession, sampleAudioFrameHandler); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] transceiverOnFrame(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } + CHK_STATUS(transceiverOnFrame(pSampleStreamingSession->pAudioRtcRtpTransceiver, (UINT64) pSampleStreamingSession, sampleAudioFrameHandler)); if (!pSampleConfiguration->trickleIce) { - printf("[KVS Viewer] Non trickle ice. Wait for Candidate collection to complete\n"); + DLOGI("[KVS Viewer] Non trickle ice. Wait for Candidate collection to complete"); MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); locked = TRUE; @@ -156,35 +97,22 @@ INT32 main(INT32 argc, CHAR* argv[]) MUTEX_UNLOCK(pSampleConfiguration->sampleConfigurationObjLock); locked = FALSE; - printf("[KVS Viewer] Candidate collection completed\n"); + DLOGI("[KVS Viewer] Candidate collection completed"); } - retStatus = createOffer(pSampleStreamingSession->pPeerConnection, &offerSessionDescriptionInit); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] createOffer(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - printf("[KVS Viewer] Offer creation successful\n"); + CHK_STATUS(createOffer(pSampleStreamingSession->pPeerConnection, &offerSessionDescriptionInit)); + DLOGI("[KVS Viewer] Offer creation successful"); + + DLOGI("[KVS Viewer] Generating JSON of session description...."); + CHK_STATUS(serializeSessionDescriptionInit(&offerSessionDescriptionInit, NULL, &buffLen)); - printf("[KVS Viewer] Generating JSON of session description...."); - retStatus = serializeSessionDescriptionInit(&offerSessionDescriptionInit, NULL, &buffLen); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] serializeSessionDescriptionInit(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } if (buffLen >= SIZEOF(message.payload)) { - printf("[KVS Viewer] serializeSessionDescriptionInit(): operation returned status code: 0x%08x \n", STATUS_INVALID_OPERATION); + DLOGE("[KVS Viewer] serializeSessionDescriptionInit(): operation returned status code: 0x%08x ", STATUS_INVALID_OPERATION); retStatus = STATUS_INVALID_OPERATION; goto CleanUp; } - retStatus = serializeSessionDescriptionInit(&offerSessionDescriptionInit, message.payload, &buffLen); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] serializeSessionDescriptionInit(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - - printf("Completed\n"); + CHK_STATUS(serializeSessionDescriptionInit(&offerSessionDescriptionInit, message.payload, &buffLen)); message.version = SIGNALING_MESSAGE_CURRENT_VERSION; message.messageType = SIGNALING_MESSAGE_TYPE_OFFER; @@ -192,32 +120,19 @@ INT32 main(INT32 argc, CHAR* argv[]) message.payloadLen = (buffLen / SIZEOF(CHAR)) - 1; message.correlationId[0] = '\0'; - retStatus = signalingClientSendMessageSync(pSampleConfiguration->signalingClientHandle, &message); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] signalingClientSendMessageSync(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - + CHK_STATUS(signalingClientSendMessageSync(pSampleConfiguration->signalingClientHandle, &message)); #ifdef ENABLE_DATA_CHANNEL PRtcDataChannel pDataChannel = NULL; PRtcPeerConnection pPeerConnection = pSampleStreamingSession->pPeerConnection; SIZE_T datachannelLocalOpenCount = 0; // Creating a new datachannel on the peer connection of the existing sample streaming session - retStatus = createDataChannel(pPeerConnection, pChannelName, NULL, &pDataChannel); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] createDataChannel(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - printf("[KVS Viewer] Creating data channel...completed\n"); + CHK_STATUS(createDataChannel(pPeerConnection, pChannelName, NULL, &pDataChannel)); + DLOGI("[KVS Viewer] Creating data channel...completed"); // Setting a callback for when the data channel is open - retStatus = dataChannelOnOpen(pDataChannel, (UINT64) &datachannelLocalOpenCount, dataChannelOnOpenCallback); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] dataChannelOnOpen(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - printf("[KVS Viewer] Data Channel open now...\n"); + CHK_STATUS(dataChannelOnOpen(pDataChannel, (UINT64) &datachannelLocalOpenCount, dataChannelOnOpenCallback)); + DLOGI("[KVS Viewer] Data Channel open now..."); #endif // Block until interrupted @@ -228,10 +143,10 @@ INT32 main(INT32 argc, CHAR* argv[]) CleanUp: if (retStatus != STATUS_SUCCESS) { - printf("[KVS Viewer] Terminated with status code 0x%08x", retStatus); + DLOGE("[KVS Viewer] Terminated with status code 0x%08x", retStatus); } - printf("[KVS Viewer] Cleaning up....\n"); + DLOGI("[KVS Viewer] Cleaning up...."); if (locked) { MUTEX_UNLOCK(pSampleConfiguration->sampleConfigurationObjLock); @@ -243,15 +158,15 @@ INT32 main(INT32 argc, CHAR* argv[]) if (pSampleConfiguration != NULL) { retStatus = freeSignalingClient(&pSampleConfiguration->signalingClientHandle); if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] freeSignalingClient(): operation returned status code: 0x%08x \n", retStatus); + DLOGE("[KVS Master] freeSignalingClient(): operation returned status code: 0x%08x ", retStatus); } retStatus = freeSampleConfiguration(&pSampleConfiguration); if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] freeSampleConfiguration(): operation returned status code: 0x%08x \n", retStatus); + DLOGE("[KVS Master] freeSampleConfiguration(): operation returned status code: 0x%08x ", retStatus); } } - printf("[KVS Viewer] Cleanup done\n"); + DLOGI("[KVS Viewer] Cleanup done"); RESET_INSTRUMENTED_ALLOCATORS(); diff --git a/samples/kvsWebrtcClientMasterGstSample.c b/samples/kvsWebrtcClientMasterGstSample.c index a7459c5188..1fac4cd78a 100644 --- a/samples/kvsWebrtcClientMasterGstSample.c +++ b/samples/kvsWebrtcClientMasterGstSample.c @@ -9,6 +9,7 @@ extern PSampleConfiguration gSampleConfiguration; GstFlowReturn on_new_sample(GstElement* sink, gpointer data, UINT64 trackid) { GstBuffer* buffer; + STATUS retStatus = STATUS_SUCCESS; BOOL isDroppable, delta; GstFlowReturn ret = GST_FLOW_OK; GstSample* sample = NULL; @@ -22,10 +23,7 @@ GstFlowReturn on_new_sample(GstElement* sink, gpointer data, UINT64 trackid) PRtcRtpTransceiver pRtcRtpTransceiver = NULL; UINT32 i; - if (pSampleConfiguration == NULL) { - printf("[KVS GStreamer Master] on_new_sample(): operation returned status code: 0x%08x \n", STATUS_NULL_ARG); - goto CleanUp; - } + CHK_ERR(pSampleConfiguration != NULL, STATUS_NULL_ARG, "NULL sample configuration"); info.data = NULL; sample = gst_app_sink_pull_sample(GST_APP_SINK(sink)); @@ -46,11 +44,11 @@ GstFlowReturn on_new_sample(GstElement* sink, gpointer data, UINT64 trackid) segment = gst_sample_get_segment(sample); buf_pts = gst_segment_to_running_time(segment, GST_FORMAT_TIME, buffer->pts); if (!GST_CLOCK_TIME_IS_VALID(buf_pts)) { - printf("[KVS GStreamer Master] Frame contains invalid PTS dropping the frame. \n"); + DLOGE("[KVS GStreamer Master] Frame contains invalid PTS dropping the frame"); } if (!(gst_buffer_map(buffer, &info, GST_MAP_READ))) { - printf("[KVS GStreamer Master] on_new_sample(): Gst buffer mapping failed\n"); + DLOGE("[KVS GStreamer Master] on_new_sample(): Gst buffer mapping failed"); goto CleanUp; } @@ -80,8 +78,11 @@ GstFlowReturn on_new_sample(GstElement* sink, gpointer data, UINT64 trackid) status = writeFrame(pRtcRtpTransceiver, &frame); if (status != STATUS_SRTP_NOT_READY_YET && status != STATUS_SUCCESS) { #ifdef VERBOSE - printf("writeFrame() failed with 0x%08x", status); + DLOGE("writeFrame() failed with 0x%08x", status); #endif + } else if (status == STATUS_SUCCESS && pSampleStreamingSession->firstFrame) { + PROFILE_WITH_START_TIME(pSampleStreamingSession->offerReceiveTime, "Time to first frame"); + pSampleStreamingSession->firstFrame = FALSE; } } MUTEX_UNLOCK(pSampleConfiguration->streamingSessionListReadLock); @@ -123,10 +124,7 @@ PVOID sendGstreamerAudioVideo(PVOID args) GError* error = NULL; PSampleConfiguration pSampleConfiguration = (PSampleConfiguration) args; - if (pSampleConfiguration == NULL) { - printf("[KVS GStreamer Master] sendGstreamerAudioVideo(): operation returned status code: 0x%08x \n", STATUS_NULL_ARG); - goto CleanUp; - } + CHK_ERR(pSampleConfiguration != NULL, STATUS_NULL_ARG, "[KVS Gstreamer Master] Streaming session is NULL"); /** * Use x264enc as its available on mac, pi, ubuntu and windows @@ -239,11 +237,7 @@ PVOID sendGstreamerAudioVideo(PVOID args) break; } - if (pipeline == NULL) { - printf("[KVS GStreamer Master] sendGstreamerAudioVideo(): Failed to launch gstreamer, operation returned status code: 0x%08x \n", - STATUS_INTERNAL_ERROR); - goto CleanUp; - } + CHK_ERR(pipeline != NULL, STATUS_NULL_ARG, "[KVS Gstreamer Master] Pipeline is NULL"); appsinkVideo = gst_bin_get_by_name(GST_BIN(pipeline), "appsink-video"); appsinkAudio = gst_bin_get_by_name(GST_BIN(pipeline), "appsink-audio"); @@ -260,7 +254,6 @@ PVOID sendGstreamerAudioVideo(PVOID args) if (appsinkAudio != NULL) { g_signal_connect(appsinkAudio, "new-sample", G_CALLBACK(on_new_sample_audio), (gpointer) pSampleConfiguration); } - gst_element_set_state(pipeline, GST_STATE_PLAYING); /* block until error or EOS */ @@ -271,16 +264,24 @@ PVOID sendGstreamerAudioVideo(PVOID args) if (msg != NULL) { gst_message_unref(msg); } - gst_object_unref(bus); + if (bus != NULL) { + gst_object_unref(bus); + } gst_element_set_state(pipeline, GST_STATE_NULL); - gst_object_unref(pipeline); - gst_object_unref(appsinkAudio); - gst_object_unref(appsinkVideo); + if (pipeline != NULL) { + gst_object_unref(pipeline); + } + if (appsinkAudio != NULL) { + gst_object_unref(appsinkAudio); + } + if (appsinkVideo != NULL) { + gst_object_unref(appsinkVideo); + } CleanUp: if (error != NULL) { - printf("%s", error->message); + DLOGE("%s", error->message); g_clear_error(&error); } @@ -323,13 +324,9 @@ PVOID receiveGstreamerAudioVideo(PVOID args) PSampleStreamingSession pSampleStreamingSession = (PSampleStreamingSession) args; gchar *videoDescription = "", *audioDescription = "", *audioVideoDescription; - if (pSampleStreamingSession == NULL) { - printf("[KVS GStreamer Master] receiveGstreamerAudioVideo(): operation returned status code: 0x%08x \n", STATUS_NULL_ARG); - goto CleanUp; - } - - // TODO: Wire video up with gstreamer pipeline + CHK_ERR(pSampleStreamingSession != NULL, STATUS_NULL_ARG, "[KVS Gstreamer Master] Sample streaming session is NULL"); + // TODO: For video switch (pSampleStreamingSession->pAudioRtcRtpTransceiver->receiver.track.codec) { case RTC_CODEC_OPUS: audioDescription = "appsrc name=appsrc-audio ! opusparse ! decodebin ! autoaudiosink"; @@ -348,26 +345,14 @@ PVOID receiveGstreamerAudioVideo(PVOID args) pipeline = gst_parse_launch(audioVideoDescription, &error); appsrcAudio = gst_bin_get_by_name(GST_BIN(pipeline), "appsrc-audio"); - if (appsrcAudio == NULL) { - printf("[KVS GStreamer Master] gst_bin_get_by_name(): cant find appsrc, operation returned status code: 0x%08x \n", STATUS_INTERNAL_ERROR); - goto CleanUp; - } + CHK_ERR(appsrcAudio != NULL, STATUS_INTERNAL_ERROR, "[KVS Gstreamer Master] Cannot find appsrc"); - transceiverOnFrame(pSampleStreamingSession->pAudioRtcRtpTransceiver, (UINT64) appsrcAudio, onGstAudioFrameReady); - - retStatus = streamingSessionOnShutdown(pSampleStreamingSession, (UINT64) appsrcAudio, onSampleStreamingSessionShutdown); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS GStreamer Master] streamingSessionOnShutdown(): operation returned status code: 0x%08x \n", STATUS_INTERNAL_ERROR); - goto CleanUp; - } + CHK_STATUS(transceiverOnFrame(pSampleStreamingSession->pAudioRtcRtpTransceiver, (UINT64) appsrcAudio, onGstAudioFrameReady)); + CHK_STATUS(streamingSessionOnShutdown(pSampleStreamingSession, (UINT64) appsrcAudio, onSampleStreamingSessionShutdown)); g_free(audioVideoDescription); - if (pipeline == NULL) { - printf("[KVS GStreamer Master] receiveGstreamerAudioVideo(): Failed to launch gstreamer, operation returned status code: 0x%08x \n", - STATUS_INTERNAL_ERROR); - goto CleanUp; - } + CHK_ERR(pipeline != NULL, STATUS_INTERNAL_ERROR, "[KVS Gstreamer Master] Pipeline is NULL"); gst_element_set_state(pipeline, GST_STATE_PLAYING); @@ -379,14 +364,20 @@ PVOID receiveGstreamerAudioVideo(PVOID args) if (msg != NULL) { gst_message_unref(msg); } - gst_object_unref(bus); - gst_element_set_state(pipeline, GST_STATE_NULL); - gst_object_unref(pipeline); - gst_object_unref(appsrcAudio); + if (bus != NULL) { + gst_object_unref(bus); + } + if (pipeline != NULL) { + gst_element_set_state(pipeline, GST_STATE_NULL); + gst_object_unref(pipeline); + } + if (appsrcAudio != NULL) { + gst_object_unref(appsrcAudio); + } CleanUp: if (error != NULL) { - printf("%s", error->message); + DLOGE("%s", error->message); g_clear_error(&error); } @@ -400,34 +391,17 @@ INT32 main(INT32 argc, CHAR* argv[]) PCHAR pChannelName; SET_INSTRUMENTED_ALLOCATORS(); + UINT32 logLevel = setLogLevel(); signal(SIGINT, sigintHandler); - // do trickle-ice by default - printf("[KVS GStreamer Master] Using trickleICE by default\n"); - #ifdef IOT_CORE_ENABLE_CREDENTIALS CHK_ERR((pChannelName = getenv(IOT_CORE_THING_NAME)) != NULL, STATUS_INVALID_OPERATION, "AWS_IOT_CORE_THING_NAME must be set"); #else pChannelName = argc > 1 ? argv[1] : SAMPLE_CHANNEL_NAME; #endif - retStatus = createSampleConfiguration(pChannelName, SIGNALING_CHANNEL_ROLE_TYPE_MASTER, TRUE, TRUE, &pSampleConfiguration); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS GStreamer Master] createSampleConfiguration(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - - printf("[KVS GStreamer Master] Created signaling channel %s\n", pChannelName); - - if (pSampleConfiguration->enableFileLogging) { - retStatus = - createFileLogger(FILE_LOGGING_BUFFER_SIZE, MAX_NUMBER_OF_LOG_FILES, (PCHAR) FILE_LOGGER_LOG_FILE_DIRECTORY_PATH, TRUE, TRUE, NULL); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] createFileLogger(): operation returned status code: 0x%08x \n", retStatus); - pSampleConfiguration->enableFileLogging = FALSE; - } - } + CHK_STATUS(createSampleConfiguration(pChannelName, SIGNALING_CHANNEL_ROLE_TYPE_MASTER, TRUE, TRUE, logLevel, &pSampleConfiguration)); pSampleConfiguration->videoSource = sendGstreamerAudioVideo; pSampleConfiguration->mediaType = SAMPLE_STREAMING_VIDEO_ONLY; @@ -437,101 +411,74 @@ INT32 main(INT32 argc, CHAR* argv[]) pSampleConfiguration->srcType = DEVICE_SOURCE; // Default to device source (autovideosrc and autoaudiosrc) /* Initialize GStreamer */ gst_init(&argc, &argv); - printf("[KVS Gstreamer Master] Finished initializing GStreamer\n"); + DLOGI("[KVS Gstreamer Master] Finished initializing GStreamer and handlers"); if (argc > 2) { if (STRCMP(argv[2], "video-only") == 0) { pSampleConfiguration->mediaType = SAMPLE_STREAMING_VIDEO_ONLY; - printf("[KVS Gstreamer Master] Streaming video only\n"); + DLOGI("[KVS Gstreamer Master] Streaming video only"); } else if (STRCMP(argv[2], "audio-video") == 0) { pSampleConfiguration->mediaType = SAMPLE_STREAMING_AUDIO_VIDEO; - printf("[KVS Gstreamer Master] Streaming audio and video\n"); + DLOGI("[KVS Gstreamer Master] Streaming audio and video"); } else { - printf("[KVS Gstreamer Master] Unrecognized streaming type. Defaulting to video-only\n"); + DLOGI("[KVS Gstreamer Master] Unrecognized streaming type. Default to video-only"); } } else { - printf("[KVS Gstreamer Master] Streaming video only\n"); + DLOGI("[KVS Gstreamer Master] Streaming video only"); } if (argc > 3) { if (STRCMP(argv[3], "testsrc") == 0) { - printf("[KVS GStreamer Master] Using test source in GStreamer\n"); + DLOGI("[KVS GStreamer Master] Using test source in GStreamer"); pSampleConfiguration->srcType = TEST_SOURCE; } else if (STRCMP(argv[3], "devicesrc") == 0) { - printf("[KVS GStreamer Master] Using device source in GStreamer\n"); + DLOGI("[KVS GStreamer Master] Using device source in GStreamer"); pSampleConfiguration->srcType = DEVICE_SOURCE; } else if (STRCMP(argv[3], "rtspsrc") == 0) { - printf("[KVS GStreamer Master] Using RTSP source in GStreamer\n"); + DLOGI("[KVS GStreamer Master] Using RTSP source in GStreamer"); if (argc < 5) { - printf("[KVS GStreamer Master] No RTSP source URI included. Defaulting to device source\n"); + printf("[KVS GStreamer Master] No RTSP source URI included. Defaulting to device source"); printf("[KVS GStreamer Master] Usage: ./kvsWebrtcClientMasterGstSample audio-video rtspsrc rtsp://\n" - "or ./kvsWebrtcClientMasterGstSample video-only rtspsrc \n"); + "or ./kvsWebrtcClientMasterGstSample video-only rtspsrc "); pSampleConfiguration->srcType = DEVICE_SOURCE; } else { pSampleConfiguration->srcType = RTSP_SOURCE; pSampleConfiguration->rtspUri = argv[4]; } } else { - printf("[KVS Gstreamer Master] Unrecognized source type. Defaulting to device source in GStreamer\n"); + DLOGI("[KVS Gstreamer Master] Unrecognized source type. Defaulting to device source in GStreamer"); } } else { printf("[KVS GStreamer Master] Using device source in GStreamer\n"); } - // Initialize KVS WebRTC. This must be done before anything else, and must only be done once. - retStatus = initKvsWebRtc(); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS GStreamer Master] initKvsWebRtc(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - printf("[KVS GStreamer Master] KVS WebRTC initialization completed successfully\n"); - - pSampleConfiguration->signalingClientCallbacks.messageReceivedFn = signalingMessageReceived; - - strcpy(pSampleConfiguration->clientInfo.clientId, SAMPLE_MASTER_CLIENT_ID); - - retStatus = createSignalingClientSync(&pSampleConfiguration->clientInfo, &pSampleConfiguration->channelInfo, - &pSampleConfiguration->signalingClientCallbacks, pSampleConfiguration->pCredentialProvider, - &pSampleConfiguration->signalingClientHandle); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS GStreamer Master] createSignalingClientSync(): operation returned status code: 0x%08x \n", retStatus); - } - printf("[KVS GStreamer Master] Signaling client created successfully\n"); - - // Enable the processing of the messages - retStatus = signalingClientFetchSync(pSampleConfiguration->signalingClientHandle); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS Master] signalingClientFetchSync(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - - retStatus = signalingClientConnectSync(pSampleConfiguration->signalingClientHandle); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS GStreamer Master] signalingClientConnectSync(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; + switch (pSampleConfiguration->mediaType) { + case SAMPLE_STREAMING_VIDEO_ONLY: + DLOGI("[KVS GStreamer Master] streaming type video-only"); + break; + case SAMPLE_STREAMING_AUDIO_VIDEO: + DLOGI("[KVS GStreamer Master] streaming type audio-video"); + break; } - printf("[KVS GStreamer Master] Signaling client connection to socket established\n"); - printf("[KVS Gstreamer Master] Beginning streaming...check the stream over channel %s\n", pChannelName); + // Initalize KVS WebRTC. This must be done before anything else, and must only be done once. + CHK_STATUS(initKvsWebRtc()); + DLOGI("[KVS GStreamer Master] KVS WebRTC initialization completed successfully"); - gSampleConfiguration = pSampleConfiguration; + CHK_STATUS(initSignaling(pSampleConfiguration, SAMPLE_MASTER_CLIENT_ID)); + DLOGI("[KVS GStreamer Master] Channel %s set up done ", pChannelName); // Checking for termination - retStatus = sessionCleanupWait(pSampleConfiguration); - if (retStatus != STATUS_SUCCESS) { - printf("[KVS GStreamer Master] sessionCleanupWait(): operation returned status code: 0x%08x \n", retStatus); - goto CleanUp; - } - - printf("[KVS GStreamer Master] Streaming session terminated\n"); + CHK_STATUS(sessionCleanupWait(pSampleConfiguration)); + DLOGI("[KVS GStreamer Master] Streaming session terminated"); CleanUp: if (retStatus != STATUS_SUCCESS) { - printf("[KVS GStreamer Master] Terminated with status code 0x%08x", retStatus); + DLOGE("[KVS GStreamer Master] Terminated with status code 0x%08x", retStatus); } - printf("[KVS GStreamer Master] Cleaning up....\n"); + DLOGI("[KVS GStreamer Master] Cleaning up...."); if (pSampleConfiguration != NULL) { // Kick of the termination sequence @@ -546,15 +493,15 @@ INT32 main(INT32 argc, CHAR* argv[]) } retStatus = freeSignalingClient(&pSampleConfiguration->signalingClientHandle); if (retStatus != STATUS_SUCCESS) { - printf("[KVS GStreamer Master] freeSignalingClient(): operation returned status code: 0x%08x \n", retStatus); + DLOGE("[KVS GStreamer Master] freeSignalingClient(): operation returned status code: 0x%08x", retStatus); } retStatus = freeSampleConfiguration(&pSampleConfiguration); if (retStatus != STATUS_SUCCESS) { - printf("[KVS GStreamer Master] freeSampleConfiguration(): operation returned status code: 0x%08x \n", retStatus); + DLOGE("[KVS GStreamer Master] freeSampleConfiguration(): operation returned status code: 0x%08x", retStatus); } } - printf("[KVS Gstreamer Master] Cleanup done\n"); + DLOGI("[KVS Gstreamer Master] Cleanup done"); RESET_INSTRUMENTED_ALLOCATORS(); diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index a8177fe126..943a355236 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -25,6 +25,33 @@ extern "C" { #pragma clang diagnostic pop #endif +/* TODO: Potentially move these call to PIC instead. Moving to PIC in the future would not cause any backward compatibility issues */ +#define PROFILE_CALL(f, msg) \ + do { \ + startTimeInMacro = GETTIME(); \ + f; \ + DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), (GETTIME() - startTimeInMacro) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); \ + } while (FALSE) + +#define PROFILE_CALL_WITH_T_OBJ(f, t, msg) \ + do { \ + startTimeInMacro = GETTIME(); \ + f; \ + t = (GETTIME() - startTimeInMacro) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \ + DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), (t)); \ + } while (FALSE) + +#define PROFILE_WITH_START_TIME(t, msg) \ + do { \ + DLOGP("[%s] Time taken: %" PRIu64 " ms", msg, (GETTIME() - (t)) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); \ + } while (FALSE) + +#define PROFILE_WITH_START_TIME_OBJ(t1, t2, msg) \ + do { \ + t2 = (GETTIME() - (t1)) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \ + DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), t2); \ + } while (FALSE) + /*! \addtogroup StatusCodes * WEBRTC related status codes. Each value is an positive integer formed by adding * a base integer inticating the category to an index. Users may run scripts/parse_status.py @@ -531,7 +558,17 @@ extern "C" { /** * Version of SignalingClientMetrics structure */ -#define SIGNALING_CLIENT_METRICS_CURRENT_VERSION 0 +#define SIGNALING_CLIENT_METRICS_CURRENT_VERSION 1 + +/** + * Version of PeerConnectionMetrics structure + */ +#define PEER_CONNECTION_METRICS_CURRENT_VERSION 0 + +/** + * Version of KvsIceAgentMetrics structure + */ +#define ICE_AGENT_METRICS_CURRENT_VERSION 0 /*!@} */ @@ -1441,6 +1478,22 @@ typedef struct { SignalingClientStats signalingClientStats; //!< Signaling client metrics stats. Reference in Stats.h } SignalingClientMetrics, *PSignalingClientMetrics; +/** + * @brief KVS ICE Agent Collection of ICE agent related stats. Can be expanded in the future + */ +typedef struct { + UINT32 version; //!< Structure version + KvsIceAgentStats kvsIceAgentStats; //!< ICE agent metrics. Reference in Stats.h +} KvsIceAgentMetrics, *PKvsIceAgentMetrics; + +/** + * @brief SignalingStats Collection of signaling related stats. Can be expanded in the future + */ +typedef struct { + UINT32 version; //!< Structure version + PeerConnectionStats peerConnectionStats; //!< Peer connection metrics stats. Reference in Stats.h +} PeerConnectionMetrics, *PPeerConnectionMetrics; + /** * @brief The stats object is populated based on RTCStatsType request * @@ -2023,6 +2076,22 @@ PUBLIC_API STATUS signalingClientDeleteSync(SIGNALING_CLIENT_HANDLE); */ PUBLIC_API STATUS signalingClientGetMetrics(SIGNALING_CLIENT_HANDLE, PSignalingClientMetrics); +/** + * @brief Get peer connection related metrics + * + * @param[in] PRtcPeerConnection Peer connection object + * @param[in,out] PPeerConnectionMetrics Peer connection stats object + */ +PUBLIC_API STATUS peerConnectionGetMetrics(PRtcPeerConnection, PPeerConnectionMetrics); + +/** + * @brief Get peer connection related metrics + * + * @param[in] PRtcPeerConnection Peer connection object + * @param[in,out] PKvsIceAgentMetrics KVS ICE agent stats object + */ +PUBLIC_API STATUS iceAgentGetMetrics(PRtcPeerConnection, PKvsIceAgentMetrics); + /** * @brief Get the relevant/all metrics based on the RTCStatsType field. This does not include * any signaling related metrics. The caller of the API is expected to populate requestedTypeOfStats diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h index a8294fd699..39ac7cc438 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Stats.h @@ -243,6 +243,21 @@ typedef struct { UINT64 totalRoundTripTime; //!< Sum of RTTs of all the requests for which response has been received } RtcIceServerStats, *PRtcIceServerStats; +/** + * @brief: IceAgent profiling Stats related to the KVS ICE Agent + * + */ +typedef struct { + UINT64 localCandidateGatheringTime; + UINT64 hostCandidateSetUpTime; + UINT64 srflxCandidateSetUpTime; + UINT64 relayCandidateSetUpTime; + UINT64 iceServerParsingTime; + UINT64 iceCandidatePairNominationTime; + UINT64 candidateGatheringTime; + UINT64 iceAgentSetUpTime; +} KvsIceAgentStats, *PKvsIceAgentStats; + /** * @brief: RtcIceCandidateStats Stats related to a specific candidate in a pair * @@ -578,7 +593,26 @@ typedef struct { //!< In all of these cases the error callback (if specified) will be called. UINT32 numberOfReconnects; //!< Number of reconnects in the session UINT32 apiCallRetryCount; //!< Number of retries due to API call failures in the state machine -} SignalingClientStats, PSignalingClientStats; + UINT64 getTokenCallTime; //!< Time (ms) taken to get credentials for signaling + UINT64 describeCallTime; //!< Time (ms) taken to execute describeChannel call + UINT64 createCallTime; //!< Time (ms) taken to execute createChannel call + UINT64 getEndpointCallTime; //!< Time (ms) taken to execute getEndpoint call + UINT64 getIceConfigCallTime; //!< Time (ms) taken to execute getIceServerConfig call + UINT64 connectCallTime; //!< Time (ms) taken to execute connectChannel call + UINT64 createClientTime; //!< Total time (ms) taken to create signaling client which includes getting credentials + UINT64 + fetchClientTime; //!< Total time (ms) taken to fetch signaling client which includes describe, create, get endpoint and get ICE server config + UINT64 connectClientTime; //!< Total time (ms) taken to connect the signaling client which includes connecting to the signaling channel + UINT64 offerToAnswerTime; +} SignalingClientStats, *PSignalingClientStats; + +typedef struct { + UINT64 peerConnectionCreationTime; //!< Time taken (ms) for peer connection object creation time + UINT64 dtlsSessionSetupTime; //!< Time taken (ms) for DTLS handshake to complete + UINT64 iceHolePunchingTime; //!< Time taken (ms) for ICE agent set up to complete + UINT64 closePeerConnectionTime; //!< Time taken (ms) to close the peer connection + UINT64 freePeerConnectionTime; //!< Time taken (ms) to free the peer connection object +} PeerConnectionStats, *PPeerConnectionStats; /** * @brief RTCStatsObject Represents an object passed in by the application developer which will diff --git a/src/source/Crypto/Crypto.c b/src/source/Crypto/Crypto.c index 28ad657ec4..c98ef648dc 100644 --- a/src/source/Crypto/Crypto.c +++ b/src/source/Crypto/Crypto.c @@ -5,6 +5,7 @@ STATUS createRtcCertificate(PRtcCertificate* ppRtcCertificate) { ENTERS(); STATUS retStatus = STATUS_SUCCESS; + UINT64 startTimeInMacro = 0; PRtcCertificate pRtcCertificate = NULL; CHK(ppRtcCertificate != NULL, STATUS_NULL_ARG); @@ -12,16 +13,18 @@ STATUS createRtcCertificate(PRtcCertificate* ppRtcCertificate) CHK(NULL != (pRtcCertificate = (PRtcCertificate) MEMCALLOC(1, SIZEOF(RtcCertificate))), STATUS_NOT_ENOUGH_MEMORY); #ifdef KVS_USE_OPENSSL - CHK_STATUS(createCertificateAndKey(GENERATED_CERTIFICATE_BITS, FALSE, (X509**) &pRtcCertificate->pCertificate, - (EVP_PKEY**) &pRtcCertificate->pPrivateKey)); + PROFILE_CALL(CHK_STATUS(createCertificateAndKey(GENERATED_CERTIFICATE_BITS, FALSE, (X509**) &pRtcCertificate->pCertificate, + (EVP_PKEY**) &pRtcCertificate->pPrivateKey)), + "Certificate creation time"); #elif KVS_USE_MBEDTLS // Need to allocate space for the cert and the key for mbedTLS CHK(NULL != (pRtcCertificate->pCertificate = (PBYTE) MEMCALLOC(1, SIZEOF(mbedtls_x509_crt))), STATUS_NOT_ENOUGH_MEMORY); CHK(NULL != (pRtcCertificate->pPrivateKey = (PBYTE) MEMCALLOC(1, SIZEOF(mbedtls_pk_context))), STATUS_NOT_ENOUGH_MEMORY); pRtcCertificate->certificateSize = SIZEOF(mbedtls_x509_crt); pRtcCertificate->privateKeySize = SIZEOF(mbedtls_pk_context); - CHK_STATUS(createCertificateAndKey(GENERATED_CERTIFICATE_BITS, FALSE, (mbedtls_x509_crt*) pRtcCertificate->pCertificate, - (mbedtls_pk_context*) pRtcCertificate->pPrivateKey)); + PROFILE_CALL(CHK_STATUS(createCertificateAndKey(GENERATED_CERTIFICATE_BITS, FALSE, (mbedtls_x509_crt*) pRtcCertificate->pCertificate, + (mbedtls_pk_context*) pRtcCertificate->pPrivateKey)), + "Certificate creation time"); #else #error "A Crypto implementation is required." #endif diff --git a/src/source/Crypto/Dtls.c b/src/source/Crypto/Dtls.c index 58f557714e..615b2b01fe 100644 --- a/src/source/Crypto/Dtls.c +++ b/src/source/Crypto/Dtls.c @@ -68,8 +68,11 @@ STATUS dtlsSessionChangeState(PDtlsSession pDtlsSession, RTC_DTLS_TRANSPORT_STAT CHK(pDtlsSession->state != newState, retStatus); if (pDtlsSession->state == RTC_DTLS_TRANSPORT_STATE_CONNECTING && newState == RTC_DTLS_TRANSPORT_STATE_CONNECTED) { - DLOGD("DTLS init completed. Time taken %" PRIu64 " ms", - (GETTIME() - pDtlsSession->dtlsSessionStartTime) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); + // Need to set this so that we do not calculate the time taken again. We set the new state in 2 different places + if (pDtlsSession->dtlsSessionStartTime != 0) { + PROFILE_WITH_START_TIME_OBJ(pDtlsSession->dtlsSessionStartTime, pDtlsSession->dtlsSessionSetupTime, "DTLS initialization completion"); + pDtlsSession->dtlsSessionStartTime = 0; + } } pDtlsSession->state = newState; if (pDtlsSession->dtlsSessionCallbacks.stateChangeFn != NULL) { diff --git a/src/source/Crypto/Dtls.h b/src/source/Crypto/Dtls.h index 434cc5c304..f932a8c37c 100644 --- a/src/source/Crypto/Dtls.h +++ b/src/source/Crypto/Dtls.h @@ -104,6 +104,7 @@ struct __DtlsSession { TIMER_QUEUE_HANDLE timerQueueHandle; UINT32 timerId; UINT64 dtlsSessionStartTime; + UINT64 dtlsSessionSetupTime; RTC_DTLS_TRANSPORT_STATE state; MUTEX sslLock; diff --git a/src/source/Crypto/Dtls_openssl.c b/src/source/Crypto/Dtls_openssl.c index 35137cb504..d1fcb1b788 100644 --- a/src/source/Crypto/Dtls_openssl.c +++ b/src/source/Crypto/Dtls_openssl.c @@ -48,15 +48,15 @@ STATUS dtlsTransmissionTimerCallback(UINT32 timerID, UINT64 currentTime, UINT64 MUTEX_LOCK(pDtlsSession->sslLock); locked = TRUE; - /* In case we need to initiate the handshake */ - CHK_STATUS(dtlsCheckOutgoingDataBuffer(pDtlsSession)); - if (SSL_is_init_finished(pDtlsSession->pSsl)) { CHK_STATUS(dtlsSessionChangeState(pDtlsSession, RTC_DTLS_TRANSPORT_STATE_CONNECTED)); ATOMIC_STORE_BOOL(&pDtlsSession->sslInitFinished, TRUE); CHK(FALSE, STATUS_TIMER_QUEUE_STOP_SCHEDULING); } + /* In case we need to initiate the handshake */ + CHK_STATUS(dtlsCheckOutgoingDataBuffer(pDtlsSession)); + /* https://commondatastorage.googleapis.com/chromium-boringssl-docs/ssl.h.html#DTLSv1_get_timeout */ dtlsTimeoutRet = DTLSv1_get_timeout(pDtlsSession->pSsl, &timeout); if (dtlsTimeoutRet == 0) { @@ -70,7 +70,7 @@ STATUS dtlsTransmissionTimerCallback(UINT32 timerID, UINT64 currentTime, UINT64 (UINT64) timeout.tv_sec * HUNDREDS_OF_NANOS_IN_A_SECOND + (UINT64) timeout.tv_usec * HUNDREDS_OF_NANOS_IN_A_MICROSECOND; if (timeoutValDefaultTimeUnit == 0) { - DLOGD("DTLS handshake timeout event"); + DLOGD("DTLS handshake timeout event, retransmit"); /* Retransmit the packet */ DTLSv1_handle_timeout(pDtlsSession->pSsl); CHK_STATUS(dtlsCheckOutgoingDataBuffer(pDtlsSession)); @@ -81,7 +81,6 @@ STATUS dtlsTransmissionTimerCallback(UINT32 timerID, UINT64 currentTime, UINT64 if (locked) { MUTEX_UNLOCK(pDtlsSession->sslLock); } - return retStatus; } @@ -160,12 +159,16 @@ STATUS createSslCtx(PDtlsSessionCertificateInfo pCertificates, UINT32 certCount, CHK(pCertificates != NULL && ppSslCtx != NULL, STATUS_NULL_ARG); CHK(certCount > 0, STATUS_INTERNAL_ERROR); + // Version less than 1.0.2 #if (OPENSSL_VERSION_NUMBER < 0x10002000L) EC_KEY* ecdh = NULL; #endif + // Version greater than or equal to 1.1.0 #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) pSslCtx = SSL_CTX_new(DTLS_method()); + + // Version greater than or equal to 1.0.1 #elif (OPENSSL_VERSION_NUMBER >= 0x10001000L) pSslCtx = SSL_CTX_new(DTLSv1_method()); #else @@ -174,6 +177,7 @@ STATUS createSslCtx(PDtlsSessionCertificateInfo pCertificates, UINT32 certCount, CHK(pSslCtx != NULL, STATUS_SSL_CTX_CREATION_FAILED); + // Version greater than or equal to 1.0.2 #if (OPENSSL_VERSION_NUMBER >= 0x10002000L) SSL_CTX_set_ecdh_auto(pSslCtx, TRUE); #else @@ -190,7 +194,6 @@ STATUS createSslCtx(PDtlsSessionCertificateInfo pCertificates, UINT32 certCount, } CHK(SSL_CTX_set_cipher_list(pSslCtx, "HIGH:!aNULL:!MD5:!RC4") == 1, STATUS_SSL_CTX_CREATION_FAILED); - *ppSslCtx = pSslCtx; CleanUp: @@ -272,6 +275,7 @@ STATUS createDtlsSession(PDtlsSessionCallbacks pDtlsSessionCallbacks, TIMER_QUEU STATUS retStatus = STATUS_SUCCESS; PDtlsSession pDtlsSession = NULL; UINT32 i, certCount; + UINT64 startTimeInMacro = 0; DtlsSessionCertificateInfo certInfos[MAX_RTCCONFIGURATION_CERTIFICATES]; MEMSET(certInfos, 0x00, SIZEOF(certInfos)); @@ -295,7 +299,8 @@ STATUS createDtlsSession(PDtlsSessionCallbacks pDtlsSessionCallbacks, TIMER_QUEU } if (certCount == 0) { - CHK_STATUS(createCertificateAndKey(certificateBits, generateRSACertificate, &certInfos[0].pCert, &certInfos[0].pKey)); + PROFILE_CALL(CHK_STATUS(createCertificateAndKey(certificateBits, generateRSACertificate, &certInfos[0].pCert, &certInfos[0].pKey)), + "Certificate creation time"); certInfos[0].created = TRUE; pDtlsSession->certificateCount = 1; } else { @@ -456,7 +461,7 @@ STATUS dtlsSessionProcessPacket(PDtlsSession pDtlsSession, PBYTE pData, PINT32 p sslRet = SSL_read(pDtlsSession->pSsl, pData, *pDataLen); if (sslRet == 0 && SSL_get_error(pDtlsSession->pSsl, sslRet) == SSL_ERROR_ZERO_RETURN) { - DLOGD("Detected DTLS close_notify alert"); + DLOGI("Detected DTLS close_notify alert"); isClosed = TRUE; } else if (sslRet <= 0) { LOG_OPENSSL_ERROR("SSL_read"); @@ -575,7 +580,6 @@ STATUS dtlsCheckOutgoingDataBuffer(PDtlsSession pDtlsSession) } CleanUp: - LEAVES(); return retStatus; } @@ -590,9 +594,15 @@ STATUS dtlsSessionIsInitFinished(PDtlsSession pDtlsSession, PBOOL pIsConnected) MUTEX_LOCK(pDtlsSession->sslLock); locked = TRUE; - *pIsConnected = SSL_is_init_finished(pDtlsSession->pSsl); + // The state change happens in the timer callback anyways. But the callback is invoked every + // 200 ms, hence by the time the state change occurs, it could be 200ms later worst case. + // This does not reduce any start up timing, but it helps in getting the accurate DTLS setup time + if (*pIsConnected) { + dtlsSessionChangeState(pDtlsSession, RTC_DTLS_TRANSPORT_STATE_CONNECTED); + } + CleanUp: if (locked) { MUTEX_UNLOCK(pDtlsSession->sslLock); diff --git a/src/source/Ice/IceAgent.c b/src/source/Ice/IceAgent.c old mode 100755 new mode 100644 index 18ed380a0c..700f81b08f --- a/src/source/Ice/IceAgent.c +++ b/src/source/Ice/IceAgent.c @@ -29,6 +29,7 @@ STATUS createIceAgent(PCHAR username, PCHAR password, PIceAgentCallbacks pIceAge STATUS retStatus = STATUS_SUCCESS; PIceAgent pIceAgent = NULL; UINT32 i; + UINT64 startTimeInMacro = 0; CHK(ppIceAgent != NULL && username != NULL && password != NULL && pConnectionListener != NULL, STATUS_NULL_ARG); CHK(STRNLEN(username, MAX_ICE_CONFIG_USER_NAME_LEN + 1) <= MAX_ICE_CONFIG_USER_NAME_LEN && @@ -75,6 +76,7 @@ STATUS createIceAgent(PCHAR username, PCHAR password, PIceAgentCallbacks pIceAge pIceAgent->disconnectionGracePeriodEndTime = INVALID_TIMESTAMP_VALUE; pIceAgent->pConnectionListener = pConnectionListener; pIceAgent->pDataSendingIceCandidatePair = NULL; + pIceAgent->iceAgentState = ICE_AGENT_STATE_NEW; CHK_STATUS(createTransactionIdStore(DEFAULT_MAX_STORED_TRANSACTION_ID_COUNT, &pIceAgent->pStunBindingRequestTransactionIdStore)); pIceAgent->relayCandidateCount = 0; @@ -92,23 +94,28 @@ STATUS createIceAgent(PCHAR username, PCHAR password, PIceAgentCallbacks pIceAge pIceAgent->iceServersCount = 0; for (i = 0; i < MAX_ICE_SERVERS_COUNT; i++) { - if (pRtcConfiguration->iceServers[i].urls[0] != '\0' && - STATUS_SUCCEEDED(parseIceServer(&pIceAgent->iceServers[pIceAgent->iceServersCount], (PCHAR) pRtcConfiguration->iceServers[i].urls, - (PCHAR) pRtcConfiguration->iceServers[i].username, - (PCHAR) pRtcConfiguration->iceServers[i].credential))) { - pIceAgent->rtcIceServerDiagnostics[i].port = (INT32) getInt16(pIceAgent->iceServers[i].ipAddress.port); - switch (pIceAgent->iceServers[pIceAgent->iceServersCount].transport) { - case KVS_SOCKET_PROTOCOL_UDP: - STRCPY(pIceAgent->rtcIceServerDiagnostics[i].protocol, ICE_TRANSPORT_TYPE_UDP); - break; - case KVS_SOCKET_PROTOCOL_TCP: - STRCPY(pIceAgent->rtcIceServerDiagnostics[i].protocol, ICE_TRANSPORT_TYPE_TCP); - break; - default: - MEMSET(pIceAgent->rtcIceServerDiagnostics[i].protocol, 0, SIZEOF(pIceAgent->rtcIceServerDiagnostics[i].protocol)); + if (pRtcConfiguration->iceServers[i].urls[0] != '\0') { + PROFILE_CALL_WITH_T_OBJ( + retStatus = parseIceServer(&pIceAgent->iceServers[pIceAgent->iceServersCount], (PCHAR) pRtcConfiguration->iceServers[i].urls, + (PCHAR) pRtcConfiguration->iceServers[i].username, (PCHAR) pRtcConfiguration->iceServers[i].credential), + pIceAgent->iceAgentProfileDiagnostics.iceServerParsingTime[i], "ICE server parsing"); + if (STATUS_SUCCEEDED(retStatus)) { + pIceAgent->rtcIceServerDiagnostics[i].port = (INT32) getInt16(pIceAgent->iceServers[i].ipAddress.port); + switch (pIceAgent->iceServers[pIceAgent->iceServersCount].transport) { + case KVS_SOCKET_PROTOCOL_UDP: + STRCPY(pIceAgent->rtcIceServerDiagnostics[i].protocol, ICE_TRANSPORT_TYPE_UDP); + break; + case KVS_SOCKET_PROTOCOL_TCP: + STRCPY(pIceAgent->rtcIceServerDiagnostics[i].protocol, ICE_TRANSPORT_TYPE_TCP); + break; + default: + MEMSET(pIceAgent->rtcIceServerDiagnostics[i].protocol, 0, SIZEOF(pIceAgent->rtcIceServerDiagnostics[i].protocol)); + } + STRCPY(pIceAgent->rtcIceServerDiagnostics[i].url, pRtcConfiguration->iceServers[i].urls); + pIceAgent->iceServersCount++; + } else { + DLOGE("Failed to parse ICE servers"); } - STRCPY(pIceAgent->rtcIceServerDiagnostics[i].url, pRtcConfiguration->iceServers[i].urls); - pIceAgent->iceServersCount++; } } @@ -444,8 +451,10 @@ STATUS iceAgentAddRemoteCandidate(PIceAgent pIceAgent, PCHAR pIceCandidateString if (STATUS_FAILED(retStatus) && freeIceCandidateIfFail) { SAFE_MEMFREE(pIceCandidate); } - - CHK_LOG_ERR(retStatus); + // Parsing TCP candidates is not an error, so do not log as error because that is misleading + if (retStatus != STATUS_ICE_CANDIDATE_STRING_IS_TCP) { + CHK_LOG_ERR(retStatus); + } LEAVES(); return retStatus; @@ -508,7 +517,6 @@ STATUS iceAgentInitHostCandidate(PIceAgent pIceAgent) CHK_STATUS(connectionListenerAddConnection(pIceAgent->pConnectionListener, pNewIceCandidate->pSocketConnection)); } } - CHK(localCandidateCount != 0, STATUS_ICE_NO_LOCAL_HOST_CANDIDATE_AVAILABLE); CleanUp: @@ -578,22 +586,29 @@ STATUS iceAgentStartAgent(PIceAgent pIceAgent, PCHAR remoteUsername, PCHAR remot STATUS iceAgentStartGathering(PIceAgent pIceAgent) { STATUS retStatus = STATUS_SUCCESS; + UINT64 startTimeInMacro = 0; CHK(pIceAgent != NULL, STATUS_NULL_ARG); CHK(!ATOMIC_LOAD_BOOL(&pIceAgent->agentStartGathering), retStatus); ATOMIC_STORE_BOOL(&pIceAgent->agentStartGathering, TRUE); - - CHK_STATUS(getLocalhostIpAddresses(pIceAgent->localNetworkInterfaces, &pIceAgent->localNetworkInterfaceCount, - pIceAgent->kvsRtcConfiguration.iceSetInterfaceFilterFunc, pIceAgent->kvsRtcConfiguration.filterCustomData)); + pIceAgent->candidateGatheringStartTime = GETTIME(); // skip gathering host candidate and srflx candidate if relay only if (pIceAgent->iceTransportPolicy != ICE_TRANSPORT_POLICY_RELAY) { - CHK_STATUS(iceAgentInitHostCandidate(pIceAgent)); - CHK_STATUS(iceAgentInitSrflxCandidate(pIceAgent)); + // Skip getting local host candidates if transport policy is relay only + PROFILE_CALL_WITH_T_OBJ(CHK_STATUS(getLocalhostIpAddresses(pIceAgent->localNetworkInterfaces, &pIceAgent->localNetworkInterfaceCount, + pIceAgent->kvsRtcConfiguration.iceSetInterfaceFilterFunc, + pIceAgent->kvsRtcConfiguration.filterCustomData)), + pIceAgent->iceAgentProfileDiagnostics.localCandidateGatheringTime, "Host candidate gathering from local interfaces"); + PROFILE_CALL_WITH_T_OBJ(CHK_STATUS(iceAgentInitHostCandidate(pIceAgent)), pIceAgent->iceAgentProfileDiagnostics.hostCandidateSetUpTime, + "Host candidates setup time"); + PROFILE_CALL_WITH_T_OBJ(CHK_STATUS(iceAgentInitSrflxCandidate(pIceAgent)), pIceAgent->iceAgentProfileDiagnostics.srflxCandidateSetUpTime, + "Srflx candidates setup time"); } - CHK_STATUS(iceAgentInitRelayCandidates(pIceAgent)); + PROFILE_CALL_WITH_T_OBJ(CHK_STATUS(iceAgentInitRelayCandidates(pIceAgent)), pIceAgent->iceAgentProfileDiagnostics.relayCandidateSetUpTime, + "Relay candidates setup time"); // start listening for incoming data CHK_STATUS(connectionListenerStart(pIceAgent->pConnectionListener)); @@ -1053,11 +1068,13 @@ STATUS createIceCandidatePairs(PIceAgent pIceAgent, PIceCandidate pIceCandidate, CHK(pIceCandidatePair != NULL, STATUS_NOT_ENOUGH_MEMORY); if (isRemoteCandidate) { - pIceCandidatePair->local = (PIceCandidate) data; + // Since we pick local candidate list + pIceCandidatePair->local = pCurrentIceCandidate; pIceCandidatePair->remote = pIceCandidate; } else { pIceCandidatePair->local = pIceCandidate; - pIceCandidatePair->remote = (PIceCandidate) data; + // Since we pick remote candidate list + pIceCandidatePair->remote = pCurrentIceCandidate; } pIceCandidatePair->nominated = FALSE; @@ -1252,10 +1269,10 @@ STATUS iceCandidatePairCheckConnection(PStunPacket pStunBindingRequest, PIceAgen transactionIdStoreInsert(pIceCandidatePair->pTransactionIdStore, pStunBindingRequest->header.transactionId); checkSum = COMPUTE_CRC32(pStunBindingRequest->header.transactionId, ARRAY_SIZE(pStunBindingRequest->header.transactionId)); CHK_STATUS(hashTableUpsert(pIceCandidatePair->requestSentTime, checkSum, GETTIME())); + CHK_STATUS(hashTableUpsert(pIceAgent->requestTimestampDiagnostics, checkSum, GETTIME())); if (pIceCandidatePair->local->iceCandidateType == ICE_CANDIDATE_TYPE_RELAYED) { pIceAgent->rtcIceServerDiagnostics[pIceCandidatePair->local->iceServerIndex].totalRequestsSent++; - CHK_STATUS(hashTableUpsert(pIceAgent->requestTimestampDiagnostics, checkSum, GETTIME())); } CHK_STATUS(iceAgentSendStunPacket(pStunBindingRequest, (PBYTE) pIceAgent->remotePassword, @@ -1361,7 +1378,6 @@ STATUS iceAgentSendSrflxCandidateRequest(PIceAgent pIceAgent) PIceServer pIceServer = NULL; PStunPacket pBindingRequest = NULL; UINT64 checkSum = 0; - CHK(pIceAgent != NULL, STATUS_NULL_ARG); // Assume holding pIceAgent->lock @@ -1452,7 +1468,6 @@ STATUS iceAgentCheckCandidatePairConnection(PIceAgent pIceAgent) } CleanUp: - CHK_LOG_ERR(retStatus); if (locked) { @@ -1547,6 +1562,17 @@ STATUS iceAgentGatherCandidateTimerCallback(UINT32 timerId, UINT64 currentTime, CHK_STATUS(createIceCandidatePairs(pIceAgent, pIceCandidate, FALSE)); } } + + // If the candidate has moved to valid state, then we can report it and start creating pairs with + // srflx candidates. + else if (pIceCandidate->state == ICE_CANDIDATE_STATE_VALID && !pIceCandidate->reported) { + newLocalCandidates[newLocalCandidateCount++] = *pIceCandidate; + pIceCandidate->reported = TRUE; + + if (pIceCandidate->iceCandidateType == ICE_CANDIDATE_TYPE_SERVER_REFLEXIVE) { + CHK_STATUS(createIceCandidatePairs(pIceAgent, pIceCandidate, FALSE)); + } + } } /* keep sending binding request if there is still pending srflx candidate */ @@ -1556,27 +1582,11 @@ STATUS iceAgentGatherCandidateTimerCallback(UINT32 timerId, UINT64 currentTime, /* stop scheduling if there is no more pending candidate or if timeout is reached. */ if ((totalCandidateCount > 0 && pendingCandidateCount == 0) || currentTime >= pIceAgent->candidateGatheringEndTime) { - DLOGD("Candidate gathering completed."); + DLOGI("Candidate gathering completed."); stopScheduling = TRUE; pIceAgent->iceCandidateGatheringTimerTask = MAX_UINT32; } - CHK_STATUS(doubleListGetHeadNode(pIceAgent->localCandidates, &pCurNode)); - while (pCurNode != NULL && newLocalCandidateCount < ARRAY_SIZE(newLocalCandidates)) { - CHK_STATUS(doubleListGetNodeData(pCurNode, &data)); - pCurNode = pCurNode->pNext; - pIceCandidate = (PIceCandidate) data; - - if (pIceCandidate->state == ICE_CANDIDATE_STATE_VALID && !pIceCandidate->reported) { - newLocalCandidates[newLocalCandidateCount++] = *pIceCandidate; - pIceCandidate->reported = TRUE; - - if (pIceCandidate->iceCandidateType == ICE_CANDIDATE_TYPE_SERVER_REFLEXIVE) { - CHK_STATUS(createIceCandidatePairs(pIceAgent, pIceCandidate, FALSE)); - } - } - } - MUTEX_UNLOCK(pIceAgent->lock); locked = FALSE; @@ -1588,6 +1598,8 @@ STATUS iceAgentGatherCandidateTimerCallback(UINT32 timerId, UINT64 currentTime, if (stopScheduling) { ATOMIC_STORE_BOOL(&pIceAgent->candidateGatheringFinished, TRUE); + PROFILE_WITH_START_TIME_OBJ(pIceAgent->candidateGatheringStartTime, pIceAgent->iceAgentProfileDiagnostics.candidateGatheringTime, + "Candidate gathering time"); /* notify that candidate gathering is finished. */ if (pIceAgent->iceAgentCallbacks.newLocalCandidateFn != NULL) { pIceAgent->iceAgentCallbacks.newLocalCandidateFn(pIceAgent->iceAgentCallbacks.customData, NULL); @@ -1661,7 +1673,7 @@ STATUS iceAgentInitSrflxCandidate(PIceAgent pIceAgent) PIceCandidate pCandidate = NULL, pNewCandidate = NULL; UINT32 j, srflxCount = 0; BOOL locked = FALSE; - PIceCandidate srflsCandidates[KVS_ICE_MAX_LOCAL_CANDIDATE_COUNT]; + PIceCandidate srflxCandidates[KVS_ICE_MAX_LOCAL_CANDIDATE_COUNT]; CHK(pIceAgent != NULL, STATUS_NULL_ARG); @@ -1697,7 +1709,7 @@ STATUS iceAgentInitSrflxCandidate(PIceAgent pIceAgent) CHK_STATUS(doubleListInsertItemHead(pIceAgent->localCandidates, (UINT64) pNewCandidate)); // Store the pointer so we can start the connection listener outside the locks - srflsCandidates[srflxCount++] = pNewCandidate; + srflxCandidates[srflxCount++] = pNewCandidate; pNewCandidate = NULL; } @@ -1710,15 +1722,21 @@ STATUS iceAgentInitSrflxCandidate(PIceAgent pIceAgent) // Create and start the connection listener outside of the locks for (j = 0; j < srflxCount; j++) { - pCandidate = srflsCandidates[j]; - // open up a new socket at host candidate's ip address for server reflex candidate. - // the new port will be stored in pNewCandidate->ipAddress.port. And the Ip address will later be updated - // with the correct ip address once the STUN response is received. - CHK_STATUS(createSocketConnection(pCandidate->ipAddress.family, KVS_SOCKET_PROTOCOL_UDP, &pCandidate->ipAddress, NULL, (UINT64) pIceAgent, - incomingDataHandler, pIceAgent->kvsRtcConfiguration.sendBufSize, &pCandidate->pSocketConnection)); - ATOMIC_STORE_BOOL(&pCandidate->pSocketConnection->receiveData, TRUE); - // connectionListener will free the pSocketConnection at the end. - CHK_STATUS(connectionListenerAddConnection(pIceAgent->pConnectionListener, pCandidate->pSocketConnection)); + pCandidate = srflxCandidates[j]; + // TODO: IPv6 STUN is not supported at the moment. Remove this check if the support is added in the future + if (IS_IPV4_ADDR(&(pCandidate->ipAddress))) { + // open up a new socket at host candidate's ip address for server reflex candidate. + // the new port will be stored in pNewCandidate->ipAddress.port. And the Ip address will later be updated + // with the correct ip address once the STUN response is received. + CHK_STATUS(createSocketConnection(pCandidate->ipAddress.family, KVS_SOCKET_PROTOCOL_UDP, &pCandidate->ipAddress, NULL, (UINT64) pIceAgent, + incomingDataHandler, pIceAgent->kvsRtcConfiguration.sendBufSize, &pCandidate->pSocketConnection)); + ATOMIC_STORE_BOOL(&pCandidate->pSocketConnection->receiveData, TRUE); + // connectionListener will free the pSocketConnection at the end. + CHK_STATUS(connectionListenerAddConnection(pIceAgent->pConnectionListener, pCandidate->pSocketConnection)); + + } else { + DLOGW("IPv6 candidate detected, ignoring...."); + } } CleanUp: @@ -2134,9 +2152,11 @@ STATUS iceAgentReadyStateSetup(PIceAgent pIceAgent) pIceAgent->pDataSendingIceCandidatePair = pNominatedAndValidCandidatePair; CHK_STATUS(getIpAddrStr(&pIceAgent->pDataSendingIceCandidatePair->local->ipAddress, ipAddrStr, ARRAY_SIZE(ipAddrStr))); - DLOGD("Selected pair %s_%s, local candidate type: %s. Round trip time %u ms. Local candidate priority: %u, ice candidate pair priority: %" PRIu64, + DLOGP("Selected pair %s_%s, local candidate type: %s. remote candidate type: %s. Round trip time %u ms. Local candidate priority: %u, ice " + "candidate pair priority: %" PRIu64, pIceAgent->pDataSendingIceCandidatePair->local->id, pIceAgent->pDataSendingIceCandidatePair->remote->id, iceAgentGetCandidateTypeStr(pIceAgent->pDataSendingIceCandidatePair->local->iceCandidateType), + iceAgentGetCandidateTypeStr(pIceAgent->pDataSendingIceCandidatePair->remote->iceCandidateType), pIceAgent->pDataSendingIceCandidatePair->roundTripTime / HUNDREDS_OF_NANOS_IN_A_MILLISECOND, pIceAgent->pDataSendingIceCandidatePair->local->priority, pIceAgent->pDataSendingIceCandidatePair->priority); @@ -2411,6 +2431,7 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS UINT64 connectivityCheckRequestsReceived = 0; UINT64 connectivityCheckResponsesSent = 0; UINT64 connectivityCheckResponsesReceived = 0; + UINT32 count = 0; // need to determine stunPacketType before deserializing because different password should be used depending on the packet type stunPacketType = (UINT16) getInt16(*((PUINT16) pBuffer)); @@ -2474,14 +2495,12 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS // Update round trip time for serial reflexive candidate pIceAgent->rtcIceServerDiagnostics[pIceCandidate->iceServerIndex].totalResponsesReceived++; - retStatus = hashTableGet(pIceAgent->requestTimestampDiagnostics, checkSum, &requestSentTime); - if (retStatus != STATUS_SUCCESS) { - DLOGW("Unable to fetch request Timestamp from the hash table. No update to totalRoundTripTime (error code: 0x%08x), " - "stunBindingRequest", - retStatus); - } else { + // Transaction ID count be same for candidates coming from same interface, which means there would only + // be one entry. It is not necessary to update a return sttaus since it is not indicative of a failure + if ((hashTableGet(pIceAgent->requestTimestampDiagnostics, checkSum, &requestSentTime)) == STATUS_SUCCESS) { pIceAgent->rtcIceServerDiagnostics[pIceCandidate->iceServerIndex].totalRoundTripTime += GETTIME() - requestSentTime; CHK_STATUS(hashTableRemove(pIceAgent->requestTimestampDiagnostics, checkSum)); + hashTableGetCount(pIceAgent->requestTimestampDiagnostics, &count); } CHK_STATUS(deserializeStunPacket(pBuffer, bufferLen, NULL, 0, &pStunPacket)); @@ -2507,13 +2526,12 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS ipAddrStr2, ipAddrStr); } DLOGV("Pair binding response! %s %s", pIceCandidatePair->local->id, pIceCandidatePair->remote->id); - retStatus = hashTableGet(pIceCandidatePair->requestSentTime, checkSum, &requestSentTime); - if (retStatus != STATUS_SUCCESS) { - DLOGW("Unable to fetch request Timestamp from the hash table. No update to RTT for the pair (error code: 0x%08x)", retStatus); - } else { + if (hashTableGet(pIceCandidatePair->requestSentTime, checkSum, &requestSentTime) == STATUS_SUCCESS) { pIceCandidatePair->roundTripTime = GETTIME() - requestSentTime; pIceCandidatePair->rtcIceCandidatePairDiagnostics.currentRoundTripTime = (DOUBLE) (pIceCandidatePair->roundTripTime) / HUNDREDS_OF_NANOS_IN_A_SECOND; + } else { + DLOGW("Unable to fetch request Timestamp from the hash table. No update to RTT for the pair (error code: 0x%08x)", retStatus); } CHK_WARN(transactionIdStoreHasId(pIceCandidatePair->pTransactionIdStore, pBuffer + STUN_PACKET_TRANSACTION_ID_OFFSET), retStatus, "Dropping response packet because transaction id does not match"); @@ -2522,10 +2540,7 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS if (pIceCandidatePair->local->iceCandidateType == ICE_CANDIDATE_TYPE_RELAYED) { pIceAgent->rtcIceServerDiagnostics[pIceCandidatePair->local->iceServerIndex].totalResponsesReceived++; retStatus = hashTableGet(pIceAgent->requestTimestampDiagnostics, checkSum, &requestSentTime); - if (retStatus != STATUS_SUCCESS) { - DLOGW("Unable to fetch request Timestamp from the hash table. No update to totalRoundTripTime (error code: 0x%08x), typeRelayed", - retStatus); - } else { + if (hashTableGet(pIceAgent->requestTimestampDiagnostics, checkSum, &requestSentTime) == STATUS_SUCCESS) { pIceAgent->rtcIceServerDiagnostics[pIceCandidatePair->local->iceServerIndex].totalRoundTripTime += GETTIME() - requestSentTime; CHK_STATUS(hashTableRemove(pIceAgent->requestTimestampDiagnostics, checkSum)); } @@ -2552,14 +2567,10 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS } if (pIceCandidatePair->state != ICE_CANDIDATE_PAIR_STATE_SUCCEEDED) { - DLOGV("Pair succeeded! %s %s", pIceCandidatePair->local->id, pIceCandidatePair->remote->id); + DLOGD("Pair succeeded! %s %s", pIceCandidatePair->local->id, pIceCandidatePair->remote->id); pIceCandidatePair->state = ICE_CANDIDATE_PAIR_STATE_SUCCEEDED; retStatus = hashTableGet(pIceCandidatePair->requestSentTime, checkSum, &requestSentTime); - if (retStatus != STATUS_SUCCESS) { - DLOGW( - "Unable to fetch request Timestamp from the hash table. No update to totalRoundTripTime (error code: 0x%08x), stateSucceeded", - retStatus); - } else { + if (hashTableGet(pIceCandidatePair->requestSentTime, checkSum, &requestSentTime) == STATUS_SUCCESS) { pIceCandidatePair->roundTripTime = GETTIME() - requestSentTime; DLOGD("Ice candidate pair %s_%s is connected. Round trip time: %" PRIu64 "ms", pIceCandidatePair->local->id, pIceCandidatePair->remote->id, pIceCandidatePair->roundTripTime / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); @@ -2567,6 +2578,8 @@ STATUS handleStunPacket(PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PS (DOUBLE) (pIceCandidatePair->roundTripTime) / HUNDREDS_OF_NANOS_IN_A_SECOND; CHK_STATUS(hashTableRemove(pIceCandidatePair->requestSentTime, checkSum)); + } else { + DLOGW("Unable to fetch request Timestamp from the hash table. No update to RTT for the pair (error code: 0x%08x)", retStatus); } } @@ -2770,6 +2783,7 @@ UINT64 computeCandidatePairPriority(PIceCandidatePair pIceCandidatePair, BOOL is UINT64 controllingAgentCandidatePri = pIceCandidatePair->local->priority; UINT64 controlledAgentCandidatePri = pIceCandidatePair->remote->priority; + // Swap if SDK is used as master peer if (!isLocalControlling) { controllingAgentCandidatePri = controlledAgentCandidatePri; controlledAgentCandidatePri = pIceCandidatePair->local->priority; @@ -2800,3 +2814,22 @@ UINT64 iceAgentGetCurrentTime(UINT64 customData) UNUSED_PARAM(customData); return GETTIME(); } + +STATUS getIceAgentStats(PIceAgent pIceAgent, PKvsIceAgentMetrics pKvsIceAgentMetrics) +{ + STATUS retStatus = STATUS_SUCCESS; + UINT32 i = 0; + CHK(pIceAgent != NULL && pKvsIceAgentMetrics != NULL, STATUS_NULL_ARG); + pKvsIceAgentMetrics->kvsIceAgentStats.localCandidateGatheringTime = pIceAgent->iceAgentProfileDiagnostics.localCandidateGatheringTime; + pKvsIceAgentMetrics->kvsIceAgentStats.hostCandidateSetUpTime = pIceAgent->iceAgentProfileDiagnostics.hostCandidateSetUpTime; + pKvsIceAgentMetrics->kvsIceAgentStats.srflxCandidateSetUpTime = pIceAgent->iceAgentProfileDiagnostics.srflxCandidateSetUpTime; + pKvsIceAgentMetrics->kvsIceAgentStats.relayCandidateSetUpTime = pIceAgent->iceAgentProfileDiagnostics.relayCandidateSetUpTime; + for (i = 0; i < MAX_ICE_SERVERS_COUNT; i++) { + pKvsIceAgentMetrics->kvsIceAgentStats.iceServerParsingTime += pIceAgent->iceAgentProfileDiagnostics.iceServerParsingTime[i]; + } + pKvsIceAgentMetrics->kvsIceAgentStats.iceCandidatePairNominationTime = pIceAgent->iceAgentProfileDiagnostics.iceCandidatePairNominationTime; + pKvsIceAgentMetrics->kvsIceAgentStats.candidateGatheringTime = pIceAgent->iceAgentProfileDiagnostics.candidateGatheringTime; + pKvsIceAgentMetrics->kvsIceAgentStats.iceAgentSetUpTime = pIceAgent->iceAgentProfileDiagnostics.iceAgentSetUpTime; +CleanUp: + return retStatus; +} diff --git a/src/source/Ice/IceAgent.h b/src/source/Ice/IceAgent.h index 0b02b87848..5d0d9e4933 100644 --- a/src/source/Ice/IceAgent.h +++ b/src/source/Ice/IceAgent.h @@ -178,6 +178,17 @@ typedef struct { RtcIceCandidatePairDiagnostics rtcIceCandidatePairDiagnostics; } IceCandidatePair, *PIceCandidatePair; +typedef struct { + UINT64 localCandidateGatheringTime; + UINT64 hostCandidateSetUpTime; + UINT64 srflxCandidateSetUpTime; + UINT64 relayCandidateSetUpTime; + UINT64 iceServerParsingTime[MAX_ICE_SERVERS_COUNT]; + UINT64 iceCandidatePairNominationTime; + UINT64 candidateGatheringTime; + UINT64 iceAgentSetUpTime; +} IceAgentProfileDiagnostics, *PIceAgentProfileDiagnostics; + struct __IceAgent { volatile ATOMIC_BOOL agentStartGathering; volatile ATOMIC_BOOL remoteCredentialReceived; @@ -195,6 +206,7 @@ struct __IceAgent { RtcIceServerDiagnostics rtcIceServerDiagnostics[MAX_ICE_SERVERS_COUNT]; RtcIceCandidateDiagnostics rtcSelectedLocalIceCandidateDiagnostics; RtcIceCandidateDiagnostics rtcSelectedRemoteIceCandidateDiagnostics; + IceAgentProfileDiagnostics iceAgentProfileDiagnostics; PHashTable requestTimestampDiagnostics; @@ -250,6 +262,9 @@ struct __IceAgent { // store transaction ids for stun binding request. PTransactionIdStore pStunBindingRequestTransactionIdStore; + + UINT64 candidateGatheringStartTime; + UINT64 iceAgentStartTime; }; ////////////////////////////////////////////// @@ -430,6 +445,8 @@ UINT64 computeCandidatePairPriority(PIceCandidatePair, BOOL); PCHAR iceAgentGetCandidateTypeStr(ICE_CANDIDATE_TYPE); STATUS updateSelectedLocalRemoteCandidateStats(PIceAgent); +STATUS getIceAgentStats(PIceAgent, PKvsIceAgentMetrics); + #ifdef __cplusplus } #endif diff --git a/src/source/Ice/IceAgentStateMachine.c b/src/source/Ice/IceAgentStateMachine.c index b9c2c293fa..54b48a7980 100644 --- a/src/source/Ice/IceAgentStateMachine.c +++ b/src/source/Ice/IceAgentStateMachine.c @@ -48,7 +48,7 @@ STATUS stepIceAgentStateMachine(PIceAgent pIceAgent) if (oldState != pIceAgent->iceAgentState) { if (pIceAgent->iceAgentCallbacks.connectionStateChangedFn != NULL) { - DLOGD("Ice agent state changed from %s to %s.", iceAgentStateToString(oldState), iceAgentStateToString(pIceAgent->iceAgentState)); + DLOGI("Ice agent state changed from %s to %s.", iceAgentStateToString(oldState), iceAgentStateToString(pIceAgent->iceAgentState)); pIceAgent->iceAgentCallbacks.connectionStateChangedFn(pIceAgent->iceAgentCallbacks.customData, pIceAgent->iceAgentState); } } else { @@ -286,6 +286,10 @@ STATUS executeCheckConnectionIceAgentState(UINT64 customData, UINT64 time) retStatus = STATUS_SUCCESS; } + if (pIceAgent->iceAgentStartTime == 0) { + pIceAgent->iceAgentStartTime = GETTIME(); + } + LEAVES(); return retStatus; } @@ -427,6 +431,7 @@ STATUS executeNominatingIceAgentState(UINT64 customData, UINT64 time) UNUSED_PARAM(time); STATUS retStatus = STATUS_SUCCESS; PIceAgent pIceAgent = (PIceAgent) customData; + UINT64 startTimeInMacro = 0; CHK(pIceAgent != NULL, STATUS_NULL_ARG); @@ -436,7 +441,8 @@ STATUS executeNominatingIceAgentState(UINT64 customData, UINT64 time) } if (pIceAgent->isControlling) { - CHK_STATUS(iceAgentSendCandidateNomination(pIceAgent)); + PROFILE_CALL_WITH_T_OBJ(CHK_STATUS(iceAgentSendCandidateNomination(pIceAgent)), + pIceAgent->iceAgentProfileDiagnostics.iceCandidatePairNominationTime, "ICE candidate pair nomination"); } else { // if not controlling, keep sending connection checks and wait for peer // to nominate a pair. @@ -524,7 +530,6 @@ STATUS executeReadyIceAgentState(UINT64 customData, UINT64 time) PIceAgent pIceAgent = (PIceAgent) customData; CHK(pIceAgent != NULL, STATUS_NULL_ARG); - if (pIceAgent->iceAgentState != ICE_AGENT_STATE_READY) { CHK_STATUS(iceAgentReadyStateSetup(pIceAgent)); pIceAgent->iceAgentState = ICE_AGENT_STATE_READY; @@ -539,6 +544,12 @@ STATUS executeReadyIceAgentState(UINT64 customData, UINT64 time) retStatus = STATUS_SUCCESS; } + if (pIceAgent->iceAgentStartTime != 0) { + PROFILE_WITH_START_TIME_OBJ(pIceAgent->iceAgentStartTime, pIceAgent->iceAgentProfileDiagnostics.iceAgentSetUpTime, + "Time taken to get ICE Agent ready for media exchange"); + pIceAgent->iceAgentStartTime = 0; + } + LEAVES(); return retStatus; } diff --git a/src/source/Ice/Network.c b/src/source/Ice/Network.c index 77e5a009b3..8656f15dfc 100644 --- a/src/source/Ice/Network.c +++ b/src/source/Ice/Network.c @@ -90,7 +90,7 @@ STATUS getLocalhostIpAddresses(PKvsIpAddress destIpList, PUINT32 pDestIpListLen, destIpList[ipCount].isPointToPoint = ((ifa->ifa_flags & IFF_POINTOPOINT) != 0); if (filter != NULL) { - // The callback evaluates to a FALSE if the application is interested in black listing an interface + // The callback evaluates to a FALSE if the application is interested in disallowing an interface if (filter(customData, ifa->ifa_name) == FALSE) { filterSet = FALSE; } else { @@ -110,7 +110,7 @@ STATUS getLocalhostIpAddresses(PKvsIpAddress destIpList, PUINT32 pDestIpListLen, destIpList[ipCount].family = KVS_IP_FAMILY_TYPE_IPV6; destIpList[ipCount].port = 0; pIpv6Addr = (struct sockaddr_in6*) ifa->ifa_addr; - // Ignore unspecified addres: the other peer can't use this address + // Ignore unspecified address: the other peer can't use this address // Ignore link local: not very useful and will add work unnecessarily // Ignore site local: https://tools.ietf.org/html/rfc8445#section-5.1.1.1 if (IN6_IS_ADDR_UNSPECIFIED(&pIpv6Addr->sin6_addr) || IN6_IS_ADDR_LINKLOCAL(&pIpv6Addr->sin6_addr) || @@ -405,6 +405,7 @@ STATUS getIpWithHostName(PCHAR hostname, PKvsIpAddress destIp) CHAR addressResolved[KVS_IP_ADDRESS_STRING_BUFFER_LEN + 1] = {'\0'}; CHK(hostname != NULL, STATUS_NULL_ARG); + DLOGI("ICE SERVER Hostname received: %s", hostname); hostnameLen = STRLEN(hostname); addrLen = SIZEOF(addr); @@ -442,11 +443,11 @@ STATUS getIpWithHostName(PCHAR hostname, PKvsIpAddress destIp) freeaddrinfo(res); CHK_ERR(resolved, STATUS_HOSTNAME_NOT_FOUND, "Could not find network address of %s", hostname); getIpAddrStr(destIp, addressResolved, ARRAY_SIZE(addressResolved)); - DLOGI("ICE Server address for %s with getaddrinfo: %s", hostname, addressResolved); + DLOGP("ICE Server address for %s with getaddrinfo: %s", hostname, addressResolved); } else { - DLOGI("ICE Server address for %s: %s", hostname, addr); + DLOGP("ICE Server address for %s: %s", hostname, addr); inet_pton(AF_INET, addr, &inaddr); destIp->family = KVS_IP_FAMILY_TYPE_IPV4; MEMCPY(destIp->address, &inaddr, IPV4_ADDRESS_LENGTH); diff --git a/src/source/Ice/SocketConnection.c b/src/source/Ice/SocketConnection.c index 67680db5a5..4b1b0ec7c8 100644 --- a/src/source/Ice/SocketConnection.c +++ b/src/source/Ice/SocketConnection.c @@ -130,8 +130,7 @@ VOID socketConnectionTlsSessionOnStateChange(UINT64 customData, TLS_SESSION_STAT break; case TLS_SESSION_STATE_CONNECTED: if (IS_VALID_TIMESTAMP(pSocketConnection->tlsHandshakeStartTime)) { - DLOGD("TLS handshake done. Time taken %" PRIu64 " ms", - (GETTIME() - pSocketConnection->tlsHandshakeStartTime) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); + PROFILE_WITH_START_TIME(pSocketConnection->tlsHandshakeStartTime, "TLS handshake time"); pSocketConnection->tlsHandshakeStartTime = INVALID_TIMESTAMP_VALUE; } break; @@ -186,7 +185,7 @@ STATUS socketConnectionSendData(PSocketConnection pSocketConnection, PBYTE pBuf, // Using a single CHK_WARN might output too much spew in bad network conditions if (ATOMIC_LOAD_BOOL(&pSocketConnection->connectionClosed)) { - DLOGD("Warning: Failed to send data. Socket closed already"); + DLOGW("Warning: Failed to send data. Socket closed already"); CHK(FALSE, STATUS_SOCKET_CONNECTION_CLOSED_ALREADY); } @@ -365,16 +364,16 @@ STATUS socketSendDataWithRetry(PSocketConnection pSocketConnection, PBYTE buf, U if (result == 0) { /* loop back and try again */ - DLOGD("poll() timed out"); + DLOGE("poll() timed out"); } else if (result < 0) { - DLOGD("poll() failed with errno %s", getErrorString(getErrorCode())); + DLOGE("poll() failed with errno %s", getErrorString(getErrorCode())); break; } } else if (errorNum == EINTR) { /* nothing need to be done, just retry */ } else { /* fatal error from send() */ - DLOGD("sendto() failed with errno %s", getErrorString(errorNum)); + DLOGE("sendto() failed with errno %s", getErrorString(errorNum)); break; } diff --git a/src/source/Ice/TurnConnection.c b/src/source/Ice/TurnConnection.c index 32f7fe1c76..86a75ed7b1 100644 --- a/src/source/Ice/TurnConnection.c +++ b/src/source/Ice/TurnConnection.c @@ -923,7 +923,6 @@ STATUS turnConnectionStepState(PTurnConnection pTurnConnection) } else { CHK(currentTime < pTurnConnection->stateTimeoutTime, STATUS_TURN_CONNECTION_STATE_TRANSITION_TIMEOUT); } - break; // fallthrough here, missing break intended case TURN_STATE_GET_CREDENTIALS: @@ -1064,7 +1063,6 @@ STATUS turnConnectionStepState(PTurnConnection pTurnConnection) (UINT32) ATOMIC_LOAD(&pTurnConnection->timerCallbackId), pTurnConnection->currentTimerCallingPeriod)); } - break; case TURN_STATE_CLEAN_UP: diff --git a/src/source/PeerConnection/PeerConnection.c b/src/source/PeerConnection/PeerConnection.c index 836f1157f4..5da590b125 100644 --- a/src/source/PeerConnection/PeerConnection.c +++ b/src/source/PeerConnection/PeerConnection.c @@ -268,6 +268,22 @@ STATUS changePeerConnectionState(PKvsPeerConnection pKvsPeerConnection, RTC_PEER MUTEX_LOCK(pKvsPeerConnection->peerConnectionObjLock); locked = TRUE; + switch (newState) { + case RTC_PEER_CONNECTION_STATE_CONNECTING: + if (pKvsPeerConnection->iceConnectingStartTime == 0) { + pKvsPeerConnection->iceConnectingStartTime = GETTIME(); + } + break; + case RTC_PEER_CONNECTION_STATE_CONNECTED: + if (pKvsPeerConnection->iceConnectingStartTime != 0) { + PROFILE_WITH_START_TIME_OBJ(pKvsPeerConnection->iceConnectingStartTime, + pKvsPeerConnection->peerConnectionDiagnostics.iceHolePunchingTime, "ICE Hole Punching Time"); + pKvsPeerConnection->iceConnectingStartTime = 0; + } + break; + default: + break; + } /* new and closed state are terminal*/ CHK(pKvsPeerConnection->connectionState != newState && pKvsPeerConnection->connectionState != RTC_PEER_CONNECTION_STATE_FAILED && @@ -423,7 +439,6 @@ VOID onIceConnectionStateChange(UINT64 customData, UINT64 connectionState) if (startDtlsSession) { CHK_STATUS(dtlsSessionIsInitFinished(pKvsPeerConnection->pDtlsSession, &dtlsConnected)); - if (dtlsConnected) { // In ICE restart scenario, DTLS handshake is not going to be reset. Therefore, we need to check // if the DTLS state has been connected. @@ -574,6 +589,9 @@ VOID onDtlsStateChange(UINT64 customData, RTC_DTLS_TRANSPORT_STATE newDtlsState) pKvsPeerConnection = (PKvsPeerConnection) customData; switch (newDtlsState) { + case RTC_DTLS_TRANSPORT_STATE_CONNECTED: + pKvsPeerConnection->peerConnectionDiagnostics.dtlsSessionSetupTime = pKvsPeerConnection->pDtlsSession->dtlsSessionSetupTime; + break; case RTC_DTLS_TRANSPORT_STATE_CLOSED: changePeerConnectionState(pKvsPeerConnection, RTC_PEER_CONNECTION_STATE_CLOSED); break; @@ -677,9 +695,11 @@ STATUS createPeerConnection(PRtcConfiguration pConfiguration, PRtcPeerConnection IceAgentCallbacks iceAgentCallbacks; DtlsSessionCallbacks dtlsSessionCallbacks; PConnectionListener pConnectionListener = NULL; + UINT64 startTime = 0; CHK(pConfiguration != NULL && ppPeerConnection != NULL, STATUS_NULL_ARG); + startTime = GETTIME(); MEMSET(&iceAgentCallbacks, 0, SIZEOF(IceAgentCallbacks)); MEMSET(&dtlsSessionCallbacks, 0, SIZEOF(DtlsSessionCallbacks)); @@ -738,6 +758,9 @@ STATUS createPeerConnection(PRtcConfiguration pConfiguration, PRtcPeerConnection if (STATUS_FAILED(retStatus)) { freePeerConnection((PRtcPeerConnection*) &pKvsPeerConnection); + } else { + PROFILE_WITH_START_TIME_OBJ(startTime, pKvsPeerConnection->peerConnectionDiagnostics.peerConnectionCreationTime, + "Peer connection object creation time"); } LEAVES(); @@ -761,6 +784,7 @@ STATUS freePeerConnection(PRtcPeerConnection* ppPeerConnection) PKvsPeerConnection pKvsPeerConnection; PDoubleListNode pCurNode = NULL; UINT64 item = 0; + UINT64 startTime; CHK(ppPeerConnection != NULL, STATUS_NULL_ARG); @@ -768,6 +792,7 @@ STATUS freePeerConnection(PRtcPeerConnection* ppPeerConnection) CHK(pKvsPeerConnection != NULL, retStatus); + startTime = GETTIME(); /* Shutdown IceAgent first so there is no more incoming packets which can cause * SCTP to be allocated again after SCTP is freed. */ CHK_LOG_ERR(iceAgentShutdown(pKvsPeerConnection->pIceAgent)); @@ -835,8 +860,8 @@ STATUS freePeerConnection(PRtcPeerConnection* ppPeerConnection) SAFE_MEMFREE(pKvsPeerConnection->pTwccManager); } + PROFILE_WITH_START_TIME_OBJ(startTime, pKvsPeerConnection->peerConnectionDiagnostics.freePeerConnectionTime, "Free peer connection"); SAFE_MEMFREE(*ppPeerConnection); - CleanUp: LEAVES(); @@ -1047,6 +1072,9 @@ STATUS setRemoteDescription(PRtcPeerConnection pPeerConnection, PRtcSessionDescr STRNCPY(pKvsPeerConnection->remoteCertificateFingerprint, pSessionDescription->sdpAttributes[i].attributeValue + 8, CERTIFICATE_FINGERPRINT_LENGTH); } else if (pKvsPeerConnection->isOffer && STRCMP(pSessionDescription->sdpAttributes[i].attributeName, "setup") == 0) { + // possible values are actpass, passive and active. If the incoming SDP has active, it indicates it is taking up a client role + // In case of actpass and passive, the other peer is taking up a server role and is waiting for incoming connection + // Reference: https://www.rfc-editor.org/rfc/rfc4572#section-6.2 pKvsPeerConnection->dtlsIsServer = STRCMP(pSessionDescription->sdpAttributes[i].attributeValue, "active") == 0; } else if (STRCMP(pSessionDescription->sdpAttributes[i].attributeName, "ice-options") == 0 && STRSTR(pSessionDescription->sdpAttributes[i].attributeValue, "trickle") != NULL) { @@ -1096,12 +1124,14 @@ STATUS setRemoteDescription(PRtcPeerConnection pPeerConnection, PRtcSessionDescr CHK_STATUS(generateJSONSafeString(pKvsPeerConnection->localIceUfrag, LOCAL_ICE_UFRAG_LEN)); CHK_STATUS(generateJSONSafeString(pKvsPeerConnection->localIcePwd, LOCAL_ICE_PWD_LEN)); CHK_STATUS(iceAgentRestart(pKvsPeerConnection->pIceAgent, pKvsPeerConnection->localIceUfrag, pKvsPeerConnection->localIcePwd)); + // This starts the gathering process timer callback that periodically checks for local candidate list CHK_STATUS(iceAgentStartGathering(pKvsPeerConnection->pIceAgent)); } STRNCPY(pKvsPeerConnection->remoteIceUfrag, remoteIceUfrag, MAX_ICE_UFRAG_LEN); STRNCPY(pKvsPeerConnection->remoteIcePwd, remoteIcePwd, MAX_ICE_PWD_LEN); + // This starts the state machine timer callback that transitions states periodically CHK_STATUS(iceAgentStartAgent(pKvsPeerConnection->pIceAgent, pKvsPeerConnection->remoteIceUfrag, pKvsPeerConnection->remoteIcePwd, pKvsPeerConnection->isOffer)); @@ -1347,10 +1377,11 @@ STATUS closePeerConnection(PRtcPeerConnection pPeerConnection) ENTERS(); STATUS retStatus = STATUS_SUCCESS; PKvsPeerConnection pKvsPeerConnection = (PKvsPeerConnection) pPeerConnection; - + UINT64 startTime = GETTIME(); CHK(pKvsPeerConnection != NULL, STATUS_NULL_ARG); CHK_LOG_ERR(dtlsSessionShutdown(pKvsPeerConnection->pDtlsSession)); CHK_LOG_ERR(iceAgentShutdown(pKvsPeerConnection->pIceAgent)); + PROFILE_WITH_START_TIME_OBJ(startTime, pKvsPeerConnection->peerConnectionDiagnostics.closePeerConnectionTime, "Close peer connection"); CleanUp: @@ -1360,7 +1391,7 @@ STATUS closePeerConnection(PRtcPeerConnection pPeerConnection) return retStatus; } -PUBLIC_API NullableBool canTrickleIceCandidates(PRtcPeerConnection pPeerConnection) +NullableBool canTrickleIceCandidates(PRtcPeerConnection pPeerConnection) { NullableBool canTrickle = {FALSE, FALSE}; PKvsPeerConnection pKvsPeerConnection = (PKvsPeerConnection) pPeerConnection; @@ -1472,3 +1503,37 @@ STATUS twccManagerOnPacketSent(PKvsPeerConnection pc, PRtpPacket pRtpPacket) LEAVES(); return retStatus; } + +STATUS peerConnectionGetMetrics(PRtcPeerConnection pPeerConnection, PPeerConnectionMetrics pPeerConnectionMetrics) +{ + STATUS retStatus = STATUS_SUCCESS; + PKvsPeerConnection pKvsPeerConnection = (PKvsPeerConnection) pPeerConnection; + CHK(pKvsPeerConnection != NULL && pPeerConnectionMetrics != NULL, STATUS_NULL_ARG); + if (pPeerConnectionMetrics->version > PEER_CONNECTION_METRICS_CURRENT_VERSION) { + DLOGW("Peer connection metrics object version invalid..setting to highest default version %d", PEER_CONNECTION_METRICS_CURRENT_VERSION); + pPeerConnectionMetrics->version = PEER_CONNECTION_METRICS_CURRENT_VERSION; + } + pPeerConnectionMetrics->peerConnectionStats.peerConnectionCreationTime = pKvsPeerConnection->peerConnectionDiagnostics.peerConnectionCreationTime; + pPeerConnectionMetrics->peerConnectionStats.dtlsSessionSetupTime = pKvsPeerConnection->peerConnectionDiagnostics.dtlsSessionSetupTime; + pPeerConnectionMetrics->peerConnectionStats.iceHolePunchingTime = pKvsPeerConnection->peerConnectionDiagnostics.iceHolePunchingTime; + // Cannot record these 2 in here because peer connection object would become NULL after clearing. Need another strategy + pPeerConnectionMetrics->peerConnectionStats.closePeerConnectionTime = pKvsPeerConnection->peerConnectionDiagnostics.closePeerConnectionTime; + pPeerConnectionMetrics->peerConnectionStats.freePeerConnectionTime = pKvsPeerConnection->peerConnectionDiagnostics.freePeerConnectionTime; +CleanUp: + return retStatus; +} + +STATUS iceAgentGetMetrics(PRtcPeerConnection pPeerConnection, PKvsIceAgentMetrics pKvsIceAgentMetrics) +{ + STATUS retStatus = STATUS_SUCCESS; + PKvsPeerConnection pKvsPeerConnection = (PKvsPeerConnection) pPeerConnection; + CHK(pKvsPeerConnection != NULL && pKvsIceAgentMetrics != NULL, STATUS_NULL_ARG); + + if (pKvsIceAgentMetrics->version > ICE_AGENT_METRICS_CURRENT_VERSION) { + DLOGW("ICE agent metrics object version invalid..setting to highest default version %d", PEER_CONNECTION_METRICS_CURRENT_VERSION); + pKvsIceAgentMetrics->version = ICE_AGENT_METRICS_CURRENT_VERSION; + } + CHK_STATUS(getIceAgentStats(pKvsPeerConnection->pIceAgent, pKvsIceAgentMetrics)); +CleanUp: + return retStatus; +} diff --git a/src/source/PeerConnection/PeerConnection.h b/src/source/PeerConnection/PeerConnection.h index 238cc96c2f..67cfe713d8 100644 --- a/src/source/PeerConnection/PeerConnection.h +++ b/src/source/PeerConnection/PeerConnection.h @@ -57,6 +57,14 @@ typedef struct { UINT16 lastReportedSeqNum; } TwccManager, *PTwccManager; +typedef struct { + UINT64 peerConnectionCreationTime; + UINT64 dtlsSessionSetupTime; + UINT64 iceHolePunchingTime; + UINT64 closePeerConnectionTime; + UINT64 freePeerConnectionTime; +} KvsPeerConnectionDiagnostics, *PKvsPeerConnectionDiagnostics; + typedef struct { RtcPeerConnection peerConnection; // UINT32 padding padding makes transportWideSequenceNumber 64bit aligned @@ -131,6 +139,9 @@ typedef struct { PTwccManager pTwccManager; RtcOnSenderBandwidthEstimation onSenderBandwidthEstimation; UINT64 onSenderBandwidthEstimationCustomData; + + UINT64 iceConnectingStartTime; + KvsPeerConnectionDiagnostics peerConnectionDiagnostics; } KvsPeerConnection, *PKvsPeerConnection; typedef struct { diff --git a/src/source/PeerConnection/SessionDescription.c b/src/source/PeerConnection/SessionDescription.c old mode 100755 new mode 100644 diff --git a/src/source/Signaling/Client.c b/src/source/Signaling/Client.c index 7e54682918..425edcabf0 100644 --- a/src/source/Signaling/Client.c +++ b/src/source/Signaling/Client.c @@ -62,8 +62,9 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo KvsRetryStrategy createSignalingClientRetryStrategy = {NULL, NULL, KVS_RETRY_STRATEGY_DISABLED}; INT32 signalingClientCreationMaxRetryCount; UINT64 signalingClientCreationWaitTime; + UINT64 startTime = 0; - DLOGV("Creating Signaling Client Sync"); + DLOGI("Creating Signaling Client Sync"); CHK(pSignalingHandle != NULL && pClientInfo != NULL, STATUS_NULL_ARG); // Convert the client info to the internal structure with empty values @@ -77,6 +78,7 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo } else { signalingClientCreationMaxRetryCount = pClientInfo->signalingClientCreationMaxRetryAttempts; } + startTime = GETTIME(); while (TRUE) { retStatus = createSignalingSync(&signalingClientInfoInternal, pChannelInfo, pCallbacks, pCredentialProvider, &pSignalingClient); // NOTE: This will retry on all status codes except SUCCESS. @@ -105,11 +107,11 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo } CleanUp: - if (STATUS_FAILED(retStatus)) { DLOGE("Create signaling client API failed with return code [0x%08x]", retStatus); freeSignaling(&pSignalingClient); } else { + PROFILE_WITH_START_TIME_OBJ(startTime, pSignalingClient->diagnostics.createClientTime, "Create signaling client"); *pSignalingHandle = TO_SIGNALING_CLIENT_HANDLE(pSignalingClient); } @@ -164,10 +166,12 @@ STATUS signalingClientConnectSync(SIGNALING_CLIENT_HANDLE signalingClientHandle) ENTERS(); STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingClientHandle); + UINT64 startTimeInMacro = 0; DLOGV("Signaling Client Connect Sync"); - CHK_STATUS(signalingConnectSync(pSignalingClient)); + PROFILE_CALL_WITH_T_OBJ(CHK_STATUS(signalingConnectSync(pSignalingClient)), pSignalingClient->diagnostics.connectClientTime, + "Connect signaling client"); CleanUp: @@ -185,8 +189,9 @@ STATUS signalingClientFetchSync(SIGNALING_CLIENT_HANDLE signalingClientHandle) KvsRetryStrategy createSignalingClientRetryStrategy = {NULL, NULL, KVS_RETRY_STRATEGY_DISABLED}; INT32 signalingClientCreationMaxRetryCount; UINT64 signalingClientCreationWaitTime; + UINT64 startTime = 0; - DLOGV("Signaling Client Fetch Sync"); + DLOGI("Signaling Client Fetch Sync"); CHK(pSignalingClient != NULL, STATUS_NULL_ARG); // Convert the client info to the internal structure with empty values @@ -199,7 +204,7 @@ STATUS signalingClientFetchSync(SIGNALING_CLIENT_HANDLE signalingClientHandle) if (signalingClientCreationMaxRetryCount == CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS_SENTINEL_VALUE) { signalingClientCreationMaxRetryCount = DEFAULT_CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS; } - + startTime = GETTIME(); while (TRUE) { retStatus = signalingFetchSync(pSignalingClient); // NOTE: This will retry on all status codes except SUCCESS. @@ -233,6 +238,7 @@ STATUS signalingClientFetchSync(SIGNALING_CLIENT_HANDLE signalingClientHandle) SIGNALING_UPDATE_ERROR_COUNT(pSignalingClient, retStatus); if (pSignalingClient != NULL) { freeRetryStrategyForCreatingSignalingClient(&pSignalingClient->clientInfo.signalingClientInfo, &createSignalingClientRetryStrategy); + PROFILE_WITH_START_TIME_OBJ(startTime, pSignalingClient->diagnostics.fetchClientTime, "Fetch signaling client"); } LEAVES(); return retStatus; @@ -406,13 +412,15 @@ STATUS signalingClientGetMetrics(SIGNALING_CLIENT_HANDLE signalingClientHandle, ENTERS(); STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = FROM_SIGNALING_CLIENT_HANDLE(signalingClientHandle); - + CHK(pSignalingClient != NULL, STATUS_NULL_ARG); DLOGV("Signaling Client Get Metrics"); CHK_STATUS(signalingGetMetrics(pSignalingClient, pSignalingClientMetrics)); CleanUp: - SIGNALING_UPDATE_ERROR_COUNT(pSignalingClient, retStatus); + if (pSignalingClient != NULL) { + SIGNALING_UPDATE_ERROR_COUNT(pSignalingClient, retStatus); + } LEAVES(); return retStatus; } diff --git a/src/source/Signaling/LwsApiCalls.c b/src/source/Signaling/LwsApiCalls.c index 44ee3771c7..76d195fa35 100644 --- a/src/source/Signaling/LwsApiCalls.c +++ b/src/source/Signaling/LwsApiCalls.c @@ -2159,9 +2159,12 @@ PVOID receiveLwsMessageWrapper(PVOID args) STATUS retStatus = STATUS_SUCCESS; PSignalingMessageWrapper pSignalingMessageWrapper = (PSignalingMessageWrapper) args; PSignalingClient pSignalingClient = NULL; + SIGNALING_MESSAGE_TYPE messageType = SIGNALING_MESSAGE_TYPE_UNKNOWN; CHK(pSignalingMessageWrapper != NULL, STATUS_NULL_ARG); + messageType = pSignalingMessageWrapper->receivedSignalingMessage.signalingMessage.messageType; + pSignalingClient = pSignalingMessageWrapper->pSignalingClient; CHK(pSignalingClient != NULL, STATUS_INTERNAL_ERROR); @@ -2171,6 +2174,12 @@ PVOID receiveLwsMessageWrapper(PVOID args) // Calling client receive message callback if specified if (pSignalingClient->signalingClientCallbacks.messageReceivedFn != NULL) { + if (messageType == SIGNALING_MESSAGE_TYPE_OFFER) { + pSignalingClient->offerTime = GETTIME(); + } + if (messageType == SIGNALING_MESSAGE_TYPE_ANSWER) { + PROFILE_WITH_START_TIME_OBJ(pSignalingClient->offerTime, pSignalingClient->diagnostics.offerToAnswerTime, "Offer to answer time"); + } CHK_STATUS(pSignalingClient->signalingClientCallbacks.messageReceivedFn(pSignalingClient->signalingClientCallbacks.customData, &pSignalingMessageWrapper->receivedSignalingMessage)); } diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index 2dcbf3022d..c1fdd662d1 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -388,7 +388,12 @@ STATUS signalingSendMessageSync(PSignalingClient pSignalingClient, PSignalingMes // Perform the call CHK_STATUS(sendLwsMessage(pSignalingClient, pSignalingMessage->messageType, pSignalingMessage->peerClientId, pSignalingMessage->payload, pSignalingMessage->payloadLen, pSignalingMessage->correlationId, 0)); - + if (pSignalingMessage->messageType == SIGNALING_MESSAGE_TYPE_ANSWER) { + PROFILE_WITH_START_TIME_OBJ(pSignalingClient->offerTime, pSignalingClient->diagnostics.offerToAnswerTime, "Offer to answer time"); + } + if (pSignalingMessage->messageType == SIGNALING_MESSAGE_TYPE_OFFER) { + pSignalingClient->offerTime = GETTIME(); + } // Update the internal diagnostics only after successfully sending ATOMIC_INCREMENT(&pSignalingClient->diagnostics.numberOfMessagesSent); @@ -701,7 +706,7 @@ STATUS refreshIceConfiguration(PSignalingClient pSignalingClient) // Force the state machine to revert back to get ICE configuration without re-connection ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_RESULT_SIGNALING_RECONNECT_ICE); ATOMIC_STORE(&pSignalingClient->refreshIceConfig, TRUE); - + DLOGI("Retrieving ICE config through getIceServerConfig call again"); // Iterate the state machinery in steady states only - ready or connected if (pStateMachineState->state == SIGNALING_STATE_READY || pStateMachineState->state == SIGNALING_STATE_CONNECTED) { CHK_STATUS(signalingStateMachineIterator(pSignalingClient, curTime + SIGNALING_REFRESH_ICE_CONFIG_STATE_TIMEOUT, pStateMachineState->state)); @@ -951,6 +956,7 @@ STATUS describeChannel(PSignalingClient pSignalingClient, UINT64 time) // Call DescribeChannel API if (STATUS_SUCCEEDED(retStatus)) { if (apiCall) { + DLOGI("Calling because call is uncached"); // Call pre hook func if (pSignalingClient->clientInfo.describePreHookFn != NULL) { retStatus = pSignalingClient->clientInfo.describePreHookFn(pSignalingClient->clientInfo.hookCustomData); @@ -1246,26 +1252,48 @@ STATUS signalingGetMetrics(PSignalingClient pSignalingClient, PSignalingClientMe curTime = SIGNALING_GET_CURRENT_TIME(pSignalingClient); CHK(pSignalingClient != NULL && pSignalingClientMetrics != NULL, STATUS_NULL_ARG); - CHK(pSignalingClientMetrics->version <= SIGNALING_CLIENT_METRICS_CURRENT_VERSION, STATUS_SIGNALING_INVALID_METRICS_VERSION); + + if (pSignalingClientMetrics->version > SIGNALING_CLIENT_METRICS_CURRENT_VERSION) { + DLOGW("Invalid signaling client metrics version...setting to highest supported by default version %d", + SIGNALING_CLIENT_METRICS_CURRENT_VERSION); + pSignalingClientMetrics->version = SIGNALING_CLIENT_METRICS_CURRENT_VERSION; + } // Interlock the threading due to data race possibility MUTEX_LOCK(pSignalingClient->diagnosticsLock); - // Fill in the data structures according to the version of the requested structure - currently only v0 - pSignalingClientMetrics->signalingClientStats.signalingClientUptime = curTime - pSignalingClient->diagnostics.createTime; - pSignalingClientMetrics->signalingClientStats.numberOfMessagesSent = (UINT32) pSignalingClient->diagnostics.numberOfMessagesSent; - pSignalingClientMetrics->signalingClientStats.numberOfMessagesReceived = (UINT32) pSignalingClient->diagnostics.numberOfMessagesReceived; - pSignalingClientMetrics->signalingClientStats.iceRefreshCount = (UINT32) pSignalingClient->diagnostics.iceRefreshCount; - pSignalingClientMetrics->signalingClientStats.numberOfErrors = (UINT32) pSignalingClient->diagnostics.numberOfErrors; - pSignalingClientMetrics->signalingClientStats.numberOfRuntimeErrors = (UINT32) pSignalingClient->diagnostics.numberOfRuntimeErrors; - pSignalingClientMetrics->signalingClientStats.numberOfReconnects = (UINT32) pSignalingClient->diagnostics.numberOfReconnects; - pSignalingClientMetrics->signalingClientStats.cpApiCallLatency = pSignalingClient->diagnostics.cpApiLatency; - pSignalingClientMetrics->signalingClientStats.dpApiCallLatency = pSignalingClient->diagnostics.dpApiLatency; - - pSignalingClientMetrics->signalingClientStats.connectionDuration = - ATOMIC_LOAD_BOOL(&pSignalingClient->connected) ? curTime - pSignalingClient->diagnostics.connectTime : 0; - pSignalingClientMetrics->signalingClientStats.apiCallRetryCount = pSignalingClient->diagnostics.stateMachineRetryCount; + MEMSET(&pSignalingClientMetrics->signalingClientStats, 0x00, SIZEOF(pSignalingClientMetrics->signalingClientStats)); + switch (pSignalingClientMetrics->version) { + case 1: + pSignalingClientMetrics->signalingClientStats.getTokenCallTime = pSignalingClient->diagnostics.getTokenCallTime; + pSignalingClientMetrics->signalingClientStats.describeCallTime = pSignalingClient->diagnostics.describeCallTime; + pSignalingClientMetrics->signalingClientStats.createCallTime = pSignalingClient->diagnostics.createCallTime; + pSignalingClientMetrics->signalingClientStats.getEndpointCallTime = pSignalingClient->diagnostics.getEndpointCallTime; + pSignalingClientMetrics->signalingClientStats.getIceConfigCallTime = pSignalingClient->diagnostics.getIceConfigCallTime; + pSignalingClientMetrics->signalingClientStats.connectCallTime = pSignalingClient->diagnostics.connectCallTime; + pSignalingClientMetrics->signalingClientStats.createClientTime = pSignalingClient->diagnostics.createClientTime; + pSignalingClientMetrics->signalingClientStats.fetchClientTime = pSignalingClient->diagnostics.fetchClientTime; + pSignalingClientMetrics->signalingClientStats.connectClientTime = pSignalingClient->diagnostics.connectClientTime; + pSignalingClientMetrics->signalingClientStats.offerToAnswerTime = pSignalingClient->diagnostics.offerToAnswerTime; + case 0: + // Fill in the data structures according to the version of the requested structure + pSignalingClientMetrics->signalingClientStats.signalingClientUptime = curTime - pSignalingClient->diagnostics.createTime; + pSignalingClientMetrics->signalingClientStats.numberOfMessagesSent = (UINT32) pSignalingClient->diagnostics.numberOfMessagesSent; + pSignalingClientMetrics->signalingClientStats.numberOfMessagesReceived = (UINT32) pSignalingClient->diagnostics.numberOfMessagesReceived; + pSignalingClientMetrics->signalingClientStats.iceRefreshCount = (UINT32) pSignalingClient->diagnostics.iceRefreshCount; + pSignalingClientMetrics->signalingClientStats.numberOfErrors = (UINT32) pSignalingClient->diagnostics.numberOfErrors; + pSignalingClientMetrics->signalingClientStats.numberOfRuntimeErrors = (UINT32) pSignalingClient->diagnostics.numberOfRuntimeErrors; + pSignalingClientMetrics->signalingClientStats.numberOfReconnects = (UINT32) pSignalingClient->diagnostics.numberOfReconnects; + pSignalingClientMetrics->signalingClientStats.cpApiCallLatency = pSignalingClient->diagnostics.cpApiLatency; + pSignalingClientMetrics->signalingClientStats.dpApiCallLatency = pSignalingClient->diagnostics.dpApiLatency; + + pSignalingClientMetrics->signalingClientStats.connectionDuration = + ATOMIC_LOAD_BOOL(&pSignalingClient->connected) ? curTime - pSignalingClient->diagnostics.connectTime : 0; + pSignalingClientMetrics->signalingClientStats.apiCallRetryCount = pSignalingClient->diagnostics.stateMachineRetryCount; + default: + break; + } MUTEX_UNLOCK(pSignalingClient->diagnosticsLock); CleanUp: diff --git a/src/source/Signaling/Signaling.h b/src/source/Signaling/Signaling.h index fe432db9c0..0355be4bac 100644 --- a/src/source/Signaling/Signaling.h +++ b/src/source/Signaling/Signaling.h @@ -180,6 +180,16 @@ typedef struct { UINT64 connectTime; UINT64 cpApiLatency; UINT64 dpApiLatency; + UINT64 getTokenCallTime; + UINT64 describeCallTime; + UINT64 createCallTime; + UINT64 getEndpointCallTime; + UINT64 getIceConfigCallTime; + UINT64 connectCallTime; + UINT64 createClientTime; + UINT64 fetchClientTime; + UINT64 connectClientTime; + UINT64 offerToAnswerTime; PHashTable pEndpointToClockSkewHashMap; UINT32 stateMachineRetryCount; } SignalingDiagnostics, PSignalingDiagnostics; @@ -332,6 +342,7 @@ typedef struct { #ifdef KVS_USE_SIGNALING_CHANNEL_THREADPOOL PThreadpool pThreadpool; #endif + UINT64 offerTime; } SignalingClient, *PSignalingClient; // Public handle to and from object converters diff --git a/src/source/Signaling/StateMachine.c b/src/source/Signaling/StateMachine.c index 47a49e993a..44462f2af7 100644 --- a/src/source/Signaling/StateMachine.c +++ b/src/source/Signaling/StateMachine.c @@ -309,6 +309,7 @@ STATUS executeGetTokenSignalingState(UINT64 customData, UINT64 time) STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = SIGNALING_CLIENT_FROM_CUSTOM_DATA(customData); SERVICE_CALL_RESULT serviceCallResult; + UINT64 startTimeInMacro = 0; CHK(pSignalingClient != NULL, STATUS_NULL_ARG); @@ -324,7 +325,9 @@ STATUS executeGetTokenSignalingState(UINT64 customData, UINT64 time) THREAD_SLEEP_UNTIL(time); // Use the credential provider to get the token - retStatus = pSignalingClient->pCredentialProvider->getCredentialsFn(pSignalingClient->pCredentialProvider, &pSignalingClient->pAwsCredentials); + PROFILE_CALL_WITH_T_OBJ(retStatus = pSignalingClient->pCredentialProvider->getCredentialsFn(pSignalingClient->pCredentialProvider, + &pSignalingClient->pAwsCredentials), + pSignalingClient->diagnostics.getTokenCallTime, "Get token call"); // Check the expiration if (NULL == pSignalingClient->pAwsCredentials || SIGNALING_GET_CURRENT_TIME(pSignalingClient) >= pSignalingClient->pAwsCredentials->expiration) { @@ -389,6 +392,7 @@ STATUS executeDescribeSignalingState(UINT64 customData, UINT64 time) ENTERS(); STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = SIGNALING_CLIENT_FROM_CUSTOM_DATA(customData); + UINT64 startTimeInMacro = 0; CHK(pSignalingClient != NULL, STATUS_NULL_ARG); ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_RESULT_NOT_SET); @@ -401,7 +405,8 @@ STATUS executeDescribeSignalingState(UINT64 customData, UINT64 time) } // Call the aggregate function - retStatus = describeChannel(pSignalingClient, time); + PROFILE_CALL_WITH_T_OBJ(retStatus = describeChannel(pSignalingClient, time), pSignalingClient->diagnostics.describeCallTime, + "Describe signaling call"); CleanUp: @@ -447,6 +452,7 @@ STATUS executeCreateSignalingState(UINT64 customData, UINT64 time) ENTERS(); STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = SIGNALING_CLIENT_FROM_CUSTOM_DATA(customData); + UINT64 startTimeInMacro = 0; CHK(pSignalingClient != NULL, STATUS_NULL_ARG); ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_RESULT_NOT_SET); @@ -459,7 +465,7 @@ STATUS executeCreateSignalingState(UINT64 customData, UINT64 time) } // Call the aggregate function - retStatus = createChannel(pSignalingClient, time); + PROFILE_CALL_WITH_T_OBJ(retStatus = createChannel(pSignalingClient, time), pSignalingClient->diagnostics.createCallTime, "Create signaling call"); CleanUp: @@ -504,6 +510,7 @@ STATUS executeGetEndpointSignalingState(UINT64 customData, UINT64 time) ENTERS(); STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = SIGNALING_CLIENT_FROM_CUSTOM_DATA(customData); + UINT64 startTimeInMacro = 0; CHK(pSignalingClient != NULL, STATUS_NULL_ARG); ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_RESULT_NOT_SET); @@ -516,7 +523,8 @@ STATUS executeGetEndpointSignalingState(UINT64 customData, UINT64 time) } // Call the aggregate function - retStatus = getChannelEndpoint(pSignalingClient, time); + PROFILE_CALL_WITH_T_OBJ(retStatus = getChannelEndpoint(pSignalingClient, time), pSignalingClient->diagnostics.getEndpointCallTime, + "Get endpoint signaling call"); CleanUp: @@ -562,6 +570,7 @@ STATUS executeGetIceConfigSignalingState(UINT64 customData, UINT64 time) ENTERS(); STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = SIGNALING_CLIENT_FROM_CUSTOM_DATA(customData); + UINT64 startTimeInMacro = 0; CHK(pSignalingClient != NULL, STATUS_NULL_ARG); ATOMIC_STORE(&pSignalingClient->result, (SIZE_T) SERVICE_CALL_RESULT_NOT_SET); @@ -574,8 +583,8 @@ STATUS executeGetIceConfigSignalingState(UINT64 customData, UINT64 time) } // Call the aggregate function - retStatus = getIceConfig(pSignalingClient, time); - + PROFILE_CALL_WITH_T_OBJ(retStatus = getIceConfig(pSignalingClient, time), pSignalingClient->diagnostics.getIceConfigCallTime, + "Get ICE config signaling call"); CleanUp: LEAVES(); @@ -719,6 +728,7 @@ STATUS executeConnectSignalingState(UINT64 customData, UINT64 time) ENTERS(); STATUS retStatus = STATUS_SUCCESS; PSignalingClient pSignalingClient = SIGNALING_CLIENT_FROM_CUSTOM_DATA(customData); + UINT64 startTimeInMacro = 0; CHK(pSignalingClient != NULL, STATUS_NULL_ARG); @@ -728,7 +738,8 @@ STATUS executeConnectSignalingState(UINT64 customData, UINT64 time) SIGNALING_CLIENT_STATE_CONNECTING)); } - retStatus = connectSignalingChannel(pSignalingClient, time); + PROFILE_CALL_WITH_T_OBJ(retStatus = connectSignalingChannel(pSignalingClient, time), pSignalingClient->diagnostics.connectCallTime, + "Connect signaling call"); CleanUp: From 4635b64e53c1c5acbad5ae4216942af9e3668278 Mon Sep 17 00:00:00 2001 From: Niyati Maheshwari Date: Wed, 2 Aug 2023 15:17:36 -0700 Subject: [PATCH 092/102] Fix Windows tests (#1769) * enable verbose logs * fix syntax * without gtest filter * env path * cmd.exe /c * give permissions to file * move to C: instead of D: * don't move anything * add paths to pthread, ssl, crypto, websockets dlls * cd missing * uncomment other builds * comment msan * filter out tests --- .github/build_windows_openssl.bat | 2 +- .github/workflows/ci.yml | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/build_windows_openssl.bat b/.github/build_windows_openssl.bat index bb13f8f3e9..c168aa96b4 100644 --- a/.github/build_windows_openssl.bat +++ b/.github/build_windows_openssl.bat @@ -1,4 +1,4 @@ -call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" +call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 mkdir build cd build cmd.exe /c cmake -G "NMake Makefiles" .. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4fc193a3d9..924372389c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -345,17 +345,15 @@ jobs: windows-msvc-openssl: runs-on: windows-2022 env: - AWS_KVS_LOG_LEVEL: 7 + AWS_KVS_LOG_LEVEL: 1 steps: - name: Clone repository uses: actions/checkout@v3 - name: Move cloned repo shell: powershell run: | - mkdir D:\a\webrtc - Move-Item -Path "D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\*" -Destination "D:\a\webrtc" - cd D:\a\webrtc - dir + mkdir C:\webrtc + Move-Item -Path "D:\a\amazon-kinesis-video-streams-webrtc-sdk-c\amazon-kinesis-video-streams-webrtc-sdk-c\*" -Destination "C:\webrtc" - name: Install dependencies shell: powershell run: | @@ -380,13 +378,14 @@ jobs: - name: Build repository shell: powershell run: | - cd D:\a\webrtc + cd C:\webrtc git config --system core.longpaths true .github\build_windows_openssl.bat - # TODO: Fix these tests - # - name: Run tests - # run: | - # & "D:\a\webrtc\build\tst\webrtc_client_test.exe --gtest_filter='-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3'" + - name: Run tests + shell: powershell + run: | + $env:Path += ';C:\webrtc\open-source\bin;C:\tools\pthreads-w32-2-9-1-release\Pre-built.2\dll\x64' + & "C:\webrtc\build\tst\webrtc_client_test.exe" --gtest_filter="-DataChannelFunctionalityTest.*:IceApiTest.*:IceFunctionalityTest.*:PeerConnectionFunctionalityTest.*:SignalingApiFunctionalityTest.*:TurnConnectionFunctionalityTest.*:RtpFunctionalityTest.marshallUnmarshallH264Data:RtpFunctionalityTest.packingUnpackingVerifySameH264Frame:RtcpFunctionalityTest.onRtcpPacketCompound:RtcpFunctionalityTest.twcc3" # windows-msvc-mbedtls: # runs-on: windows-2022 # env: From 82ae3bf47996e33909c79de49ad0adb4abc06a06 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Fri, 4 Aug 2023 16:03:25 -0700 Subject: [PATCH 093/102] Refactor issue templates (#1770) --- .github/ISSUE_TEMPLATE/bug_report.md | 48 -------------- .github/ISSUE_TEMPLATE/bug_report.yml | 76 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 6 ++ .github/ISSUE_TEMPLATE/contribution.md | 22 ------- .github/ISSUE_TEMPLATE/documentation.yml | 31 +++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 20 ------ .github/ISSUE_TEMPLATE/feature_request.yml | 46 +++++++++++++ .github/ISSUE_TEMPLATE/questions-help.md | 18 ----- 8 files changed, 159 insertions(+), 108 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/contribution.md create mode 100644 .github/ISSUE_TEMPLATE/documentation.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml delete mode 100644 .github/ISSUE_TEMPLATE/questions-help.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 1ed5fb63b4..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: "[BUG]" -labels: bug,needs-triage -assignees: '' - ---- - -**Logging** -Add relevent SDK logging. IMPORTANT NOTE: Please make sure to NOT share AWS access credentials under any circumstance! Please make sure they are not in the logs. - -**Describe the bug** -A clear and concise description of what the bug is. - -**SDK version number** -Include the SDK version you are running. If it is a specific commit on master branch, include that - -**Open source building** -If it is a build issue, include 3rd party library version and steps to how you are building it - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. - diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000000..d7cf3d882e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,76 @@ +--- +name: Bug Report +description: File a bug report +title: "[Bug]: " +labels: ["bug", "needs-triage"] +assignees: [] +body: + - type: checkboxes + attributes: + label: Please confirm you have already done the following + options: + - label: I have searched the repository for related/existing bug reports + - label: I have all the details the issue requires + validations: + required: true + - type: textarea + id: description + attributes: + label: Describe the bug + description: What is the problem? A clear and concise description of the bug. + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected Behavior + description: | + What is the expected behavior? + validations: + required: true + - type: textarea + id: current + attributes: + label: Current Behavior + description: | + What actually happened? + + Please include full errors, uncaught exceptions, stack traces, and relevant VERBOSE logs. + To get relevant VERBOSE logs from the SDK, you can retrieve by running `export AWS_KVS_LOG_LEVEL=1` + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Reproduction Steps + description: | + Provide a self-contained, concise snippet of code that can be used to reproduce the issue. + For more complex issues provide a repo with the smallest sample that reproduces the bug. + Avoid including business logic or unrelated code, it makes diagnosis more difficult. + validations: + required: true + - type: input + id: sdk-version + attributes: + label: WebRTC C SDK version being used + validations: + required: true + - type: input + id: compiler-version + attributes: + label: Compiler and Version used + description: gcc --version / Visual Studio / clang --version + validations: + required: true + - type: input + id: operating-system + attributes: + label: Operating System and version + validations: + required: true + - type: input + id: platform + attributes: + label: Platform being used + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..d31b60f5ae --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,6 @@ +--- +blank_issues_enabled: false +contact_links: + - name: General Question + url: https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c/discussions + about: Please ask and answer questions as a discussion thread \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/contribution.md b/.github/ISSUE_TEMPLATE/contribution.md deleted file mode 100644 index 35e4281634..0000000000 --- a/.github/ISSUE_TEMPLATE/contribution.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: Contribution -about: We always welcome open-source contributions! Please open an issue to tag your pull request -title: "[CONTRIBUTION]" -labels: contribution -assignees: '' - ---- - -PLEASE ADD THE APPROPRIATE TAG TO ALLOW BUCKETIZATION OF THE SOLUTIONS. IF THE TAG IS NOT AVAILABLE, DO NOT WORRY, WE WILL TAKE CARE OF IT! - -** Describe the issue you are trying to solve ** -Add a one line description of the issue you are trying to solve - -** Details of the changes ** -Give a couple of points to describe the changes you have made - -** Test cases ** -Give a detailed description of the tests you are running, if applicable - -** Additional context ** -Any details that can be preserved for the future diff --git a/.github/ISSUE_TEMPLATE/documentation.yml b/.github/ISSUE_TEMPLATE/documentation.yml new file mode 100644 index 0000000000..c3c1da1b03 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation.yml @@ -0,0 +1,31 @@ +--- +name: "Documentation Issue" +description: Report an issue in the github Readme. For issues in AWS documentation pages, submit feedback on the concerned AWS page +title: "[Documentation]: " +labels: ["documentation", "needs-triage"] +assignees: [] +body: + - type: checkboxes + attributes: + label: Please confirm you have already done the following + options: + - label: I have searched the repository for related/existing documentation issue reports + - label: I have all the details the issue requires + validations: + required: true + - type: textarea + id: description + attributes: + label: Describe the issue + description: A clear and concise description of the issue. + validations: + required: true + + - type: textarea + id: links + attributes: + label: Links + description: | + Include links to affected documentation page(s). + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 8403b86c9a..0000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: "[FEATURE] " -labels: enhancement -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000000..70914715b7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,46 @@ +--- +name: Feature Request +description: Suggest an idea for this project +title: "[Feature request]: " +labels: [feature-request, needs-triage] +assignees: [] +body: + - type: checkboxes + attributes: + label: Please confirm you have already done the following + options: + - label: I have searched the repository for related/existing feature requests + - label: I have all the details the issue requires + validations: + required: true + - type: textarea + id: description + attributes: + label: Describe the feature + description: A clear and concise description of the feature you are proposing. + validations: + required: true + - type: textarea + id: use-case + attributes: + label: Use Case + description: | + Why do you need this feature? + validations: + required: true + - type: textarea + id: solution + attributes: + label: Proposed Solution + description: | + Suggest how to implement the addition or change. Please include prototype/workaround/sketch/reference implementation. + validations: + required: false + - type: textarea + id: other + attributes: + label: Other Information + description: | + Any alternative solutions or features you considered, a more detailed explanation, stack traces, related issues, links for context, etc. + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/questions-help.md b/.github/ISSUE_TEMPLATE/questions-help.md deleted file mode 100644 index 83d1501847..0000000000 --- a/.github/ISSUE_TEMPLATE/questions-help.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -name: Questions/Help -about: Describe this issue template's purpose here. -title: "[QUESTION]" -labels: question,needs-triage -assignees: '' - ---- - -A one liner description about the use case and what you are trying to achieve - -** Logging ** -Add relevent SDK logging. IMPORTANT NOTE: Please make sure to NOT share AWS access credentials under any circumstance! Please make sure they are not in the logs. - -** Any design considerations/constraints ** -Explain in detail how you would like to integrate our SDK into your solution - -** If you would not like to open an issue to discuss your solution in open-platform, please email your question to kinesis-video-support@amazon.com ** From f5339f90a2983f8eaf681bafc78c8cbed317ad91 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Tue, 8 Aug 2023 15:16:13 -0700 Subject: [PATCH 094/102] add support for CN region (#1612) (#1777) Signed-off-by: Alex Li Co-authored-by: Alex.D.Scofield --- samples/Common.c | 8 +++++++- .../amazonaws/kinesis/video/webrtcclient/Include.h | 4 +++- src/source/Signaling/ChannelInfo.c | 4 ++++ tst/PeerConnectionFunctionalityTest.cpp | 4 ++-- tst/SdpApiTest.cpp | 14 +++++++------- tst/WebRTCClientTestFixture.cpp | 2 +- tst/WebRTCClientTestFixture.h | 1 + 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index 76862d1bff..6172272e04 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -377,7 +377,13 @@ STATUS initializePeerConnection(PSampleConfiguration pSampleConfiguration, PRtcP configuration.iceTransportPolicy = ICE_TRANSPORT_POLICY_ALL; // Set the STUN server - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, pSampleConfiguration->channelInfo.pRegion); + PCHAR pKinesisVideoStunUrlPostFix = KINESIS_VIDEO_STUN_URL_POSTFIX; + // If region is in CN, add CN region uri postfix + if (STRSTR(pSampleConfiguration->channelInfo.pRegion, "cn-")) { + pKinesisVideoStunUrlPostFix = KINESIS_VIDEO_STUN_URL_POSTFIX_CN; + } + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, pSampleConfiguration->channelInfo.pRegion, + pKinesisVideoStunUrlPostFix); if (pSampleConfiguration->useTurn) { // Set the URIs from the configuration diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 943a355236..973b59984d 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -670,7 +670,9 @@ extern "C" { /** * Parameterized string for KVS STUN Server */ -#define KINESIS_VIDEO_STUN_URL "stun:stun.kinesisvideo.%s.amazonaws.com:443" +#define KINESIS_VIDEO_STUN_URL_POSTFIX "amazonaws.com" +#define KINESIS_VIDEO_STUN_URL_POSTFIX_CN "amazonaws.com.cn" +#define KINESIS_VIDEO_STUN_URL "stun:stun.kinesisvideo.%s.%s:443" /** * Default signaling SSL port diff --git a/src/source/Signaling/ChannelInfo.c b/src/source/Signaling/ChannelInfo.c index 17cf3e4bfe..6f8dcaf560 100644 --- a/src/source/Signaling/ChannelInfo.c +++ b/src/source/Signaling/ChannelInfo.c @@ -138,6 +138,10 @@ STATUS createValidateChannelInfo(PChannelInfo pOrigChannelInfo, PChannelInfo* pp // Create a fully qualified URI SNPRINTF(pCurPtr, MAX_CONTROL_PLANE_URI_CHAR_LEN, "%s%s.%s%s", CONTROL_PLANE_URI_PREFIX, KINESIS_VIDEO_SERVICE_NAME, pChannelInfo->pRegion, CONTROL_PLANE_URI_POSTFIX); + // If region is in CN, add CN region uri postfix + if (STRSTR(pChannelInfo->pRegion, "cn-")) { + STRCAT(pCurPtr, ".cn"); + } } pChannelInfo->pControlPlaneUrl = pCurPtr; diff --git a/tst/PeerConnectionFunctionalityTest.cpp b/tst/PeerConnectionFunctionalityTest.cpp index 955d0a25af..5a5e3ed3d5 100644 --- a/tst/PeerConnectionFunctionalityTest.cpp +++ b/tst/PeerConnectionFunctionalityTest.cpp @@ -232,7 +232,7 @@ TEST_F(PeerConnectionFunctionalityTest, sendDataWithClosedSocketConnectionWithHo PSocketConnection pSocketConnection; MEMSET(&configuration, 0x00, SIZEOF(RtcConfiguration)); - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); EXPECT_EQ(createPeerConnection(&configuration, &offerPc), STATUS_SUCCESS); EXPECT_EQ(createPeerConnection(&configuration, &answerPc), STATUS_SUCCESS); @@ -524,7 +524,7 @@ TEST_F(PeerConnectionFunctionalityTest, connectTwoPeersWithHostAndStun) MEMSET(&configuration, 0x00, SIZEOF(RtcConfiguration)); // Set the STUN server - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); EXPECT_EQ(createPeerConnection(&configuration, &offerPc), STATUS_SUCCESS); EXPECT_EQ(createPeerConnection(&configuration, &answerPc), STATUS_SUCCESS); diff --git a/tst/SdpApiTest.cpp b/tst/SdpApiTest.cpp index f1e651f2dd..a4dccd6a2d 100644 --- a/tst/SdpApiTest.cpp +++ b/tst/SdpApiTest.cpp @@ -614,7 +614,7 @@ a=group:BUNDLE 0 RtcSessionDescriptionInit offerSdp{}; RtcSessionDescriptionInit answerSdp{}; - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; track1.codec = RTC_CODEC_VP8; @@ -667,7 +667,7 @@ a=group:BUNDLE audio video data RtcSessionDescriptionInit offerSdp{}; RtcSessionDescriptionInit answerSdp{}; - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; track1.codec = RTC_CODEC_VP8; @@ -728,7 +728,7 @@ a=group:BUNDLE 0 RtcSessionDescriptionInit offerSdp{}; RtcSessionDescriptionInit answerSdp{}; - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; track1.codec = RTC_CODEC_VP8; @@ -786,7 +786,7 @@ a=group:BUNDLE 0 RtcSessionDescriptionInit offerSdp{}; RtcSessionDescriptionInit answerSdp{}; - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; track1.codec = RTC_CODEC_VP8; @@ -849,7 +849,7 @@ a=ice-options:trickle RtcSessionDescriptionInit offerSdp{}; RtcSessionDescriptionInit answerSdp{}; - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; track1.codec = RTC_CODEC_VP8; @@ -1102,7 +1102,7 @@ a=ice-options:trickle RtcSessionDescriptionInit offerSdp{}; RtcSessionDescriptionInit answerSdp{}; - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; track1.codec = RTC_CODEC_VP8; @@ -1320,7 +1320,7 @@ a=ssrc:1644235696 cname:{36a6a74c-73a4-594b-9bb0-023b4d357280})"; RtcSessionDescriptionInit offerSdp{}; RtcSessionDescriptionInit answerSdp{}; - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; track1.codec = RTC_CODEC_VP8; diff --git a/tst/WebRTCClientTestFixture.cpp b/tst/WebRTCClientTestFixture.cpp index 8291bcf6de..d041db728e 100644 --- a/tst/WebRTCClientTestFixture.cpp +++ b/tst/WebRTCClientTestFixture.cpp @@ -256,7 +256,7 @@ void WebRtcClientTestBase::getIceServers(PRtcConfiguration pRtcConfiguration) EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfoCount(mSignalingClientHandle, &iceConfigCount)); // Set the STUN server - SNPRINTF(pRtcConfiguration->iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION); + SNPRINTF(pRtcConfiguration->iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); for (uriCount = 0, i = 0; i < iceConfigCount; i++) { EXPECT_EQ(STATUS_SUCCESS, signalingClientGetIceConfigInfo(mSignalingClientHandle, i, &pIceConfigInfo)); diff --git a/tst/WebRTCClientTestFixture.h b/tst/WebRTCClientTestFixture.h index 28a0686521..f4abf4532e 100644 --- a/tst/WebRTCClientTestFixture.h +++ b/tst/WebRTCClientTestFixture.h @@ -8,6 +8,7 @@ #include #define TEST_DEFAULT_REGION ((PCHAR) "us-west-2") +#define TEST_DEFAULT_STUN_URL_POSTFIX (KINESIS_VIDEO_STUN_URL_POSTFIX) #define TEST_STREAMING_TOKEN_DURATION (40 * HUNDREDS_OF_NANOS_IN_A_SECOND) #define TEST_JITTER_BUFFER_CLOCK_RATE (1000) #define TEST_SIGNALING_MASTER_CLIENT_ID (PCHAR) "Test_Master_ClientId" From 7c5a03b742100ce7ec13432a3d1ec834d336004b Mon Sep 17 00:00:00 2001 From: "Alex.D.Scofield" Date: Tue, 15 Aug 2023 00:32:05 +0800 Subject: [PATCH 095/102] sample: remove unused pIotCoreThingName (#1720) Signed-off-by: Alex.Li --- samples/Common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/Common.c b/samples/Common.c index 6172272e04..97898a13da 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -747,7 +747,7 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE CHK(NULL != (pSampleConfiguration = (PSampleConfiguration) MEMCALLOC(1, SIZEOF(SampleConfiguration))), STATUS_NOT_ENOUGH_MEMORY); #ifdef IOT_CORE_ENABLE_CREDENTIALS - PCHAR pIotCoreCredentialEndPoint, pIotCoreCert, pIotCorePrivateKey, pIotCoreRoleAlias, pIotCoreThingName, pIotCoreCertificateId; + PCHAR pIotCoreCredentialEndPoint, pIotCoreCert, pIotCorePrivateKey, pIotCoreRoleAlias, pIotCoreCertificateId; CHK_ERR((pIotCoreCredentialEndPoint = getenv(IOT_CORE_CREDENTIAL_ENDPOINT)) != NULL, STATUS_INVALID_OPERATION, "AWS_IOT_CORE_CREDENTIAL_ENDPOINT must be set"); CHK_ERR((pIotCoreCert = getenv(IOT_CORE_CERT)) != NULL, STATUS_INVALID_OPERATION, "AWS_IOT_CORE_CERT must be set"); From d4a60f6e8c4c70845e82f779e651b2712558865e Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Mon, 14 Aug 2023 10:55:06 -0700 Subject: [PATCH 096/102] Update commit --- CMake/Dependencies/libkvsCommonLws-CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt index db6afc4268..5f3410f637 100644 --- a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt +++ b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt @@ -6,7 +6,7 @@ include(ExternalProject) ExternalProject_Add(libkvsCommonLws-download GIT_REPOSITORY https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git - GIT_TAG da1d09c635ee3c0b41709bae528a8f93cd015029 + GIT_TAG 611b9b9efb1fe3a404b94f493d877e6bc1a8b8e7 PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} From ce728860eeb813ff0212900ea25d0c6547d941f9 Mon Sep 17 00:00:00 2001 From: jdelapla Date: Fri, 18 Aug 2023 14:14:45 -0700 Subject: [PATCH 097/102] Fix refresh permission test by checking more regularly (#1779) --- tst/TurnConnectionFunctionalityTest.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/tst/TurnConnectionFunctionalityTest.cpp b/tst/TurnConnectionFunctionalityTest.cpp index d482ebf2d5..9f02977a60 100644 --- a/tst/TurnConnectionFunctionalityTest.cpp +++ b/tst/TurnConnectionFunctionalityTest.cpp @@ -149,6 +149,7 @@ TEST_F(TurnConnectionFunctionalityTest, turnConnectionRefreshPermissionTest) MUTEX_UNLOCK(pTurnConnection->lock); } + DLOGI("Checking if TURN_STATE_READY is set"); EXPECT_TRUE(turnReady == TRUE); // modify permission expiration time to trigger refresh permission @@ -156,14 +157,22 @@ TEST_F(TurnConnectionFunctionalityTest, turnConnectionRefreshPermissionTest) pTurnConnection->turnPeerList[0].permissionExpirationTime = GETTIME(); MUTEX_UNLOCK(pTurnConnection->lock); - // turn Connection timer run happens every second when at ready state. - THREAD_SLEEP(1500 * HUNDREDS_OF_NANOS_IN_A_MILLISECOND); - // verify we are no longer in ready state. - MUTEX_LOCK(pTurnConnection->lock); - EXPECT_TRUE(pTurnConnection->state != TURN_STATE_READY); - MUTEX_UNLOCK(pTurnConnection->lock); + turnReady = FALSE; + turnReadyTimeout = GETTIME() + 10 * HUNDREDS_OF_NANOS_IN_A_SECOND; + while (!turnReady && GETTIME() < turnReadyTimeout) { + THREAD_SLEEP(5 * HUNDREDS_OF_NANOS_IN_A_MILLISECOND); + MUTEX_LOCK(pTurnConnection->lock); + if (pTurnConnection->state != TURN_STATE_READY) { + turnReady = TRUE; + } + MUTEX_UNLOCK(pTurnConnection->lock); + } + + //here "TRUE" actually means not in the ready state + EXPECT_TRUE(turnReady == TRUE); + //and now let's make sure we get back to ready turnReady = FALSE; turnReadyTimeout = GETTIME() + 10 * HUNDREDS_OF_NANOS_IN_A_SECOND; From e42c048d4310bcaaae11c9386c6aba10d89ce8f7 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Sun, 20 Aug 2023 10:36:36 -0700 Subject: [PATCH 098/102] Remove some duplicates and fix some discripancies via rebase with the develop branch --- samples/Common.c | 24 +----------------------- samples/Samples.h | 3 --- samples/kvsWebRTCClientMaster.c | 14 -------------- scripts/parse_status.py | 4 ---- src/source/Signaling/Client.c | 2 +- src/source/Signaling/Signaling.c | 3 --- tst/SdpApiTest.cpp | 6 +++--- 7 files changed, 5 insertions(+), 51 deletions(-) diff --git a/samples/Common.c b/samples/Common.c index 5df16debf6..97898a13da 100644 --- a/samples/Common.c +++ b/samples/Common.c @@ -747,7 +747,7 @@ STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE CHK(NULL != (pSampleConfiguration = (PSampleConfiguration) MEMCALLOC(1, SIZEOF(SampleConfiguration))), STATUS_NOT_ENOUGH_MEMORY); #ifdef IOT_CORE_ENABLE_CREDENTIALS - PCHAR pIotCoreCredentialEndPoint, pIotCoreCert, pIotCorePrivateKey, pIotCoreRoleAlias, pIotCoreThingName, pIotCoreCertificateId; + PCHAR pIotCoreCredentialEndPoint, pIotCoreCert, pIotCorePrivateKey, pIotCoreRoleAlias, pIotCoreCertificateId; CHK_ERR((pIotCoreCredentialEndPoint = getenv(IOT_CORE_CREDENTIAL_ENDPOINT)) != NULL, STATUS_INVALID_OPERATION, "AWS_IOT_CORE_CREDENTIAL_ENDPOINT must be set"); CHK_ERR((pIotCoreCert = getenv(IOT_CORE_CERT)) != NULL, STATUS_INVALID_OPERATION, "AWS_IOT_CORE_CERT must be set"); @@ -1124,28 +1124,6 @@ STATUS freeSampleConfiguration(PSampleConfiguration* ppSampleConfiguration) timerQueueFree(&pSampleConfiguration->timerQueueHandle); } - if (IS_VALID_TIMER_QUEUE_HANDLE(pSampleConfiguration->timerQueueHandle)) { - if (pSampleConfiguration->iceCandidatePairStatsTimerId != MAX_UINT32) { - retStatus = timerQueueCancelTimer(pSampleConfiguration->timerQueueHandle, pSampleConfiguration->iceCandidatePairStatsTimerId, - (UINT64) pSampleConfiguration); - if (STATUS_FAILED(retStatus)) { - DLOGE("Failed to cancel stats timer with: 0x%08x", retStatus); - } - pSampleConfiguration->iceCandidatePairStatsTimerId = MAX_UINT32; - } - - if (pSampleConfiguration->pregenerateCertTimerId != MAX_UINT32) { - retStatus = timerQueueCancelTimer(pSampleConfiguration->timerQueueHandle, pSampleConfiguration->pregenerateCertTimerId, - (UINT64) pSampleConfiguration); - if (STATUS_FAILED(retStatus)) { - DLOGE("Failed to cancel certificate pre-generation timer with: 0x%08x", retStatus); - } - pSampleConfiguration->pregenerateCertTimerId = MAX_UINT32; - } - - timerQueueFree(&pSampleConfiguration->timerQueueHandle); - } - if (pSampleConfiguration->pPendingSignalingMessageForRemoteClient != NULL) { // Iterate and free all the pending queues stackQueueGetIterator(pSampleConfiguration->pPendingSignalingMessageForRemoteClient, &iterator); diff --git a/samples/Samples.h b/samples/Samples.h index 0d79673f86..dedd53d65e 100644 --- a/samples/Samples.h +++ b/samples/Samples.h @@ -59,9 +59,6 @@ extern "C" { // comment out this line to disable the feature #define KVS_USE_SIGNALING_CHANNEL_THREADPOOL 1 -#define MASTER_DATA_CHANNEL_MESSAGE "This message is from the KVS Master" -#define VIEWER_DATA_CHANNEL_MESSAGE "This message is from the KVS Viewer" - /* Uncomment the following line in order to enable IoT credentials checks in the provided samples */ // #define IOT_CORE_ENABLE_CREDENTIALS 1 diff --git a/samples/kvsWebRTCClientMaster.c b/samples/kvsWebRTCClientMaster.c index 4f5cfd1c15..1913401f18 100644 --- a/samples/kvsWebRTCClientMaster.c +++ b/samples/kvsWebRTCClientMaster.c @@ -64,20 +64,6 @@ INT32 main(INT32 argc, CHAR* argv[]) // Kick of the termination sequence ATOMIC_STORE_BOOL(&pSampleConfiguration->appTerminateFlag, TRUE); - if (IS_VALID_MUTEX_VALUE(pSampleConfiguration->sampleConfigurationObjLock)) { - MUTEX_LOCK(pSampleConfiguration->sampleConfigurationObjLock); - } - - // Cancel the media thread - if (pSampleConfiguration->mediaThreadStarted) { - DLOGD("Canceling media thread"); - THREAD_CANCEL(pSampleConfiguration->mediaSenderTid); - } - - if (IS_VALID_MUTEX_VALUE(pSampleConfiguration->sampleConfigurationObjLock)) { - MUTEX_UNLOCK(pSampleConfiguration->sampleConfigurationObjLock); - } - if (pSampleConfiguration->mediaSenderTid != INVALID_TID_VALUE) { THREAD_JOIN(pSampleConfiguration->mediaSenderTid, NULL); } diff --git a/scripts/parse_status.py b/scripts/parse_status.py index e32bed8e2c..5114b8c781 100755 --- a/scripts/parse_status.py +++ b/scripts/parse_status.py @@ -20,11 +20,7 @@ print(example_sums) # {'STATUS_CHILD': "0x5", 'STATUS_PARENT': "0x4"} ''' -<<<<<<< HEAD pattern = re.compile("#define *(STATUS\_[A-Z_]*) *(([A-Z_]*) *\+ *)?0x([0-9a-fA-F]*)") -======= -pattern = re.compile("#define *(STATUS\_[A-Z_]*) *(([A-Z_]*) *\+ *)?0x([0-9]*)") ->>>>>>> master def operands_by_name(paragraph): matches = filter(None, [pattern.match(line) for line in paragraph.splitlines()]) diff --git a/src/source/Signaling/Client.c b/src/source/Signaling/Client.c index 0ffc924d56..425edcabf0 100644 --- a/src/source/Signaling/Client.c +++ b/src/source/Signaling/Client.c @@ -64,7 +64,7 @@ STATUS createSignalingClientSync(PSignalingClientInfo pClientInfo, PChannelInfo UINT64 signalingClientCreationWaitTime; UINT64 startTime = 0; - DLOGV("Creating Signaling Client Sync"); + DLOGI("Creating Signaling Client Sync"); CHK(pSignalingHandle != NULL && pClientInfo != NULL, STATUS_NULL_ARG); // Convert the client info to the internal structure with empty values diff --git a/src/source/Signaling/Signaling.c b/src/source/Signaling/Signaling.c index 2c226b3a3f..c5761bf2b8 100644 --- a/src/source/Signaling/Signaling.c +++ b/src/source/Signaling/Signaling.c @@ -43,9 +43,6 @@ STATUS createSignalingSync(PSignalingClientInfoInternal pClientInfo, PChannelInf #endif pSignalingClient->version = SIGNALING_CLIENT_CURRENT_VERSION; - - pSignalingClient->version = SIGNALING_CLIENT_CURRENT_VERSION; - // Set invalid call times pSignalingClient->describeTime = INVALID_TIMESTAMP_VALUE; pSignalingClient->createTime = INVALID_TIMESTAMP_VALUE; diff --git a/tst/SdpApiTest.cpp b/tst/SdpApiTest.cpp index 443f0ee957..a4dccd6a2d 100644 --- a/tst/SdpApiTest.cpp +++ b/tst/SdpApiTest.cpp @@ -667,7 +667,7 @@ a=group:BUNDLE audio video data RtcSessionDescriptionInit offerSdp{}; RtcSessionDescriptionInit answerSdp{}; - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, KINESIS_VIDEO_STUN_URL_POSTFIX); + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; track1.codec = RTC_CODEC_VP8; @@ -1102,7 +1102,7 @@ a=ice-options:trickle RtcSessionDescriptionInit offerSdp{}; RtcSessionDescriptionInit answerSdp{}; - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, KINESIS_VIDEO_STUN_URL_POSTFIX); + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; track1.codec = RTC_CODEC_VP8; @@ -1320,7 +1320,7 @@ a=ssrc:1644235696 cname:{36a6a74c-73a4-594b-9bb0-023b4d357280})"; RtcSessionDescriptionInit offerSdp{}; RtcSessionDescriptionInit answerSdp{}; - SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, KINESIS_VIDEO_STUN_URL_POSTFIX); + SNPRINTF(configuration.iceServers[0].urls, MAX_ICE_CONFIG_URI_LEN, KINESIS_VIDEO_STUN_URL, TEST_DEFAULT_REGION, TEST_DEFAULT_STUN_URL_POSTFIX); track1.kind = MEDIA_STREAM_TRACK_KIND_VIDEO; track1.codec = RTC_CODEC_VP8; From 913f469a522a3e11fb7528447c0b3d3f1018211b Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Mon, 21 Aug 2023 10:02:45 -0700 Subject: [PATCH 099/102] PR description GHA (#1781) --- .github/PULL_REQUEST_TEMPLATE.md | 12 +++---- .github/workflows/ci.yml | 10 +++--- .github/workflows/pr-desc-lint.yml | 56 ++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/pr-desc-lint.yml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 114f2c6879..e2ba13dcb7 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,15 +1,11 @@ *Issue #, if available:* -*Description of changes:* +*What was changed?* - * What was changed - * Why was it changed - * How it was changed - * Changes in upcoming PRs (if the PR is part of a feature item and modularized) +*Why was it changed?* -*Testing:* +*How was it changed?* - * Unit test (if included in the PR) - * Local test (how the changes were tested locally) +*What testing was done for the changes?* By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 924372389c..638a681b12 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -229,7 +229,7 @@ jobs: timeout --signal=SIGABRT 60m ./tst/webrtc_client_test static-build-linux: runs-on: ubuntu-20.04 - container: + container: image: alpine:3.15.4 env: CC: gcc @@ -361,7 +361,7 @@ jobs: choco install gstreamer-devel --version=1.16.2 curl.exe -o C:\tools\pthreads-w32-2-9-1-release.zip ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip mkdir C:\tools\pthreads-w32-2-9-1-release\ - Expand-Archive -Path C:\tools\pthreads-w32-2-9-1-release.zip -DestinationPath C:\tools\pthreads-w32-2-9-1-release + Expand-Archive -Path C:\tools\pthreads-w32-2-9-1-release.zip -DestinationPath C:\tools\pthreads-w32-2-9-1-release # - name: Build libwebsockets from source # shell: powershell # run: | @@ -371,7 +371,7 @@ jobs: # git clone https://github.com/warmcat/libwebsockets.git # git checkout v4.2.2 # cd libwebsockets - # mkdir build + # mkdir build # cd build # cmake .. -DLWS_HAVE_PTHREAD_H=1 -DLWS_EXT_PTHREAD_INCLUDE_DIR="C:\\tools\\pthreads-w32-2-9-1-release\\Pre-built.2\\include" -DLWS_EXT_PTHREAD_LIBRARIES="C:\\tools\\pthreads-w32-2-9-1-release\\Pre-built.2\\lib\\x64\\libpthreadGC2.a" -DLWS_WITH_MINIMAL_EXAMPLES=1 -DLWS_OPENSSL_INCLUDE_DIRS="C:\\Program Files\\OpenSSL\\include" -DLWS_OPENSSL_LIBRARIES="C:\\Program Files\\OpenSSL\\lib\\libssl.lib;C:\\Program Files\\OpenSSL\\lib\\libcrypto.lib" # cmake --build . --config DEBUG @@ -404,10 +404,10 @@ jobs: # shell: powershell # run: | # choco install gstreamer --version=1.16.2 - # choco install gstreamer-devel --version=1.16.2 + # choco install gstreamer-devel --version=1.16.2 # curl.exe -o C:\tools\pthreads-w32-2-9-1-release.zip ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip # mkdir C:\tools\pthreads-w32-2-9-1-release\ - # Expand-Archive -Path C:\tools\pthreads-w32-2-9-1-release.zip -DestinationPath C:\tools\pthreads-w32-2-9-1-release + # Expand-Archive -Path C:\tools\pthreads-w32-2-9-1-release.zip -DestinationPath C:\tools\pthreads-w32-2-9-1-release # - name: Build repository # shell: powershell # run: | diff --git a/.github/workflows/pr-desc-lint.yml b/.github/workflows/pr-desc-lint.yml new file mode 100644 index 0000000000..d9ff312b1d --- /dev/null +++ b/.github/workflows/pr-desc-lint.yml @@ -0,0 +1,56 @@ +name: PR Description Check + +on: + pull_request: + branches: + - develop + - master + types: + - opened + - synchronize + - reopened + - edited + +jobs: + check-description: + runs-on: macos-latest + steps: + - name: Install GitHub CLI + run: | + brew install gh + + - name: Check PR Description + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + pr_description=$(gh pr view https://github.com/${GITHUB_REPOSITORY}/pull/${{ github.event.pull_request.number }} --json body -q ".body") + error_occurred=0 + # Define minimum character count for each section + MIN_CHARS=25 + + # Extract contents + # Extract contents + what_changed=$(echo "$pr_description" | sed -n -e '/\*What was changed?\*/,/\*/p' | sed '$d' | sed '1d') + why_changed=$(echo "$pr_description" | sed -n -e '/\*Why was it changed?\*/,/\*/p' | sed '$d' | sed '1d') + how_changed=$(echo "$pr_description" | sed -n -e '/\*How was it changed?\*/,/\*/p' | sed '$d' | sed '1d') + testing_done=$(echo "$pr_description" | sed -n -e '/\*What testing was done for the changes?\*/,/\*/p' | sed '$d' | sed '1d') + + if [[ ${#what_changed} -lt $MIN_CHARS ]]; then + echo "PR description for what changed section is either missing or too short." + error_occurred=1 + fi + if [[ ${#why_changed} -lt $MIN_CHARS ]]; then + echo "PR description for why it changed section is either missing or too short." + error_occurred=1 + fi + if [[ ${#how_changed} -lt $MIN_CHARS ]]; then + echo "PR description for how was it changed section is either missing or too short." + error_occurred=1 + fi + if [[ ${#testing_done} -lt $MIN_CHARS ]]; then + echo "PR description for testing section are either missing or too short." + error_occurred=1 + fi + if [[ $error_occurred -eq 1 ]]; then + exit 1 + fi From c3456b95538c83a982c45cf9996648fb8ff060e8 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Wed, 23 Aug 2023 18:40:38 -0700 Subject: [PATCH 100/102] Run unit tests which require creds (#1780) * Run unit tests which require creds * TSAN supp to get past this and check if other tests pass * Reenable tsan failure * Isolate tsan * Enable all tests * Add locks around connectionClosed modification * Update SignalingApiFunctionalityTest.cpp * Have a different signaling send timeout for windows and non-windows platform * Change timer for timeout test to be unrealistic to actually force a timeout * Enable tests with codecov * Update SignalingApiFunctionalityTest.cpp fix broken test. future commit will include code change so arn doesn't take the place of the channel name so the channel end point cache numbers will also be low * Update SignalingApiTest.cpp if using temp creds need to use the temp creds file format --------- Co-authored-by: Hassan Sahibzada Co-authored-by: James Delaplane --- .github/workflows/ci.yml | 108 +++++++++++++++++- .github/workflows/codecov.yml | 8 ++ .github/workflows/pr-desc-lint.yml | 4 +- .../libkvsCommonLws-CMakeLists.txt | 2 +- .../kinesis/video/webrtcclient/Include.h | 8 +- src/source/Ice/SocketConnection.c | 5 + src/source/Ice/TurnConnection.c | 6 +- tst/IceFunctionalityTest.cpp | 4 +- tst/PeerConnectionFunctionalityTest.cpp | 46 ++------ tst/SignalingApiFunctionalityTest.cpp | 104 +++++------------ tst/SignalingApiTest.cpp | 24 ++-- tst/suppressions/TSAN.supp | 2 +- 12 files changed, 188 insertions(+), 133 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 638a681b12..d6de96ba0b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,9 +30,17 @@ jobs: AWS_KVS_LOG_LEVEL: 2 LDFLAGS: -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib CPATH: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Build repository run: | mkdir build && cd build @@ -48,9 +56,17 @@ jobs: CC: gcc CXX: g++ AWS_KVS_LOG_LEVEL: 2 + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Build repository run: | mkdir build && cd build @@ -66,9 +82,17 @@ jobs: AWS_KVS_LOG_LEVEL: 2 LDFLAGS: -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib CPATH: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Build repository run: | mkdir build && cd build @@ -82,9 +106,17 @@ jobs: runs-on: ubuntu-20.04 env: AWS_KVS_LOG_LEVEL: 2 + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Build repository run: | sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' @@ -108,9 +140,17 @@ jobs: CC: clang CXX: clang++ AWS_KVS_LOG_LEVEL: 2 + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Install dependencies run: | sudo apt clean && sudo apt update @@ -134,9 +174,17 @@ jobs: CC: clang CXX: clang++ AWS_KVS_LOG_LEVEL: 2 + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Install dependencies run: | sudo apt clean && sudo apt update @@ -177,13 +225,21 @@ jobs: thread-sanitizer: runs-on: ubuntu-20.04 env: - TSAN_OPTIONS: halt_on_error=1:suppressions=../tst/suppressions/TSAN.supp + TSAN_OPTIONS: second_deadlock_stack=1:halt_on_error=1:suppressions=../tst/suppressions/TSAN.supp CC: clang CXX: clang++ AWS_KVS_LOG_LEVEL: 2 + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Install dependencies run: | sudo apt clean && sudo apt update @@ -204,9 +260,17 @@ jobs: env: AWS_KVS_LOG_LEVEL: 2 CC: gcc-4.4 + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Install deps run: | sudo apt clean && sudo apt update @@ -235,6 +299,9 @@ jobs: CC: gcc CXX: g++ AWS_KVS_LOG_LEVEL: 2 + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 @@ -252,9 +319,17 @@ jobs: runs-on: ubuntu-20.04 env: AWS_KVS_LOG_LEVEL: 2 + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Install deps run: | sudo apt clean && sudo apt update @@ -281,9 +356,17 @@ jobs: CC: clang CXX: clang++ AWS_KVS_LOG_LEVEL: 2 + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Install dependencies run: | sudo apt clean && sudo apt update @@ -311,10 +394,9 @@ jobs: - name: Clone repository uses: actions/checkout@v3 - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1-node16 + uses: aws-actions/configure-aws-credentials@v2 with: role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - role-session-name: ${{ secrets.AWS_ROLE_SESSION_NAME }} aws-region: ${{ secrets.AWS_REGION }} - name: Build repository run: | @@ -328,9 +410,17 @@ jobs: runs-on: ubuntu-20.04 env: AWS_KVS_LOG_LEVEL: 2 + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Build repository run: | # TODO: Remove the following line. This is only a workaround for enabling IPv6, https://github.com/travis-ci/travis-ci/issues/8891. @@ -346,9 +436,17 @@ jobs: runs-on: windows-2022 env: AWS_KVS_LOG_LEVEL: 1 + permissions: + id-token: write + contents: read steps: - name: Clone repository uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Move cloned repo shell: powershell run: | @@ -358,7 +456,7 @@ jobs: shell: powershell run: | choco install gstreamer --version=1.16.2 - choco install gstreamer-devel --version=1.16.2 + choco install gstreamer-devel --version=1.16.2 curl.exe -o C:\tools\pthreads-w32-2-9-1-release.zip ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip mkdir C:\tools\pthreads-w32-2-9-1-release\ Expand-Archive -Path C:\tools\pthreads-w32-2-9-1-release.zip -DestinationPath C:\tools\pthreads-w32-2-9-1-release @@ -467,4 +565,4 @@ jobs: sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6' mkdir build && cd build cmake .. -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-generic32 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi - make + make \ No newline at end of file diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index a06ec75d38..368292b147 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -11,11 +11,19 @@ on: jobs: linux-gcc-codecov: runs-on: ubuntu-latest + permissions: + id-token: write + contents: read steps: - name: Fetch uses: actions/checkout@v3 with: fetch-depth: 2 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} - name: Run code coverage run: | mkdir build diff --git a/.github/workflows/pr-desc-lint.yml b/.github/workflows/pr-desc-lint.yml index d9ff312b1d..0fe1117916 100644 --- a/.github/workflows/pr-desc-lint.yml +++ b/.github/workflows/pr-desc-lint.yml @@ -27,14 +27,14 @@ jobs: error_occurred=0 # Define minimum character count for each section MIN_CHARS=25 - + # Extract contents # Extract contents what_changed=$(echo "$pr_description" | sed -n -e '/\*What was changed?\*/,/\*/p' | sed '$d' | sed '1d') why_changed=$(echo "$pr_description" | sed -n -e '/\*Why was it changed?\*/,/\*/p' | sed '$d' | sed '1d') how_changed=$(echo "$pr_description" | sed -n -e '/\*How was it changed?\*/,/\*/p' | sed '$d' | sed '1d') testing_done=$(echo "$pr_description" | sed -n -e '/\*What testing was done for the changes?\*/,/\*/p' | sed '$d' | sed '1d') - + if [[ ${#what_changed} -lt $MIN_CHARS ]]; then echo "PR description for what changed section is either missing or too short." error_occurred=1 diff --git a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt index 1c3ff91c1f..51cf12ba3e 100644 --- a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt +++ b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt @@ -6,7 +6,7 @@ include(ExternalProject) ExternalProject_Add(libkvsCommonLws-download GIT_REPOSITORY https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git - GIT_TAG daf742a0a53f72341e5b2df75a05ebe6d2557811 + GIT_TAG ab3b6331594dfbd0a59686dfb8dc4938bc86da1a PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} diff --git a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h index 973b59984d..0df3022f5d 100644 --- a/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h +++ b/src/include/com/amazonaws/kinesis/video/webrtcclient/Include.h @@ -631,11 +631,17 @@ extern "C" { */ #define SIGNALING_CONNECT_TIMEOUT (5 * HUNDREDS_OF_NANOS_IN_A_SECOND) +#ifdef _WIN32 +/** + * Default timeout for sending data + */ +#define SIGNALING_SEND_TIMEOUT (15 * HUNDREDS_OF_NANOS_IN_A_SECOND) +#else /** * Default timeout for sending data */ #define SIGNALING_SEND_TIMEOUT (5 * HUNDREDS_OF_NANOS_IN_A_SECOND) - +#endif /** * Default timeout for deleting a channel */ diff --git a/src/source/Ice/SocketConnection.c b/src/source/Ice/SocketConnection.c index 4b1b0ec7c8..7d3fb02719 100644 --- a/src/source/Ice/SocketConnection.c +++ b/src/source/Ice/SocketConnection.c @@ -66,7 +66,12 @@ STATUS freeSocketConnection(PSocketConnection* ppSocketConnection) CHK(ppSocketConnection != NULL, STATUS_NULL_ARG); pSocketConnection = *ppSocketConnection; CHK(pSocketConnection != NULL, retStatus); + + // connectionClosed is accessed and modified when checking if socket connection is closed + // Hence the modification needs to be protected + MUTEX_LOCK(pSocketConnection->lock); ATOMIC_STORE_BOOL(&pSocketConnection->connectionClosed, TRUE); + MUTEX_UNLOCK(pSocketConnection->lock); // Await for the socket connection to be released shutdownTimeout = GETTIME() + KVS_ICE_TURN_CONNECTION_SHUTDOWN_TIMEOUT; diff --git a/src/source/Ice/TurnConnection.c b/src/source/Ice/TurnConnection.c index 86a75ed7b1..460211700e 100644 --- a/src/source/Ice/TurnConnection.c +++ b/src/source/Ice/TurnConnection.c @@ -90,11 +90,11 @@ STATUS freeTurnConnection(PTurnConnection* ppTurnConnection) pTurnConnection = *ppTurnConnection; + // Ensure we are not freeing everything without cancelling the timer timerCallbackId = ATOMIC_EXCHANGE(&pTurnConnection->timerCallbackId, MAX_UINT32); if (timerCallbackId != MAX_UINT32) { CHK_LOG_ERR(timerQueueCancelTimer(pTurnConnection->timerQueueHandle, (UINT32) timerCallbackId, (UINT64) pTurnConnection)); } - // shutdown control channel if (pTurnConnection->pControlChannel) { CHK_LOG_ERR(connectionListenerRemoveConnection(pTurnConnection->pConnectionListener, pTurnConnection->pControlChannel)); @@ -1076,7 +1076,9 @@ STATUS turnConnectionStepState(PTurnConnection pTurnConnection) } CHK_STATUS(turnConnectionFreePreAllocatedPackets(pTurnConnection)); - CHK_STATUS(socketConnectionClosed(pTurnConnection->pControlChannel)); + if (pTurnConnection != NULL) { + CHK_STATUS(socketConnectionClosed(pTurnConnection->pControlChannel)); + } pTurnConnection->state = STATUS_SUCCEEDED(pTurnConnection->errorStatus) ? TURN_STATE_NEW : TURN_STATE_FAILED; ATOMIC_STORE_BOOL(&pTurnConnection->shutdownComplete, TRUE); } diff --git a/tst/IceFunctionalityTest.cpp b/tst/IceFunctionalityTest.cpp index 8e51c11aa2..6ab40aa894 100644 --- a/tst/IceFunctionalityTest.cpp +++ b/tst/IceFunctionalityTest.cpp @@ -640,9 +640,7 @@ TEST_F(IceFunctionalityTest, IceAgentPruneUnconnectedIceCandidatePairUnitTest) TEST_F(IceFunctionalityTest, IceAgentCandidateGatheringTest) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); typedef struct { std::vector list; diff --git a/tst/PeerConnectionFunctionalityTest.cpp b/tst/PeerConnectionFunctionalityTest.cpp index 5a5e3ed3d5..35d4a3cda0 100644 --- a/tst/PeerConnectionFunctionalityTest.cpp +++ b/tst/PeerConnectionFunctionalityTest.cpp @@ -189,9 +189,7 @@ TEST_F(PeerConnectionFunctionalityTest, connectTwoPeersWithPresetCerts) // Assert that two PeerConnections with forced TURN can connect to each other and go to connected TEST_F(PeerConnectionFunctionalityTest, connectTwoPeersForcedTURN) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); RtcConfiguration configuration; PRtcPeerConnection offerPc = NULL, answerPc = NULL; @@ -218,9 +216,7 @@ TEST_F(PeerConnectionFunctionalityTest, connectTwoPeersForcedTURN) TEST_F(PeerConnectionFunctionalityTest, sendDataWithClosedSocketConnectionWithHostAndStun) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); RtcMediaStreamTrack offerVideoTrack; PRtcRtpTransceiver offerVideoTransceiver; @@ -281,9 +277,7 @@ TEST_F(PeerConnectionFunctionalityTest, sendDataWithClosedSocketConnectionWithHo TEST_F(PeerConnectionFunctionalityTest, sendDataWithClosedSocketConnectionWithForcedTurn) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); RtcMediaStreamTrack offerVideoTrack; PRtcRtpTransceiver offerVideoTransceiver; @@ -349,9 +343,7 @@ TEST_F(PeerConnectionFunctionalityTest, sendDataWithClosedSocketConnectionWithFo TEST_F(PeerConnectionFunctionalityTest, shutdownTurnDueToP2PFoundBeforeTurnEstablished) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); RtcConfiguration configuration; PRtcPeerConnection offerPc = NULL, answerPc = NULL; @@ -410,9 +402,7 @@ TEST_F(PeerConnectionFunctionalityTest, shutdownTurnDueToP2PFoundBeforeTurnEstab TEST_F(PeerConnectionFunctionalityTest, shutdownTurnDueToP2PFoundAfterTurnEstablished) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); RtcConfiguration configuration; PRtcPeerConnection offerPc = NULL, answerPc = NULL; @@ -541,10 +531,7 @@ TEST_F(PeerConnectionFunctionalityTest, connectTwoPeersWithHostAndStun) // Assert that two PeerConnections can connect and then terminate one of them, the other one will eventually report disconnection TEST_F(PeerConnectionFunctionalityTest, connectTwoPeersThenDisconnectTest) { - if (!mAccessKeyIdSet) { - return; - } - + ASSERT_EQ(TRUE, mAccessKeyIdSet); RtcConfiguration configuration; PRtcPeerConnection offerPc = NULL, answerPc = NULL; UINT32 i; @@ -783,9 +770,7 @@ TEST_F(PeerConnectionFunctionalityTest, exchangeMedia) // Same test as exchangeMedia, but assert that if one side is RSA DTLS and Key Extraction works TEST_F(PeerConnectionFunctionalityTest, exchangeMediaRSA) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); auto const frameBufferSize = 200000; @@ -869,9 +854,7 @@ TEST_F(PeerConnectionFunctionalityTest, iceRestartTestForcedTurn) RtcConfiguration configuration; PRtcPeerConnection offerPc = NULL, answerPc = NULL; - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); MEMSET(&configuration, 0x00, SIZEOF(RtcConfiguration)); configuration.iceTransportPolicy = ICE_TRANSPORT_POLICY_RELAY; @@ -905,9 +888,7 @@ TEST_F(PeerConnectionFunctionalityTest, peerConnectionOfferCloseConnection) RtcConfiguration configuration; PRtcPeerConnection offerPc = NULL, answerPc = NULL; - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); MEMSET(&configuration, 0x00, SIZEOF(RtcConfiguration)); @@ -934,10 +915,7 @@ TEST_F(PeerConnectionFunctionalityTest, peerConnectionAnswerCloseConnection) RtcConfiguration configuration; PRtcPeerConnection offerPc = NULL, answerPc = NULL; - if (!mAccessKeyIdSet) { - return; - } - + ASSERT_EQ(TRUE, mAccessKeyIdSet); MEMSET(&configuration, 0x00, SIZEOF(RtcConfiguration)); initializeSignalingClient(); @@ -960,9 +938,7 @@ TEST_F(PeerConnectionFunctionalityTest, peerConnectionAnswerCloseConnection) TEST_F(PeerConnectionFunctionalityTest, DISABLED_exchangeMediaThroughTurnRandomStop) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); initializeSignalingClient(); diff --git a/tst/SignalingApiFunctionalityTest.cpp b/tst/SignalingApiFunctionalityTest.cpp index 274bbe89ed..3197bf15aa 100644 --- a/tst/SignalingApiFunctionalityTest.cpp +++ b/tst/SignalingApiFunctionalityTest.cpp @@ -821,9 +821,7 @@ TEST_F(SignalingApiFunctionalityTest, invalidChannelInfoInput) TEST_F(SignalingApiFunctionalityTest, iceReconnectEmulation) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -908,9 +906,7 @@ TEST_F(SignalingApiFunctionalityTest, iceReconnectEmulation) TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedVariations) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -1173,10 +1169,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedVariatio TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedVariations) { - if (!mAccessKeyIdSet) { - return; - } - + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; SignalingClientInfoInternal clientInfoInternal; @@ -1441,9 +1434,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedVariations) TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedAuthExpiration) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -1564,9 +1555,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedAuthExpi TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedAuthExpiration) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -1690,9 +1679,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedAuthExpirat TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaultInjectionRecovered) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -1807,9 +1794,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaul TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithFaultInjectionRecovered) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -1926,9 +1911,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithFaultIn TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaultInjectionNotRecovered) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -2041,9 +2024,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithFaul TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithFaultInjectionNot1669) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -2159,9 +2140,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithFaultIn TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithBadAuth) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -2280,9 +2259,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshNotConnectedWithBadA TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithBadAuth) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -2405,9 +2382,7 @@ TEST_F(SignalingApiFunctionalityTest, iceServerConfigRefreshConnectedWithBadAuth TEST_F(SignalingApiFunctionalityTest, goAwayEmulation) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -2491,9 +2466,7 @@ TEST_F(SignalingApiFunctionalityTest, goAwayEmulation) TEST_F(SignalingApiFunctionalityTest, unknownMessageTypeEmulation) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -2581,9 +2554,7 @@ TEST_F(SignalingApiFunctionalityTest, unknownMessageTypeEmulation) TEST_F(SignalingApiFunctionalityTest, connectTimeoutEmulation) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -2606,7 +2577,7 @@ TEST_F(SignalingApiFunctionalityTest, connectTimeoutEmulation) clientInfoInternal.signalingClientInfo.version = SIGNALING_CLIENT_INFO_CURRENT_VERSION; clientInfoInternal.signalingClientInfo.loggingLevel = mLogLevel; STRCPY(clientInfoInternal.signalingClientInfo.clientId, TEST_SIGNALING_MASTER_CLIENT_ID); - clientInfoInternal.connectTimeout = 100 * HUNDREDS_OF_NANOS_IN_A_MILLISECOND; + clientInfoInternal.connectTimeout = 1 * HUNDREDS_OF_NANOS_IN_A_MILLISECOND; setupSignalingStateMachineRetryStrategyCallbacks(&clientInfoInternal); pKvsRetryStrategyCallbacks = &(clientInfoInternal.signalingStateMachineRetryStrategyCallbacks); @@ -2704,9 +2675,7 @@ TEST_F(SignalingApiFunctionalityTest, connectTimeoutEmulation) TEST_F(SignalingApiFunctionalityTest, channelInfoArnSkipDescribe) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -2838,9 +2807,7 @@ TEST_F(SignalingApiFunctionalityTest, channelInfoArnSkipDescribe) TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedWithArn) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -2972,9 +2939,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedWithArn) TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedAuthExpiration) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -3085,9 +3050,7 @@ TEST_F(SignalingApiFunctionalityTest, deleteChannelCreatedAuthExpiration) TEST_F(SignalingApiFunctionalityTest, signalingClientDisconnectSyncVariations) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); initializeSignalingClient(); @@ -3131,9 +3094,7 @@ TEST_F(SignalingApiFunctionalityTest, signalingClientDisconnectSyncVariations) TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -3267,9 +3228,7 @@ TEST_F(SignalingApiFunctionalityTest, cachingWithFaultInjection) TEST_F(SignalingApiFunctionalityTest, fileCachingTest) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -3362,9 +3321,12 @@ TEST_F(SignalingApiFunctionalityTest, fileCachingTest) EXPECT_EQ(STATUS_SUCCESS, freeSignalingClient(&signalingHandle)); } - /* describeCount and getEndpointCount should only increase by 1 because they are cached for all channels except one */ - EXPECT_TRUE(describeCount > describeCountNoCache && (describeCount - describeCountNoCache) == 1); - EXPECT_TRUE(getEndpointCount > getEndpointCountNoCache && (getEndpointCount - 2 * getEndpointCountNoCache) == 1); + DLOGD("describeCount: %d, describeCountNoCache: %d", describeCount, describeCountNoCache); + DLOGD("getEndpointCount: %d, getEndpointCountNoCache: %d", getEndpointCount, getEndpointCountNoCache); + + /* describeCount and getEndpointCount should only increase by 2 because they are cached for all channels except one and we iterate twice*/ + EXPECT_TRUE(describeCount > describeCountNoCache && (describeCount - describeCountNoCache) == 2); + EXPECT_TRUE(getEndpointCount > getEndpointCountNoCache && (getEndpointCount - 2*getEndpointCountNoCache) == 2); } TEST_F(SignalingApiFunctionalityTest, fileCachingUpdateCache) @@ -3523,9 +3485,7 @@ TEST_F(SignalingApiFunctionalityTest, fileCachingUpdateFullMultiChannelCache) TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -3711,9 +3671,7 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer) TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_SlowClockSkew) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; @@ -3903,9 +3861,7 @@ TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_SlowClockSkew) TEST_F(SignalingApiFunctionalityTest, receivingIceConfigOffer_FastClockSkew) { - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); ChannelInfo channelInfo; SignalingClientCallbacks signalingClientCallbacks; diff --git a/tst/SignalingApiTest.cpp b/tst/SignalingApiTest.cpp index 6cab41140a..29652b8544 100644 --- a/tst/SignalingApiTest.cpp +++ b/tst/SignalingApiTest.cpp @@ -89,14 +89,22 @@ TEST_F(SignalingApiTest, signalingSendMessageSyncFileCredsProvider) PAwsCredentialProvider pAwsCredentialProvider = NULL; CHAR fileContent[10000]; UINT32 length = ARRAY_SIZE(fileContent); + CHAR futureTime[] = "2200-06-05T09:39:36Z"; - if (!mAccessKeyIdSet) { - return; - } - // Store the credentials in a file under the current dir - length = SNPRINTF(fileContent, length, "CREDENTIALS %s %s", mAccessKey, mSecretKey); - ASSERT_GT(ARRAY_SIZE(fileContent), length); + ASSERT_EQ(TRUE, mAccessKeyIdSet); + + if (mSessionToken == NULL) { + // Store the credentials in a file under the current dir + length = SNPRINTF(fileContent, length, "CREDENTIALS %s %s", mAccessKey, mSecretKey); + ASSERT_GT(ARRAY_SIZE(fileContent), length); + } else { + // test Temp Creds + // "CREDENTIALS accessKey expiration secretKey sessionToken" + length = SNPRINTF(fileContent, length, "CREDENTIALS %s %s %s %s", mAccessKey, futureTime, mSecretKey, mSessionToken); + ASSERT_GT(ARRAY_SIZE(fileContent), length); + } + ASSERT_EQ(STATUS_SUCCESS, writeFile(TEST_FILE_CREDENTIALS_FILE_PATH, FALSE, FALSE, (PBYTE) fileContent, length)); // Create file creds provider from the file @@ -280,9 +288,7 @@ TEST_F(SignalingApiTest, signalingClientGetMetrics) EXPECT_NE(STATUS_SUCCESS, signalingClientGetMetrics(INVALID_SIGNALING_CLIENT_HANDLE_VALUE, NULL)); EXPECT_NE(STATUS_SUCCESS, signalingClientGetMetrics(mSignalingClientHandle, NULL)); - if (!mAccessKeyIdSet) { - return; - } + ASSERT_EQ(TRUE, mAccessKeyIdSet); initializeSignalingClient(); // Valid call diff --git a/tst/suppressions/TSAN.supp b/tst/suppressions/TSAN.supp index 636d016122..0c1179bfbd 100644 --- a/tst/suppressions/TSAN.supp +++ b/tst/suppressions/TSAN.supp @@ -176,4 +176,4 @@ deadlock:com::amazonaws::kinesis::video::webrtcclient::DtlsFunctionalityTest::cr # instead of flagging each individual instance of the test. deadlock:lwsListenerHandler deadlock:connectSignalingChannelLws -race:lwsListenerHandler +race:lwsListenerHandler \ No newline at end of file From 377f78b722434d1821724ead0e9a1e3be785aa9c Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Thu, 24 Aug 2023 11:21:08 -0700 Subject: [PATCH 101/102] Update version string --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c26c82bd4..8cda623be5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ include(CheckIncludeFiles) include(CheckFunctionExists) # The version MUST be updated before every release -project(KinesisVideoWebRTCClient VERSION 1.7.3 LANGUAGES C) +project(KinesisVideoWebRTCClient VERSION 1.7.4 LANGUAGES C) # User Flags option(ADD_MUCLIBC "Add -muclibc c flag" OFF) From 7a734985109e679de439687159ccd4b339daa629 Mon Sep 17 00:00:00 2001 From: Divya Sampath Kumar Date: Fri, 25 Aug 2023 14:00:47 -0700 Subject: [PATCH 102/102] Release branch update and readme update (#1785) --- CMake/Dependencies/libkvsCommonLws-CMakeLists.txt | 2 +- CMakeLists.txt | 2 +- README.md | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt index 51cf12ba3e..b68c3c6384 100644 --- a/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt +++ b/CMake/Dependencies/libkvsCommonLws-CMakeLists.txt @@ -6,7 +6,7 @@ include(ExternalProject) ExternalProject_Add(libkvsCommonLws-download GIT_REPOSITORY https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git - GIT_TAG ab3b6331594dfbd0a59686dfb8dc4938bc86da1a + GIT_TAG 7d1b76f53680c1e23afb6f35f0cca97ccdb35e3f PREFIX ${CMAKE_CURRENT_BINARY_DIR}/build CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPEN_SRC_INSTALL_PREFIX} diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c26c82bd4..f466a1dab9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ include(CheckIncludeFiles) include(CheckFunctionExists) # The version MUST be updated before every release -project(KinesisVideoWebRTCClient VERSION 1.7.3 LANGUAGES C) +project(KinesisVideoWebRTCClient VERSION 1.8.0 LANGUAGES C) # User Flags option(ADD_MUCLIBC "Add -muclibc c flag" OFF) diff --git a/README.md b/README.md index 2677a3271b..a3f527b8a1 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,6 @@

      Pure C WebRTC Client for Amazon Kinesis Video Streams

      -

      - Coverage Status -

      -

      Key FeaturesBuild • @@ -20,6 +16,9 @@ License

      +## New feature announcements +Please refer to the release notes in [Releases](https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c/releases) page + ## Key Features * Audio/Video Support - VP8 @@ -80,7 +79,7 @@ These would be applicable if the SDK is being linked with system dependencies in #### Cross-Compilation -If you wish to cross-compile `CC` and `CXX` are respected when building the library and all its dependencies. You will also need to set `BUILD_OPENSSL_PLATFORM`, `BUILD_LIBSRTP_HOST_PLATFORM` and `BUILD_LIBSRTP_DESTINATION_PLATFORM`. See our [.travis.yml](.travis.yml) for an example of this. Every commit is cross compiled to ensure that it continues to work. +If you wish to cross-compile `CC` and `CXX` are respected when building the library and all its dependencies. You will also need to set `BUILD_OPENSSL_PLATFORM`, `BUILD_LIBSRTP_HOST_PLATFORM` and `BUILD_LIBSRTP_DESTINATION_PLATFORM`. See our codecov.io for an example of this. Every commit is cross compiled to ensure that it continues to work. #### Static Builds @@ -172,6 +171,7 @@ Set up the desired log level. The log levels and corresponding values currently 5. `LOG_LEVEL_ERROR` ---- 5 6. `LOG_LEVEL_FATAL` ---- 6 7. `LOG_LEVEL_SILENT` ---- 7 +8. `LOG_LEVEL_PROFILE` ---- 8 To set a log level, run the following command: ``` @@ -185,7 +185,7 @@ export AWS_KVS_LOG_LEVEL = 2 switches on DEBUG level logs while runnning the sam Note: The default log level is `LOG_LEVEL_WARN`. -Starting v1.7.x (**TO_BE_UPDATED**), by default, the SDK creates a log file that would have execution timing details of certain steps in connection establishment. It would be stored in the `build` directory as `kvsFileLogFilter.x`. In case you do not want to use defaults, you can modify certain parameters such as log file directory, log file size and file rotation index in the `createFileLoggerWithLevelFiltering` function in the samples. +Starting v1.8.0, by default, the SDK creates a log file that would have execution timing details of certain steps in connection establishment. It would be stored in the `build` directory as `kvsFileLogFilter.x`. In case you do not want to use defaults, you can modify certain parameters such as log file directory, log file size and file rotation index in the `createFileLoggerWithLevelFiltering` function in the samples. In addition to these logs, if you would like to have other level logs in a file as well, run: ```

    iuMLzEB(TE!T*CH@Nol*>hP@H4GKrR!JT*F zXTCiZA+nwqfi%CbIH17Tgp@gQ*NBK;vUOeNAQH{SFPrb?U=4J%XMc&|oWIKR3JOHv zEX(GBIWD*cEVwwC2;K0MV)pm|h$`K2>+!fh z6a=}4uh=dNQSJTvc+(b?s0@=I0(~f?0pbk*yAldFmU=)HkQb^soK5A7c#HtVxRJ75 hpvarS0(h4H^&46jPlzR9-vlxz-QDN(AMc(S$G|8`^=kkC literal 961 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 z zMMwQI`@+NkJXaD}r-~w3u^C{Xs;S&qk#_4qyekI8;k$|0YLy2LTLbM@CAIZ5CPK#AOT`6l#`^T6pjE2G|Fd) zg*B~NIV5pGzWqRc42US=U<0*!>vudoUSBxWXlhug9AH$_6&f>ST6G}9;Cu{>@(My9 z@c^rJ)0^`qZiS!SgYfYn4!&SFI0GNSfjS`4dp!HsUn%%y;OIA2%*u+F<*QD+Wsr!^Q;nGCb}XX=|;!xevA>o NGLwjYthCL_OT6E5_0lx@Nfl@SO8lr03rf`EQl3k?48HJ08ELE(1|;{ zBJcoUJ%xAjTS=_ZLA3w8E(1U|RYHgtDFIuc^u~77yt+g zfB=AQVUPl$E1$qNIN)fROLlPu=_E5j&Y2F%2`q!{(`1}+!^ z%nrB(0}Y7K_hM|BRtUrT(G58ZoX+HM!_Dkr^>D(F1|ks=3}8^cV@BWbFr<$R{`22S zfkpz+=N6_Fq^g&gE zzvYYPG&AlDOB#Mnnm?!n0Q^XwfKr$1^;_a15-5dP?;2Mm56=?X;OG)^+}>u!#_06^onfm-ql4a?YApw9jwT_9T)W;5$Yyb@}yr52F=V aU_ahOvZw0LzMpa42?6V6nnC?`7;u!_PObU? literal 843 zcmV-R1GM}A0003AFaQ7nL7HG1yag{oVUw)rS}&O`;i*6XKzLOp z0Axb3=DR`!9{^wsv94j)ngoNCJ0<7pfsL==5D@_1!cjMu(dj`i{onzD(B7s3C{$UDo6X_zB^U#;7;U^y5oY&{C)^nN&qYv0Aq%Na6%}oqY4|I zFa}TnP~N7jBpVjxfgvmbF^X99{9zz239R3wDVZ;z03ZRrPyxVXkB`YB9Rt2*h(H41 z06_2ZAOr&lv9+GG><$TV=<$R@j2YTZb1;2zu01)^ms=&#W`o5vWFzP z>39q>Fg%*$L=?9-SW->TnGnk8BQY;Zn4JND0SZvXLi!m(yiv+300am*VjgKzCDV9O z0<|bO0Kj1jji)zEb{%gpMj-J1@Bx7gXm9K&!-___+BWXLAOIjuEC2-?5hJ|t1P2yK z(I&;)lnc?dcPBRR7Z-qNMUp;s1bvLOuy|^o7)~U>4tgt-G9Cy>WhwnmpTHAz0003& z0B$Cj2Co2kFaQ7nK>#_4rU9$K8;k$|0YLy2LTP|%@CADVz>@?Z0NEQfCdzdo9g8hI zFaH6=OMkFF1V1gIOJ#W zo)>{Mzla-%5-2PN%!DOBWVs@D{DNgxaCHJ25LEk?*3x-JAAtkEMTPjU`RV0SFT~ z@P~%JePT85!DXAxy4QbKK!N?{n%zD3_=?r$ih)SWA>`jMrQ&T5X&wZUM=Jm7y#hyL zS^e6p2;d!y&a#sKFaUV;^Rh$QXaBaFcv+GT`~%dm$?8={|Gfjr7_4|w4~_m+i8sGb Vef1swcb@2gkZlyX)gc( diff --git a/samples/h264SampleFrames/frame-0883.h264 b/samples/h264SampleFrames/frame-0883.h264 index a25b39d3a13b667e0453e70a1fca055a955748cf..060a5d9170d302e3c122238e96cdcd3462a49324 100644 GIT binary patch literal 1260 zcmV@mn_i}mVZN5&i{f~o3ISe^z=?-_FlOfzfr2}vt@iTx zE+B>kl7o;&G6W*0G7y&Lc)&OuO2dkK!PAt@%DD7G1|zvJKIG85h9b2O@Bj_r00D)B z?3!Ki$@DJS_cYq)B>_E2!=DFeP|6VzyuaAQr^{0RTW~V9sI#(uX_<#Q_4? z!mez{!e2K40T1u+7y#!2uq7x;%L?mBNK)OL030!hJ$yn|A*`}&r+72CC6lr4PUc z;%+=kC9aC$A)I2D3&L^MsY6X0wcY><0B}h^^}|e!K(UR8`~^S*s3P!5OeRe|IyH_M z1dsu-u@Gtl%HN-Opa4z)4D!Gj?-~W)8Km=o7yzb*{el|P0F&j901o?w;unoX@V$9m z0}sFe5CIS+ZtKPd@mR7HqF>wq1|YlgDHpRmwGeCdzGTR86&$Xs(mz*+YJdDpZHRv{ zqmkUl%sLj14~9X4pcH5%BuYj?N=0M;0x%(UHGN4$n-By<@K}5R8#5B(kYm@#7`R{x zV88*9HGr_|&goQ<@5o?P$T-cf$x*n6wr|-MFKF{?Gsn2Rp1aiB-nq;~l+d zhMa}YXL2}U!wI&u*T47v{cHTmQERukci#_NRBu1R0TsZ4w0y*z;$gjtc>{+ScBvg* zZ|$A{Ore2X#0iIUtBf!aKF!s(Yk+F- z1$eMLOglip0$3v3FcpXv)_#}#1VBUtaL|aX0Kz;-+8+bCm5hf%4}dFV+`wS7us0DW zFVl|3?xW>k48WR%2>}EV6c`>9Z4TM40LTG{RpAi{0K2z%;+ zRRbSuz~T%8yY#;EiA97-9Tq`z1IL4~&jEK@w#V<30HT(|A&xoo17k%8|2(Dx4*2(y W&>4CUE0P&$#dMg%{=xIZA%vh&A{IUX literal 1010 zcmV78`m2hP{~4o=u81Od63+P!PV#!OD8Wd z01yhq0KiUct$uiRXid1x5LZeMVGXN9e&7H=!MI`wRqU`O`?_~9AOUSM>R1EQA4gGtNGv%hNMmVq3Tk_!}yYT zN>BoI<`3=@yVlb%5agY zjkhAc|NLARUJ!E*79eNUm3%2xutWVZ*iL|gwqm#700aWe3IG&Zxqs0cB?AJJi%d8> z0uq<5*HdSHpd=Yng`m<&Uf}Qt*i|rJ80o_6zxHqdHv$;f*ra4d@ z*T|7Rx|f2mZ~-?!0003&0B$Cr2Co2kFaQ7nK>#_4r~#|M8;k$| z0YLy2LTUhN@CA6VJWM*kPyt90d;+lo+{wL5{sJH(0sv@4RsdlhByA6Y+{(s7p$EVU zbji2iU>5599Bv(%c+OE*%u8V4#(5N$Zyx3zhwRV89!Ub^t)v{mvp_2;_K|aFOsN zA;1b5y6OQzQiQ;c4*H<&f%9M3!O-deKr$+ZD0TDjCMN^HWKd8K`c8O2qBr1W>Q3wE z#`kZFTV(26pT#|6!WA$7bOlqVPHKD#%+{UR|9$cjMky6(=mCua zI@31yZv&V?vRK0W62KpvCm0{+Q#etCa7*}V!bXrkfGhld?V)wAGY{WL0ji`Ty9u`f g`vAOPH~4$vj4kgA=E1K3V#`xwEMfQzJn*PtC@dhoFaQ7m diff --git a/samples/h264SampleFrames/frame-0884.h264 b/samples/h264SampleFrames/frame-0884.h264 index 1ad91cabd69e985ee46d82057327452d3ea9a876..6df59a65dd8e21c4b29f0bdce250a2786d19d4de 100644 GIT binary patch literal 1486 zcmV;<1u^;n0003AFaQ7nL7M;?yahKwV%OC4olRPih!iJ)1A-s(m9=vJA&viIWPX4k zEbh02s`H7@=3HF@%!M1Ichb zrxq#+f9}GBOYI?T9slRwb-4l$v~g#v-e3R-7=QqSAOHwPfCI^#AOit?f~cs0uoA4W z1&O=>Ht`gJQ8;Ued$~IR0RU9s03b+E3!pa`*{}UCii(+*Gv3pz1iS#AFHQ0--|&1v zN=E zFWj^M0s#+n0C7EomaqQeFd$^+(6z`snX=#h^(_JqQ>494mDGLpC?qf8Fjxpd7?3EB z@B{#WpiDlP=l}?E1ONv;tT3W)LXH(}uls-i!CP%4$RNoXTdVtkj1A*ruzde$kORSR z6+ivN00IF-91UnbW5g!`VF&7G{_`eb0YVJ&cok?wrKf-ZARGv70Lvg6E5@VifT&FY zcs&fz7FvLTbEN17D<9sM!{I=32mv651b|og1^{DIAqe;)x>A={_+@uFTz2|NTUNap zh@qr*aFkeaZ{LI909c?n1S;6~&P+87MnDMP2l~5A!rqje@M~&?de72kSYQB=n2gFR zbwnwxQS81b5umsz2BCoX%KtP#Ko1d+WH}U~Qt$WLK*2eAf>T?Y?yvo#Ko}1=Y(PK)Kqu7N0&*xb0vA%( z)b#HJK&Vk*0E1u{2bH&M2{ zTrn6zr^6KGy+jfKBfw;>AVJVrfJXB-Fad-nD-;a635-*g@JI*+iotykl9~}{F&)Q^ zZU6xQMFvKodtNi6!2bmrxvb`Hp8&uGQbleDEq!@fM zasUh|b6TL(wg2~pL4u}((aYB_@0V0C=CMecA()5zf(L!kLCO;my)w$L8mgx}0096X zFh!9AVV0|ZUgjkDWluYCusn!p!9Sd{m$} z!jZB(2!w+LynfV?^M{C%#g7M_FaBa9AODK*00IH1*Z@g|z5{6wIsdxzY;V-6Qk~*p z2@Ze&AWH(Sa1{*L+wqs01K z{^0zy0S>?b00BV&ZYID6uK;*30003&06B@U0jt0pi~s-uK>!s(YyfKT1$M9#0h12k z0O-iWW;IYm1*}j1{J-EKgn)z+EKq7MXb#u_jXUl2AuJS+3?CO||nL13%60G;>>zPHDdz`tk;x6O$kj_|?& z5p@mXLL1xs;^4VDoqx~XGp{}3zorhPVX)JIg`heD9hRXQ7*z>jLe&`GasUs-do0q| oPvns*%7|hQ;V20n;68i;yJN+D4$}j+`o8prf4v4UBc2!VoCs8nM*si- literal 1254 zcmVCsxOA%OBH2COpC6AR;qV$T zOsjXwm)3LJA364Iy8EmC3^)KF2m+FU(&G)qY@c&A032g6=8~h1VPn%-WcULB>EY?2 zltx!5AXjhi76F9>mlrFx50f3(C{W`B5g}qk?)bIw(1(g={V(D%z@{<*VNXs+86fbO z0OI2w2!<{Hy}kephz$T;oByx>7-bZkVhc$uIA#`yFPdn;%t+0eXNIwB&H4%35}ZrrYn&O= zfLR+X_NWP7gJC&^WGF#bN%_Ep2$OWI_{aaJ1H7J1IsN(g0LsL1RGVLzDgSnm00;mB zDmDk!HLkSzv8`ujhCy7>#NHWw+fu?50K{Z8Mu3s>8+uFZoB7c zC(yK>IPe$^afGK^1WBK;GLS`290*gMbM>IY=Vvh;bdpc76HEV;QI7xz1{jddC+AgD zk-zQz@ED$qPg>O8grPG}6M(AicFo|({KsSKD^LIQKOhGbC^D}?xP723tVO^9g&}Gs zDRp?JpGW_}*a2bFGyo2dp%6ajh!vrLmc-?QJ(SAGi-1NK8^iZVq_3> z+r!f;OpgFL00I~;aB7)66~vHg*@iS@fB=CaCS(8v3qS!tUj6S(L{3Gpjn>Wl01RhO zO$laNLsql8Y{TjfCpC&`;s3a1FzeFEztz<#;Q)q0U_c^U#C1Xs4uH>~0w4s0QQ-O_ z%I5+e{|EmT^F5EM@caNE7|a4QN!oNQP zWCTML77HI>1f}3V`)a~_%hU&3nTa0;!OsF0P~Lb$R{uD-<<7JFx6MVox{w$eq{knO zdx-O(M*%_UY7wD@h)W6|D9i3Z0`XNvmsd~!(uhj3r9w0QCjv)sA80^VS&JH;_4_b8 QWvlOOX8nNyhn^SkoO6FL8~^|S diff --git a/samples/h264SampleFrames/frame-0885.h264 b/samples/h264SampleFrames/frame-0885.h264 index 9a98442c0a93fe638b4563d913195f5c01d714f7..3fa1213e1f0ffb006a383c38b7696fa6917b6b89 100644 GIT binary patch literal 1162 zcmV;51awDJAej4bH(z z8NiZf$2B5`B?iyj8-R!UdO6kk&CCm*fD-`D0u(BpX3UX6Z2iChPy(Du6e~ z;NI>Z`zja!h>ZXK_Q(JcECdELcs0Y~M+N_RfXxs9hk!F%gZIEM2Y?uIo)n4)b|Oj| z8s0_<0Kyutsi+WoktOOxuA{fqz?8rEpd7deL;sO!CL29`2fubuBBK_iQ00aUh&;>{U2r?%ZlK=q#do)8(01yrU0RS9Q z;0zAjAhZ+$=o10x&wvHaKnelwl6yY|23wO#b|MgZnX-S|ec%8H1<(jc1!>BQ*|GXl zQFE2I4gdgv^h^Lkrq6%-0s;@~H@Ynyr@yoSh6=@z^Lx}sl=FB10RRIPSugIx8ZO`W z2n+#5Rt3i)&YLeXJ$gh4L~#TmhA@XHWq{w>7$`_K(QAGz`D~*-^>D8P#>Bq zs{8t5MdJ;4ksT2T3Fu zpOEp;J58p1#$kjG3$^oDsDh9F8h`^}f!}mca)iWhOtPoIN=W(n_y7U`Kwyg^g#}1t zON!o`9svBw01U2!4kjVZ_%TJqVtS4-XmMtUOaH<600IF3K`~1@G!eJtdX+?Cbh`gC zP*@$8yXp8m0*IUl9i;k|f+b-50MSlx$AFCeC>N9GECV_K0DyLKtOXUQ-S&X^1Q~}y zJoTm76bgNK!XU3&3Necp^&0O0K@p>FU-J1{;hkO^01Q_s;0X`)>{^Bdp{LjYW2G$w z5u7_=Y0)RJlYqB-0(mAcgZ?l8$N~5f$MC8_BMXSNJ)ezTRD2)!A>jZLLI5GagVrP@ znD>V@07I|<00BV&ZYIbEuK;*30003&06B@W0jt0pi~s-uK>!s(Y=CO;1$6-&B*UfQ zBMtNeT|}@m3mdBzAOwRJAOSXdj5cUi1F&j=DPq6f?*kbC11NQ^E4X8s004j(p-Jt( z?C1o5fpCC@XCV|EelhKN(%=|bH-0w{^VjjoG3DS#SI-N;n;}9WUoTkEbkHhYnMkU?N~5BBKM5WDV})K;0+KXT}c>lS(iE z3DDY8!tf^SP*_v|M@+ywrHi2L?{eX!x zXW?(o_hBd$_c?is;N&NiT1WjXvJ@gi2oM;b>K`3U0RQ@g_NXbp&6~{t4^66G)Zd^r cVwN1MgMVUJOVA{;L^O#`AKnaR8R35lKy}a6Gynhq literal 932 zcmV;V16%w60003AFaQ7nL7KoCyag{oVx+xFlk-PKLcqeME&`YMC*VUL9ykAh0t5vZ zZ|+cpAT1F}<32nv06@ST<%V3R8JT{Wx`LMg2e2bSO^X$!X*1pgJ5CgqOP58$+#+R5 z4Tpfv2m+7*LSG#X1ievsZD1jQlA|<368TR%5=(8f4F8-jlW-6U${MFPND{HKf6FAa%nT*r98 zJp*sD>R?(4;R|$>vJq0bX+M;r~;z= z07$iv{Kb3NxmW-Q00HLVq8l^-0RZ4~Bvr&=$cv)2tG>Xg?jRD3xEv6sANt#Xzz(5A zR8JGj!}G}VxG6=q@etICCubZFfrS{GS8Id#HUAOIPG zX;px!qrU(5gkg*+7(k>JV@N6B0YDRU0003&0B$C*2Co2kFaQ7nK>#_4tO2XQ8;k$| z0YLy2LTdnO@C9`65yDJ64#PA6Q`HrLh}yqcu>d3(u>b=jbMj5Q;aCj8st+?8hqLu~ z7;OcpcC9P8IGF$dfE+ji7@A)Kv!D_J1;Z!?&SEG!c+0i*Ed+zhcEjr7ER>^-o}=~R%OCkucq~Rvy;*3#*bXB$K1{vu`B*}b17ntn{0cKBPzyJiG9MHm!oh=_r z;-P6`LLp7S{w%GID?IQ-00$Pfr002n)BuQCEn6Yco8a&O3<;f9u_(l$Ctv^e@d4^k z0fGrycwNtxcOWDnX9#-C5Mi)C00tb%VXsIlWx~)rHEZAjs13sXi-r(aA}9I9@&FJ3 z7;NQ3BtWvboB)JO;1Ix7K4gh8hju?6?f~f(AVTVNm#NbFlos;=0L3o=1Rw_j1@EfF ziE9X)x~Gn3ptDU$J%M^u<^ek@U}~~;Kq-5 z02xRC!l_+OZkv;O8sGsSa7yupVBu(`b3gZlVGJ?K6!HxiQQ`mqAW9g1WB{SXFA36L zvB4{U@A$Ww?0r}90Tc!tDv8Bxv@b20z8S#q08HLvSN5y_W`-X#=#)&#-~;J^0Dugh z0{|2ix*gS%d$1f`!GS@4;Mmxv?Zf~C3sbK+-Z)GfbQrkz;1Pfjb)E^XX+bh^E)@Bm zKm!TR2D%%!{4f*dP(%iyLW-@Fb4}(By#XB~l*7c>00;z2pbi1!8N>2NI4tXr2q(j_M)bI~U;o9tXaNVJkfiMF^0n-l!(29SD|DTv) zhxLRgBjiLPG8n_N#+hU|C~`tpzrQg&6GsjlZ@|KmJU9E#eI^AM z3lQcHzG%jPh6P%*G)Tb$K%x7f2mT-sNk(pgcC>)%TvP)D!>Bz20YC^KeBr$u3fscn zNsWL1cmf0zNQS6^hKMa}Az;ItTK{e$GlD}7w!T)KnSa~tXvUVz?a%&j0*9-BL99x2 z`#fE11J*IjZgLJPK#_4v;nKY8;k$| z0YLy2LTvzQ@C9=L9WY7&kMj5ZU;$!x+D}i!Q+`k_wrdbRzvWthnh-3&_GF{RN16vz z%z(gFBo%xi{QOox1w()(Fh>1AqayqnP77-9x`ai=!5J0;SfL!Sl77_#U+f8efTp8p zPtGx;1@t(Dj?8Dz48WRSID?rWMI0F5i0wMYAz#q@wVI4vxw}4ezHIUI4S!1Hg+}#2H^Z!m%4ogi;cYvTIK**tZ6=7fbaM%!8B0xD1 z$eTf#VuUG!zVCd$%xu9D0W8Ghje`Pj!zhRt8}u9ZsBi;jOM#&Jpl!fXAfMt#=)-@9 OZc*yeyzukGJ{5piX<$wO literal 1376 zcmV-m1)ur=0003AFaQ7nL7Lziyag{oVGEmzyblpx(IBZvr!6jHku6} zKmZ^Ic1U0fUlhaez7HRM@CJYYz{RLPc$Ss&Cdc*_TK*hwO5RTtI8*Tz{+0@Mh3vZ4ZxrdhCon|N~36P z^4bOwDgR*R04faI2V!et{onuy3xcp9B}HvHok`7SWZ(>Li05}zI*1;Hk}I0W+~ zz9cw;@W7CIH~atr0T7@rq&rZmQJ7Rw16Pm;V2&Wd!B3MJR6yBR1QPXOu3nfGaCX?E z>qC)7Y{lS%-{1O-F-DL`U*~AO*$0R+h;y1ex!`S=O2&)+0Kh1?UW6FL%>XTsIBZkQf6JG>XTGoq;6tXg>gLKvO{Dfsq|ctqEd-53#l|6dJifW>dN3 zl1u;nrqc;XDjuy~m%zq2P8Sdt831vp{+;tsK)bG|gYW|iLRpwx0|l3Au@;^&Gn}x- zLW`(ZffN`3b!`KJEx4_3&VKP|0eh%bC+XYX79areh&1qmMw2x7ys%JpRPHoL=msjH z>&>L93jerqc?^Bw$q{YO`o>I9v*>XR-RyoV3f9S9+dx7P!zw$UW}0vAp_mM(5k1mF z|9}4g&oJ4Q3)cNR{1^gmfB*miK>%(hxCXBPcrX9}0YLyciLL>wz#EJJ00BV&6+&x( zYVZYf0T_%DfRAbc1-I22BpkN>)#A(#1+D2~$M@(u8tuZ{6WbPp zzZmOb0i;KG6$1#60ct}R)BeCn2mvq_7EmXI)DvPf;+_ksErI*k!|$*%bVK=yp-O%@ zJJFi8zW?d@;aC$(%m&GcL9IRuQrrI~!*Bo) z2nP_!y1;D6BnE__8is5BOW=+OjnGB`Sm7Ua7zBTu;lSa6zgVB3Fa;e>!2f$dYBV|4 ipqWLtezpzyO87 z3=bQ-9X4lJ!T}|be~djJ6dM{okg1O*04 znH+{m4`dX1DVosb9_GCO&Hxk=j%96|e2_y&ydfNLggEg;o;<-qzyKhVzyUBQHJHnC zBx)*L@BA4UlK{rw|HZt|W9qyys&D~$j7J@#7I|fj+5kX80tsM{b(6}Al#Fw%&=H#d z{7e8K00Aka0|UVnP;@0x4orXmK->TX6mlp41P(wu$AXTA00IKw03aKXvmcFN=UML(8pbh}lz;GlKEl)4vGEuQKmB0)JBtii36|rs{ zJTDVHaAD2tVfB6#AOjH)OolKhUooR^_!v@0hW~l*q`;#QY8=7rZ9pM_1&p=B0CA>S z4hkHQm9OsrK!S-7)etbz1+9cF;rJo>gsLzoz)LA^G$Jw}APhOE0v&(=00BV&ZYJ0U zuK;*30003&06B@a0jt0pi~s-uK>!s(ZGdX<1#s{Z(*+;^kQ!I$42^_%ESTT`TNF~` z!3dE`zxJbhkg*XT)>x4MB7_Vl0>tWe7bDc-FYugTY?Rc6*gVpuMc6!FcnS$h0C>$1 zPn6^_g8xGa?(zR0?P1zuP(Q!W^?_f_r-fimFMx;%3J8b|NH{G3N|4#p%g{PgU=Rh_ zU4kE-Pom7x7VqJL779g>Ku&4k1cUnh1c&O0T9G%KKhwhf6nI;}n0mz$`E-v&?En`D zCwFT~mtBSlf8h8fux!)B;kbKV|NTE&C#&CaK^it5%RJ=`^mmT{nL~CG5h8ZNO3E19 zHr?l^h2Tvu&dRv(v>FvsQ$w&m-r9nKsO9!JA~Dy$L-HRsaoPx4yRDi3^V-OkCzB); zkAL0EXE`-u%2Yvq7lZ&K0D>xF3p^Bo*@H*`32!hC2V`V_4Hl5rJui$JP=l!M-~;Xx ynOucOo0A}WiSv%vkS7O5IR0dbA78t`0OWR?7~J>gQ57k6-RtN0?VIp9;dokBysS(B literal 957 zcmV;u148@&0003AFaQ7nL7M;?yag{oVx+xFkr)z8cm#EPwE#c>mB8h`IN@(`2hx6D z1|ow&!QiYH1qK)Z8(VQG&7yn+4p3q@o-9qvAj^O50G@|^YX>}K0{JEX?hd#B2p%0& z00IMG83dXs(C-)ffCDf999WljCp-^hA)iRuyI2KZEj%cN)@QRR(sF_1~#To z05naB9U&Qo2f+zSMGu=m$Q)Gr&ni~!vgcxLA;~l^U!Gb9~>@IjMoT(NKj=&HAs)%4eg`(d5;YtV)d!>JJ z0fZ8#%fuUqj+4p)1m5K1?EElFpi3hvn@+@}NKy3d<|qK^{zA?WJ3T8l@;Cql2!RM4 z(<0zkQ!8;u82}Lld4iNgnLo67!lc^pVHCk`hFMTGL{D^iB}woD1TmpMkb=b`CVXp0 zQwNZMQ1ZF}mvPu^CKW+|T$SJ;bH^BYaW=mikSJ;p`%>s!B)6?jQY|J+TM*t@10003&0B$D02Co2kFaQ7nK>#_4umP*U z8;k$|0YLy2LTmtP@C9&R`~ZB_bG% z|Ji_y5HOqvNNFvDqAN>vY5%Z>YW`jXCSc(4@QBjHFatst54QnHECBOz6XkXz3;i`W z=l}8=&)Cuf^`8|3kBicHUIfzk2!N2lh=A1&3qTBFLul#A1FD+2&}8Kuq3EQ^N2j@!@D1WyI168(IJD1+vsMwpaiE zfWEK1`{ni$zqR7mbN5@r%9hArZXk(qF?2}&x3v8?8;kP5^4tJo07D{Ru_ll@e>@z3 z0E=S*z+}SX;7qL`lp_2u{k0v0j_&va$#k>Zlbipl#2#2NY`dnK@vvnq{ZIxhedMPS fm)F!70NOblFeVCqmXS)8T+aXVTfe9po)_@6;vJYZ diff --git a/samples/h264SampleFrames/frame-0888.h264 b/samples/h264SampleFrames/frame-0888.h264 index 54cc169af120b2837628fc4fe6290bb7c88b53c0..209e233cb1f7835031b2ef57ecdd9060a9896c27 100644 GIT binary patch literal 1230 zcmV;<1Tp&n0003AFaQ7nL7RXYyahKwV%OC4olQz#`UrrC72p8lgg_W9f0%d`A~dY5 zZ~!)w8fEO&O5T7l;}C1^`g$8Z>H*rho?P9ljN?D2@Og{`uk}TK?cD02{&p0}Bb&B)j8- z$X*O~5+PJbKjsazOoLj006;JnnP3Ks?1^{<#Gp2B`;c&>0otT-a1H=vEOg+*&;%VI zQ5>Mmz%kem8bCR3+yVn00MX@)Z>{Dhp>QGu@BRQ&0099ofGcP+plrY|h)|PHK!j2D zVC)srPOz5Vrl3LUbeE~px{lvcf>(opKr3bd0s(AL01yNQh79H)Jt%X)j8G6QZ7SBx zj3x7s01*EF0e}u*D*{r4tZ^>2lm!jhKmh|7h&{YQ)*-E~Y^MV|f?0k{j(YWrpY+H8 z6&M&#NUA_^d%=xxAwLDt9tAI`PK9SVlA_Ec?f|A>{{RpeC#2!FHy2Hw6K0e@05=nH z;#nzlR|yQ`6*yiKinU4_Se>fy08j&mk?-6z$kYoN*q6Xm06GU=2q|RAr>4g-!vK;1 zHZ~#+KzUp9?-T$DzyY3E1D)eQyW>=ya037w(BH62m|zlosn7w>aJ)kCsGb+DE1+Tc z00ICa1g+h8(B5koLX1oMfB?i7enld-XO@x;ez(k-4kDwK)p|ztd#S(vUzw4F>SLo0 zg` zkE^i;ecAPpTrd!DN>8|fJ_RK)CNuuv02l&{B@wUittj}KcOZfn2jdCOGSFFG;XX+} zLm;ytC^gx8zWwvo)f><7Kq9yhR!*3cnnX9TPatsP1Zt7h*hg*f0%ZgRb5JH9&aN=P zMEg7(vb&9|ZM)3B; zhIPL?AuogfFaxLq;1Q>6u7gI?6J4_(r*Tr7;QwC#@4_$u5CR7cDjng`H)UwlX@d>` zhhP8z0YLz6Cg29I0C+F}00BV&If=LdtH2wK0003&02M-R0BZ0BZvhw(2!*%+{i;S_ zkh`jY-~!0{$u29H|I+|0I^IVCekMwj1BDmONpw*!fB#fDd;~B+1fW4lAI3&942fKc zz+eo3k;Ygwuq%17LhFophj8o0F`fA1*MC4JE?91y{D%KsKfnROvgXg&s9NBk)57p3 zm&hlKQ6XrlV=G~UcfbN_AI2S3liW5QCfZP-GNKMVw^aPgOAO`{;`z#v0p@V;NE zfK8)>2Zk-Z!@r*bQW+Mb1tom@`~To?=W&M=!JEC{=I{Uz2*7QCN^Sf1fj*qT)PT0| z7(MgnhG0!ErK*n$d696|2R)-IkkRw{Z_B&_z5#ktW6rh;({E?Dx&6!d9VBOqfm)a0 z3M(u9hZae>`B)Lz4s-ASXJP9-EAVa%qZaS;hHaUULOAJwGC+n)4}kU@DVXd4eGc!k sibM3^0Y*xHq|N;8R4>Yfd}>dT&D1A{uv8=}D&|w?|EmlIyXS@Bcn16$pa1{> literal 1074 zcmV-21kL*Z0003AFaQ7nL7N~Nyag{oV6arwv z889Fj7V%MSrU1ye0096%4)AJxn@<=ZAh?vi z^CKCGgRpTl^~W0lKml>Y1yPWt*gb zGB`uAm>!si&3LTB{sFI$| z;kVKt{4vplN=tQ%!iFtodH!#$lS4y{oaUp16M$mOV3Dg1Hzcl?Ncrj58;U|_1`7>v(c8^} z3sgUp02W+k04M;;Nx;BS_2q`jE*Aqh0IFoH(4_gtfB+x{7M=nfHt~U7)mIgL@&+gX zF)J1bml}hgBO*ut+5iLm0RSKfF`E)!&BP23?nD9@-~tW|bkOir5!8XK0Gpry00BV& zZYIbEuK;*30003&06B@W0jt0pi~s-uK>!s(Y=CO;1#bZu5D1010KKZyFtK&$5&i@H zcLkC4lH#eK?qIUN;W$@L%98^>)ufYASC5|h9KHe|AOcVzN{``1H!>5v?1&&6gF?#y zWHuG1M+*1D3lZcO=WYA*yi@uCadN>cI-bQ!-`o5E5F0*h@ksgWhMpIJG`>UA6=Fib z6K}hGuQRl5&JM&a!4Ho-0FO}i$BA|gl4eRDzUZiYkAVZHG8-100t6mK`icQIju0QZ zdi8(f;O)QxfbWNkO?vQtnTgygAKzDm5O4qx48SJPJ#&8j;4h}819JoEAQ%+*IpKH{ zYCJ8#AixcXS<~Ot)4k4*fWQ5)4}JnPQ(b{RL3u9l|2LRo%_5_OiaTsCD z0096H01yrU0RYe#OyEE{APVtqFRbJQLGoe_0HjQ4>C?N0D#2m(F;r>+EAul(Fb2oX87C080msW1Nl3#k%bq)Cnc@Zs>E00zmM zL`cS{i!?+*SM-FzC;&cUfCmOS%V?3n01zjwZu0;(I1n($`-%&T#gENgil~4;GlecF zf`)zKH;@28rPXUl;)(EqK1S^{7N^;8icNS78InjEOnTUKTNv8G2f{*#oBrhaBp#y! z-~-{n=5-Mn&K%_jr01yRS2n?Twtd%b!D@}TM z0097A0TiI5$kH^KF-dz60T&g3Da5!32-yE+AyAnB9fB#t z7UAnCw4kg&n z1-4ttBXd455l#qT7f)YDNQyBe@WMG|mLN%17op|TjeUoB{23e0WJ5!YEgOhH1?ig} zwa9ma{~0tu03ZSYWA8kGrPwQl5D|lR7(q^T_&=G8B5X4rE93|`UH27&ND|vWnoP01sshYu-~+aQp}02zCGf0YLz6 zCg=vQ0C+F}00BV&If=RftH2wK0003&02M-RfNJmsZ2=$@2!SX!C#5rw9P12D0CR(5Om(n%KL00IFX`tZitkSRRCNCgD&uzGp5;s5gRLC@^4 zvyOg$24U{K@AiwWWp{tI{wD z-`{ocoCBs6kKY?HqZ^FyZr`1$ECE_RCU16v+Z0*jL%(&V#K%Y^8Gp!;jsp87IYU@S={s}RFK|M(p6tTBH}RF41v literal 1527 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 MhGsto51u9&fDv2(82|tP literal 989 zcmV<310wtY0003AFaQ7nL7QM2yag{oV+$L>H4Tpfv2m+7*K`)Dq z1ifK+ZCDV%NpZR$TPf#aOYD2h!#`7p^xz;BR5ed-kR^j<1pWX}>Ivo1UdF#$uIb8$zGIVB13fD^Il${vW|040e3_rT9U1Ob2;*aR}oFNMI-m_2R) zR`8HOHm=YXwT1w$9Wu2;&?j?Dak~dE>Ujoo0fgr(@ASvJhgcqjeNzAcxUH2Zvcto+KNd=fAs(8*EevSYF1i%0w zQMp_IFdq$!9{>Ud4ylXOKtrj_T1En6%xxfn0WrSDFpDQM%kS#|sGtCK;b3B*0cdqs zcis#)ifBnR6a~kU-Lv{|J#YXJ1$Tf4FqMEgUP6(l1@HZUa2uJYoZzu)Sl_r90Z_mo z$o`kwU5Kf4kN)7L7QlTFhi;*oQRV@FGJ=iYQe5l|77?ewbpe=h!~hT21M*Zhq;S>% z4L}S70Ha#BBkb%@z24vg0Ru20_R6K*Pm0K2|BFBqbN~PWK>%(h*aoivcrX9}0YLyc ziM9c&z#EJJ00BV&6+&%*YVZYUuo3`(#DG8gfct#|q&%E;UIIukI3)yIPS62!a$nYe z|C)hKCd*$x{jdjrCV4*o22g#n1S@=ahv4_Eiuvr;egEfURZ6S=xS4y^pZ|6q0zfb# zC7=`nWpTQMN_4(THvbAK1!rm)>lvB(+1##)D zhyxG%>EU=2ABq_Pd;odSG4^ywfP02LB>+{D*q6z^_b8e1CVL4lBM-bZku3{r=qlCk z^rv3^;PAuy;IdeY{Z=kICKJ*W$|Nj4=9y{!Hz27+kN6~hm!A4-P(R!T2sh!6{FwM` zh)g#j1g$Om6VLSh|MAamo)>{Mzqwu@Eite@U^@ODfm}M-d?QMP}euWZBs~7wKb7lMp*svk3 L)%6spr13D!=@PGi diff --git a/samples/h264SampleFrames/frame-0891.h264 b/samples/h264SampleFrames/frame-0891.h264 index c1954d1e3a532979feb327151a64a76f6ae43e88..aa7fe580abf0fd189dc51e783e979655ac3a28a8 100644 GIT binary patch literal 1666 zcmV-|27UPe0003AFaQ7nL7U(jyahKwV^`Faol96wEC3Jy1Ob2?Jh5WM%a<-#v0~-R zfByg;g8%^l<}3gW0wM8f+(q?zZurQUo?97!25tW<=OC0qz%<9Vk>cPKri2i+ zzx$pp^;iZfbWsU^?tuhU-5lbT2#^18!*mV;?`Xix!N%s*k$?bz005&WPnS{COTqlU z$`K4RkWkJ7h!H%0Y3SScps)T9fC}m9A1^=N0Ko1^M)<4~e+X$?7wCU}_KyP4Qu42u zj_SaPwzmKP5P&J6g_}NFK9|Kp(!_*Da6gMzjw(CgkRClvN$)TkfDsKPt8_Xu{2l-S zfjhHSB^i_;>;L}VAU(@@hp#Mi~wOoK=2v~+G4FPclzoMc|nO|VaBUu6qTD;GM;+A zg7(oNLrfazxBR?#0rk`ZyTA$p0IO(Lg^uCn=`xs71&c78y*`)Y*c2v=8S`Pe-OhgE zttm);0097AJOL~FxrjU#W+gX-{RfB~t_Xh2iA@rx|Mr4eSS$#taesZZ-KX$~02&|; zAn>d|vRw09n?w_I5e|3+FBcI*L^o(Bys*NlzyXQs9GHrE=Kg>LnSpEn!H43A1Vchd z5N4qSDEElp@epUZ4SYimE3?rSk~9~eiGcVW_Je|g-^01VHV#_A06@3^1Q51t00apD zcu4=i02-QL0t`GY0*4EO3S62RiU`xVKM?r|Q55?O?Q`-Xr62DlhrQ`#08BX|G;0DyGJ?7wQlvCd>u^79RlxVUfM|%FGB4eOL_W00IEjijXLb#P7HSH)y+&?7BvJ zR}g-{3|~sa9h^5|DSSr`!cGUf*gce0_ZR@!2f)oYgwPx)vDWbA@ha}bQ@lSo0>Cre zD$6DsC0_s!f^cT3CT(#VbLqfs+?{)tYm6?%#ydX3EA;N9DcJw^t+5fC5-<$s7E}8t z{k`@yW?v>QfAfGCdZ-93Nk*MlN~u6{A;?a46sw@ci;$i0003&0B$Du2Co2kFaQ7n zK>#_4z5%Pi8;k$|0YLy2LT`X-@C3;LAP5D8I0M_R%K(#pKq|mpu+#%E0q`4IuoD1) zUoik4;05qlZKxw(m`YJb+sllAubaS}fJ_B|NCJUg06R|Rns@(w4DeL=Eg;{Zn3wko z)7}RLKKndO04*srHCDNT{?t&kug+0@%0RTb*tCDf=w%-#}568W)gC z_kkFZxKxKy0+Ifgz(@uFOKHUa9~!hDUH%6)K443`L$B`fxB@Itr%hP9Z!^NMCKvGw zghd4*XYc_9Bm={B)fqr^*b32i++b%Bp&DPak5a?{tdl@L)^-RSt9+%nbKh7NHDtGP zb$=RP+w))o%lT!J_z`8&SaMS}B0KN>aU-mZQB4HE(*a(>h1Gtwz MqbQXi`aCNQK>TCPiU0rr literal 1333 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 Q;fI0=E_hZ1;UCY#ka@NOrT_o{ delta 991 zcmV<510ei~3WNxM000012`~Tv0YRIf8oUKBL1QGnOp|j2_#%67p8`lga7n@E)FP!9j!o2G(s7nEp?|K&1vFS?a{vvJJQX z-~{v)@vI#2lnmsT|F}Bf03djDKmZ60fMgSBr$elN?*I&czyNWgQ1@a}!1gj6)snDy zL>mPZFhbVm4wS&oqWwl{06;@%@B_rxk>5OM$k29N{EmPO2CTu_xA2RlO=AX-7$icfhAo(ktFMT1kY0ss}1z<&%o{r?J3LC3mJ z_aGQSDqTE5xtXXrKtQX!oPCdm30MhaWmAdRlZgs{J{`Pbzz^xADPrVGNxA@F~Ls25{g-$gBPK2e7<8p(tqRqG< z01z@iBw6q{;255ay;lK(R)K_r>1*^zx@H>z8-NpZ0003&0B$De2Co2kFaQ7nK>#_4 zx&f=e8;k$|0YLy2LT-SQO#?Q6MRn)v;2J?iv{~~H72uZ8#U<^73I#0|JeHaj00AFG z1a!rGzwisA&HHrn00fYif{>3^)LJ%i&2~C}FQW1n#|N0^&8jr-k56 zFW@Ev*a=|3ps)zPG#=LO{K&L_)&SU_W_WmjFxj`wy_Y=z0!9$DKEwKdm>mYE#srr6j@ghZu7X&3tDF~qiAJ5$%fDP1xNH@4M_pSgK*-^0c(iDg{{`a=tX4$hAGX??=C52X3Lq$4m N!|Xi#3Bo_0hahQ0r27B> diff --git a/samples/h264SampleFrames/frame-0893.h264 b/samples/h264SampleFrames/frame-0893.h264 index bbb847dbc4e38c85008f24a8a69892d3947bafae..6d71088fbea02c300e5c4c448e96eb6240192436 100644 GIT binary patch literal 1581 zcmV+|2GaQe0003AFaQ7nL7E^Myag99t{IA-i4}*@E~$6{EK|T9`kMHjz-HNZ^H?)P zhrd!)$Xt9ZRfCU&$*m8M6=5~H{Z;gA6VA)n#! zbeQ(e$-n^BCN$2ZC2>*c0Kr9aOo;b7=GA|S&j_oLEN}rp7?l18&bWpurR10tH|mSY zyI2d<3_%#k9a~hh&F~lkqccDV6v}vH6o1l5uq2?3a&(ym)8B3cfB=9gNB{x=!NL5f zr3+vIif}zJ0vJ~sF_g;{LBT(iru)PI0t1i*Ky(3eoxCv^(I6YO06$a!1PGeWa0M4= zFYhQc5~cGWQ{2!32UrR#l%1FZ-+}Ok0QJ9c1Op2ONtrpu(riTLU~�{o-H%AT|gA zA4%2$bD&QU(I&2df;e4RDWiT^i;8XFl0E=S6u=zH_UJWL~6CgscXeA}0<-HNYQ_#=(INL5k=LI8`bRffOpu z^G**QpZsLOfx8GiiyxpXfdSYs#^|g*OB13=xfN&NGAJ9}OQggsYI0OW>rO9;oK}s(`07Yw$z!(51 zp(>q99lON3@?so2ZAgO>DR2M;0FYq{6Z|Q@wD(;RQQih}f@!Nh;4qeN5)&W*Tp$!* zNv>FMd%=Xd7`gz8VL@b~ltwoYXa!Iaf?z@!@BlyopW!hlftpr;U!X73kX{LX0ALh_ z7z-IqReki^U*W-FI0LnaCqN6`_uc>ifCB&y3tiG9Lxg;A_#FRy@DNZWpw&4?X?Y;d zsS?+pWLN<`pabD!KLM@A%6wP=A^-q@cYp!aU^NKBo3H@y_W%q4IGYUeV-{Wx7i*Cu ze`vfBKmb6k?onU>AXWef+6mv_|G)qc6#yVMk0=-&S@$vx)hWO) z8u=$6xG+bBx8fuUvZRF%qAIRmsV|d0n>EE_V1Zg#!0Y_cv3liS&B>R<$^e9}N)qG5 zKQHi4MKfv7CH5as?1R2BqAe8$BwTxar&Q{15a z004kf3`VIj@P( zL56nlf~Y*K05^ak$N&HVK>%(hhz73!crX9}0YLyciJ}3kz#EJJ00BV&6+&o$YVZWY z@DjkFP)mUs+&_>32yckm{d$0Z>(%ZN_uB!ZCQkVm-@klco4`u~ff#oz6iU75Prevh zR2*$o%En#;yabRS2t!Ub0G2N@dL;kz;9JvSs?#I;|IfhB0%czW3sC1pDd`6eGr&|G zr;)r-O0<9ZnqH6}Z>;c~38nB7z><)}h6Nxa3dWr2!1xtisX|L*{~y=<`ZF1l&I2Ge zPVRg2@i2alvBB>LJtWT^ZomBSuf+tD%okV!f@)6u4w=;TM_!~r35s?7;tU0egdcWA zX3@uK|NH-UNe| zP!x%#obbW@OXd;yK%LdU$M3R4mc0S)V6C+PeNEi&@z^HW|NIfyLx5BbD(X$Qg}?70 f2wQ}s%Gln!g<7QlvlLPZ8L$qhurmkeg>W{&QjVOq literal 1092 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 diff --git a/samples/h264SampleFrames/frame-0895.h264 b/samples/h264SampleFrames/frame-0895.h264 index 48830d4d35b3f360c77ad30bcd07d28c00442ad3..e217fbb8c6a044e027a0dcb1bbf196c317c24a97 100644 GIT binary patch literal 1252 zcmVnbb8yy0K|?5HVs)^2f7n&ZKo~{(I`>kC34Y)A1UN10!01vPYr`|)OVKfgR~TX( zBgrMe!+$ai9iN1U7CI+#Wr<)LU@r7aef+=)Wne!vblFKAFxgZvNkavER7oQ8z&`*6 z{ljKlx}1b_e_L5kP_C>%N9OyWj|*I%)TH=}wWr~DQQ^AZ53K+Y8fP@?NCj{?758H^OR zs6$91O*V=n-~~aI;kgmcOxMe2_job@0DuA9!N8cG7Fd?gM#_4rU9$K8;k$|0YLy2 zLTP|%@B|+LI1BStN1V%9so?pUFNdf^*0gP)B-Y@l|*bu0o zc;zF9NGWMR8>6)E9{lDx;aC$(`92T|04tpaMehR_m(uInp#xjj+Z2X-y)wM!AMEeJ zXV(#Gq-Xy+18M8^UH`BYuAQcz@1z{^sZIX? literal 984 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 diff --git a/samples/h264SampleFrames/frame-0897.h264 b/samples/h264SampleFrames/frame-0897.h264 index adf31612e5302e9f456bad79f3f30397cdb02516..0128225171dc610b227c769f0590ae920a4a09ea 100644 GIT binary patch delta 1039 zcmV+q1n~Q@2%`vp000012`~Tv0YRFe8oUK>K|@l!5QCiGiL*4oKY#)N0Du?+3Pb7H zvHr<}OaxMk_Fw=A1psryC4dP80|R<6!CO_&5vR?P3;-Bjt9@=j0ssL3f{EbFpdvA= z1rujz00IDmo;?|?6q^}PuOj>Rj0OM#0fiB&8V=!(a2^4F0FQ4M=5vUKto3+dkmXLl z^)&(yQY5`dmDGLpFfWj?s&w-Kq){LNW|Rg|;3e^6O$kg$J^%tSB9yFV%2#H800Dq~ z1R|WM*A-}ifSSJrKr{hzx>!Kjs1D%=AOH{z009Bu9eyewOKRB(f`Y1s0C)g!JP*wR z1wu@`z!w02;|7n;noJoLiQ?GaWSNP+QSNd6Kr?^?gHy~gu@q^Fxck8jK&F!MBMK4} z=|aE*z5oP3C?4!(*c1?liP`_b|HRufW*WPwV;R5&<0wJ}T!TcKXx*R$0vH@)1_5`3 zmK-x5>u00|_3eMbGyo|8DYgNC@MSa~4AyXTsDJ=}K@0Q)hzEa0*`#)1k2uF@pZ^0tOslrzoN4iZzWTuMCa%^8~IC2s|9xTm(r>35i2vp}-LA z0003&0B$Cz2Co2kFaQ7nK>#_4ssXFO8;k$|0YLy2LTZ4MTmmJ3APW@)3X`9diRu9% z3I!J^=c+H~HGpUU2m$y6f8-n%B>({dv?Ks2H-Y`304IQeE(a_&VbV0ie+s?u4Wt)h z_BIOF=e)vxQZG7_gMM%|-@(j1JbU-N3pY!a?fd`o0(1n>5CvFze86#FFm$h=pWpzl zRiNwx|qy`ru;aM`DVOu0bR^}R? zplK3Lz!?1U4)7EKhJO&IyVOfcg1`HZB-$RFMekrH0kD~8E}i(hC+oX-1MGJu<4UQ( zXt;Cc00I$!0bpnQUp#yXmLyO}1k-II7>S-Gl^HT1C@m23LGc$gD} Je?Omq!GICCss#W5 delta 1053 zcmV+&1mgRn2(bu%000012`~Tv0YRET8oULQ;7JGsh6p>zSukR@JOp*Q6`&{pmBGnh z7U9 z&J5y0_fLJq00;&XNV*5eUYXVjMAbjM2qrlc3#lLz0OHbmNX~lT0h|B?0V|N;k(bcM zU5h{YU;qRgzyLy+00b$(0D$M3<=Yr*iV11p@2>_45Iuu?_kldWp|~N4lq)DY03Cw> z2u0B#7Xa0Nj^Y2`;{Y;%0)l#~wLT&*(+6*m1TcjQZFHI>6EIJ&h3+MQ0DvX{0RRv( zBc+76l`o6};Q;m$1!4kYd;x$k3LK&vhLE9)+#bKlZ~$rs1zNr6IyfWHY>x)BSO6dZ zcR@fm!jPN&_l2k!5HX7VX;65gc0G7UD9S~RV0e^&w}Pb{_%Jqb7Wi$!MK8|6Bid18 z#u5MpO3x zoAMH1bb_@`$fPHK1;;A@(UWQ8$XdMWyv3)GAOH|jJT!bPMj1x|O&xFy1kC`WfK`pD zN6w<4a04eUE&KsDKmY&%K>%(hkOr>+crX9}0YLyciKGFmz#EJJ00BV&6+&qMlTQLA ze-Z#FD#C!NJF-OdfJj1vid903Zk85j=o6IK2P?0kk9lDRu|;gaDob0Js}q z(T7ZpFwesG@Estk7qKu_zdhzIuB}P5CvFx zZ7?-}!P2gRZ}Yyr$Vh!Ma5nZ(U;bKle?Htt0=N8Rp#N4vxS{|W#BClZq7_x|n= z!Hs1^%1PUI;4}e|m(xf3v;V(XGh)Ww#pFz$_h?&mB!2M3-v5Toc!n>)#o>Pb*nM|f XSr&dWATy2B&%5V|fjCF=`S=VNo!!3) diff --git a/samples/h264SampleFrames/frame-0898.h264 b/samples/h264SampleFrames/frame-0898.h264 index 10f28c06313f387588dc85c98b2ecbc4dbd9e12a..528985359ce6487412e74609e751d3f56ef93bb0 100644 GIT binary patch literal 1239 zcmV;|1StCe0003AFaQ7nL7KoCyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zAuF7ofD9C7sK}3Vu5nkmtniEUOPm1U3_^bc=U(B8t9#B08SPc&9L>1uZy{PDf50#m zMm9hWtZ7qE11^nhByo23o0zNY2><~A(bzChf!*1vw0CrX{{SX(6lSES@`+;A+JFE+ zPz#Q*0FnNbHvni{2mSwg2Pwh@a?#dY|6ljE+cRu^RYTwb0??9-y1G0Ev|?W4|8jr; zzygZ3oZ!tdDk|6ZlO1VA0C*Z`%ubE_@3aR!HDdtrEMOCPk6>;(05W)%DAq6l5D_83 z06;hm1dr${6{$JkAr=r_tupscgp{E400dUQz!(5Hp(>q99lFN8_GBEpYXAfW5XcwY zDZjY)TN72_XDB9`lkNivXEA#800u$?$IfH=Xff5-?D>cONcMrd3B z0DuU?^XRB<&GQsUhwZ-EG7lrA>+`LoZ1s43PT%~$GZ9Et5x9q;sz81+0|KZD5-fmh zsHB*vp57P}j0{jjPp`lk0xMw{fJ7w#wxomzGJy&K7cKxm06>KS1Or=5Z}l$~>w{Rd z|9^(?lu!uN>0vWcPwQl;m(~UZGqhP#!BtuzGJnCCDJDHfm2;#RU;o+w0Du?*ip0#d zE0TUF9_#=B2r2&z8*OA55RVa;eG;wX$n990D_!3 z(x3l+5r6=IP#h9$8Ssd^^HnRf!G{1tumAu7K>%(hum-OHcrX9}0YLyciL3#uz#EJJ z00BV&6+&wOYVZx&e*rWE3|$8UhzZ+1%rI^Ooo*`CbV zus+|O4wNyM!QdwVfFc0*w9ZUx$}Shv-gnDGM&$>J5Mh(OpYr$#pdbLK0)a7u^(;0J z0j{rA&j0ciqNk26FyFfO!S>QK$@l+&E>)NTfu!cZyB&`2t34Cz;Q7?Xg4PQr+2Mse zo)v*L0Ga{-34nAkDF8dBV1uz0`8o)YYZA)0%qE0Kd)Kl6nqn|}-~v>dGSKoahp?C0 zEdT@r>%tRQaK;p$qVKkz72-@NDdutj0tc1o00F0j+G0Ul;M+kr1EiM%j+B1|QyddEs3A0wvt0 B5`_Q& literal 1072 zcmV-01kd{b0003AFaQ7nL7HG1yakiQfp}0-00;;ed}eiMlq4DBqI*0m9st2W(YJKN z+S_nND?vjr0P~#6L17C)lvn|$>;em_g}ej+0swdV>;NDSrN=j5_;x!xL|-Ngnl6Ykvl$xQRH2400IEOAT&db ziJZ0y9WooZQQR;J004jssE`C30098suPK-WpWXoQ91bbB!cQ773vUUev*>;R@GA6C zVWe@P7jD4COHcsAj0$mNIa^?RT-Tl;03ZQE>fHVWtZDk?-~m`4`~aX}QWRpoi@3fu+GfKM;z2sp4(DgX_HrSOTWx=-vS z1qE}ydS#>08ol}^FUC4B$!V_EwhG}FC_>}=dzp!IkWv?%^l*U`0EL`Du%*IlDb#5H z&;awVE1foOXFk}eC21a}X0097ZPzq49F)$!4e{B{67Z^Ac zi#sHbTpF$L2oUOlgb52O*#R?eBY^5G45yzY7*7Ds1mnd#RM6N(J-KxU{@?%v0Zsx4 zT@^u7?ThUOVPFTJ`+z~fa$FW8BRp47^oT=?ycoh2GLHs6MC}^giy!y^0s>&_a4utQ zUn(Ri5|1OG(dfb9}OEUl%_+tZ5J6UK@_?r`97VAQ=R)M_tS1iA{|9Aib z0U)$U1QQWRvF~iJir;wv#{dBUg)nG3bbbctAt6~G_J9B&2lxSi7y=Gv%)J5CBvGK$yYsk*NHGFxtC+y6i#t zGYncheQ$-9$u?bo_rO;xFarZg&4F|~&F`eUrLL~$uGrAEg2{GxQBNm@U`;Q8oCnON z3l)zFKnuuE?w6EsNI6JV-OnGBb~0uRL>$Z_B~7!y#8P@RumBJU0B^s%U>s+J5PvmW zf#-#IlL`rS1K-d92qkjR01z=g)B*qk0Z9PSGJrI+g_Pi;_4oh{Lt!CtY4<$~;Ojgm z^YA7>O#uLdfZVib)YZRx`T#rDR8oz3Wq#fp@^Ww&km3!{aB`CQcj~oAfuW_4&x)fY qM9}~Xi#^R04yF9pwt)S7XV<<&LjLPDvmLdJG5p}h#5v(y`~oG`c)Az> diff --git a/samples/h264SampleFrames/frame-0899.h264 b/samples/h264SampleFrames/frame-0899.h264 index 487a7d715186dfd0b7fa9f92dc92acaf8606cb8a..4f84d95d491ac87660308b7e7f5bc661d1968bd5 100644 GIT binary patch literal 1685 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 diff --git a/samples/h264SampleFrames/frame-0900.h264 b/samples/h264SampleFrames/frame-0900.h264 index 64414cadf0562eab0f44d26ae921bd42621fc488..fe05bc44ba591ac6627fbbd992d42e74204537e9 100644 GIT binary patch literal 1316 zcmV+<1>5=n0003AFaQ7nL7M;?yagvHLm2@&MdhI9VT`@<()glhT?W9j!e8OsNFx>C zBwc4`wg7+tfOrK2=q1;NgG+Z`Npl3S^Z*Yq01ys|=l}=?f_f`&Azybu)H&ln-0D{ma z@`j!|NsN_Pr~tW;lsMbcrQLI+UQQy*D%g2o2O$c-#~5Ub+J_@*qC_Z+j&{HUBq&yF zqo4Oc03Wje1PmL08v=(f5wHLd5ZxdL06ZnUXq6G!kesY@F-BX18$m!Wfrt%5J^%$r zP>>~rru4M?@4Ns30UiKDKo!DQAG@J$wm0X@ZX5ss0;rgP4rE2| z?O+fpR(cTvd;kFeVHfD@+k~Kl$J>Dp3n6$N3P-JXVtgrj zLNLnWibI5XB)BvrAIyUXXW=2mj*8fsaySOq3%wHGeBcD~upgQ_tE7ueHeL`Up@O_B zB$0VwCtv{A_W(Eu2Aj&PWV9Wb7}x*=2><{r5jlW>L^vk2G; z{LBSJ1o&{*&=3GnFoJPHoC=|y_=$ty0KlffB(BOpqs4?2fA~K#AOL4{3>ai%`}A_7 zh-~!=5cL#!;t>Dvd;kD|a2R^q@R42Ulk#m5&m31@=1L0#vcm7Lf#3=%uqZ1examPz zs6PM=oK~15Ax=9$wj^w<0gJ!}QrwtHT%RO05ndOQsL>O3<9zUB00uLdC^C2Q894;S;EU`43@X;}Agy8i4^Ej~f@J_(zkz5; ztKk2}00&F}=mI=fOspC{z@qPG<5yDO2k}$?@5%rPq%Z*n92S{VrNG00A=m%_0YLz6 zCcp--0C+F}00BV&If<|VtH2wK0003&02M-P0BZ0E%fL_pAl%`w>|It^31B1(5rcpM z5HMR(z-Rz6fr47VRqOLW$6O24Db?SE zYOs<2bO4wVIh9-o|GNwgS(p`DHB^7?SjTsD`dWYg+6&kjp(~A7{`!j)m*}4mdHC&* zt?GBy(+vNjsJ#GOC%Xa0t*6B9{=SDVGHG@KzzPCL3@IFkl_Gr^f~@WdZXEY-1{Gg> z`|t+GJ$3y5|MyH{Oe(4}p8q@v*eJ*)!TOFbbnu)BrTWMqj7UiU2m(nYyzm7zzyT5^ zu2!!Ioq!M%TY-D+`-eaVurpJ%2Y{oL@Sa~pE=+JzDnTer0XOQ`peW7nCY*}&bGZ^e@~Z}k aB!}6oZh(9jQ&r4#D5ieGFPHt#JOay%jWN&w literal 1097 zcmV-P1h)GC0003AFaQ7nL7Jc%yakUaP%^&_4NwGJ2AA-NUx5r{;n>(2d;l-N06-WH zA)DRvU*n4R{>~yrIu`~42m}yNLPo41Kca{q!TW#(n96vVOoo}IT<{Q5MLefYomJzW zG9#sn90qVeG5`n@u5>gBe#7|uzz{$ZbSqRaGn`d@%46PU4F8-T(||x7m_3hn&@q8E z4gLT~wTAQH&;bA#{R=S38^8b%4;=mg0RZERjW9-H#2JmQOqKv32<3=0K!?>~8{mHc zpa2L11f?h&?S1@_-B$@^l(AzyK2@ zKl^ZHzyttb0S|y@Dd6Gb3l&85`ajs-p5MfQMdJN(X<)yT=)G% zf1>3z@Bk$N01KoNa15jTQJ~$?Dy|XW0Av8ct_pg}l=kQU{$B#nBY_~nR3K-70fGP8f>bF~^RqPyi4#009H8%HRNC86H=8-~b>H8FSgF(7%xc zd`8`Iz)KqG}TkR7ZT$dpK|By#`(05_lm0B{ODv$Ees zFAZPs00;vDxG+F2#ftnHo4dEy!LMbIY*am7!U9eCoU}L~L*DQwBoY*+0099M zM7#h~>ET!tRREv@fRK^U2m(x#tndUAzydT&N?%(b39kS^Pi_V4x8VWs2gQMjD?|x_ z0w;v@BtU?ukfc0p01Po;0)hI~0Bnp66eTYhviTs7^Uu=&0DvHR^K=@%HNmfd79DPq zIY|(&|NUHMSl5vZYQiH=3c#9*ljr zgnkEXdv_=XPlJEKpco|kz*sa7zyyrm@+9Q%$2*M?s>rJaMI?vYGaKO06+7AS2x?E# PSMPzeU~9(&^S~^y$C}ND diff --git a/samples/h264SampleFrames/frame-0901.h264 b/samples/h264SampleFrames/frame-0901.h264 index 18dee5ac6268d46cc692696cef891d0f82059885..0255a3e1e73f66958d1c6fa9a72201190c701563 100644 GIT binary patch literal 6875 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 literal 1886 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 literal 1078 zcmV-61j+jV0003AFaQ7nL7LziyakUaP-bF-_rQ{D18a9^0N@4GIVp}H)0o59CSL|3 zgF(UItQQ3aKmqG!h?6!%Zvg|G3RgAMY+dXm+k5~b@F_8_3@Cjg{Vo6Q2TA|}3Bn~H z17Z2=g<40ZfGCqwOTDI36AGlYoQi zBlyH`KqCjE0sOz|Mq3@rwWsl=7M>z`ZrHDK1B)bhlcTRuAC@e7G->dtq+k*zT|9URRGQTlw$MNTAc$!3 zanc}?D!s(Yk+F-81NIoP!M{01*XX0@nIC zjI*c!ZA{D%%Pq(J^ptpbm<%9CI0{M34hXRsHT{Nc00qDRK!Csj< zzy4h84EsH^ub~EE!9#&p?{@_qeFCB$dw>tWPE6Hr6ayL7d; z;;XD75}LhsxPlM#paQn}69!+%5ILG3|A&HpL>R>O8gSt+G1>DV!_UB*aRCm44pc~z w9ef;b9igU;cep%206;l_1*QHX$^j&#vJSWZwms@bCL$w!Sdx(EjnBX~@RIGkJpcdz diff --git a/samples/h264SampleFrames/frame-0903.h264 b/samples/h264SampleFrames/frame-0903.h264 index 59c11275ddc6147cdb78633bc156aacc957e935a..177166490a2810506994dc505004819ac79c12ad 100644 GIT binary patch literal 1435 zcmV;M1!VdF0003AFaQ7nL7G4syagX9Sb4gDSRUU5k>=_FV0okyUw%DtbtQaUzyV)I zIuBkekIwHt$CH*k-9Ri4caH%85s%OaU0-jqc7P5BQveJxkj?uqoz;hid7A)30ObzS zhEZ}VeB&4Z6p+}8rL_`_Y-myNEja)Hfam}>Zi8HTyfDR$Ec(MOtlY(O>#v(})ZRk0 zME~#@ItW~VDzTMHG#zATVj-P+8_xxMT_H50EzyuzR2vwB-phG2OtUvcC z05AfboFhVVz>tFf+Ox$uzyLrb0CB@$%kST9pmNh80Pw|sz2K5O-9Ri4G=gjI$F2kJ zS}{B z88hE3=d2RU9S~2kLai!1;gUI3RK%8mzy?^!A!&O0D!@LC$_s6O`a2GpWyreWfO7YTP<`~2@PWuxLy;AwMrUjy{Z8~ z1pqjCAN|8jj4WevKmPC)01lvw!6huIRPgxLIA9V$2FAoes1GZCed2%tH~=%t0Asvp z7kp-ujsRc+nj7{BYfJ)69A*( zd880XrrCRTATUhYXMnH+i#He|=V%_4l9Dj|Oc($%Ca@MAb=@kFJN1JED>U$u!|5>W zq0bB3Ie>~T-68Z{RhI3dE)?KSL_3y)+z@hcz^%aBr$ewlbDO(|I7e&fPMlr z?Um4I;$lDm06`WUR6YrOOaKG{0m8|Lc5q3_T2$F!!_7R`-jUGIKnQXG00BV&ZYGch zuK;*30003&06B@I0jt0pi~s-uK>!s(X#i^Q7^VCKz!m^d0VqKNA!r0U?Dv=eUoWyl zc0c?u--!aSI01ywpl0X&0wu$Wv_!C;7ztXmk27QEtKV({m3uK6p$hW z*r+Bkf1qMuAwZvs%z!0!NqZWCcHqgeZv|J>9lEeYb^=o3g~`N9}LYrkti p`w)Z)5d?c@xCq9ulrfmS;NI6W1ACVm1n~!-{P4bh1mpSm2Id|0eL4UD literal 1138 zcmV-&1daOu0003AFaQ7nL7M;?yakbe1p~1lQWO+`1CR(4gY0D|g6KXY`i}qtWJ4)f zMPgpIF@6BRa27=Ec1`sB5P@^!OKxE~1%x-8po9oR!cag&(g)Xf;0cfbe=Ib>AS1U9 zDHW_~Y?saj0GKd_Ob7;efPeu4unG4J=7z=K*UopNfC1jYzXxg^`&)mm0C3;{1OfmG zNEW}QK%v5djSJ21F*(Fv62PM?>%^bn00aQIalnd_wLA+i5kVvglU~>$3Lzh!2+}8K z(5gF&d;kD|Fc=ykw*<}G1kRZa+$ioC1%LoR1<*(W4S)cEf7g`E0#EM%cnSv;*$|Va zi~`$&X)N|Mi@*;8uS6IcLmClw>;h0)T+eQH)hcuvp+*9|mv`SU!f;nVG055Yr;u@Xi1z@ir{XZjg|Wt-xUD1oHlX zgNp?spa7Z^m*OVHvP)9fCqFOx@qu02EUkr3%lC#}n@K{C45Safrxv?%Q3PSM& zqk=I&2x-I%3S1_#okoxTU1;wo!2^hC(PRHExghO!@l_gM1foOXFk}eC21a}VfB=9y zs0AolxS9|azqN}&i;OrG)^ToV&ZC)rQDHD$4kkRPCu<`=KIEacDswJ6#3_N24Ks#GtQ23(r zVHV3mqO=X?Bi2hV?l*t{AQB%70mQ^oEO*;0;=kWOFrWY+45pxHI(U8uC?O$PA3y*Q z1N;EM3;_poW@3y=;Mo4;KoH^p2MG{-=veR@*MPDBP0#=U0YLz6Ccp--0C+F}00BV& zIf<|VtH2wK0003&02M-P0BZ0UrThfI764EIC_w@tNC=*@AOK%4a9Q1t`b@R63q`;T zv}6OKTDRafCkJA`8E!#c76d{S&%{EXznC5(B!QGK20`b>s15#p z80i40;Cdr9s2cEA)prW-|NQ`<0>JSjAax>tAskoZF8DwPb(QP_Q=AR=a3eBojS%vp z1B7Po?f<{d%Gd~{47+_M=0E2K39#H9^v?R3!Pte~)kc4>;Udj*(*ib%+FIIxh`@zo&{QL=s z!ZHLbY^z`u4pFWG>5xlV4lnmU{9jppM4FUAJ^;e9?0oV6U?0fL6Qv1Zw>AH{a8eJ0 ze8*@A+>kS@aKe-~|Exj~Bt$fxXb_Dsl)7l1YzFf3iNYRiYSYP#4-xfeg>&#HAJ4!y EFn}W8nE(I) diff --git a/samples/h264SampleFrames/frame-0904.h264 b/samples/h264SampleFrames/frame-0904.h264 index cb6b1e7e4236ae236df3d8895c2b781667e367de..14a0d993e9db1e62c071669a7fd34bd071045c2e 100644 GIT binary patch literal 1290 zcmV+l1@-y>0003AFaQ7nL7HG1yagvHNQ3d9g`i7{=LnAnQSbs(A;291e6jHoBh+{P zmM6dx=7bDAI)M7-oD4Y$3`yre!SIJ5R3+d>SCm`@#@}B@g!6Ig(U=DdU;v2*CWH;Q znwd!thdtMA(eNdP#Rz#sucfz6y`j|*=E zVPUCv02zhkI~BWszgxzq{8Y7XzFyzU;-aQyj3!*?4qyV=YjmF*v-pCPjsOAxD7oAT zNzebBa>%^Klc~_TnD{cnZn?n-??Z21OguD z0HSvWv0wefU_i_3p=*$NGo`=%>RJ!^YzJiPsnTAjO6og&5%JLLj@EczJK>A~5Jf2n zLX@Q;2vU>(|KI@NKv5(N5M)iCDhQM_W*`F_FNy?cE(!stU_KNJ9*CEC02dLEY;!A# zN#EaT1_*`b9$Cs;Re$Xg0KhEI0}Z9)sVndA6JP+^?f^!PI|2i(G%|y|C_GDSiX@e{ z{_P8%8)KkHl2RZ10FbM3g*1CTP@;^wmjnhu!;sk_!>1}lG_3yc00aTu0f4Hc61r7A zi?2NI@Bjn?cmhKh2vn`3N|zj;PymjHAOgsw&<*#7A-Bh0z0tn*<_l z^d9&q03n};q2Q*|);2I+Ue&m;ytf00!s( zX@F|*IzUbVU?LXa0rrosL+$rK10(f+U-Q6%dYMau{q4vDyh#+SA^*bMq-0@vx&!;m z?LbWdV1F9tvO(bZ0q{y#4S_edto)SLK1skzgbMgx7!n|HQ3<=4JsT zim9?Z761RB6N~*wMkW9~v0SoESO51$5>7^_@Am=A!YlYQUFX*C+EnNN41hd65R>bS zGk>kn7C%$w?y&0&D@dDUk{N7g2F)g;)PDN-^qft>eoOrSrQnhlq&Kt*CI5Tim#pLg za~+J_>PB<=ei7+_aqW-9ZSFFwC;>q&x6cc}nqMG;)yIW_hjUw*=kN|VR))M68krtI z$fKZfZRkJ2gEp`?%mB%`M`iuF5WSpw2jQAM2Cq&MFwY*~f+Tay0K2&y++eRq6WhRY z`I{UdPA3CiqyZs9%nv;90A85#R4A_Xvy=HOF&jw9jH$&)l?VCZcoT$t{(b<0ph${7 A3jhEB literal 1140 zcmV-)1dICs0003AFaQ7nL7N~Nyaj>$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6n761$*1E3##7x4u}zgbuSd4!NXl!1al zTdL7Hwf?>40F6g^gBZ1Pi%4Jm7+0Dn3m`}As8B-$kmd7D7#WEQ62?Ys2Knzk{os!u zF=$dZh`(?#`#~`)PNQ{#TB_JhFjhl@1zm^d0uTt%yHh?f|LMSP(rmobpT7J68O$e= z<=fUN=l$N000;#DjHz7$?^@s9EDN3vm{SW5I$$njjFd#C038X~q{lLpWvOlO0~mGR z-I$tHc^BDhk$?z`)ETCaku{56HUWSWVlejkFd{5y7_1?a2pBEaSSEk81`o>Q5TtH2 z(Y852n(#x-{y+hMFzf&l1@I^+DnsOZmRAhtJ@7^)!hX4Ts4y)V%Bt~;0r?1RJPDQZpwy%HyAOZ+v zs&FKYIHxtDd}cHE0YZ0J&6fD!Zcr7iG0et{X&;S4d zK>%(h$Of+fcrX9}0YLyciLwE!z#EJJ00BV&6+&!)YVbNhP61#d6yO8oe8~-4dq4z7 za<9Mr(0G808!dc4o3MBaMM=5LBJYW}pXbS<3 zG%LV@ZvvLl*+Y!CF{_35yYj$zY|%I#ARq6#-``P*yTj-2fJq@$G-rdq|MUWJe_1F@ z0CBN*(JlYe=wOp6iO{e20e9gY{2A-ttP((Dco#EXcfSaz6F z)=jfX3E^E^7%(Z|z8Y?kb$@-zEhAAi2MSBJ*vk4aKlt@wb7Q}zCZ%$FP72&b01>-I2w&*{EwTx z;q`LZ8{;6qPEpQ(%l)~c@&~Ty4>lR2%n7@)@qv(H!e&SkIh+9Uv2)MziLty)^L__% zOgjKkiZRbbh!9QpzybE2@#&hs-}p4b)nQ6KrS2Xi{|{g_6*2Wtj#2u!AM?VnCw%^X G0D_>gS^1~{ diff --git a/samples/h264SampleFrames/frame-0905.h264 b/samples/h264SampleFrames/frame-0905.h264 index 92bb0b4a01cb1c949b5613f0a80e67b05b15884e..f40f766d7e76cf92b1deac05bba4055654de239f 100644 GIT binary patch delta 1629 zcmV-j2BP_@3epXK000012`~Tv0YRF88oUJ`5){MemsGp}mMMTdoX{iGcmAK?2@AqK zqn3w|eoje}SO7~;a&Vs=504dLGAg%%%y0jbSaZMwF}C!RY48990@MIG!I*3yJj-^> z^Qcz=000n<-~$mTuonATzljR_KtOVL1RP+vzAG6gUcWDYf*5W#3Q*6$n7CVXvUKA3 zPyhG;5Ol>Bt{`*D02~0A0~~UXQ|{TasX2eR07U|j;k8jRZM}4_?*V}K)-T@VA*0v% z|2F^vG{9gffddVQik<@p!vJDN0S$u|TLM|=5&!@20Kvo}SyY8zhz&zN00l)* zcp`;=LQ3%wKXh3#;DkV2nY}0d^S}TQ5#S7H0=P=!_HZxO#z20i;lKb8DyabGL|=dA z0zm@GR(~obQQQ6A0|L3Fec!5x^NBaW01yTdevG}?^f>YM;D-ghSsMyNt$1P}X?Y2Z zGLT`2aD);|frs{k2WR0S#SV$sp>j6|U@r83NqhN#63W1IG$L!I{bOZN!6ghA@lhm; z!d;L}f%?Ed01bU`1Au^OysE}aMUVqqO^5&l34j1Vdlj$%NH}n6zAqRO@B^JNk)78~ z2i%&VzH}?WsqjxhAkWu5DH21P`^ahpyc)cG!Hzl_6NHgGjbp-@PA zLEGfMO!{osCN>BarI#0sI(~1iBxrqg`xujYHYkWGd;`X600?4-;CCBK?)ip~ZhXVc zhyWSg0|prw{{0-N;u}3eggr$bc!WRv9{>O#90ne?{3KU;B>bC1bKC(4V5KI)ibA)m z|37^8AKL#iP*@$77kzvW08v$eL0Kh#$4Uy#LHGb{;;>039#`pa}6@GO%d-0*k$WpN(Bh zd>_S6|AHP608I!0VMhg~ROw;iumT*{#ONTyJ9t4<9##Mwz!2mB00BV&ZYH1xuK;*3 z0003&06B@M0jt0pi~s-uK>!s(Y5;2RM!--3U}%A1E&wHVR-+9W{{T2L_|w!O00V41 z0A>RF>_~q8h^#_CJgsl!b%mll;^3=n2`PX8KyiY=z4#MJlQ0Cz2bb%E@CO`-^G>8F z5vPaANWCf;xWDQ1pVWeOB8 z6eLdD-$1Lj4}eG;48Q6UAqK>X05J^|H6#4ZhwwYr3ravYI4+zB-td2WGAK`gY8vEEPLLuLPQ7_Tnb4>u`4fsf#QUJ4GY)SL;w{n7vESCjWn;ouugo9 zirxMEENMj?HClj572i}KB*IAmYmkFeyUP#$_yGUJgXkE@m-fuRE023C%ous$T$2F> zC6m7c2|9iV;UNSd!}_KFbNVO-U_ERGprZQl>@rcY2Gfhc06-X%0SeOze_Vh}MAQxg bW;%1<>zBvzgYhwWk_9G{zXJ&begKSMSEIff literal 1322 zcmb7?ZB&wX7>EClygV3?2sRK?5uIUb;aghS@e$OKkuS^nvSy;zGIQ3_IWZR?>7p>v z<;i0;(P=vEq-kpA3r}gTG@CBB)=G0OrY#qyH4`vaed*KAY4?Zw+~@p0{jU2006^y4 zS1a%o!tBBoOIQSwz&0QIUC2We=Hjdpigt03N$nuv`7j^=Dc+}5T9%Pp{!`TOicTYN z!(a)X;kN!reL}{sBYnQXtK4bL^{ELWHco~*kZ}D7jK?$YC~Lk7>bha;(g+|-1j120 z*jO7+=-SP9owQuX;MP{BjN134B(bO?R4cT@!6E$^YJMLeF*f=|E`M_Iff52BkB<=+ zgXtan*d_99?J^~zb||gEeKhWI++A6DvB}0C0jxCuH9iT{9gO`ZW2D!v&{}G9;Zjsd zl}VG0V5|ts#Rafp8Ks^1m}N+s2N<5-59y=BFBl%HlF^4gDvsTOOLeVtNJjZEOY${u z?AWx}kN0)-XR$ZoC{#CV1+q$6|y0s4)@DHfNt7RjSv^#&1W${#-KxMN{UXcM52!2JGL z-9-RFYOBFz*NwT>tbnZf87zN*3UXsgC}#3s)|&2P04xe@xBfXx5b(*hu^AWM^l2At zmf#6tKN+ELLcOD^Pz_J)X+S*$;EF=qtPifsnwfAp0AMiyh@W~dokcoEoipjo7?r}* z0czw`ySVCxvqdN^^R;In-FX<_2(sTu2i7YtLJg>m@=daW_Zdi?4M8IyQHm^a4Tv9% zEXZ4&z!oL={axt>CyFp!`!P|$!ct_UqGn%@!Ofjc$JwDJDu9IwPCL^eUyPw$ z{(@NKICQyeBBVlowb;83eY!-tqw*>X&zY|D>L>ot-PY3ixYqRFgWUr8;ggwQ&3+J# zTW)_utu*Oa>lojX5pQyV>A5*Yo)iqI5;m#&%P;(WXKlkV(UBrwD-$JSLDtxnTFAJB ziQtpqJ!!#k(8NK#glEQ$*LJjRzz=CKQ-AJ$p4i#J3sw*m%QipC7X%V}a&Gmt#yV}B zN`l{?TfmYtRn|4uyB~{(q|mF6P64OO+pcyPUrGWhew>N>)JXTzQ2hyK9> z_Ict`oSH4~Zq-`RV#8ct>MJ2OwqGdiPYe|aJ;>g6rU^p#U5b53`Rv*vFWNZ62B9|x4aJlrRZPoY;1A> diff --git a/samples/h264SampleFrames/frame-0906.h264 b/samples/h264SampleFrames/frame-0906.h264 index 82f0a0800846fb8abb7d14ca6d490773d3c0e47e..9261adc49d7e7c9bdd99a7194ab44cc55bd70d2c 100644 GIT binary patch literal 1643 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 GBmE1eF4^<| diff --git a/samples/h264SampleFrames/frame-0907.h264 b/samples/h264SampleFrames/frame-0907.h264 index af646bdd3798aa8f8a700dc13c0caae9b4b9030d..6b66bac65f90b1449431d838cb8a574c1f766e4c 100644 GIT binary patch literal 1216 zcmZQzU|{4l01}R~4oK}`HFr!7zcS@dz&sNhsgPK1hnF8rHm5I(Z!+kSY-tS8k$k|= zz@Wgy&?NB7ET?``!ljQqi+=tvnAs^HlWX%e`cc@w4-JeG3@i*^7#*F$^EnjMFZ=(0 zz|h$9$hWFb@W^dfSHTA?3``8C#6)lH`ev%@A{=ft6k8!ZIWiY!+hJNH`cQ= zM2a@B&MpvSZ+zb^o#L0|_<=#N)6(l$&eF2f2MiKSH;Obb_NhH&W(=+0BhGMv_0-Eq z<+KI%Eiw%Z4kipN>Of*_y><=;(}R0DH&%N zza^(w9?Z!s2w>Q7{*DC0Lj77RX+dEL{r3zCiO0B#y5uSrM_h{f@JHa!LG2bMes;6z zj6%UoNr8D4l`EKJ8$fB2Ax~`s+j@oyZ~|qp>|DdR`hXM*%K^z&RtqMn!-h?b#tdFx zvp@CBYRU|G|Ex*iNpMd5dw%iwBtE7F9w!6lCQTo%&8weqtY*2$vA9$3;`3F;J480H z*4nkEF#VFzU*NVk;q)JQ#)xZ72|UaXbp8q!9cH{@{r`N*Wfk`S=ku!E_8#%;Q&5_< zzlN(RY(s@r*ZVyjFHDxmnJ-%^xw#~Qhm-TfyCr=tE#kkIw z#>I>VY>bWxjB}nesRRVf-^XJTA)KnU=k-bv=7TM#wKuW-{wU1-g5`kNVpf&~jGrCm z1&MO4`2YWJ--DzL5^9@PXq;8cnZd+r`(Huu^@0EY|LNHs&A(-P0}f6Pa_e;s+Vv~G=N zh`EwzgsO;))8;b{Z}(U*yl(YTsr={hhT+}asOl|j4lJ{7x*w~Wsq?WqtnO_9m)RXz z)5P9im(%wHol^Q}#Y#VRjmX3Q*C*7^6aV?=U%mbO^UpsM&uCI6UM<4l10p;CGx{Mr literal 1013 zcmZQzU|{4l01}R~8>IHIwkukcG)VY2svP8C(b_kCfd<3wrb+WOK1zMI%l~pagz3z| zk2@F?elRv3zO*oO+p*N*m14- zTtf+iK*-_^b3S+`Everp{djBKKbCjij3*eFOO|ti7P;$X>0a5;g`FO=nT=7pYty-8EJ)2q--5 zs9fqZ-S?pj*Odhim>FC2%;wxRyivO6phWZG-v`)O3>WU-u$WI%>UGBLU4I%F8cjAZ zh~&8ReLf%{6RGSnTRbm7-|gz1IkykQ#4#=u^Z0p1@SD-4gAZ3#Bw9>nuza!3=R}2~ z;*{lIt?C(kFMuMDAy4fA+j@oyaBMPIcJ5$YeL#wZ<$z=>s|C|-9#-G7M+d!_f@}|MZqG| zES`D$ffE+;(g{cZzv2JhFoT)l2e z;t%*TE@m`fV{}Ylob!^&Bp_h^J|2q)zEfUJkMn7G!jV1uX6S=k_cUh2JE$>imC#US z;L1>)(w@F*^8c^bnMDsA6wvTuPn&EL++zFQp+BMi>#lO6TmS!U5LU3={~tH_;Lza1 z*sWN=-n1>ty-lF`f4v4T+q-L*y?;-8%)<2KdH(W$Pk%{e>h8+a`@t!ub-w2A?ri}x zlG68ZdNDTg&&%Jplh3C7C_4jtVz6gj{o@VHvh~sbLm2$DR$SDrVfet6QM}Ife|JoH z27~eMDSa}cl{07jFIqh{G)`G-#ldGrt3v)a{GTVzS8qT6{PWL0|NJAG@t}ivwFrYh HurdPxn9t)8 diff --git a/samples/h264SampleFrames/frame-0908.h264 b/samples/h264SampleFrames/frame-0908.h264 index af2233378ce2ee3cab537c883a01c90f7d627dd1..fbd6c1982a3b52bb0dbcb4597edcb9e408721b9c 100644 GIT binary patch delta 1233 zcmV;?1TOok2!jfL000012`~Tv0YRGJ8oUKJL1Nd`^htm4hzNmR01h}r0fNW*hk;Tf zO3KFo15}vPIOT7$@0)0DxN*00aR6p@TVy4@w;HBNPl4 zwv}^cMiTwV00@46fM5fNHGwHYc376$N&=Sbpa9{FLF?iY(M@fWWjn#0!7RTn;2?$X z7bZXesKBCnMN$KU-VAG@N%$&==qY_db}KoS%#{{@VJC0}GY9wpfWbW{4Y9boZ19^j zq4)sYO~;93rO{j{GmKKhqdx98p{026=%Jg^5l#({UnX*l2p04d?WV3xGNB>7XI1D@e{h2v2? zFJ4!F0Amlp01yEXC2s4+2J=|D6rx|800tnt@+cLvJhYH=^}b}taTOe%tI}%(hxCXBPcrX9}0YLyciLL>wz!!W3z!`-FI0pU0 z_3)HaAhJuJ5OJOWe3YJN!5-&^#cu(BJO+W>1A-#mp25yQ|KKNtJZt+iAOVK}E`x96 z7>}T-O7`TkSbo?);3k035a7Rtl^h$*_Z|-GEJ{>$+5$jMyo=T-(?t64S~aI#zrUw( z-}VE|5mrJZKil2};{8;zjLggd^ZZ?_zo-5LiyWj+bjTI2lH=~DJS(Q?P*@ay*1J&+ zx2Pm(fCw75QMLz}G{a(MnAuXE7lQZz00BV&6+&x(YViC7z!`^yAOs(CuK)jqteBWT z`H&!nTk;tP)B|(rngg@_q0|-IKMDsJB|L}Rb ve(m?a1}Fc1$zk8LhO8U7H=mQy0~`ha!2pO?lK})KlO6;KlO6;I0{~huMjs-` delta 1017 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 literal 1004 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 literal 1095 zcmV-N1i1SE0003AFaQ7nL7G4syakUiQ#>;M1OT2S3PP{|KpBAAF7_?kl+jolSO5`( z5H-Evkm3fV{=Ot{z}<-DF&rxy2e+-cf>H|#Y8(nCxF z0$Xt6ky^&K$$a2Y34;h^z<_U%AOOLb1p9__V?xkx=Sz`*1to)i4%9pLw)<27;kW<+ z0H6Yr1h49lByg~^Llb+2_VrfHYRe|CUnSf;YWr6KmZT{bP@oAU;rQ+_2n}Fi~GPH0)fRg zL@4Q_0Jh+oOFn`H;0J+Mq6-ZpkMVZw3=}m04hI|*;;gT@J+5i*yg&dz0)^GN{0dmh z^~^v5us`?#KtNIyTGdi37CaWez|H~*2mh^RW@-vg^9gQvX8;s0%%HKh|;R*{eo~%S3Ad|T0Ie?-=re=BJ-S;n(JkGt`TTLPygHd zneN+doL20)BJ zWM{w_00;!KfKo-7iJ>8D`&h6TwTB0ForHSe^l#q)fexq`K#;PHz9wm;;ApTii9CXf z_xAwK1mnd#Owi~>J;8Mc{@?%v0Zsx4T@=A_1!URhP_P5f{lFmLIWG$kk)A84c0?h? z-V9+1nMZ>kB65vx#gF^|0Ra$oI2SRt@0Al2iARyhX!KxMdxFC_h>930C7FN>d@+Hb z9jve@d{KF@i)Es~#RGZh^^(i`jo<(X1cK2ZIGBn>k9%c&R{O{X6aWMQ6v3d`(fAyo zgoR{(+5iB69iRpPUrUIMrQH$VUY0YLz6CXfcN z0C+F}00BV&If;LJeReY0FW52r6HS* zY$pHy_yS5`GjA<8#<5b_;W!g>iV6eH02+W&XAS`w;pk2)u)xUogE@ywE}{<{Zl(cX zmXj<+D*uV$UGfSEZ@dGkQ~(GAMU%*^M| zKenrr!hb&kVyuF<0~y(s2k%e)#0mwzJ);I;A9mi{qS3fI;UT~#!GNd@K{FsU02rVF zs0~Lf(HH_1K23Q*S0VjSYSYd8N~4csaohHLc+dAY$Hu4+|G5w6g?@en!s(X#i^Q2IG}m%~JpX diff --git a/samples/h264SampleFrames/frame-0914.h264 b/samples/h264SampleFrames/frame-0914.h264 index 80ca70b111bed1b8bcc7118181e83fae0918b814..690fad4b834b60e4cc0a79403175241d0e40e0a8 100644 GIT binary patch literal 1458 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 CdX#1W diff --git a/samples/h264SampleFrames/frame-0915.h264 b/samples/h264SampleFrames/frame-0915.h264 index 7d9bbb5441602a883481321eb4e0345a5510fc55..5cdc31becbef28d657731aa54a34243bf33a47a9 100644 GIT binary patch literal 1293 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 NK>!s(Z-8p>2IINf2VVdH literal 1424 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 a(0`s4lTidNlfVNKlYazH255k4@CM^i4KaNH delta 1034 zcmV+l1oiuz4AcpK000012`~Tv0YRGJ8oULU2!x;j-~b>57|<3^64jId6ifn9RCat| zd;wNzXMk9_>F#Bt&;Wir8~{}3GMIQ%ROgrgnLq_u&H#xE+O72f03)6LVgQY4AYhOO zb#LRc1;r?``M{tP1`I)g0N)S@00;`uJM46b7ZyaH``jFV00kw1D1n-S-|ZyZAOT6h z00;&E3Rnwe3Y07)q2r^GE#nbRBY3w59cPFZBftO%11NBSWofGa2bhYW+6SrcW?%&v ziXz1Hja+swg;Do_01yZPfRT>8E+KdxKWY%WRo*ZKfB--wiY`DLA^?X46&V2&zz+ey zQI3@j5;|;u9N-wsBFMoX02%>TqKyO+#+-HABV|rN0N^M#RABTwQ_f4 z#l=RifdLsyw_gHRG+?y(IcSP8k~02rIIvPG011$PPJfJ=yXd?EC^!+$ph_nr@tTmm z#3TG8dx%>^p=_@*4B1i^f9n5pF)k?wF?@nm!US*u4-k{#%mx=$Db@eczjpqAJ_rgi z;v<5*RHtYnwc<0WOW>49d?pNm7=XynfG_|M4JW0tOK&5GYuAcL@uhaU2I(U}hF2MU(&c0Ah@@E)p_$Di%|GX-ogO0097zLKN61W&1iy%BdsJP9FvWe&bBDiCJ13(eYxHKwGro`RS(5USJenLNN<396v z00IG^_-F?e7f{HT_Sea3A0P%C00ab<)C3H~jiX9PW?)ay00aU500;n34nL!FbmJGN zr}q#*7(xJP!7?I2u^<#$fKvb_=l}o#K>%(hxCXBPcrX9}0YLyciLL>w!jKUFcnE|) zwg_clk9crvudSs+3?;v7MfHKcr*J+8+$>n7rb|P~YNI#-8T;G(wV>D0?>z72|=PPl4$jN07&N$q8croq(Mf1+f&0N7_bKID9&SpBMo%V zU{nAU+wy=I(rCp{_?y*oN$t$vAix=hF6CjazPX`q{{~>f4}e)SfdF#A z3P9(Z=Jo^Nbf}Mj9f`w7PM`bhwqg2mmCJqI|1XM)nU*tjZCEV?hk!pze2a0O{t!}- zpa38Oshy#J={f)VL=D0QlhrPpo_LOf)IfL$0v6y&B^l*N?AhT@{mcMd1>0L0!eFjn zu$lk?0H?qTC$e(Yf9B#aAY|sywcc?vWxxIES`YivKt~WOsnTAjO6og(M{7JUo7&%N zVF0iIB47p#I{HnR=JrTYzXn)AWS5rEH z>WcgOgxCNZWdLQ4I|4(kzR=1F^r-P|vM7pH-}|&BJSM{74|!bw-~sdNHdB6fhyV$I z&Y)L~D#*?3cX$8-0Ja1GD3<}{+1jO`ysmM7&;SGhKnM||tc2vFLS$zJezYz_yP&3d zk10Q}cY{e%zyI6*SO6qUhM1&R6VRUz)PS2q0ss~PKBmwTkwXF(QrFbHrtN%BVH_Sr} zKm|8b50H+2ZvX&5Jm-K3HgKuY9c6ogBj->unvf7xaI-nT9|lyhPy~d71iT|e(JxrJ z3Is4g`E0~SKmNsd0098jYyc#}TLJP@K7Z54J($Y1mb*?1fJPp#SBD3{-faX1n187Y^79cyqWfC1Bw z;HshrNmI(E-Mj24mdKGA55NOq=Y^9#1s{_z1tJ6ZP)Cy?1w4~51qTuM0)c=400BV& L6+&qMYVZc*$3kB- delta 1262 zcmVa<`G>O)m}1PmAkdS4d(}y{00?dZ46P+`l&Y+U zM8v$)0097eQUCye015&ou#pe4e|03Q^7|4a0Ve?#G5`sHCpc{f-VGC(HoW8b{YSXN z06`Ct43VYG%#RQXflI;o05K2^0DIv&Tji5--~!CR4)p-R0`m8QB=gnoV2DzTQ>y)> zD|>_B{3h6cyTKvSQX$x}|KPzF{9w*0eB~ap*eHgYhcB9Fz|2U^nKNK-9`f(r4^4#P zy3plwLl?9(jIxbX8pSs4T47mX!wkBe0jLO(x?0Z+|MTEilgrbO-|xT%QW-~5?Ws6Z z{_aQs1Ob4Iq`+4h*|AuE0C_p8G&2MkZplZ7I*lnT4nFc1)?X9J?EQLZxoc8AW#6bmCS zXz0&>PT(?!!{Z5{;fmpSqyM@AfMB%!F6~gJ9Y+2C&>&!81)VVBU}Tj1k)tp73)3mos^R0E6n1u_7C2n61W2pkK_@kz;>dxLPxSO5qN5}+zL zh!I24t@owyVkihUXKt~oxsd|d$&ut379D0l)h@mYX2gx^o zcon%K{9||fB=9Z z-2e-WZFRwi4%b>t(4LFoCoD<-Z~zDpz=g%jW={oAz>MSycLNECXb_G2!D1H7(*5QD z0s%k_fxv?!J^eQx>eb$9N7V5ViR1_8VM!r%4`A-({PQh)~nNB!XN zrH~5tIQ)Hg2l;$K!${*XBmy(g9{=DHWjU;5L&cx`@5$pPQ?02I~t zE Y3ln}65#S2;0003&02M-P0BZ0C%&2% zo9|?~LRfkL3Sa;rArWW*2nK>e0tg8zs2jk+6eV&;Op^1Z1d01iFM=3ub_!6=urfCdh6Ae%u$x%Ed>C&1|T&I_y89b zL7<8i2`j`zK;*J#u!ulq0L~D9sQugwbg+;gvAA#m1PY>H0Sv@N z@4!GHRIKzOr3lmC+5kYnq&%d~r4(nFS^NM1fG~^nbpE9T34Y)A0vr}X@;(%gTJFU7 zQuKsjk;W8<2=YmAXd)R{^B}?5_(*X>;U+0K<7yjFtnpGY|j>5&!^z_9tKfkZ|XL3#qH>N`A(-BOhZl zjypG^3V*?8%!mLP-2(<082k1qEc69Vja`2jBs-iqiytgek{p7Q~H}fH8Og%3G5OE0l)&Ks5kB ztq~3T_ZVzwH}&HP!;;h-Bi|y61V7*kf-A!Ebs8dWylN%GRU=P+Zw3y_uV`q3z$g~AO3HNg!h1$13-|b z4CS}zf0;AtC6ON47r!b$bdJNSO-TQpjKC`M8P4>eSJNK(JSzu~0003&06B@K0jt7A z@DKoW(If~3fDN`W`ds&L7_Uc@uHbB}N@JD%9R(_kUycEN(W4oA)pJ zAqXtEaR4B8LBs$+?2JSJ3N^bZ+JBe>t6ZmuEN+aW-ay{GsEkek2jQY{Cq~dq+5mB; zus_lCMI+7TYqG^zjOASd8`!Wr!;`@S8k5ii3l#h&A``$EbN~PWK>!s(X@F|*2IHh+ B)|CJN literal 1075 zcmZQzU|{4l01}R~6{PmCPORr>{ULC?l}|*Hd7AhF3x;q8MurYnfpbMa*MD4E|Gy%E z!NGxvBSOh-Ot#L`%IQQrFm7U;z)&zX zc|qUa#6Pw52^oUDsxJKu3=TGh77Uxt-ZgSdJ0jJ)&L@n)LGYwN#zdCTMC%6*dsu-g1XR^dH78ll zofCQC7~`x%wl#ufj$dBCXJJrmJm_zK;G*#R)6RPqFn!xIr`e-lfq`>U9a|^^2g3m- zd4}V$%Sul0$~E5pz}S7rks{A2jVI74#@!`lVtOcuE&O3z^6VB8DD2Q2C-9jZ}e3e zlv`L>oYzCQ@nJ3zO0_+LP&P|M~54nC2U?|zCA|b+H^u}Q0vHEull6aoAKMTIcQn>cO z6xa2?_h#<8Y+J?Y@BQJBiNzcLpA~EG`An+f>)>7T>ZJI&h69Xg%v^?~g%08vWr#Q*>R diff --git a/samples/h264SampleFrames/frame-0921.h264 b/samples/h264SampleFrames/frame-0921.h264 index 131407acb1b0873a8764b40d2b39f38a7a6ada96..96870890bccb12a7633a98517f655d1a644cd19a 100644 GIT binary patch literal 1780 zcma)+`9IY81IOQ=nK74P#?iVp;~ezWIARDprY$4UB$X1zQLeG$h+O4kEYVhLm7*n6 zw61nBMK;RJI7)}F;+u-ih{zIC@i2tXevg0P`}*Pe`}6t33jhES82^UnRan16#o04_ zcxZ77*`Tm30D;7`dwR6?n777oo<(&CCWx;oQCOwi%@>6Jx^T86MfVRRRS*@@b}Rn@iUn9^2k=Zr|5N`XHsVPnx{GL0*IwD% zA=}#m0L=S`y+loCTvMT12yS;S=$a?%dA4yo7)8t{8=ZpVBb%w?yNv3+bRsgN+8|sN zd(*LRKWO%O+iYDk-qJ%C>62{_CatV0>wfuGYA=vzSrJWMOuf^uu0qQ}4$e$^&N{N* zmPkE#6GsOORK=(%J6TecyIDF5zprLP?*eO<*Z6>fLT$ZV$bXXNil%V^(=JE*rnN@+ z3&H^1D$|o#CR0gw`aIZI8azBTnu2aByJ5M=P|pjD>Aope0k->)H2m3S>Hb9JUh0Ll z?d>p>ZxHU&FFjm=lY{Vf7BQo-q8kd}MMk@<09DD50R%4S7tqN%ZH`_ zj7jrirFW^c7Ty1zSh*^}0F6Ya!#w+efInTBz$^q+aB`@#VZncZ zy5#CJG!yJ4sQq{hk-{F@!RG)*g+qsSM9I>LezX0jfjU<2a_iz-Vims`$%+6bUzr1B zH+BgjdF@ettA?d&t--|{Q~9L-^AyZ*_J#t2gsFZ85s4>Wk2}R=VZe!a=nTv69xco1 z@L-$-yU$tQTs*upLDX-@WoQE~TF60u(~k^`FepNnRb|QLL&9rYrD+QDdbC zeVGT3MMTu2E`5t9*M-kI+aOpyTJVbY8-wV*U9caO5 zw}9|(-}$KplHX$ zD8N$NKhrnecDqv?x76NOTJQQt@S*DUkmV-l5H6RZe$u0A=hGs8Z5tezOQzcle1_^}$gs zVfWidtugMuS0Dbog@N&G0Y^gE1{{s6cB#e+w{oq$~ zf8q{4*e7)VU>PmXpsSDxs8p}&PrJ7->icG2ie|9awDN%I#a3KT?3?2olegvJ`f1h5 zzXmS^#Ec;@gt2cEmM1kBvcykFvcGm-2CT{N+iXSmVKbus8dHWYK5@VP%N9U40%xImmF)ku6#&2W$J__O1V z#V&~x$+A$)4@+3-U+1axAd-R}F9&#B4)JGBg6~Iy+uXbTC%%3>{Q+w1Mic1I25hG& zMm}d@Ud2ie0wi1%o>1;wl@pW}RA=`SGMiqSU0!1)$X$6cyWUpdkLQHFY<-*^iQIkA zdoG6mxEz@V^o&}Pd!gT0)VVrd>Mj>Tzo(Z!ZpW6Yu&zMaNUOuM^_oUE7~utYUp+%v zU)TvAaz-7#WY4+pE@-(A#wR^F3G5+S6LZnJt_n2@mU_`)lG< zrON0YcRqVnf-)hDr)lx1V3DFq$wV!cYNjZ&mrOSYq4f+ay000012`~Tv0YRHU8oUL7PXGiqW_MXG-h3Rh~gNWw)$ zQnYQj?U%@Z7ln=$f`OlG5Ds)717R|WixlD*0Hb6QIr#|g zYxZxeO7DTyV_{L`H&=lUUkyeEz`zZ_pbmnN6f7lwQS>(XZ6ipO|FCla6$WjA7Mj?< zcmM(d;OYnpRa-7+Qg>PDkkea003ZqhfPSlhZP9T_004jhfItfg2N4hy$f4~4B zbN~VYu`&${8_xkU&BTBM04D7LC4&qA5)*#Tr3fEZGe%;Mk_FuPTVGVzI=U!^k^-Q{=@LjVq~fM7+(6|ec<-X?$&{YO`( zoqfS#01w=0p#%&ndGUWs0YO!hys;xtF;N$ueI-;y{i8*pi@Z4p+jHK*<%qg}=zeGU zx%OQRJ(~aA0uY83QQZ%cOE>lgqNOmz_el`{-@FEVfio%_t@V-+%SK<_qgZy1<45olP|hh07OANF9K`?03Lz?VK3R;SBkfOAN@=*J@g~% zrvSpkrdySRJEoTapdww-%}4z{%~-9FOCaa)KOh}v7D`rjEV=;|%>uAZ4-JB{Q!+Rv zgZ|(s3Vg_L)Oaurc$*OnbYOUa;8S8?syYgL;D2!Z@SGmN0003&06B@Y0jt7H4}f}^ tm;jJg)dn3^9Cf9IWfPo)3zNYHB9qVt1rYECLjV8)K>!s(Z2)TU2IJWAJ!k*` diff --git a/samples/h264SampleFrames/frame-0922.h264 b/samples/h264SampleFrames/frame-0922.h264 index 64cb35992233c051dc9a14adedce6db06bbdaa18..8ee81ab387f66155d163f612840c23eaf2976cc3 100644 GIT binary patch literal 1011 zcmV^&G?%$Oau4;AOHvffH0&!otq!* zm^8peD8FU^0Dw>jJTh1SkU%guqYM?bT=5!w*&x6Hh3dD~80P`t5D511erGs{YR^}O84gtI|5H#P z^&(5uiCstEQT6dfjSjydfNZLTyj-LOZiA2j2m^osfRG5jlM11&JdcLNRTu|=90>w*LE=NK zyudC3h!Qa_T_8k2e?E#ODVUq(9_Js>4B!KTQM@gaFOUdq_k<&k5QiQplgF4SSO5eO zcmO5^2e%n+1dT;ZpZ|mZi+P^M)p%oMcmRH55ywZ2Va1kf-~bf5qrIcV+y zLNpWKf6e6&tMT1PwSX{~h9eB&XHeIL*7ybvcqAWET$L%%9BL7w&;$@{FaWS(+C&3Q zkf9L~ib{>w@B#pUfkzB-iwYu9V-;RP{} zIRU_ucn9}n4iIzOQY}6JmPZJvuT_wr|8L4K1;LxGW$hj7){xwQouR`32Fbd&Gye5J zC6#AH?*6{OTr?@Mb>08n&6{!gvw8phSW2p@r~m($IB;om1{3|9fBW&j`+aQ$00aW* zO}s27Vqsl&5DNkTs!6oDA^WERoJmLRRrF$0|7I$1BGQL!R82}>|NOv%OaY}aP~Bqx z*MI;df3?p`wp6uy|EvH4JKD{h@Vp7C!1xD%fKU^Z!;|T&QlGDz+P9!Jf?_v!mK2Zu z>WUp-ZMFZtaB-=vUjP4718pWrKTQA2)7(>VuYE!PXYUWUp;`sSAV03H@DBn^ORnLo)v*MkY+ h=l}o#K>#_4ssXFQLU;pTfB*miK>!s(YJh6+2IELKt=j+q literal 1001 zcmVBvc3%b}gF(UItQQ3aKmoF5Xi1d48~6kV5P6%|k-^ehNSPi05qK2Z@&N_}^lN&r z|8N~R00=G&lz;}oh_TweL|Fga00D>qvSB27F&haom1wz$9|A2XM<6IrVAPKX#f?<_ zNS?2K=l~!XT%$KY`3tjKK`5T5;6XTra3-YyL<5US=;KNAzy?qN5CpD60>)q(pq7B`-@wCEk6_jCJX>E8$^I? zA{w#WKmWX72H*j~eN|eY5f|x$ug`&oC`)Ug;UJlUeSR@<3;+ZHAOIW+A1o!uoiB_6 z;Q;m$1!4l@JOO|(3LK&vhLEC*+#bKlZ~%M+1yaBGIyfWJYKsoTSO7o(?usY|_)<3a z?*+IR5H*V&>ri~6mOXe!D9S{QV0etbf`wc7Fg9Qo_-(;OFV4av%28v+761ygp-&t@ zJ58=U@ecq1fS{!eA}US+Ev@9^;0b^TAX7vTaZ~40Bs7_N^qvL`;)2VA@2m~gn99Y| zr2ha00t!UhvF_|MtA2a6|@0^oq5yy}Sw995?_>o8+zU|Nq7So?G=q@!$J! z8is`ulM@jz|JI?I$DZE*`B@cJRX_jy!NY=+uwgwg&i~#Ymn<@500IGal*`{16EQHZ zU&*pWg#iF0k|dQ98~OmC#dV|iBYF_E|JUblK^K%e;;LpPfBL|Irw8d`@l)}?^S=N9 zvHr*|=Y?QRRtLa51OkA5T!3MJaY}#t#K!f3ED4C+%PfT_-_TI+TWEj&>I!OP@7e$V zHHO4TcaEM2hrh4@usL%jbyo;)YYCeXvQ2sa|0i$hAUEz{ z^TMzu+=RZ%UF}#7RYN7-XKnxv_AYdK_()*bljT%S)ztH}V8wbz;00BV&If=Fb XtHMHf17Cmu00BV&6+&%*YVZc*y=JgH diff --git a/samples/h264SampleFrames/frame-0923.h264 b/samples/h264SampleFrames/frame-0923.h264 index b77dc44457ffc3756510b0572337562a07720497..bdaa361ff5b2bf38c2118cd7beabab84427ba903 100644 GIT binary patch literal 1217 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 literal 1531 zcmV>{h>2Rn3kZ1(fB&nI z0iq$0vjZh+sNgCy+LVJxj=hzMc@MM+fVZ$F)rECfefEF=ZVl}`5o(nDNDX$^c@7mL z%YW|R${DX&ApqlLH@kLL&_V7PLkU_0W+?yP&;%Id&d$s~hE~jM;iYo1VxPl zID|T5hYNLv37_o&gYr2JCvg32Ht4QusCr6o8N*5fl_43IK0} z1(G~qoWLDu3B{2w{_sEsdIQ9lXGE|Q=Ip?b{>yOS2wu@f#|1ws@h3Rk!lQ!h6v_+E z>$sZT-~b2%5`X}J2mv6{c)IAIs9J0gdiW#ZB!uxXBBG5WfB*;#7!DFE64Edi;|r_B zqW}#60RRwf0ZEv}*D3~$z}TiP>WzZq_IVJQfBTR%1B8WC!EdEBh5P5Hq~gyJ)Z73x zFeQuRV61QCal9dL)YPeoD3f}q zM@{7JN?xz;44@nZpZ`yU*a)}fwqhiE0097@!Y1^EYQcIX=S6Yw00aPFcbZV?+m7z% zt_?pvRi{f}hBJkb7Z#{lL@<$IWI%ib1~@=JQdQw>EdR`c6(5oS3Pus?0GSRi<>LSt zSPh^9MKoEapp7L+y+9YB03aOKKmoCxF1Ro#E1!8$Cwn!7#Nk){zyJ^sK}JW;Xjc_P z;C?0p?Z9EV4*?11ya*JKJy-XP00abp22fBq;QzEK*n~CL2*3%t0003&0B$De2Co43 zKtln*!!Q6^HsTg{R$}^Mplp!nH z@K)swT%hHboA;dQ{&ohJe^(V#l+XRTm~U%^sDHM51b)B3z6@{YhCI_(Wbm()U{i1e zixO8z_{ab!s(Zh&g=2IDqis}}$O diff --git a/samples/h264SampleFrames/frame-0925.h264 b/samples/h264SampleFrames/frame-0925.h264 index 5230ad0d1d4abc5621a45be8198b411401d5ab33..08c0481fd9ea4e155e363d87b855a5dd1491c49f 100644 GIT binary patch literal 1319 zcmV+?1=#uk0003AFaQ7nL7M;?yakUG6wbO0foFuj!?=(}E5Jy)&d+QC0098-3JK6l zuMGy4?!J=d31R2}9$)|<9TU(15Df%`kDx0xBHjiF!7GwFWS5^PBv0CDd=SHPuu_I_ z6ecbe)~WLgLG$!51RwB}aZB^Mg5m&70ge!(*88}0s!nI_005u@icPf?>S8^9ny+|e zx`U+|P~ZZi5RbMX2#KKr$Qc@RP+&lR8E+T^5-TNfCdgB6A7d%TawUN zAd^A`BK%-D6S*<6uJFLjAD?e(4gxW*OaL3;A78*wP)RI)nh|>c^8o=qbRmV|qJRae z*bW0lyGESUVaUKTH#GGD@5sOghwiK#v48{#q;9DXya5HEP2~+dbdwn>u}}eXAt-UT zrAxZ!NW7dymQ}Fwzz#wce~vK87qt#X)kKI<8653^21rn>*+)O_fB-*c00}srhI{}Dj-c>G3WSy7Bp`HKGuTYP zxi@8}-+kZ!2nf&yGyz;Car-(J>0^F=w#NVfK&qx71DO#!`&a}Dm7at|sTzCxKnNHV zhL!VviZjkE-v9tW7)AOz|6x2pm+ioZ1(3WBg(KFxu|5>N6BuN1h9SbdlAH`356puF zVsMb+hsA76xhw;01>T8oznB3mqywR&rn*S$8!CngC}6*ei6mZF2e1Hd=|Bzw0fzFc z87v2GW*`6%Bme;c>{h@5Alc6XXJb!JjKEYtPlpW(^aKD70tzb>so?rq@rb}a00sh| z2A10~1B8_}S^wbt#DF_f#sUt65#zB6?jYE;4hScTGTVxO_&xvtKu87&W4;(O#X{di z5gK^ny8kjzSRIxZEqo6EDC)q#+>+zPMxqdY02?^1IA~(L_=%iJ-B;MD+!>we2hHE5n7^PDi1j+#WzeCca*TMgc00aQ(fCWGtfu1(NEG(#? z000Oa!^KYD{1Evd049*Y0}c{(Ljneoe4!5(&;&aG00BV&ZYID6uK>=#;0J?v06gkH z$wqZ}9f0sGAz&uZD2@3OhyVxxQ~}1rK!5;%5`ZXK0FmeyIAm9pBY?gkVkXrYd3W$& zPA`ZOtRM-2u;8ZvX6>n~Kmq4Am&-CM^VW2e>~z004eYkt`suK6mrF2*R_*j0Rt9m! z^njMh0 z+wWjT7-HJ|8|?RO6d`bnDdDdDw$m8^+5dbOE#1F=cjo*JRn&koWC7mm7PBV8?CRM( zE5pbl6hHtA&Hw@dzyz9jU?2m`LhmIDG&9$SjfVgXuO(;KfD2bSUL&dU46cUCB5T?- z6j2#jII=~Cct|%qD*|dTjDr9fkvk?#U0dBmws1Z<_QCz_h%;n^QY^@D2EmDzKL%f2 zfBn=A7^!swpgBZ+G58F{5BQQV`V|LZ9ZFw_wPW&G^gQ=d{-UA`?}HCKYzfEn`S=bP d0003&06B@U0jt0pi~s-uK>!s(YyfKT2IH-1CAa_p literal 1110 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 OchK8=ni?TQjQtngIJ*G= literal 1070 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 literal 1170 zcmV;D1a12O0003AFaQ7nL7E^Myakbe1p~1lQWO+`0uTrjh#zYyI2ZfkU#I{C$c9p| zio}wZF+Kpma1un_c1()?2tc@i+TNHYFtDccln{fE@RS4)w2Af4_yTMIKav(;5E9#m z6pGq4wM*v$fJ_)eCIkaKf&dH^fKRyRHZ(5={q(sQ08&^t;Qa%?Yj5>H4qJc#5C{M% zAX>he0*8tUG%+{4#OE>CD*}tF&k}cl01yJ<#s|}tspwgNh6vzHn)bl}Q3(9-Mv*%{ zg;CsF-~a>xfWXlXI3{w~D00Yd;YV=5EC2!kE`mT1YyboUe7vS$5`TCDz)(1r$b_CW zU>4jG$!E~~0PrewL1CnEp%-qv#X}GP!;A@SW>(xE*)+TF5C9MX!s^`q1gvHH<=_EW zAN&BIASnthYN-{99t&UKX8{F+|JJ)RH3aARgtxpgL9U6hW@BW;goSN`2S6us z33C2`gNp?spa7gDFN96ibo>OMpssh%M6~)RSFR!vd@<32C1*eirw@)Q5-{o5vn zLxxWvp5X#G0Sz(3LRSf_r%$KTh!r$C5l?PiLI1b_0RU5g!WTtQRQqDvL6}$p-~Qkba2%%v2uM#B&^sd#;_n7A z#)47c*T|fsU%_MF002Nl9ZUtxZL7ru#NtuhbQ(AqJUoD~<pE>WL;`0~?HBXa{R- z3LX?1k1Oh>5upCT966gG~wkv(&0fhho0EDn`I&^*p=pi9l zANGI%AP4vX02BfaXw>ehpr)_)cjV~PNWX1_u-5h3G6R1$-`utKnTF;9H`F1CvvM0EJ)4`4sveL=+4*w;Nu`P84x$T@FWa|HNxxIlp#Ogeuu^9 zpfLR{~eI6Cf$E!wQ94&wXBp8|yHr{GwBt9JXUa->u0l)}7R|QO0 zijCU9ZD0T(IVG?FQL#DR3qLRj0o@Uia?>^pxB8<1UK zNpP+I2mE2sLdj6Y-&Y!ao)rJwU;%I*^=fAef_r}Dpa2jEd!Pb|+#1Dy_Yr{uFRq2ILFCSs z|M#hAKjp9;ldh*pdYvn%?IGcO?}jh{K@_AR3R0AWAxcmG|9}I50Ys26L6J6ms3K6! zn1Bpyz9dLmum09-~vvCOU|Cx3mU7$O&#d1onYRsXa|0|2u;3^tdJ zq_4lcO@ISyxB(hC><_Ez^+obtf^fHnOXYw9Ns!wV+@gAtkYGL}36l^I0I&)5Mu41(1Ykny zYWkj?;$lYQ^wCfK`M8D5|HO>I0T2QqfM8G}NSo0L!34r7fe;q}1PoHds~Am`)tn_b zc!Uy^96rg!4{;=?aS1}RXc%gJa;pV{zn|%kq3IGUa0K5nHVOu&?gL@k) z02JL!K0-P9yZ`|J^PT`C*}|tJb(Qa+`P2-iqy-gREY5Go#YzKwDc})<97LQ^5qod^ z{r+Jf!EYb6Bz)oGB(Y<`^AQ;T{8xYg5DiAa0!%IN8%TN2{nxg}{Z6GRUM2vL=l}u) zuqx*PP|c0M8F`>S01cUmaY!-i_AflFu(%!4urqvJ+~c$^3Vi3 z0003&0B$Cj2Co5BfXoK~Fah8q7QhJIDYhf;!JJ<3jeYKb1&ZnQ8@ZAsul?WxFu+hh zwniR)2DL=P)bY=0&Qqm`2&d_zePRZj=7cAeeV7SfIAeR zgau9QCJ0I7-U8hxrV97}>y06!70Ab{z)gXe4g!S00=R9vh^DuYL)U}^T8}QE)x-e@ z`=&SK4nUoU&nsTVwoBpyJeZPCqvH{s``iJ^p$7@p4UzZXGGhi)inr6hTL()*YWgRg z^Wr1;8Gzt8Ep4VNo+r*}gkaGz_v`ZnJ>kJfAtH)K_5AeVLgDr~hHrQP8%@dTeZTi3 z9&cED&9e$Bo)>{O20%Cu3jw3&$+ae&XYT<7%TinX$M31By952%U@4I-l5{?|#l1yM z;63@huOfn{fZys7Aaq+B zSrE9Tv!=&BxPQyM%~W5%`RPKD|AU?pfj7VrJOBUzK>#_4rU9$K8;k$|0YLy2LTP|% G@CM`i!$770 literal 1163 zcmV;61a$iV0003AFaQ7nL7G4syaj>$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6n761$pfzS`G3;E?my;)cQc)|dc&;|(w zuCP{#&F?pi0UD0dhAm3%7QLVFVP0sQEP)@gp+O81Lzm4oU}hvJOj#MQ8|UYbeu3!J z#R~1>70w11v=b7v>Ni*^nvI0h1>_XKi>&gV!Mm2p`aCAqQNFeEexq=cgBA5X}b~_==rx7Y@`~b!s zclTzdgxp2;TI65?B6S97<77=@myLj64Y3$|{Fo6IGz{Vp>4Xdx>kJb=+5-pWatKm3 znrPb`piOuo=Kml7z!-J_2?F>O6cr)zJsI_O&~ zls$l_0Zj*xDF;l34^R{b;r9SwC@|V5ZGs*K74~FczyS`56kv!)M^h1CEfrnM@01_iPkyF>^A}1o)cUxD$01yKN zGEq1ZMx0BU(LEWA{lHQCtl4i*{lU3G+u~QA_xe!>f&gKV+=u~@9td-xj>BLd_y7n% zWVJ^}=GXsWa9!YEduG_*tE#Jj`~U<1!mK+BaS!>sj0R$Cn`Qt2fQSGH34jNOWsA)p z;0QP>08Vx;qwK+Os;pB!fC+&CL+R9R^$0>vG<5C^0WpSZ2MGf+wKrUTRYT!@08P*U z00BV&ZYGchuK`qF127x_&<6vE#sxVifFW?PIH95J?tle~&XgiJi5CMs@BtA(5I@80 zBRm@8i{=N1FV_5k?+3RSr<`~Fo(}^+9g0vi zr4m_oh$yq$w}GokvM^oMU!Ma;kZ41c%zC^8*cpJ}C|m#;m>X_zjC=V<7n95Z3loX= z=p}q0A?utVo}hUQlo!i8OCjx&`V+~CG`Ed_hVH!gz!*SKy;$j3`{k4~j}3b4zncfk zAZ<#bdEddrM({HMz;I9tvnCbA$h+o@5QbF8->o7Vd&5yu1U4A|+J8MVp$8X-$Skmp zzW@bkZcWqg|Fni5b;9E~`id!O;aC%3WCMV}rU9t6l~$^aA^X5Uh_yAp%zpZYChNz? z>yQ8_$z;lc9j~CNj#K>y8#|32+XKerP*hkA{-GTJgLeHZf#9j&8vJ`fp=(ALTzY(xxyNIpg3>KLAAV d0003&06B@I0jt0pi~s-uK>!s(X#i^Q2IG(1?7aX0 diff --git a/samples/h264SampleFrames/frame-0930.h264 b/samples/h264SampleFrames/frame-0930.h264 index 0e2ddd8bca1761a0a5321a2c9683caff4838726b..c172ad5161df99afdbd003a32444606ae358b81e 100644 GIT binary patch literal 1413 zcmV;01$z1b0003AFaQ7nL7IRXyag99t{IA-i4}*@E~$6{EK|T9BapcGSgQvW#Q4yB zksFo1Q-A!L!=3;T>f6yK*T4V}6;J>W0~m9JK_KgXJT%5oT>#(!2qDq}6pp4DPJ+sE zTu0_1f>phq82NcFt_T;eUzfoQHyZ^gVLk-K!rP^jrx(J1|G)r)rYN;>1D;R--~_-J z_r>!p8q334|xBwBR0|8737;HpT@EATA z0}?O@Y#6fG63;-7|Nnpn4j~fCq$^vp&{!aoLIohk0s-(z9{?qaU=D#A`JhLr@BKf( z6dv+!3&U{h{2|+<6JUO{REEN{6d)psW8tgB+{XsTbpdvqGA~jm!d3%KkrRg^n&1z| z<6yvspv80roGO(EK#CP+`KJeuPyRAsz}7OP-54i@bia}jqV0La|a)CRvJ z02~P2SUF<=2op%%QXhB%3qYI78hGg@GF4)|umH&l6`LsM{m=jh?7#s72H(cOq07W< z00aa#NCChP32z!DM0R8+D;&&Gmf*(FXba$C15nR^0Z~*Q2%%7tyhKmk7EHJy5EmwI zN&kHC00abh0~!FX61e@G3-z&(AE~%-00auEKsk{Y-}!)$K(dve%868V|961Eu4!L) z>Y_a2P4EB&0fb+pFLpf+Jbkz!!EaVZ!jS7;7>F8PLSqc17-AeD1d`xk{h-0w_(*X> zqIM`;jltLpy%JvjU<9(T9SsPY>3>++R4_?H1^iS=BJh`F6JUO@55NOoTmax88gDAG zlF?)U*3)7D0RmtE5FW*B01^%y8n27S1iS#}OeAM@(?Rzp&_E|cOW9fg3iWAU$H)XG zA??VtVkhg6hak8xM}@cIBnq;mg%6@Cu3xDylRld@$&G>qX>WJ~=l&$76^#X3L25td zjR?_y5+rKp!xp3H*rFh%@DCZN03nJWf!u8`yXG1_x$_S)AOL4{3>ai%`}A_7h-~!= z5cL#!;t>Dvd;kD|a2R^q@R42Ulk#m5&u|1Gf|Q#IDGJ`N{QdLTezpE&ps+hEF8cT$ z0HUh`g0f4FlogtT@BrDxX@Wu&sF`U6clfRJ3$R;lYUtj=XR=0r#YY*Uh zbjs`#C<5L53qnm_2mUYsI$#Gt5#qXKVA1vk7kfV%x|aAqil6@kJRks?5CFoC3rwlf z!^2<%Ij@P(L56nlf~Y*K05^ak$N&HVK>%(hpa!o3%nSf<2!%KU5!($e<5^N*3{)1_ZK8Ad}=^ZHKQ&SNDz`KfuHX0Y4Zl za5Zl`Fl``r|6mCE)9&yoH*)*m-T@@f(k0IxlnKT9S@Af@?>KY$;0;76MMQbo3fdw8 zG5`o`gGi5=0S!=b0pQo8(@Y-$NT~8J_$A6e_;BMVw@csu?Zh^>EcXH-$vVmXfAi!b z-Rsdi-+4q0un6nUu&^D!YL?sIJSzfi7{KKcCOQ6RZFL0YLyciKqdq Tz#EJJ00BV&6+&tNYVZc*<7i|! literal 986 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 esV!Lo_RTaJ?DHlGxyBB0D!2o4u(fP zX4Ho(p?*@XjjuBBl(<*k_nsu#$gt_{S2gox4163tl!VU#IuHS+i;k5ynEqAE?(?$h zKS#ER_a+zzyM@cE2KwmW0|>YQms|C0h^W3bqm%rK(r5OxG8e^z3PIO&^%yYx(x%Cae2*6;6&0Z4WZ2yN^$`q+ zxHBB!9HdATPl=(f<2qkkiCM9_Hc}GSjrl+)@K{Y6MjpC;dH*=7nC5c(cf__o?!-`@ zUM|NQdZfN274w1{VO9$|ZGpgUGGj`0<+tvLmh1*V#op4ITkaBFmk(ql#f7?%=zK$@ zi3^k4AWfvI=}w;qoUE0801g|}2xwMLZGl^IJX1sCHj97~RIz;>vry*5B$B4VO4@pL zZBWduKU}_KT`&3b(DF9?qWbF(bqVoSGx}f33TeVX^F<#j(|WoHCG3H^5R)Z*gf)p= zLmn&09cX8rQr?i5G8~afR#r=qoclV$2wx zvnf^K+HVn~17kyY79(UYg-8kkWv4P+3Q22hzYa{_etCGbwx_A4Rr9-W+IhwYdOa0I z?@hOpU1xDScjHc|Qix@REWZrtvEmWu1`&6x2S^N{b{@;jn`Y4_5wjLB%89 zqoiGoNJ}rg(o)iB^*g(|&t1)(_2~j!7<}+O=3R-^Rz@}+5+INGQK}poNbJyxZr?(7 zh-}sV3NX&DZcFnuxjNCI=iH;xvDlQSYHhTz(B27Sl@24^7{{bpbkFi-Y>)+zONnNF zwhZF+lm$~QCzjZ&i|(KK{QNFr_TQsJsznFB-IWBXR9#f<_}}3>8@5&>5#yqOXPT2b zy|1}I2?Lf*W){5@5X)J?dWq@jA@6Tn=LXgivi)@pRvcsh5HnH3f^msUkC+rBiZ@^@ z>)S>yJ13qwDc;zE=-Gp5naw)rZTQ+wVe@ zR@1YEjbBA2m3^}i7O5YiCo9e%@WBCOy^r_$9pt4P9gT6A?l}9VnVCnZ{V7^`QIEpB l)Id@wa^B@02YsZt*0<+&xp)(~ff<**HF}=OAduo;{0pV=TL=IE delta 926 zcmV;P17ZC53Hk?r000012`~Tv0YRFe8oULECxog1IG+MZf=~!qZb9e@01~(QxfF1w=03awJMLm(!g2_0A8r5DJoB#v~ zhEh@jV%AT#-4Y}C0e~5!$YJtN13bN~o4QHMh_!6nQR|M+E*+OF^5PcQNKL=gm_0bpPNK@o%C+z^Z_ zEy9L)V5xb?(8n(C7(^77g49z8wiGwekPtr*WiX0KB&CNil3n2n z(hMP@+vt@ecTxSI@Y=2vOXAYEI@G- zJf~W08I;UZ)SgNI07R?{fM^2%8U^qMs#fKE8Df&F{t@&58Mgjc#~^Be!)CMbvW_W! z*bpUut_U)#4y$l9yDNF5j6YviHhBI^6Cd=btV|a>Y=E3&_r3FOybNuf=jPQv_x|^X zo)eQ11V59{1PogF{QN|*1H1-yjWlUF4@#mjTB%C+yK_F zYWG`8ZH9y^9e4bSO#Y|;>Mxmo0LCBy00BV&If<$PtH2wK0003&02M-NfNJmtk diff --git a/samples/h264SampleFrames/frame-0933.h264 b/samples/h264SampleFrames/frame-0933.h264 index 8238a96ce41ab70d3ac3a0a725226e2165fb5810..4fa99827da7788b12661ea5eb467a4b2ea2ce721 100644 GIT binary patch delta 1326 zcmV+}1=0HJ3D66F000012`~Tv0YRGJ8oULOfAEM1fk93H4jeK7AS5&VJ`R%}+1WS% z6DXL|I*^^tPapw7(9 zu?*5`=mZge!fMfN8REoTQ(z~T^~AAT7yt+ekl+9y90r0%^c4!!obVBa3@YZGVG|*w z{UHDW6|VdN004lEsX#Fh8SiG`tf(05W#)ITkC{2=$fwJGn5+7NwyeL`J3PM zNCCjWL4GE=XUpCUCD6rC1XKzOB=n*&xPvk>i!hUaxB{7*`~VOPAJXvapNSDRj@_vb zzym1T#EX39Q*1aB#xiicCmpPm5+&ZU@BkD5C^Wy(AR*}#44mArz$yR*P-bAF*j&o` zA{5qxfC*p#xZtQ3fK@N=yifoL05|{$0TO5cqCR*ElL&QM-~oUFi8hOcxyFEjGa^6$ zpS`bt2!0c&;r<}c0f;{U06-idYoGE$1iG+k3bC3e001BYF#Pf=8?$`H6npmHY+VbP z()IDy)PC=EH*fx5n9uVRpEyWCfdobfA9VJ*ZGhX7#+Ree)xLYqj~-a12F*O zbS8R)Jg6(tub??j5G$6BveG?l0W*UENNNT_z3S^Mh6MTGSHQ760Z_`&zMt&6Z*q5k zUH|}qxPufJ!2yVmCOx=Cp~x5bzy=+ua1JNUR0g9Y760{wg%|H@^Sbyy@qh!Y0r(El zJTJgdQ6WO!W*_3EscrCncBjAl@QeTi0)XJNAkTzF-=_WUS{y>by zrKqc0@9)yl4i`R)+rW_k00BV&ZYH<}uRIF?Y6t}YcmN0xZ~zbm((npoXaImC?LhzS zyc9bkRYwLqui#u&Z4epN?chkhx8FC5_xCmb_L(~03D@*!;=`f3Si&dK85)yPJ)SN{J&`5 zv4@kv10<8s0|-s$FTJXWFB!LiF;Nl0+MO*vY6Hd{+2#>xIP_Yw2q))aD4d4lh$|a_H&}^Wtw(F~7sd(wJzqRdlRyMJlVAiB0`UivkOV%H kUj!2!;0s0o00BV&IfhlHRYWdP#p`~flm59NlK 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 KLTi9(@CM@-ZE92i diff --git a/samples/h264SampleFrames/frame-0935.h264 b/samples/h264SampleFrames/frame-0935.h264 index ebd15f766b93bb2c77f1cb632a0f20996be3ab0f..c63f05e0b3d3e2cc22e976d0aa34ca60980cd772 100644 GIT binary patch literal 1582 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 diff --git a/samples/h264SampleFrames/frame-0936.h264 b/samples/h264SampleFrames/frame-0936.h264 index 7c1e518a4240dd91abc783a0c9d0b40cb12c3e77..ed97251fdc947cff61409a20f91a38de3aa2065e 100644 GIT binary patch literal 1506 zcmV<81s(bT0003AFaQ7nL7PAtyaj>$-^SKs3_w!=1ONd5Fa{Kd)3am!lLnXwr5ED> z06-`Mo*69w3@=r_w}1c;1fVz;W(k@HuWU#cg^=0*?mz+n0RV!D;LM;RF{=d=XIsVj zoZ=y?Jzn6)09K_0jeuYAM3QjO9Dn>6rpw^~ND&MK5JW06@B%=9$&gVk_ZZIWNMQH? z8zW*z`fpnB01yd8U^oRHYXy&l?cfUr24GkA)<+!|;9o@HuwZFXB6Yj77{~d5CiA!T zxBvjO08yue62D;|OX8tvVnQP`R1EYlx24Y8_B((yJtpE?_b?Z*5J7AIsYxhXJ`Vr@ z5CZ_nMtee6nZt!&|Mu{L)U*Z~J&NhlN}nf+0Wko@1Q@f&2sRDp001BY2NmYi=(X$5 zA}$xA_kaN00Gtw+HUt%4BBNg9^1uK<5C8-NgKJ9)s|dToN(`Y3fDj-BS#fo%%L;HU z1b+Yo2nZeNpd*M8uP_h{R{#VE04NL!<7Nw&-Utc^ETPP31$t+Ys#Uxu+VfZMlcmO7Cjnu1Zy81e`{%`!xqfv%<0@DBi09iZ(00jqdhqh&&><5={AQT9p zi-9tZ^afM`1j;q~-%bTjx(p^g_yQ0RO2mV#o>W|{W0huikN{wuKoUe1y&hN$b}l9Y zP*M~tHc*DPVC&EbsU5~1CcpqdGhF~U0U<48M4*or7}aHgz`QpL7GJx?vlQI}K>!jD z4gi3Ft{z2ioPr?Xl2h;%ie7`n1q?(ahL1!S_NQgjDVY!ffJoT{knbBKM9vUJ!Cb*M ziVE^||CgM%Nw@GV3|+{@wr#Z(vfboxO?ZH)6tJl>z9H0SKyA7&DXrH~)Ar z5#R;4P!0(QEQuL==;QV511)R*CIBY@0yo+R0s#bY_9RdZ#J~VR-~a>^KR^IL-~*BF z0|0;k9@;zw=yQVanlYddL2FimNtq^07=Gvg)o}n}rX9+MNNEAo`0N7*!|6Q( z0YCx-2F@Mek$wI(+{pj`@B#q?4lq-cQ1ita#*)xs$eRCdA~T^OLEA5UFVi#kzQac< zUlGaA{%`_=)xZ!X$xg_(=UAW~j4G9FQ6)$K4FqYzV38KFTkYS@JCnP<0IskV8s{LQ zzwcjQapFQ#_w#@2IA1)d!*e%-{lc4u01m~WXl?X3mfU{uz;L_>z+f?81btsv|9}`r zgzAs>P>+&kgPpy&6M(=h!j?Kl8qnwfF@tsuaM;ubzdSLC0XQdk-~1)fv`5bNEO?x! z0Xk%CC&+YiAa=COumu1i0SBlCo+U@<#|@<30(1!gU>s=eBOPf5l~Z8W!Ttt0;xbJ- z4WNcJqG5l)kOjfvXwAmw_y7#eXx>n9kMUE>RQmHc7?;QK^Wv*UkkT0!nen2(rYuN<-TD2B0 z;Gpd%5-!~H|JH{Ac24p6g+Ljv5wwEfG!IfY-*w`9xdsa1nRo!kSq{7PYyctaZ>jVe zVfz9GVoaDB#Y7Cd&5DwxRRCe6QY4at4?HgdXpg9YL182-HR_+NkU%RYgVCVx_aFrw z3ZY+|737YM@_x$j;$p*}fhGU|0YLz6CeQ}20C+F}00BV&If=9ZtH2wK0003&02M-Q I0BZ0C)&6CtA zLRwQu01yBW4gj>UFu1_yRcgHiH}fzNJVau2%F3vytKa}(&J=+VR+h-i!4uQTwF`lc z0Lao#Q+@zD@HZpy%-4W{MX{$@;B*XXUUEAQU1ntAa46!2ke&fO;|Z*jNPDgODYVumNF!0Du7ofCPj@PgEF4 zY)(KBV22MT+J^)KQIqaI0jy+~#D@@G7!nUg6HovM3WosNmhD5T!Z7^40|M~?Ai>^A zrU3+t52`AByMYATXe^cKq0#|QBAOU^Hoa#rTsX(623R)lu<$9V$m2=QMh*kMY}p{Am-Q^a zfB)h505QB9@Ph+0Qi8CdY+if95700a2C8s-wC;H&nos|W>9oN(k5kpF()bw13Buw6 z;~)zgh4lJF@j^LugoE$_hdFMUJEO~JxZ)JkP*^~UyBgz4esNDDyEb$^WGJ|tgA}SW2j&bs3|Zn4CW`^I7(tORui!`m;P9nxH}4<;(FtfooFk*?VbRjs zqxXZkLf+3kTgD>L@;L4977c(wCb{8Q6HD^-L&A^^YHC7lv@~|EgmwM+a-UCM{d^EP zEV7C4VgJ_y-q-X${wOw7<=)f<-nP7v8~LlniTDr$Qe4fP^-!F^4?`c4W)Q%1jz?s_ z0ppaBAIA~z|L=4-M*uU{^)s*<1IR%SOP^klStzHk>v(Yv^8%G(t%k@7{e6STgST90 z9sj>1)q8Az&i?fCQvJ3X2#OnN&o-= diff --git a/samples/h264SampleFrames/frame-0937.h264 b/samples/h264SampleFrames/frame-0937.h264 index 3f1cd421743032feff4b4f0bfe9e530ea406e38e..35fcf074711e6af0b327fdf08ce77b004a02f559 100644 GIT binary patch literal 1116 zcmV-i1f%-^0003AFaQ7nL7QM2yakisX%aX*(`n`D(k_#|U4Zr~a z06+u*g(39p*#Bg~mI5h7`Th(xVnha;Pc2pWjlcXL0E_?v0D1tRp)0qKpefT&|KI?D zjN(mtj5&mhMP(D<2mk~D6f7&nbns?kh$f?|-~a>yj=-X8ULcCvHuFFG*Z{x)K;pyw zLLdTkmklA#Cj=WX859EvhGfw=7d(Z437wPzf&&C7T?-DL_5t<$1p|b;hmvKSegF<= zZ~zb<0H+{9Q@#RkFS90#7mRoS2tly_zyLslzqkNc zpuj*TZ0Js8QYDqt0g4BmPcX*BQKl@}?*uUdnoGotC`ePK3jhxI01*J7 zd$E^bP(mIjXa5E;q_Ua+@ixrahOX)uF8~*ep$HLj4H99ac7PBFU~!BX1>O=^aLj+L zo|j(N{7e9408?lK0FZ4o9}L#Rav%T@DF6Widr$y2AIG?XMH& z6<-$MxP;VPKnyv&3-x^pAl`5WA`uw`Vd3awhs*dFa>GGXq{z{j1MJ4gvx3NBfCYwr z;J^h5d+E^Fh?v2D03Z-B;{`cI4?Iz9WbPq8>Q!T<0+FvIXSF_YtQHmnwM@IF8=d$|LwXkDG~2rrH)j&!_=rR>C!c{X0003&0B$DO i2Co2kFaQ7nK>#_4wgIca8;k$|0YLy2LT!L*@CM^5DAVKs literal 1057 zcmV++1m61q0003AFaQ7nL7PAtyakUiQW}5`#qcDU@CG-Na`%dC0RRC2CpZduFo8r# zd19&;m%)gj&~SJw1;Igv00!1>5>Edz_y`Ih(s!PtV&t%suJ8dDf|Fk0qDN9cvfuvT zb-(~YKt!YfWIsM|r%U{Q?f?OZ0c1wM!Dy)887_NCqu}(S20-J2MKA7fNVNuWB7UPZ z01ya$NU$dDscm7Y?Irht4UR?z%zzgGrG!)wM8&`cPyjV|FnF72WhlLG{9phGFn|Dr zKmZ6tfCZB=%d-Hyz$lMF-qO`c@90DK4;O7CE(sqS+Gcs4r#5CC^XI1SB^o5H}e}k*f?lC(wa5z6=_$8rV&d1ue|R26Q4Pj4S{uQiL>9L3(Rx z*NAuk1OtvJE9b|+OKVvO&;=j_Amxa8g-n-C!9)sF{orAo;pD+r6$I&vq(W(mUw{S# zIpOHYVUqE4&X!?3>EsXx2AS{z-^X$A*lhx!`7^)}99bj8n;U+J{IPSEpmkq}HgdhCu)Tf)U{(Bcvf5SU&xn0|I7%!vM@Bk116u+UO1RpY#w#|eQEgI|osAb*u zU;UwZPg94oh2RRFCaQnTg#+vP>p^pfGKaO8nYo)rDWUy7!rlv zR5T2(WOr`()JjRt(egEK2FYfLm zf-;++G!g25)hdOhAlUAA^f6MmET!QBb%6@U|Mv%=1!;f)Kn;Kr|5iE>4T!)8t*?S} zlf8#X3!DH~fi-K=6zSZ~y=SK>%(h&<3vncrX9} b0YLyciL?Q$z#EJJ00BV&6+&$QYVZc*6+6YQ diff --git a/samples/h264SampleFrames/frame-0938.h264 b/samples/h264SampleFrames/frame-0938.h264 index 33b1bed8c5d7b44cc3e24e061f72ee17cb58598f..d4541b645f94154d4b603400c9da87f042b0b907 100644 GIT binary patch literal 1231 zcmV;=1Tgym0003AFaQ7nL7RXYyakbe@Q4V3K`sCe4+(+CK@>2c36==%Zd?Efif&fU zrX_JvFviwXeZV7=2z z?z|X7;9#T)d9_X%N#S&hRU+g70s}yNb$|mx|15U^0nxw%Hsl8m7y~_M>mUMv2h+pn z0wDANKvjTIov22j29bc^SpXF`?f^gtGzpkCf1Rb-j!ytw1+V@9Nk9NV4B!QQN7@1+ zW2{5ey7~bEIBi@t!5g|xi;aMb-e|BMDd0*tt%d*{4FD))_){TC-Eq$W2++gsd9t4s zC|;BB01?pt05AX$0T?Y)>OolsCQ>QrC4S-n2n;dMH~3S(AVaT+4pz`!8ymvqzP?*k3A6v{x#!J)*ytX2?;b0tNXN!$TU!TtaQ0fB!z50L!Ii@G5p zUI@GZ8Nz=SJcxxl`fM4^Iv&ptCS;p={5w-d+W(G>9E=fQ@&}F}e9T2LRA=IgQ`n&VViaD58XG_n zGA%4GE5C*W;{GHP_^1K^Am{)EU#e6U()P3(TZaHJ3Lwz4zHN9yj|CY)aKI204Pd!N zkN6mzO1RVgzyJsWfCUaY5Ym0GS_qD#NsJ5JABJO!Q`jYKq(w%VQXI$%4R&7d|9wr? z)P|w>5Cb_tVfq&mktN%RZZG-)$|*tKw0W14```%05G{p}FA~|6dbMZc4gV2*2?uZj z1XhOpPWdfcY@gA100IMJ4pc`1fXY(UylyVr*44K7Kk91V{rDvS5NY$^O#xBTGxe;tz{DH` zga`mw2=D;H^;_wvu))p`T=M zw}2I^9-M05r-b!#1VVr)Y!Z`6((4$4GyEBj*7xC`$Po0fB%1d>sA;aSKv9i^Rw~$R~IlZGtS_70BRDK<3Iq8 z2}lIaqDV6z>N@}(0ly$drBw9vbO0V9ZoIrOO?UMQG9mezGNXTA4|u9oL-2o|6@fVZ tegbX)00BV&ZYJOcuK;*30003&06B@c0jt0pi~s-uK>!s(ZUAcV2IEN)3vK`a literal 1107 zcmV-Z1g!f20003AFaQ7nL7QM2yakbe2ZQk-QWO#nJOJPk%e`ec-@D)hz<>&W@WHPX zzuki5_kc5i=C+#LT!DyVX;9Myq#h9U89;^zK>>&$D0LI-yYK|a01A^s&jUjH@Zy$T z!Ykyya3}=9gfd`2HUhvP03ahk@A1+iTv-x+?|L`@3TuK>12qMI+DUdm0+#>)AQ%8C zU@ep;P_UwhPL4!(n4ID@1&|zdo+MbG001Bip~3-`rmK7&U@C)X9wxn*fvzTqu}vd( z{mbD@d+-1R0sv_OMmX@n`@re@K!Mtyh8lo12`3OihypwmRAU5B0C)ufMmAJ5MCrhD zh+`~@;K2L!BYeRK=b=7J3r%qQvQI0iv=Sk4=2C@G!viVHmd2D*b{?+T>pto^!_hW zAEIOUBlCz`M5T;ClsfrLs#3Kkw+!b0cXLxay;6r#k%MU&tdqO8lrjEEA2)L$9W|Ly<)KqOFxnN4tf zRcTguk{$p*|J(uv0HwS%R#GP8FrHK?$KD1IQs>d&@+8D5S@djA-~b2%AgH>AM83GjOi=m&!+-#QlG=gbR7~16q=se%9RL78AMgQy3IWITZf>Mv`1Jnd zAPgZOFxZ&^5YUhb?Eoo&aKL~CfR6wp>U^@^2Qcl3LqIDi0gqo==h3R@g91I6eE^_1 z7p%X(y}#D4zyJAzw*nv*1YioA3`kq>XK#Z&|5U)xG2wFnXP5FBEBHCs?T)$V4Y94J zu=|_)OW;BR#@&QC6M-3eF_7cMC;r|C?eE5fbbs6ifMYrz3BLPbkN^Kagd{dZ-vdw( zRyojGm9c;P@F!GHWLy_TgEs=kpc`yyIMu&T3FY}YWE2ztLtvP?PQi6d;wUsupbYgO zp@1CdR8&Qy6M1*Ocvb|`{iRAgB{F*x%ijZ7@>^B84lDHVBs=Y0cc;L;hg;idSU}kave^2s=k$nHCjCKGHfN#tZsb)QW9sm3Q zd&1FIok1QXf1xuV_)PfKAHRQxsJ_45y}|x?P6Y3tfSZ5-00BV&ZYJ0UuK;*30003& Z06B@a0jt0pi~s-uK>!s(ZGdX<2IIJa-8=vQ diff --git a/samples/h264SampleFrames/frame-0939.h264 b/samples/h264SampleFrames/frame-0939.h264 index 5f7a7766452bf7b740482c60707041c0b19bac4c..59c1e0be41c610ad0d324e022ee1e60c718d35df 100644 GIT binary patch literal 1518 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 HYVZc*nqEHO literal 980 zcmV;_11tOh0003AFaQ7nL7Si&yakUaQ361mcv;K*6YwF5@BnZ?C_s)VBux{@jM^Xh z{`kNEKmZK@1Q5VPjcEM-iXeXn-~i~vWIRkJLrl_dyaW`HPASu8Qy_E3M0T*)cnsix zWB?E)Sm-1=^@s48Us|fOzNd00;*hTw#JU79iAZa%8Xq0K_aoqC^o@gl~(0L*Ntu0RTXi z8zv5j=X7ytLl_2Y2=usR*#^U}ydVJ#1O+_z14Kk0mWO!21?n2q8Z*EE6D0lD2Ve*Q zzyb+@=Ut|B*bN?m+wcL4!a)FSN!SWr<3J~eT-jg=+}7qUcuV^N1{Vqs;fdrhXaNi% zhJ>f$&lw0M_oH$S00RYh2jvA_K(Gfs0wF+ba0u*CDnLlE*2hZXQNR69jL>JrcfaZ{ z3}6U|FadDF0!>rqaIhlr>){vx$OvA6Oo2fv^Aw9d=m&0>H?!Haq|X1_o5-YA`S4{yrxFluMPQ z2n-L6`Vh)42x*Vs+JGuJ00;?Q7y?jO00}{jj_(5m@y-q^ihxKbo$rgQKx*Is2m#7S z01(pF0408daF?40{=ggqA>J*73y)IP{lH)WRNyf9XN&DV%y8CO|8ObC&;;2?e=8rg zo?r|B$_^2p$h&6(#g1q2514Y)%zvd-m;6Y%>3ION|0>|(L61>%4?l=bF%(7pS_6BJIJ%fNI8H7hb1J@px zkkvnU0I)atbd+;_wieb|B5ZG(00%9m<+<+kcH5S7-!ZU4j=d40+80zsm*iy8~} zOB$fh1sV_Hz;8JA()_Jo=1sr*dLZuy08kzxFsy6r5uUp9zVFPxHpKkk8N+#s(GTCd z$1_kEhi(N7jgniyPA|kQSVK4l0G=eDP%9|eU2_Vj)c4v|e0$;#kB#%fyAoh<1mK8J zcp^PXh=ju{SSAr1fLGuIPg+D;7T^R&tjLUiz_&!oX2tICIW(4%hxhIC!nhMv#_4x&f=e8;k$|0YLy2LT-R+@CM^x Clceqd diff --git a/samples/h264SampleFrames/frame-0941.h264 b/samples/h264SampleFrames/frame-0941.h264 index 456a7e50c423216cb367dcf10ff13e64f126b579..36d82ef8cb3fa32ae427dfa475625d7661073607 100644 GIT binary patch literal 1858 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 F2IG(Yf_eY| diff --git a/samples/h264SampleFrames/frame-0942.h264 b/samples/h264SampleFrames/frame-0942.h264 index 31ae9773cd07994707deb4dd86569eb7b4e26b8d..603710ca0f4e1b09e8675404166f28a3902498b2 100644 GIT binary patch literal 1466 zcmV;r1x5M*0003AFaQ7nL7D&>yakisVGrL0Kfo1qQZGbz#E*HNd{xk z$7Tl0KtpLbaMJhxB0vBj2#lBjFbD!pB3KeLbMQXA3JwtF9p5Pa+W;Nd-~b>X0+@qH zm%jBa2mD=uU;vPmXWK-f-GO2tTE=4Fpa2j8>QDd>^9cX}3F9mT0fQAV@*WESn{ZNi z3D=i~02~#80L+DJRAXJRsa^u00cl#C6NM*9+SHG011*~b|X$z zL|y;}1K3CZMX;L<5*btb!k{z*WuI9BU)Tz~*T6aWMS07dkORShX(cs3!_@D6|! z2?BF`km>e&*cAaq2o{$vm>?iOh$4wXUj`tc6tH9pfQ1?K0fzx^{`y)$QZr}g*;J{Xr8sIvH-NY;PSz~{B10cqNz@C5Exk2p4NxYT?WS~HC<)WbS zjVu5zuz&y{Bm)_fsF}7V0-ZqQ@{2znzi<#>fi47op;^ZuqBZ3J$=)Z*0ZpI~2@j%! zff{}ea1a0xIRF6#9>4$)IRNjz`%Xgu0Rd0|5DnZi09+??{D9cwfudz?+Q1j3kj+OR z!Somb2vz_H@IV0JXnaV6v`o~XOW<)&xI_ubNDD%3d!eWmNR1?1a{%i>fR#`ZzPHQx zH~}q#5Fv~x*dM?Efk10*ZDIf~0-QG;0Sp57fB+x_0fF*69;jtNz$4IOJR7{iQkbYK zy@jcSsWY~|0096n0>Bq5(-P{z;gUTsVR!e002LSqjvNtd1bt8f*ntPY19t!%2Z__J zGrts})vAZ#0=U4_MMBK*R($--u$Mp>00>_Q00&$EsPfhpWiyI=gNwjm4Cb$*A|9n;7=D6gV2_uV5#%KFdS~ood=rU zT!2nyEfsQjB8mhSwNdF`k9BFDyx50Nv<(M><#}l)f)~Aj+;YN!OsBpUFQ27yvQr^?U#R{BoPavqC)D0I5==`!JAC@11m&0rvOcz#a)7NRtEz7{dZ4 zjn}@&T1H89hyVEVrxpw7;7-UOb+;%42IknGTz?yYVGqARZDUJf5D(^D7@q5=Uy9iT zB_jJN1VG;TSm>}v?IP>jLTl;|hM)&Kwi literal 1068 zcmV+{1k?Kf0003AFaQ7nL7U(jyakisNeP4pV|3^id;y2@_PepT7yEkT?}pQz73 z0s|jYB0!tArL~6Vl%E0{9E=UCz+48Fkx)ewCx8r~0BG(|@i-hq88$0S009N?01$`( z0SK@FqGmaEU>BGL5$HOe7)Xg4qVvFk#qa=0n3(2820T}cSfkj&aA9uP_~WBSKQcISUOpb>Vbh(B1?g z1WE7$@L&Tn=#U!-gsgA>|BL~Y0C3%=olThnsN+t|0SqAriB$$39VSPgMC>7e0DuMn z1qTa~J-3}Ni~`{R_7Vd)fSAt!z%U#wL^cW_K@&ALd6M7(@E~O?-h!g1xy%t@+Ux*8 z0o^eU1NAW)_1^Q958Dc0%Y2IDKNTEfoBbRbE;g9fYywi9GQOLH-Sod}8J z3jhj~p$!z!UYgo<;vN720ON`Z`SI`)+SWoe0Z0J|IU*imGbPh_Q3AC;co-ubJeVrt zprtW%h)pp|@BqNa5*nQb7%vw*>1Gqoo~|jxhR`YxlRN~wh$wg% z2tE>Y3%oE8H!tV0-V^~tV~X(TmKWXL7(v7P8x94L7po75oZc*%;M`T{f$F5DWh}K~ zoDdkzFkA$IX!U8nY#0GRNJrG9)0|a*sbRmjA|K*F?(ZTYB zMMq#52{0PedIa$MOENbApq57|f}1nbgPK0Orwt?s{a5$j<63P}_432+Q-0003& m0B$Du2Co2kFaQ7nK>#_4z5%Pi8;k$|0YLy2LT`X-@CM`a)Wbjk diff --git a/samples/h264SampleFrames/frame-0943.h264 b/samples/h264SampleFrames/frame-0943.h264 index 8657119f4569d8c6b6a17f088c97dd3ceb9830fa..5510db2352619cc7673783a8496ffe4c033f8e75 100644 GIT binary patch literal 1496 zcmV;}1tY9CPaFW?3POJY6R&V$vfA?khI>_cH#P$G0}w_Ofz`E3 zJl_F;FLzi00+~w;LXY}MGz63pu3nN0m%sSnNB{@|lz;#r3>+WIicq!y7^ef%03!-P z;~7lBR2&oeN^iVC03bbpR0lv8C)>jjjS>O7hynXl00an@#5e;CxEKGF8VOSQk4yXL z0RyB370OP`0q?;0K>&E)xB>x$gCvZc-)S}?lOQ?=5B~8m01z1j0FR{W0J+d7jAoZt zKp>76R*Gof7AE4G7++IReZ}|yBZ34Io&UDtsYD$+4zT2aI3>mC6DM+_;uccue5B@&Tg1z2vwC(g*DT06-K# zD7X_szew8H00)mig`NNafFMrqqV z`@#T#TrdFkB%;RIhOp9~|M|QGjYA03^j70%2~9xk6+iz3a|P8pABy1pNRss;L_7td zLOU1$2ndki03aL&f=Bcf3e=qN5Q_>j*B5)I!b(tf00Ju?;0yp1V1-Vl4&7m2dom7P zHIy7M9MC)faAAspf5MsTk8RO49tLuQS*t$iFs1W1ra%C=Kq$VGWU%1(frPvmx&Vq{ zL2ROwNH-8@1yB)!U_u%206+ns;c+K{dRBmAm@v_lS=WFV1tCTPMpRW_y*AhX|NJiq zpbpkrA7BOcuK)l*0e}L6*KC;3;U6462S4Au1QZD*HBM31UPv>lM6u_Y768d;0Q?u| z4Qe=5|8Zae5C8-Nk^l!yfYc)jZvX?o-T*KFqHHg@j1gtv;dZGKMvK7|00au&QGfl5(niO}*_G zI;H^!Nq7SO+V+FU{@>-`0U)N>L1xl|11oT2OZ*e~r~&{%cmOKbLlgh=P<@H6`~V1l2xH^p6f{S)-ex$!25$fWKwLpe3uGrz zW7UsI)423a@qxRA7ztfmva1BaYlz)qA%@%90096X01#r30k!adfXhe&_*n-&wN!7| zKl|{E00aVn;FBQVghk((t6jDXI6g1+j1WJTk%93z1NQ$}A# z`@$&l4OH~Ee(+!f0dObGB5FM|9kh> z2ZDei4!{$4eCMtJ1Wwg`ME5`HhRtjm+%x(d)Ay|E@q|7>lX9#7s7!bLIMq;(?V#_4q5-SG8;k$|0YLy2LTG?$@CM^&6I==a literal 1257 zcmVyakiQfp}0-00;;eCNVy=%MuFl(LJ6PJ^;Z$(YJKN z+PiQ?J3&K00IOIfAh3q>nQH(xs=y$csPlLT00aQ-_1FMF2&K5CCAT0zJbyv9WkH^QGwE08&^t;O#@dYj5>H4jcdgfItCB0@w9O6gXH}p^3fb zCn$^JSQK4dc$5490DuC87zn8?Q^2zE3=%+@E$qwzL?iJ68N}@R6-RM*zyJ^g14uMO zjtQK$37s+Fz`FTvhB>wORfS_?rz7%xXfLCx$C7(fo_yOQm z=z_yYV?r?9d5VW11A#^axUw9txIMCI?+^eW0Yd8BQ36&n{c{iitOOqbCkv zjKDynWg`UzQL6vk056f))0u^w_W%clZuiH+JrDoS_)Ve>sHlrP8&diL+14oNbTAxq z@4@)a7yxr70H6UUzyLrXHXe-OqxQhuSBp`q00{sA1|9$aK?r~oa{&Dm&*ara99H3(Uht&7C-$vjb;8YYZI3zlaXo)kt0096l97&e%Mwyv{Q~?n0$ACI+ zf{D@5D-)GF55gO&Fe_Xl3*%6O9AD57abToW024w|{K>CfKLIExE1UDtF&>H0+uTAg zhB`3GY3#OFn+Ut*B>&a^=45DWDGAOc93V#kA*T>5C2*3;g!(`Dx+Z)OIHw&J5Z;|T z6Waa4x-`BCM2Es)$PtJPjQ9fp0RVSU3{bN%G$1X1Z5D$Tm^c;Ib`k4?)xUfK1UjH$ z0z%5RKup_+;5wcJQ6`XKKmOntqA06G3Yr}Vr?@Sk|J(oofGDFFT{S^d?ThaQp`P4=m*+6JQ~bN_8RtgCwBTg%p^)ARA{7fb9+e0Z~P`HAqe5)`s*s ze+2-$1pv@_x9;D)`Um=1NBv-fzyuuD4NCw)(pU)My$>Vid_*e(YLFTMAb3&$+U|J+ zG3~wvd;TNLCVzNnPBDC9{{r}&wB-Lw!YDj}x|Wvj>MjfRBPR@&J^%iYtYQl(O{U|? zDxT8`@Kd<+0JBDna>nxC#><@bMg|-d10mP}y=`tEJ#Ya+R;s&y5BjLt%P?<-fAP?0 z{k-pYjF5bTB;|L%P@M1iaZ>+yeDJIZ-#-AxzyJUNK>%(hfCjGscrX9}0YLyciJ$?i Tz#EJJ00BV&6+&nLYVZc*jN=F< diff --git a/samples/h264SampleFrames/frame-0944.h264 b/samples/h264SampleFrames/frame-0944.h264 index 4275180890f02e875df0da5f756a15a8a4ef0ca8..5917ce77acea187b49c2b3c61b08bf3b9ed8a9a3 100644 GIT binary patch literal 1596 zcmV-C2E+LP0003AFaQ7nL7G4syag99>;NB7fWhN8&w0jeK>!7ePRX|xcmPrW1LJXu@(bv0yb$)WnghW=6Q~Q`VX?$oNO~A+3n9;` zYwCJ)fBiU6`~X-+0B{9{kfuZeL5y!24_BZGhiK~p#&$$t{9`@KABb~f|E-}@4O74Y z006)P4vVRP{0?U(U?%a^hp2!6KpJWR8Y7BuCckvuJF`d(-|zrI4gRv6)uGK=%6H)$ z;uJ$gv$TjP+iG}ZgBAeYr5Vg{WMQtE>=gh7HuRtdG@3C~IwbX6l=kLtkYEhs7jlr- z$gW^x|G}650svqDASeI=1K<`+;6NO(0+2c8`MrSn9V#Q>1hBkxebHa{*KEV|=m!EoAmAEmQ5mH|=wU-QcZh}nupuC` zc;JZwWgI zMLwlgx%E0r)ahMEX%7qL_P5&DKr8?Vm;k|tUrDnZ-pL9#;L8XslJi;^aHxw<|8gKG z3*DhKm=^m*E&u(b00ID@VC~~F5*((Z2!zWBqy03Z*SAl{Je{u){PhCl%dHknB#7^WcgOglqsBZU9D(KLP`-zR=DJ^{DY}vLuRD-}|&BJSN3p zk0g$N@BsAnX3B5Q;Q#`R0y2SKG^-;wul?Wv2m;s;0HRz6muG60g3`&yKmZU003b$< zvJ;Yx36Y%@`p~(K<-(b#G^PH*<_#rPf4}}%05W76Vw1R@g!q1>3AP|00bmvCZ2>tP zFnSe*zyd3GcU|yXtV%=1IPd?<;D8bd1fYN%2oMkoYtTJKc)HGKO8g8BsqCW+DsSJs z5N`VzdRrbV-;)~r(!kZav;m;b7VYTq-apOY0EK#}t_o_+h0%~cZ!f|?fDQnl9VRFG z(Jf#d009Acl7Ik1kN^Z5-@Ud1rk@1FZi50tvwG2(A;o7iP{6 zJJT~T-AeYW|Nr=z004oZkHjpn1(j^z_y2?78NjkOO3mZb?8TIPAAlGPB~u1S3#7k> zYLp}E^>DYH3?(Qq|LgYlZMGPGtN%BVH_Ui)04{E(A2E)8ZvX&5R94U;GiZe9p1SS8 zkknln&+H(lvnO*ppP-X{!0%T(&q0A6pZK6&5jD%KG9SR~= zq{FcRO~U{WWP=U9h7#L{;6Deag>)cBASG^l&3*nbpUiQdz^w5uHwV$r=l&$ZA>d4< zU;q#YPzFB-K+gaVK%($CrerSF;l^>H3s`D)3I5FKHN-J-ckq7`35EpI`TYC|$Mf(f upMday0003&0B$Cb2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM@CM_c8nXug literal 1496 zcmV;}1taKHwEaMm6Lrw8w2I$X8@5QCszlLVg3;yz*Q#T*du zLLzv80K8^-umLcCAPfT}9|KShzz#q>BZ+ZFI>`Ll5WoNs761qmGcDi%fKUUL0px^@ zI&g~cK!Vak_$C;$FGw^b-t|&#fC3wUgDXi~Wh$#7(J?PHzyLrW6o3FA00MxCtRzG1 zpWR6+{JzA9z)8SGjDP}Q6Pz}IH-iM`O{5%l%j!MGFa!|$;gVFkn33WEP$_sn00trf zpbxw!3v9w~TmV^^0m)Dd5-%@&B2hhF^8#v8h-0etr7L(o55jGWyb>KHA{~n#{tOX+ z#th<@&Qa?vf{1CTa`~o=48)Atrfd!3-d+2_d9ghemWNNc7`>sfBQ5^v4PujFb{CkT zhh0bK0jLO(6)hs;Km7O|(rmpq_xs=jDGcMOHq@Lk|91!g1OWhwsZ9pnb+0%~a`7BI zAxL;pazo_byEH2R4-t^r3Pp1ig+G9118BY3Y5Ht^wbtZd42ixX%M%AuDR}T01h|Yf ze)uv@&}T5rnBhm3_lZB+1`EjUa*=eh#MmDM;eY?|1_zbrX?zp|ppX*+#XA@jVSo=V zi<(m0{_a2mu~6^k2w&?wV{Mz|;WGI@2_$oUQ||~61lIx{kQ}|-xg_E9U;;$y0N?`v z6J-*RcvAsfQ>-Wv>u_!W5v-VyX}I^=KW;xSp#nj31@R&-Bme>eU=wf+Vm+bhb7lYm z0G(O@07Aq71Wyho00x>Uq#PG4u#-##0m}qFRv903={mbv=Lr1ArKepmgUIQ?@++cLt)$8t@ig ziEvbh=YY-&g5gDIaC#eKB4yA9067u2qd*?L{%`*xL5Dm55C8-LKo~l&*Ck2Z zKsxAKE0h2M4vG|FJXCjdQOdai53!tc(`AXz^LayDG5`SpK!9AtBCU}sGC}Ki?-=w$ zfB=DqRqg;1BRP?8UzmuTi(%btm%soJ0|YYBcoIgOQ<~8}8I1kFP@Ud0Wu7=UC>6df zdG9}^yzoE_G8>TqHYLFhbTQy;1MdI<2n?2}=@EwuAHBBOn=sYgL+}6)0}8P0 zEyO?O?l2jNvTc|E0s-IvASM7F8@ARrXK17OG1 z&!7GOfwd-J0ZJgzC@-hG3Fz(EXgY|1tOgAiKMV zFbXZA;7ys~!Hog{CIWzPB)|ck_WkYYKn*ye2r6hU%fP_EkgI--6%Ro6DeM5RTUk&2 zu@HwU2~p8gIsgLPJmFVDxhF*X1_aZ>x)37}5QdH2cfNj2ugpC2upc~5luZ+oNBjR0 zAVCAdPE-H`s0Kd+U@|NKS`2lAw#Z*UFB+*+d=JXQQn1I&cADZadGFx#_4q5-SG8;k$|0YLy2LTG?$@CM_--gMsp diff --git a/samples/h264SampleFrames/frame-0945.h264 b/samples/h264SampleFrames/frame-0945.h264 index 4d4f6ab0310965c5aeaa7dc28f456e066d98c356..5553866d1d0b576487c453ee046de0402bcacfab 100644 GIT binary patch literal 1379 zcmV-p1)TZ-0003AFaQ7nL7HG1yafyp1A`lY0oT^HVL$J$76gHT4geVI{!`cAk^BLL z5vgsmfgBuo-~faVtqYSX3KW$p|GgqqW9@@IGidKfSP9i)KH8ZMq&<9*=|;6dBRB;a;u02#Eb~c zqi_Jtw)suZfB+yG0YP{Ob>X1W&G)igp)5TB1uy^*5Qw}01Oq`K0R#kzj(kHk-+A` zs;z+?H3;B%0Krapa%l?MumIY7bXJvCaJf=~}{S1ifMCOEVwjdqrkv z*W|xYV_<|Fj3~yDegHZNh%%I69HW>~4#PkIX)OQ&0#{4}qTR)WSa1VMDmMeY_47-h zJ3$xH4zmB&3>uCxKOrb*n(!Pf6sHIinU2a0Ff73-f8z4Rumg-?Qx5as5btWu0@MQN zB7#oGKYsNhOVo*7N7EUl4FA!f0bBqC0TmG71_&(He72y&_-LR3YPJJ_;cn5VF&A<$ z42{h_Kzs5q0ipY=2P|L%1kyKDhu#2!&?fSRo;pd4l~}KA05U>_X39CgbN~VSFaSWo zxACwja`77g0Raut0B{3BTgHiD9hnKr$1@aVxJyAmE`f**Lp}fn#ZY)6g+fa65fC{n znd~AkJx%E;_uqH`0s=e%ivU*$RDR9{`dG*W3vLbo0D)CZ0CM6dzx}WR2TIREBGCxf zyMPcdDGezzeu^v3B;Ei3Kp18EGWSw~1ix?lf*ck?usRfvT5iPnQuIt=mBtu{3i3#B z96y-`4$s0viXRoRGUTuguorqIzW!hY@~|BX9aYr+v9hROl7U+ z0K<7yjFth}reXjA0zd!|AjNC|5)K^jdc23o9s>r1K%>b0{^ju^a|j@SfPfRtHb#hh z>>ZI=LarIt`MfrD-H-q9I`mu!x}~dK~|;z3R3TrHrd;0=BN1~0Hdn|19D4`6&i>@KL8D!R-803UVKE(B<`#L$KU{p zW77>Sl&1SY8h{Wpg+Wv(I?IE=pVx+C1ud!&(qAT!s(X@F|*2IF}BHc|ip literal 1201 zcmV;i1Wx+^0003AFaQ7nL7G4syafyp1A`hm5Qqo0TOQih1R;aC=siFJAik8%k}v{~ z02re&4WdXpK^JI{67UKFYDg9+E5^6LDrWGIP|5)Qw3}JC?b*QMOYuUN?hnQT>|7v; zTEmEmn>^LxbUA?mHYgh=e}e&KF`^K937H27tA@f5*bD(7Eqdl8mKc7LDK0WRjBzQ5 zFQW4sf~`JCTBJ?%nX*1XumA`O57jo)fC3#R6cRQA0b{T@lmP?mN~K@_xxn2Xo&eOB zSR54V*Z=^4C0;IR4_H1Rej1?wq^`nwx8j^ zAP&q4W8I_-XiZapfD|1;yx24VKn6cT%rr{y00aZaJpce87;#ai2+UZ6F}2B(zz704 zA`KECimWGm2p52$00;sEq}ecZM?0g7Dj2{sSVyIS7bG76DSqB6%>gNmu5;oL2eun5W z0G$H*3SYc%J)tzqf;hm}xFMlq^5H^Y1Wbm=QdcvOufU7|6aaaAQQm;5WW=4c{twJx zyoJ5M03bRIi^{R>{o391pJ?NF5`L41AVDzf6B=fx1gHhB`Q1Oi+ygM5LX4J`?j^sW z0Rh9lX+1J6@;uOf`T(a7SUH|hUmSgc+W#>)37}DwS&F{`Pyi4L7iY@{LOYo?=o16* z3cg`0h$cqRuLWe8TpsdaekaS)j|QI)zyt^oE7y@#QY0&xCwr$L3V;BB3uMAH2iHS!fM5Xb2r}b3uSy5&n6tfwC|x}UK`RP7f}8{32oxn6O3`3np*(0CUw00098-01!2p0#~1aR>ocoYNx^B zkWaL;|AB?;eSc|d(t_oB`ZU>X_zxLPV>pg;SeWX}JVoEa2vpAf^%(hkOr>+crX9}0YLyciKGFmz#EJJ P00BV&6+&qMYVZc*#rfs& diff --git a/samples/h264SampleFrames/frame-0946.h264 b/samples/h264SampleFrames/frame-0946.h264 index f956b8c970a690c959912be368e025f88d5dd220..942bc7710e97d2b69117c3ea4617b867d629ba78 100644 GIT binary patch literal 2097 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 jmA7c#9sidK4lRhinNTnE zzu`b&7zP5w49#;*^yImKlj~Jz@qlS*7&|}gKq$&k0?C^!kO7zuQQL4ZS_Iy4oaHD0 zP;7Jq(Aq+AWX42){sMF`3kMP$Q|JbIc_fOZRaA{$)%V;uJ8TEW zML2oiTR;FnOQZk=+fX$E5M&mQ78}Uv#cl{R{}t2$R8kM9?7kZg`i~GeG-o&Efd}_1 zM8@{D5AWy#00II)03bR6VnU=#`~Kauj}75z_kaKp4FCZE@m>K9M4O?}D7q@d-TnYT zb;1V1`{P4`c|=hVMi0>B3gCs8l5YtSaL8yg!48^I(A%eE$N$z1(Ly#%kxsII^rqej z3;QP?)Ybq8Ap}^Z1}YI6!g%_czNDgF2tm$o#Mzo)AHV?s06+`@g(39p*#Bg~rUEHN z`!E0m0)RQ;lE4Il0fD_3V6Cd>h|}iD1^^5%Rlc_%0RRAiK}7IoP!Sl_f{C-V0096& z&mN4{3QdftSCM`D#sdHW0K$mX4F_OyP6%(qj z^MpW806+#Q+HgDoIo=B$js^gNZ$;IBL=jCO_zeCLRA3CjfvKW33wRMAEF_;a4hNGA zOrQb{q(BX5P_)U6-nFW|mr^9XNR`xmGt35&SO8h20hD+Nd|1;$QxXq=0E|ebD;ctt z*`L4wU>`vUrz$nYS|DI1ufb3a09>w?5H@N9xIxGO1Oq?-KzIjViigtLwnAW_s-b`$ z02~hk^FV=6lP@p@z&OF9^QMyqMPhiiH<>14Zwv_@PF|(%-M#n>KMjw0eH#~fma~WCYm>B0RV;v z7{P#D;U$L*$NJgn0eyR4@h||S0HSOI0FY%w9}HG-aAE)f1aJTlW9$F{1uzHf_ks>s zPyi4k009Bs!yo|=+;{o|VMzhwW~47*1nOmR2uKVbiG_G*7zh*`;`w&?ko5?4kiR@W zz!W^gU_<96*Am9fXNTj(2gU#b0l*0KG%RCLGi5=PKm`~88Cnx1{_4CKKSIjfQETP! zHl$|K+88hk2xwSZJKs}R)RarX&=Cm$aoP)FvR*H$FlCGB8~_9eh{ym+tyKr}c|+>_ z-AFtEgv>@k7$mwF;EI0%hb%M|N=$_bfIiG@i#RNeE;7gfSZD4G08p2{oehYIj2HKS z5HRBfIYkdVQLJe#cw}$Cm?cnvLEz?*;37(1OiC^mq2ToJu6_jb@C<|i00BV&ZYHP( huK;*30003&06B@O0jt0pi~s-uK>!s(YJh6+2IJOr@>l=> literal 1131 zcmV-x1eEAFaQ7nL7IRXyb3P_0HDLL0847nQt+uE&#=DgH?Bg8sCn2}7z;2F zp+dMFR|N&z(QUTa=rX_vv;e}$fY~|#H~@jf4F83?Ch8BVUS?%C`qc2SKu`i@nSja? zvQ~_r|AXMck=Z6EJgX~)ZXj#UiU2r@k+>sa$NvF2h5=SEoC6eP{_w%IvC~Oi|NN|K zs(<|4q&YI%pTF!l2W$_GoPmD&G0Xr21}k6y5CQ(O36 zz!@IC61@OG2~-r7#}H}EV4gQGgAqZX;P6%pf`cFc*=*4i!|02^Aaemq=6u1D7)jUv z+yF(O6VzyM|d0RV83kM3G3H^@z*&S>}% zad3`6P=J9;+nf?FPsEAp_ufDO0ffpiWD2`(TUc&)OYkAF%D~!?0^l^Tj)EweH~`83 z28`to6LAb=*RB7I009N?01%1*0SK@FqGgioV@y!hod-_-3^WZ{-udA8zJ+Sz@vt$R zA#`?A!>Iz@wLhYM1+A+WyxIEqg_+YvN%I26w%PAyd*j15xK|xkqRa8WDU1c>7A!CT zgj!-;tg4D209nYtw|a)!)POIF|4aCwdM|`X2rfOepcN>9L}du~_jrT=2&{kxPyhr5 zw%q&xA$j})$AX|h(5@NFC{P{%+Tam^XEeY9g8bnz2noXPz<@vih%k5##YJKHoC+f( zYrp`*6~Jue{*O-l0MZ~d{_sOQp=%^um)Q{YGJp60!VXj01a^xep%JJ>0Du4e;|w@0 z-Q>7cJJY{OOkRdI5CnODLvTYR06qo)BQBl;VGyNFfB)kEZU8uL)lO#3fmCp(W&nmU z0#{eeJUUE|K8e^%0096A00F^*fM6I57NR?a5TS|Mn?1>J z0Qe9xlkUMWQ{4s#uxoYzAOKfWfd3wezu$OTfdYlEQ;jJN5>B^o5Hg5_Sha`tmd3Z^P!xa=gOYIO zlQLa5g+5ZH2Z4rThm!?dR1>8xkcnm~egGH{;zLo8!v*5!oh<^1)5stS4Ku(6zmEX} zz}f|2@@IfRabyk>bZzP*^2N_ajXoC?i~>Z!s(Y5;2R2IDtb=g$BD diff --git a/samples/h264SampleFrames/frame-0948.h264 b/samples/h264SampleFrames/frame-0948.h264 index b63484699a59e6c69de388d9b9f6fd081d3189ae..66a2fbc47d33cc04787432e563a5161aaa0cd6cf 100644 GIT binary patch literal 1423 zcmV;A1#tQR0003AFaQ7nL7KoCyb3UYEC_`u00L-@xg_4N0$yvyyv9Rb`hbZa|L;7$P(g@Lh(o~Cj9B=`D;vIaFeD7mA&KV* z8M2=HK-R5?f^Djs%ZW|+o(4m3R%6QILyrE{w4FOYf4{(-U!rB0PedEm0AjNeDOm5F zrh=j<3b_?zWEw}z5{d#5E(TB1CRjuj{D1a_I~T`_>c&(gO~k{{1R|X+K_vi%M~{uV z@HKc#4NOsCKKq~$7YK?2ju^JPj>yMJjl1$%hpMu(uZQ3sl%=&m03ZYkPE-Qm278!{ z00ag=06=c)zyPpa!R7zLAR+~L061{S0DzFs@c24RduL?e08FIDnbd@?a(VzTQJSM7 zJ#-z*QL806MXyO*{;` zHL#Jz+uCkoudpNl1OrE4!9oXjW~$NM(gXYenaEL^lAp>Yi&ts@0RccRI=}))`cT{f zp>QAf{pcL02o=jmS#$k=-rH==vGr9CfCLLdN;2x`@E*~LdyoCf00RIDD%Nv@G{mT@ zU)oG{r4#|+X`?YZH}AgC9Q4(U1H`d_`B7N>7uUn&IFGy6#~yk>WZn*0IB8Iwe+7f4 zyUZLsc+WO5{1ZSq4*&*08hrl)Q!q;fnSprc{(zJM2o-7w zEDbG6nY(|f8lJ9@1_6VmRK;S*(5&Rj|K2+Q3V_ELdr*9?jE{(oM}PkSC(P1zdq4m> z0o=v}0tAg1N*{`UzR&;&5r?z@@S@M&0%0FG16%)jjmj$glG4-ONpB1o1)S`dd%y!Q zDB)VQ!}8P1Y!B~R5xb%iX=n!-)xx& zk<#_~*3ve5ygsLI{$H5c$nGO+i9=L?{9-s2KtO?H17$@d#YFb-!Rg^$;sS&ezuFAQ zJcVbzVfAlL->%Fy1J3}qc;f>U5fkg=0AvWQgkk{@lmgn45Fp9~C%}GD4lA>Q&7!c0UWlsfFXoSiC24JL^^&VBukYRuS zXaE8LU?e1Uq)cV?yn0^QYF#zLq zCVGTCs4KyrpgB$uE0&J3(miYeGlKyh)C_}r)#h3Z3NylA0>tnNhE|32?`6|_gShYj z1O>zxpvDLcL^(0uK;*3 d0003&06B@Q0jt0pi~s-uK>!s(YXEBS2IE!1Yqz z;DX`AVAUw|e+0sOGD0DzXhr{%-~a>xIB|fAlC?bxFc85c3DVx!APy-Xh(DxG&!JRz7We=G06-8PA;$#H zTLlhT4csX17zF?TKn2i90u6uwfNz(S%mPpE0C)-p6xk4?#*6~nf@vi7AAlYOPKYct zh7@BBm>8*Y02~f5CB;zbeSz(hUwD83fCUSybNCXmm+O~+1z>;h0)T*|D7C7jRxEfe ze}S9?77zbg>`c@XpXL(Y@Xi1z(H1PsY?zRct-xUD50wls`~o`oeU2mU_3-2KWd{|! zDJL0XBcH+IuSWr|8^Mh|zvH+H;Cv=5$*;(msoU!B)9+wHUI&uceH{GQVd{7JXO|W z5CPxy<{Ok$`6T;KX=J}E7&ze7bxab65DkCbdX_0e4m`i0AmYJDr~oE{Q~XBN zS8u>h3JT|Z^vg%0bb9(iFNPO6$yx5!whG}FC`ZTk_clg`!jQZ})xrp%1T?}1gsu}= zP@hNt9v3gc1BhwSVGZfiu|2QcE2B%`lt_Fg41pMc$j^W<01yXt0Hq5v6G8&l_R(N5 zaf5+fXH=2vgVDYL0v%8=fgxpEASP|;z;zY|Q6|X-6TmZpIPp&vG&&Jaa9u(FxBvkF zQ-FdOMNm}xV%tHeSOMSu;1F;arv->e&lT7^A`s&51~J8gQQ*gj9HCpmbKd{}Ktvsk z1}MvRPko z-~b2&g3(|QOhqE+y|TV5{o(+^fB=9pSU4R#KLd0SkgSjUKmZT}`~ZLo0S7c@VvI`M z*#6`o2y=i32@rhfSnwOyfUXC}g>&#HpMZEE0003&0B$Cz2Co2kFaQ7nK>#_4ssXFO S8;k$|0YLy2LTZ3&@CM_W*AC7A diff --git a/samples/h264SampleFrames/frame-0949.h264 b/samples/h264SampleFrames/frame-0949.h264 index 219e18ebca74a60afd6fcd3bbb2c684bd9abf1f4..ecc684e38c35bd506f4eec6c144caa36f8ba24ab 100644 GIT binary patch delta 1799 zcmV+i2l)7e4W14R000012`~Tv0YRGJkqj+=2yg*N!LlIMSl5m01Vb7%%-8{iL%%FY z#LE8p24me$y4xQnI9pC|F9ihj`p5_+Pp~lNA2?BwKwQL`QU?C$1cCG-lF-Jpn znmf5*xo1t#{s0<&Z~IuOE|=Xc=1oL?cS9h@O? zhGBEnz90!}snr;XP!{GTOU$ODW^;d*f!`3He|P=sEiyF3jV2G0ByylY^n?cd9lX{r ztMMS8;U6LLjmmg2BM}}Rm3|M=CJ~~4*Fs!$$e!v$Ko9_IK*eeVF{MqaNTaL=$N`*d zaFXj>&HyX{U^=xqm<`bY06;MC0D!sK!1xmYC0~%jKmtNH6oB+;!HrmfW;_58mBfwa zC8+nZlhk0w{VWBJRWv?7`%CH~%GkqT1IG+oZPLH{`~$14t*7^WFu+6IcSrAkz^f-c zA@}D41rvJnJN@-6-ap&{01WsSnlE@bdaVin?mz0ci3sogFNL8fOjv9PK^_1MKE@GcldKWs z)AxYUs$dq|9MRHA9{|QcB9w!F5KN>fG{VsIF_9LLBn44P*&}nz009H=01$cr0Siz7 z5DHB300sf)+&YVl2nIG+06>}mP2xF%qImZhSq(=33)TPxED@Mb42<{Qm&HX)%Nf_h zS5ojW2LOgz&Pnd?fAm1LAwU2?En9dNv)}i$K-@4azo~UdAW*J`>=1l^0suou2bf{h zE?;789e?gH04@P{R_7pm8QD9C&;SSsJ0vpW#L z1H-@oAS+oQ03drJ(||R98*mzMI}qv#n)Qr;06-p~#|@EI@O$3u1&M$FfJM9k0Kx3w z=CYsegi-C?wt4{L<8D9g;y!c(*a@dIN2A^70wcKW?IwYy323~3ckzT#T+|w3TrbKi z=yLiGoGt_*M-mhzfB+yC&cHHgc1`Qz1Rn&U2op%_GR=HN&-+YHHyb?$Est%mJPUXQ ztPG3j>be*PfHH<+8Z*_)q7VAu5Ea${#N9RZOM$?FEZhJ8fheHj0CYh@C++*(_()D# z|6g0c3_yA%5ez4PFqfLeZ-U~UuLr?S034`#b^1wF;$}tN3KEcG`0yF9 ztD<*!0feAHn+Q3TInfHh4b}iAkFxnecp(W00)T8EjPoG8ON5?$z^+T3sNHx0J*5L+ ztEtR?)`KG8q%oQ~1Ajg3kQ*;BDX$lWZ+gb6ul@h0c|ZMsO*D+QE{o4{n6ng|2MxU{ zC-~|hwg|MDPQ~y4vZ_ZYaby^iCtj8SG%8lsrFWhT07Z74mdW_i8GKM9L2ytCLjmxo zdx3x+60yiDH7=&_@3cT*L^n8Utb3^P|Joz~U<)>YFi&im?Z3agM!*0-4K7dto)j+< zVs}~$;8Iq9p>C0EaYV1b_h?EyBB`h-lFU>8ydl~^g+5LGtZ9eHt>Aznh7wXgFccFZ z?Qf}XzyJ^pbOQj2s2sv|s7Kiey?6it0QCS7&Ic}T(WTCXDeOQ1g~Xs1L39Bk93Slm z>IQ*gk3va9&}ku%Un~F;BN0&!WpTYrNPeUQ$c6@g03HCJ({KbOP{HZpSoedFGYJqu zC_S+ZU$64`U@&3|J&YIv3CKIRTGvFE)@?DOUSI$q7fJ!aTPWCkdp18qDnAX_00;zt zIro}yy%2=Sa`)%(1EmHknaMoVp1_aZ7#nOxFRM-rrpu-H5NbxU*cmVH*lYj&x#de} z&-prkDcRsS|6jB>z@lHze!E}G<}gGvf++q0u>rh)aY|9*uiznbH-XxbIMfw~x&90Q zA=R1aS$^;Vlsb66qaadmL3{WE7+Aj0PZP!v|6Rd(QNSbWihI=_u#EWO82rZ7_l!Rj z0YD6HQnEn={t)?b p00BV&ZYH<}uK;*30003&06B@S0jt0pi~s-uK>!s(Yk+F-2IJ@B6_Ee{ delta 1644 zcmV-y29x=o4ulO1000012`~Tv0YRF;kqj+=9l!-qfsqg;nifm@0G#mm^u}ToD-K_j z7IpC{f)w__q68-lds<;m3itpIVvDL5A2wg0UYDrL()n0O6gr44DTDA#1RzoFXF#!q zdKUcuy@07|oC_zOv<}T25|mayjr+CyZ`#jNt!}NlL8+R5;;&HEFl5E2Y#!u z|M|f_Utd7rW(XVrB0nOGeG~tHH-NBz;s7j=Ecy_cWaIoB1;iOxtbiC844Tqd8$Y~5 z6CR|1n^PJK02Tn3_K{$9Fm$}Oz5m_;MxZEFEx`F<&M*~jN#Ram3;<+s0>KcnoPXSi zZ&1|`Lkb(f2df`qM=KcsLLWd?d6a>DtP)R6_p9NE@vMJNoK@jH6C>(h#8^~+fl-41 z0RrmJxr9vo{IiB1iYoe%Tz3fl)BYB zko!QG3wr`>SXWht-)H~^;NH`J!4|1c#DLdrcaY&yJh%St451qJmJkj$Q+u~%Z3G_S zgfNw$Mq-cs{QyCZOziB#_=kFzfVBJ;Y;Jl`Fj+lb@qmd%TaGI)-eW(B0K2l1&=&@O96MF{7v*Ds zaDV_-Eo1;VD!PYrQRmqqX>ag93|5j~6u~=92Mck}4qr6UftZn+85!U=&(FX9VDx;> zJGBHWoCZH=E+pmD?x0IG8%d@Gb%K}`b~*$g5Ru!GkEI{}oCw^TEvFy9-=G5(O!+0t zx1>|wyU_p;XC)oT-RE0>`_YY5kGIgoc|?K_m{8JCvZYs_@z@Oe}Sxl zYd}Y;fI83p5e(_B%kK^V4l_86k!0%7Tc@tre&)c!W~6;<{*xx3{^5uO39J%Z z(gHM}6_j^}%=AzI5DM}_J4y!Oo4AuNg7E-D3<5x)c;h~70tS1Uz?~-7dO`je00;wx zJPQ>qM?K`ON?xz;4B!d^#BsHG8vz#lw#qJ0&cvn9HdH4r{ q0003&0B$C*2Co2kFaQ7nK>#_4tO2XQ8;k$|0YLy2LTdnO@CM^>d&z_V diff --git a/samples/h264SampleFrames/frame-0950.h264 b/samples/h264SampleFrames/frame-0950.h264 index b9e1952c2981c3ea3121e67ac17a32a6c0f14e39..1e31b16c9b7e9401a04aa232b5031ea9ee2d5cbb 100644 GIT binary patch literal 1471 zcmb`H`!|$%0LH)X%$Q*e^Nt!#u45XE6w}p&lXs|)R?e73yUEamEOyE%lf=u6yG0H{ z?)QyyE83E#*h&#ei(F>No@Td;5k+NLyZ^zSv(FFDdCvL#@ci^V002mXy=L6YU|r`N zK*w#!6*}QTll`ZJ&@*avVxQaYeZh|1g*W+R-(y)Co=GNMixa;yBf74ox=pbfy`PiQzAgscswS0EoW@A;OUM5}>1_fKVGFjXefYFs*zqO~+VYyIB zPw*(oZsul&O;{f-8iMM5pSph``16|MF52U8ZVEi@G@n9Domb2pU+pYum3YWW@bpvtdxjxInN{8yBxK5I>73b?9oxEt1Mk(*-|mXik2zqpL?C|5aBMa{ z8^G0&4k9o>^ij!DwsuVmF1aMMp_2(;6i>mJK3WzEWLWuaM2|M4VbGN-9K5UR-p7ml z%CpA6Tf8l|m;|0WSx|;C`qU!|skBnXAomOsUs*B>Maa=3*^k;tl@_r}dpTg2k8FGs z{8!IP#fE;O+(>68gJ-7Mq%&ZH9O1ZK_RxwaGv1$(mzqo8q!NRC@v_$YepBNvo2Uw= zZ%|MhKmjUN!zoRN6D4kuey$O?rUgJ|16Vsn3DoiNj?M$r!izs*aiZMEhTA>+vvthh z?d(){N-U1g*@2dC6J5J;IR86xX*o(?l~$(u6%TEIF#?h(!Ki(rtC|<#AOdP&Juj@P z)|2w)BlUcj^^hU!aT1_%q!*e{;URTh}h z&-JMTzhvcb#s;e=BC3wL zGoEZ7IVT{P5br*u3DaICZ3?N_$4bvQE5kBbUZItxiwH1o1vrv^tUe~mn$iSdc!Ev< z_NE=dxs=hYqK1fV2fml+a}le!WG$z?K+V}h%t&xNIHv>KZY_ArfOTsYu792F01#vZ zoDk}LZ{yqL;cYgrd&3O?gsIC%wT1g<-wEK&UQraCs*|(t0A0Y-^X~h?>gTjZ0|@wU zP`(+HmPsCt#c6Arhz*I(S0e+WEutLRkET7F1s&_GBgfu&c6m3?tSND@_*>0Jy zGVkjvI_^W6aiMK}S(?u%pY7_Tw#;{Be2`@TtymT$L)epNj+>T=pZ6kw?gB8_kzy1R z*E~r+Onmr>zM$+?+lN~c4KyMMP|z!y50;RtOKIs?1rS)MPKLF@99Pd1r7PrK7wipt z0bR*8vV*TpYo&Q8;>DF)Z`Q6#6aa@q1$lN;5_|sE1umsF!?JPSR4s1Q|Maj-g~@0j zY4upy^FvGs3aB;pd19hve{w;0@e7o;3@C@9{Ht4X0Rh@nA$PA$L6hSO}Xh{&{TmE)(EfNq{|No@2!jZp0IS kQ`0|>48qN1_(mZ9_nyI?lqRTNrl0;Vp*n_w5EcH_-?D6OfZQ;E3^d}xcNYP~MQLHPQo$V62uMNl zY#N>sMbharRso`F9ETC@wJ7`qse0iF055EX$lR-XUEf<`$CVBZ1~e(m$Zxsl;VlOF*IlOF*E zf9N0-CN+mAzUq?+9_s$h;0ylv#Z3G9%w|!JY4$IE0ezMHyWP+2LON>WB_Q73N@T8^gEizkKO?Yf9N4# z`|>#8+T6MD3=qL2SzuYW9jWc}?tB0sUC?RrjL(e-5)(QBo=!ChR?tq+GkyVB06qW$ z0f<1m)K1`rz;wNNLMB%(Y%1QBhu{QI0ANg!jYZ{Iw2>xnVGApVHpn)eeZc^Mg@`rU z0SpC3T%sNC|GDJQNJUH;h`;{_fA9cc0B@r%!9?cS#6=`D#t=DChzm)M+Q0lAw*Lpo zwIIGArAZK`YvcEj5ePGT5*Qu%N&pNNS!ef90)%(+Q8dLFJSbKTllB~=23 zRCnqkWDE!_I}L?)rjH;CTxVT9|J(yGpGOngN3reDLpcW+;TXD6RX_Uw{)7k!8S5$O ziBD1E_wS$zaP@+fd=h{FfFPSXNGdh8gFZvRUIO13l}rVo z|4%|PP?!JzyqI5^=v1S_f6a&B1Q=oUnwGTlrVbSq!;lMr1GY+af%jB_s(OG5j+g*Q z#n7U5z3!bVzyLrX1)GPA`#=B?6atkavNImVo*K1j_5&l_U_L3!&;^C+-+#Ca04oL; zVSG9IhyGOgY4sKu(Z+cvn9HdH4r{0003&0B$C@2Co2kFaQ7n aK>#_4t^upS8;k$|0YLy2LTi9(@CM`SjKcu{ diff --git a/samples/h264SampleFrames/frame-0951.h264 b/samples/h264SampleFrames/frame-0951.h264 index c75d827f9594c4bbab642046724de7abe838388a..03792cd10242b2d6b2436c1ab16be02894ee08a0 100644 GIT binary patch literal 6828 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 Sv+?R*nXmW9(BdR$;lBZex&$i# delta 1001 zcmV-E;7ns6qR+kSzaOruzW5kFm&C_%NAo-f2oWK}q;von z00IGo05n{%47dvMv(G=$ivD(a;iBsYj=rDVxmLgj@QAVt8vzpraP%2M5dT(@ktva& z2Y<`-OwZ`A3v?S8SWA>=z=e9m;KN|hs^SGG4}h>d zkfU)n>vxa{3Dbj^bHmRH=kxje{(nE8&y%_hOn?8Jcv3-RnS@Zp-{u0y)n-URU;6?~ zEfK+hc>Zjl7>N?I@(0^M#9QQb-hbH`kibX411R!SJtu*hlh80rd)|WxKLS#=_k+;Y z->-g8hlmOgxIaUK^PiS$K;nTQPZw}7Y6U1bBzw)w$PZV%A%TS;N;M)<`Cry)yR`P) z7=L3TN9YamLhGrLUZzR8f;OQe2fcW}fY6tX$-@Fbf7 z8C#>!1OU2+B{75=a+rIMn`(erm_9cE1Rnq}IC@knw$$85RMs|tFaQDofx`}y)b#eK zv|ln?!%~0%fbgnH0LX=7&31$cJ^;WOV}D%3uQUkItBr|~x|F{ex0$o)Cg{C9wX(RuP009610{~D8 z7?#ij00972#3VLmtG$GiAO9BfJ&&sJ&YJ%=Api@&2p#@J0Dxf@HnY~9fx#{v9x#Y; z)*g~r`y++Y=q6%A^tSKhv%!p-t zBQY;a7@Yxt0SZvXLi!m(yiv+300am*VjgKzCDV9O0<|bO0Kj1jji)zEb{%gpMj-J1 z@Bx7gXm9K&!-___+BWXLAOIjuEC2-?5hJ|t1P2yK(I&;)lMB(ccP2LQ7fu&|Xho7f zbp(Bkw6J(;o)}Ifzz%vVlQJF%NM$MgPM^W?;aCDNfB*miK>%(h$Of+fcrX9}0YLyc XiLwE!z#EJJ00BV&6+&!)YVZc*%yq4i diff --git a/samples/h264SampleFrames/frame-0953.h264 b/samples/h264SampleFrames/frame-0953.h264 index ad087f5e1f603de6188fe5496b42e31792214f8b..d684af0840d4beadd249e98793d5d6f10c2ed42a 100644 GIT binary patch delta 1299 zcmV+u1?>8~2&@ca000012`~Tv0YRETKK$VTj)1@nwfRGTT7Ye=1EbL#Gi|A`P{Anx4>TwrA)|OwAs%LlOO>vlMn$WfB&K3Z(A#~(u9~T)ub#(+wmhb)GjsuXg&7J(Z)tUkzQB+G5C;`P4h%E16xNFD zxj(=Q422PCb8!t)QQCk2Krj}WUDc!;}Cp-xVG5w^^6sG_I0FVL44TCSgeU1k$A`lA-5=ZyE z5=Wb;1%c*}O?~+F$>DsG0YZO$1&@7BlJz=QQS`iCtbQ;6B4Fr(eTo%=z{J1-z5&(z z4g~@T;p{-5Y4*K;`GA4GbRlJE2XGkhqA_6E2RITw4pl7^P)&FL;QRytbZh~KKu)?L zd^TCrXgrlHU4&6tC@rIak^1)a83vf-3_F?8W`Ggu0y!>_HM5%fk#B#%8B_s4Sr|iF zCflI`MBX$Q1?ajE0ik^8_EB3r)G6U;3;{pF04OCLy?$hxP*aSjNOZ{opD99YGm_ z3RyB~>Cvokz$AbTjfj7PP##YF`^5kPZ~$kP0LOUHF8IwS900%tG&k%L)|dq!E_eWY z-tQ2+S|^3`%IGls0096I2d&h zHBS~lEdjR?4i#LAzot8SrdBVi~svT05BZxu+}A48;^{30r0|Ytu^oc|G!sX z=0H$ux4CuyZ>_3qKL~#YR{{#j($aH@hW07s4jf_Hq;+;XwfF%th6QsFCLhkOFu+9n zJSFf*P5}&y8?!r>%H~Yk@Bjn@%mg3`^MP|zAE)#m3PInD0fk?%4u4pv9F5`s|5%X4 z*}6_*FN6Ou0oDQd2-CJ#L8FO@000941XyuU_$Bc$01yHP4JH&F;lVd0X;fu_frrvE zLtlDKo_JrAF99Hv5CI`7fOud400BV&ZYGchuK;*30003&06B@I0jt0pi~s-uK>!s( JX#i^Q2ID}CG!Fm( delta 976 zcmV;>126on47>+vyT_@nx@En<8Ji+8kKoh7 zxqj?|NEa9ss;!pq#R*tt139h$E;fV?VrQPG0|{~P3C$^ z$J!Gm2NM}Zbj=?;E0b^pKav3!fBuJsH8G_^Rs4W((*aFEId_-xip>c40Y*uf3ko^# z0|41L9ne?-9-jbR;|-=iEEv}&NTLk&ulIorz)7ov@aiwzf7uQb($XZ0Qf%4%04!!8 zMET5V>?4BR4B_PQ<@^*5#DPdw00=-}yg>UGN#MWU5&cjACPXrogjOZ%e`6Qm1_FSR zXJ@ixRq*r+pBh^^$fOn!v^gL|2t&d|O(1}Aa_|Jm06&%*U=R}9hZKs|HMUIRPNs+g zViIcbCR!8|y5^}JMT*{F@l;_}W>q1zgcC42Hl6`^G~lhojl* z8*DFcFaQt`LI5xe&6m0&f5h}gAmbT>k!ly@zbWD$xBvtM1mVaja+_dj87;ev0ss%I zk};qry*POd!DTKfz+wIk{7SJ``~%PiqLOg%hBWC)9oBFC=m2tu9C2<%BuFaB9{@uM z+j;(j6RVS=m=t&?H~`4Lz~AY7l*f1g1`wc-svI_w7SOwLefxmHe?hC2M&%i}H8aJe zf50%H`0%VD$`q6UF1#hn`NZPENT>iNgr%^Fy1w6lN(u_seDq6C;x&5uLNCTTFv(f2 zwzdlhzCvLC)a9}?HWY>TJq{2efDqFN780;cWkQV~{0s}h1BhwSVGYUCu|BTeE2Kd!)pt}8QD-5a0)5J&(40a%#=L*H-! z0s&z14N=jw8dt+%e|+6wVHi=SkSK|TU%v1fnjruJZhem#a`6Pb6@sLa2$q^CnhiVv z0RZs&Kq5UHi;sy=7v(pALCF9RC9EDrkXn;xJcCyN2HyYxfP;YfU&jMuk0~!uf+`_` yyt9@`ga8wC0003&0B$DG2Co2kFaQ7nK>#_4v;nKY8;k$|0YLy2LTvzQ@CM_9>7CjD diff --git a/samples/h264SampleFrames/frame-0954.h264 b/samples/h264SampleFrames/frame-0954.h264 index 00fcf1eb51a56a3c96f7a9394c48343b31d7ca63..b35874715a32db3efe088c7cd0f79f1139505e95 100644 GIT binary patch literal 1472 zcmb`H`#aNn0LMT3+B9R^m!r(3nz=;8EGbE5$t{;9oSfWJicXJ99HE?z<}xWeB+}ff zadJtdrIO9ua>S}9h2uF!4l-pPonta~I{gRddCvQX_xt@k@88}(yZ`_QHS$+;E)Czm zk~T=3(jpr%ab9xwxl0mkU}-{_3!`3ZEG-gHRO$>Ld{OE$$AbG{Goyi5ytAX`lFk`o z9$Is9=%8=HUb)c3wm+J~dpq~$@Ntb16llhn{mA>u@4-bAJr{SN1QCFfM;ltHhc?yLcePv-sDE37uzkFIH$%wL;wN_xj`gA5!Y zhC(?28rt5oNBK*n6LPl26N(}SXjAbjre!gWQSK!mskFQ?sU9)70eg9_izb?^hn_O? z@;ZvGOkWV}GFdjU8J=p|ilO+l8?@O%x=w6|fh4`zFK8ktfBOBdyU=(vnh7MxEp-{y7TvBN!|m<^*q~q-m<@9mP!%Oe@G0l{N9V6EtoB~hVZ-NWaG+eocbAme7)8| z5>ARn-YfErkcu4?00GJYrw97ZBKkG2cUu=Qx_uwY_3b#l+i4UpiA%k;I^MMyt5Mt! zkcEcT_6~X1Oo+lYW3@sU1{};^c1-S70{o=3y{0C)JjO7=X>lLW1SEng3NmItgX>{0 zQi&!a4p6%-J)2k~-a(=x**VVU&YkmIALpRahZK1vUW!NWO3>Wgo2%o3+j16WKYDpV zQVFu+)P;15IEt#NCq*cC8~`e`5T{sJ-ZrFC)CgTwrr$DGtbCW-~R)6M85$5 delta 1229 zcmV;;1Ty=;3$F@)000012`~Tv0YRH!5WZi;h!Q~~0yqIn9U>Lj_yA?ic{hDMj%+_W z!L84z0398vmJOf35&`|3WP}n3EKZZ|wtMREV8zZs8ZZ&=_Bt*1lsLdOHa49BYpsp+ z^ZPf0r*PS$r3PB_0Z;1mAmXmh`O{Cg=MQ6@pYf7PmY3NwaRR3ZL*3e#E@B2dU?rI{ z+KGu@^QwmYXvznO*df>mTF7Pw+ z05(fvE!5@{(S(x~+!#*u$8#n|}DIhXINvdp= zcbUKb&;tNh_zWM|#smJx)ZQ=sz%vUt2iz}g?otJwN}v1D$Z`NXn+rGwhj4dh8mO)~ zooMBp7-vR2WsGA|f93cHF#sT-Am~wG0FZx12jG41UxXDF^<`iJ#t;u(0AP?>?zm2E zJzns`DqhnEEo$W!kgxbKuQW~;K#$o_poR${%kPW~#DxiolRO6T>Eqv^U!DoVk*arj zz{l+d#H_lV)Cp#*VKl*61u!b?KR6J8BPVOfxI_1D1$j1GPCtLY00t@<<+*m%ig|zk zcccIU0YD?FQ$V}cx91-kqyN3|bip#T7)he(VKT(dC= z#tzei@Bn1dpa2k6cIrR?5O@Fq2OEG2L)TC9f34(5EFs_kfB+y00KwIMxhhWL0oOv= zT%qg*I0|Syfk--JFnWNXKM%MA0YQe*J8Tf}Ft4*C1^@_jP@@szqr0MxRmgt`eT?It zn=DR$o5~vDkN^k*1OnzE6>N!7k`G(Ic*mj~00ay=uW$g78O(~FzcCRx7Q?#PFMt3b z0vM@8;P>gpIjt4bF^hgJ{oZZ2$Nu2l;8*yy=e+)w^T7Zx$ZkXc$d3d$(8ocj4|)Iu zASxP@qw{O;u8Y0?58m0fH|l*=cToHQ1OURUI}4Ey`MZn8Vr-jc004k^00;?y2Zv>g z%^%%(h*aoivcrX9}0YLyciM9c&z#EJJ00BV&6+&%*YVZc*kwzpN diff --git a/samples/h264SampleFrames/frame-0955.h264 b/samples/h264SampleFrames/frame-0955.h264 index d41f55888a9f6f1b48ee2126230601b22d82b9a4..cda8ca2297c7433c98134c74f4c25ee941a2cb11 100644 GIT binary patch delta 1363 zcmV-Z1+4nt2=WVm000012`~Tv0YRF85WfhJBY>2na2)^#`ja?5O@IPPv2_;NrZ-2! zh62g}ma(H1{=kB=S<=79zv>$awjaQHzq62JMriL$u{t^)zyTl*A5){srlcE{g8?3p zd-C%yLZ@;4|DF)=N!>@bbXSICpZGd8s|2E{ujB<;$T&R{Mw)8g(%rAO#%Jc(nRt6$ zjS;nxu_uwh30?Y@AR&yXmMi4Q7)kK}0DuCf0Q>!w62wvwDb>J)y&t5$cvmmmf;5UK zC>Ta!sz)py+71Ck%c{KgVgU6}bAE6MS!4`>_})1rgouEDzw8l^kaucsvd{nA2Rtj2 zU;#UmfB_wUK|s|aW0*Sn!I|zXH}B=}J%Od>Ur~o~MIKLzuTg_WuNFiH(Nw6w82|vm z?SY4oMY95$04%wJnl!N>sspys*0b+jJtx(g_q-ho4{9n}Tb4`W7>1rA01xpKAGwiN zISlv&M6ktxN-|s+|Gq%j5zQX%P*IMV648JI63k$KRc(&^kx%z{ffzyAUbjr_f z?*ITm3II6BCi;whQB(+3S-@rbfl{o$4LEA`8!Qi%C3)O}x`RNcWH5JYg9uA}61gJxRItAelod%s~ z4q+|4iGd!Yzx4kALA}m+Pm_QF8n|3OwE!|FEaSMF0y`up9@A zc8xiRvyp&gZfWQP-;sb01a7Pxv48{#q;9DXya5HEP2~+dbdwn>v0m5!WQ7XNlym;* z00Z`50D*&V<6uzb;x+&R0vn_N;0J`ajS`|eG82`KW+=;Yf`DBE5E_Pj01Aqr@I?xQ zm4D(SAaYqV*i1lLo6=I3-*^B50z3hY09Oc9e$IvZSjYqnXC43mfn`iU2Qq!{+y;UL zO3y+f)e6_UyaNKcrF`F_ib;f@-~b2%2){>O>?H&Ve%uh?vKN8Sq;A%nAUkm83$Y)r8m0MVyq$$xjv040?G{L#~0BwAszs6dj&i}1LTCFOvf zfCF1x0N`*m=2aslpg?xhVgLaGKmZUR#OweR4jk|z^(9=8%syU`Lf#U_!2%++0KzZ? z$^cLNMhImOct)e8SR`l*$&5O=4T>TPUjY7~0EQ@j2XVB%@0e)z=gd6FfB~J*Fn?i@ zkMGgSjv=$uC_~gy=ZHi9!SDbA0l;DFZ^A`)qEE@RM?Jt0h6++_D5NWTzw`IcVg0Z3 zB?W=mVRzTS@C6lE6cv(ObfB!%AAknVD@+m)ryZbM5;j%<#oz-eZcHSuQXB06)ByrC zL_6=CVX>gs*Nh_$OHgoxK1CKDM}NQ-1XqRR>NG^%c;7r300E5V3Jjh6hE72-cq01% z0}8dg2rF2B1JkBgV3|M`@8DVzYWP3#fC1A0IslIq(<=s#uqeCP_|??6!TePJ_$BE8 z0%;5YVTT2#Q0Zae!^pfa1wpV8uZYZ90+VNeA;!s(Y5;2R2IDA;Ol|-G delta 1012 zcmVs;3jpK*J>>R;%9g zOvb4lSE}E5{M6uz(LxdEsOsX0qw(X!x)I5C(D} z0r$8v=i(6g7$c`I`~np|P9Gl=3F*irA`%!zF)5#~2ow)M6l%I}gMuT#y0{cx_i2Wp z^gtgsq5ziQ2MYDDB4P-pL_#7TyZ!*!!~x7rn{Ks3|KLSDCzCM&M3X-O5`U=z0J;_A zOgjztSkA2&!{^69MKe|gUo!fPsHQxh4rAys?cOYq00;o61f_sXAOviX0>c)&U7%tg zWB?^F4{uX=KJ$K}pU8}C-*(;y%4~tA<1F{Q0A`cR9A3oi0<#Z`a+%EDb3fofL(Tv8 zlMZ+QIVb>NXkQI}x{_e9#(y}CU;g+31}jXdM}(V%tpC6TfUJOX!iYt)q=!e}|7Gj* zT%Gq|HyWP+2LON>WB_UPj4N;sIsv()c>UlIj)EEw&m)fwtIK}?!3+{bmIa$}>Ym65 zH}C*~cR{DhGd?sRNKohoIXKj6wukKlcioJkU9_7JkVb8LfQ*WL&Q3@k~m&SHiaTCySya_9PCc+RPT=or% zGuMOE2VJ?{Kfl}rMt=$RI7GbfAh&=6KnrjVBxOSAk+nD)=vWWI^MD2cz|kZ{B!U0I z72JTVALu|}FfM~>>5+;k^G*Bc0-PSODakNDgbB6V9PE780YnNii!o9sf=~bu1QTaT z1xB{8X~=jBz+3YYxPoL~)!>YiC5zrnFUJ zvQw-Nx}*$K)Bsd;zyiiDg%h>!bm>+A0sz2yxFl!V004lX6sa9?nD#92)vHgi9z3G~ z@lIX^h3e1!?Z99GSTMT^;(H(!o?#_4xB;uc8;k$|0YLy2LT&(R@CM_6$heaL diff --git a/samples/h264SampleFrames/frame-0956.h264 b/samples/h264SampleFrames/frame-0956.h264 index e0302a6aeb31ef3f7d3334aa7605dd3714475007..54cd0204a7ca1e6920cd4f6f5e84765815f40f1b 100644 GIT binary patch literal 1554 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 Z06B@Q0jt0pi~s-uK>!s(YXEBS2IEmm2>1X1 delta 1010 zcmV6Ukc4EQHS6{1HuE_@IZB@lS|MY<5zcs6Lz*fm^J?V2E{PBDOt=Yr|)L( z&=X1%SRZ=L0~nUNXsfCB|IQhZ9vYl!)jkPnf;B$3by zf9ahB2Z+y&02vF9GI2ng)F*p>Q`pO^wCEJR_5F0Y#I50T6$D|M-6ZOob?k#jANen^5KPB1YU07H<-Vhk39CXkt5EuLQ9i;=}RNfr`4k#QdjlTdYmIvCSio5$Zz(syg1Ol#N_%&`! z!vchG1}yO>bRp}AjxiICv=Kaoq_V%;=GQqoxCR2gK-L727?GqlA6kEA|GY)!3@Dhw zmS+nv827-E6Dg0zg?9i*xo$z|0ssW%0+#qdhg|Xxr2N}d0?fhjq<{hsfEXM-DivF5 zZX>E|8$cKU0RTYZhe_&sdsJF4nJwX|Kmb5^RV4sqLb2w%LIfWGU<|RYVb_`jgOocZ z=jwrtuiy|70N=t}#H==m$Un1xh;!&jgk#NBiNv zJ5}%C`0%WMFhawIQpiRAKMaToKm)*F03Zk|Fe(M(2(2^3hJScq?Etf=uG}aNg!^Dh zT>wFbIpOT2A;3l@VbfqFiCxox0DwX)&Hx7hWQNQz%$|mU;6HyeL?8ih03dfKkpLhV zMUAZWr(kePhewPe9Ce4JmOjYgeop}d@eRl#J@57yr@dYg&M{6|=d7X0F1lU=42%yZ zxX}eI&DIo?bLK=cx(Lim(xxXsU;sjtF;KpSP_GnnihuzE4p@hpRLOMS6hN&?4gfG1 zLgQ)8(;bIf%n^EsJU_euU_%-k`wB4Pk*>ClyRXOq2op;H0Y=0~?>qqk#ga5hv3BJG z^le?q&AbK0;2IHRkDWmuV=XKm8mER6i7*46isa0Pf)W`@e^aOM1l<4t0YLz6Ch!KY g0C+F}00BV&If=XhtH2wK0003&02M-S0BZ0C<0gf*!~g&Q diff --git a/samples/h264SampleFrames/frame-0958.h264 b/samples/h264SampleFrames/frame-0958.h264 index b357a7bc37d4c4423fe55ecd0f64f2fe7e73f669..c98b22123efdf17ad99819b4cc5686b6ab65b278 100644 GIT binary patch delta 1515 zcmVDt@-k+&F;%_k{&aW+})t@G%}*=#g(oCLXR0!MI)3YPv3l&z*@VaO3MH^m_%Gh zcly@7+6Zi~ovz<_1n(c}rxkXVr;)KGk-!R())G7YRH8xLUpSe(vMXeNX@> zP%y;9!-UN&o=@3{U_-K%#tR5SPm{ zD1Yw(lLrq0=u*jYFx<3q*|&eh5rPoK3VX~NP?0AC4?zIV_z7kas=>JyZjt_Qei5*^ z#bNC{Y?pm-=Y?kE2xH-5tQ<~X{2~G%Q8)lNaL53Fkk9b=I!t?KWZ(cyqQ;rjgsv(* z02nyVQIQ_!T-vX3S>TW6ZyW&N3_^bc=U+xEE$=WWU)2|rb2j6tyoG;gm;3_(RAXcS z>c*8c@G|Ju!bcZxX}OBNz>okC4IP682p!#;t4DW85AXtKAx3ISe<+qMU8n#A1pv6~ z00|%ILvRL#z<=NOpmLlbS1lc7&-MR%ZL>DV)l@zJ5G@HP%d4ZndqyShKldmA3;-yr zSDi^OaWd14e?xq6955a1R9b!<_l2(%a`B)fQ|=&6~up*Xmqx+p|eMS2ug!xo{~0CwOEG~t=NE}(7!G0+NjJy(!!EC2WS1ON`tpb8lb=gfkfR&nQx z{{G*+wis{#K+=FQODaGtsKwd!8Xo`|+yHO|nS?#VrAmTE&b%}f6Ny%Y00jctQgE%4 zyvhnLKL8*BY3YAJ1p*U->tC5FEW%FYDrO7t03Zwt`M7+7Gb%3dgoTJA@Bn8C{8;j0 z6zl1*Zy@>XtuaSyB}9vVt?&Q>01yCBEZS+56hc(t{!4%Rz!v}k09OJtC7RP`S@BS| zvUPT23i+6D179k3EfB+x{FkXEatRqMFQ6|W->tg6! z&WEqV$&x(v*nLeKYyJ?28(_yg#>FvQN8*c9*ny$W4TTq>X2!u262h|byZ`t$$S`bP z5xIh-MDTwa0R*fb&-{2;UTQaX!to&iW;xB<9?f^iF(BFyQC97?d`Y!+gKx|>l1Tsi=EzzHjQOG6% zKa6t#Fju624lnIo15%a_|N6p0h5OoGaxa7b7yun01E2Z z{Y_i{f*%B+0u4HR3H(%ag#BwSFk!{i0S>?b00BV&ZYH<}uK;*30003&06B@S0jt0p Ri~s-uK>!s(Yk+F-2IC;3l8^uZ delta 1119 zcmV-l1fcui4BQES000012`~Tv0YRJK8ovUMFN1)H(FAD@3QypP<+1ny=@v4ZIPd{W zr;SviDf_5LE*R@yya3y|X8y4{ybtXIHoqamxcJq7_t@#<_FI5!iNF9r2_Qe*qf`6{ zMz?@^!i3l~j2#I(be+h^5y=Vl` zi~==D43P%+zW7cN00c&4Mnq;tWJmw_065Aqq#%cy;tUo;;nzY!pJlmZvtvK`>0nC4 z68wI;08!C1QR0t~A{}Ux9syT>{a}DVz@R?unkI*S0h*ekq$dCC!D#aK(2@1;c3c5O zP5k@(>jdqX^1Ra}Y}V(i=#&PLf|HNFc=K8kte`uC2$J&>9!$Xifu3t!fDRiG930y? z0~Q~CC;s-To3lj>rDsO}R4h-+$1v!I?!M|QhDhNCFEzSNP|GW4w1Naev zU(>?Er>YoP{{z?XkRXhBkS_|r0RaO9#%ETELIHldC9}_fFiZrEDTkxk>Kkk?Z!iE55JCVj z3(c3hBEk!ly@zbWD$xBvtM1mVaja+_dj87;ev0ss$xtCBIGCcQX$4Z&qD zDZpX=4g5;6SNsFe2BMO1(1tYWN*&j4{pbL4ha6#UMI=fp$sYhi3EO%8gA=QhqL>tT zCpZAezQEt8^?$jsE_M`! z=RF)CMF1hD5Huxln#y$gKlyv%U)~5DLr#ncZ%&Tu2#6#E z7E4-OBPA^Xfua4Q2LiYuY9V%!UA_9iND>`9dJiPmxI6%V`3GZ%`Ok?j?fu z@^o@^E=Gg49UDcZd^Q;M z&47TyFvCqCQ{|O*`@m{wga8To_B3bDrQoa;FCd9&q6nbVzyJ^r52OMk(a5;?l>vTJ zcmy1f0Rmc1!Q@#5sWx-SHE;lJ@Bj!1I1iQla5gydlJy88q8Ka7Ib@hX0XIMZ00BV& lZYKB!uK;*30003&06B@i0jt0pi~s-uK>!s(Z-8p>2ICi4>g@mk diff --git a/samples/h264SampleFrames/frame-0959.h264 b/samples/h264SampleFrames/frame-0959.h264 index 7f60c9a338a0be99059ea5a113b3e4ad3e8b547f..a62fc172b1f840fe8bd66f5d2d7f8a11bdb2942c 100644 GIT binary patch delta 1653 zcmV-*28#LX4A>2S000012`~Tv0YRGp8oe-5B!WUAOTZ>+>aB1IflP?cx_}P=HRscC z{=LCp7KJotzOWG_{VGJ!zqmTd5uvvovIBTS6fa#H}5O5b-H;{a9?d`%GCa<#3 zbG#QQ$s|0#xqwqnZ)41pe*SnhWL2t&p&R}Wq6(o2YLc)6t$%-!ks^_x4S&xH@`)T2 z45jY{LeAXg`al2h91=cEfF2!0d|P+TZ~A}#hX(|XiGr6AfJ|yP{tfXr0h9?6oIKO& z+kg6aSE#_HNzT*$`UauP*_*<|Tkb#n($jI^>Hu#VR7vHs5=8vrH!pG_1mkSpyB-oU zCINUmGl2{5)RF(x<5jo2X#(M2lR*JalTZN%fBL~7KzLIHgk|}4`h%ybV?+C!}*gCt#C)o-x{%-}3#CSRe^w zf3O9haGy?fA&&dFAOiLbk3+(j5Qw$A{ zZa|xvRO|eparKRi4i)zAF<*b3ph)HKe;SQUES~zxFdw!R5S{P%-hRXP?>G#hnu(a+ zjLrZ5ejrunQm`3t8{`+8}Ni7GKo5q!1`qLv{#00RSPS1I#e$7ca3kj=%R902ctet8VIX)@DwzU6f3PNiKo7`3 zJIFMO0FLkktrs}D}SYQB%Zb1?6f3U_q>^<3#+G!7+z0|F zQ6#!xEG9$V-%{W2002Nds0IO5P&tI_P>(VbdiVeW0qOuHIe_I%f7*1Z(4_c407ByU z8bNe{A{-y>2gDBrsyCKe3FAoz<$wbbkZgxHC`74#AE^L{n83gTz!mz9fP}6X6CMbG zP@}*B0hj@R3lXClg-Hx3aj_z44Jn>jW^Xfq0D&->-pr-=#O^2K-Rdn)dZEk}0Bf(m zm>GO58=4L-5|&yae?mZ%dA2w1cR9s) zm;o@n00hD7TZstFt|T0w%sc=SBN-hIV1oN?5^v;WBC?q1Q4+N#85?2(n}z@u${h`U zh7!B3!T16lfB*miK>%(hzy_}XcrX9}0YLyciLe2yz#EJJ00BV&6+&zPYVZc*;v&tj literal 1643 zcmb_d`#aNn0RDV;YtzOyaaQTsT&hK~oyykewBd9dw~;PLohe3kfBi zMA3zia<@$`A?4_X5_2d~G89VoJ)Qo8^E~JM;eFocd4GA|=l$UY06+xRcM_z7dDX0S z7BUA@_ZrsVP8e;Sb4UCE_&^1_p6=IH7j5;Oz4zp#5B{u;Yt98#8Lx@r6PjNoEK=R2 zL=8AvdgU#Vlm~_|rY^sFb)4yW*!x3q*9gXC-k#!YT@{AJO=B1NZi?3FY)M`zLs`t< z5cyZZdNbekDQ95hzd;wi>727Vn`lH>u*xZ2f#`rHX>7+k6EsVB+IM)2GZq$5Q)8YL zSW+i4T!?g&MmZ35kr*C#zmeKwqkkDAMPuPK>Ck7|oGX#Zl^VMKmdCwj)|1K^s~P!q zbodi9VKc?A!%h}r6E=%RXz01Bv?Q1>e$!zBvm+btG72#iiVkTHfs1(g}H@(S_7u;G!b|G z5Fk6+XE%!`l}$UkBQt!~`@dLPciIcl-3EL;RBh@2Nk^c(?~X^N$(jkHxn$qoJGO6` ze>5KKw<`Wdt9dkdD9COvErN{8YSnu)x`+((<)Si?Cm;h16mJ>f&Y8El$;D%ep$zcE zsLF2$yz-GK03=!(r;19ieRVPSGg_9Ipb=$J#g?>`=9_amRMXW4?JZMLXh-y}BeAKg z{n*17E6OGVs~;W>Lo~G#6ktF?&ro~k48M0T_v`?I7-pOJ%K+K`=12QhKm+;wqeH=o zl?^e9k(pl4gX&Rg(gK=qIq!+Z&#+pWP9o4#vg*`NTORsBLn*L9jqB}>c-=Y>8?c?UDg5q8h?bl(K z<5dqrN3_SE)rpegK13t8kXoYxPMoOvru;-%|EkDQ>G{N5!$rI`51M;N{<3Ms^g2Jc ztI}+rkZ;?##bXFlyrD2%lqWlHbeNuj=TnmJ_4}Jnm!hgJTIbSLJrcALajdISTyKw5 zKKZ_ACgu5(%q{OXk0&U+knSm7K+95cM4^8Zff?%ru2?Nd{9D|SvN8&6*RPze^>*23 zHXVF`1yM@tk7SG7x3wn#5vho_C*nM>ZZ|ED8GFXW`mL`;^j(}m^BeNjtt;9}mLJr7 z(&inB9*bi+06Y%wV;=Vvv&p-yV#OXcn|fxe-?QfqJ{NLh)f*01B&+MT7G2-x=4T$Q zJJ}CRV3^`fRmLX*`TlkQY91d`h+FDTP?r@T@J@0ERc*Fi&F=IR3z zL!}bH0DwQpeR1185FJ+PS(_0K$*>MyJf}7@js!>I=@HjIE?aEHF@|rw#(s&=1QT+w z6rkC~mk}SfAGe#Vk_uIDzMS|B2vYZEb&h7h9X@~y@Q{QJ-Rp9SfY)AmdT9+ZMaKqp z>REkMEGx9DXP&(>twuHQJ(6-aaPfycHjW3+X1nOSr(*Az-4g=i@BQ%j*%^A?*(dEX zaQ*qTAZI4PqYtowz9a~<8M$#Pwy}g#(P{HNJqjO~1zRY%xhu0OcCth2Rh5rQrjV}r z=k$7vtHz_AbcHi;bFCXC^QoGXJet-PLipe~)^XjTsNl%YZDFdK=~uQ5GcLD>=n^2I zZI~5sz!c#~B`xmBd)0t!03e73wBHIFqJUhMi5b{7^h=Ae-p%^u?;sX~8Ol?1XVa4v zTkPb(Eg)TbpWia<{(_$3#<$5NRQ&rMVBaDMt^kDpxDv1`HWRv~o*)0iF>=@q#9Cb6 EKlN)E?f?J) diff --git a/samples/h264SampleFrames/frame-0960.h264 b/samples/h264SampleFrames/frame-0960.h264 index 45c0814943531aaa5391a6a8da6c43c6a1243418..7fb16d6966e46da3ad4be3891a4f7ef05a7da40b 100644 GIT binary patch literal 1680 zcmb_d`!|$%82`TSyk=gvY23%mlvkliQ*N_vvoT|oscb_^Qz;6OwPG{7#O58hjCGb& zF0o^z(yl~zN(>@WbSJfDN@G_lgWW~Q+Wvz*XP+NF=Q-zd&U4P^`8?LNr|fDevRqNI5=2b}xHLRrMIKWe$Is_f9rU&Xa0VQao?tC<_E zf8(cj8o_z}|=X35Y)G*D)i^%5Nr9 zt`U#ysE%>DUwU0~UQWvld|KF#PShAW+_`k2~CxI>2t%%P8G{9RC(uk4TI zvo{T<>Uwmc_DJ@_c%6<|tyU3Av+IwOM)$0R-_{QXbMNn5 z4{?Dd`UH3kz#&APB+o5h#Mw{K{p&iNlh~cEp8$$FSnKauS|i^4Rc%wN#0?17q4FE< zNl!#L{IFPoMu~RV**Es-GH!yG$exx{HQgF06OfVY@5>|TCk-!(^&9Xpf%%K$rtuCF z%DNmJaOszEGF3cm!?XBMUfb<3!hR%O0$_yWrPOuXZ=UJiqXMlL=38W@dfU*kM??7Y z-5RprA2s(|ocpI=xz&{i?c1uU6*RTh<*j4-KubqBYibdIAPQp(d2iODRNX0o`gt14 z284D1!$-|=#SMDqEiYJ0udYKMyW7o$HKP2?pHq)J;aFDu62UcLX;el# z6-XXu{6e(5mz1y?LlkEPj*<+H(kt;liEpp?78q4G8hilI`N%3_h9G9DT#g)@+=W zdPhHG{w9UiZ4l)8E+g!N(Q_sgXXOKMB1WzKJZOVt$%soq-|Jr-@xFZz01_Oaw5S9?lpK_CVmfEF z+b_ZxHWk<8h!6_vFn-(UM9AApk(82KR)#P50!c($H){Fr3$D6?q)D!Qd0VkEpdBWs z8w_65`GECZC8Nu;9baUpOnEGb7Z9~W8>vohUP^BRS^~w>eOF2`lSS^*Eoda-3~^XU z%=)J7Smd%Geg6C44+p_k2yqB2uaL5~kM_zobTwK`0a`L$In^-KUA zxeI2R_>U@jo9A;Ds9{`-%aF*N6)e^{IRGf5wQZAf?oTd|TH-L-SnTzhn2{djr$IRX iMhu9t=^)mCgwJ^c+@zPFDg`~~Gh^ZvjYnySgZ}`l&Fyjk literal 1237 zcmV;`1SZ~|n5 zlxs~c>>UBt0tUs7Kn`|RjT!%tDP&>5sWBrT&xDmuVBt=1<$%49%h#44z@^6wBdT8N z`F^FEAR#L(;OxoNp6;LMAn|s<__1+hhn4^R7au^T@N1Ynz=i@w>FsLdtasm6PR0~!*+NL+bpv-$)M$_?+480UbIAjc19OYE?L8@E;l z1?<$e5C>w|02(AbXKVpMDB*utyS#9dfFv?BT0npfpovtVpn`_%7Qg*$G(mtgd7xQg z@df_yQGrm9vu=v$a9)b=38nDCa|FXA82|(bAtnt`0%Z|&<7A1p9{~YELCC9~8~O;Q z%#OSN>dW;#r~VZ@Mm#A(eQcrBFF!<(eR|aZ0D+hQ2qA$|r#l*)P9RnGwjEMY}DBF}V;uv*`%4}t(Qf&s7qKu-DCNF#m1 z@Z7Wo0RVW3T~Ng4k+xC;Sj~;aZrjA%I0687U~5Qz&^e)X&;9^N{emP+nF2x9JpN3I zUH|}qm{E8DVV5Kgl%BT&(2_uOumFGRB6 z`1mwHe(mS`n0Z0~*sCNU1c$I#zTg-DI|2>3&a1LP`sOb0VM-T7;YcI0M{q-cd;tQ4 zqeWUQ3-l+OFT4X3pbQwETCt>Bhi=XyhadoVm;eL=iUzTFfss;PU;W@h6e*2aVv0CJ z%Qf!RGE=}4bN~PWK>%(hhz73!crX9}0YLyciJ}3kz#EJJ00BV&6+&o$YVZc*1E>z{ diff --git a/samples/h264SampleFrames/frame-0961.h264 b/samples/h264SampleFrames/frame-0961.h264 index 335c33ffc4605ad16e5294aa8b7b39c38fa87b78..5a12bd905e16f0f28de6a58490652636b7eb8770 100644 GIT binary patch delta 1708 zcmV;d22=Tw4U7(I000012`~Tv0YRHU8odej3_~sv2|fG;n#`lB01AGkEM*OZ{{t5? zwqawVKsprXaZ^j>k}@JL=>X{f06-C78(M)M9pGGNljsjK>&gS^lNayL2VZt!tBebo z*xd!SKdrPRp+0+S%|DTGCXs*$f9U~c3&JK4%m97_ir|CcB7|4JK?+_59mf{hAN6gC z6aX@}$}yvSI;y}mI4?aMnc&9vgV^nw5o)qud<-x^tkl5^J@kEwA3?-hKnOcK+4;G3 zb^rP&n}+micVz$cBqhMK(nV;?%nkp8Y`6d3-gIXp!7`8@6XupI=XBh+m(3m|i!B;DJ#_T%Pd9{!&Ge;D~?#ASg8`j*gYt)h6M+|MUQD80r%{v1c$m z;AL}r4KxTy-`oM+)%iWd20e7Y5hc)^09SM13kFo{LO^3%s!6VyjJ@i-trI}+uwn3E z5{f)4f1CK)%wdQNU;uysz#-0S@bEox;q}Ki_X7X`Kp+J)bhH4^zpU*6Kme!|8deCF z1g%`?b~=Qw|7ZY!0K`86Gvi=KI9@1fY2hhMLzh>$U|;|s2#SIOKv&bMM}k04|M7VM zrpw^~NC-xR5JW06@B%>tCPN&~?Q7n08#+rO&WYvV3X;$9Z>8iM6Lvw2SThg z;#Aopz!f6@yaYv9;HkL$El78M9o4`9!wj({=U}Z51MmPb-Jk_MchBMgx-c*_9ejWT zf7Cd^O{$M8Q**lCP#}(|VG(iGC9wDa7;+Nl+e%33k}8k=;0C}35WL}o8%S2S1yBA! z2mm7DY_dRQpsCt&Z~#cW1rYD4e^!F8MNPB<)CDV)mMlFa10PSpn|s>8=B1b4UrE31kBjoO17)7qpM%$|IGR| z1o!~$FaQt*lfW0Xre^?B5E+zs{QWPsTP=>Z(>(B_P9mXCezyLrqT>v-% zAuVG>ppO<9)n$Reyf+ILU%SP#6x{{v`Ppgj^GAr(r)26BJ~|L+C@JOH-p0l^^!ks~jC9Dcor+SmL{0FDE{ z&^QntM-L(->>SvD0D-^&2q=8$00201It^1{^5zCBzJY@_;Cs0f4YY6deiF za9~2}TKb-y;ea3zUuXfwe*md?Hic37|L^zn4~O;RgbZi=h=fK#7ElNc}Woi+YqcqWb8l?bCIA6J0B$DG2Co2kFaQ7nK>#_4v;nKY8;k$|0YLy2LTvzQ@CM@& C5aUn) delta 1588 zcmV-42Fv-34v`IM000012`~Tv0YRET8odej3_~s~CBP7vO`TbqfcT&1FOhL4k$?w(`anqpAiN@BW5K8aObM!#7%osKMZ5L~qC5;a20<;# zm)DpW1_X)#EB!_^5$t`RQT%|}gt9FPP4Hts!P4x=gLXyp-xeSQ0T-a62tD_O#)uvt zPl$d-mhkLG5Q+3{MdAND)XsJ!AOeJwNu1Da1o8{d8OOUTA7@IELJfY48zc+;cA z00agY03S+tSCc^jFq2;a5|dv65r3q^a|#g(fI7tl7bP$MeWaTp1(*=%w94-12G8`h6jgGN8qhY-{k-V6e=+wTp}+;t>n7?Hl#2Bu0fMivm=|o zz<@mkW3X=(^kUvP7s5zE8Yvy*9tvI4Lbv%cCbb*!sZwyTWeVbK)crE`LpqyLc9ROwtGJwss zcz%d=?mz>mtTAE|8$cL50e~{bxrbh85)M%8m!GP5YES?W9u-MI84#>_ zuF!!5ZEyfYGmviAw{c4Qj{yNV8~I8m^9Rw{K`ul90s!$jZUAIgRew^VU;f|>-~d2k zQPZHz%T=5Kkdy!K01Os~FHa^!3xW4Y#A`w1F~0;Ouk0}lg#};)!Ykwv?;-!HfglLP z7VFc?$9`Y%024e$&OWJLdyV#QrKNws>R4nQNiq7oH7T54sA$5}hkzgi05Q}f4T#?z zs$8as^2Q8=5vw4f9DhptzyJ^t1Smk|{uPfCK^tN)SA7VIsi8j5fPLEr!PM0Iqc`_Kgj;8k~wa z!(IP2BY<#l0Ir4#Sol7Ttdbe9mjB*F0DwUjHnY}_0l_XE1^@tn001Zj4oe5)2!|bE z=_QY{IA4>`24GdY02R}F@F6L~i?iF%J^<7NpENwIl@ke?_8)*Tq|-oP zfvMVP#>*oEn#ufA8e#%~)y@w#o5Ye?Z~ylorW2TTJzaWV5IPox#0AEDV^F@INWLgf zEwF%o05In**~icnJlmFuwDE++6*R|k-{@C>l7Daj5CLR;0YSIkTFoI3h{yoFN)<_6 z5vbs?fC2Fbi7Z${c8K2kSPKPaPobhm6ak8h&x7mPMtz~?sB!%PN*8>Gy@MAtKIsLP zHSQgX$XMRVTml%!9gvQKZ1cqaz}z}l4q6dqL;rs83|hi7G8?Z=75*4P0Gpry00BV& mZXqU+2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM@CM_RHJcg$ diff --git a/samples/h264SampleFrames/frame-0962.h264 b/samples/h264SampleFrames/frame-0962.h264 index de8883e0081f668bb197db039add622eb4158b12..43fdcfc30e63b5890f7039d72fc0470bbbaec3e3 100644 GIT binary patch literal 1248 zcmZQzU|{4l01}R~6QuTbe&ccEOk`~T`R5;}+~k8nY3{9!=Nl|I9ej>E#s%&**YK|W zPZIbm|4opK_!~RA zG`KIO=%R#GW{r$RYFV50riDU0{K;Ne;ztMB#Z?cX;cg^Hi| z^#8wVqd))r^Upv(*4tB$af#>8ekmSC@fM~@2@Ki{90@wRFEA)LEbUNu^!)5HheBh~ zmo^6&98_`=m=0#o@|V7-P$;xT{BZNB#8w4GFE#z&tX<`YIUeN(X2^-m>DjS->tYvX z>3h~|%y#|}dLTMY#+Zqr)$1jX=Go^9&&D%(On%zS@$A)xpHuZh%;H!2868rSW|(wn zTjc~H4;Oy+<}aTsOBrvbT+RE#Aj7U9!Oz+|@!*9$lM2FAcPLF`aA0IIa94Z~5JK5~R64d=Ifq{dSq4=Zl^i;}aP5 z7aWj~;8g8M-B|t8^4q!@%^cj$Jd9?|N5%7V%XSq9Kae`45!)ruthu!M3`ecP<1Tgq zi}Z%`D%V(a-}Qf!o_3fq!TE`+MiSGL1`Z>q1B?wJ2Y;%xZj?5h&~tF2>MNIZi(guH z^WD>K`WKvDB(ML-Vg1HM8yI%z6-hjo?WA>dqam2f~}hVY352B!dKM&$jZXKep<5l>-#_DwF_6&6JhGE(s+6cG+eLN;=MA7Diy=?# f2HSdu3UK+wVA;8iarFV|9G~5k8n)cwJ6|SP;nru?kE}xa{Z>} zG*2e~!}0+%@xH<#K#TMN2-sRGxkElM0`Xg?(el@thGyTSlmF6y3Tau6kRc}dK^ANP zd<;ZUKu_YxU+LcSoqvP(qezT3({O2Bq!a#xru|UJn zG6G3P?#{Rj0ID#dOPe0GksGu4Sim|wAbuW#w9I6%v(u*jgnG-t5Ge>8CVVkFSlgb# z0CJw#03Dt10I1YxlGH%n`$ZjA88}470Fm-zAd*60_yWLsOQPABmoZr1X>b5I009IV2Z6O^0KhWN*~?xK0~>)P$ABeTEY&<}03ZM$0Hp(o>@efx5LlXpX4;?@ zW)F=t01$itz~Sjos@qd>9aC7^0KfnU0tXB_PgB#{qS1WGZw*QS0t3RSC<7uDk2Ts5 zAov3SWsP$VywD^Zq1i7#R19r@0Dy=F{t}72zK==?fA0Vc7KblSCPWK?_ejKRLFYg^ z00=5k*iLvPu~I+Z4e{Eqe*y<5c-L!deZUAz8%_0cExi*@9RBd-_#qMqAcGOIU{VE* zRpy?42fiDWr4@eo0TYT2)%5}(RKwZSEGwblDMXe4k=S+lvK-I^;dX=|%Bdf~V*CJr z1lWKa6IK(yxh9wpw|YO=Zd(ijhwuOd0KmR*B}W7OASQbJ>pc+2%@5lC~kORQU;akD#C%0UN{mHKoN{nN2kLH z0kBPG{UKDvxl?*JGO#)kgF zj5wrgt)p)1@&Ez^(!c;wu@XDa06=kMjS_5KxiGyOS8`)-0daT+gjpl!P)FFyO9zIj z;e_H$0Oz8)Ga=xFhEku@>HGmVKmY&%K>%(hm37IM diff --git a/samples/h264SampleFrames/frame-0963.h264 b/samples/h264SampleFrames/frame-0963.h264 index 97a40f85b49cb2226b5fb58ab6e848efa4657cd1..f00aa0c6d0be7ff2907c26114b54fe8a0d0865f3 100644 GIT binary patch literal 1483 zcmV;+1vL5q0003AFaQ7nL7RXYyn=jB0(2OIGYpImm;l#?BxT2n{n%#G`xIm(gkyzZ z5ViC9y$7ojccmbOpaP7A^P-MAm^_B;BlQo=NKvh);2ev}AWWD5<{8vHsUb>nL89B+s{B9!6hKHp(4VB8 zBqg_ob+MGP{eyr_AUFg-n8BYv%4_!Xi$EZ$EG&d`P-YS4rRWHR25))*kjUvOAJZ8K zTKb-eFa8k$5G%j|#|VHhSpP8aDnw~nSl|F{EXp<$RV#V`!-~}vHoZ(9!#^qE7tEF@ z1Au3z@FHE*!I)Q&Fh_LOzTfG$9Zlp5L|@=ADhOPFDzTMHG#zA5Vj-P+;d2pvfgk`N z5-Nlo7-wcFEfv{ve}EGy3L?_x;u@r*H2?sBU@kJi4HwxH5DJL^r@!t&!i+mqjxM+M zzkkKN&t}Znd;o*dp$f8}^a*67m6!hI00sb4yM$;?coGm}`xau9Pz?u{D>;1qeXawR zkq8HgVxQS|zv@~K`5+@m(<4kSsJ_fHHNGA>NrOK|_sAiG%kgj_#Rfv-Io`R+zzM(r zKnmKd01yG&oY>sUbJ=vlsZEd|If)rr$Nfx(n56C}p*|nP%#97Y6$t2ukU}_t3n9pA zC-6NW0LIZOhLwrCU-JAD1_PkzV;Blx0ahj*qbGP9aM>c5Klq=G-~b2_edquPRR92i zFmymd%R#PC-~e<6udbjJ2RW_`1#{tDcomko1pyRh`NRl$U|m6Y#A|i$h=U!7BWL}o zix8&mfCGb4+ylG~-;@x*4qzy|{OQ2}B7cGms)r0gqMC4%K!731)ahMEX^b5Z4>KrO zLqHC|G2w(_!MBXyNccGvzLL(~RxT_9_xHT5RXfMrkx0VH7!Xq&Et2$p!zU>Bn3 zKnDf$quE7n^H8USpb!H8gaA-RTi518QDzc%f|-K&06<`#liMAOrq2nnOYnXGHxqH< zSt)c^2@PWvxLy;EwMrUTou&am1pqiCkNVN3Miw!-5C3=yfCo@T;DVS`ntF6w954wW z17l(!)CZNnKJh>RlmHp!fH~eY3%)Z+*8ng9PYwG7HKqY4%boxq_Y1@?8j0b0^0)&S zegFV~2!ShiUNkqF#n7V?{@?&H1>ccKt(oPhgI}%lCPRp*<#k?@^?IrQ^8K_jI+*x_ z^3}oc$S_m_4FrVAh{%aZtbgFZh19k6JrZBUf`1k80v~`1u6;0`7O9|$n=}RmFd)&@ zav;yTzOw)S3=OC&?%1 zb0uwdUgh8YzFVoV{2&=z2rDN`NzNu4*sqW{afWJ<)!P2q-~`GD3g)0pKb>4*fQj~a zOW=^40tkyAvpbf_=8V$t00aZf1Rx6Yfpb(Jr}Q5RLEnr4gSle00IDj;iW^oI40z+8jP@Ez!2;J00BV& lZYJOcuK;*30003&06B@c0jt0pi~s-uK>!s(ZUAcV2IILShJOG6 literal 1344 zcmV-G1;6?L0003AFaQ7nL7IRXyn=WW;KUi2X8;bdnkC?8q~rU2FR?(h6Nw^Yg<&@@ zI07}|PPC+TXaL)b=SOepg2>)5jouuhAx5WA4oGd|h)!}bQTPDb+3d*$uhFgkkKC>E z>Zu;A9KH%c7&8PlAo!_U2)$nh_PTyBqz6xJwU$zV$@r2$=fMuX6+tg?A!2FQU3g|K ziv8NQ4clR*rv<04ycF8S$a5TrtJR4XQFK^lUV{7BiLYP${ty#O;J_IJ07Ztu0KrfI z^@Q-%ps$75kP1a}kc&W$2|i$9kN<(-^98NL>R0~n01&vKL*_-*Op~|g{gCM3PlhnC zqvpT^*Z>~=*ix}@qbjrRmqD?&C{u&pvm*=7>S$@u=#En_e)EF>0RUz5$Gl0yxB+r> zp?^s!TknKA6&`RBE`9ZK0Ni}+7y=F8kp)di&J_|5KGKbV@s{|RA zhsXhx4g6TZ08D6)Apm|2u2_~wGL&soQm}9u#F#N=PeGgegBI`t4r>OD01zMG3~f(~ zt)Tv38qkQsm?;6MrDK%^@G1OqTNpZF2mlF=9!NB|QM!`aP< z3Us`ew$7ONZ=)-ajyjb^uG_IG4;bv^fiM}&1wdhB1BZ4JP?$Os08QRxGLTv= zUV${Cw(|f10IWa^1?I}v=Z9v5+l;~r=|SuvwWzP$00wOHd%p$)=I!s1VZQusiMm#K>uiMR7d|@WTN!V)@&l(VZ9|{LQwAa^MF@8dPT` zhz`w>s)v?}o^XFJghhfNs8|U>03`yL0U!V%9smLW=CA;;arykng0~GY#ozXTzzTro z_lV_hfHAlw@4Nwp7Gxlb^gIibYr(m_6R8ma004n$nMVN#AP@iE004lixXv^Q2b@gk zpekLO348;^GO_^94+B273{Rco05%F>aHSRDDV)F@IvVr!LD*yD6V_WTrW7%2GsE28?WTsu89B}F5KaM$DS}2UINXZc|M6gOctOlK zSb?8bRq&-&!4LGuVLAc|*^6EP06;9jpaF%el0JypC>a!-T4BN1IVpPVbvF0w0zs8I z1)$fK;CKVfbm4X1`#1m_fedTxQZgd>AtLwTS82m*qFP-IWcDbaw3ek=qGWjM0jaI#6eec);1Fv=dpwrL>-v9uBBLVWi3k1a+fBYa3 zq%boK5o8qL0H6uF0003&0B$Cr2Co2kFaQ7nK>#_4r~#|M8;k$|0YLy2LTUhN@CM_? C?N7G= diff --git a/samples/h264SampleFrames/frame-0964.h264 b/samples/h264SampleFrames/frame-0964.h264 index cde60117730d0343bc7cdef69c6c5da8618ffb50..a16937a5f4a34c45e93f52b1d0db16be4a1cc269 100644 GIT binary patch literal 1769 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 KLTZ3&@CM`4zyaF; diff --git a/samples/h264SampleFrames/frame-0965.h264 b/samples/h264SampleFrames/frame-0965.h264 index 0990e42e8b231fbce1f843df75869d9e5407c6e4..e638c35a156a32f554598f4e1cbfe24078dbb9f9 100644 GIT binary patch literal 1592 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 diff --git a/samples/h264SampleFrames/frame-0966.h264 b/samples/h264SampleFrames/frame-0966.h264 index 85875b8d4f0d92bac3d0514f6fece946e2e06f58..d22f0b90490100da1a5c20941bb2f38f63bed408 100644 GIT binary patch literal 2140 zcmW+&2{e@b7yiAozBG+@EMW`=WnWVv$=FiyWlf5INJ>fHOeEst9lNM+(4rzHEwX)t zR`gCPm55R#f5uX_Vk%p<`Op75_ndpqJ@?#u?sLz1p7Q_zASqKxvb!pz*Gu32CDPe~ zBr+P|L3@pTaI$^x>f61*FnF`$?UB3Zl|xMCQ0Fel!qUz0D!FZ9KcXZ2m68;Cvv)p! zpv81ls_2arz_uM=sp@0v&+*R`MbJX*TI^e1tOG1b00IyglN9XEsD$cu=6Q2OruecA zbfMAiYWK(4S18?;mmh`F#Cc^51q=0LK6Q#ZE(AfTzB#|DeA4m}Tnmdmv+O`PE93s- z0iej=I`dKjkg4g^Rt|;GsNn|z z4io{w`cl$W=AR8h07Dp2cQOxmui_`xnlD+bc&N0xRUbdhkGNa7{Nj0wKMEfl9n2Ab z#!+6?%P00;e6lPOJjS8>!!1?w=<$E;m0SY>B3wY*+9B5>`0ZtKH`#$QEN_nTA-SjD zeNOKCFT+SI5JCU3q1D!lqw&zo9ZyfpWL|jcA3$6%>2DSu#cq0)cBdxf$zEm50U(Q7 z=58yL+pX?0$UkzxUdvMb>B7Drd;1A2p!K((XGA@=A6HBd^Kqmp&)Wb9E%;PH&p#Si zt-f5(ip>Y6oG>@n`pcJQSUHFiH@SS^u(5I)0D@gXQ@*tKL8BQ2+gJ=L!Lg?|@^-AN z*4F7W;Q=N<2vX(cktNb5=_t8a2iT!bxm*1o>{x!rPhgQ zOpU|ajm+@@n*f}|f%jZI+H3H-Y)U&R$cc2nu+%<#n0_Z&wcf6|#vQ?rl1!Ny%C({1 z+*Q^jXF#0bSwcl_w%OvTx%Oz3pPtO?7)@NM{kDRWL$}zE=k79uYevE>-kE8w#pHyl z0ho}*Vb~O|u{iZPO#FsG_}$TB0sxD$UC0qHU8~`#NZAAn0kYjOQd2?$`H3;Yn0PrV z%fxYK=i^Bv1VG?e0q|`&WU@E=?%`pprFTzLdba*o!WjAOJ z<@=Ne-B5pt?do~gzWTT$%0485BdcWO@~TOkm-D#0@L3@;tr+95S~12Y+r1EgVAz{j zsh4n1`y9)a&0oMWB(&OEw;oz|%O(z&2&_eipW9xaZGE$-p70SWkf61;^1)|zMlE6h zp$wIqi^rnbHaR~(GD49({K`s$)QsAdZ%0daCx~ktEzDk?)AXmo{l>K`b_0pOP2nAY+sh0&a2#pXuzlH2p*kdPei8ugI zZ)n@v)dd&TRXtdt&#N)@@)^$5EDz056;s*Qm`MLl^UC7Mv6zr-fIkR^h^obr?K7t* z4r*CE)q4x<+>bdDvZ6%6+>E+d6goRD?Y;Zhv_=sq3#8dDDaEg4(UMcVm8{(pk7K}{Moq8kN%rit%BC4o z4f^>E2j_<`jHrekaKd5|rkjCrd)&r+HGPDV0W{IGe>EZex7tk)#W|F&*QV6IS-g`d z{4Kt^Y+XZl3d!Frd P`nRKC|0jA>L>l@Z^bVRB literal 1758 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 F`9Dg8jhX-e literal 1411 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 delta 1445 zcmV;W1zP%_4!8?{000012`~Tv0YRJK8oUL7PCx)a1PW<}7-^=OVTKxMpZ~xDoB#p= zpL75L0B{lv8%9Pon<966FdSWQga8}@0A-K?r`9m7z&Pjz=8@y@04e|i0)Ph%N(qtR zqwH69W8fGef=IH!vu-<6*#QRr0SM?Jp#1VU@Y=k$$;P99RkS~78^3q}K)ayR}KKoCA2cvlwJ<&V={YA|IM-Z64XHtzP z?|FV#(2xKB00M6zWiQO0T*+meRaJ)_4Hn!J8$hQiQmwkN_Y6 zARGZ{pkZ-=&Z^aV2yf6MjJqW=H^hd5FM!CKoPF9c7IX0$E_I0GXoIc@j= z>Huz5Enac~QJL)lLW^TgtH9|BK!gfY#F*9Z@X7}TPFCPLRAa1$+L3q}1p;kt+0KwT zv7eTIxIln#sMX;Z^-d4~2nYwG9&L|+CYSL6{1C`ru3Bio5D(L!hx*-kB_Ob-p-fP^ z2qGG@3${S~5`X}JAe%Z!DmAr(PD8+60@wy&K8`1}k7L{KCKu*@I#J-0K4Mo8OpE%w z5t3xFcmW0&BezjiN8YGdjlKcU0a4Qc3mCe86i(N@q5vQQ0qrGw$jejt58r420s??i zq;^JQ*t5e{tv0KmVLmbA4}q)>j*PvoB#lTDM|nW000UgzNpwfIV67Gm*#uF4&(;dkt`CbA@pa6A$N6-`-edVoD5crHhO}w&Ll+hZG3m5<%F-M6g zSVNYG-qRdFtjW|hywU-VsJ`)Z-yo&^qe7@qzJR3)zC+%y+Og+IdLg;A<`spF?3MQb zLm1;S5ztJUc%RxDg<9duQY5I4zxo3{K$+D2YVeQnF+BpCz(fH+!*u`>>{4=nqPAk( z1b`F;iot}&{V`u~)B_j+Pzn85DQJVCR8Nn82Rw*>Zm%du0~#MB^sH8EUhor(;3NQ$ zu%nI%a0W*gt;9$00pR6b5-qN}R#u+&yHqi+{-R`m{y~5sM2fjQdz@l!z}U}`=0^Sk z;K(#X=(iv0-~c>d z7A53DzvT2C$|ufjWd-1co)v*L2oaEA0EoGhnLRr7>~8h{;5`SeM3_N=6*|I>c0TAz z1V91S4w-%dup454ehlv%K;HbZ@*B^8^D(;0)>c$gk8S!a0140y&pZNAllTTFbx?eA diff --git a/samples/h264SampleFrames/frame-0517.h264 b/samples/h264SampleFrames/frame-0517.h264 index e4cb8050c835cfc1b076383b8d3214fd6fa50481..9c14f1e47c63c8a239af0f8a3d3b0dd37f0c5261 100644 GIT binary patch delta 1211 zcmV;s1VsC|2ha(B000012`~Tv0YRDo8oULQ;CT`|0SjCJ{q*pC$$6W{`F;(;FlGsX zP%s#700;mA03Zk<52HrM`z8#q5lS!LgALe|fD|oE^;_asKj?r0FaQVv=mLU-?_LlS z>6ia-06@lZCX%C$VPgKWiTDD503ZmVVO}e*gEJICH631m004kd*c?q~q?3Z$I`e*D z0e}F3w1)bGKm=(l8bh2;AM|hyo`7L6%$Oq!?;#)oGqV6tKwyOnp<&b8z&@+MP%u-t z`6yYZfB~XIfB=Bt1vvr=o6r;94gj(~o|FI`lK=uW2LUgO8)!;mLHGa>i4>({Hd4DW zcmM_fwjK0;=*E?4;{i2)ycYn_1sC_MJ8{kMQV1b=UG zFZlo<5;KYe0+X+*f(sGw0Eh|!;9h1Ls2!&J_0MaY<@C*anZ6Dt701yBm18s#i z1O$(@o^wX=3DD$0QF^4K{|y#95??F-{_X|=URW%E8&7{C_WLfezq~*)1Uw4?T~Xc1 zpr$f^_RmWJeYgk)3Uv>>dF{P#n|{CAxd}0D*&sJQ<=y zzm`#qChGud?-RuUB+v!}!Id8kR$hO6;2;1XjsOA-J%9ipssR5!{7rCR03b#H0t5es zKmsAT@AL*iNdco~q%U9us%3EqN(>3l1_UI30nfk>ffgSZ)fh6x^&S8M1Vn^D0#$6m z{Js-IfvP~X2xI(0L?9F$idaEZ%&GqJ99jYZ&0@NI(M3lUklrjheJip*10DuA@2>}}czydfH z8KYIof}b&3qf}rKzyLr%!+j-y0ERdTfB}`j0Z^+7Vs<|O06-7`1Q;j)Y1#v{01O2M zq?#e)aRE8`d!}s(rz)c@Oz>$2Z2wMw7$>4JkU@Bi<7 z@Vp77`sv4oJYYLT2={dgd;$n_VZ%r(M+r!)+VcyMk%nu2U%~=UG$Y^vnCd-dD4@vW znT^~3*mwv4W&w1+0F%Ld8gx%Gx;7tXb-(z634ls6Z3dnLLw#uBYxgNAEd6T$ar;b+ ZAuTfk4L;%hkIxFgoPLkMB`}kb11BfcPz8@MNL0Ew@YIskwHD}l>> zAmMLu2T~(1gAqZX;P6%pf`bSE4@}x3nAH=w1O*UjThCT5LkT+X`+x|v9J==g6grXp zmjCwyt^fiG0wo{=A^GctI$z`eZ~z#97DQwG6^f0r66mvknm!K*fsi=hkxSc~5iNn7 zNWW2@fCL5;D8-N}?YV7Xx#cIohQ}iU=0FR8(!x3jqGaF!lmHD~%pNA%7|E|&{}=!Q z3?Kj@5C8%ZU;#wSad^T^P}RSI&QQWcjZyaA1l}O}4Ai2WE{pmbf*A||9fJT7(?o#S z1uSn5{{I+%11JDc-KLz)n*ylgPRs!qLIke53_LbWmp+NuO8@}?34j5?f~1e{FQxH- zTp%98K&(JaXMkWB4i=&tg%BZ$nj5^yZ~*uaI@Rw%F+=R-=c2A)KZG13lz-ys@HbfM+GZ`7sh~6-e092=t(M| zo7({p1c5vbzUXn;ACC+*(4sf=+%O*iB0A7{hwtg(SQAu$A^?meBn(fiP`wR5e|`YW zI1>~ApusoDGk_I994Jb_UZYJVXaPzU-0+^Ij2IMxTIV!PKlOZI)LB>G@hC(f3Oyx% z@B)Czu?`%8E5IN4ft+$~tK-kqAHNOx;aC$(^;?e#c)|Ec-_HKWAOi2|2NMN9XeE)t zR##oG6gEafbIbDkgoKtN5%2*uk}}3f_u+&FW`b|nJOKa#Fa*;41`q($2A>x57h>{h z{TOXH0hCf(=hyb|8B;xR@wKX)`v4sn6*~w}Vi@>M-)G(Xdw+EBoC(MC`S=8;lc@wJ D4l#k_ diff --git a/samples/h264SampleFrames/frame-0518.h264 b/samples/h264SampleFrames/frame-0518.h264 index 0005c28fede8dec0214a42186ae524a1cfb4ea1b..e0de897a22ae8199a08846b709bf55395f1462a0 100644 GIT binary patch delta 1544 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 diff --git a/samples/h264SampleFrames/frame-0519.h264 b/samples/h264SampleFrames/frame-0519.h264 index 58b7ae3f47c19e2485ebfd476120e34901ba4bcf..47a9d1d4ba9653e30eeddd6352b8c7d83fc3b539 100644 GIT binary patch delta 1544 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 diff --git a/samples/h264SampleFrames/frame-0520.h264 b/samples/h264SampleFrames/frame-0520.h264 index 63bccead3adf23b6a1844c49fb60a8f656040d1f..4988e669bb480ec3f20696c42f4639a448655713 100644 GIT binary patch delta 1672 zcmV;326y?n3X=_g000012`~Tv0YREz8oULQ#DXx0Q-B6-x5{oXcmOe(2^6JP6Ox|z z00IG^6c>PpUK$N7-+Lv>62sS^3Y;&17Zv`paFOQ2m^LO zK@S*u{8NX45XS&IYzP>JwAG%EN&pHR79uX>;So&x+Gb{NX5at+JOR^y0D*nR+C#tt z$*G=?ImQ420Ep}kfGyaT0HEjlO@Id^pa38tYM2jyrSAYi=o5KEPaP!2N~~9s8??hS zK*$^gPy8L_Fgohs1_n2HH2@T_0Jhm8jr{h&03WyjAYj}0R~0*a2nE0ZKzg<$00a%r z&H$mmx7m=Kq&b+O8sRL^N~)ngq5l8?KsW=SK-f#F1n8B~3C$#nv;aZ400aVUNWcQA zXukJuUyNOv}bD*?0iP1IO4y7U`!$ zPa6;;@B-jtXo?h;RUvi&MLoeVl|(S6I{Pqx00gUy0!-eeg`eLCz!+k{5B@wMAx`tG zAcxc701yKJ1c`tR5GCw03DpkAOIjlvzEit^?3A_nj1jq@bU^wx$>75-mjgM!czS>z zBWPd=9Nh{xC)^T-EeU}N&f9QS&Bg`*3QR?T-~pf;N`;crjpkSb&YT7TKAUWxQ5SAp$}0<`Ei7_U{2gREb4JRp#@52jD;{ zi~>tGE&Nl^hKzdPMo>kgF7yHos>lgEk&EAve?^&V{K-ITlFNJk07HNl9)bi0b{VFQ z0iEn0006{lR&dbv_RN{@_<#O?pa2*Spa2jM*5@Dv9bJ9k1ONm8!N3j;Frp;l`}pa{ ztl4kI5r-wHI7bsAiw-BC0s;}>w8rtH7rDx&|Nnpk0e}Q^sU!`BG$ZJ$jQq>s3;+ZJ zM&ca;Ok;+h8$XiU0c8LI0UP^@43%$#|6l+hCP9H_1P&{jQ)gigq+bAkz#nw~xs}WF zkDoFjl&m8$C9TX~q8CCq<2&ZTx8TXh(m_-IH5sW)$XBnN0D#P$Z~_D2-f9t7==coA z01B3~fIuA}6~}07B=Lp-MO)#>QBHU-JBBh#$0asfYy<>9Xn=LDD*%D8`a~xPVZv>e z2keu(Bq=-n-~d2?`NO<_5-q=`dze6fzyl~&m?UDnaDf~+ptu2{0jjBdL8X8wS*_3` z8bT1NiVlDMplbIBi;B(H{0u%Y01yEVw)i32!5a)9|NrP>+ckukn|!|yf-pD+zi8Be zVMUXAU;lXk1Jo2KYpWyE6`%IMzytgR1d*3LMo7Bx4Db^GaNNy*VA6%Q%7m0v;QRu> z0*?`f4AEaPF` delta 1317 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 diff --git a/samples/h264SampleFrames/frame-0523.h264 b/samples/h264SampleFrames/frame-0523.h264 index 48630b4dda92885a344a0bce05f911c9f6e11e4f..61ac4ad6efc5e871bde3fbe1b6d0a8b29d5ac482 100644 GIT binary patch delta 1800 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 diff --git a/samples/h264SampleFrames/frame-0524.h264 b/samples/h264SampleFrames/frame-0524.h264 index 75df0bf9b11bbbfacd84238b8fc692172f1f4ae1..2bf930f290dc411789452f9ba807b62d8d31fb06 100644 GIT binary patch delta 1690 zcmV;L24(r)489GJ6@O*|5!NIj0SM%d@d!E+G&pm8xv}=Zje`$lfzT8Pfr@9E1c?v< zs3Kt(Hv`xbCDg(j5o1h?>A<`qHOw6IsHy&60RRj#o-85wHnkAZd_UEAB0F;%8Cd_= z2oJl$v-Y7+((n}ye*}dIw{j%E_y5ZD3AWB!XFakL64Kfru$fV?( z<-AM8LkM9EJzntj00X_qc$2`xNn8<|%i!SRGqVhykbeL`U}F~W$H(`NAw=V&NW;O0 zV5tMosjd!#Uu&i<-bt?>_}!p)leXe|>rBATBt83xyN_G~05al5@vm(98e<05AX$6aWDM@CznzAP!goNF4Kg-oShgl@ag) zSe!I;>EHL)Y{T^BIZJ$Dcl^F8DrQ*DpU#tMfPV{RrgBe>+5ACnM*sl;6kP5PNw5Ff zAZ{>eJyPkt;skUzV*;E60Sj;>l1%cXa%}LI{^I}(fV*pBI7}7W_7R`}5C~iV;&&%8 zH~wxT0t8-O3svV4HdFuJrl3LUM3<=&PCwvuZ=>9Q@!oTD;qkD`X22ZaY={5=f@lCV z|9|(wsz^Bo7r=*E5CB35UuF3YKs8>; zGohgJL6Lm4|Gxkg1H46L5}PAGK6C!i8Sw_YU%^W!U;BW<|MQYmGJ^l6|KPGVM}M6Z zKmYIUzyLr5z`sAH42nw6@E}tld0Cw|{&*NTyaNm)FH?4F^cX%E{WT0QIc&nL3NFj; zCIA8e0%(@bp9Gd(Rx$BQ$X)Qt@)6&X>$2qIo7ME@RAl1s1!fCpNE z+Gx2Z%Cu!L0ALq#!EKpHTL_;joqvnp{b@U`&jSvn=$%Plc^QBP*C+uRIQ)qY zvf$1R^q}!BvM7pJTYv2fo)ckshmu!6_yHkS;|gfj_Mt@?Z7vW1A^`^>(tksTPE&|# zSN-4s2n4;MD+`+%WYd2pD%OkITk{5N0#AO-$<{`khKryqE-n-~db-xxidAV{gVZK@R{1%*42)81?c7E)9Ry kh-t`N=5mqY%i;oGxDQ|fX3J%3!X%Y1_Xpqzc9S;-CkV{%FaQ7m delta 1593 zcmV-92FCfm4c-ip6@M#$LJL@thzf}jq@Xq;XmIknKWq*NVeF7P0)Y@QCV8MTazF;4 zi;}6c&4D6aOg#}=SWD@^_?ab!7V0j)&9BVSG{yb|fwl{yr78--xg);b4bCU9p$RbU z@CpH{;qD>s8+=j!`}s35I6=5w&flcCKbg`Rq`z#c9Pqpdoqq)klJzo3Ujw))!0ZdG zWB`8jKKUOm*N6ZF07AS8B$2_Ca~rw=!PGVYAi#|bYy8QzO#)RtOXq;Ylq}gB<5X*&?89C;+p|L@}gBWp|>)KmOnVAOZB^ z$pP$HT7Tx|x4B?u1)yu4Xg6oi_;>?U4Bu{nN|%BU$iQ|WY(TuD__lL^3<5X<2I3~h zC8|yN6ghYR0sy1J0k}-5M4^Jgo^TGpH9K$s5GVj58jzWro{exqgq7?dNa6Hc&;Wss zXp3Q)+{r%Q_rtbdj}c+eQpR#^IT~s`{sLeH6@NHE#Ox&w2_i}y02qh{fIi@zEz-)l zkO5|32YP^Tfq8r35_#(P7!w?#80x)g3f|&CRasilE(j=IdzY#`z;S>FLRP>G9Z@qn zDD&tgD%S(>&QVF{DD;xy1T@EoFPdn;%t%vaOz>+TmT%B6&k03!p_=CgFKBE?%YV8< zSAVA1O)#v53^J=fI1qq|6QyUuAO4&Q@@%%a{r>y_XJa_3UA1Bwf8C@20sw$UQeZao zt$D}Ej9%wMFyuTaxgqjz-J2Ak0pci$~L2tggm}0LZ)IG_f#! zLPrk(z%|Aey?hlXe$ZzT%$PufjCleN_J4tg?!++&+*xAmVu3G@`1a1B*NDyk`WusE zOlcl400aiW06>%g1OPw)M%geFd=W-nptm`q3{sXUlcBUkBZBw`jqd>~VmSk%cuEQ; zggJZ^20=(-E+`gs2mmPbM(OHLtYCl=XJi@<0`29&0SIBbdF}>-#KGg!$9QLmuYW=E zCT3##TkL!Q6CyFH7|7!KmHHa9g0#FK0AOEa7}r ze3*3C0_dP&4a)M*`^Eu>?wNoFFn=P@sGjH)bKn3V4Dj+Q47ZJS!q1e~;C{j+zt%H; z+yM-8#!Uu(xm!Nkzd!*aXh0YqFHAEL6&|xD0ztr3kO8ty^g;cMKmbAr`i}zx8C4@+ z6wwZV03Z%4Qg;f%$iS|r`*;8X0Kjuv07h})jE!O;6A_WP!#D;2X9&`rAAc0NSg!UG zU@=MvN-~mJ`y$lo{$LjSawHOdCKv;B)eje0od0yRKS6*nHI2t2Dr5HCP7Z_M0Du5s z7$R-X@4ItA6kHOJ$QlSnaYQiA*GVM**M|TEI&c^&I!s?bp_NBYd6`8w?32>p_*eh# z82|u)0D!ofmQD@+=vvA9%zt_zKmb64s`h{qcHv_S*XAN8BG`9ZC-49mLM0PJU6zp6 zF#ek`eZZr0SgO7s`-4)0uTL)1?W|+M0D>WyI1Zcn9Z`Xxm;{~x2*3#lp(65U-*B)d z@PF}dGuZmC55NHcL$D2qiK}|l1qDaA_Dlc)0FVF>4FD1omIM#*2rejO0eMxjk8)(k r*~S^@0$_o{sL^WQ(VO8*hj3sE0s<-no(|5my)mf;4geE$la~f3rWvye diff --git a/samples/h264SampleFrames/frame-0525.h264 b/samples/h264SampleFrames/frame-0525.h264 index 413cee4a68d8e5e0d97029482a959742c1ce3618..91b5357bedd9bc24b1ca693111063074f1f38a57 100644 GIT binary patch delta 1603 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 diff --git a/samples/h264SampleFrames/frame-0526.h264 b/samples/h264SampleFrames/frame-0526.h264 index f9e243c0a8ab234a4e4bcc494d417a599ac580ec..c3e0e9aa40929dd94cac3e1f2fbcf3f1007d3726 100644 GIT binary patch literal 6583 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 literal 1677 zcmbuA{WsM40>?jJ^I$MjgE3}jWWF}ZFx^ANr3PPvWu=UV5R>OhR7$PuVKZOGLurag zO(9toi4B{qmS$8mWa3tOxU3lw6Xy80=$p}WS_EC@$FQwUu*}b)OJ-IR zZ5EDaTLUel-fFS5G- zHMh9*e~zV20=eYN`cO6+_vPU)Dj)!)6>2q|^X!=hQKDI^PmYo-VhF;p{hCI9dKn!B zg@UZzB!Gv+?+S7@NKN~lR#^Nd4k!YUT<2OMDhyjjN|UGXKFG{AeMPGyqt*);kPrw$ z@!e;0+z(vpiYIc`eFT(ZGul{vpHZ(6lLIvr2&uW8xgrP0k|EM-8E!MK0VDvU?zNTw z-j$qlP!K_$>#JS4bD#?mm(?M#G0Dl_OL=90-W$n6coGk5ixTSS6Ax z{$U3L`nDjWO;eMw3>Cl+6y2{nBeDfxaI;fN?^aXg2gJ&HQYcVkv;OaS2?MfA8@awu zrlqH`#SWj<@%E>iavAvvIP2X0l7VLpaphlYd@b4^R;2z45b-gW^d_I|jh_28>ZN0H z$fQ^hlCjRWFhE&7k-7>5-FaNvL<${&Z)$5M4 z#)<>iOl#zX9>p&gxLU2iGQf`)$)V;%X*v>Ex84ljZA5x10nJVFz#uVpWNJ}{4a;Lf z^O5@8Gkz=f7}ql$vRx1=9(ceL=6WOZe%@~k8e*CyDH3FaS{4+$tO%HKVTiCXL5Kp~BouuJ4=4Ka$8D)H_~hsE#j! zrWT4b#6BkwBYw4a8Grh&*s$a4ohA?+MIf^d-*hfzQ!;)&uv4*nA*E`0HUQPBAWDpB z&9T1D)L;D=y&bNgZ9wa$2E8>1fKOc;LV+Ntr6FFzV2dw{7?_QJV&{0lgu=c#+_65`#8`|sV4fY zr8sLs;!(AK(5lv|P2+?qeEO@aH8U4yiJXEK&R!Dy$+B9IbT9f6`)w4?xW7dOz5>Nn(@Zu*72r8t?kXmrr3Wd6W87! z8dCjULn-KXq-9?47S#utclYt#WFf7SWFF#GWtFd01Cl|G{zm4Qp>5<~eu|r_x0yZXH_nfp?@NO`2`%XQV?%|w7+EooR7Ca*X1n9 O-^7H!4^5mUj{g_la}!Mf diff --git a/samples/h264SampleFrames/frame-0527.h264 b/samples/h264SampleFrames/frame-0527.h264 index d0017cbc8061fcf807be76b6d85ec0e953502283..6e6e38807aaf763d09ba1abd1b7bf394be2129a3 100644 GIT binary patch literal 3204 zcmb_fdpOkD8$WYl&@}E*TTEFY*BZB_%#ccHBW<)yW^~yumJz=g*BLWm+mMQe2&GmR z#nzVl%!p8ODKf%bT*_s{xSJW~`?LN1`{VaKyXTMhywCHV^Ip&Ayw3{&fT`N764zVU z4K>8IupuPY&8`nz`~0Q{RT80U_F=ejs>F4aoXQRJD*Bj>p($Yyb%)>BFW23j`x(7| z#V9jjO`6<`KP8qp%Q?7{Q1>U3(r$xAzx_W+B_XluAMAhGd4>HO#+Z75~>xzXu%Dy^V>WLCPYpyB^9 z!?T$Lu|M`3_tlsh0a7Vl*sePDF#?*a2-!2b<^CweV}~J|55?r17qjjK7k9{^=ePaR zH`QzqOCU)K;)2mbKhjK2J5<*&9%%?k4-{D1)}Jd|;g{iLA-Z*Ez+SNkub}$P$8DJr zZH;`MFtc7=7z))Md~vbmgI(unJk--xsy?$2FraR|B|~Z6`lge2aA`gCN~@GjO>f?Q zs5l6MZg$z%SV#3?NcLA#CCE@V0vZ|EC3{L!WLcQHZI(|ttk9KXjV1idi{kne;@_$} zzUk1r(Iv+7MG0z4s2EnozKen4MKYzjH@VxaYXT3=Bu&bLT1I+tT@?3av_OZR%JsRk zF0s}Te#qtAv+YyOTzi=2K<%D}d?|5B-{C7AF<gEP>Z$rXb zz;;AFC8tL{@xxsg;HjOQe%o0g`bU-jYuttqJtqVb6 zTDW!DKm;yS{2Hdo)qq4`MPq}$rCl>_nc!x6$yM1j@z%K{4FT6SY+N}@N?#8<-9ru9 z@uQ7)7B+u(UH_I#i%wIaHnJ*knh(kdRx?sX?C1v=Kdp6fYDo>L^E%=VI!o6>^58O# zuAVzFiB{L6i9n9V>7Q)!o_%Pt27GV@t9#O~tyP`sW{?hStW46B)3X z!%>87_@aB4;Rf{RS4yt_9S^;=h?cZE*@A-1kkS+MQl^dp70mu$!A9btC`S7`1c-7! zMf|IkX+;g{IPr$?S{M*`kp$CdZ$Fcy2}&n3rS z`DBEP;`vMZ>gnAQBNuyQMABd~oB)z6yuM^~v0BDih6zK6)vG2>9p7s{TRsSLy1u;_wea9e5+IVhRuM2byH~ZtL-&a$Y_k)gbCj~b^+RKc$ z!IN_TQs9&(kA?^r&t+8xK`U(3PxB}xNr?6*Q`LNL!>?a-&T}s9bMwrbk1b~l%AxSA zNB#Jv=nKX7=Mt(L@u^$K(FZs6Ne>Zid6D3Aa7^-Y5R^)Piqq{G(`#A^NuKTDIgs5K-*9MEd7PrKzpePOkWrs} zBbHH>G$dOk9~R7vH}HT>UAS}bN;@RjdKU=-tpSKvv1G zby&=29bt)J*oV!p&2qYih4gkR%PRASrSnFS$jOzvoBB7_cA*M^86D6GppfRmNQqRs zyRpQ4W)&S}%5dkY{%s;ZrB^Sr9-yKbbilZkHU|vki{RKDCgb}Sw3}D!Q~cl`Cn%Y* zc`L9?FuZUb!CrvF2sbcMCUhsq>_0+ zFS{Yg-)!%7Z+;beJS3{Bs~PElDEWJfx=PS%OPGv(T0gqh)d9#Y5#MN5VMr_?m>B`@+*QOcE|?h|0KaDHkyl$<@Rm53gC(B{7=EWgt`4RuA!!`My`M+ zrYt=`#xCJUVy;B+D6&UojxQUJEpO9;Z2hKbjR9_m!r#c`QZx;GpggH79b)&88c9rwcDXT@r4qq?cI`S{2_*RYvj0_GQ8&qK#zX-%s zH&`vE93Nw1t$S#{(}REF%;yb+a&=auwM|fyD$o(G$Q%}+nBt9HbIMIkT;^fO9Fi1X zs;YPVh4$;1NKZ;c3E0jTjAyb0Za~WSn}8r4ny^wX|6k=3V8A7(Z@FeoS$Fr&;Dk}X z7%G{@1zg_kWmqgW-~vL?T^m5pK?`XM=3ibZ$tq4%jerxIH8UEO)-2c(uQJs82|6g5;CogmWg#|3Y&E67Jt)1qj{xn{p|jew#7C X50~%49&^7-{U*_MJ4-(=Q6Bm)F>0x~ delta 1370 zcmV-g1*Q6g8L$g~000012`~Tv0YRHU8oXQ$0pkvUFtpNd?@%;7+l;SFi-S*XVh=+N zzznZf)!2jif))N@&~0qB{=mY|BEsc+Wwb8JmVMv0+usHuW94$VVDT!4{#ZkU(kC}s z<-AfU~`x%DgauSkFg79BS}El;I@EZ2F`#l>v%6Ffr5duH4~n;+-MQ;AOH{x z5DJNdAaBpU6@`2^XJQbp%tDZ*5B>npx6#-I@(ltUHngEar=7#t8+Irl3*q+q$zS{a za1cT@9GR(Cq5l4DEO3-O%^&DhzyJS{CzgN#3vol?bO07*B{R9Lsqg<-PXM%__@#4S z`^Zia|Nq9!jh8*)lOYT_lTZZ`e->{_7mtSmKyF|cAWI$ebP;9V06+jhZ~#F!7bC$; zkWg4nl)C_MSUkbnSn4NI?|3jEhsmnIu_6WJX-SEhhry2VD(NjEuH;ZzcmL>XU*>Ul zQ$z(+3o`tf3W9=vYGXn^;ct9EB>^^UD*JP80AK(hS{LL~4|%_Ufp||tf7AQJ2v386 zxj@$h2-Q;@>mb+w0s%k(ATmseh~8D-{RhAOz!VX~8m>HN*K_GB{{R3$6dV;TU-25n z`Yku-tv~=EJOBa+S-LPTWakyf1aG(j0UQYW1q+Tlq|6GD>b)07CnQyxKoK`hrVqjdX*7=&}g6{tZ8Grn?)P>!JMiU?JYBn z+DHF*00IDFg8Wz76RU+-#tD>#vlpZJu+1Jo@C+dUK)?aHrl7DSicT0vdb55219E^A z0HQ#&70`+S{$;m-0k8o604x|Mht(c|8&hW???7TU0Bu3M<#MnKe>Sdn;4Xz>0Ukff zI{&|bQ1Vn5qEprn2PQH9xbk2DfNNhY2M#zS@{)*(7EV9s_eklm37m{IFZL>?1J;-G zI0ygXzoVF52K(^pfs>pH@WWc;kSRL+gGYuJ1or8kz5hHXTwqZQfPgfPbZDVa8U=7w zVjCX!x#PwT520r6e+W0gk}lx+lW04hl)*k`ZK?rgVEEhs5PSf@ z;ptGS+f#8JQ&`#nzyJsW2Mjt-Q`6d_(R|5o4N3q41H!2&10ofVHQEp$_yYiCjdKpX z&?Fq8*)Km-3~he^fQSbE5{bONk4g!D?*I%Ihc8biL<@oUe@Mh@LFYg^00=5k*iLvP zu~I+Z4e{Eqe*#j5KMefP`Up>8HNtp(yLuFJ{6U|9BWe1iGpP3qqnkrjkG^SoY=q6%A^ ztSKhv%!p-tBQY;a7@Yxt0SZvXLi!m(yiv+300am*e_|eKQzg@QQ3ACnH~_$53yr5Y zOm-b_Fh(Ho{_p{T3}|ocD8q_Iy4p7GzaRi0O)LNf8xbSC@B{}INYN(6+mj2?wRa{q z@D~?=Xho7fbp(Bkw6J(;o)}Ifzz%vVlQJF%NM$MgPM^RNbN~PWK>%(h&<3vncrX9} c0YLyc6p6F}tH2wK0003&02M-Q0BZ0C;|V}V761SM diff --git a/samples/h264SampleFrames/frame-0528.h264 b/samples/h264SampleFrames/frame-0528.h264 index d6aa60313f122869cdb722f63c18185e92c19bb3..5be9285ed60765de1d2f96aa090d39dc5bfd2199 100644 GIT binary patch literal 1863 zcmb_d|2NZn9DeT$vzZOCMA=N3FR?|nM7FHVmk{}Ki#94ZUy4$a$j3$$m8h_V?KU@+ zPP(d_udUo%l%|AS#e{N8St%xC*X=L3=X75`Jm+=JbI$X_>-C)H0RX_z)CFJ)7{(1- zaqv86}6^<#DbWT2Oo+w{V)rvZy%k}_1Z zvdFon;M$J-%nD+~$=78qqqeW)qmw1_N>2}^=~L}@t{UTg^H?Im`gPg;j%%Oyrw<@S zo>MiF@$FK~YV&Znr)`Trt!;m^5~B)Uf~-LE;n0Op@9nMi?^3cKY%G)PN|_DiDa9utcGORTrDqEn>H zyt)C9ds`hE-YLnDVct&8sOHn%%4I*iOeU}iru#$$lz_QvdboFSz)wwQ)!BbY(Zrum zWh@t^n)2$FwmE(qkD9Xmye+RJ_flmFEY@ksJ>!w{v#{Qq=56I}>OqJEAbMS-tYI+jFI>UKW05o!7_FCgHMkst$dnF>en8f$(*Q(q7`#vrwUV7obNZ z$F+#@GeDa!xVZxLj7$VoK&v@BW4tpcrOWr*^fYu!97Pa_^Ib^Zxm2L5g9!_w18Y%u z`Luw7g=IGye_FY_T;xP_N1&J7yh9yR(lU5dtrY_%Hu< z`;8u#OCSKX4pkRlUFT0}YRLkbGXOwiV0Aoyhs%IbPOzSw6Ixh)XPIuxZy8W z^9Z=;_zU=DB-B_tnt@IbdUtIpWYWf_+hWkC2Ck$ zcph{g46Ha1r`B5V98NiF`NmFi#T><2H1029ga&ZIAZ&1qPF7gaMn?fF}OU#aI+Y+UJm{)RJ2{Mjwl#zE3L9Xfxx>_}wdu5p{_j|1K79CRrn$9W?+pW>4AjO3GZA}dIrw_R^P>l~?JEK^N(jz8F)p`Ic)}Y03x!3JkgN zjyGl4{~=*mg!9Xy?9{K( zWpF9Z?lCvFwA##;H6m6PQ^BsyTs!B{*qga(gzIW~+%`XxT#AT#Bo2p=R$ z+j3doeJhLTz}O=^<&oiW@H K4Pq3U!~XzsD55C< delta 1312 zcmV+*1>gF|4)+Rw000012`~Tv0YRH!8oW}#;3&eO3m3b95Dk@)Rl%1cC%>ieIRp%g z#|+>LJTD$^!M&(Sm;kp3<3e}a1G-)V0IDn)cL0{=7wDyjPn$srO8siMmFzN#z5fR< zoX+A(Ke!I&h$Yl50(K++t6vfnSWmEaX0OTX|G<(mF0$?>ibCJ`0VV7u)NbT@tA3Mm zafU%&)pC?33d;^#LyC5nVf#pP#aEuDf_#2)RlaU25lkf%_f8x0UkQKoX?5YwP6v%cH#A+PL zGq@0_0*`-FBS>xB%Ff~F0#6eH7MSxIBlZKAm`r&wbN~I|0NEJVGiN)qKL7wAFaXA+ z8aHP&P(^vfX0}@JQs)*!AJtPBj*fw0BqWTM5yQ<2%(h}0O-+$ z_fIwbw(9@{U;!isBngDIH&8W^|8X`c89)HQe*ty9fG{ompK|d&30seN!hIkeP>DfY z&CSjJ9Cw}|$lJp+B27R41{?qoAO?GYv0R`{PT|L4)W$V%2;x#eWP+1a**NbrfBm2a z0I%>EKe3Dl{g0`SDc6%m8Uk^aJ@ujygN?~CQLzD z_y?d3MI_8he}TW! z`6-U@01P2PAyhbRBrTzK z8bA0L7lH>6)1tx~)2Cv4UA$LFf0*nCKtNkDTkrq^0ww~01CCc@(3n)T1_p=rj2sH! zg{XzxO?P+d0U$?D9)T&Uy}{rI$U7WA&U{IKZ~dGA18^AUlcSTNa%O^?{s2&5gQKgf zJqj+ktj%Y1Zh!zmAOHjfVq^&qeZT++1%t>nM@G?UPR)h=@^yiPVMdxjf1)K7e*3^` zXoLU>we~b;@1@|Z6(o>Ew9y1mY2W||2Zz!D5$NPwcuIi3DLeuWNC1H?VDc=2)SEfv z8n^&$&;SGk90$t&I2#;!NqU44Q4AI3oU%+H0Gpry00BV&ZYJ0UuK;*30003&06B@a W0jt0pi~s-uK>!s(ZGdX<0tVyINGFy6 diff --git a/samples/h264SampleFrames/frame-0529.h264 b/samples/h264SampleFrames/frame-0529.h264 index 1774c8ad318ed6a02d79ecac3a4fd47ee042b14b..cd538d9ada83bc0ef1235fdb9b7b04215ff48caa 100644 GIT binary patch delta 1544 zcmV+j2KV{P3)u{R000012`~Tv0YREz8oX2tfdRpe0n+ph?0|tXkFWx7B~3P=iJO)H z9%TPrm*>4mEx)Q9T_9Q;Q4<@u=l`r~z|0sFE&vz8u}T0y5`{W6#DbR$$|NQ&&u2M>ckmS|h@f|ax8=YzFbk2v9o#8UPuS zBpQBei@+S2iBRP1DiEHC+IPB2k9X$k`Dlz(KI_>i`T_kQzN%0@s%{AN&{uz1^ng&I1E! zLZkX&TD*vzKrfi9iz{m434^YNtiCqn=pWt?w1`B3q|6ueZG%x}H4q%g0wfrk5H{XwWh6cv_g=8m00F=VJy!)xSBj0= zz-?dvAUS^}umDl9Io=CDFbDzN5s`A!HVn7=qX1wC9RR5Qj*=uOdI9GM6(wszrNBvW zt^Wu7VbDU!P{rR{UUfeVs2X1?cK3tDV8=HUIlW4aN;8s$Dm{K#qp!Fe$)55VrzJ zB+n{GCeI0f?l1tj3%0g1guz|EVHyAd0ENH~CvtNWf9B#aK*{T&tB`p!rN8})sb~;- zkt=_KoNN>Qgoto7BjEx;Dx44_z%0Q5`0xlX2n-2GkmtTCienkuXTvo*S1krI z79AoU7tZ)mzySnOkc25pQV@kHKmYy!4g>`fK*0t?+47)?LpE~wphkk=pc;k);XtwI z!9W1GN`+xje#&0{`$!lkFEC1LYkk%KxJZ8k0p@rZbtEEnC4J;<05rRR5u=a5kn2qh z;O|Ng65Aq(rEUMa0^*{fd_&1G9sB^0t#QRPdwWo#jJB5q22h8P=^?|XDo^s~_kaK( z4)_=fssSsfQ`oxm&i()ZKpj9COav-Uk(Ek~OWJ@0d{zKi6siGc_j};|L&MY;$$Ebq z#F7~=gdvQSctrMszy?f)n56C}p*}JoKBNhg5D);63H3IBoQez$0gean;HMh||6w9A zitvFT@_>s#gVeS4Jv+qnaSNIMiQoW;0T942C=n!0=!IZ{VHCiK3xEO!DPmQOCdz8g z5}Z6j2}%whWa4rP&ef@x!zh1PctL-wn27E?P`V&+^I(KczJuQd00c9DUIY8Et(_{t zy^WOs3T~z!AsqbP004k#&j1o^;Zu@2%JIPF%0t&7cXE)>E%GN441YpMzClo|p z+y6g*K#*XUglL*2>lYzFh6q2Hh{ylpx&Q!xYc>EH7WfaOJonz~+hcyGQj}!x697nb z009D66?1^7X2#!)ywC&S0NI$A6oVeVK*j#FLry~HGn9`G#04-z3;-`s=u7@%+i}=G uEdWEX0003&0B$Cj2Co2kFaQ7nK>#_4rU9$K8;k$|0YLy2LTP|%@CM_~#hi!$ delta 1405 zcmV-@1%mq749g3D000012`~Tv0YRI98oX2tfdRp80EAZEXdC><1f0q{u+9fhxLb{h zoUj11BCOYC`0l7@x2{S5E(9Txh?$N2ApiA?_t%f8`XPWoqQM0QxWRExJ*cyr@$y>R z@H%|$XPJKk?B{84osZwVUk$fC_JoZ^aN;IN3l6 z|L*ewaZVcn6cqGF1x;iDKmu}L1P0WNvPhm%HUDUC-Mxw%N-Uq-fEt8mu0W*3X4zZ| zzTij!0ED-H9}U?aXo#%-0fztt02mk*)3LqP$goXlmR~Ju0e}p<*9ArO4$_zQn7~9u z3qw82S;g-dHAgwh%m{X%qqqT%FGOKv)TNrrmH+&3W%we3KSdVScuzIW+yf8eLVy5) z05jYKisb@ocMiJ_rZKaCMG}$&Bovya$wzsc|Lp*OFa>{r!TpS2KkR)?;{V(OFtdPt z!uHPPAX((8|GgZCAOpFuvw&!K2XIGUCvO<#Z*!><2u)X_%)}=cJ5CS40h30606|sTsQ>^$-~a?1ZU89{T|dqKw~-)! zu!n#G004j}0|!<5j_!&%S0EwwGmd&}u{r*4C~Jm503Zku3z&pevL!}HJ#PKu9*A%N5HRY! zzyd^PGAerf#6;v<4(nvT004jpVx<#*gWsnV=CoH##x3}__j$J8ANzxIfnVa+p7Z)! z&jbL&A-NC(B0Lc1LmdX7J?H=sfT(ItkIk>Xx-R$lKYM1_->FsIL+}6)0}8P0E<``( z?k^dMvTc|E0s-IvASM7F9hNUNe}Ew1hygj+xR0|1f~v7iIsi-v3LQ?Pcc?-@5^3+MuFfB*miK>%(h;0CV%crX9}0YLyciMRo)z#EJJ00BV& L6+&(RYVZc*mjQ2a diff --git a/samples/h264SampleFrames/frame-0530.h264 b/samples/h264SampleFrames/frame-0530.h264 index 441d0aac06a7040647efea8d17ab03deefa2c8f0..290f396ea34f9eb920bb4c447b3d3fbdf17e4158 100644 GIT binary patch literal 1828 zcmb_d=~t6?8vVW569Wlg*p)Xxkcbpw6vcvsP0&;guIT9iAtGR*#089q=1o8dAqB+< z3_*jm2*^;WGl)wxZ&(}_>!ip~X2wcbMi8Zdin0V4r+>km)43n+z31Mq&v`BY03!Q- zqTq7GQTGKEOTgb9+mcgpdUjQkcldVF*$>E1U+K?{_>L}C*$y8}NhvNhD=w%B)9CTO zyx6m(?q?Pgjjm{Gzq~-v+T>>899W(WTnyk;oLMAm+-I!UrK|{_%X(Ql)kHdvZTHoY za1RY5%5YY}I(%lvwuI-$-@@??o0k7~wDo>LY>I@$)TF#mG!)`iwW9>nME^)su0-958LDoA~arQDxe zSpL|YHT6gur2X6IyE*gH|G{*2S;OWeW|H;Ly%sk^Zx*;h5)*kk=CjIY4bT%-^Ce%m z-qTB36G?K|ZKt56CX8ue10@Cu+4u{AS`_4^i-B+Jy6tEB*Kn_ED;X9W$4Uy#?(x!k zd6q<(veJ;rwNw)pXI3-zJT(Df2Va}YcDoUIGw37Y1nfiJG&SWvj zJMbdk?-2k7l@`)pLsAx))DLl7?UZ+WgFKkjw|UcJgYa((&$?=|oM!jKYnPRHQ8ul)5o00B=h3~R1E{=M;6qUWB-dspZlM`;FH}b`@T9aAL6Z5h@@G0X4kpKJ%nU5=7h9_#nVKWqe@6o$rgbkPWiZ%_zJ7&Hy+$4z#FNvz>X1YQZmTiZDG8TJBf{D$UScLt$}kUKq46l8=%9i zsD-|!mCRj+qdJ=sJ_YM>s5a6$9c~-#m-m&c=qA*w?7I! z#ibJl%N0zC3nijK5|hQw^ziK(rUYXGioYZf9PP>~R%vtcR&H4npOF8D0w`VXeYOFx z?po#+mcKeTAxapO@38k7sv?!@ECSNIY}ArFm8b4_AM4 z#otgD9bGF$rA6QIS?%H>C&6rB%kzSv0Jds&E^V5VUoDKU8~-k7$a3JVXigL4z9GBC zSnPiAsKb{=vqP-9zlzD4o!0dO5+^v5GMxN~q)Fn-xM>{NvUeKEzK)Z;33;IK^A44h zhg5flv`aJu(5)eP^kgn|TG0FxZrioEHyHY0!Or%QhH>fZv=90xYFlE$uk%MtQxsP* zoN;;l0I4K<3LEa<;)wBiUm3HzqLDfVFwh^n8do0pb`u)86(R_YMS;l~;TUaF`aA6aQ{)Bpeg delta 1240 zcmV;}1Sk8X4zUV<000012`~Tv0YRIf8oW#l0|o^+C1`ct2_HA@0lBOcN-9cGZ}R~m zZz`P^Okk#jOrvLfeU_4bK!3JS8^-}7dV#;UykaW!554BYiNS}l1s4&b+)Io!Uv^Lp zfC8i)rVj_L0O13#2X_?AXwxo*8`0QBs6+5W*G3EM7`gWnr>LP)@DUVr#Okgd+ad!N z^M8?%A(5a7Yy3?_!1Eg;q?zXYJQ@JdLdjuDRR@49XoHuK`BmfAJ<$G%~6}0mg*@2LJ&8z;TlK z(2)=?{|r`=Zxq3ORR;@k$bSCARSG@R>(vp}uGg&$5}4orX)x!2e*=<$1_p)j*XyY! z3k+k3)&K8+5Ms2-lz2(FO3(ZNSPIAoJSc=)I!JVV|Mp(LHOb$0197SF0B{HamOuud zSi-je|k&Q*=S;Ubh zZ($27r#8qo9ev<{V8X@SJzfL@u2JAq0*m&HTY z6lTO62f!fXlY1|CGn4r&`@m-y1_( z9IhyGOgY4sKmj*E0003&0B$De2Co2kFaQ7nK>#_4x&f=e8;k$|0YLy2LT-R+@CM^f CVF}Iv diff --git a/samples/h264SampleFrames/frame-0531.h264 b/samples/h264SampleFrames/frame-0531.h264 index e7100429c6f05f1fa390832b5238fd7cf77cdbb4..1806267bcff9677a456b4e8e147cc131c8cc3ad7 100644 GIT binary patch literal 1578 zcmV+_2G#ih0003AFaQ7nL7Jc%yg`2g(2NWbL1|zFjbL;D(d+K95z$+?A@WayZ~C)u zR2F7q`HcdH9wZ#T;YV1A8^&T32aqpJ8dd;mz-U0+?l{Fviq(%3Za#TX^=hW--5oHm?zm-Kx3nYFMX-Nv7Q z%yem{o~2(H+z{peR7@`dX?zRVkSNfBfoKoyG6S%RxfVPR(5WL^)$S1o3B`<&k9-26 zoMod#Y8(jsSAbK`zFs$$c*?dR{X8$HLPZ6<8^{YXUbVl()1)^dw2}IEZaKr}~QDCL-1TU2JrBJ_{8hV<7bw~fZh8RC)z@`j4 z>UyCDC{F+chUPMHNlS=BNmmJkDxU!)Gt6gy=gV?WFZOGBT~00Afii!f>NRT1>QDi)R`A~S$1!uneAS>FVJ(DgMZzF;q4 zLmpdJL=hSO4*&pQCw6Mar!xhJzyIyx1JvLEfrc$TGV*3f*#bfX5HOXRDC212M;R>D{P=KN=sCR06Rprj~PY@rQo!PlT7 zq;re_6xaX=25X=P03;=>Xp|B1!y2r(1A%yMfLO1?8vo{Lx(0%AAh!+xfPk(ZMQ@yf zAmNfz@D+-lgTw_4L?nifL>Kj^XVWCj5CMQl*#y1bHcXQ^K^Fyc1lnjT$=Ci)eXoEB z7LBfx!YW;7Ip6!h0gdbmRnxbzJqB!8Oc;73Ktd{&h79EZ4gcN;0UiKbbpYUyg2<7V zzK%a$-U*-ta1O7aaBz7HJ&2RAbbep}Aano%3LiQE0tUbyIp89I0J3ZVFyTj$E+S|j zssN&B1_D785OgO~40eGFsjKQra{d%H7K%Io7}*GpDsP;otsekj!bq*TP?yn{{!B|l z8DuQ7$9eC}MKX+k#GAkX5Dhut15KPNa!(mvdH?``YBm5G7WfUMkaO=xTi^k0;$RXB zfB`US=K)a7jlUiq@x4)XDOe0+C5EB6%H?H1DgxVnkpVfuFH*}nS*=h{R z#l{yN3=krhw^cF4LI3T4MRvK@d9xe-rB`)zP{RyjZn?kv|80njfvF5TTKQk>%l_YE zLv*%hZh!ND6g^x54PsNb*W&9~9I*~UbC6L;05mepHXJo zy?ujuQnf#GzwmH&EU1QKUJv&QV1^g~dn6dw{HLzr`24g14!{5a0YLz6Ca4Cl0C+F} c00BV&If<$PtH2wK0003&02M-NfNJmt;~{OJTL1t6 literal 1436 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 bK>#_4tN{_Lz#EJJ00BV&6+&wOYVZc*U3;wB delta 981 zcmV;`11kLZ2)77-000012`~Tv0YRJK8ocWQ!Z7Fo-Nz;$zoZTU#(>5Z?R2Wv}KZIJ|3qE8eDWmdWuLDP~s=mo;>XazR4cwgR)_fgfc#u)H>Kd|7VK{ zgaSK(Y6MeVj?f61g#2aPR@n>?-vi ziV_vXjDtpi$PoE^#()6FAOIi`5On>w71@I_)T2nq-hPh@o5(0gr$k z00In@VbIL*Npl3h{uyL;tGoCUxhw`y#DD-P(D`NlKMaE4lmIve00cS$LAWCsR$GM) z?+g`SB+u1e6n_Oqx?oCG07D34Lf1gzfGQ5H<)}5Dx3B;Z0^Vf+2LQ?oyfhIik5Csg zL?B^s03dhy2oNF5A7GWIU^FqyyT%a(C7`tw!Yzdj^duM~;tZw{UP&oo%q*99LbQVj zXtw&H1siQo0fH+5WmyRnR{Z^ed3U@Spz`%lh)ub%FMt2~0e}F25zGi&5#aI`qfZdf z03aY!MG|py=T#&$k$Uu;05A+OkeajgLQ{t`w1R(c?*I%8bHOO!X}6VxJY6>S?^pl` z7fEaY0RRxVjdy?$3N)aCPhPz)9;R^mUVY#$KLAKw!e4g=KaRDocx;b`8;cMeMGq;~ zn+9bw6fX5Al7GMxbN~PWK>%(h_y(^4crX9}0YLyciM|1=z#EJJ00BV&6+&--YVZc* D+Wni? diff --git a/samples/h264SampleFrames/frame-0533.h264 b/samples/h264SampleFrames/frame-0533.h264 index ec804745076b1f52a4ff4eb1f7ab0badfa8fc639..51b8157b98225679176b3b603fb7c9278c37bdd5 100644 GIT binary patch literal 1545 zcmb`H{X3I;0LH)1W;0jjPO5|lE=@5^+OGP9hZ&CA> zbXG~}Jku!=hfYXQCZ$re&@tIOr_*0>emM6J_jO;_{mXsbKYRcHkQ)2DITuQe?!J|o zbJbvL6TPuK=u|s?i?yFq#{nbr+%166Cm*4eegkxDCF#YlH%hUF$KETcYCzMunv5LF zgJujA*hOQukp^SZD*vLXdf!DguJ5NmbapB99Qu`J-Sf&g*h%@UfBX7zjeXSx46VV| zyd-D$gZuirvHz}xNQGjc5Rka~K}2LiA0jE8#e!q@ST~YW zi_O_9G!V3FgGTTa9IMe;75Iv<5Kh~nF)OUAFr_CwEoYT?wA?P(mQzWp-6K{e2<6J| zv=aU9chhr%{$#>C#a-o-AGLYu8Z^875}8>M`Cg z)g9C)S#4^1b~MpXTw-mu$X4aR|DIq7N_tA+! z9hMZ3Z~!2D3WpMUCMdiB^Sa$sDr@s^zPjmk_FsajiYDXWi6A#yv_mrY?Kur}^4FtG~&9QQzZ9L>z>x9dW%+T)Z>wc5~| z86e?BdZy1hywgp{>?YmgenH8gk|p~oV#fcvU>Z-D-xjp?aF|2UqwN_9C|j4ehC{9k z^4W~HIu*i9hblZp;sMtsf*yOEi`~zDZIa`D1Rl3Ni+}FKM@}mKK&M^>blw_; zBvg~GakiAAUzyIoBas7bL>N@yT^tHhf*S=iK$em$CC8eUWdDitFSF0<-R&IHfDKDw zuq_mfu=7Ji7F^!$**l{X6E_FgQZO4r7_^!oPbMTYMZX+TP zos=M2S|2=`OO#_}SK7)*pf@U;NMsSd&Yi93WKOnT_FDidcvZ#kzMtGP#L*L*zfan4 z9Fx;f+!30F+d&M|Pkw#l> zfPz9160a4YX3ua;8GwNhz&K_Pq@s}NGU4|vC>{_fq5A5FH$k{S6%-1O6~GFX_kD$P z36YKfQ!>1|dyawI&9_bAcj+Jih7975>1sZ|=br&9Zw>0Zj77D?9}yQh324=W*!i(F z7PN<95$3^7>kaYvG7`lSIVdVC5S6^rfY-n2BTSbIG&fh*j&GPxHMNzZ)5bLIpRUP) z8E=(?iG(m~#2kpHWI{$4EzN@6lp*J|zoBSq^vPwyWwl(hWJkj^<~z~U)tMwsY@P#P zJn-gU$ghedKfu4do0YuXhqj1SFE9{FZa&KuB+M(ZLy8`+L$_`xw1nNP3`~-74AWJO z%WZlYZ=K__lu(B-(N}yVKj)*LMKOsG%X4lSpSDa@8Gedp4)9pW)>UHbE3sBZL$tQ< zKUkSo5!oDnM*EpC?SqlT#cVuzSV(4dZ6#h}Qn9beDfG`l_Ale;aui<&$;nR~tx+#; z1_uDxC(XeJlcu%$0aGf0aDf=N#A>E%!^E|{T^#t+zibC#W=+Hf5c31{z&_(DRErvC O{b+Pu4k5uZ;^;s457MFl delta 1200 zcmV;h1W)^k42TMU000012`~Tv0YRDo8ocl<2^8+$+> z_Bg>aJX!xB17I&*%mD|E4_q}3T&_}{uS@DD;w>RyK8Qmg^b46l1@I~OA9uP|U=4yF zy~o){<;*Z2H3aUzc4G3Z* zn$e`v9KId}U|AXCFaU4>5C8yhX(P;c>Z>B+44eP^&^w4F8y8}y6ye}AfE)lrDWZQs z3?Q3iR*2j|0`Z|b-={2V8q@^nuiGE@=PW-tRc^pFe%t0KM+@7Jj9%;k`j zsISlZ0ysRxzySaP00q&w{eVq&a2}IINgp@>1O>6j@D7xRD@{Fa00RL?LhM=Pt_D37 zar4~3FaQuFJuA=#0_a%4UKJJ>_iTUm@%TT~82l%kzk-3-kSPkl0SF8ii63JsJQ@4K zKdJx($c9p|ip0HaQhWh`;3S#Z?3?QNAp+;dlsSZ?78JA@K!hBJgrI>Dgt4FgaBX@n=f=m3FwSL!x)8;XcOeSDdHcv z00agE;m9d+n_y`fExXJDpa8bHD;ff4(?^ovvX>O#F#iVrC0MKe0q6r!NjPXj8g!)& z>$m>&069aBFt;L-B^6|kfFXZ`?Y#d%ic`taOo_Y`oB(8BU~lxkN@KhL0|-z^RSp|T z3us-rKK;O8pw-Hwa*W&>nc~tv;22OQ^B0G;RA0^~779fW02>75@Qu2kRuK;*3000;PK>#_4paHAE8;k$| O0YLy2LTCVL@CM^0yZ;*i diff --git a/samples/h264SampleFrames/frame-0534.h264 b/samples/h264SampleFrames/frame-0534.h264 index 7571edeff1ec746f6f3b363f8cc3454c0dd00b03..08b65ad580e417c831b9ba1ba1593407915183ba 100644 GIT binary patch delta 1709 zcmV;e22%OQ4Ui6h000012`~Tv0YRGp8ob5)3jrJo0>uR;W&}RKxFiv26h|62vKma-2htkT3VWFP!rl=NNY=@ zt%$Av%{Gn2G%qdP=dR3;ng9)e7)dG;hKUG4*sATp(b7vJY!0cJG6BJy_26%t_n87# z^WcX^nJx<-toZDpH%ut5nVZ#-u_Tee2vYuH_!JMv#f-yAH$ZU=YO`G)M~46V9T0}w zG12dbrNd7n-*rJ~W{-GUv}7t&_a8hftB4d7@UNUus{7P;W0ja7YA`cA84rh&k5F_#v9(%5b%^i%O`U!vJ6a z^$svgYNN{48}6@w0f!+jeYCF`GDTDWgVJCE00_8~e@OwBRPDcgr+@%~006@4lbG-# zKuAmb;4qs30{&`)K1k~IzyVZV0*G&vzph@(4}YOS5G{rWX9NTQJSr8V)L9n9pXkc{ zzz7yfAi%JhJ*@;t7SjLz1B9|6>hK|Gf3RRz$N(5>An;I9%JGi?19gyE#wIvq-{1it z03eeIZETw=vZ58{MN{9@WW|JT1dF#-#-M;7yW zfB+z700Ioa03jLx4<>Mc3-%@dc?I00aP0b9fSyU;ns4tq2-Vl)7$t;y7-@ z;2;P~fn=0tl_Qg9g+KQg09*y#TN%P&u3xoi00aUa-~|)8Ig0;oBLobd+7`J7lQvub z*t(X12dUCtr%B8BOcnwVMqn+E@B{#Wf1pf0nCJiqas&VeIF=YuH?c;Ew%7f@0ATI5 zl4THdjJ;R=z=S)-#bEe`v`h!VU==_8e?sX3 zEAy25_xI>T0tHeJUz}}5<=_AO07y_A5eVsR8Cv8IJRfjvIi}D62wpkh*3}A7dHG{gj*i@DhQ7a`S|uwzu71_z6%3 z1I_R->PQ_)Uw?R;00x&R12l2@e-IsMpvnr=pz$uQD2i7f`?O3PZH3|*Nl1V20z$3E z6w$5iLW(x(oDdlT9z&#u4xFhF(zE-(01yX!1OldjQt8zCFueD_fB+B)PzGZG36->I zQsYzhAORg6fD}@G3^%#{(0>8p>I>w*o5j2`gXMq&6Ct7;oy7Df!}TB{eE-6Ug8IAT(|78b{_Oay}KB zf>6ey9LZ6&*Wb(t58^-)3J4-GEOSHaWF_7+a{w3s2nZJyN&&{w2>2in5+_7;)vKjk zS3!NPzyKf!019%o1I>~$e=KksgOe;WG@XG7Li7VW;0^%+Tc(BsW^RW5O3(rT0RVSQ z+CZ`&5)3~XIDi8I3%b=9(v9_`Fd#uL!*3oqp&-NRf9A1Bn&Fs+JMIV__eBRNOh)v} zD(q^is(1hb06<`iB83HC$d?toHa-s4>S6K`&&}Wf2nL++0Vd29e>x+quaG2s>IPF% z0*bB{XE)>E$u)|AA`%Q1@%vIo&K@F57CatwzxjxafBq}L00;)NU;!o;_z$E!=l<*4 zV}7SnlgI72UhHP#4!GjL~2F%2`q!{)03}5R+G~_OGIY{vAKvM)TzysMq zjlarz?jL~sv;hvlCjbBeK>%(hzy_}XcrX9}0YLyciLe2yz#EJJ00BV&6+&zPYVZc* DHWuA# delta 1636 zcmV-q2Albi4#y3D000012`~Tv0YRD|8ob5)3jrJo0>uQY0E_*HWpD_uus-v}D(MMv zUF(5OQ<08{f4`^`wK0TX0r?5V`KKxER0FQs1g=1Sf4tUJ3(r+V0aF<7vqS`2L?ouQ zu5h;qw2$*1##vyehU|&Cb21<30-zMxZ}ka55`-fNZoGFY0}8WGxDD4lo*=O1eZU|U zv+3_K8<7sflhu;Mhr2w_Z4@1aaYb@7H=B{M9g)BeY5)Ai@F*6e;zklW4zL_U8!VPb zqwKLYcRlPPOpxgJ$84H49{a?oCXaYcXv!>m>wG5*fC3^iG9x20GBf|c0me~{Ap|_v z5MZ(&59;Ct1wE(|h5qWB0s?T=X+T3nB}Lga!83kDoDh>B0aSm1KoA^WCY}{?z!~@` zC6T-gRL71IBBCpY3&kd9p!uN`s3qztcGPsjqGv!{5F-C?#)Khjh~p6M00961fK8jE zfhkXG*S=5h1QBcl1x$?BODO`U<9FWx06-iHBUS1vk6O3sGmSR@f)eB0f=F8VaXGI=S#?*Fx;H=oAPfS;%fx&b)E@tVL_p2}4Uvom zuy!eN`YT~Z8IibM%*QLw;105u>_dYPuUT2(LCb=OTTy?9f^1k(j~*Z`U?UaQfeIdo zccaEu;0fG-0h$;xY#4RJ?aUwd0YDHD*bXLL6AJ=@(dCe1|GD59-9f@pbWb&GRDl78 zbHcfNNrW5_AVLiW1pom606-AJr_aXTbBd}P;DY&vKo6EVLm+=AO>G(>qNWc?fC0xrn@)uk-@o4g z1|WjqZE*gY`Nhd>06l?F0ZU*93mcx443=N(-e4k8QsD?vcj}t01EFHLQ!#hX`uYA4 zn8abGv7Jxfum22Hyxu8-_L>e9yMzD& z0YD=vQvkcpwfBvUL;u;}=!Bd|Ao*aqk`hr8hyg-YJ0Zl?u_|i(0K^Ep`?FC(ZYJw( zaxeiAx`QM8^&m^DL4-+5-pWa)?qd8fe=X9QYFp z|CCXS00aXBED@zpgY2k;@B4fM87SoSt&K$`i<)?x1y^gSJPbwa8iwS>qBsBOen0`o z2LTl^E9l7p2sa&Y00s_o*lSj1Bq))T|NI?*0zm7!0099gr6_=H&j@L;1L;WTgP(tx z(nN8<2x4%Q0)J_+IR90j_JAM}4KN3eN1KE8Py}DElg4lc&D9(Chv*I`9HO06+`@hz-8x zBlChZ&K&9g|A2fIW>Sdzqsy%P9z`WZB@X}#83S~SI;p@zqH?#}Xpo9l9d16Iy5xUtgfB+x@7^#0$;7J;B zPHRN;%wpe-e|MX0@&C9RlnUP#y!W5d-gqDe87;_w8xrD&IvDIW0rx-vgat!Vbbf7p z_0e~~!TZ}b#{EjJ>K}jrfEZN=VR9k=FM)u}O_OZE01yuV0Rb=oNOo8k@B|zc04F;a zQTAZCRaPmVKm@>mq4erEdW1kBCmK3;1^}4DH3Ni!ncADKKPsW{zJMm^0003&0B$CT i2Co2kFaQ7nK>#_4q5-SG8;k$|0YLy2LTG?$@CM`W;>r5} diff --git a/samples/h264SampleFrames/frame-0535.h264 b/samples/h264SampleFrames/frame-0535.h264 index 0593f18afb9d03cc419b06093b3eee4c72111b4b..3afa29cdb07856406b39d6b2362f3d6493a7fb62 100644 GIT binary patch literal 1659 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 diff --git a/samples/h264SampleFrames/frame-0536.h264 b/samples/h264SampleFrames/frame-0536.h264 index baf725eba5e74b2ddf1ca13197180e593b0addcc..93a71134f6bdfc45bf362572d595e08bd7653ab5 100644 GIT binary patch delta 1633 zcmV-n2A=u#3&0I)000012`~Tv0YRHU8oZ_dz?c~@NVWiEE77CX`~WUWC=6JvD+K%d z3Y4=RS5x|5a3}&57YLB7UB=m=%X&BqfxJY>JPLrI8wVkgOh{W*|1X9r2t+AMCE<>= z1O)1}oB|SP#aQ@&=l#8raV3#}2uJduBn3c_7aT|kS(C2v(BB>AQ-wBTcGwts0s#Ub zfh_m}2K&k3ext(P()Tax=9-bP1#112UVr<&)1O!P2rwp{02>1TJ@uu|9^NP5RTFY^UNB3<$}<-5<>#uCnE_| zh0IoVZIl2403w_PJSI5! z76M*>z)tqq*Q=_!_}DW$Fo6pS6kI@TRpyY&>|!BDN|=x>z%&6mJQKeV>h)x47^;z3 z*Tx^pP6kFO1VJGzzvBGQGi|;A17H_icw|*TS()phZ@r)AIYO@d*Opm-GW#HD#BDxZ zHf*+EK;#jGJ<9@T3;+;9yrU7V6ZH_K`$Kg-o)^#N{x-81VglFzAOJ83bDI1-4_tVC zan1d}zyJ^k0Zkn(05k9FJ3vqXDg_3Wf+c|~S2`Vzp)3E|03ZM{55SE0*b&YbiW-`D zN>dQ!)$SM=00;sipn%YS74+(n;E)sl{9ZsQviLv}0uiAE5ekgF0FXe*kjFE+TKSzJ zgWv+KHc0fm|8u|qKo0D{;3(4AAY^V2#uze&cPm^`p&i7uP8u*Ysijh{u?+t(B|JI( zC;$pT3M9dzBC3R+O}Od@VKYRo1egaxtTf_O*&@IbegAj}im}0eQ*roTA>HtMxBwVo zmMFaJ6QSfEfB}l_03qwTe-H)Hfsvr+bhIqu9)QIRFBH z!Hn8GFY6dV_EK^KH~``3-WJ)n$OJa~zyN0;0E4MrPGrPl{=zN*34uZE##?~{QBtBm z_k<&k5QiQplgF4SSO5eOLl4YA2L%|+Cut*LCm8?U_St1J!$;kp50zj%$9rsx_70FZca z1Ox?e@+*Ag5eE#CpMb1V^d2B6Vj(0ndLX~GJ1!Ya(Eu0(jRcT>?-(R$GlUUvS1?VY zg1nu7<>&Ua06?^Cap4s%vz+hk-~h(<1uEIw*q(xa_bem_4@8IvMN+WAoS*@J`@w*Z z04=(Ja7aO9NXy?xAFpBdwf_Xr0yqa(&^S0eh91O8*f}3C01!F=0R<1R01!9;_s@6; zpa3kJ01P-u!^6Co7On8AO1>96w>!8CB;#{32x zu+UX0G885N`!TW{;J4Lx)JXnD2pv^c;5+c<#uQq)1i)vmS=a3owfVkH+ zMHT;gyZ|t@Av>@3|JHc6EU1HXH-r7cn}z@$#flq$m`ipakMIOL0003&0B$DG2Co1d fcrX9}0YLyciL?Q$z#EJJ00BV&6+&$QYVZc*mUy_` delta 1427 zcmV;E1#J4j4fP9Y000012`~Tv0YREz8oZ_dz?c~@NWj1Yw6r{{>%an$Lc*@1q>Mk< zRHVl9mCxyX8NhWk7Zw*5L6bTh_9zTcHi~(J@=z25VB|6y;vz1q{$KDph4Pl%Al8e7 z)vaS7Ho3y+cwl$_-jQ)9k$?tH`AgtP3Xn{=;y^>$I{qyR+;^Epour`j_%QRJ$Ow0* zD)a;qT@wrC^cMq&TnQnH9v1ja;lRG8vhW18ep1_a_m2h!H8TM?)qsP8^TLt=FOl#f zfAW|72_b3ne*h6E zaRDmj&OwMv2GQUr7*_4PZ`&)^NU|F0RGi;fGc}>F00#u%ARZ@XJSeoN@On6oAN~LY zJ^;Xhi2X^XWv01?qG$!r0Kg(dv1VFWEEM^!N^GU$VSoUDfz?m|&{VmOr%ojd01`0B zCR0&ss}D3!b${zx3;e}Di$c2uGOR8vJVCO`eaGJpmQLO5hQB9x^-(BJ>> z05J3^T66A$AW5<#rC_EQ-+~da!VH9kU;~6#*w9t8`JhM$%zvHGs3ztA00AGUM04^H z&vCuKs%l&h*w}S>4eP-(06+jh7&^2ubj9$CSt*S~J>REJYIp$3 zK!oc_1HM++E`Zj6U{DcV%Su$lQZWbq^VkXGD8S%^6T38v3zC9v4i z-~fSzb51mo%j3?lx`+n=2cQ9fVF;maCB-2*mNGhrxLv}Mbt@RM5wO(XH zE8`goDo~{00D=nh1uTg&e`w={NxAR_2tvp9$BiYBDxB#`jsRd|3j;`o&=!SR$n!-aq004k0fJ_qjy~0W? zyOA&Zj2{FA;0I8mU@rvO@)TXG;{5=JmkuH7K^6@7zk~%EcA$9}a5JS!yfnql3MMA`n z>+cH?04!n)G$4_r&OR?J6dhGN%MvvM6&Ifd!c_!a;pDXnF2@c?i*8`ag%7Gj(>3mW zibsuXm+b)zNmB~QM?Om|-`#^S8BYXC5hO$Ze&`wE36+c1{Sp2K0Gpry00BV&ZYG!p huK;*30003&06B@K0jt0pi~s-uK>!s(X@F|*2IHbzZ#Vz| diff --git a/samples/h264SampleFrames/frame-0537.h264 b/samples/h264SampleFrames/frame-0537.h264 index 9f7c37e6aaed469c8b8af134d22e1239a8c25f48..c89c1fdbb063b8002e301314f6e76912a6e05c6b 100644 GIT binary patch delta 1204 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 Tz#EJJ00BV&6+&(RYVZc*ivU9j delta 1240 zcmV;}1Sk973g-z7000012`~Tv0YRFekqjY!Ah08N-lzq~?wPQo0M|mt0&5%Z`yrur zTBh8Q2S?@KF>)|)tNhe!-L2*s>*k92mG%FZ@Nf)X!UhFo^oTd`|KDGX?r|9oG6FyW z_ywt6OX2Z*_n97KX7hXvfQMt5O~{m||DFVm1f|F8P^?D(w{ybqCYSsOAb@yeAQS+9 z2I$1Soe=EofW`IzzyLsCPkWKf21xK&L-1x?q*G`x0zLsTgaEyjLLk5aNDZC%0#lsD z0LFlzCt=X#sdCzXzKnO%#$d}T_dsQ^puD2eju4yd2q1u`02Dv~APR^82L=WTU7i#k zuYaV7BtjV&L@68}giHW{0{}yYWn3bEDwa^ffjmYQ{0K!)4-+GKR#%e1pWqNv zVc9rm1c&V^G%c_T1^@^%pawe?AQo&Per3l0VXk;uOl%^ zFR#SIeoR=50~KRRJn$x358g3Xw$oNfy{ft)hkZhxj+~D#c&$4?r4Y4g}D@w zD61rV0SqT?=lTp%o=%EnP2im110wqaf2HzM9pC^MLV`l5aN0;)LhZ?a_wEA)2Ch{b zlxE=6&lZvYb-HQz5KH(lAK;1vfv5|V!$4cWn>Nr6rYYPzd+zW;ywTXfQS#Q0ppKJ(slQ00CH#og|Idd0^^-T6^v+i*9NRp02$+B z5tBdz?O{v%T^IoX0D-uFWMRVq03js^0mb+Q009AzSBP^%P9!P`7B%$)FYGrk!;;L> zLv=g@1CTA_B-%cMfQ&BL7;6bcE|ZZ6s#kyia0GksZWYS;FecP1XcRmEH4d_}Fas_* z-(wtZJ|Ku;l!A&wgn1;q7{dN>IIvPG01bqt@QJ#v-+)RA3io(_^h-zLGt%8Csc?*aBZ*yeGY;cRjJsc5=07Fi2u$97VDb#5H+Q0R@uQmng|gKwxNpXu-g)3R;L=uddGhfFubJ>EqCOWuM^i z1LPf!ALl+KzqkH>&Hw?p40FlR$&6G=Wc;Rr~J&siH6dPtTF#K7Bt0V5ua6C8mlZ zgAV`zKs-K>2#-f1#_4ssXFO8;k$|0YLy2LTZ3&@CM^O Cdkoe9 diff --git a/samples/h264SampleFrames/frame-0539.h264 b/samples/h264SampleFrames/frame-0539.h264 index 4b5fff2db9ca3baffd7dafd21074e7d2fb836f46..bd28f1c15e898e3c9e78495f65e7a7f0ad60a5e4 100644 GIT binary patch literal 1726 zcmV;v20{4%0003AFaQ7nL7Si&yrOs$px_XgRe`_>KVXojH~S^n zNbof#2;2LK|qE)@Lxz$e;qboayTdMSaQ@O~k{0lkSp0>=d`5!1*`d_Vw< z13AtF2g5b!io*HzgK$xo#1S#Uka7(M6G5O-IE{l@r*LO(!1UpmKM$jh5ih_21Qe47 zFsYKLxFmr}lpZhu5D6qO3LF&5n(oj5jT{>Q7~r3h0OAa*AwrSBcs&t-0Dy`B0DvYy zI-xiOfDC7F6kv7uK^eVSo+I8F!jEkqmlN%2Iu|e5f*5ffPf@@A96k}?0@y*Cf$ESf z`H}~#(_{Y+781w+0Rx}_5ZM3$3r0{L04WUs06?X@!ax8*@c;l2Up-#vqoDq6ecli= zdoBP9m?Hy$i_z!t3Hlm;eF*-~b>%00IW!3MOz60Z#xNpq3xqU7>jN#HWA~!tktC?cev-^DzGv zD@t#r@ljJU#&z)3)VvGRnO@6f2>- z1Rnr^5YhqW7jfq(!IaR31U4-_?KDTA;X z8K?jP4d4Mrs0y$)IKkw;NEu9MVo{hFFh31+1lRCoA}#r0!N#FGgVsyLH~={-omdbl10lW0iimsw z4qTyD;8BY{G>l&6X5I+#Ksbu;G;pwNltm8Q0suOZUJe~aIQ{{0AOH{s6ajh-#1qE% z7Mu{?16l#$nn~}ba*rb){>S8~zyJ^@t#0!G zHaHM4$NP#4i^Y%4T#BfGKQo0cD1wH4;x~{0K&91dNaBg`fj&mlJ0 z8ccfFbXyqO!3V-Zh@1Z8`6M2r1Kca3g^OQl5J`4W;Q$0cL7v;f#tl-M z;lJ+y06-0JATnqTSt?#cmYVhW00IEK0z#A&i5o_hA}KB)1YGO^PA$MVMyLBh{0<8g zPJ4OyOGEO&0VK$2irviY?jI5a+c01c0e&XPGkFFCE~c-kDc=w%OaKrX0}aZ}mD1Tf zU|lMSfB+yI00IO+03xaY0vQRA0oV~mFw%nB%775H&68)8JO@t6aZi-ZDviK$z@3n5C#A#y0O-0KR18? zAR2SP2AeQM)LtGMbPOO>nbWzZ(WfeiVTakYKlu+LAtS@e)`t=S%;Xh{ylp zx&Q!xYc>E97WfUMJm=o)&9T2zsY+Lq0FdYa0tB!s=K)a7jlUSx1Hb{ZF)k?vJ$!+S z{b+`qh0bSkJUb8+!3;0}_DC?7{Ku~0_z%lK5bOW|0YLz6Cg=vQ0C+F}00BV&If=Rf UtH2wK0003&02M-RfNJmt%sgbGeY95aA2 z{_XwqV#|Y=0Wbqx0(fQofFQ0}dR$lEnt>+L-u2(ca5`Bg1NGo`HVy$u{usa+T7XOr zKMsRcm|C$2={{a%b=ZGQ27s;Mw-$>=%m35B+;z9OrZ{3-?!kaJDBK3`z+$8A?H7c! zadR2yU`>ONKqzDZfrgXJCBeyrhca9XB+tHSQVPLzNEKq|Nb0#U9}2^V<+IRF5F zK9mXupF(Ufd+CmW=z;k2_y8b7NQWqU-E1}7aUTcZ00;tsKm>s2u|dc1jW*29F>E~m z1_DSHje;8HV*wzUf7lPk`B*TzIv}vH(+^Vs0Dv$C-i$^6-n3E}IR8UM-*f%|3Yv)$ zN*pJ=!3IuU|AP=wm(0P4HU~g?2H@avxeOh(Y#B0ZM3Tc_i`vSrWL2xOIfCGR6 zfB?V@C=*2wA^K@;t;i@i2mu0H@C59eGl5ae7sR+12r%e{P*Sh~Zwf|g0} z4Oq>D&chvQzyLuZKnDN;0t)~L0MLI0oZf&T0=XobsQ)EaNTh?J z%u_%BAR_<)zy#PlD{X?k?V}I@Q~?>4fnV|>=fM~N&K$T$se2KU{vAxNb}&Gqh<8TE z&kz^ic>r!9#|k#S&1O=`{P3Js zS{dGGV&;awE&izuUXyl~oE4DahFwnh4M0YSt!Wns|MuWt$+Byo-=BaCZ%W#55YxZ5njVyEoyy%QXEMEy$g52|BTsy z0{{R(EocBWoQrY*4FF{P7Xo$|p+Rm`fF=<<_fP;kOn6Lm$fM5V103!5!3B3?LSYvr$*aH9pj4BQ{ zI2znsZ&-3)1Z*lC0-z8>06`c)2LJm|_;zmP33SlF_0{|QFfItx!-I*TgQ!~*nUj|Gn6$t`z21a}t z!N9SLmrF~6wt}<(oCmJ+eb;yY|3VObY@QwvL#GXF>fPiKlIG3^G&=kMZ~!m};q}~2 zupsRNCOJXi05gUiA8O$HBb(q5Sym3CXN}74yF36aY!jqObV~)edP3W66e5%rw(x4E zOO@aP$N&f+d|>sqC|9XqO7(*p5a0kHWT}t<5I+C`00=;h`_#ll z3vOCNR{ zpFFZ8_xL~fx0&pHSBKyLfHBwy#6-=#Y67C8+#_4tO2XQ8;k$|0YLy2LTdnO@CM^0l;M2< diff --git a/samples/h264SampleFrames/frame-0540.h264 b/samples/h264SampleFrames/frame-0540.h264 index 9175878f3c3c0c3b9e765c1992d8e3b7898032df..3fb83fda559cad40f2132836f6c4694bd3fe967c 100644 GIT binary patch literal 1540 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 G@CM_~NL$wc diff --git a/samples/h264SampleFrames/frame-0541.h264 b/samples/h264SampleFrames/frame-0541.h264 index fa856dc559885da32a8d9d08add99e718fdf0ef6..eebb6d2e82fd10483348a74f6b35ea44566639f5 100644 GIT binary patch literal 1955 zcmV;U2VD370003AFaQ7nL7U(jyb5Rb4FQY@CE!9|9sUqv7L1K2ca!iZae-(6BxWKq zirqm7Yf<7NLJmOrK&wU@A^&K_1Ft+jf{qPGj(7MBI06FX{e!`fJLV%=V6Rz?A zu>*$^4WQRjf|3d06V&wt;=lm_06-W4!^;*dT)A@Pixw_ixBu_~=r8~f4r0In&>|le zoy1>Prtgf2iRGbK0A|~Krsp6^F`x@PhV~XV0F_*F{rMG;0Du5MM2nqR0?HyB+QlZ78xV{VYU%!vQ)qzTuI2Ie!eN>nS0Me^sVONd@p_#mi~=~U31q+kKrc=K0#b|RivMUg9AE$-0%aS_ zfxLvFLVyMU+Q$w%&(H-AfE%(>9%oas4-uFQ;iiG$80~kV}Epbczu{3f5V}%da1WW(|0rjbn2`w?} z;1m!6--A9W{TH@wXW0Axungz`0s+~|upC~ax848%fM*?HpZ`n4f$W!-u;W02y$yA7 zTr^Fm_hVI3tN;C)A-Rr3aT4HR>5~BSphcqQxBKr17qp-9`NTpen1eszCdBy)j>sMZ z1^B4;%w&paA&?iFg1A0RvHj2FAZ%Ku#Vl5YIBtTc85rn{nRAXif(tR0RhG zS2(QAAO63f0M958wmyhGnFS?cCBYc;)$|M7MuiP9HPLVQ%hG311^0jo1As;3EW_d$ zd2Ev{g&=sdq`bVP`1S<}BZhp;Hy8D-ziQX%55NEr002}A1bM>x;S?6N7av1!q2dFX z!Gv(=#St!pCIVQ%uqvv>|Lg1a)-P!Q17rZB1e~RG(Di!FHiTsOWjUY-Dh+^$O{tQ17KqCnXs3>?m@qZA!8Ar3%t>) z8SC&(03(2PeFKAo$YJb6or96g00a&I06|0NKmb7C1D=0C04$RL3=k;tCBzLdd`JR` zpco4T(LunKPX;?d{}E&0eSjWVFwE=)nBamOi5&#!J>VPCEH5KBy z3TCKtA|hBESHD8IhL2IkEeF6WKbvdU>VQ=1OqdbU?{CdZ@dDbk)v)`^7&ff zo(JpzG18WT2+kd_wCIz=u#j+ak5^^Wfh%CIoeCo{nW=;|tGt8X~=J>r5)p|Mji05s)<@ zhg(}KPR+mV_%vfrEJaTL`+yWZR00iRQMcFgDp($|4q|hVQC$O}l2NeXtR5flHhlB9 zo5%dnGl&%u=BR=nz3l89c~Uig?|{(F^#=IZy6u}HI0JcgDZQfJYar6AN0S>?b p00BV&ZYKB!uK;*30003&06B@i0jt0pi~s-uK>!s(Z-8p>2IDk_GjIR^ literal 1732 zcmV;#20Qrx0003AFaQ7nL7M;?yb5RVo&X87(U~-ijEnyO9Apfrq7-^l;g`~Ivi10zQTSNC1FgzHKc=`Wu<+=bypb z05};^0>IvIbSyW$0iSdL0RV6k3>!v9 zHJc)LdoUOat`dL)fdFK<2ANQjcL9cgZc`UO00N)@ARGXr(1I@L@U`kUC-4|TjT)+l zk1WYnMVn*bBMA;zCi;!IDwhoHW?)mC1Es-t-T*=F!6sf-I#|%-#z1T35VEV}$2jRv zfI|_bRQHW92~ofJ1mFPz<@nV6%OxoiKksbYGXMbqKmaH1fGBIi0uCVJ+n^0C?rFfOZEjgYf|QMQVn$IBRie z(UKYrKmp`9c=9D)V}9|30Eh>p=Nfz*2<4Ck6W0LX3tc#Y^C3IFYyWt|A;x;nH=Gia zD<$9pfz%bi*6XTfYzcP_fPMr)fCGkOI}R_i@KF&v_nj~JfS8dY-~qva3sE*7esbfN z*b#u-pjVy~c3)-B5MUJnf6sW0_jkz<55NP1vf+^OCFX99EA(QPZmp_+cH}`M^)1#V3b0>XOh3c!X!RUcPG@B&Jv+xuKu5f#_?s;aKPyezC zV4TCKm38TS3}b}haRG6V1&u=beIj^~9J<0o5%2+rF>b^k08ry?+9=b;CUH|tW+l3X zBnY8^0DuaGw(OcdN2m)bEF3Cd2ml8(y*yLdB$^L0`hz2^N zbKp#`s3~}Py>=?Nr-&of_wi2h^XrkVfmZ`1P?Qs=(AuE z0Pavj;eZqH07M)g6C-Q}NNe8UG2f;%R(Dl9K1SBrupj{^d;?%INxz7hiZUmE_)D0H zq8SK64}@^4fB{kh4Rr&=xBvtKQ9uAd062EPr~n%y8s=>0c4zRJ?PgP0pm65t?K%K) zN{3(=21rZFA#3_3S1P_AvHTCvXL{HJ7#t>4NVEUJhX6&80003&0B$D02Co2kFaQ7n aK>#_4umP*U8;k$|0YLy2LTmtP@CM^*zUxi^ diff --git a/samples/h264SampleFrames/frame-0542.h264 b/samples/h264SampleFrames/frame-0542.h264 index ae5bab4589ecc62a4afe0c33c0850ef5e6394ae8..8eab1c4ae86102afd8f279ad231cfde3808bacd0 100644 GIT binary patch literal 1667 zcmW+%dpMMd9{zpbd~-FLixG|Dqsb+9jV_v{m_gB=FjD(iZS5#6XO7i$>TGE7G0m*# z84`nzgUZs)QfFm0Hp6I1wni$~m{Mfz*3_|)EpzPt^ZxVx@jlOcd0qfO=)y&ioCbai z;~P`NpgK7EF0q6pUWm{a3+b9Hxa>j=}#*&Fu15}H5hOv&Z}2wffhB0rOg4*OBGr z+QCQT7VoywEzCCdY6{6(j{rghm-jz5rHvb=H3z-smoR{c1<5Zv{B^ z>Om|f`%pRF_1lf<*4Sn-GMDA&v1QZ!tCjE7fRg=0AT^`xi2Ebh^w5=gJ#pr=^KYrA z24%mx1I-RVIlEHIRQ-nD0Tk5(o@s-dt>s$q0+a;cykfA6G~ORizZJuvanvj5Ar%Uq z32+am<-h_`PuwNx*lfvj1FW(Bs5-v&n6)O~bI79c0s+s6Vc`MQX@{*ANDdo|O*@+E z0tYRYu~)cQ?I88ZR?X22YDogOzoeB`&f+F-+gSXIZdqTOe(7c|uxfzg zu2^-&<-~sqb?<^zWNE;j(gJisuR zo)TW<-|H|Z2H!>oKq{d9OueP4s24JbvzXOw?KU>sDe}qjk3Xm2RlJ6H2BBi4gMnzW zqz@AT^!cHI@EH`{auC`s?068I$2KEucUEBj8n-A!Hg_2EEiV*Ao(ellyI4DPD`NuD zLG^jN>S;oT6bn@&q!pn%wP+Ty@7u4wh(9obCd`Sk>zZMN2;F_?k5RCJe_YASrUng# zi(FFK#`CJ=YES=1UT-7rTHfk}w$I+c0!Ci!--aLHLvH7o-dAKwDchxOAWy~HNV@Fj zStqjx&SrTKw77p=-F@w8_t@`xq<7KfV?lHiy>Yx*wvC=?$s_;|p)w`m$&E9H?ake+ z13w=+Rq)JWZ*%4tCd3dC@{=Y~;PoWJ_q*KgBs0)Rq{ErE*&-2j#;%}p<1O`FO@i=w zbkws1M73-_W&g^DOy%!gGX2@I;tslXp$*jpVg|2Qd$KxaDnwkSi2QSGb}7Z7Y9Zda zkg~sh?W?IHzRsQu%{t|Am-+T?K;dXK08Rt!8SJb?>X=M^nw?%j7D;+5AMOQi@~66OR~d-Mi% z!6x$Zh9hX+uuF5@o@(<#P5lM;5+%xoNfTAl;`%|2ApEG@9}q;Hgj~G#Jg}raQL#R3 zX%;iH(1ph1mOL~VBe=)W}i6A#q G#{Ul$JfSiG literal 1438 zcmV;P1!4LC0003AFaQ7nL7N~Nyb6clPUacF0l*Ic;jvVZ0U>b1F7StpAbZ9L-~iwt z=FyD%W(yr~NJIbV03rY)zyScVgRtt-hvNe!3J5o7#D+kiSyX%cgydrCMMr;* zGeRkwpp7*T3^@Dy(f_zV%#=Sx3C!dF<$83}Pa&Alk6SfNEk>5&aeo3 zG1+pZf4%`s<5J55OHK2i02O!uxDB!500IEo$ta)m)G7!#okI_@W`rc}A}3EEf0XU~ zj%`dlE!Waxz_Y7dU_KEV7`U14|Civ0^1uNAKoruA1i0W7|3AqA7+nIGe)i3=zgJgv z3~S&?3Gn(So&=wsXbJ!>ps!98Y0Pk*H~L=&B7;G};H(z~20#I|w-H7kOuhmFoC;R+ z)Novu5_R4HBG4%{?hGV-AsbVF`+?U00R;gNfB}&F`MRwyvH!RL3_uMcG5yNLM)?VJ zSkZE-KX?$-#9(~L0dN{vML`ry zo&Yj{0DuK&Fld|&p^TdKrT_qg2mlB~004wo08ulv9`TJaLe}tiwhSahjZxQw_$CJ+ zo&Xa7E{ni$4hPprlvJm50Scc;c@QG6a=rmy_RNnP1^9)JKK3BWi6NpUw*Cm0>VAOa@; zfE;X7JBZv-DtnbL;)6K?;-UGI2mv7{h9JMIG1vY{uMdChgTm(ilyFX(OvWFP<>7yyjABnH4KQ&<20zZe53 z08rhgoXnX5=;2Px0SqBWiC@hS8ze`cMC>7e0DuGl1qTa~J-?kVi~`{R_7VkR0%JS_ z0Kjmy5ZESx1WwT1=1YJEpkT{aeFVi1vzQ~nt;_&G0Ia70{1AlS@4PKQfkM}-#*{{h zCtJ6KcM%;TRu*+X5GhmlfrfL3lLcH<6Q(YZiKZ#O02mPGhod2eOU2JR zS%mYakbpQe&j1$wJP(G$com1~o&bR2$s8ou+w@1}%btxH{4OaN1d5hV9s)Hcl|^m1 zAOH|TGlX?6V~ur(1fFqyJ66|ZNd+WSKbXE*jOcmHHPg3UumtogXUD8m z9dFz?Jvm0=8d&Dvpu%_jq6wQgAb0t s5o7=W0YLz6CddY_0C+F}00BV&If=3XtH2wK0003&02M-PfNJmt<96Uy`~Uy| diff --git a/samples/h264SampleFrames/frame-0543.h264 b/samples/h264SampleFrames/frame-0543.h264 index 53d472f4e72f789a5b78e2fa030c8861d48df811..43366a9cf996d3512086ddf055bb83311894ac5a 100644 GIT binary patch literal 1720 zcmV;p21oe-0003AFaQ7nL7E^Myag7_Gk^j}00aeq06<-+z>=#2OfM>SPvH?<1iPy5 zm;gw_6+)DvXWKMrt`ER?1-sln6~G)YYA!MB3n&g?cTiLn0%*sc`^bzVkp*U~g}LkH zA!v4JzyKf+00I@S004$=(f|PfumRg(Fh4@Fk_8}MD&CjD!@#5*%3lB+0096&9-Q3; zskOJY35W;8JAy zl96C65MF`+&qWO!Ma0H9`Hg42Lm?B66fQs02{Q|=`!Sxjj=t9Pg)IcU*{?OCNDCm(wZfuEI;5I%0 z6N=lyB(tT)mJGc}kq-fU#caR;KrM;@0sw%}!HmQQr4D!z3I+>fO1ZM*34G)L1V6vP zFagd5Xi89>mKC={$KqLgfgfrj*01>`EZ`ek4AS=K<(U1td0|8uu0>n^JPdhNr zm~^n51FaL!&;;(QzyO#4p{la@kfZJRI}3ffcnEM?!j$0+WN!pC-79nUhX74j0dTQh zfy~6od{_XO00aR%06MA!p%PJM05SdG1^{z-3sfrvSa2p&rs*Sv;S>M_2U@99zyLsG z0AA3{7<>Q#fM@~-(*muT^sNYn(@RIZ02nZQUY7htfQa(zxj={RF_Ce^0N^W)77P~M zvNdJhd46n$N9H;(s9Lx`G7KF6qd_PH$%x2FNUULl<_ZDmSPG*uaYz6_!_tH@vsysE ztk7gY03g%{%m4ubFaSgEyc#F~2pFq9AOPZRw~Bxs2YO9_1d;(j1Y$A(A_O0O|6jC3B*J~jCOiel2SW($T9u08J$LMD3m>l83&pl;~8)hPX@K929Sa2FbAzd zcL81epa}{N{WWY-00LbBfZ2>jo%%6$)&Kz@3*csZwCR569gx5e6;wDK4{iWI2si)& z06RDU2oit*f{j1`MTlx&+XMi{6A1oHG9pqh0bZue9~|_;q$xv>3z5eBdgA@71fqr^ z)2PG^kv_us&;SH5jUJNHq%1A&uh>zQ@Uxb)J7+2pKam0}ZIsmWzy=M}>;x;LYl9U; znGIYBK!A|2kLp_bo{2B;PvD*afJ5*BmCvdX!qsyTS7!jg<^&u*zRwBsXVyV*z=MKP zeWVKLEjf8HkM{roz!YI9jDMABLIPRc{17-l7*27Pg39*^@=5v`(@#_4q5-SG8;k$| O0YLy2LTG?$@CM^HA+?DB literal 1450 zcmV;b1y%Y00003AFaQ7nL7PAtyaf`$2zWSX07E3RJcNp=@fa~t=wL!?25)^#E5|$h zU_*cbWdY@4#ZMW0f>Gm77d0Op8PqLURW81BGoV0|Qw06htL$OD`J1ONa707BhB z01(yI1g=Ae23fj~uf4J}gre@B4a zI@nCM_j~X700aPl@iMUn^VffysZt^0K)fpe1PCy=#JZCp;Qrh_tD^~U1{5A9)_v2{ zchjsoI{W}V*t;GOq%z%rX?p>W(zA8~00aTssgMGIkND=y6ANIuFPsViFkuXs5DfAN z072Fa?+m4d1flNyu1o*~0>@yUf;0w9fa0J4M~h#~1z+9);81Z4x-`jh!Of$Kxtu=$@Kou+0$s!D@{bKL)BwVW z8q%n6w!o&TUp#;U0CDwRI|Zs;+NB@|AW!fL1`OpCq|%B+j1OPn$^<+B*79TFbdODO z8QAd70OC%WIv1)(j)>R~8G-qH2>@5YKsPypFaUEgTF@4XJmJs6n*h)QMX(MiE2!l( zj=y*vW&yn|Ss(x)8Uy>5jR80~0iBkO8~ddUFXQGBe`^#K!)O7LtpEa`)7%d^gaORi z3FYf;5thRMPz4z%1y|7U`FI@x&QAHU)Y?1-#{YKF+oiW>0oMiAT`CE zQ(uqy-~=KHgzuRTpmbuo zdI%h0$U7{`X08iI{qPWCssuFff=s-8yNKX*JQ)uy#1sGS11KgMaHq-&j3%%s`~SEA z12_=E-bez$4GC)w#~=`Y?gAVPOGk!Wm?fZE=;sf3Vi;I&a3R->{ZFA2p8x$)V)<1!!U~%r6`@ zCRk7p0aXQS?j}oT(CcEDzIAlgtHFIC)T52g4DhEv6pF z3qf`gF9)RZyqdfJAI9P!B#W!d_-IJrVmKItL;$=<8ytN!4v?wQzxA*?LE31Ts>-f- zRuBOjWLiKC1m`m<2La#^>+2&5_J}Z>R%0%Y4g}|lkVq8;GB!<*f9fEt1mtgkO>!>GR)t6*P&&~@Sy4jw}WFQ#+{VG5@|BO0r1S?%Vd z!j40mYx}+XX1ou;JFox%0YLz6CeQ}20C+F}00BV&If=9ZtH2wK0003&02M-Q0BZ0C E<84`7s{jB1 diff --git a/samples/h264SampleFrames/frame-0544.h264 b/samples/h264SampleFrames/frame-0544.h264 index 058a42692a9976c321629d34ce44fb1432315005..c8ad96b6750910e2985d69d544c8f8984652f381 100644 GIT binary patch literal 1695 zcmV;Q24MLB0003AFaQ7nL7G4syagW!g}C&000$9DNQ`li02XurXka7WWB>_W002M? z00b=+009L$KqP1`V*}-@fySezR}pciAP03Z!D0F4pFI1^vG zZk^er25jsvQz~u1b4zH^?vsaf`V~YvfljG5_Gq0096n01y-a0Riv}CU77QSOG{J^L*aG zd=8Zn@B&y~IzH&H`|Gx0`f{A5zV82*#YIfZ8OzZ$1AqtRt@20Bd-Q^ojsOAxD80ax zod3PV4QRonc}u4Eo+FF?55RySZUmB1o>l~QZ1ATT07?VywT$5~S1;PM00IF|paO~P z9L0Y35rPI@Z3|q3ikmI}?^4iwUxvg2&_Ev&3j#O*BLoAmGj>Kr6BUuOvOoaz$5WXO zvAf;(hI9Z5gxNuD0#apUWiSE|1a-tQ4io+05ybAx(v4nzOW0M$qg(5E0i$6`$pmZ? z2&g|F55xv6lxLn3Fi?w$gP;U8`+JWDWdOpdxCts)SJ?f8o9qiH9MA(u5R)drGz;(m zKJc0V0RS&>6g&bL#lQz(5&whnm@oi?(fcX`ARZ>qPmBsIKMf856sp_+!7{BgDd4Ug z!T-0y^AtRo05`xozk$KQq;U3lP@MZ-zx=>JPn{gXBx+c@2%@r3OGgBst>5Z04`Yxp z?q>y>JvURN$A$BITkUKh761fH0ARzfq}h&dWQ7~>WrP+&hLgc#TW2fzUcR=CGBOFdA6jIyCAn6KsVkQtC%6#*bXXke}yz1RUFbBKwg zr5809_z6e@0JD4yHkXa4ufMoWfCFrx1Zd;1AUfOa4B)Ryj~449i6e3UyMj}~Y<39P zB(4BN`ew>+&d~q?Fd38z@r2nK#g6X)06-SOfC?qRab`BBXe}(9cmM$aPyz&ECtC>3 zHiXE|3V&!yLb*^=Jm!?Y*gnCesZ|5=zyT!4X^KU0JqhsmkP{{#U;@A^)Y$@ZC@^{x zg}?$Q>+Adf;0PE>L$JK}V8~!d3(0v1u&@701P=`1_KDIK$yd! zdl>8AZ>tvKnarY@gDuM%`HCaH2D&iXEVrBOWd^SK7ECIyYH_);KaHAs< zfBVW{6;+g10J#pFHShog0SW*D0Of|;ZI~jk7|J5u{0s=t)V-9nY=1O)fP;4c#Ip!w zs%TD%CVQEf8k(9T1_Y7AZ}ZI_b|k=%qrWTvT}@w7Q@#o_S+dY_>+=XG4DKLdMtLs; z*8TtlB?n;2*&ESSY{0WWGcy~hR@HxJ6F>kUP($+$@C$u%!r%S@@EJqMnI{&EPjNg; z;QRvv9#~;Egiu?u)X2TlxWt{J3otPI@3-%71|O>b&E!q<9vFZNo2iG$LZ6$!01yp1 z@B>YpDs)F#X5dKF>IPF%0*bB{Ye(bY#I=fmA`%Q1@Qo5gy>jFzurm%@F%ggdv0VTF zKsB2H4GVk*(jI&7b?vdgQFSRx$$&^M00hCSoCQNR7aU_`L%;#EF)k?vJ$!+S{b+`q zh0bSkJUb8+!3;0}wn_|b-c#3c@INgFr-kzPNF9fPh)NX*j0;vo1;+nC^8Vpx8UPCe zo>}=nIL~Yt04FmpWYNTA22K#A6Y!NijPHSY-XG`sKJ*nb48QOfUEV1EZV+WJTbTM^ z4FZ-5SX~4{H1GlWq0uROoPX$AR09xi8i+a|na5@(ypor}2?z&XLJW{XNkdEM3Dbfg zC0I&k&9AFeaWCfMg&5 p00BV&ZYGchuK;*30003&06B@I0jt0pi~s-uK>!s(X#i^Q2IE!2zzqNZ literal 1529 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 diff --git a/samples/h264SampleFrames/frame-0546.h264 b/samples/h264SampleFrames/frame-0546.h264 index b42701a824c934e64ceef69b30353e73674b9b38..19535803152c9a8d6a57f0aacc43dbb12ccc549e 100644 GIT binary patch literal 2083 zcmV+;2;BDo0003AFaQ7nL7IRXyajhbW7Kc|;RGUJ0Fc9j9L36pRFNHcQffuuMYh2# z4+584cxLtbZuqHJQA!bj1C9{@V6pz;=v0W-wzb{^0-%P-0;d^Nvq9E|J&1;N>x#&0 z;3NP90!2`RgADA&C8E17Pxg#3qH3GD{A$w= z8-)wQ2?LD3>-P3-vGNWSVcMi|b~m2r>K~xDHxG zARZ-(e}Bfn0RSK(`Dm8Rw}YTE6#xT+7!gWRp%yJ5odSZFv=FJBAXk%bEj*cp-F|Jy zP&)~lB7Z{w=v9WCN?RaM0_7j~fQYLc6*nJ*@(Az4ySM-tVYVc^>=l{NegFn5v;e27 z`P@JiMg~TMpO650hZrHXQRQll_fzTw5!DPLt~$iB9{>XmLR|Z4UNR(#r~h~XkO0CL zoG@Ey3)bMN|EvH&0T&ZxmIEyXP1BQr0!82`hkZ->zV$5!%V85>0)a~$1O?9Bc)jQ; zfD1r4T2YTGd!M`|egEJAVDO?c)`;=JQz%Mb`29|kEEogfMcBXqKvaT&6gGS(kfiRs z=imU~VVP@hUGS?m%OCf~Faj?#jR5fvrj(1H=0r8Hi8x(A+?)v?2O^e>s3yDr_kait z6S8pI8;hpT3A0P!AOoXl3_1dJ(F@_S&YNBUGKsj+Eta|~g$8kofq{biQ(KcNS7H$2&3;=UOe!&fC zfKl@YfC3)#P^X2U7z2NV08mO^Oz^xy@u;2`uPcXu03ZS&O5N9t4d$_QDMY^mx6GLi zBBPaO{$`iW1JS>Lr~q{YUI{6MNvDU#1MxrroB$c+fH~eY3%)f;(0(+)06-Q`0Kfr2 zju7_Dv)zF5?gRn>G%;`}Q{I5efFbod@gGhFPMrcD9^e2m1>ccCt(oPdlV7dgOvO>v z%Idu*>i4~Yy7Gd6fOEO^8ZKmlkfB+!gf+7VUVukPPMAn@P_2nylvt@DsX95PCJ0?|v*cz~gZgpkqbg8sDZ_+*U8 zfD8ggf=EAijgv{7Ad7;zf^ig;jTh?6{s^Z-{P$k<53OZ(FJkWw@nhKPWmFx&un7V;LN&2<4b00IE% z@_+%F92<$#m4GFufG|1Ag|r6&*$+HMU=Si3q4<^SVvWpDcZV|v4r&F+!lE?r@;m?A z@JfiJEQo-{zkXVS{J)46pwKEZ7yDk_ zV%OwkCub3OmnE!DffWIuqEbizaqtTaNju;ap@0BDhVM)Q!Nw7H(1-iR0|TBQ5b}3Z zq6DIdNlD*<_;9j=5vwpm_uuHE5zgez!NTI-m_|7CPpcXY#}*j}4}ilAs3{cJ)hJ4& z>|aFt-^>660)PR4G7x|gIvpl3XgY=mq?`eP?U%!Mz3)S3QXGOmmgP(S2t9QzeNRqg zh7@lOB;WvmfgY2^DDTi|HU3ec!3*$C6abD+*dG?GX`B0^&w+?(;}PSlPIpnJfBpaj z5X#~TamuW53d#&T$cUi8>kahH@(d8H)51#*q{GsOf9>_PP3Qmy0Z!`;VpVat_{VPu z23GZNrv_-3;{BN0=cLY59e1HU?P3w4jf_Hq;+^ z(_Vl3{o?>(SL_3y)+z@hbRqxm4#b8o&C+ubedYi0!>w(U{>lGueT^8> z*_Ao}&HzyLP#Aj>oxaZ*Qo!tpa}%6`j*tLoB1$$KHH=2>-!}H~{D2hoefRyKd=4< z{4U>s>GT3V_%P{g00aO5O#ll6XSH}6QRaxiFexwh?hYmw4sSH4!-WEwW_Un=%e!fw zQqy6Ue!(Te$MQl*$e)^1oKji*X8zfhCo&SJ)T(AUJn7gF!y6^|R zQsd0W{P@*7>FQRX`++;+Ay^a7z<59a00BV&ZYH1xuK;*30003&06B@M0jt0pi~s-u NK>!s(Y5;2R2IE3Doeuy2 literal 1602 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 NK>!s(YJh6+2IH2X(P01p literal 1049 zcmV+!1m^ny0003AFaQ7nL7TuDyag9AA@=7~2V(gK6zT>(1p}4vB!nTXAF2n9AeUT^ za@~0T-}(Fm=J~wPEdxHueN&+>g@N}R6AfO@=fB|s)`MRAi@%#V`Kno%<5BMz=8{;L> zX*36fL6A5=NTu!02$sQ|NWEVB&;WqP#K^EF?WtX1sqH7h4USd@)PNNMrG!)wOv#`F zC;$imR&xi5xRj#xzw}@L2rz&Egg^iYMSukpJ3;Rl(-bXl2M6%OK(!CMJO~^kkPrmn z0JIE2jv8mNz%#4a3gU}yG5{p0Sap`Tt~>zgvrPx4KyxqXZU|%`0Co%jMr}L>!XZl< z|Nr9vZU7WFXsa`3K$=+7vj9T~LFbx4f&-+8^XQ#~FaQt$fB@jZazY#V()hqG5D#G> zRv;!6@C*Y1!jnT_q685$LuZ*T02+aVEnf5$6+X^jiw?(N0ss!^f&ktKLf-x1N(2lR zyXJ#e?s)z%V9g3@{C?tq94SKng(N#Gv@_t|P=O3CJV_lL-ig zAOrcTHWC;9Km*whT@g;s?b4n~e*C?_KnQF>ZcrNT*fZKp8Ga04Fgq+H#1s)FLCWDw z!`{Hn@Z4EkEiL~6fItA3$N@+adV!X?VH1V`l01MY&W|uVDq&(! zES~$j`t@(!-~I1LEnOFqZt;L@8nvKO2M)jsDe1`5Bn0OaDiFgsBtQTl zG)G_n5C#9u2k;AlK2o9jwk%K3-!GG;e0PNXwHpdPCKcR)fG31Pg+Ks^2{0bwxc~qp z0zhMjg#ZK^U}}NlfCL&KV!`Stc>u@@imy`*mfxq9`@Z}A|EwWVKdAq%qyPMa0(3~S z90esNSh6504lJ*^Nmdp_aso5p^zPHL+G{Y8hJa-0tsfnW*aB>A2b-nK|EWM4Y7e;u zpDHkbhoCf+pdr2P1U;DmF*z4+{m-h?-^Y<@EVyn(_PZzmCI#94w6U*r-~a>wOh^-9 zt)l9%kNu%(h@CL5{crX9}0YLyciM#=; Tz#EJJ00BV&6+&+SYVZc*ap|xo diff --git a/samples/h264SampleFrames/frame-0548.h264 b/samples/h264SampleFrames/frame-0548.h264 index e92d62fd563f0db9308aeed385b48a4cc96c4a37..09e3d808d58181bb4cc740e0743009efcacae78a 100644 GIT binary patch literal 1266 zcmV zYhfdcx3t{FUtmZ82nLS9f`kt4%~hkjqzCu`GmxV-B|nr)7OvC)0s??sb$|qq^r5%| zLf}8|`_MT~5G$6Bvgi8$y|&q#W9q6O00_QiIR{5nBHMU;yHTs&y!K>l*vnkaF#;01y~MAYX8%{^Q+j zO;>@Opqgq=xC|wn#p}=j8wdp%C9O6UZ}gyeA#3loEKpvH?H=KmvoxqKN?yNEtc7 zPycuYKmhCt%oJk_nO8)@8qjb7EC3fA6#~!-rTzDc009680096ZO#l#2&jC_F4vX9X zFaS{|(Qvmk&=4kMNB|M{wc!uKbsRs$nb2cQ_y7U`;|96^ARtSt29T*4p>O~K03#32 zqM^Gt%uymAw){AB_J9B&1^}Y1 zGc8KwpNa>&000953V*`}+g?q1|L^zbORw`KL9X8A|9wxbsTqghfHM#dJ3?ouL&}1^ z8u|m2;R3m6>n&zQ z!V4T|0RFl4Pw)C6@_CLD^^O@{W(M&A!+;E(@|%xmg*SWvhJV8W5SAu039SslIwlqR z?08ebx48!OV-t~-DQ z?xG-BYL0#HoZbi94)6hbU)8jK^0AJ~RbL=O_swI3yX~l*Zb|qZ`P!ck|vr6_y2#yMTP|9`S=shz@Y#D0YLz6Ca?yt0C+F} c00BV&If<+RtH2wK0003&02M-O0BZ0C<1^?rCjbBd literal 1043 zcmV+u1nm0&0003AFaQ7nL7U(jyakiQfp}0-00;;eCUH8n$`A|n(Jh{Q0Kq`fx3t6B z+j2oWVM8zgtFTHzVGHLi*a5fX0R_!W-U0vt06YD501yHxan;y9AHb0>oC*OjVGNiM z4DkSf0|sCd?m5kki@~p*E=B+pmJRqnK=0by{ZIpj-~a>y0347lUrd2Rg@qd!o8B=w z%ytUEqblpfo%8?#07@KSBBZTP0?WiuNdjcP7$6EEABYgnCuh*EJBx1s06-7~kZ6Y8 z6FF=YIb=6*r^5iC00;rP2>?N`01yxI@|l21{ooz~frU0iB~5PShZKv%4_s-##f zcrlNGoCFpRp{-^nY6?U&$hSN(L9U6hYGY)?goSPc2S6v6^aLDODHQ+)!czD|)mKlz zP8=1@`N)`$#Ax;Ogj)n|aS3UzwwNp;=aKMxo7~wnHWY;CJscoK03oIjG$nAF%5?fa z_!t+02N2Vu!W+~lWP4w@S4fw^D3JI}83Hi@k)Hry03Z(P0ZJBTCWHmA?V`|P(+2{& z&Z#5TCtLq~0t7msVFE(Rwm?kVh{4qGGKoG&FrDBtfjIF*37UxLMLoH72Y>(&1vm&H zbW;USwlBOIg}NizT#_{Ii+cQVkS@ir#{Etd;`#RGZh?Q+Zej{pEb zBs~@Z1jJD;d)o_Sx86W7pa38crVR$pkHFmoBr7BS&;SGg{{S!p071;!m!lH5Hb1!t z0vtd9;Q|kx3Z4Uc@D@NLp&%%jsRAc}-RJ<>mGd9KC|Dd^F`r@jx-k!(WV`~6S)GrAqo4SH}l`#q6Iv?W@mB=E0X|le$V#H z>!s(Z-8p>2IE}4unqtK diff --git a/samples/h264SampleFrames/frame-0549.h264 b/samples/h264SampleFrames/frame-0549.h264 index f9ef1bd3f8a145aa7cb700c2e19153b497b72e9a..66d6b3645f2c575b8069aa376fd9a149746fe99d 100644 GIT binary patch literal 1669 zcmV;02737b0003AFaQ7nL7Lziyaj^93oz&aA$K(FB2tefmHiA5-^9QR8megidi1`c zEUk<-06cKTw%sfLzrZ@W+S-42(+mVX*K~gT3bJ$3AAWE!Q8%Bjzu!{LBs%d8ykdvE$01yFiW%f-)RNP1Y8@&h& zAzIqk3dn^KAszpv@U$ffiw%JYBftTN*upHbb%H#ae()MKOaj|unmS1%;26jRQjlT^ zl!XSES{{ZnBGM#)swq1pZh3$JAbtP>4?qARY5)QONuD48z&!hhQE`C)!ph(XQ$Pv4 zM=(@R9^(rksNey5zyO7UGYR35p8L}HsHvG_I{0epUIqZ*5X)J~J>BpAh!&(M00;%E zZvxhP{`QC)h6R`PE~x|x70}&+4}d@jX#n#KI)%&ZO{1^<#sCGtF6!Lm4}&`=aT)*t z0SCGO9B*VpRsY;00s}9<2ewd>;%dMA1P)8?HA5iAD6j-p175_0)0>mg@4+3%XK6GG zFiS<_zlvh9S~57`+oO65)+oc*Vga@5FUv{LkamnA^h>^wU^8#=CNDgxTmYZ@Kb;XDjuDF zl2v$_k#|Cbq!|7@25c(mo!$UpC=e#X4rNYsLa+mMfC;1QzEEBWLP7wb8wcY&$S)G% zC!a7YlILnSUI0&NK-enkb077f$havCW{yDL&wI!Wi_8jZ#o=4tv8t>8f9c*&|5HsP zEsLV_+@>tWCjrB6N{RkDkXr;=Orkk^|Lm%f&Ky|=B+2p+zyvB*)upFA7yydxJ1vv( zq%!!RMuOm=6ov!gPWJ-`KYOH&x^8eZ-0ALF?fG|&NneD&7 zyhgwPKn*TX0iF~u5@L5+4B%2$p>C0EaYV1b_h?EyDygU_lFmc_ydl~^g+5LGtZ9eH zt>Aznh7wXgFccFZ?Qf}XzyJ^pbOQj2s2;*~s7Kiey?6it0QCS7&Ic}T(WTCXDeXW2 zg~gy75(}US5aI8G^#ee$Mxi93=rpi$3*~?V6A@VsZc&oOq(4#uB4Ysn2Y@T}903Vb zFeW@4fQBg0#rpp*h64s5qu9ZKAe_Uyg{^c*eP+`yKK#G{KsS^Ff;Lgm`1WjGMpS+q zm;eX_fI0V?aNQ7;$#VDS@B`-tDw)YV)SkeP+!z~dMl-8Tl-YE@{@_56k7ckjU*E9T z|N3*+CpZ7KI1EmB`SX9Zw?Jsw*7xhL`FzF*hHyn6z&0Q^jqWK*JXQP#1n zP9E3zFaU>EXQ5^Lzy?t1;`)q%NxcQ{;245M_JVkxFo*i?3(AfGA5>G`sP%+r#|X#f zHm|&4_@D{^V{(;}2q*A|!8XwOaFE4vA^MrCmz_Ag+zysMJ!*8L4w&C~> z!Rg^#{(c1J5CX`N0T8AD+S*(25^=BxL^+%q-;g5wVSq^W?7zxDs|sFe^3xfh{*Yni z@hm8uWPGE*b!}@P08MoOTsS(s6+pZh15hS<;It8Cf%soafD1F%a={AKfBVz=1^gfd z5kB^>UH(3B_8ajo(I1v|?I1mjOi#fgHxtj^z)qOresKu#QaQbVuHIb^n%(hxCXBPcrX9}0YLyciLL>wz#EJJ P00BV&6+&x(YVZc*H3sk% literal 1550 zcmV+p2J!g-0003AFaQ7nL7D&>yaj@YA%zIw1J#eQBbAJRArGJ`yvjhn)(I!3`_=Ho zc-B9sPAc%8iIMd$;w&masKI~$fpurx!X|!xS;G&-6@5sqJA{7nA-JgGQimnJVHgM` zUr!6Fs$Hl5`CxjUVQAB<4)1_i#}IYYEwG0#XhPH2<$cINw5z-O27EaJ$2^8V|JBHV z(GbX4fs(aUa1|NtN@2D@v#hYFG9 zzxQxu2-mEzfN`>$-McGjAomO*gslQI6o2pF0t|9zXJNcUpXW>Q;vz?amNSdF$kS2p z&D+}XPks->6{MTRFke+c!klx% zm(4U_W+Y~YOxPRe=imP@UyqT;cJUX@20AnrUYkcN1hY}Q38o9kDS=sG`M_!c8X~15 z=x6_sHMrk+{=F*a@!$a~FUPpyd-#mZRU*FN0u_NC^S~5kW!#pa%FrStG^? z%mLPboLLh8?*ss6pgc)-bV~s~Zp;Y}?6(d8h3yn`_a1!lnyuYx`jNKX?IDk#!8004l&fZ-ysEh7PbFuJ^2FaXd1 z5CI0z6q$@&a-eA34T@s!sMsz)XORh)|FnUq94s!bzsl(g_s@Sc|6)4!8i|03Zec#RlJT6Zz39hfZ{ZQU$FM z4C$`R?+ySCGdRwXr0&pTr>|Ik=YfrykelEAB26Ft!LSSyStPfl1ZO-eD((-N#Q*^S zuOxkHfCC^2yoo-S!FYfnh5;Z@JaDJRz(9>5tO??6cjSohU&=dUBo3IIk01$S^Usny-EZVa zN3oM{7cm`Q+IUxt0+_(20<<17Elj?KfB)F@%XPhKFPSQry;%SM*oaM%UY2|x;~Gk- z@6H6K9VRS-O71?Ocrm8Zn!NtBO{t(zh9?FD`VWcyu}vjO3jgpplN-Sll3)8^K`-CO z@F#rmt_1V&C_n%J0YLz6CV&R70C+F}00BV&IfS8>4ny+|e z`h%qzP~ZZm5RbMH42gjP$Qc@RP+&lxT|34AVnzd-2CS|Gbkrq*-~oe(M8c^G*5s@f z2qe&fNWYLcKjth6wV&<}pg$oWalFTXi`0G(kNFK7D(?&o!TI*~px`4K7f^||1b~}=Rz1>8Ylo-t$^S(TeNA-MjVU-BXdtc8vKj^XnyL!%NPJannvo7 z`@j%-1l~~7$4N1gs}%qjG7^UydQ`ivbc@NvS!G)fECA#oSNP)$k$X_&ZB$5w5s}W= z0Az&<&6IQg=l}!uU;u%`uj61;?cz270s{P^d{>B0>j6vps}D0@U7?pMCd$03aj42xtPhLgV*zE!M*P{f)zb03cNp z5CP1Hz5T2L1xn9CB2d z3n*Z}iisp%SOB{K2DZ2XKtMF!RbwT9?WSS?0RkWZ5Fo_p01^$H@FwvTL8ZrdX2|oD z%mqXQ_;A z55NOQ6{ZOYQ;yLsi5p7*V(RIW0lLIEfTk zd;S2ZBD^mrQKBa6#`)mL01Rg^P;BqyGI9xw0Uy`^7*wo~AiZJy4^o+Jf@J_(zkz8< ztKk2}00&F}`~-NOnNT!&fo0og;i+A3gZQcc_rU-J(0~RMcv@vnmLAVNzKBfuIPsTn9p23vvyQbIAJPFka1ptwH>^F`oZpxU~fNzr=Kp*>m|FDrI zAo~rm;tziVB!L7$13chmgc=YW|C3$tOd`8MQEr>I>fc?%{<8l9dO@TlfjsL|Z~X7R zi?kktp8wbhW>fi=Lw@?N&B)Ky`~T9)D#pXo0&=WO&;STn3%K+E*l`Kfyg(9Zb@%S~ z!ol)btik^Z$>BaA3nPM)R7YXYAU&%FWSAZ!GG_qE2fi-z3(%lRnp}XL#1rapj0u%02w0E zD55Lezgx$#VGyfpY@fl00&(K=@F&0k00BV&ZYID6uK;*30003&06B@U0jt0pi~s-u NK>!s(YyfKT2II#p3!DG| literal 966 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 f{k(ZXE6_nuasvQy%UShfI1O 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 R-i@D^^}n4XT;MBk{{!qG!Xp3x literal 1118 zcmV-k1flx?0003AFaQ7nL7HG1yagu`5W~!|l%r zd4~qEkty*ppb2<+cwjUVbUmmX0sLI#MuZmS1XsZQg202&Y0w5=9gQ21Ohlvs)d4b@ zw9rWg{`KSFu^>WoSm;K+1dxPg z-2@Aq(Sv9IfFyLcAoKwM7f|G;IHOKe1o@eK7>W%C2ZFF%6d3>p*4iRW*%9~z4san{ z&r_k27)jT70E=-n&s-_e`ycy&0K@>&BOlTnO25}bPG-%4RB)$b;KCGn=8z%bvShjRPRdvS2mn9;P;^Df9^O|BK?UXU zfLtIR!a%G*OlN>#7!DSq8wAiHiJF_d$#4Mp5HgeBK`~S8<_NIta{v$kc1%-%{~mAu z!C+vaOV#5_LqwCS+jvKD5z;MThh;huCfC7(W&>RbvLL0osKC;MM)8G!1xk5M6yRQZ z+I8YI00ISo#RYu$_z7)mAQ}Lq0E8Tqhcv0O>AWb3N|YW32*(d53b?2zN?jonOj7&+ zFfq>$PJ;}Wi=K0{3Fl8BfH*AQfENB-4~D~N6$i;)0D$7j93<%5)JNruo{buOE-4rU zik43v0yQR;MQ(nA009IeM~jY-gmGa1_iz{!GzJ(3*4Bh%&VC9&;lL8(!nyqX3D_7y zAua%!G9jv0k&y7fEFQH2c4+ZF3eA|ckP)CTGr#ZKf1lyYM%Uj%Lg zV)z=fO{gc3b^n0Nk)`lqt^Mu*sZOC3=vwu;As-tK{}u-U@NFPK0N?>|38eszf@LXb zL6hMi3%h{w8xS7E+#3n!r75^)_5pwfr#3q6vGuQ&@6{kRwC5C($1Q{S6QBS90YLz6 kCYT1V0C+F}00BV&Ifi1d-2^ELp6 z0m>bv45H*z`Nl8+DIu{HOKK$;*wCZkT5#*TUoh^=ht60 z&eFmw>P099iulxRB0&cs7H^~cCd>D z+(T5fcAx+d32+-yS9Z~$nRQYCX``FUqOV3uI$ zf_;h=g2Iyk2KWb8@HiA6M-O5I<4?8g|I7pp^PvlWDgbu@j|zS)8z5%_N5ROY^wbkw z|M))v0390uVbBwpmZ(o@WMVLw6 z3T7XFfCL5$={>dBx@_>9H2(+S11Ou164`5_xJYXlrNZ!>RjN?aMeR@u04M>&$p7vd zWMN|)k^lFAr~q{YUI{5>N~ed$vBLn805&!v4M2HY^Y0V@3BUoKSOXp7K)d5KoNxmG z6wu$WOIlzQe7WEO?|ZyL@o1hG&nuwA-~a@F07MB}yzzm&)+|aT`TyeuRS*L`SA4!L04tQY-^A>{0 zo7WUy|Jncnfai6Fu`0OSd}FW=h7)aRuYd3T`nvxz0)t(>%dh)=ZBt?RKr*-xR!)|a zoJ=>dPatsP4%H*8vE8r036wA^n1L{V?saj70w>wvOW>HC0vQ%JW_K->%$c>|00;+| z2v8O00_LbcPv|}rgU=WP3cp|+{;^Ow8^izpu_24IbezOr2mW9KtOM{7r);i+M-vhN z00RODu;QWcOX6SvAP5c?OgpoJPD;|I%LX24=DzffhJpZ=9v9E&;7%{FIEe^<9w10W zEf0SHE_bBb5%6wo#%`Seh+PPw{q5h*ukUKOKiOjCV>zFumfRu9wG&fz0Lw(L7~V@=@L(Zu}3=fNjhA#Z|fCO*XO^`0W6k zUlUeP)JzpiokN=g8YStvRETSTgBNzK@A{im&rLipm&CC-Bp4Rt2LsF;)(?QiLzlr5 z#>ob)nqR=30003&0B$Cb55C}8D3SO8jrWlZa{2H1Cc0~4`FM6#jnU*iMPZYtjx zbndhF?2)jKfD7t>7)(;{i9xJZcqRZ&0Azy@%lt4dgeEh7;Qx}~BuLs11N=&!Apk1~ zca>$lm?wdg0R$nF5Cjhb=Y_LT1h4~>Py{U--~a#tK>#_4qyekI8;k$|0YLy2LTLbM G@CM@f z2M+)MKq7!SAX>hu0!IrAG%+{x6O_kbtO_o#JW1XF06+_e7zn2;Q^2zU6cRw0EyDx> zL?iJ68N}@R6~}RH-~b2$0Fn(7+k$5;0%uHy?i74r6aWDL7eO)rgP;H)ANA!k0F%HT z0)fRk_({`$CIM~1G?slD7VrmwSE36IBaH~Vb_NPufCmGN32{_9UvPh9)7~HeAOS+^ z+|PabToW024w|*hHOwT{rd#!9iT#o|$O$Mz4LuBK%=< zoRyyJYhbX8o>F1|o7~u!6@?*r&qoAefDqG&78JNmWjcKy{CHfy1P&pmMT9q~PRRDZ zaITFnf>9yxm^cI=urf2?3;+ZIT|g;9%*4=uwf(eO3|e5|?z6CuTpo@4;1D6z0|*ip zRk8wqX52>s)L0orno&jn`+#Q#<3$iAXmlW=+`5DRZ~y`TrvU^mieS0+#rK0ytOL*e zz(GKATofZCJXcWkj75vQ7{V1Yj|M(O|K9{2zP0wGwyH&zP1VENePMzyb6PLcp8@mmmNT2Y?U(z;T>(ZdRO5+|}Ab3B?dV>(Q!Kf8Yi9 z@UDM90&#u^5n%x_0zqI>0LlKaZ~*jwYBNruhx}zVS^(KK1ascp=u@Np?RJCs#Wq-f z$cWj4#8YgF01PMr5DR*r2B_ZJ89B(zi|W2$0q5@p;tqt2@6!13Fgcvqp4Jv+2X~1E zduShy06y#M6;pYFmD{#J&;NV@IdX}DqFu&ISPW;Yw6_`&HxK_od5s%(hpad_t7D^<20DuMj zj|qx7sQ!P+G}L6+s(KxZMw1*Y4uN{~TXWCweQLVw|NW9S5%2+<7TJWyfB%uhHY-ek zumB|h2#_fZza~T?90jBw@>xI`7AUTR;gqjB;6`?Rf;Pb3TgKrY1ONa3|NsA!7X==Z vAO#Eq=Y(^!K?TzTlaK`o8{hx{0YLyciKqdqz#EJJ00BV&6+&tNYVZc*5DK__ diff --git a/samples/h264SampleFrames/frame-0554.h264 b/samples/h264SampleFrames/frame-0554.h264 index 6252a899c3b5290303f15d28bf6262620f936b11..b29ea2697bf999a74168f615cb93a1c460716be1 100644 GIT binary patch delta 1328 zcmV-01<(4%5sVUl000012`~Tv0YREz8oUKJL1Nd`^yh{1aq7{S2Mb^Ti3TQw4Y!(^ zNe_oT*Q_+a0B`~iRl!pg;-hx38(07c4oPeP6l_j+g3rtX0Cz-WT(r%DE&iy$7y<`C zDnFy7i3%QodBO!rTF|L*5?m{P!T%U^5VBM;ch=XPPs1vI2A9g6zs>#rX6z}z0SM<1 zq8croq(Mg8Q^O<}um4bb$v&H@01xE4u9c~UtxcvJszfCa#N)v25=3GMrqfB--t?tls>aBCI+ z+(rZpzPc8<2a`Hm|K6pb|CYdZPP&~X>U5a!zIVco00<(Kgds{&kc25o|Nrm+a3Cm> z1_&}H&y@s98MBwg0yGx|0Msxa3I&fuOS}LJh{!g7IhDku@9(sO1VZx0YAhSKrWmG}3FumEj$03$~ofdST<8A0BZ9woL#5=z_uc7@LkvCt#QDG&YtNL9GP znmwMVQAS-$f&(Do$ZU||)0H9`R)2T^0s!uSz*SNST`Hc%*PeIy00IF#0U?Y8Dpt{@ zOO8)}r~pSpkO5>;Xa$?y?}PXp9;m)c&`uWc$$YQ?NirK^o0LydQVa*gfihwO02Tp0 zsL&IUK#T}oOJ7sdyiYd}xu5u+00@8)3S6K`&&}Wf2nU?-0Vd8BIU}sEeFx52?h&z{i!484-qAc9uJs^$N%EI004k$HUJV~Z-ClE&VTN`wm0f^DN6A$1cyL> z01zdCS2zlWY;E|<%>nQLY|KlFL62V`V*gqpry+Bh%14J{0+=C&02ioqCI2z)xa=R6 zfL~7w_6AX6Facqizyf#WfoG&v_zO594=_U1_WRgo2%O;oc5=82G}{*KbpMmYz?@$Q zfrR2%)d>ZRxB;wH#h(!JfCJUq6-0u6lK-%90JfG;QNzz36aWvKMUJNH*});Y%@?_> zB5DwQ8NuPxG^B+nV*gn|rr3ePY{=j6AOOz=1dP(Gc{C)$D5a!C&-r|Km>S2i0RVx4 zZOnRdkSF&(AEDo<6RDelL#RwI{diYyaXS95h4UNbUJrpx7q9@h6$Gd|f8GRt=l}o# zK>%(hm=C^R8V36+AmD@x2hx^7UXXNXS0RC00S`3_T`VT8hAvtKu5dUTi&UM)geXBm z8*(@zpZ|042JyvT`k0{sn0A>}K>QGY!qI09@CIYa@(02uP+4Ps0D?TG`8U%rrh_1T zwe%qyGLy>`TYK~ mUIk7AlW+xp8UO$RK>#_4rU9$K8;k$|0YLy2LTP|%@CM^E5llJ& delta 1250 zcmV<81ReW~62=jK000012`~Tv0YRFe8oUL8{MR>d3_pzu00IO6&u|helnJTaI_x@_ z#?Ap0N=OWlQfiwe9p-QUv;e>r{sRa0F@XQE^*4+Ea16rE0rv~rJCuQElBfRkavXpT z=EBYaq1+wWhN>%$Ct5jY1{u+h8DkjKpZR_Q3`PPDgZmwdjzgEtG+<^VX2wQ%47u+<{owR` z&K29lE1V2;SS}@H)bgN9RU1o87nd9mD=Tyapb?`jN=Ha<^bO?MW?X*%egF*Q6Uk!j zs}$q@?GONe2n7I)rO+=mt@-EAimVHroE;J75(qkAE@X_9M5+K#or=tHH7rV+zW_0Z zUH#dqrB@Msmbn-Jh@C;6X!sLYrQ^Ub2H1=}{!9pq8U`x}BI|||q@2tZV|Cr9Sj-(hf7;Qj5JV}7Mqbq~OQ06+{X!?3py|C_kLW+utDU;qdRfB=A) z0C;v-ywUyugMy$0=VIzU%ohr(#WUytm=F{`oks6age2ofPT;^37-pbwkTW||b;spY zJ{Qmqap7LT$}HFbFgeWN0EkR=fRQK`;Xx36yfLaQn!!#;2%?w-*r5CbE@oj$t!4jz zr=A4j_(TjR6CaKWa80sp9ZLX!E0@5M1n_h%gyjf@00@gQ0-#JS z09gNq_zPnRmsFb*KjAOKY`_8{`Br+KIL!kyi(f=1_4Q&rFZcW%;HoK8pOb+EC6kZ@ z3xDJxLEYb)uh(!whmB__5>GkzgM5q?5p7aU+RRbJ1KP#nEMFi0`*kI$KtyrsTXk{Y zo{ALXKimMVX07-JMV>F6nCjd5U_w6}s~LaGNFH;*S*f9vYrXmX^9g4I2l{7r_##*T zTKBr(kc4ly8!@jd^*WW@H3)%-|T+5!WUxFF*N#qn6lI`#Q{ z5W{n@Qigv7#Y54hSLYYPV*mmUn4;Ch4tYQWfD-^?j#27;+cs4vFZX}|Py>pBZKS7D z5%bj5aAmrKrCC(q0;UuH{q2YXD(FDR%#6G$E+RX5Zx{m-I2_nDWw0flfgBG23>-ow zl}J{%WuUM@CWHz=;{gEpB#(d+#V`jzjeO7})OY@$;0h0UGX>$eb^Z|Bq!VC%v{Z(| zvlJjAieurc#N5XQ$8`aAoH8#`C&}3a*dMRO;{sj)bU`CKt2f2Nh^F8u0>kJ$-@-8R zEPjBh1ik=Ah334q{YaIps0RY{W z06+kMzLB9L5ppmSwzR$nw<16^Gj(Ch7y}QKZj0Y|1U&`TP{Re@TI5tC+W;~`ip`W$ ze&_%W*?2p8yJ+fD{8; zB=&v^3^pc|@IqkqGdBO$&j0{GE`VY{D^5&at&h^1i<~L&-~b2?M1bW@zW>Yygcs6Z zA|(;p_jiGUv1DxCqMhYDz5oC~0L4~Hz1TxV)BfQBfGEnysMI*qb>>H}NP-a@K^(&z z;uIKvaKo$V;ZGSiqDCKJd<&_Q|9W5�TbznrL_Svv0x;AW)A8njpNe3xEN2^}rMe z1Q*JbM4%nHvH$@CU;q$G>%agIFaWciFd=m{eMv-{6hwXS4mYR(A)Es6AKis)=~fNw zY^%(W0LthPaWM|b zZ~XoJYy8PUV0Ktt^!y$HL{0<_(tS$760m*%Xs0-1z(xL)3&Hc20i6Hn4$kDei`FyQ#&aVxC1}hXGB45|CY8VoR zzhD85l(Z21;oA#Ni9Ljz1-sZilp^>)^8gNz1Mnk{=~RM7R}fR#_|?@%!T*9D5CJqG z0thgA#RQZd+yI9)0KXm=fj$ufNsW#cpicCgoL&!s(Y5;2R2IKj>Fp>ZO literal 1020 zcmVv7F$xyR>*xRk z06+s8+Q3XXzD;Q=XbRo_02Tp)1Q{oeo*-2(x$J1-8={kziP=>(FR&2;z~B&u0^=Y9 zg98m~#!|kbUS$uI*MI;(N(cp#8|!52p%#qjC4E9BL4yf;5HM;T`$G``mWYs+g~@AP^iNH+)jH1k6;7R}j0fOxLfaphaCcOe+egRj^C2EfdajG6_p}FxsrFgasaph2mroJBS3xEC?Q9v0916q0bvWFOh&!#mX%-t zAQ%DW;IZFu00IL*DV7-wkH^8HBloXA+{4Ne0DM=H5CVhNFaO*F00(eEml@S|NIzV~ zo$M(>>8LUZSW(;(;2MA+P?Tt?MS*^V@@4mcVvqrY6U$}vi%{*^z*6J@4)Op1fN?<9 zE}UoWKniVA={wnkz|vFT?$brne(shqK0r=@0003&0B$C*1TUAwf#gU)OTthRCMIw` zGxX<}63`a3728sd;2Z>E$WMAuj7LIL#UE`%1yAS|8V|V7mR&T+JSb<>9soDjPF!(6 zYrUyOF8f8_0fNwxXqB_}?zen0b_GZ((A6ZP9nJ7gO`uc?7U;h}JU7f%ALLoum zh)WX?2!u2E0PT*WC*fRwt%HDx`vcSY4JVu!wq}?U-f$v`zi9pVoL7JRAN@ZwW#_4tO2XQ8;k$|0YLy2LTdnO@CM@p^So04 diff --git a/samples/h264SampleFrames/frame-0556.h264 b/samples/h264SampleFrames/frame-0556.h264 index b4a63b65f81c88acf978c3ac52d614b8ba1e5d8a..25799e8da771eb7ed18bb9ca320af26c8468e8e1 100644 GIT binary patch literal 2593 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 literal 1264 zcmZQzU|{4l01}R~8Km~GwyU?SVz8LclyHg8NC zGcAbYaMI@auyBt-SwrNN@H`QAr`ipwdOvs!TD&(+Sk9<1wcWO1l4{-r1_2KDjt2|{ zYymm^enFD9QXBKvpSj4v5W~PBd-90`2b*AWwr%DO8KH+4A9J+JCcaed-((R#`GEHk zbA^uY`)?%6eXDS{IBJKG4%=xX`Uq^NQoQWM;z0 z;(HQ)DhK$gv?m+Mad@O^{`H%GK)3`HqYQa!2iVp>2>eef_+!N3`+#*_;Ff(?_OmNH zKMZ7Tahk#K--GLi$fEN920jg`i!4_ky`?3l3i}^M&dXmJ_HE+}*~3=A zs-jY)c7$WO!K7Y^*vS#E^UjO|M z&&;9)dqdYhl&?DRLGS80b^A*TSZ9^_N36TMytVk}pMUlC^Upv3Oif1EA*ZImMfxYt z`!DD@AmzlMp=QTmw2VdGBxv>gF!uyDP1V!$?`aqWePGdB#>>=h>ixZKH|N{;Y0oO> z*L^-RvBqIhRCTBADU;bxQl@LW1Z#@?E>yN~;CWTN!M6Sh^ZA1xRHrRsnD_GN!Fu^i zxs^->j6sF0Hye!@S_0M-y=cD0y*9DwFyqdLGBog-{StMBH(V~}I>#(l+kd~1YdY;h zPF>Is7v;_!4tF$!bJXrK8!BzJU(ZT*;CZ0R=CLMI!dB9E5=fu0#(^2;iws#5~eZgUvoLc&EzSOBV^}l&+K338q iQtdk)_}eqM34l|-W#xqlzlbCN diff --git a/samples/h264SampleFrames/frame-0558.h264 b/samples/h264SampleFrames/frame-0558.h264 index d263b74f19a61a055aca68503729229eb717e515..722b51f8a9d3f9d4c511f68b4bb58e6df8eb8e30 100644 GIT binary patch literal 1306 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 YIf=9ZtH2wK0003&02M-Q0BZ0C;|=S8HUIzs diff --git a/samples/h264SampleFrames/frame-0560.h264 b/samples/h264SampleFrames/frame-0560.h264 index 55134fdec7df6469032736aeb7759277867faab5..cda400a61b22f15de8fde71c62da2bb6cc1ae3ae 100644 GIT binary patch literal 1394 zcmV-&1&#Uu0003AFaQ7nL7N~NyajJCNNRuI6eo*+2~mL7ls<^Tc#(LDeG0MJNC`U103E#P2|61hXBNqO=@g#D`f8JmW(EtV(4Ov_W>8M8ozyk*miG@-X zwb^Ja5J}+zkYRy5%mwCu-T)H-0Dvd}2m=8~!7Hc@wcb%j|KRiyfI#a&rhVcoKTiMu z;i7;As@M(#MY~3v)M3cLGB-5z0GH%o0|5)G2P|L#0%;qnL+=1VXcKuuPaP!2N~}}? z01_MngCQO@!|PnIvH<^AY0R5I03osWfvv6zU{iHe;V#$!WQ7XNlym;*00Z`50D*&V z<6uzb;x+&R0vn_N;0J`ajS`|eG82`KW+=;WPg#GUpcg>I2BDt-0^_JO5kjFQc!-D{ z7EJabFg;A!X-n_C0099W0L6eSgf2g4Lj7!S&(_>H00IS7FaU-`Pk;LY0RyF{p%E%Z zp8n7R1_dFdCUq#IJmSRg00IEQFV)xfln^D`f7}q@vKNu?qD!~B#X-c`~VvI z;0FN!)0tI_mV>hKBX)8P8fn_%wqUz2VeYt5@22b zULO*m3B4o*94mX`V*nKZONJ?)4pqSizsKW2SvIqW(I@nQ7sid>#Yi3~0VqJU@bP-; za&kjZuiDA6n#4$gf*d$#p5Q=oc8&%xWM>tPEPMo_Bj@Mf00;yC!PreJ4wcNOR=++K z0Q|^+0iDn=VUdsT(aMe?v(zX<)KTY%L;u0>00IHPVe4QJKoBcLL%#XO z8X67#c)~E`wFd}8m>>V(0Lt=B>U;0lRV1x3 zRnOJnNq6o*g=@{IrWzKlF% zMutEtZ-h~@F^S%G-rwUuLxR_7hRh$fyb^wg9Vq8LzX3SE-OMU15hEY!3=lv7KoKAU z_`o^!lY?J#_6>j$2GfIMAG%Ko>zq*Ne;KzOk?7(B28kZDdJL`6EO1M0suh zwE~bh;zWR*jaRwIGj${|H?ROO0M{VGQSY$}L?b5JAOH9B^cM&3?Lz8{IKcBvaVfhtb*Z=we@@0^!mb`!L!oV?XS7si>pf#5o z8+o$sdcBY}(PQ!oz|s)Cy1D<9!?MT-oQcSi`hWw2zyD#PVaWwHux5Y@cc57DUb6us zXu2w|SN%>kR3opj{ZdLIkdYGx90R)m00BV&If=3XtH2wK0003&02M-PfNJmt;}Q&C AG5`Po literal 1037 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 V0jt0pi~s-uK>!s(Z2)TU2IKnkjC=q9 literal 1416 zcmV;31$X)Y0003AFaQ7nL7RXYyakDU0RSKcAh3K;!GUZz@BsiIz}9xT>#)hnI>*2O z;6MR@$s)|j#0v2NLVhn800;q40CPzIYe4fN(nO#Y#*5+Z00IHWG+4p8nZR4ZSrShG z0gZra&j*>A2Y+%5TOF_f;DJw&#+5%L8<|QHf0zJ(aV>&dDXi2&oXw__NC*G~0dC0* z0W08`eiy;(@7@5=02mmx2k#TozbW@fBL;6U2XKX&8UVuZE^w>dw1bHafkFm}%5ESk zYdi>Y$`N~WVYf|jb)uS+4g!Fx3BMmRg@^*&C@TOP6TZSjR>S^i3IP~`-D+_&jNE_) z8xb>~u^r9&{+6r02CBwEQRFoBcots`Mh3vZ4ZxrdhConQN`vria>@n~DgSCY!KCKc zI@4Pl_kaK(E(*Yar4_R7bmuglm<+X^0O14lOHtdS0&)NW0097i77`93ASua8p2KTt zKo&fR$a^bwPK*2iG0Zu`Lo~4TlrC;*EBxTa0I13gOFRHy!2EbFsP;muOJY?TtQ_5-X=1jfufEGZMBBEdtg<;>te5|4rLj& zxFPrT{-X@waD;{ac8lE+c!Ma1Iit#m9J1+X(TBho1s4n1=CM-%3uF!(moy*_56w&g z3Q>I^CmU&~AY1PKD{f&y$4q3-Zte(>c0@iOh`B>^1rSXh_B;FX31 z0WE}vd;kFeRREYJ(VK*nS$H8~_aHwA3&0MIi7Eo{QJ*12+U0Eky>Y}H*hPV!p8!pC zb5WicTLnn@v%(AA#M0hn4?x2c;9)?kUxqFUCx#vW`i27W0RTa&oEB$qJeeey_VmJ2 z3n*$cOWh}W(7p<3A~?X(0T3@W3zn=G?`b_~E}JP{~Fkq`a*pfl_? zRySMpNB9^5Zh!y)0YLz6Cg29I0HGhx=ip92n3UqknXz!!rO_iAR5HvZsShJ)VZ%6(LpzyE3BgJ5ahA8V?9|Nq#gRRR9X z8ErRDWuN{BFW{sOJ|bWM0(;Ao_$UC2F3mE_{0JssJg+De=A;Yye$6Jwe8GaW%Pql} z_ON0Hkw1d{j%B4V&u#7blm*SI9Gc9n_py`=*g5ui38>*LP}1;H(gB8CAW98`PelMJ z<%%7tn7wx2m;IGQh(-lJ*VyG1P!)gkX3+VV5LN$pN8520TZ0m|NZ<3*!a02mc3enP zRmLCy@DdkKPrx$mysjY}ryM~I?=WI$BRSGQ0sCG`Fz}{6|APW?e1s>V5Gpr4Zr|+D z`Vsb0Gfw z3ypwD)1Vej=0F45Y=J_kaS!!yB0}&^r!`|=!0|1Qpx)K;T(9q?o}YkYAOHXXK>#_4 WxB;uc8;k$|0YLy2LT&(R@CM_tsAV1i diff --git a/samples/h264SampleFrames/frame-0562.h264 b/samples/h264SampleFrames/frame-0562.h264 index 7fe7cc18315f8122e915d73af283f5e698f0455c..6e3a54d9b3db3ce7db752f9ea1a8f9f1b05cfd44 100644 GIT binary patch literal 1059 zcmV+;1l;=o0003AFaQ7nL7QM2yakUSQ<|5+(j=tH6c2pEPZp>Zd43JTFlGsXP%s!y z00;mA03Zk<52HrM`z8#q5lS!LfrQLRfa7W9s^1Z}|3m;0fB--bKok@wcJP3oO+Wj9 z0t{yoX(}-07ANT_j{qP55C%}NzSYygnTi0Ceye~05DGd1iLCU3Drnox|LS_cYq)B>_Cgva0JI53QyTIVzb#4tfr|@e z*K(rtL2qgdr0zx=v*A8t6pcdU4^Z)??kO06r6cyMqR20D~TIOOv2N#TZ00=>_ z|G)r1gTJ@{SfIc_CT!?ZWK<=U)a0gXLzH`;&;}?Tbv(-(6GoV;hrAHP3TZDAFrgt% zlq>){-~dDdf$qj#fk6m(ouB*|!sn4p!GFZtGiDmQsA2E{c*+ogS0vFUnm1?x0EPz` z(STjiC5H@0`q}CWlJ>vgngBuoQ8WR7NH(GmhAVhFz(4>&6aWMmdN2S46+j(1;I}}) z06>HQ1P6N!fDeYIf1ol7NDUh`A$tHPRV#=>P-Ey2x|+VEqFyK*5TFhKZcq*ffdiGZ zqZpM0C6cFr3<4V>6axiV#mFupH5U*A4sQbeUy2~!a0Vg~83bUG=wpH@{01Db&{Zii zG-d$%F|r)swiqY?SZD4G08p2{oehYIj2HKS5HRBfIYkdVQLJe#cz*t1mBIlBgPKc# zi79z8C>ss{hhP8z0YLz6CfEkA0LdTE>=l9J9)a9g%oX6>09}sYMFp-&dchu*UsTi~+z5L6JpE)1cJkbtzLA0;tP=U<`F zH3P`l@l-R6O5n+GBiC>mkk(j_3PL|kM`%V_97MrB^!Ok`P31&w)}H_G;Ca4|si^Xw z_2Vc7`5+Xb{csL-149c5Vkim4_B)os7_0+>L-*zADz62^m4eSM)-V5XAsURq@TPe| zl?T)TI@jHEso`BPiZH;WtKml=F*cjcJm@4Dh$&IwSwP2NrRnHIhE#_-4_M#=pDP~` zPe1exxNK1g;Mbxz0DQoliO6uGlkUg-)8J83(U%b8Y*HfYnFus)j}}Me=zEj{ zPz)diP+e+(9qf^`zXISXO8^eAc2I3QNYu-Xb1AC5E(^3S-$&r;J_!4 d0003&06B@a0jt0pi~s-uK>!s(ZGdX<2IJoms6YS! literal 1011 zcmV@ee`JfSrS%izRNXgE9-g5aRT00U{WL{l1~e*l5b1S@*#HZnrVI^O^hXcU_F z1rj=e{+9pu0oMQl1tAcS0g(Lp!mTgyf4Be!AO(>a{{^C>e5AT8=8uEIAY=s`5-EFg zf+etL5-(T2-ya`;DtejQ{Ktlq#h*lwfUx6VF z;NW*4Kt{qO02UYk%-SRc!XYY}!w-xBlmKwOrku^20;u6m&%nkYO6s7|0n%i7^h&~* z00;m~01gg_xf9#OP{48nGWftQ5D#G>F^CC_@C*Y1!jnUAq69HBQ)ihj03QPeQhVqs zD0`s677cE|2mlq7;5Wh$oBj8Ns4!rq>hq-$vPsqH;T^_TNVSF?lk7y3Ukn z99bj8n;UwF{IPSYFAq|&IZ-v~eeAcSb~anc}?D<6LD0|I7%!vMv(&+HX}|b)q7W3eZmFC z<=2Ci`9Zoo;3Lg_)4Tut@UECe7$Ou8L@TzMi1a}OGLTZK;g~24RtQ$tt_nnQ=yRU; zxBwT*@$nS*{$ZHm#yOB0^)Y}xU`|Bj5)bKfP9OBN61Sr^AcJHq)qmL0CPD-^1F>s| zlK$va0|*14E$V<1&E$=(aCQPb04l-thhGmCfVr~S!9KD|9v_+PS{m}X7zn`+)_<>U h_!tE80003&06B@e0jt0pi~s-uK>!s(Zh&g=2IJh#w|)Qs diff --git a/samples/h264SampleFrames/frame-0563.h264 b/samples/h264SampleFrames/frame-0563.h264 index 9c0bc21bc5bde8b332ac397b746df24b4879f63b..c584bcb3c9527548b5ca107a7829326894e2b6db 100644 GIT binary patch literal 1246 zcmV<41R?tX0003AFaQ7nL7RXYyakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bDKVyX zAv>I&fD9aFsK}3Uu5DNOs_={EOB4W51tnBKMC*}?$!R793-+TDj#Bt2LKqTQIRs-N z$A&4(cmM(bU;#mtJS56*chC^aC6o;q6h{C8-`XBBCok>-fB=9Q;Q#P{11dM2aWrHAQ(t8Ov%nQlwv6}1CVb2-~_k;6u=7lPp}J}0$7HLHFN?9 z;WcQsj`3n|DXP1%gNP6bjTF@DPg#F4q|$^Pwc@Jpcg}ukZ!{ z4j@XWQ-?0Fuf3TE4;nxL0faIH{|RqyJ-0+tco?ZV%}KWbMYDLlQUEv*3NOW3EcpAu zgt!>G0rbLx$xSGXZXnE+7GWoFshB^&0RX}OFAlxVZfF_ zi-qAhtz@8)F7_qLOm5YmfLaCl~P`pT$5B0t$cttL-U=aGmEE8i3UFYP zeeG=J4T&(n|HA-*z?BM+P|pDgPRx$~xBvkF5Ceo3h)EunsSOLFnM@kEKNv+6hN$xr zK-3mp2y-PtuFKrM1!3!IMtS}S12F*ObS8R)IH)htpP)HT5G$6Bvf_Pg0W*UENNNT_ zz3S^N1_b%xFM(ok0t~GS>Hf>6_eXJf00IKy3{YbP1|l4o_u&?Y0A1q%FzxpM;(WzG zYBE7z|5!*-e)gA~i{Ssp01mJR;5$TczX3rsg&+U`K~5a$PyfFNzyLrf4hb?0_(Wal zs+HPc!+;^!0003&0B$DW2Co3hAAvmo2B3Ks5a0pKs@(NEux7fkIa&Vn8t|YEm{-su&ZX zWE~|4P1L{q01Hj=6vy&?sw_PeQH!Pf?m;%NQveV;%C{8`cF4%X>EE3@nH~ZWzi$VD zIKRJQG*~aNN5Si=6#|++22-kRqkrfg2Tmyv(BLsMwY7!-WE{GD%#jhmHws0y_y}LC zn3kURGXeBc+Fo=0{{z?0!;8|#c<&8DHVmmSegm=q00BV&If=LdtH2wK0003&02M-R I0BZ0C;}rG_hyVZp literal 1105 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 literal 1578 zcmV+_2G#ih0003AFaQ7nL7U(jyakDUfnedp34uIdSO6RV761kSQ9z0)`47`eZ7xAc zz(5E+v;Ze$n4AiZV8SH8xIu+gDuNY&3wUj!uiE1T6amVebOWKIvpYropdbVc@D0aC z#Q{MiBGXv|7yt+>&; zW#;q&2o=dB<;VFZs!{!aYyiQ>rSL^A9Zl}C-H^}#2noOdPysX#3fo|>dufOOr~r(@ zz_0lcbKr~sXAWF{seKWWeH_fLb})fO5bh0+pCT{5@&MdJjudTN_#pg=sSh(i;Q+hD zb0Ivq3e%)%d|3oVK!X@i6lEM+a4I*E0Iurk3B%z02r)tkFp+}>MOh$B)o5@4NK7Ar zHNhV=h?glV01p__1g3y_;GLC7fYSe7^8ks(X$KXWl1_Jr-~a>w03bZgqoF$lkjgs~ZArqP_i%s!KoAJ3l)!E0TI+(q zo6yWD4+<_wB2D|#f|LL}C1R#26sB?<{sEW`qVr{^>9O|LTakb=CwQwYTpdV-<6tle zaTr?t@MN8!&R~p~;YXPA1Rw1K56JFv5qPr1*a=*hy}ry?046{%01yBXdOif+h#xF5 zys&HmfB{Ao2OFFXZZ0>hIWK}X6%GMV2qAzVj35Jm0jq!oXa*)bD;`C}ifz@6Dx4da0Ry-B63DBMwm@ z)qz2hLdb*xwf~*KX8=xE`@B#nVYkQ_GoTOv5Dk1uKmc$8w~deR5;7S;))$kH5m2q` zzyJ^e0AY?W#v9pefT}U;3!jJqEDOPMqr{Ddhv|fG02lzD!~y__w(Q9_%9fHOo-kBDVVTyf6R|0UXd-@SpSA^_%vp`@<*>1eyNLjH)(M{^4`SumBJO z6ja)g{CLZTL(k#h06+)`;|UipQC!&Zp=affax4(UP?nE_G=le_i4SS0fjeYtzQgf9o z0g!a{sGD(^&%_%QgA?T&fx8m)Bfe)Ze{LZHY2tS)j0;E~fC?HcYL|t3Vq-D481CGLBR|s=-Z~{WC=RA10G=J(KE_*}% zsd|^MK3+?2pfnx$l8*~%k|fp?C364vqigFyv;Et69&BA$bbhT*eE1l*sBA-&M1On0 zbj@X8I(qmx*TJG703ct$06;;>U`{X1oO^^I=|Zv19A@lv0&@E9waMO7yvPO$oj`Z! z!G7p(jFrAV7aX?RL%+^^9spWvB-lrM!;M#gbf<;*IRofKEE<3SfqDP{fN+^$0?Zwj zs2}%yAdqkYY8iVN>fJx|01HE?*Sd8HgzwZ6NhD-i`@FWM#gL52yWSiL#rnI*G&TCw zH{YgpY+zLH;4HBMnzNv%{|+2X>>zZ)Rako5D~0s)|qf%FAtq#MA&6eV&;Op^1Z1d01iFM=3u zb_!6=00<^39*ru$IKC4ZU?Be#N;rX9eb_EQ1i%>KN%ANO41=b|zeo z0k#6~M7Q6}0G3t*^G8i|k<$&8Lj;sCU&Ta{FDwY)0l%dHI0y!t&a7m$2X1B{01zSo z0Rjw900BVZ&jJ@ySJaeAnnH*v{|!JC0s@0`_`C}$U!7^hB>|;A6as~rtjoK(Fv)T(@Bx&!CK6XE4fcR)0D)Q}8~4qy z(8zD=#u0}ls5nQyMHUEuz!d~nh2-iqMBRAbJR1N58O#(LJNXP;f@1JR_5cPID|irI zvi*mtOt!%?fP24zXi2N!|Hc3ZOaS}@c%GS1Gwp6o*u>=@afn*`*E=5{D`&>vbG z+R=ZviYEj+cvb*7$)lZwyXa57zyW8FzIJEDQNOvq)CavTQ7{3xz?T330YLyc XiM#=;z#EJJ00BV&6+&+SYVZc*=$Ydi literal 976 zcmV;>126ml0003AFaQ7nL7D&>yakUQ6lkZ10ad}Gs2@tTIgh+x4vB{^@K3;oE5HE( z0ON#lMKVYteG!{O|2{APAS3_~LctOhWApkbf%G4M0L&u^6Dg46G@qUV3P`6E>C>u^ zIpZQbSZq87a6mEu2okPz5*>QO_)M?@2m(!oXoeV2s6xGaKC*EC4_e%MfUR530g9 z!zMlfKmZT~2}#mm_=a~!7IZOyW}uE-5q3ea>hA;qA%K9VpWtYSgVNCNC;-JzCWC0o z00Lx>`S3JA2mrtW9{}fFru5hi9)a870gJ*xfNe?G3SQ$tCx=|!UG-3@LJ58F+=GAs!CnBI z`BzXZ0i*y#C=HJR9f~DL35c-P$7?d@)8=rn zBK7mn&Je-)!t@GUK&D4Tt+c)cfI|X7gDAs3UxJ{23Qb3009Ak*EyPu3;92fiNGWhrWY@Bk14k>CJRi&y}a@aQ)QxiDZ3 z0TAsP!Ue~vZ+_q~0IFadB2U&fo@zL0E&sR_qv!%`ls~o)+Rrcs0A&IMXR%(hfCjGsMu+qH_!E!tAc5pqOJo4T?G!ifIB41{a>fmgxL>sK-4g!-e~Xzj zkFx#(Cgx$kroff9O%nV6+rXUy2p&aXO56v(HQLoi1rCJ`4(g0(KfI0*QZ<7aHRvyB0L*A)?mhDm)#fq?2LcEk#KV9OhnJsJ0-C(=6)*r00f5&G zk=?5)!~fvTmUo;9ypWrNf9nezg6Cbd4v#EqtbsV>8>nrs6idQRHFN-RnIntNo9Iuq zzyW8G{N!cN#Qx;|8Qsbz061(TSD*Ngx y#Hsv2LJ$OjwE!Of!i*f|{9<2$E&u=lK>#_4paHAE8;k$|0YLy2LTCVL@CM@pZk9p- diff --git a/samples/h264SampleFrames/frame-0566.h264 b/samples/h264SampleFrames/frame-0566.h264 index 8084c72bbbee65eee68129e0eaa0dfa9bdf5ef83..4d6b733cf9c48da47ef574c43d6db2338c1a939e 100644 GIT binary patch delta 1753 zcmV;~1}6EG3yTha000012`~Tv0YRJK8oUL7PAC8n00aVn4huAB(X(dFnlxzHvtR$f z2a&)4Kv~NG0RYfG3=Kqaf7R)`<04{tXl4Kzw%;ka$P$cb0?#46g^hqER~)~7MPvXV z01y!(=T-o+h=(?^0096{0AQI_15J=O-tYhf0N?_YcT53)TUPmCX3hWv1B^_J}Rm`FN%ewi3o)_8R%U#?-jS;DgXk7vbN;; zfIWdxjWw+zh>Y;?00shbGTJRUm?%a6|8EcvbASQ{7_{`u$(bXu0zv@@7)s0(bKrac z0|z;Rf3XWymqbW@@4NsSfNmOwvI!)vM1?!a<$wTxfB*mp0tD7pK2!x5z(fPln}8s| zD#)KQTqOSDP`9uHlvMhbfd{G5UZ+W;0FEfI6wyEdYPJDJSecO}|NGU0mJk300{{ln zIhn7$umH&p00IDj2i`h~Pre}302v)^0>y5Qjgu*u4C1w82&5dGj0EkiEdbW!NCyUQ z0EbI|0P#7C5N8~ZfGZ$~-T@Cmb(ApCcb2&o2=D*~Foi&3;+OkkXygRP3LmTpm;eL= z>r)^ST4UG1C?EsB27FWcFKpb;vG@I88PEU(1GAN2Fug}_xBvkF&N{&pasy--Y5VF0R#UJ865w80Tet+p`K-)w@3!n4E^tC z?`TQ~Bvb_l1$S8N%^!ZhpaZ<1LtOYM)npWvh?fLo&sq0@TWCmGss{T3U-1@`9Y7U- zPXH7L0E@_3hr}?jtmt)&D=1pA5k`}}FUPPbNgOlgGPu93UF+Jkq(1-vKmY-FSbv-^ zt`R|NQE~h=@H{|LxG;_#7@|ecDL_jY6jfD=zqgmO)PMl%AO{#I<`ixkZ(U|WGjtJ7 zZ~_X0Vgg1vcr(Pr+P&@o1~;fFF?F(k(2k%2t$;%R@L~9o0E{InAfeiX5~sE!f5uUt zNNZvUNaSn6uO>G0@J#?K1HRBW5C|iOu@Z(2*nj|mzyJs+et-ahzy~AW_y7ahHUJoK zqsW&KG7nM!lRz*M2%>|5I*z<{feWc?>UwvEWEb$npaswRkO>M+MR;yPnW`Lr$cUB) z74OilA*0;m7J>^j;y?Yt;1opQKz7|;=a zr2_JN;9vmY)B+5K9SHNrmt;^W{a_i;00aZGm0&2nMsK(R42>Id|Ch?w4C)Wq0Ar;s z1reM(VTsWxhhZlGw|fG4CNI2yzyqWJ{0igxRUna-#2y*bFNs%nBB`$fdq4$%8SWjY zmk%1hfCJ#%3gsm3GA~}gJ`MYFX1cX)Lo%`Pj*oaCMJ-OQL!5{IwQY!ufhiaRImd}l z{Ljy^qZ?l`r$70?3LdHh4`Nfd+2blu9E@`toP(7}9SpLKhYe#3ZrIO%H};;q@&dZS zQ6_STBmVVx0gqBOb^hP@+#T|=35t6I{lb_bh5#1HLkW6@J$D~J%Rmt90003&0B$Du z2Co26r}OY9AJ7y)vkaJa02R>_4em1(tkC4eyAI_An0NkIph5&NJc}?r;0J67TB$NF z19%$fE_bTZ8wX*m<5u~9PrwVJGb9CFJCD!`eXd`(+duz+nt1;x;G_V@Q*j%!=L8|% zhp>t!IOJ zf!G5w^-C^wJ^xxQbqD!C|BbBEQ~j@|1QI(_@pS(GR(b)^5K3`>cW$-+?lVz(OR=zk z0Dvao{jM+xh>3tsMj#PD@-u;wPOLkaHXRWoP?}(&uv_-`-vwZjUeC z#_4zLP}-Nd|9#YVZc*+8Fa2 delta 1375 zcmV-l1)%zi4wMUj000012`~Tv0YRD|8oUL7PCx)a1PW<}7-^=OVTKxMpZ~xDoB#p= zpL75L0B{lv8%9Pon<966Fc=H25`Y7N0A#oZnNX5<0fvBXQx`t~0-yjO8~~%xf-dOr zwdyw~@EAgk8mfnnEXh_yn`7W32@Y5$`i;0MmkjM@U{job1Es-t-T*=F!6sf-I#|%- z#z1T35VEV}$2jRvfI|_bRQHW92~ofJ1mFPz<@nV6%OxoiKksbYGXMbqKmaH1fGBIi z0uCVJ+n^~aJ8+2S!Kmb4hKp+K$gNTR< za#E+T+TKtFk0LT2%H30<{{Reg4sg)TE4?KP8=6YLI59vfGJ_J&02S~*Ardb+0Z|#P z0)!LBg*QRS83b{}Fk;<%{5J;-oUNclfTtLWvvuIu;0Nwc2-}6SBhq<9ASlSfY#S0O zaDV`RKo}?S*4Dw&1g=Zo%lLr)2xLE&wBrCkKTd)l-Df4HQVR-d6wG0C5JWX*7i_~n z!cYKXa7)8tTGuh&Fb@FV@rh(}ImXpBeQAr*D8Jeo|NZSV1PcK?u8qn>>EH+;gDNd7 zVW!CzeE)->3XAXoB9=qrRqtqk5CQ|%^=~47Ye%hq`#=B?4hJH}Tt*y-x+_|{>;T+r zfsL*gg_lc#fE@yesGcX62j`LJ0;jluN;2SZLYRN+ZUdkoqSJEiaDL|URrdubw%#Hd zkwt9dfB+BycK`+ehZDq^1jTNhv!(gtrI==hl3-@Jj{1A#02~;(AbyV(z3afAE;xaI z)Pf}W&G!Iexg64SnJdfK>9@te&cqQCNv2G5-{2@8Qi9z6=aNZp|Mo`0a~y)BuS?)# z948Bi3xyyKW&?L}gQ%gmU2hh|3&0pslFH*?7%aP0h_dmCobL=LCA-K-5kmk4X3#Jq z<7(IZ@9zBe7hSbziK4K#6o0|}gbU(&%r(Nnz9BM1ysUwQPEK~1}ci^yZ| z4oHh_f7UX>Ea?wSZft#&Hug&Yw*d%43aCdxGFfN-z|?fE7@kCx5B>YVWteQrhTBtw ze}gRmP0#=U0YLz6CWr>F08pp%@FyS86hPAwVb}mO(Iy-86Oz8*c;AtZFm`{uL@4zYcyZJtm z-~Iw=1-2XCTbf3Fx8+*-hYGJ2_P%BR2HiCs|t?FqeYHEUl$A)-3}V(b6eP1%} z{?CK88gojD;7Wi100BV&If+2{rn4bg&dzVa3TCU#H?2n&#*bSye^YzN(F4h9Q*$wJTn zY2W~RK|losJb?zQZR%zfLW10c8nkN@v*fJV$PJuq#B zXl*Uy02x36nxH3(-#}OZL0m9*0Abi7Q&c2)JR@0lc251kCMux729sB0Kr|0+w10cR z06+kM1ltH~91=d%cg-8bLu0ZWok&tU;iAuq-M|0t;9wQzf=B_hx9%}*vg;fB#0Fr7 zfnX{9|tre#0(5Np6d8LU@Nnq-Nb7=DC| zgDZg!0tJyiA2oOe0*lF0Afo$8ygv*HL|fho&Hx})tNxSd*Agg zumAu7K>%(hfCjGsTBq~*_!E!p2p}Luh!zyUB)u$n2CP!np?rfzGvEWC@n;M5kP=Nr(!BNJ4ar8OA$5a!EpTM00NFPNPEdT{|*Klb2%m#2l zRCwxxSO5e7Fb+?yoGcvn!Y_AEB$8CAN~wD!e((Q(hvXJS%mI&mIB+ zbY=)xL-DV41wB{+;0#Or+&<<7bzT0qe_gbHgw-5Cm;lBq#QUXx>$>GP4djmh+8~Ng z9dC*@cMLZ2y1$$M@c;k+|NsA!hXWszkOK%K=8`~&WHP(|ee5PUijF`1l6(Mm40RO0 f%3Bo4W}o~0|DGq40R$S71RIhBCI)B#YVZc*ESmL8 delta 953 zcmV;q14jI!3aki!000012`~Tv0YRET8oULQ;7JLD0$x;SURH1dBl4dfhynlvr30GS z;SIUO2&DYJ3`GWmgTYuX3Jf3sHcZ?_G4w_75FFrAcdnyjBrub%@BtQsmtNq)M^Zo2 zAO7HUpa3ACB2WM_AD=i=rT#zn00Ec)1OdWE5a6^_Z;+RNJ)F_;VBMtiB z+`cdigag<}4B`UgJOcp0aJ3NJD1i)4)ZOMwfCs?ARfFKlU1B9C!dWb@ev&*wz zg~cO(0Fg4uW57nF(x|PY$OHfa2u~U|F61VR#uatIFeYdWFbu7)@sm0DDFc@PCg=bF z0YLz6CXfcN09vQ>`S=r$>WRBuObMO27Konn%C?{qX#PS4V&(zf8VQ{{7v8fxwanks|=z zs@ywUdi&FkDpwnCx&uKF>IuLEcWn#aA}18d$|NnpImy^K+TLx(WYVZc*)7*`G diff --git a/samples/h264SampleFrames/frame-0568.h264 b/samples/h264SampleFrames/frame-0568.h264 index dbd0eaf68f097a7db51a8a92d428da83fa8424df..502804981ca9949c8427fdd8846c933e7f1fbcc5 100644 GIT binary patch literal 1253 zcmVzq~YD?B3k6UP7)0Z2^{K5@v!WxeJF4ECz>j?(xpAch2zgOElt z0KmRZ~71ss(xwbpoRq}+Bg>@K05KZ^<(@10Du|c002M`cz(&H z?>&j5crdO!V=0yrWt^2?r2qYOMWaj$GvxHJ+2SDHel7InB0FR{m0J*>=jAoNp zKp>14Hi~H8mL~Gs0X)C1C5qU<06;{C0098tG!j3cs8XcofQ%?%H#FM_nGGfB2mlDK za6bS*03ai3P!9ME_p^{zRv4?K00V;vV87ul{l~iKnvU=p$_=Ni{eZ%kyvS657(gh$ zBAX?j4+9B!F?0bH0)oj!FpzE_&@KW%ObA0h00aOC{|Sj(4AQg${K0;Vpg?{Az$pkY z5-ysm{pqH@!|ixZ09LY4PJkQQ_y7U`2mm-Wmr0Ed5%I&|bN%zcAfQP>s&bC9@Q&I2o-<=H-b=M@Bjh=paurpL!=J=TAW*P<=fr>0fB+DB`&00z}R7g zl4dFSk%mV>TmVoA>qWs6Ja-zjJFhRy$TB;aTtO&mkRJxe1E2^JEE_8+CMqbn|APW? ze}aD%06+*T00OVHDjmx9a~D^K0AMJBf=zj?vw!YMbQcT)2LebRo<97^o}=jQNdecvdaE02(;~!-N7kXzJlm0j$s-yMx0Vl{AnNVek;pLlgh<0beoizyOEv zhCV(qLqvN`=3|HeXz&081;iAfwnB9lU0C#;I*)|k7#p}zfR)wDDzHozxQ*5#7;U|v z01yHI0R|}m8(#0003& z0B$CT2Co2Q$Mf(fAK*^|$%jWwfB`a1xhwfS2mP1C+Qa{q0W*s*6me%{SOFH1_OEl_ zd;#Ww90jrgpbLrcd-M7NhzS)JGi5P{Vgp9CANP*468H@-A zX^2Yrw59^~^DqRAW!vmCKU_`rSk-YhHRk`K|m~0^3uQo0lxn5DD}MX zCiXKcpSB@x3j?cd{;hxYPLmL&02V|A=ka0jgWw${l2{87 zF*U@LVgM6>1zf^X3kYf)^8hAL2T6bp~0lpw00Ku39`-XF4V(@S0OVfY=KujwJ{2i!s?QQ<30n2~@5C{M%AX@&J z0*4C=G%+{4#N`n@OM;BAuM&5F01yID;{g=qYWfylA%aK~Cb(dLD1?3>Lr9&ULb&cN zxBvkFKoA-sw*<~x1rC`F+$ioC1%LoR4bVse4S)cEZf?t zA$iYN2ob;tY0erHxJ_j`eLwu(_CL=)2pmIBiwJK}ossQ+;awVE1foOXFk}eC21a}V zfB=9ys0Aoln3@n4zqX43i^dK>q-mKh^}*`+1PFCN!UTntY=D`zk%9E^GKn;U3E%es z#SvxNc$uNlihF|U5B^Y@ zD123kz>{^Nz{LZ3==GAz^NrvD2n2%RU=U12634x=woCuy0}22F0SRExZ0P(BP(m`Y zKkWbjKo9T&04NVRqcap@R_3SoAppk^060j4=R(JT-n<2n0&ai+00BV&ZYG!puK;An z^YAAh;7AyZQo%2^ALyw^Xpl@dAx&J9u-OOJFH=(Ix417eDXW3zj!rRActM2`~Tv0YLyc ziKYRo$|ukiKK_N=PG|T!+#}wpMD^=DtXt6={goEJ=_@yE6bR zhJAjc92@`y0zANY^h_!k6HDeC#o0n4f`B-w<)YvKKyQQ0w%OpDv^KBWYI^I`2nSZ% zf4`sqsqHOr8It_DDlZh?0JpJOH=nPTw3&iNosS53GC(=t92(K#7z6z|Z^$15G))r1 zj`n~KeXNsv^FMnO$xZ#YpXdSJ?$CB4!WLsN5&a|WR2|&FzS{$S$S~jxW&i*IK>!s( JX@F|*2ICRU!%P4G diff --git a/samples/h264SampleFrames/frame-0569.h264 b/samples/h264SampleFrames/frame-0569.h264 index 5d631d0af3b764db41150f6983a7c4356146f270..c9b541235a07c902acb3a1da6d23a641a77a035e 100644 GIT binary patch delta 1294 zcmV+p1@Zcg3$zP=000012`~Tv0YRET8oUL8zy6#kJAexWU;}^_3MW{g2f+*|g(KDI z0${HSz&w9+M}=eBWKAfL=EwhAK{$_q@BlynFaX1%`d~i;nMs%lymepdAOH{snt)b_ z>YNI#-8T;G(wV>D0?>z72|=PPl4$jN07&N$q8croq(Mf1+f&0N7_bKID9&SpBMo%V zU{nAU+wy=I(rCp{_?y*oN$t$vAix=hF6CjazPX`q{{~>f4}e)SfdF#A z3P9(Z=Jo^Nbf}Mj9f`w7PM`bhwqg2mmCJqI|1XM)nU*s3^GvCV@BscK&ysxm+#ZN6 zNZXF&A!k_z$02cvv*2Zv{ zE4S?@g6@C9<5kh1njVu5D;@bZZ_$7NfCAKlKol@Y!v2(G7=8c6Z80|2vp3^tdJsK39wM!*53 z+yR;pegp?vXk`a_RCt!z7DX#>{n`?q6JxMPysm%n0Q=I-l;54A00JNx*a|?>tc%{q zcYpvO2Vg(~iEtcUjjCD;%O@QG06-J~ffzb}$WBT$CPr{q>q1ih*B$w=ue00Kunl`fCYe8sx$=TP{4)Mwe>wa#Pb6-8V+54VFdx5#0)6U zDd3vlzyO4x>=`>FdMd4$7H6i+#;R4dU;qEbpa2jmG5LbL0?4vhWBnq#|A3A}Q)PSO^g_+Ix_^Ci|g&;&E7%k)Wq>r3DM3yXgJhoyZ zAOB*y004k$HUJV9_z#pk_ulKl69%qu6%5#1aDxUO01cUmaY!-i z_AflFu(%YA%(hkOr>+ZpZWa_!3|M z00BV&IfBbrZyRIe?OM|Fol?a)|_qeJJS9c#IYj$I5jw60Mk;91u`9w9Y`zks6S?{ zC5ge2l*eGCHGq+<5A3PKq=-Ti5G`PU30xf5YXH86hI&^0ssUMF%Gw@$#?Q|7&kuX%;=CK zWaRY#!RE+CuU zLWKs?bGVS18xx$1wO6QbyVHmh5rETRMJ@Q*2})izW2su)|sDz(=9HolUr6b@Z*DKFtp79v)|1N^o+7e_ed=SCF>c!`*lx~Z-aSjd})L; zJHkQ?0E9;LIA>w;*7_f_pNr3A*g3>Qu^PLGr2`x{DU%rkE|u`qbX!Tzqx;prF1?>e+&yGX-o0r4eUJ?I(um?H745Z~veA6Z z@1>o#t=N7<<8Fatq70&8C9^ISLmG8sWiRgT+%&cJ9)hZHs90Y&+A`T0Jz))JF@|yv zri4ptyi0~`KZ^>FZ+O~o0Cqy7Xqn9({x&x2?&{2|D&9mq5>12yMJH~V6fjMZI zKy3uZJt{Pn;l`qWyZX#{b0iTlw-0?MhsvRypiO&yz*M&6?g3-k0S>ZK;`==l2UrFs zqjBuvy3mjT^LzyYU_Nf^w(mV+noi*yX_5D+Y!+OcDK?^XaD{VJK)?eEwg8XkEmp(~ zUO##plYx9L9LR8}$G3tE*@9MM#`%JHl{G;(kvV`hCTI-&Uk ziHC)&8my|@%Vt-;{=d(HE# z0!-}V0$hH1o9b3evs!#UraKVcMB0C(U6_Q12iqux{>o3&rShzqP?67e(a_9-c6l}5 z?|(U#r?n20GJ-+zbaB*G|Nc`;9EwPHPIUB5X#DP^4{aMGk=%jkoH%yj06J{*gb%QL zBMQu4te&GR6k?l)pS^DKOKq)0U$P%4GVB$wVROE#pMGvEI^E;&vlac;Oc_@fEmo_s k?>hoa`l3#0AHpo{l+XVq{$Cy?5&tE2%e`E{RpVd%1Gx*jwEzGB diff --git a/samples/h264SampleFrames/frame-0570.h264 b/samples/h264SampleFrames/frame-0570.h264 index 634ffda5ca78703d8ced8ec45fb4cb212b0dc321..96e814c4d727aafca073a448f649984eb5d42bcf 100644 GIT binary patch literal 1284 zcmV+f1^fB{0003AFaQ7nL7HG1yahKPOE^S$I`~7UL8n>+ic4=Ie0W$sFJPE8S)@R! z2z5B8i3DQ205fgADY(GA0099I1qbLc;sfA{?lLKMV8#sq0Y(4<0+APh0D!1GFerec zzLC5J48d)d6JDDHDV-PovR?!+-0T#gn)oIv3nWV~#4Bdw004p07+Vlf>5mb-53;~m z0gf2KOCtUsGNar3zyJ^efDSSVzM~&hRRR@Ocr*P#t42f+06H-Z`I!I!fFZsD0K!8@ zNDPe%3;yAN7{~&j0+(9?dF&Rz?*Ik|6p7{38@zl39-W){1(EKIm1Ogg^ zJpd!XVBQ}04?w)HaC446JIBR;Q?M3c;h+V1iy&BxLMfV1&;1y{0eAoi0xBUu3=mn& z`E4Kn4HN(^R={u^E!s5ZV-7|Ek-4X!4}L}fG!VM5a>f7OR?0g@CeHc`*}pa2iqfC2^$zm0)Imx$N^2ncSF1Arb9-ZV;x?8r`5Ihdm@!deOe zbPPah8SnruDuclkDiT|Wh=Ivu&tee)a^}lVzWcxc5D}mZXacxGqxW<#(#HHiw$R`J z2o+So0vQoK|I7#k3YCe*Asu3;zq9~@0=eaU-=hrki#Nak5Cjo^ti9Ou5GC7iLxRX& z2SU;7UD%%q-jIwkIKvR(UP&(lhE$$p7%M*s4lHy|ySOf=U=G!lFqRmI3$xH~qj00s)5dsTnK>ZfrmRAWQ%P1Q@M=0ztE$1TLnpsVVr8 zq4n47VomH!7O*f z26(7j=z=3pEq|FPEDp=uzrgSUj;ss~$u2xpY9R;U0kewJhK4K8h?&Hl)qoiM01-@j zVWqN^-)I9+0tRrXCWQxCaC8*<@XTPPwL%&}5^1zi9{?&0uMNnKa%R3;KfA$@00aOI z<_-kJ__D;ddN~IlU;rQn9cv^EGg%{m#VVNCCQt|6`W}@Yz7PCh03ZiU04f0F4Dq%B zVP!=C00RI(<{W~jZ~h2;kN^=RFaX1a9Z#_4rU9$YC&c)k1n3k%K$`_zH-i8>qTAs`@w12sg)-T&1B_- zzHEBF4XxyWqHBlwe+hhC;ggVX0vpeEXTAHNGb^WI{V-W~H4Hx-;3rN&SUo_`%o55C z9G(dnozlz5gDFM5a5*t5VAKG5sLsy;59>bv>>-Z{blM|K9d=fO z25|xY`$Qm3Oin}i9d7}^EkdkA$`;)^VgG-*emgnO2ngLo2`wf4)h8D7AUp_IT1&N| z-g^R?q9P#|?EJdwAqOl=0swblY+6gUk<1LP zegKhs43RKg2?tp6_cAGX00IIbMd$&BT#zk>q@ssR_s})&L1w@^XQ*7C-x7B>I||86*U)Vk}P;{3ySPe01!d|0R>LWAOIjB1&7&w9{>PA00siCB~0W4 zzQr)4v;*O8R)`P?1;;%MX%_`G$M5R^6&wHr2r~@;g}?x21h+SR;9x|A5D6}dplCLT z_{Ua28Mpue00096l#l=r2zjgk3S+QN8uVuW*a5&1M0ocSIvAzx`+#5os&EVyFY`OZ zmB`Mf|M#&@A3zDB&_`_w%{Q0;zy@G2UYnx*%nX=6ufQKbF#{Y>25kbk(+bvxZeRc) z3R(aR0Kf%9zmu;fyB7Hzl6Rnf(iLZa13wn<30a#7#J9*usK0w?s5!29N;HTL0BUw96FdK zlp20~5-~fer{qA&Q?ITECM8UH03NC{qr^7Xo1KJ7NHcDL trA?WK|Hwb4BVuuzZ3%?0cuoHd1>YK@e@nm!s(YJh6+2IC9usAd2F diff --git a/samples/h264SampleFrames/frame-0571.h264 b/samples/h264SampleFrames/frame-0571.h264 index 3991a8bff6526451326c3627629a4cd457f7273c..ea52588f581fdbd86171ef899ecb11333b4bc07f 100644 GIT binary patch literal 1804 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 diff --git a/samples/h264SampleFrames/frame-0573.h264 b/samples/h264SampleFrames/frame-0573.h264 index b35fbce30c1135739f8e2d7c8a7185bc4e82f651..42ff8d08ac6b13ee1d351e4c0160852854b9b892 100644 GIT binary patch literal 1260 zcmVhi+h%Q#s;GPbAX*YpmsdxC_KZv1f9_BK z7ywaLvz!^GB}H2P(qpYCpbrC08Hv%qefEIormSEdC5!@l#Iai#00;<>-~b>T27*WQ z6$;dx@DPg#F4mcQr$S0ldH@0|U*HS?98i@`r4HR=UwbkRUA2G$0|;ab?iAnLd##D8 z@H3PXO-c6wgtM5vdH@4q0HZvLY?eQd0||5~bb%EDqRB-lkZvH%l@?(qaH*Jn00aXE z^uJ#0NQty|?O(z80A(9+k*=D`Y=(k)25uLGQ2 z3MASt7Ur4)1k8y50zUSYBt!P!Y?%j<()Ib)(l&a$KBsT~UzpL%?jvyzQ`CU`WDE+RAV9JKqN0*wqI-B? zPB1Y+5k9{FWC*QBE?NWZO;qF-1T5YEwMPX$$IgvtK~V5FSY9#!6uVZZ-q00IDD3M$hw)UHYRpnI?Y z03fIQFm1Ku*Ps6XessG3GE^Gv?qB!R`r470eh33G0OPbKdW1ZvE77l@IZhBOmX5OG zJ!Anhg8?4Y41;^s=2{F2Gs0g2#P9_}D?<8zvgy6a-FN^30^$r%V*~~w9GLgv7KZ>` z;{X_T`+#viVxTn{Ah-XlBq`snJ25YV{}=!|z#o9^5yJch1kx0M009L!bEQB2{38GX z0DveY$T#5;cjju=X@d>`hhP8z0YLz6Ca?yt0C+F}00BV&If<+RtH6Ap&*$JyKbOGL z2NJOdNN`(#4tG_#b)X1U-M{7mXuuI7E#Lqu}7>k>fC+9s@KelK10*w(EFP1R)wHO1Rj12-%jfB?jSu z7Oz95fxO zG)g{y|C$eYA%*6|o9obQS3M_L&F#Ft8kSKejoT3;>%U?QK46tY-xP*D$z{jh7^=)Q zR)2BNAF7EG6yT8&qhf=E1Nc^y1-LS*5EE=TSsRi_I0?)QAaxRP@FgRA6t>ZccAL5U zSi1jilmGxve)S#0{jGcrZ1bdSz(PBIQSt$diDDofL1z0um+>M3h;sV0-jI-lvvaTqN3ExL5P~&@AWw2`!Ii2oDhB zf@dv)XH1696n6$S0N+6n!mu9Ro|714{_qEYpm9yU6nN2qUvNz&pFsog13*>iqQgjI z{9U^P1uOszIKZbBLzVXjwoNm{00;n3y0;&JD;a*dcmP@l{{T=B6ors^_ef^+=Bd!8A<1s*2Fsg05n5*4@%9e|a|d&*zX5OH9nQ~(n~Q~b%VUB9qS z3JT|Z^vg%0G<)=fUj$xblG9y{Y%C(@keGkw_cJ3yAfzWb=-~n=0S!2TVM~P8Q>fAZ zz=QBW;u>^dLwa=VPiyxI=+gKl5+4bJAVwfEGvEvW1OeSZDI(3x(15l5v{(#WVB`wx zI~xP67yB zH9=GDi|+%(hzy_}XcrX9}0YLyciLe2yzKygY44&O{wWE^R}&H%#R&J>}qyiuKaeDB~UpfG{#3?Oe5 zCIDp`Jr?@rgj9eK3-Q6vpTrX;(0r7s-rKaQSwxyPEGCh`-tYj2surw!sjTtC8009710NPLqygFWl1a$ae^lnKekQ0~~KYwEM@fH9~g$bfYPzxIDG;zR`y z<`KXKJzMJ_0O*ja^DYQJtZ(bpIhZlA^b#-yKL8nqjZcE0XtgZ{B5VGy_{up~sRDoJ hXQ6U~F5FM>GG%?BIbVQbU;qFCK>!s(YyfKT2IH)6)-M16 diff --git a/samples/h264SampleFrames/frame-0574.h264 b/samples/h264SampleFrames/frame-0574.h264 index 51e7a2a4b1798e2fef4fb05efc53f65428b4bf31..271ea7d01f2c845b8cae35aaa3ee6e8b99fd6924 100644 GIT binary patch literal 1668 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 literal 1816 zcmV+z2j}e0=~EK00adA2k%CJ>}gRhYD^s?9DEpah&o6LmB^+wp&wy}kN_YA0HvTJTyglZ zu~b#dVh%$L)8ly2mk)sh2CVWuO+|=3^iOYmjc=E&|Nr_3W6rv+`X06X5+DH%s^f!1 z;EvC~{0|5P0}eSdow|>rZv@30fA0VY-~+%8bSkwp3P8lSZGZ-E2M{0-3O^(BEo~Ei zcuB#AFly6<#M;MlC;z(N=mZ##IHm}^W|U?ByfuRJ4}b+UmNoeie%+uPvVkBb3`QID zz9#50aJa$10cd3-Wn5lnKj09l0gsW3rF%aDpaGzEAY#c)7ftU`%uz(#OuwIn86G~xB-+xW=UqowPPILfl5PjpE#@F0t5&kLo;BL#L*GI z--Gfa00^vtgER4pRcDH0IbRU~A{&%Y;Rq?kf3$<(Ck_I&J6P;n>8Jnx_OPJHGB;h; zzX4=4YlcBcm#^Od93s3-VcO5`phyUef0U?vCguNd;BM2RYl^e~@MVs$048|^j#Xkg z?Kf}fa<|}WtZXVghMuni%i*ZN*cbu06amo43KkNe`Wt+0bO>A%8 z004lvD*^(PR?E55oYr<^G}dSV!UyV>gO>&cBme>c0s#OlBpgIQQ<9ZEhSt)6EO`-- z_Ezeh7x(~Um~)1PYhCF$T-?%E^}&h(QIr^__yE6w`3RMH$P0+ASP*!;$d+h2LXbxs zQwA-o-{H78WaVuFBn3FcRhzE{#{fTact+eUksg!EApu546JXepON0Od0Kq?wwzdG2 zU)VW=aBvO+KZY{N5V}QP>jEegCqWJX2*SVvdeDFbjffYcq`a_vGY(jf@%KK#b)F)} z5MrPQq!-3CGyy!_h6ezFA1g2k-l9H;=&)=4@DL2kC<`J4F~0u<(iu{IGGHtPtFghr zQ)IO-iVO<|MhlB$J{SQ>mH|ZoNXz*Q!tTKhr+@&!;}EPJEm07YE8zqHoy!0KZ~$-^ zBL3V4U=h*`RAnEtP@BlCgSfF!Z-(-Oq z#G-Eg0385E^SID@4`X7LqZ?y@Ar2VCI8kRBvI~3gY3OMS2S>MfBKAG?Ks#l|O&U&@ z;LJ!h78ei|3KRTeI1c~UfqztX);#a40`r1AOA}G{-*^KQ!(9}#j(P8pg~s#2u;3rb zUc(g3iuW;ATO6DQxI(Ie#krppUGe-2hyws|G{m%(pZmXn5z?e_M^PkEqyPQ^Lm}Lc zx-OP~{=jd#Eshmfmv)$B7ns;VtZ7~TtxR$}MI#@-s=}^t@c|ZepR?Wo0D!n*MuQw6 zC1=_Y&S@Yd3L>jw0iYW}z{?GHCDyd^VU(6;1SdTyATSQbmJ~!5{!zq&6{|s`lerzh z2!MXvWs*g>(r`e@dmV*@u}AmrGODUyxPb5tRG_y%wd9gZ|NWy(B`~svptQaQFrb_+ zATBZhvGM=)C!m4%T|@?%@CFp6vaq-Y3og}SEj+}9IdO!!9;?tzvd*_7LAaF6gX1l<4t z0YLz6CfEkA0C+F}00BV&If=FbtH3jd;7>oF;B5nlu$Bnk15pEi)%Cx|BD&^Z~j03^gsn0 zE;TRz{P;Nh5lirkT>VB8PRV1x+zy@lN^<}IkMRS+N-|@!e1Gy7N)7ABmg5Kb@yn7$ z6M)fMH2x)F8}8*a2b~mnKmP(k6Q*X7mkXqSeb7LhJvBnsc76cFCS>0{R!;af1fDuv zI6W`{fhju(9BTlYcwf-Kw2=S@0(#vb`21W*_WAqTe)#v%uf&m}FZ=%o(XPGT?)|a6 zZ+28M`0zm@U3Kv6Z(u9V+&C&3{!a_)=pq<)Wp0RifmmVhEMM-5X|6q`m_m%4v& z1P9Af&^)#R*fBP$YPTQX_-T62|NWB;Wu50YLy2LT!L* G@CM`6XfR9w diff --git a/samples/h264SampleFrames/frame-0577.h264 b/samples/h264SampleFrames/frame-0577.h264 index 68f8864845c7cd6a50e466f9901f5a26f26bf916..7d1ba2470df0b68c2293c9cecd98c577074e5945 100644 GIT binary patch literal 2944 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 literal 1150 zcmV-^1cCbi0003AFaQ7nL7Si&yajI{OAMi(Ux~IFL}!o9Qh7#(Bro8gb|eZzBf`P_ z01$v+-9S&uc0gu{5n4(B0Wu+!tTQpBt&VSi3VhD+$brcUbfFm#fe>6PcG%>#xDP7zmzDwry9=8 zfCA%)3!@=Nu!7U5T?L757(gk_XeeHDvy_EkZXvt?0RRAL4>+R3j8_gBFcq~=;een3 zDnKQN~IME7#_dDln8hMZREGY=%1S6GqK^E z0mPj$bSqSk9T2b{GXXrmpdjMGNT>id5|+kEdhPfLLWgU7VkD!}c4hSlz8I*2ddp@t zu(69+k01HH+a`v`89B{I2qJ)D%5agZ4mTvW|NL7v_(9G%S>R8LEcjNZV2Ao&1foOX zFk}eC21a}X00Xjs#0W1EhJo>l>F^KoB{oeqB8Big|gc4=r#okT_Q^1IM za^fH0X9U8|6!}Ptj3%%s```c!phFFLAPWSvBeXpnfIH$VUY0YLz6Cg=vQ0C+F}00BV& zIf=RftH2TI{QiCf#(gXouie8j#!YF{w=~b^p%@t=)0|Wo}c|;cNH?Au>TY z*^$@W)c)WY>`4tN? zt*~Li4KAYqFwQ0Zol=ySoxqv>gdH!X01O99WqBOpS{kF7l3>bHfmop&?vAHfih|9eV%|#JS(_SLIGe2 zg)NvuqP&OFIO=;~Ijg|TDE3!B)4-?ZrjwuVg4@U)g7e3>zk6eURN#@~T3k_=^;w&X zJ_wKpRdPu^jAr zy#fy+W|j{(PVunZxe;)P<^(t$d|vnK-QWYqFC#0%gm+i08?U-aYM*%FArXkk{0s;% Q0003&02M-RfNJmt;}kOS2mk;8 diff --git a/samples/h264SampleFrames/frame-0579.h264 b/samples/h264SampleFrames/frame-0579.h264 index 0d9926173dadb4992b05e39098804d96918f8076..71248f514bc39251799df963ea7b614c71186878 100644 GIT binary patch delta 1132 zcmV-y1e5!z2>%Fw000012`~Tv0YREz8oUKJL1Nd`^yh{1aq7{S27?#?B0-rzU^M-+ zQR87=^=l0<04M?sRfFM`C&ukz82|wRNnim)#KGPGC6|y41G;X8i-y!L&+3c=0fHbp zF`t#v1YH5e7<3Vx2$KSe1aJ61;|_);=n$J~V~nHVa{6O`DrWxwGj=} zdZA_?eUAoA5YPcVS~aLxB0bwyFaQJrzyLsi00a%d6inbC0-gXlK`cMIyF&5liBA9} zh2dDO+rRIv=3)LSR+QgM;-aQyj3!*@EC735x_s{Q_=PJt06H#j2B63P?I6@Zm+?!Y z*Bp04bQlzW;6NcP4S6MXS8`mz@BPLAE(g0xmB+y;8*0!12m&sE6!gK}e|w0*0)AZy zO~w%}OaH+Ckg$Qm)ze}ALHryRpq%#e@Rx_>fCDB&Oj36;u~a`&1ltfW2Y|lQWEs1L1jmWy;ukaj6Tkrw z1jYdag6|P_ZeTMfp22Vg@Bl#06!K;y@=3UOVrH95azL2qntm1oN zl0^{%hnoZrDJZvX&5B&C2FY@?>0k2N|E zl|hid10Pg*e4mYjBtHsv2!RZAl;>aB|E<5wNMIaMyHZBX7<7g#H4m7G$N%EG004kW zHUK0guoozCkG+Q8XP7l9N<6R<9RL78W&~8gbR$<|z9SGrzyY%{E_M*r_Xt<(L^SMw z`ONOm4#WjF3;;hUz+G6vrs4Pxz!2;J00BV&ZYG!puK;*30003&06B@K0jt0ias2*% z1mpY7Lok#H*qfZim7&$`9 zfh!{?1n$B`?ScOAzkXN?v3+ln>C^vz@I8i>{Vca1?%*Qrv3YVE{yn+Lzd;0}PH1d~^+0Awx5gB))s4tb4UL>;!FlK})J2LJ#50LWk+(e6Y5 delta 1050 zcmV+#1m*kx2&o8v000012`~Tv0YRI<8oUL8{MR>d3_pzv00IaCH9*s-K$cYiqX0D~ zid+O!X8;7C8BHD{2G9t9?EqjqbPN~Jo&#OQlv*$Sz+^qZ1LzIiM1CA|B7g5rgJ2HD z!b$_ecQv+sP9cxAh*7}yQ{}|REld2r0R|%h2SSSg2SEpa;7x2#jv^)MX}|);FcPW( z=Yn=sC+2h2?=T3Qb&w%SPd{Uo{|r`=dJJIRu7LwwAr4G88&hNW(KondOkjNgurvj1*ap*Es zAY9Ysi z3NJN^>*4>s8@MX`^6fs{#dts%L^B5g(|;qXFgOzco1g(00U;D5UQGGrkr%(f{`SqY zHpkugegFsq9e{j9O#_4 zyaB7g6mk6iegxzE4OX*tQjfe;00=;|uyiVU1e^L;J6rqr_TBpOz}&)J{M9=@_t#)axAX1go_~7FEwH?( zhX0TgPYUWtu^~VLBkfu<&Q!c=BLfINg}R(G_uyfY#{e%_XRkalHaOoGdN0-9GvK@| z5;ZXqZ@>70dTGPSbA3+wf8E7W>_~rq)A4~zPx1)bEhKCi5P*bLInGo_aUI}5fB*mi zK>!s(ZvblX=no)k1GpMOVPFB7){ae9ca)^UGVcd|Xzx$Yzy-RIX`u^a3(bfs`~K2# zaV$rw0nrtuf#f8X9}yZ@(V#GgOn$VDWBg74fd`BE1R9fY1PccL|Nj7FFdA~YH2?qr diff --git a/samples/h264SampleFrames/frame-0580.h264 b/samples/h264SampleFrames/frame-0580.h264 index 818fccc76230d33ee41c8b6648ce6426466c7cb9..9fa5d77f50775ac78dfc6cdb8063b86a5b14a0db 100644 GIT binary patch delta 1325 zcmV+|1=9M`2&aUiPDMVW>^S+ih42Ao#-3D1_6pGC^1g6W#2(-@BkD6&Uxe%vOy~{LmuGX z${+hG7yyWj|Ni#K00@=>1DZS-;qeorwaak8GavyC0Cu+r?|@zo@BxCD(8N$Xu@W%Q z*77ex+ejAtLo9ND59u}F?GTrHrW7eK@Yp`QQ>oPZR616?HcehLh>CY5YLVD&d|-EH@P z03a7YF(4JEsxMZ@=}pDX7~D7j0t3-8069}{e`^8{>o1WOuG8Pz07C_0$oakMBT9LE z004jiilj=t$T6a6|7d`~6lF_|Lyb3HV0!z~AcRK{M=<6PLV?47aKp24;SU)%qD6?P zEDET9iT?J00FvAf%MmpF|Fw<37-<58ctq37%K#U^2DZ2YfdGQ}(uos;w=*CB5HtV* z1f*U70D*u7oahW6at()~%jfJ-iXog`h`gEf*{&<9Y#8v_{%F9)@ZTpVIFQ)zX2lU7 zd;^W{pa3C?AA#I$FT3U$J-PD_F(4gj;)08Ri+_GjRB;W9P@xY|M~P`K{|CST2nPX% zt-c8r-ibdZk{$N|Mg$b3;L?g$Gk@=I>tE(d3j?yk@2`R23NmmgDLm{uP7)BhHpy3|*6j&sW03bzw zcur2EL`~OC^6+c`3}-M%(hpa!o1crX9}0YLzNIf^K3Kd21le|8H3aKOhi}@2r?WnlS-EfEb;~Bh7}=T><F(1Ep48akV$kq7={q(*9Bn~-=iQv|MPpPKg z_k+MSlILYX|F9nD8B$)Bz5R56kTlMZMY>ig9l-to00BV&6+&tNYVqQHz6X#t@mP?c z3j-;JS9k|fAz}~?8+z{(0bfJ*gb-$M5imKa$+c?t?T{Hn-~jGFF*^#Z^>6dN009B+ zDiAsb7Ubg{Fd?K5TLX(h42T2+zx(%-aRV2VfCC7VfCC4A;R#MYaaw@?eSjKjk)fU- zBmXuYw_Sn1pMkqwySjhO$s^|3isDgQ&XHQ~(M>004kW06pse%HpU#3bS9l5BB?j8(+yco_IoKp~_YN j>NP2~D)IFOcRy%3;arn31Rj$;1QL@y1QG?G&%hRp%t|>? literal 1106 zcmZQzU|{4l01}R~A4u(ComkJocw2})(b1z&O@Xr+3a72e)|z?figm}}y8Uz1<5#WxqtuD7kjbGen0rX?gP)ES{eULx#L?Hq?qoon#egUnQJCt>kuH{euuGP!QqU# zTR18tA|fX-|K$)6FuoRiS!mwkRcg)#W$% z$JvW*gez3?C<)^-9E2>wW zU%~T`p`c~s)tcw;%day0p1@E(fq{jIgJoqo^CA}O|Gy7%I3CyT;_z&@n9RYT_5zfe z81mG9u&rmP04FU5%g%j_s}G3%{PVAl?EKXW zF3xjMWN!CmbTwiUVCFAkiQZy%^n(0>OG=`1JCMh!@GPnPI@PR8^%xFPB!|Mg9 zzEyVr|9voFn;Cg@SD5zv4e|%Tt`&94Z^-)isFv{w??xvl2kwJsvhC_w-voBFDe!T} zpZl1?sLTGbk#Vz$1mm%ZCvHaV73O@ypODGx(z<}*&)^&R*ePPa-$nlY_KJaQn{SVgJ?{+VE@m=z8kJhgT z=1)&MbLRis!@qU6!lB3aH-D>KD5HGv-v^a^bFM~X{)ux`f9Lu9`;nEv!yQ+K{@*6S!~QMq9OI<>N%ODo5jb&0v)stghzUy+7f3OEEBZ Q>h0&BfBu;Q21Aqq02CYtQvd(} diff --git a/samples/h264SampleFrames/frame-0581.h264 b/samples/h264SampleFrames/frame-0581.h264 index c49f44f04a6303d28dac8a78ea6e38dceca731c4..966545c57398db3b78e63a333105c2c03663ac6c 100644 GIT binary patch delta 1586 zcmV-22F>}x4Eqg#000012`~Tv0YRFe8oUKJL1S0cl<Q3_w&d1_L5{(B#2A3_#n!00;({Bm$!^vq+bcgunjxvom3rx!k34*|z!1(R>6@ zQm>$bf#bBeJT>6_03!jz%EF4=g`cy1Ofzjuaf|C$Eq8VCT8Ta2i{5D*o^$gT5`L>w?megd&e(0G8M zh=h>Q=z{*#?6zc#(Eu0(&`Zbf>NZA+oFI#Wxq@vJ73AyxFIwOBfCv_ijyxh|)^neK z{k#Ae-oT|>J9`t*Ugd;;1B=<(`*1RK$FOr5Ht@|0!;wGNG6I7 zgz9?n+5|48uc_(F_)yqdDDVJdWDy*Hb>BHnT0Q{5gppfvp#)KfdQ3{<8TF3<-``)D zv&KKrlXw6E0p~mbNwbAci0f?EfB+B;X21eWE$|yjAou=`x4;71%K(sE011OvI0}Yr zZTNcj*x#wtr6@5NjIhW*Vj@t^00|ioXr?IQxtx(`H}gr9_N}O9QXd#xd%)6vDSCMB zW1P?b`tv3>d{cH62ucGF7@Mwd{{P!zBRC{r3{|#M|1$r#(9w-A%H99z04RE>3^j>P zpI?lvU~#_4s*}nCP=9KG zYVd%cKp;TEAZXyUJcs50B7M1AN1(;(Blr9NHVu0U2Q{y)qC!mBFqt~V z;3nGVIOOa}#F|B?da?h{fap7IsUYDU-`az9K!#nfv9iI+oFrw5W$o_)Fi5M25V6Ys z3kZ|Z1Q(Ow1PGJh1P5=z2Zi)wMX$_&5;{sIC8z59d)w#DHHV1_Ke?(j>FAoTiE z!k*tjzTaIRRfF7|Dl|M(>ET^M2w0G_z%~GMAs`$btv-bEFC{4 zw0w6^SoNHUrBI&#US{TPq#|@9PYaV_1vir)1`J;OB7_LU1u%AM!sTawC(#oJLVyFl z<>D-1`viEZNK^wfR(fBte-XshEc(p?wBs55+718$OGp4u3LOB1+>cj4WRtrWrj-|Z kv;%ptGYo$G4|X=Od*8S88#m89PLmM^Et78r76ZT(3}$w;!vFvP delta 1394 zcmV-&1&#Xq4Z;k6000012`~Tv0YRDo8oUL7PCx)a0tYzr&OGCfIP=at@8AKz0yqbl z2P6>@SI0<(fBCLXD>32>R1yFO00aTxXj7osq- zYEsQ*DgXWq05fm-UntMRdn~W-&bb9BaiUyi{ekN6ecgU%6sj69wIOTZ0stYDXC4XM z_Dn?t1{N^cjB<=o%60dE03Z?>#sS@6CQmjdc>+Oyz%%Irz>f)ZlZQrMrDNX!AOIi? z9ab2+BKSqDl*XbS@6)F>JOE{2gzHHGA1iDZKx;rSC|G3$J&sKr06Yl+ThTdcA+Z z03ZN=4-+jAZw?3(UJ{tF0B{%?0=n8#Iz(Wh`I#sGx?ltdp3=n0ovfvw|IH%#Fva>L z01yBeLM0PI+m?{lF!%sC02mPD>Ts6#3fFi4|ASJ3ug@;hmex6@%pY(lyw)nOr~c3Y zi~x{|5-%ov^2m$d?+^eWm34#JwPjST5BRr#ne2U6^D>HW*(asH@Q?rA00;vefNVrf zTh^c`Dm}-q<~!Qdz#Qi9$6=aNY;|Mo`0QVNEvuS?#_4 zpp%dUP=9CuYVd%cKp;TEAZXyU61F=D01c~tmAO!*Ob68goA@)xu!r323sQk(@Eix> zQ0|4Md@qgniXfviZUk}g34{^H#D886!VxhC@2oS6wp&em|L3-y0l%ID{n!IbETsWp z{cA{x1dvRfR{Ow=+UGQBKmYiXi6t8&T-Cq+|0xZ?2HxDo16x6vr#jE@VpnCgi|_yu z&IvtZ-9Me+4nZQWFd^X#{!I##fdwRQ|Np`Vg>-VU0z!a~HGmuV2nrb2?*ul*NX7_a zOaIRB9mgvV56M%)H1~H{{@(!lmUf&kMu(YC3hEF-#D%a8fE^j&2oBchA`Y896HUpm z53+rhM++hd-Oic?X~GrgJyijc+CTzmL2v}y zxQ|2NJd?W@w5YFlt3d1$12CuW#m1z5>};C3zY*^N5P9NrlQ9M+lg|bm1bzUZU|+pv A&;S4c diff --git a/samples/h264SampleFrames/frame-0582.h264 b/samples/h264SampleFrames/frame-0582.h264 index f52335142e513b363cc94dac318b016afba25034..76e74f395d3cd7003e167fc01500654921414b68 100644 GIT binary patch literal 1383 zcmbtT`%hB`82#>TX)Dt5ut))gmN&|zRgsELZYy9J7K$hgoumruiXE&(GpGc)K*ge! z$7G^R*IG9pL#;1hxF%j6A|XaQAM-)xN=0hst2m~pg*)e8u*~zr$w|)n;e20m005cB ze@CKLBEaI7=)=C_F*I*VMN>AuOjiy_P3m;WnK9rd=)GNgXVyf@)|B3*2sez~X3alr z_{1q@zHs?#<$7<_C|^Jz02mda^2Q(CAq%?qqS483o&39XUI9f*+jH#MQ%)S=02Rg& zkvQio1~>Xf25EyTyG_2YE#oB(eymY->n z%fvyEDv~y5V6fr--44Z-O+Ov_w!(&vHS^F@B9nAsu@yx;Sb`e(r6-N$-|+Xj>we)+ zE4x?1eu(-Gh_d-6&svqRFg-jIpgIZ|d=nq2Y-0A(MUdxrkJDX@5rFA|N-t;P)a9EK zf{p%eWuAfYyh^XgtT{Tdj1X3gH4n1$@iR`oR7E_6l)l?`-Z9QHd;3O9@mgZT{0&q0 z{VJq6z8GgB?08I$`{yFZWNOAhdC4K;ZXJhwl*)&d`hu?)*LY5z&$SXW`DYs?sa?$E zsh}+)C3k~Mug%Vy?H=Er$I)0Ww$&~X8Ou;@pMaAxJ)zbz&rHZ2)!5E&MvkZB4`jPp zIIl*o1r}?1p%+sq)+VJy&xx{vfBhy64tX+?c`^-m1f^ zOvVt;AbQnQWD)hxaoS-=3G|dcU@3#eu>rNnTgnymO6->N$eZ?x+L{GgL` zNpj-~HS{qhO>`kY{c`#N5&kicx@AVsYu8j|qT!n3um3H!c_%*MvXP@!J=*2S-nYl3 ztBN0avsUNlIzPlX-hjsTHb^LQl`lFE?(GtgDddn?inMGF^?rkaIju6=@%F|1@UCg) zKlh$A_^wtM`xV6Io~{pXL8%AMb63e!Fc{Qu<(<&-VL4Fw z$S~@G;Rogg433j}tR&}g>LpD7e^{sQYI!|Vy!>1*rkK3mr4Br<{rkKbrx+?QaFy6a z*7qM)*rCe6#LU3NQ6t@C*qXW{pytEDFeabBp$`>evX`;67O)t!>F9>=YcMVNbT6to z@^v)>BZKa<0EPmd1-lQf3=XNPe3#bYaOeSp!~0JH3eMB)4r==y$Vi@E-lN3j?U<$6 z63r$3!o$G*h@_9wo=HK6XGH3KXw763xS0FZiOcNPJZ6?Krc;}QG}iw7&GhMgg|Xw) zR|^GZ7bnI4|H2HkN_mFB4&{SSblv7DE?{tQSk|TT==r%-9+^sCUs^CENF*zoroU=g z&X=Ca^6&mV1__DhO@Rk4=WBCR?8<$6Zv%sX-lQ80Obm*JQtufQL^2&&=IyPDvGsZQ zWzX*eF?9?RcDL+%$5Stx9rNL)Jde4Uf<>2H@LDsTQ)!y7{8j!psJ#G1GDDtP2itmv z3UG`wSavRATzx>Y^Uojo17KNEr;LWI4;}LplpHo`cx;$1$-vEb`T)Zl>zv#jOE2es z^Ul*#QM^{jX4CBKrd4Mj_54Zn%6SEWub6y`_;2THxC^ZFpBonUpBV6=^Y7*+j|r2R z87kIn+|puEe7}mbvrW;?GQ6#VAx@S_ke$nE|NqD0*N^A_|1n|Fck{f)+5Z*PmmBl{ z_}FV{#ICP=jLAy#Va&gJ`}yaefByN0YzD{tZvtG5LR%b~<1Zi8xpG9R>ejFInr0db zvL7Gss_M2gal6x=H;KW~cFC9esBa=S{x9Up;S<4 diff --git a/samples/h264SampleFrames/frame-0583.h264 b/samples/h264SampleFrames/frame-0583.h264 index 9aca6f4455ef08a7ddc08bef7f79c82abdb8ee93..ab743fae74f85474f68dd1e77f08819b67861ea6 100644 GIT binary patch literal 1440 zcmV;R1z-9A0003AFaQ7nL7LziyagW;6vOD3RJ;I|DS$k8HKGsD24DOl0w7m_1BVQN z2nh`T4}+w~wsuYc1j;5f&ZH%AQRDzHah#(fKFYbpU*faEFOfcQ1Ar+B{12Ud7_7FE zU{KF$FDC9^1;h}*l2CF8#z06cru-@6BkFGq77Z5QS#SCf5vqD=*P#pwPqJ_>MtpVS zaq8FofB=9QVE_O?5F|fj()XT)5cn8(8Yz^^6+yv2lcw`f00;^Jan=A9KhlQa4hz6B zZ~KrqaDY3Mj;;Xk1IeLNgAYIm9UvgSQg&bueh0!B1IGQ}5DY9CCS>ON$+Lt~W(OeP z0G9v)lmT5y)&X;XOAyT_u7H9#U05xneps7|Yy@sEu*b%&Og3HU`SBtb^~AAT z7yt+ekl+9y90r0%^c4!!obV8h3@YZEW9Gw2dO`pKD^&hBfFJ-65w$1=A_F|^n zZXnE+7GWoFshR%(1Oo^3ygK*dL`|c&YD4e<$`g2zuA0hhhJslJt`~&kwUUBQ8`fR` z0)P$=E{Y@sJtBdVo0RwkzyRtD%oJk_nOB5D8qjb7EC3fA6#~!-qy6`a009680096Z zO#l=}&jC_l4y)V%FaS{|(Qvmk&=4kQNB|P|wc!qf)hHj&GoZup00aR-2DSenAWN$T z(W@DwZ~y`TBM;9ap}RNCQAfXH*2$3aIv&0{+K=7g+MU1oer6{jTt(LsrLh6<#BeGA zp#s6OqLNagdyn`qAa+r}Fgnmz_)ZvtX3S#vY6oA*#K@IcSW05hfIy#c7y1AHAB_cM z+Rh(DpV9qRO5Ms?iCd9|mBg zoYfvx-jHFx|7ZXL0ALC#(>CO;N!Xx!w~>&F%44BK^{c}U7&hAU*Ps6XezpE&s4zQw zzWwm^wMO&&5C&oa#^_A-2zgLnqd!1$oFG>%9c83?*aBw;0zJqX2KTefv>6lUfnNf| z@Ct@jh4k-b(|d!s@Bjn_#2BE)2n z=PLL=@qh#_4t^upS8;k$|0YLy2LTi9(@Q|Mq;&>B}0pbE!=z2{?so#C%{30WMET-3~)bSV|C!S|9TFZ$1a)%sg zZbc+XCdoelLkZh?{(}^!lcJducqcdj$iBee>3o#OcmM_vppdE@Hj)<5yK;T|fWbkl zl}6 z4*)(v*x~+j;!FE~?BD0Y5&*jQR9@6@sLa2$q^C ziVQpe0RZs&Kq5UHlaGkd7v(pALCF9RC9EDrkXn;xJcCyN2HyYxfP;YfU&n)Ek120Z zf+`_`yt9@`ga8wC0003&0B$Cb2Co2kFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM@Q|Mq z;&>B}wRmickO$2UrD#`4#|FyaM=1egI5yaig4JGE1QWIk_-mL$!-MLzM6bU)#x+z2_x2ya6J)LL*3SR{ diff --git a/samples/h264SampleFrames/frame-0584.h264 b/samples/h264SampleFrames/frame-0584.h264 index fe95098f578ade531f7e22f3ad9b03496d6a7328..d2d11df768e0b610548944ef8a82bdc063d97701 100644 GIT binary patch literal 1534 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 diff --git a/samples/h264SampleFrames/frame-0585.h264 b/samples/h264SampleFrames/frame-0585.h264 index 51fcae3da5db8d4e4cbbfe43872ffd53b51d0779..709155acae5bb0828394bd15e032f3ac54079c2e 100644 GIT binary patch literal 1537 zcmV+c2LAZ~0003AFaQ7nL7N~NyagvHKzKgr;=!ed%DAo&uzlTmj#_*n!|>f6g)}^> z6$yogEk?MmHc=Y5H^Zz9Oeoh8&B|986I7oe_+c+aJV+x5h~NR3+j>c~84>s|zyJ^t z08oB|UVMBIU&2Q(%ostS03I*^5EO{K00ad=;lVToHT13EFk%I=SVd}Ukfv~7`pJ9{ z!*j4whJ6Ad@UFH`h*u5${|<_ZQ2|xxoQpG5X_9Ak_ z|G)u(MIw1s2Jay^2ZGsjFIF4j`8mQP!PmkaIt@C|98z0(6XCtg9`j`$K#>#096Ovqs&C%tYkj05LX#uhhY6_V0!ceQ1;i7;7)ocQQXy2&So`f8R0LuLF zIv+z4z~G+h!OI8$5I&L0r9SWi1;B1)4iFPf)hhZ|-~gCV@kpV&%bN8{r-}pp7P2{$ zG5`S&Z@dP!xH-Yj)o}#fI0{H`?)g^}_doy$0Q)ciFeoNV8)G6@gsK1}srhI{}8$51pGO0h+Giwa(uPq-5hA0}^2T1lP&0D!Lm zF`x!;rNa1lIpW$(C}TKS00IWpFaT3=7kl%7AS|t-bqz{7hA;o#0fEYSpEi|I$q=hP z004kc%k_2s!q8B%HsC=)#>&IUVf$^XRT!Aa-@pqc@P(7b{7aqwg42;oP`39zxHulEHUC*!;) za3UH8SOV}UxWFxP@_FFIxU7JHod*@`kg)U>I?#DWu~7vCIB}%&AV4{Lf&@HX|27V) za*+}uK7M`x0Dxcy1z}Yz6*HNBuFw(=gYk&~R;P>(IuJvS#4I?2A!-y5PZVXh694di z004lH3=5u(G0n001C!4;4Fq@I%o60%;5YFyTj3E+A-lacuxYumAu7K>%(h z$Of+fcrX9}0YLyciLwE!z#EJJ00BV&6+&!)YVa0^_y{m8n05d@-EK(V_yuQZ3WLhT zAO0{AAXgSZ2dZ@~pyb4|)Qv?|r`9N^|MemO0=xqUJz$lu|3AUBfZR_aNECnja0)1* z{3fpXKLu5YF+x3(b1O4Mf8BT!PxGO{C;?NxyBzoSXo}r-y54CIDT_klF< zu3x^y7$6i3;KT`v21U8p=9C_S2bJVcxBIRL$o2AQXaBYEL;erDI5{WI3N39kyI4SI zpsaLt-x%oY49YYNu%&Bbm6*4%iX0S%GbRL#@@cIT_zY3XzB=~YcYvbn_&@I(skI-K zf64;wlXd)$<_EKtX4JmyxXBM?&-N6;msS}Jm$v`1#1ue)cQy?lFe7(h n=>QxG073w*YW{--!@eN^oY2$qi=T&v)lYx%OeTA5U%)v~H3Ntz literal 1006 zcmVs^*K}iten>uw; z2Rvj)YY&0|GlBt-06?8%ppZrT58*P<6bJ%Ng=&T-vx=~}Ha)W$&-uaiI0OONfh!^U zNY(_^H~0Y})EOtipaK9b`W9iLM}Pnz8ae0y0RZEQj4(!G#2JmQjFtc(2<3=0K!Pf; zjqrW~fB+x}5|d=X(H!p0?C4_v(P18!1YEedb@zk-Awj`UJ;2cs2c@CjPyvG*CWeug zKmZdYe}Lc!0Kftt0LR^?bjS@Jf!pu_lfpp&ZAjP%UgJP1hg{uQ3FZBP0}F)(KoG__ z(3JdH!yzQT^lCxC0AQqmeo$T1iU4!qA`}MZfR4oyfJm_3w@V^nxAkV|%?5mTKYvxI zwY~_002d4(B-KtQ3xW?`z7c>8feX+nkpg&~61LM5fSLsvMVO@g5`X}JA^a?$RBLMn ze21XG1>Z3$h#_4r~#|M8;k$|0YLy2LTUhN@D_*o2rw*|b^t!ze3O3wi_i;$%Ecf4FcBbE z7C;B8buFOe#In?nimP9&VK4vcFaQeh3>hp5>w#JX2gn&{$#jtdoA3=1i|MVtPr*y8 z5MqRICOe6Fz-X5jXaJgjoel{=4xQa$_jeo}Fhl77P2dCeUG0>p{ePChaQ=h+;4-wC zko8zyT|VB0>?*YZi;6MNM9!WBd|D^(? zjk@}0^6BkmFCmygIsg945K#sJkdAVsEFdF)^hp2?2LN&a cxNWFE0$-^SKs3_w!=1ONd5Fa{Kd)3am!lLnXwr5ED> z06-`Mo*69w3@=r_w}1c;1fVz;W(k@HuWU#cg^=0*?mz+n0RV!D;LM;RF{=d=XIsVj zoZ=y?Jzn6)09K_0jeuYAM3QjO9Dn>6rpw^~Oc4wO5JW06e*h#98BgF*NT&tzx#MWa@qoo9<_YwMbDMO0%%|{K?X4Kq6dM4-~a>wz@ohBeHguo z*(s&`M>i%j~HiwEieEO1(U!q06=#LdtzPgz60`T1cv0tU4qWQCQ4Fuvr z<39jEKvxeUx6VNjaLFn73dK)B;sS;u5<^F#3;NTu@scwlzzhOL$RvjwEJ>Uoi-Ng= zZ4?#c>;ES{*T4h|M%PK<6)v-!@BQEa#`Xm&>D$qf;zQac=Uo(+U z{%`_=)xZ!f$xg_&gREE%T*9eV)I3xH+6=RV!6Gaa*89eOaNDWp?~oDvz*Hs9QBX(y zeSyNnjZfdqAL}?@JgCESH-r7cn}z@$#hf+z7)tgZkMIOL0003&0B$DG2Co2kFaQ7n zK>#_4v;nKY8;k$|0YLy2LTvzQ@D``@`S=r$@DX592!%Ka2T8v;0J9{v-?KUG00X*R z^KguP%+pBC=7*#H!*24ZH9Oxy+klAzi2i07iaET(M}Q~`Mhz4JaO@Bg`DTf&Rk?3| zSS@UT3Ib;Cs`x_p8^r?4#w3^@ZJ;Ke75LzwWiNdQ(3H~8U)#V0-ni2uZ~ygdB(_7I zvVHOWaoBP^fW?wX2={V;iZ{I00SW%{cvpal0(kJZhL2wB|I65n+Y=>T6>wB9UkYjO z9{>RWz5q=u0mSwI${g7U7}xItY2kg^j|+Gm3$4P$*X#fEf%{i0509wvWlnf0GD3}bwK=A jwao%IzOm+uh$0Bb?(p&e<-4n-9~WxA|Ni^+2jCo-`cZ={ literal 1412 zcmV-~1$+7c0003AFaQ7nL7Jc%yakDU0RSKcAh3K;!GTAI9sn2u1_ND(*%qgd*hT+< z0N@}1FbtCJ)Xcz7s0^0*c)$Qa8h`+RDdvC)AP1crm@5EhA}@o=00IL-KKMvVzQ|+k zG_5bd05H*jEuuiO_wN8S0096XF^dLq8`j4#o5US~E6f1u40w}Z0u4Y=K(qYl zmxLmi95^ImZ-GIhx!@qCoGSMB!IDS1k#N570uBK{CX!^KgPPVL3vi&U0Bj<@K_TsN z|1)4H0;V9hUY=e%^Z$SY;jLpMi>gPS<2{?zO(nq9SY#bZG3TqpFPFnnfv_Zm1!ekNX3h4I)2LY9s2a_kaK(J_T@Ka*JJiO3^&Fwc-}Dzy$;bY@VS? z64IJL0Du61a0P{dg+>QDs#WMAznOrEu42D+#4VdKo>DXu!x7D*_W5R00cU~FgW7eXB#z=lOc}{ zIcUHDK)4s=92sn_FL!}}=_li@<+Gz8@v9$QM#h-{%oK0feSXR9*aCc_k^ekbCybyx+78Guz)5M((IHhd2u9fU;&I3mHhiX=?qWaOI&EWIy-s0L82$Ga>%; z(I4W#>;O&B0003&0B$Cz2Co2kFaQ7nK>#_4ssXFO8;k$|0YLy2LTZ3&@D``@`S=r$ z@DX592!%KZM@fw?Kn0m4_T7=sXaFqq*V$}C3%gq>1m0+RKdBe0!%;^H!P|g|0*KBw zW-RFH7B~Wcw6JKv7Y@My%htBNhVT7)<-Pf01+w65+^1`Atbc;{m&OG_A9rvGr-gnv zD9|AfRC;L^pZ@p&7q!Psh~M?8CHS6t&40!6P926oyHRNf{imR&H=F?sKjz8dUIHWu z;{u)>&8^S=2g3Jr38CRv0^!kU7}MW+XutqKM}P?Aum=fhgRIdpEIqH@1k=L1wH_4g z4kC4^JWVHG|D+Af()*bQ|6c{y$>a?0{qgM`*{DkMNA{;;;nd@DuNnh`oB$;RdJZlq z21EJanC7}N;WIOpi~4eozyj^v;%cL)0BqO5Zk7ShBbL&MMmGIn_e8OXVVwQm9)R=I SSn8Smf3Exg|NsC03EO)05J^8(zyJsZ9f8Ewx@G6_m}`+03dN;=un6Noh8F) zGl_u)#s5t z2o3;KkRX|`CztUcN7&I=09*-0QyS6~zb#4tgBBXivb6#i!>B+25J~_L1cY$Ut{mDC zKrOm8=l}wL10Vr_aw#vcWT+{ERJGK^fDSJh@Bk2lVgG;tfd_wZ0b+vz0GYF)Ns&mB zS5cCgtqxJ{Y=4jpP(12+hBhLNF=pR*A&3;xUL;{cLY*jB0C&Iuhy?@PjJpDY5b--d z_&@lYW^BV(bqqcLFBw7*D&!g@(?;z8AP~Ug7%&Teyd<#UnEzWnDMfSV{7e8T02EDt zU=j?bgW;Oa4vL5X1QEahL64&V06|Ov^E?!E3;+ZOzyLsZu-E`ZH*%(h z*aoivcrX9}0YLyciM9c&z#EJJ00BV&6+&$RfRj)HD1T%QVE{xVWKcwO0Xm?CTaD%b z3kq5E9W%-}FaOi=`~LWV3f9q(pL3j$3#t;p2>@Seufj_eTWH3#{rkgVv5^7r5nxRa zPzC|C81+$Af{s6sR)S&y$ej{)rSGQ2N?>_300ICnxTD?5JHRRc-Nlp$q#+Aspa0$r zrSK9UQGd|{jTlWB^28sa7S{-W?=1#!0@Jx@13{QJU^V)5=Ad|ST+>0Px#qNz63fVH z49I)-0&B*93y%c}cPm=h6HgzP%tfBY4hQVPMt}hUhKEm6eg_g@5L3!L1nizre(&q} z6S$JV0dN~jKtK1{tN02WWugq7hXm5KSy9(azU2!gI3#ndZqhgrWOFZeJg zJOqdoNKkQl!N89xcop(yCZcHY{v=mNeoOBAh#(Q?b4l922X>SLN)yNyciW@ zAvoau^r!+TA?g?y!l9pR2GtEWADkw~`p?-w1?@^2RS_rdy=U0URe`KQxv(#q_2KmL JPq-Ka0`bI0zTW@< delta 977 zcmV;?11|j82D!i2M2<%Tof2!0C{ZCl6UzP;2?8>3f_91i;%KTx8MX`4oz!=3LQ!Z{$oM7 z00<`tlmHBe=dKlLe~*2@0Ac`H5s&U#DmTbWp3Z3aJR$~vK;wc%FK%o^wgzz`{YGg3 z1O`6@fj4bSYYk5+KRgI*VlXzZ0dN{xMgAz6H~?h;0RRfFQ1Ler!cBVL_`m=VVE_RL zfB+DS0175q7cq@7Ls)bj@%%8*EkplxcoVq$6t^j+kYx%C156e?9VPe@5Zn;NP!}x# z3&DU4%c4MkY$6n?umAoq2H*pR?KI|W$QMTnmOcz(4-%>jJUUF5K8e^%0096901gg_ zsUzFUm&O5bfO`o7u>oc*S9=7-53`sf!L`@`fCI8( zhy(a~H~+jXz=1-StHzW@i6vLJh#QEcSha>7ljuZ$n_mnXuo~!1kp(Tx#s+jECyXQj z6)EL3Q-NA*Y1fEw00aY$C@bg3z)NdM2-F221R&*zd4)`uO~FJ8RQ=##oZ;lbR}}>5 zi=-lHif@1h1Ucd8$YGN4bIz7wJn7^h4h=KF1(3&q@Yrtxp#3wz5FA+pgqs_7h(e9C z%fnw(g+(I(kuvGyz)GansI8;O2mk~So-|}#$W0lHD(is2nV>MhHnzXUOy}UF4qO16 zpa1{?K>%(hum-OHcrX9}0YLyciL3#uz#EJJ00BV&6+&wOlY9aweDKLSQA7X0f5p7 zTBwMlf|s~f!iYdtO_~>X{pgiP2U-9FuL=b}Tk3$A2CjAl%8vLi?|;kSBtWC02^uiK zjmCpW0xeWP4klRG;1Ohf zycH2ldtLI&fD9a0D9Dd;u5DNOs_={EOB?`D1|?KLMC;sOVoS*|C|}iBm2)qG;s{_#C^-aU zAQm{jIBTK|#|CDnsyRgBR%0096Ihv$({-J9kpqu;jsWXL>@m#>btqxX1psoVdT z?T}_Fh}uCaYLFicM*^S-JRBP;DJCl?xBr6zaeopC{8Rw|AgBNezS5X?D_GE3UD^SF z=LQKi=GM-Cu_hP)_+Sty5}{HG8So(~*^%G(001BY0C1xb2_xFn;h}s{DT7xB;|QXV z)gEF<8iLEA4rB!e2W9U6-w#_0@GMRML6xC>KiPEN={D00oDNg2WXxb;3z1Np>Hz}@lw>b_&+*R|L?*u01yfT zg3N!s(ZUAcV z2toK0&+rl8NigUE4zJa?0T1ND`Ke5LQ98xHs_SqOph*^Ed#VPQ={7Yu@Ddpy9S&>4 zZcKk0{{b2Vk#I$+Um2qPH8)iO%bij$n!xqTCvh~x-~FEfSktohUB0vb_+U*uEAfFy zYURKS%%dkYr~Tkq);{tP0>8T8GPNvU$yHDP{Co|c*o)$rr~L&=QmfmOyw^W!OGKBr zCqrGM-xCV{0z?U;!kzFD_pciBhM=Vrw0-N`;0O^1n z6I9>;5KI6L0{sCr@UO>(Aeeu`C5vm{+w8-WY(8b+X!27ukuOL8`Lho2j(eFkz0L+J zM`3_=yv^FM;b+>&EV>ZEr}9|)pI;2^Bf=j!v6u|B3qmgDB(U+2%3qcv5F{c%81@hK z19z1~963dQcmY$etVSu=;E!MI`~UyQ0KTdnq+!p0@fX+}trAF;>}v1d>G^FXjuY_1 GfL-8-IUQR7 literal 1157 zcmV;01bX`b0003AFaQ7nL7Lziyakbe0sv1P6cT^~fH4PM+~CqVHN#>(fBXOl#26C( z@L(j7>A&QK&-@u$5y~PGTNwh;pyx7}cwKpH;Hg@)_8$pd;kD| zGJ=EyD$Q2-I>c87@I6g?F#_C05n_5qt~;1QsQ2Ii2n7Jr1dMgjbN9j1_Mr>4UKj#^ z03Z%U763u;01z=jiJbrve|Q7Ha1?8#!-P(p2RH^&$gT_zzzu=hqYVTT!jy5-BV|rN z0N^M5R1n2RSRb7|Z6N7;Cux1`#PdP_Xju5*Ix393FdU#S(m&aee`cGR(YC$>@bb>TitcegFV~ zIHQ_vHNo*z8%p!Ukn8}1z#vcxTf;>qB5pGYr9zxt;9&$ReLfE&OhT2PMuh$V0D!n1 z&H`o=c1XCmylNFfa7y%GED}I?BdD;=g2I{T03qFNjC% zoM+y600IGE_-FzPi>72og|+cshsXhffB=A!+JJ$mk+f?`49p5T004kL-~j*%0mt-i zZk%HD^#0-q0|-bBI3`3$HY5UzKnh?4-2eaqK>%(hxCXBPcrX9}0YLyciLL>wz#EJJ z00BV&6+&x(YVZg__!H0Y5#UKM=m3c6O!a>N20ve^zV#`GB^#hi`kih9ED0ja+^0{) zOmveQ9pETyKs688JhQ2PfQt&tEIQ>I2ziQi*0g|JlG(R#g2w zoh<+U7!ywl{9sZZ-rx(3O*^!Iy@1viOEe+{e*X()hZM1YrJY~@`3D1|`w@RJTl|8h zEOmN`-*xmoLqx| zWt0QhU{g!=HXukufRA8*fdn>GP&iYHc>ot2u&hKm*x=uPv+w`E-#`qQc94Um5)aPs!+>4jEW7MX diff --git a/samples/h264SampleFrames/frame-0589.h264 b/samples/h264SampleFrames/frame-0589.h264 index 0e90b3af37b402483e5f7ca092c65618cd436b5e..af27de400d3cc38678d6d2b0beff6db35c79f6c8 100644 GIT binary patch literal 1444 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 diff --git a/samples/h264SampleFrames/frame-0590.h264 b/samples/h264SampleFrames/frame-0590.h264 index b04578daabf84e674bd56844c892cb4ab63a2e5d..e54d5b37ea5aebc66003c1b738398a137924e4ad 100644 GIT binary patch literal 1257 zcmVW00a)aEr==kg|+qJ_&b2G0ge>03nE7kn_2Ds-~b2#KnEEF-%*dMDuD{CJQ@C= zRih#Z038^H{LDZZS3-x8IyyjPY*b(O3;@PJ6!;Xn*b~oSwg-3sFerpiDxlruCgA8> zErsg9*d_$-PCf%m!Kz@NnnV8p8~_9Z!|;MB$LW5>%B(GDei|qMEmpuN1`Ya+S?K$a zz!_hjCqw9BSREAISUF(;0teDLRHxnmK)4Oep`t=+I;CGreP{p#04qNM!wuSyQsLoe zixf8P9zo#F{dD*Hx^NVb;ob7CC+>g%5CQgJ0AN5&mNv$OZwXWYHC{j@9W3TG3kz(> zMJa_>CCzYSYU}hA0_Yfk)HC1!E;|8Wx>brT%v4hF%6+hiU@uMSYgsqm004lk01)s4 zxKiPKJ{<3DClsj72LJ#-+N1!cMc;qs1OfuBqH(EDn7Qxm03cv;o?>TxSYkvf&wv0R z5HkH;d$6<=ES@+Zpz>FciDZ1&mZGP3kcc4)LB}A0h$yFl7&${9G7Jjj;b4OTZf;b` zJAl;*KQ5QPXaJv90Z{OXvZ8HavZx?wqsIJfSwix_J%9s$$^aAx0f%$12pNHZ@uSQj z01z$!0Rv1|006))JN@@W1kP+R1LNjt3LvNaH2_cq2Lf`8NdX1Tb**T$#5AYEfN<0G zsj@wjjh+u02jda|t4|mlba@Ut5w7A5k5J%(c%v=2r~iZS00abpV3@Jr3>xC0U!n+1 z=S#2iB?W=mdzQWifE;yXU~Wlq+M_WDKL7^KD^401uRbDYBDaSl(zdo zH2@%I3WBInb(aT$Kd%hN3R_emuY8(q5=X!agDb;wBb=G9me20+WB>sG1G$5NF)l2z zEuM~n$JhV}0f$=20}a*);4Mm~HVKpg_kMy>qnE+|i~s}x>3{`59D$xTz$`4Npa1{} z9K*#<-~IU@03t|W0fGe`P`H7RWbkkVI{*LyK>%(h@CL5{crX9}0YLyciM#=;z#EJJ z00BV&6+&+SYVZw7{Qm(a1QB6Fz&=<&3j2GAMjF{fu!B}Cl|SGlz=AFSQNFt$@oAU< z-mV5~VT7zG8FF>%`p}2E!2j@ons`^@f{p+@R{18sIoJX=yAR$~LqWakDrMkQ#>v6U zJx$2ca+kjYpTJ{8Uax=F$RlfvhG!5YCoCK5)%fR_EDjbNmo2cU}2qI=c((sm!TxjsP~ci`>tD@_@cja-$*i3h)2et-C=JQGoY=2bc8P5B~-6 z1ghHMwHbE5|JEP+>91Em{UClcNS^=?|a5Sfjf}kI`jMs T`6{69_x`M~WgtIm58yRm`Cl6x literal 1092 zcmV-K1iSkH0003AFaQ7nL7N~Nyakbef_?-s;UVC=un->r2Lb`Z1#?LvsR^V%cq_sF z_+SuZ0i=`^m9Y#(6wz4}4uAo{jL0l(rc;g5cf0}$SfWdGO`hnNV70$i8xH}T5DkC= z0#}ZLK^m6}!*tLT3T@cwQ`Xc+m00uZ12z-Yl#RW)B!CsI6O4pNA4WkwS0G$WF;NS=V zU;x78D1{uA)%Z--Ig@|_2ZCUL7gBZu*uK~fV%ZQabs77&_!GGNF}e5yFk>DLZM1ac z;+OUW3@#KIFacN?ViNBGh7h?`P%uE~X*wT-DO>;p2P6QzsL2%#04#_O24I}f2<%a) z2aW{xy;~TBf7QN*xaY@n-}N*g?@3GW>K_6yzykD;)3v&YIupMkd+`o|P;tHj8yGK; zfVK3#1%N{WL4zp4PnZC}!8j{SUZRRzbF|*V{23$?GHNc-1lsV+3msVC03d(>0t%m& zKmb5M3j^=~1ONbFDx#IjKs)SH3X4EK7UppT0|BwmLmEZIB{awF02LlU06>E<&e5DIau01IQVQX2JU|JVWG5d?Vm z5IPv8?fZaW0IF~f6*2QW#MQ{orvLW=P8UE4!jMmG3DGmm0AK?!94|f5dhRAnpU>bA z;4uRpPzG%Rxf2T(hE8ArAPQOl3;@6h6508x5vdvD{onwA5FNqg9yW$Q*`#V}UMHXl zx&QzHK>%(h$Of+fcrX9}0YLyciLwE!z#EJJ00BV&6+&!)YVZw7{Qm(a1QB6GFzodJ z4&6<-oztTa6oZ3;Gsk3|K+)hNz=AFT8`X#J#3^CFz5%ZiX1qNX3x%pBt5@g3T~-JA zfF_<5_@JYJ76JDCGT|Mx09EDnx2=hx+V-v6--DrxQocIsSffd*5`G6h0gX|6E6Usu znKX_wIDoKDE&TmIyfxuj+XaV~(Yq%B)GDC=*J6eM_Up7{n)?I*4ljIDRv=gX__kvp zlB!p!T<_=P|Gu(FuGh*-ekzyrdzOJooBKgdd?)dbXJ z%&!CYSvQKV|MD3aIx7+YfEZWfR7P`(#X~qeAxuWr{rmUpz@5l&4|}&~zC`NY2A@Cr KvY}Or_zhSbht}8t diff --git a/samples/h264SampleFrames/frame-0591.h264 b/samples/h264SampleFrames/frame-0591.h264 index 77f48b74a0903cd20e576c99483fbb0f9acce70f..17cceff248f2a819f69e826f7d1641fffe08bdeb 100644 GIT binary patch literal 1837 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 W@u?{iO5KHMRAxR}s`~T8fYX3x%zeTD diff --git a/samples/h264SampleFrames/frame-0592.h264 b/samples/h264SampleFrames/frame-0592.h264 index 4eb06a3c90e9b25f8d3b8524301de8e685cef356..21b32b91223abde3b9d7f83514c9a534790d8d6d 100644 GIT binary patch literal 1196 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 literal 1135 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 ST3f$bi-VaK>K8%q0|Wg25w0h|yFfC2=o z3W7tgTz?6cfS|x6*jA`wYdEU=lVi^toLjb=>A)Zg>>jtfNE*PJrvCsaI>RLTGyp&b zKSIPdNbmpz1I0Z603aA~afV3DS%Xo%$&$bX0i3Z0i4aA05xxWuz$gF$0D&nsOdS!< z=;F?XFbvcY&xT!;Z4q7J00>ZUQ_pZTL_z6Tca#8N$CFeVGr#~7B!9hwJpd2^fCN4P zj=N0hkQzM$x8MU8go6OPk+2fI#z0dJxw5bm%liTb7YYi1Ai^AIO1>=daFSnqH6Y*s zVB~-&C@R_ofH~k23BzMRM`sd%NU+|wYT{wH^^MV*4EmMc_N3v;d?O41Y%$>`sqr{i z5PJ3Si~wW=FF>Y5iQ;fd+e_eD1aKr6GK2*@02pEXewLk1A3Tq^_7_k@xRDb{Rv!A^ zF~a9oC;$i>004p4WpDs64GTk;zyKgHGUqc!s(ZvblW1fG9@nFS^lSOEPf z+Jukm$^kM2oLHdZTqICg2{^*=uP8u{Do@At;_%_ow=iM$W6kcjhV8U2&E@c2BP>-= zGkbUwPYV1{P!iJ|Q{CHbP!Se_`UV0PMId7PyzocXw6Mqj-h50e^;Re((xV~tz;6B> z>u9U>;Hvc$X4$XuF5nnLQD6i?5Cqf0euV^tW~R={`)T)9U`HddY@{*!>DU^1d}p$l zQlFo{wk`{9d6Nx{`?lYQx^R_^!)bIt3y#+OhoXm*!Z-{J2W>EoxDYxKqbX!WAF4DU TASmkN?UrKYGrLfyp#BH=1&VjF diff --git a/samples/h264SampleFrames/frame-0596.h264 b/samples/h264SampleFrames/frame-0596.h264 index d9a3f90dbde2ffa315c4dbf4088693b5cb82c20f..bebb87b2e07743d838e11276031e45f3bbe2ff08 100644 GIT binary patch literal 1863 zcmV-N2e|kE0003AFaQ7nL7IRXyaj>3|AY{ZfC57f409JM8B#=b;Yq0%ffm~YusjM~ zZQ+~O>AT{kT}3EH01h}r0fNW-hoMpv{1EE$LaVczpKns+A-U1@5a8%rW6UZaK4({LpVTRa}^RQNDLHGa|uFwLWtLJe5 zRTvo>4t_uZ>KtH()kl@8H{DOD5Jyxnin!|%$b0|{ISF&^rFh7aDxdw}20#M{UU0!} zq%T{7r~a@300dl3mRJn56*o>!00|d>q8;@w>ig8R2t7`c^*T&n{1^k_N7!HhbvyuI zL`d%`aEi$1-~iw-XIkEi-UzW5TK~QoKn8DT2@keGMCF~KnGn{(B;j=fb7&-d9Ew^d ziKKt_@BsmWc1{~(adg??HfcZ*KnF(97<2^dq8Gzuoi@AxWfO6tTP<`~3Jl{F0|7t< z05~L%`q8FF7BRUG|8Tq~In78Z;`X~7FbN<7V`3oG2bI4*;0&q&pe&3rqHMYtEZh5l z7y#ym{el|P0Hfv)00ceep-&4yFb4k!0HBn-nc;Ya<54^>URMtQ06+vlmAkJP8_i0e}L593kzQXS)IA+z12$Xky?{r@aA{07L3^;y#=TojL?QJ-`5B3%??PTQkc^ zCcj&}nTn&UmDPGr)$e-)b>#&C0Oxb+G+fCAAwsid2y12zy#S7p${_JJ00IG;=mEe9 z32Pc91bVQ>t1J!$;kp50zj|VuplBchLE*p<5EaAUTjwB%IAoOc1)`Ur@c}~-2_d7= z1^sE+@W~mG02l;~1dx938zz%DK^Fyc1mYmi8uftAV;L}N;~u#O@EYVFhcwjg#aUywg<&(+GhUfui#=Dc*J<>)1B05 zpZ|aX1TwgSoN}uiLb8JoG9oB2I>UW4e1illH1LwcsW9}R-}`-SQ+faafK$4|Se0CE zJ~7+E0hPdlvUJ3p(qX-d!vIX6fUar;!}-<57zm$v1BV!PsU2OUcF%AKA}oH)?pr6C zGe{ze^w*#M|9HR{Rr>(v^@@SW-3WjC!?7WYvvi!qUwMEIun)jSowB+O985{!&1N)` zIN%&^cuU}ro}k!0QKSV6VV(sIyZ`|J@F7wu4hg-XC!L&1Zl8Ux-2gTCfMF#Wx&_?A z1F3OP3=_XNzu*`O06_sWhV*bNZwqxMG5`H`%s)<3l()hB>2?0xL@5JO7>PQcQ}^?K>u~(?q6v)N59J2oO~U{WWejWHQ`d0(e}Ey_0003&0B$Cr2Co2k zFaQ7nK>#_4r~#|M8;k$|0YLy2LTUhN@C2ZLKfq9e5n(O>1xJ?R2h8l0|MTCMB*R;$tg|2@h|_*RusB={9k&4BC=LV^Y{Is zjMMzAf5&?H0si|Rut`17{_JnG6!n#o>8@lD8Jz2E#7bC;lQ25KpCsMyYE9t(CN{4SLi;VJtis2c%5JW z{-O{IK>kDWtDXut42tnznaCnc00kTX1OfO0hU5wiNcg9glmr%o_;<-rZGOR*!E_Qv BEp`9^ literal 1476 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 R{BFk25@fyZL8jayuvvhzgZBUc diff --git a/samples/h264SampleFrames/frame-0598.h264 b/samples/h264SampleFrames/frame-0598.h264 index 25da6a02c31ff105fbf422071af072a90194635c..6a97db108a1ebda93f3f73d597dfe133124e80b1 100644 GIT binary patch literal 1193 zcmV;a1XlY10003AFaQ7nL7KoCyakbe@Q4V3L2dvJI79)0$N7hWQX@*r#{dIVSkgaY zRV#V`!-&+CHqA{4QO)W+BK?xb08k1-Jpv{lMssmmP~kpPUi(?M9ZlpbL{In(3W66P z3an*PjR#p1*obFdxLm|vU`PN61d5>t1{v9kOGS2EpWp<_LWs1vxQ3}H&OiVl7z<3W z14Z^kz5ojeK)1OE3NYm& z@FXC|_AJFHpc)S@R&x3J`&Ey;xYA!Y009rr@C*QP2CyY4O3xD8NkCHJlmHMhh=be2C88SJCdzm+ zxFwh6+yoH4;^fEx6BravA5?(g_k$YfQho}eItpJO`Ngws2OpGjJav%Qi6#x#P zi@^mjsWkNHwm4uCKnBLdL8uQaetqJA0Vn`7%K&q{Xcv5Dldb?@1DYH533ChrPnJ3W zIqz%4FB*yAdg8haKL7wg1VEL$uNWJ}V#rd7e{cX8g73(rUd-~;L9f>NlOe=Za=Ncb z{a&hn{J(geolJZ|`D#FXG7KMqMuGxl#AHOIHb3xSLh4%jo{2Cs7$PH=Uw|?a_#_|+ z7l16GB8(h^t^&&dPyi4Q0u(V03B92wot#Q<&-eIm69xbbiL3>N-FHf)PX0lI6`FWS zfz+6KQ16Bi?iM?@!|NWo<7!G$>YZ9wW$Hlu{vk%jhgy;||p$tFVsS-~`GT70f`GcRIMk0Tb-- zCGbp60R%;l*`3Q|^G0cS00IH#0u%*#z`3dq)A|pEAoIom!mro|Kde*^M)3dttVm+) z-6t^@!T*>5>j3-&Y1=EH(Zs}n004q4KfegT06-8NESPtPM4XkQO_mHe0v&(=00BV& zZYHn>uK;*30003&06B@Q0jt0pi~s-uK>!s(YXEBS1w?;8uoEHB6QPiZTL2qRY9lm% z^MXxV+h6+R0pc&^1KwZ}>*W8vFC;={I92kX?drW!2>-1HUmbk_n+(GOBfeYYpx2T2 z5hNR+z!PaapYFd1agTRGA=o3mQ^?5eflZe6u(AH0@FftJ)%nu6Pw&11Q|ZXlNEj0j z3+MGbBqS^YKTCtHFHPu?5f5k301*{{p&HZ}6#?!UprW1r)qd~r2XCevIE*go;eAMk zj0;1qD<0dq(mt5dLB*+>wJCo4<6t#-LM->lUQUnpZ|UH80(lU`VEAaQ`*WRj!a z1k=L%5)ooYg`;;LGg|Hg)3oMIrUfrocb~uQ`vpF`E~;}_?LpuXz5DY$_V49{d;!n8 zPIzN_O$6@!%&H^wFz1x}*|q*yhy-`559rVbtvpR}iNXJVvtJS*zY1@zf4{(g|B~ZF H{IB4y=|B#* literal 1049 zcmV+!1m^ny0003AFaQ7nL7E^MyakiQfp}0_00PdNUw{X@3$fu2#!+AmKVTvDL2m&70s!sQ*a1LC`|)ZC1<+iV&IJINFosMB26+Sk zAnOKqhH}E9Q1^~kCIA8fW2jF-8U=jRTWNqYZU6v42m`ztpC;qR2na4EExgFXF;G9c}_y^qlbi%OI+02on2 zT2+O$1vN_U`^W$w2OBlx&|0P4s#XAU1pfe_K+aK0RVb)P!1ewNphLh7Z)Lt0Nc`6k zt&a?#4kX!=p<1MP=#7B!pb6#u0S6WeML+>GB`=Jcs-*k`p+mX8H4;(TyEghnAI3T$ ziAijxm{^Cb&ikwV+a`v`89B{I2qyr=l;I;)9BxT&Klt#ueh_mG5_lEr%8&}xY!LrT z;FL&wCJccXfXL5)zyR!^F#-$3k-&UnzI+H8VaPiys%E6Lf8Fp9LaGEf;DSuNc*98G zbvVd*E-C-s;4^|@rwV+axWa1!kDvR105X9LHROOS63~v&^l||Q{@@|N#5j0m$%1-? zu1;}xh9QK8|3Vym&(%5*Iq(1k0>i0+^Ald#6X)k(ZYl}hj20T`M)lS}Y9U1F4d;LKD`TzyJ^f4@7{6O}t=Nm6pX{e1OFO1|fohGUHHl z!s(Xn<<)1w?;8z)prjA#4C`AIM!$|N4a`ZRr10fDain z+?cA*?E)?xO`&ckqEjo#L7V!+zpC|#1V7XU27g`OfSU}6ho6@ESUJG$@+5eM{*pOM_qmyMTjZ$r%&!1J`~Bl5q*_olHqQlX=}9l)U@3P5a)@ z{r%4h>O?ePT2(GRX1N!p09qVdQ#ESu|G~U~)lh_4-&Q$b32j#nwP*eSeFvthSS7eH zuyGkAm7ee>o)^{Q!kz|$FWwan_5$vJ?K_>VKmP!-?OpeO|AF`lOXZtB?l1X#cM=Q( zclWm6e7}|v>>vW3PHi`LnM_7OUv88Pu5aui{f1rJ+xzkTNK1ei_WIwO2D#?ggt~XQ TY#05LATlVBzs+w@AL4;r*qhH} diff --git a/samples/h264SampleFrames/frame-0599.h264 b/samples/h264SampleFrames/frame-0599.h264 index 8d31d6e1d9562dfbe8761e70480481ff063f7935..45254b5dae60cb8fc4485519441896d5be9ae82d 100644 GIT binary patch literal 1641 zcmV-v2A25%0003AFaQ7nL7LziyahKwV%OC4>kur*fC3kCPR1!&#Z_-c0E6v(0b&$M zA57kt)J2uChQJF35$(EB{}+IE>(iZpdbP? z|HA$R8mh;8_aFuosi`5&F5Ib}h^qZEwnpuzWr#Aoq)G~6WqAF%1{|(-R3}JVf zpe|0lH1_|}_*xQ##fHFy5#RvEWC+Cyy-|!LmT(?Rpchw*6$HQka12fgl@^D{LV`-I z{2qoPB2s9h?@@8aCzt>N1|R?+$N&NnpaAk`hycJ@)(WDcM!-h4z!jx{4ZKAl{XA=m zdp$J306-PE003i<`idod5lz z2IB^k)h?UfAV){^V*;E60Sj;>l1%cXa%}LI{^I}(fV*pBI7}7W_7R`}5C~iV;&&%8 zH~wxT1Pr{q7OT!CY^VRdO+bUxi7!$l${7*`5k-L_fv(_fHJLRX-#}6;imtcNd1tgw zfB(KQI+(0FubQPNq08t#aJUeL97w`o00IDY6@cGDu2&rZgW!~BABgy`)(d0y84OM* zAcU!_Yp^^P@E)jiTmGxSGzQ@mg^1Md$$@@22o;h6h_X|ulLrP!C4c|?3!DIh0rN|u zaHUv}RD$$9)=>|<3Q@8jZ5{an=6$&+WPL(!DL0f1f01-4}& zY$ANBb}xVRqZ7F2j8co4d!c}j>sr#Yo(us9ZEZb1`~F`P2+&*<0+7IbDZY(@fJ{a~ zvB})f>-+5>V2E8{lvdXJtN(D21_R9SFzQ~3)Rp%UumEio0E--cM2A{^z{(Evpz$uU zD2iBHf9(s42&i8W@=8PhydhTO3TW2$p+y;OE)W1B0S6({Lx)aOh-p{--~b2&z6JuS zkV@%P_Ab2lzrX+x2~Y-xFga4TjVfGfTtEUoDF75=s0Ezd|7br@czUBz@8|Jv442CQ z224(vq~#OTl!xj-iLrqI3jnWEXbH&SfeWdt>PmNmkT)@?aC>7fh64s5qu9ZKAs9om zk1O6YsV<1oFE9WQ2krxfW#&R+`Ehm=|M1;_0Du?;E^5pZhb1(!_vi2jN*Ib)d8MSa z4*kJ{ZJFMVlSwp5AN}BhM{2D@rTzNMMk&&B5C4+}T=(YxM)VnK#=ZNze=nH95Y7mr z_zf5~i`}J3H2e4r3mZ5CJA&egVjutN@BrGj^hvY;ARC4Le^F2&7a)y55M~DlsSC(i zL_O0`^oZdDatPI;Jz*JPL{n=MSKcxBpf~~#_4t^upS8;k$|0YLy2LTi9( z@C8VJU@%}NLgoqwP-nmi29IhcsP6@504?K-a~l(ZR~EnnOW-KNAS6N}ZaaV|_T&bY zpy-!}{&7kVSDC;7AwU2?0FW9kKsYP{$`>fBrLJagy4XL<;3YyiV?~5GB-dZu{{ML3 zv%?NZ59X3ty+43)x-@8fCW;8%@)Y7I^!?yXJS&&s`A%^27#4sSfrRE$v-_%pO7lR% zFxP&Ec||C^JRDlU0)vnNVMgoFEh%N#q2#E)|L`d`y=k}KJTJgbgvW)v9l;hS7IG)t zdHwcr56cr~nWSZomT|0LRf%k>B^JK~tx+vEKax zY2kf>czhrzECkKp1Mg4@F8{n8m6;n|53GHO9oWbMA#4h+u7GzcjjbbQ zo8g#IDt8Q)MWd+@eQAFYVNwM~3;+Zd=<|@zR=qbE{8N=NGXim+yohQqV^hra=?=h# zi|NDclCyZOQ zLZKxNl_rycQ5wHUd!p@SQcCCA34!lm+}PA?efEF>sBc-JRGAOO!A{!mBZs5Qf9~Oi zGTM?w0t^w_&6x`V9@OPMJZH<_z5M`!74vg*4d*k|zaAnacp(MDA&_M4Mt*>p0Yy#@ zCt)lRM4#`z01k)^04?yHDYFW>Z~%Fj0p6$q!Ug6pgi0?zyugW0Q4Drow5D$q3#xKj z1;IrN&2rS2I1VrXR3$C|!POHpnvXt-YL`Ly!IV;Y$~`2oK@BnC%jTLeGZGZ)$(sW# zugf?53-e-8*{F5%fs5K37v;a*0jyGOCYWAWP{S^#KuQ8MPg2%cZ}-6OC#|Ob|9t>6 zv7U;=+kD}lyOIC_06-$CG#gpgy!YkCj+^*8BS?5bazo_byEZ8R4-t^r3T1OS3SR)k z6;|_QqJ-G%E3wGH854X~mL?CVO7mba4RIJ+_3&h!pw3~LF~W~A?-GB!4g%z(If(1U zmMrB0Yr!1F-~*^ROr$Bv@9LMqut=l?fdGi0p#V?~aey3Qf=w^>N&;Ia$5vU6| zWA>~Eab`^LzwR6YJ18({k?TyiW)x}#xHdo_{r z|MsD%IMLL#_Cq-DOxN`G;?EJ(+5l)k(t4%~);$~j;U5S1lq<-4aC+Pz4=Vr+0vUt| zh@nL5|7xTqer#u7|JasaKo7!J~S%)vF&Qo#v+8Yd>egtPAQMfU&4FVCq_%K4*s$aao06-`KkT?)zXV0kAjBBSn04C@F00BV& zZYGchuK;*30003&06B@I0jt0pi~s-uK>!s(X#i^Q1xSB@p9q*FItKuNJ;Sw7&BzX2 zfDQ)o%aID~D?9%t96GvR0Y(u4A`y2SOawyZfs=v3eiw0tATIf!01yCXfuUprgMgxs zluo@i&8dUv9$x_}5z87ZAzZi&y>NHBDS{*8_klF< zzKkvq92S5Ib;xSSrvJzu zKA=rJFT2NuA`{sEcl-%V=fG-OKpZarybPqgZPGgn-`b$?0@bAQ41<*aVGHg8pr!7Y z-5BNlGE8Jn@L%TqIeuQ6n*}@}CJ_7_00zK8F-iCjfNZE^0Ph&4U;qhK49n@1F(HcL zFr+YjFXT9tj=~;4R^Tnangi{0jS(0b1u>_CtF`Vn_uY8q2gO5+%G1*wUHpUaRV~Mu AD*ylh diff --git a/samples/h264SampleFrames/frame-0600.h264 b/samples/h264SampleFrames/frame-0600.h264 index ae16227a82d236b3423ac2a8a18903aabd1eaa9d..0d906aa6f350f7d2b04bca6bcd8c3b15492fc2d4 100644 GIT binary patch literal 1320 zcmV+@1=soj0003AFaQ7nL7M;?yahKwLs!(4M-|WvU>{n5ae-fWkVX;k0L`}fO~Mhi zSKt5$27qv00v&j0G`oHDmncaOKmgAG0Rae$zyLrr5)eLsq|}SR!5l4;hfI<|@!ikbO8taC0tVc=C%dZ-~_-J;R+D4F5%LuHJ`Wu0)PrB z7Svnmi1q4Fk*7sP#0T+~;eazn02o*`WpE>& zp&$SM01O;LCKE_j*JYrvK_-vXhRjAn0D(7#!LVN19n&e00IJfMueP6$iPn8()bB(M1WXk>cf^W1|KNh7ryWa zdJC+fh6}v4$f!gBU68oq>q(Jq&XTfo9Cu2OBn0F@&Zr?p9m906k)$MQ!uXol!gBZ#*PXeb5HF#)J&zyjwW z2LSg<5YNG3mgMrD2uvQPZr}RZ-~b2(&UtxD{6BZci)aPrU@9Od!-k+h z5COr?f7H{cdAOZ+5dW8g(9^7FL0Eb`z00BV&ZYID6uK;*30003&06B@U0jt0p zi~s-uK>!s(YyfKT1xkN_p%P(~H~>1-_Hfw>5&vK&M~oG~N540_F)}fAo~R9T5b8l} z034hx2l$azfBvXtXjp>yztq(weqb7fB)<4N%-hECP5;HO;=Yl;X7V=bmcK>Ubg7qFKKG?#oVs4ylTeQGEq0_csS;LQaJ zEB~*~wn*9P^l9$xySKAhk^tP@^L2dX@%%{8hvAlhZ4yRQ2%-pne;%K&%S>lHA^GFK z*E%==2na9$_b@sD0tOfW1O#bI?4?2)gh;?ZXG<{O4IU6}02rQ8w63q`NwE3N@{IzJ e1zgY(0xw3d{0?t3Gfr?5BefT%!T$I#KyXvq5;SW7 literal 1130 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 literal 1142 zcmV-+1d00q0003AFaQ7nL7Jc%yaiW5LnZQfLBnu2f{A4a#{t1o2~UiaF+v%ffRaQo zS5AUr{Xl~8ZJ-17#>WltB!uP!15FZ-0wcOj06+;`IV+AR(HiqUW?u#(gF(UItQQ3a zKmoMO(GoHAW#AAL;8J(5EM$d}b-(uj5ojqj?g}JzBmFJ^?gv}|1QU*`009FK2f^10 zbic*^-~cfIE%A@;S}HckO`gtX_z__cG6x(IDSvZfMet`5C#&Cj01ya$O^X7q+LhKC zo>F`e)a6iY-U6UBw2p!(nLGf>00ICNoWbI-Hij~b)tCSR3?Kj@5C8%ZU;#wW(feZ> zVuq|9b+|Cm15|H);7a1G0tt3aDn&zB8Z|+y#&sN4IxC4wz)cEIUz~+NYH^if*ogA* z!vcfso4zw2+6NWAQX4`FHUx%XF@f+)i-mdozoEDxj)cxypOh_B02PA(5!X)vvWQZq zu>b$_0B!&jH)*FcX27aAQ?u}6IP=YLq64JKbLgFfFaQt$fB@j(a%Z>mmM+7Yd|(#{ z2e6PU5EB{T7zP7{sD{Bb2qI>t&oSHpJ_HQ4d(cc&_d$Xz8|uIU00nf#I1liI5b#(C z7%6(3=}2snRl9ExHxWp&YYaOj(1}LA7&Txuu$v+ZTbYau=tNH#umHZELq#|hrq-Q! zhkyV;IO2l7e0&79wU7+}Qt%LR#5~ew%%uUM_jg%qX2af&k#NJOEqx?miq1pj00vcme~BAaIjouhAZsE`Bs=@VKO45-M3d zcnH**RTZ}2fB-=V(cjl1wRNEyGl&6595?|tKmY&%K>%(hs0Ob9 zcrX9}0YLyciK+psz#EJJ00BV&6+&u&YVZY6e}JKj8NdO;`R`+1j0YrC00i`_4v~uX z0%5w$T08C4TJnd^& zyRZ$(EC5URZY+D(fRbg!N%eA}KkQ!~JYgnPX;=$^1@*=Ax8CyYM3gF8o0zk}7xCw`k&*=pv3JwCo4>Gjyr&U~Uf7THY25m6C#5q=Z z!Vgzmw1>qRmpvs${~7GAkq$nd|GwOd6vv@bI1mI0YH+QE;R`!=xiT36?j&Pmb`l!d zezO!@Sz!aUeEA?VZ$QllK5zX>2q2iOpS+m$UPG_Xz9*8l(j diff --git a/samples/h264SampleFrames/frame-0603.h264 b/samples/h264SampleFrames/frame-0603.h264 index 189db7b8f5d84b949c90d0e8f790d7b8d251b387..e2bb7a2e7dfa8cd8483885c14dc5ecc1836c8653 100644 GIT binary patch literal 1270 zcmV*m~bHIS_lKkzVKA#wo|jHXFos=|8`Fn;{$n)?Dk06+}n1_TH# zs`M3}?jnDH78^K;_AfcAPiCM15C{)SkOqk9@~{^@2Yvr?4irO`l8-TKH^1xl_HDKw z06}1}iLQ@u7{M#mAN!O5UP~*HR>$M%J~d3>^?pu|kv<1||Rv@E!hxg96{fxv?}WKg{H?gMT*1?%eh(`V3B>)K5 zfMYsfKG>xP907n7u)eJ3Frab5roaz-i^OyeiQzipb_Oz|fB<3*Q+nY+Thk~)ZrlId z01UwXsc=md#ii!ITjp9E-Z@=ut9rfV`_YMc3z%L{a3Bv1gAc*Q29AjzJRo*+{saf) z*bMAo`;#N52q)ydX5|(zDgWdZZu2lUh@J}zfFyu%aJ+mlfjzSB%+T6qncyq|&kc+| z#^@G}VmD#+nAeGK$u{|G)S1B|)y<@85m;+MD0-eh?WP7)DK!lN$I>LLNcFh$~c%E|&JM z0IV>9+{58qXxi(IhCiMS!o%(X3Dz$p^DL3f7q#F32nCoBfM*yTEA!NRf@8p2;{eA` zs0e2ks1SvrzyDZ}#o4;t&b|-)z#Tvr0aj+o=p$b<~T(0-Q|GyIe0RR9{m%@88 zeYqd#u)&7l2zCGf0YLz6CXfcN0C+F}00BV&Ifv|jLPQXK2@F6Y zb}Zrl7r`n-8ig)aPT+d;D<~RFaSP@sMEi1z?yhx zL>weY@W+C&G8!PhEU9vbW-9bf_^7g~U~zZFc*|8)o}jwO@;Dwbx5un&l&|G)}m2Xl|_ g`o|0o+>>&v|Nqm#MfQbd9~ra>hBfTle`^K_U^E~#&j0`b literal 1078 zcmV-61j+jV0003AFaQ7nL7KoCyajhCSjKNB6@UYP1Ti4@Z7fs39{3rV#0SP70a8mz z0?md>Z+0O7JOB#22}pQDky9=8fCA%+3!x!Lpn~JLT?MIb7(gk{Xdqs5)0Bl^ZXvh;0RR9X zdBqeQVz_Y0fUTmA;ekK^RzpB>Pyi#vujT@;?*ZUYaSXOJ$#S91qno*$XhHA?gQrdi z680ZN8Z9eO)BwVW9MY(8uE3_LUpzno066-uK7y4j?Lv?Pa3}Br2pP&LX{8j279PIv zWda@mYk4uy%137RjO=)40C6WwoeR|?$3!d#jQ~pOT22wY?|nPV`NZPENT>iTN?RE< z>!DNCj$kh(D$9N+doL20)BJWM{xI06QoQK!UL(a2*(~p8^(`aCTXg z?MxPp`;b8js1VbF2{Q5H2NA&PcrqSK2!H>$4B(hq!k;KEFrL7l=l9RNZ9xCkg1hK~%nE=w@A(atXLVi-tY@Fmxb{Zp|Me*geLEIODQF*WUxK7Muv z;*g!`fE*RW$8j_WEmHna09WHM0YCyFCIf*d*OnV7v{*BM3Z_cU3Qt;Z002M?Ej$E1 zZNkEPsuK;*30003&06B@Q0jt0pi~s-uK>!s(YXEBS1yX-l37LXW z1Fd8mn7@z$Fx41iKzCBhP^qQ=0Ve@R7D1>6$St7Y6=V+jE{1II{{IUT1p++o4jl$C zYd9?4-S=4~C@9QQ*C9~_;7yA=1WhGf-TUAKB^BK{30gI5?*eJzJia7Qkpv%Og3t(^ zi#UJ9@Jfh*sB`6~0~;6G7^jB-;!eq{D(phB90)D%!6*SdAy9Qv)&u0Gk$Djd@Dm~j zg}$P5h09&L-vd}^K~kx>M%(v$z>-W2Qnx2x;uibfYCr%$wLkzsIJ#J2009J*009Dl zGQgU6Uql=vNbt9S`X^+HO9ef}`BX$REa(A0pL z`G3WULPeM1M{sn8E7Bc+;XnZp0&7+%KKAVts|QHMbp(1|c8pho|L{xIlbUV#a=rZ~zz2QQ{F zrf=`_H(^5H0E8<@FsF}qsup4Q*zjb*4FD6>qgsW6Bi*%Q002N700amC06^RUM9u;L zDc}Q?62tqev@af*l<)#rUKNVnyZ-v#W*_3EX-)LLDk^4J!e`r3rNMwdEpC^_?EWEY z&HxIDo1v&R|NDqFq6E8&RW`WOxEcrGKqJ^5@=Nlrk8WdSD>#1i+t(czq2Fm7VP zj4A*KPVCI??##~Z|Nrm+a6qPtd8JL8RpD=ytCz(BG#3Q`)G!|k1sZSwxQv5hlew{f z@3eyr$*eS!6qTa?z)CC8Lum!`~Z>4F+?m%`$&RIu7?N!CI%VpyeMGRDXrW7@Bjn=*8>Bm;j1M}$dc1u zz5oC~7l1`5F&F6?REVU#hyfQn08@)_4iT~b(0qr5s3*Pr+2`CtIakkb{rnc3VB zAE^Rum@o%`zY}B{yMqG)HzjW~#Pe|rng5C40Ehx(0D-}Gh`Tp18I#XoxB_?pAZH4B zGZJ|u+*HSiLs9~T)-aXTCMi`hoQv|>SJz>^oKR18?AQDo*2{vKVPe+!W2g;zxUxAORJibrI!IdmjY!Lz&=_$^? zv;SLvm`Gq8QM*z`%oug-7#_4rU9$K8;k$|0YLy2LTP|%@C8(VSP5BzPylAgOyZ`{p-~b>70LTvC0h$B|`?xR`X;w}kXM!J}rGOWVU4CV~G*EZdAXTMPzxVI} tE9vtgmKVQsjL#qb+i$=B0yAU$@VnlU3^*<~AAfE(8gpL!5B1bPf=C9=6D|M% literal 1130 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 hqsNifxhd=X9%_ChSQ==zIJ2|LD}RFt}#G2;G_ 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 literal 993 zcmV<710MVU0003AFaQ7nL7QM2yaiW5Vx&QT1p~1lQWby#AOQgV0F^3(L;P^(ssI5p zMmIwfIH^*T;20DMbjB^sTO~3FM0AWQGQ&B^%Cad}2 z5Qd~p`=RO5#l!d!cuG(Lb>+25=Q28B)pG2Ht=)xBvtJm=BfsSSBdqhwwuxAxAL57C}t_Cg=bF0YLz6CfEkA0C+F} z00BV&If=FbtH2wK0003&02M-QfNJmr!0-{_gBu4wmL2aW(L^i&s+h$p!@h>aFC+ndc_FJ5gG@q3DKJ*d4ek;VoktJJiG+R zaBy3I8E)5ae|7-yzn)JyNPYQ?i~jRMMt|u+ZEUk9cRvCsUgs>_b;W=apx~=PF>qEs z2n*}|RW3RG)(L99k&XJiFV=2h=YH}~*cZDY&aW_ut%RL#0%_rW)D?sR(trXg2rTS< zrns+|iS6Km_#fk7y2`uf^~eV@`hPn862khtA{LYg%)CqnW^ak^=J*7P^|@XE7p30V zqMofFpSe>XKhAaca{s@>fi&>Ggq%!J?E(SAHY|l~B#{5`iUV%m!U7a|f(g7RJJ@Hz zv=Wg30KNhj`Qhp@vnoFT?@$Q!ic0U?0|?L~(GztOzxz^{4$B8x@9iEmsXw3JzcE;x P&ZCt;|V}I95 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 U-DH*2=j&i_;7vR)i18nX;CAml*#H0l diff --git a/samples/h264SampleFrames/frame-0610.h264 b/samples/h264SampleFrames/frame-0610.h264 index c6c4fa3eda164797aa66ac819063aa0bed1bc692..fe65d9bc485aeec909f7c30f1cf8b76a52162b7b 100644 GIT binary patch literal 1642 zcmV-w29@~$0003AFaQ7nL7N~NyagW~6xjz*v)&X^81*L!^Mk@R4#vPR${(-hm;fe; z4`ks!A4^97hC&5g=%6)Vz2-b@2nIya`(MTz510ltg7)p>t>mJ+-xB)N*C_;oO z_VC$N8qeGS0YC*5n`tf7#Cr8Lp5SG=gQXcz-~uKQ|NZTV21LMtWDN~EDlQ-|`^*7} z90WEESzHL|s7C|90|z*eLTL)x8=*8%hvFnaMZ&}v=>bOT2pf1na{J?|`VATJDVexyp{Jak1utxy0R33qVT*1?GMmzzqNZfG7Y6 z1OZ=4>H}?elvVrt_z{3WMW9nY@fDwxcs~sk04-L)a2_k#H0C1?Mgftzr=SgfMgTBB zbztR;03b~xb;y0-1Qvlelr-_uO=PNtd;k(01A`$RHN)&&u(BZkS82?fKmZ}B_kpdh z3Sd)pRN*ez0Az(7n<(b}&;SSSzySjW-@?GD+r(@D1Ozuo0l*IlZyF^;c4Q|j9L!Oc z#BVl%@CH004lE0AoNE!WSRAfo`@J z;sv({002O$CIC5+6W{*8Xdra7^dcotk9)WU0|L3FeflV`IFtWy00IEUJF-<$kRX@s z|8PTs-mDIVBi6gI5Hr0Y7-exrA;P?Z9t<(FXPE{L@5hD|IwxXfiCv2Ub%HH>q5w-O z0H}EBu97C0HeMJcp@QfY5J%J_qTE%6u)?0-imVC>$u2rjR%#Ex17{Vc2?$e;&@G7@D*$5f0hG5U5?3h=@Dc`~2o<6s zzkK5jjRyX_VHk2+gM@qJQDN`+0-%cUyq!jfo39(^gJ1w-If8>{e<72QOkN1SzyQLn zZvqO|AHekKmDnaw1-tkbgqpq&{9pidzz%>T#dONSqwESU_I@>WE%1L8KmG`MkN_rx z05HSC(<*ea@qN-BYwt*Cs=yHB0003&0B$D82Co2kFaQ7nK>#_4vH`2W8;k$|0YLy2 zLTrF)@C3qtfRh9U2tW%0qM-&^;cs4m0CDM(dL#Yp1Xj9~TcWIwwgO}n4kiK>1E5p}G7UOUJwOv=fM3FdW2^5K8b{gT z0|&;YxP^aac+J;Co16?@@Lb#eUn~F-C=LJw!c*LLfQ{9Gp@0Z%t=G5Q1nj+7CY9Wu o3I4z`O7Uojv>x}be%oewn=z;dcPwBPq-4T)q;s>d;$cw0*&S`RIRF3v literal 1056 zcmV+*1mF7r0003AFaQ7nL7Si&yakUiP&qr5VqwTAQvP65z=kp(mDfc8>)-&u01y)Z z0sy>)rJ{KWtTQ@4pKw5C7-#4BzyN@d06_}`NL7!|=wb)(egF$GnG*3ZnGG{3o&pL; zr8XSqi_1(8&G1>{O{>B;nY6_VSo#UJS5dVCd&dZUcL~)_`>uGTtKEr z1g*5h;3k1aQD!MW1fT#Q2qw;w3XN@G&yesJfVajaQvql{)6k5RCIA2LCKu*<6)5oY zVfXvN_BzvRFR5xKm|uk05oFgQ#)SwPL*H)AP57^!@@q$ z00ad9rAX|I$FXOIty+D6@#Po~igNHQFIIo=ZUX=cp@rC26WIX0GZS|LlzlIXhpZsY zo^T%kgN{w>knm?G@>%zQ&M*!TmRhfz{r>y-5OM$x@&EvUK>(F5;B-KThyQpX2sq_& zK?yYX6k~$A`Dx$@x&QzHK>%(h=mxIpRxF|4ZN|Lz@g@Vc?wzD%5~K-}m??sgeK*K_2t{_8ztih&Ad!|GzKa{{Q*l zOgwK8Vh%9(d4JiZq*w>_fGF7a?G$KA-gcx1!w)mIctA$Nool;DU-rLKKCQFYY54#e zU_B4z01*g-fC4o?j_?8W|0Hd0paRu=pAVI|5yad6`Mj7?KmNcQL{q(a3`e%h|M&iX a00?T`Y#tl$_N@`<(SpWLzkkHS;eoOX+|fG# diff --git a/samples/h264SampleFrames/frame-0611.h264 b/samples/h264SampleFrames/frame-0611.h264 index 9c25babeed0a7ef7590078f80f257e5575e61df6..cdec7ece352a020a50f7f6a2f533128da8611c91 100644 GIT binary patch literal 1604 zcmV-K2D|wH0003AFaQ7nL7PAtyagvHNH~i3#=xI0a6mGF*DT1Y9;e_7fBfB{e_G^`OU30k?(>~#rW z{?Gvc0f>GCXU4#eaJ*2|)521ihc2&hz`y`N5fuamfUl=ij|709|KjoiO_#y|kRlie zAc$0F03;x9u%|P+TKSzJgWv(~M#&pe$2dci|I(;!N`a0M`Hn5COp9+-kW(n?py>t06>K z2HiO=KLT1*;vMOl(d=eDoPYs9V8(487xj!F`zbjAoB(k2ZwqYOfZ6SR@AlZ=1w zdu_8e$JJMe1aJrtI-r8L8XKC-_X9!T0GXQ`saDl>^mS|e(8K0^7{~(C00975JOcm) z2XKeBC7$dDmvA6BK87v?iTltQPzDny*X(^b6)xx)OndMMKtU@K4zzVqa#EWSPPQToud{XrQkrU-^5z*T4h|M%PK<6)v-!@BQEa#`Xm&>D$cK!wz`^*uYo06-wW zPzHzqsfUB)O*nV|@8%y5>%)RRL_#AVj66LIa78>g09a@43;;1p=o-K!s(Z2)TU1Ss$nV8FvBBmfMWI1dt>poa6E zfdzr%pA*)r407yiaMb1|Md{7XYKHR++?Xz zpLltFz)6Dz1o0jKg8ImYt{>%Zz}Yl`$OU0`1n+`WImzCC{r~tpkvpR?9rw0TIG=Dn z@;MJGVc;R-G6@+eDtJL){$hms_Y3a4FNu&Q9u?9FvkD0T($hCCU^UDL9AV#qiEjMY zz@#&fHyrTW|6p!&k`2^IulAVjY1!)NrEa@MPyO@{j9wF-bm{JF0D{)^zwH5X0#f~v zQGsD!sg9u}aj*e|Bmsb(YVZ)rjEZb6a$DXW4lpV6N>k_l`ufFERK53sFz}v#Vgv*t z0)dt5cK>(;?;%I@g;I_6{svkn&48j0`vg(D5n^8inB**vEwH#DVr0Gmr9xNM8Da&9 z#CtazK%bfgB?nl9m08Hvz>9H3J?bz38pj1JJ04(0A#U>A&PbQrjg5Va{)mbAFu>Ue CL$c=p literal 1487 zcmV;=1u*&m0003AFaQ7nL7TuDyakDU0RSKcAh3K;z@S?lzySatKx;i*_Eu!%n_J)j zupj_{WRqrO<^^^pPsRU$8~_9Wr~o;nfHj~X$h46d1#zPIJfHv|9Aia{8kn2~e5H{j z@BkQ016X(vW@H`x$T4nqzypE>K0_K*{E%*CBuU<20s+Lf32dgbQ3`V=x=kP;01ySc zBrpW8ib42a2amsa13&;^a?&5XOG^BwyR9A1`0}W zd{EVR5apC2w${V0n&#_eH^30!C<>sP@$)T;4Tu8VC@TOP3EyKuR>S^i3Ie1d{&J!5 zl|T3ZNPP&7e#Cz@{@$yrz6Q08hewdp)!^mu)L?830Ne@y=wt;82~>RzzFA1e%75C9 zaA`5N4z*Uc{onuy3xlvADMhTiojKiSW&=%a004kE1OfW4fwx7)Bme>c0s#OlBpgIQ zQ<9ZEhSt)6EO`--_Ezeh7x(~UlyioLXJP3mSlrT8^}&h(5tJB~_yDhg`3RMH$O?$9 zXb>QtG%30cP+*J@ha6F-zr%2F$;#RUND6U?t2bT^jsSk-@Qt`zB0VRRLIRA8Cc&{H zmk0m^0fK)WZEOK6scSFwf*A_{7BB!u7653;;Hq+~s^gFZFog+ybPE^&m>PGxs3eL~ z_>kfY!vaC*!hZk&Ktw1FsSVUBlx7taz}4aah6v}DP$}|b3J9Aj;D) z;6)4o6qVmCE)f2qYBZv%DMc2Xg z=z^~gC8$w$IC4Z=a|SBV`lLNGUgy}Pc-F~&;1I+xtb}wv%Pim8GXa$FMDiqvpTD>a z@dnDsZoM?`@L&nL0003&0B$Dm2Co2kFaQ7nK>#_4yaB7g8;k$|0YLy2LT>yOr;VRyqJKZncdF=kJ&eG*Yf~0UY%K zFVy?2WLeh_jlXe1C5GG>e#J>rq=AQ*+ys~~P-h?DV6~Bov-(%*|KNy?5Dx%S53m>S z0V)qgGQ9Ku%em(PBUP41u&wv`mA>}nF z+|yt0P(wv1uIF%8|K|i&F?dcT_~@}SUn z)!-qM8#t7@LR;P*2NYfR;L;;_ pTPQ`iqPNcg2C>0Q179#DK!1~n%vry-8JU}TLPUSS{w5U+4RGa*k6{1+ diff --git a/samples/h264SampleFrames/frame-0612.h264 b/samples/h264SampleFrames/frame-0612.h264 index 486b0bda894f679f64a97049c0677cca21e4225d..d63972f63b8833230e864e4ea12744ac0ea2a84f 100644 GIT binary patch literal 1135 zcmV-#1d#gx0003AFaQ7nL7QM2yakUSQ<|5+#w6jFuz~M0{=RmPzwH!L*roV02*H>l z1wg=IxBwsk2mpXEgg%{{AMBViz(pv(ehep4L{342i15A2MTu& zB+EGb01s$z01zAiryxO7zV$T%XE8@{3o!@EN!*9a_>d#)XsiG&0#Q)rw1qFpQh=ah zwVNe+1TTmE3;+lx01N^`cxTrR?FgV3T^jTN0RfNzz&R9`*fLZU!75tnVn7F%jCcSD zL9j>Q03b!*-oPwSU?3AVbSW|_5=!baW@|%~d!OV36c0L{WsQiVOj*a?2x0{^mx&lq zkf%x(03GlEA^|}6V=lm;ggj2q{tRJ|LjU4znX?UD)G@2z0`Zg~0l^$1tbQIn~=SL6RDNNAs`qb^avf5jN$^`xcne+@_ISK34*Zp zVRy?N8}Io15$xL{db5p*-jK-C{8S>~_x7HFVdM)>lae^;`*@&mA|Hy|@CN`lCCo7Sn8AN|0Rs*&Qxw~7{k3C)1sayL-vmY`fuXPSJ%57& zVd8w^g-3FM#&nmj;0^%4lpVraLATz5WB~0LmfZjl3BT{s{j5eLoDRv`K4D+W760!L zh{Qx}krO7sl1^o$>D0mhz-_$xg|?@|w!R4s8}|F+Blrn0a1aVmRG>6DG-yETL6{;{ zOsfAp5&G{>d82t!j2t=7_UPq10|>N+E$@IWb)}R~0Rdv+pg4Hf_wXhj73d^PDorq~ z_3z)K!CQ7Mk9WJlJd{%G&djK$NvBS@^T4>RPG?bhXQHgTt|rTHNXs0 B;0OQ! literal 1068 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 diff --git a/samples/h264SampleFrames/frame-0614.h264 b/samples/h264SampleFrames/frame-0614.h264 index dde4257c65ed29ce0b456cf45db73e89d1e5592c..d3aa642e19fd96f30268ba2fff841a5c050745c5 100644 GIT binary patch literal 1475 zcmV;!1w8ry0003AFaQ7nL7Si&yaj>3{v1AT04;X8))19yH?-;8~{IB z&yw8NxCf#NQaAtz0IKf-QgiV_BdEb0qnke%m6kNVS|bPRvjIVh|b=M)ffYJ zI8x%tDtF=<^Z^8~Dp#p#WPA`4OJ5vBc!krTrGS%F^nd(Pw{xlxOB`DhfneF{r~`g82C`1$9~-%bt731 z)_?-2yb3Ukr4L*?oRG%5qTJz~?vwhz00f5QF&tLlZi5Sd#>l`b_uVgM1)qySM#pcZpu{h(kzL&C)u$$vi! zBp;Rl44DlvNUkTLejlj;GGYP%5&>SQ&=ZkE0vA%()b#I&6nFq28Uqc=&6DEUJYZES ziGTng8~_3YKma1D00J2akO9~cMKIEW+RBGqEKSIB1wz0>@8%8wFc8_H$44WUXjiUE zUCrzU00IGxh^_&Jcr(xh1YiK8UyXQkrjS`YpYXyZXB-F7Ea*);#^v4^Vj5}V2AE}v zUdaeI_7AA&1V=NOP)I1w>9~Rb7p8PAYn1N?{xN)j6bfdvx<#9C&WeO0jO;k02y^@& z^*{45WKAAp{~#bx`}Qpck}1BFW@EtoPyv9Uvzaz`C6y#NL>K_3>S6K`&&}Wf2nL++ z0Vd8BIU|g(a3p-{22)Z3imn!CH{;@^0lpNCka!UZ1`BxosUznP5haTr4?17`#6~~= z70>_#16i;Dke0x0A?H5#UfVNf4N6nIm;{3008ARWz*I9~amF@8JOCRr65^0!*T@*Z z)`)4yT;_6-;n;wt2w{K+vO@`f%6je}fc&%p4!{5a0YLz6Cg=vQ0C+F}00BV&If=Rf ztH2wK0003&02M-RfNJm#JHSkV0Kq5#Yi2=Ca+!;NfC0jIU+|OY!Kl4lwa6oiq@CrS z0u%@W$PJ+6p=g4OCj#>r7NY=Thy&_*v8a3g3><_jK3oVyZ`T3uJs7f&zqg=Zyj><1 z81_wAY$8!S3Ic?Qv;&>gU@rp%UwTGOOkeA|fi&^_1c*8u7Jv)a$|lC2`9n-*@N7xv6rV?XiZ3r#d4^L!oupVGPh z71rR;b#%a*cwgZFwh%oi2A5BRUi}6-+pI-?=fKjRX)IzCum4-Yxz7w{1f|4pY z%PmK$yaGk!j6ITdi)Z0S57mK6ZJIH7a{z$Ans{Fk;pP*9b$G%`{+UBw;AX&j#`NcmK>Do)eDE zLzT@2FKBD>-|nEsDK}v>!m|`G%c%U|LIg;Qt1dDB>A;Po+S=py^Y8(bhH=!JYD6^u zyV3vw06-$DQ$e?!>&_Mh&kqDC4+<_we4F=X#b5#AG7T|Er8AJ_@CINui`|xwrpMV` zZbkseo8mOFFnuCdjex*4#9?js!IE|ZIfi6#gUfrwzS;&K5y)~n>1Bzq61tYR*^dAO z$O8ZY0HIf*Fg`{oCt7bLv~U1m03Z$#6JTNK@JoTA^?3BY2-s9O1wbH%0D>@p4gdlG zs^9?c0CM4ZTmCvPS9rwm)jJ`g6+Xb+_c z785cI)(aj01^@~CP!I>l_-9APX4p;rn0Z7k*kQ@Ti*JvdDGHTqsFAvDz)=`LA z1Nz7C9{>aZ0RT`24y*OaQaL;T!$9P+PT&A;00II`D4`(z1=LhFi{Ht$>pTJ=FzzC| zsV%~#M1N8k0mBnQ5UdM`)mcI(zyIkl25{lw*8Y;I5xe=o6`%kl06c;{XMvv1hb`ZD zz#9OkGyntu5W;>Y02Ki0n3pet@jyci0zja6;ZK_Z13ZSXCrGuvk|V!s(Xn<<)4m-d`gM$Ph0S=QNu*l^=0Q5ZG)@334UCtjY zFRH9ItJY`;P#_BYq0SScs@GsWHt)9PIxPg8p z*mz^z+OXJ1Df-|DNZBj{o!DR}Lqr~?jYgYIHU!hh@Dd>Ca8dvqY4nhnx__u_VZE5c zy4nkA=KewuPyGfQ7G%Rdr5rV#f-w-UfRP770@KxZL;s(xec6j)4|DGf4^27W=J-|r z`mgo`oyy_V(@E_v^iMC&dNA22WBEHDCHsdz=}0AL71v)OZ|A^Tm+Ah&fNh@ zCNw&ZunP`Iz(R{&Ne9Bd?^p#THq8*cJK$hVJTHjy_=0Mp1_8hL0A~xLNX7U6@|J)A di$Ex+om*P}s{#=pt0NxQzIa8@{w6dq7Z8Wbi17db diff --git a/samples/h264SampleFrames/frame-0615.h264 b/samples/h264SampleFrames/frame-0615.h264 index 3acd2c7689b7546fff91428fd9a553e2447dcae0..d51e06505d9bef06a3391bee0a89c2a3c71222f0 100644 GIT binary patch literal 1288 zcmV+j1^4;@0003AFaQ7nL7TuDyagvHL5e;$gw4K(B%DhO5|hKc|dt6(?}7VR2yF^3}n$lTM=2frf#8VFrj zIb#3_6G+{1A9w);piSisICPU)DzSfB00Qj11qdrjK@5k5o-9z;v}p%}JN47w?(KjE zNKx6cj&I!n0DjB>5IA-GYzm#cM!*0-Lv(-~0PvRaqEts_LUOT8#ThOPZvUX57eK@Y zp`QQ(qNqF(LZKyih=?4PO!gBnK1|tZOYgh@0Rb8S#(*<~E)lz-ewH!;0~?0`06?my zAOo2Zd-nmLfn_T_2#HcP|NB4)7!-z>ncqbilZ!uq01yTdevZ4}K>}a5{lN|kdayba zk6LcT_)_$OFv#MHLxg!GxC{t4^C5$~@Q~t%#OzG58iK%GL{InS04J4z=y*ieNgXh3 zst_!pg6I_xNW8EDEC3t&-~|By(|Od57J=K0!~g;WKmZ^?ir4@o8#&-Y>T3Fui8Dx1 z1wY}a0)RkJZhsenWlQs|IE0`yr^0|xvo)D_cP1Gy7Agk1qEb}9Vja`2jBs- ziqiyyDaU9Q#FdqRF?ayVTayYYl$QH|H2^@UXozp$xWi*1zwa1E9G0Nr9!!cX5J!Lz zB0MiAQIaO>#{GCQ00SA!6d61D44i^u@J03j1{G^~5LU4M2d7M~!7_j?-@vpa)$o7g z00X7~bO9bKrdACfU{QCo@vEtCgZQcc@I%!A0%%|Z3^*+^r%NAfggK}J9e@A;0YLz6 zCh!KY0C+F}00BV&If=XhtH2wK0003&02M-S0BZ0KIsCtXj{*P)kZB-9DS!`KyJ@7)NW`{+^qZVUP1gMu3%i~b(ZVcXz@*arhnT6%0hSn>u}0j(E6^)*l1_X9NQv0D*PSjRxOw{3e(J2m(!n>V_t>im$m$Z1Wk< z`N4fO1OeHBYP002NVbI`uhc|Zm&c{v7=9zXySB>W7(06-7{fCN4PkGo9iupB)Dm*4{zgn|ItlduxK#z0RN zxw60#x|)-Oxrj7O0%B3diGN@~!r?(s1TcmgJwFzBxIr(y8j)}S7%3nhbQg63fEqvq zLU7#B5!j+Y2^JgH>0C-S{;|3!~)Omm~127OHJ&|_K1&bWd;2*$83TYraSTl_% zkx)qH00ICnKmq_@3O%c`|3xm%AMXGN0s=TJo2C%Q>hugtNk9{H0003&0B$Cb2Co2k zFaQ7nK>#_4qyekI8;k$|0YLy2LTLbM@D4frzkrVd00@w2AVevE4^7hCoBLQbY>UB& zq5x!HD{J5IC*Y)V(jI~*zx9-y8mtVoZxa|Emwx;6ZMXP4a1o$D5dvmu`N*{CPxMJ4 z`@xZb*Rm707p=s81K*u5fSCsw0s=@7{0|!CIM5N&NeX{}O`1qL)yW_0fEy_j&_qz{ zH{0I@VWKOeEQasDfhmfd`;x?C|2zq&g?NzyLXcdXU;rRWu@nFV11~1x00IK|01(3{ z1a)D7;-q%^(6uMDVhy=Z3h3b$Fd`HHVWSl(fL1*lLdhqNPx|cv7LZgb>c(S`=V$N|;s*d$(3_e`%L@ zTVPnPdXaJ!-&JH%jMKs*>Rwy};9ju>VRAzfGR5Fu1cVqgfAtaY0S9}Wi<{DA%K!WU nEu$ki6aQCm5e8B!BRVxcpZ{43R3kO1PyhEG90|vS^Y9lCVC9=q diff --git a/samples/h264SampleFrames/frame-0616.h264 b/samples/h264SampleFrames/frame-0616.h264 index a0c770b3b360d828e4f2fc319a0d87a67ef68c54..9bb963716b31e94e7f0be961ec3e15ab482603cb 100644 GIT binary patch literal 1852 zcmV-C2gCRP0003AFaQ7nL7U(jyaj+xC;$)u1Ok8#3p8lavu4ejG-%ngU;n@dk-z{z zS<3(c0MI@R4McH&)#bR0RT_{V3}0|O^`R<@Bjn=-~yC)OaWU~`Cw+w00aYzvsGB;l>zclx!F(t z<6`BmKm;;$aY=vefd*vW3PEm5U;g-D-GM+aHk=O34L?4ti~s}xfC7Y0h@WVQ<>36O zm+T@KDaasa0YVJa1nrmC6PK`Do)XgbFVTMfJ{TIX zDOBpVV?WFSChQHC-~a+p2NG!0;;N(Rd{iwgNJJ^P5$Ihdwc@6z28F4qJ@Wv21x7r! ztcW7B!@vLx2IOY6YI879i~s)KARgxc1Pn21>6eo-M`8qo0uV5jm?-DK_y7h9bB}t! zj++laNPhRc02_d88iuk7B(_AwJH_RI0Du4h2m%DoRytG#7r;OR(UX86z$(d~E@UJ_ zfhb$h0m>?UOF)Cv=`T~H(SS!3SPE#M0JU2Hqby9wlK=hc!OI8$0s(*nX&lVg-q-+S zhX4TpKm+d`M5o^nY5)w5wt-@|M@Gq%%m#5fOwq6 zh%=5yz!i{0Zvcm&y2==6yUSdPgm?f07($>iaZCNNG;#uCg%8#QOaKA_^{J2vEivoh z6c7R5gFY$!7q)I^*!%vl4Cnv?0ols17+#~d+yDT8XB}am|4Z;WlJeFc_ZkEp=xeKr z;i4?RzZ$BQRhl8Y6o}?4gA9kJOasn=7K@s{@4O&h(tpe65eS}Q4E@ZFg!u~2$Q}a+ z_=-yAva9UVzXRXU2Iw?3-~b>55C4shKm6{XB7(%BUS*!Pf20FzhJN?6_p~Jgk}3j& zg1ek{W{ zh+$z_(CXM$P_d#Dr1yGXk6=)eIA_ddaev;s_O)q9egFV~00Qu^|2SV}-6Dh-IB zk&ayqaWOWpZ~z$Iz@>Q3@03dJx0ty>C00IX99P|B900;nWpa8)FPa<4E z$Uaa76F@K$37~_aI*tr>feWc?>UwvESq1ztAOUknlmQ`0sILvkQ#C`G5fZ@Sz4{fz zG<%$4(BjQFkNRbGP#9|xojT5$T7cw1REt^~RDc6RB*S6DSjYJLV0ZbqtH866AM6T=Gf?6m zz38AA=^KWAZ~bSBV##_4z5%Pi8;k$|0YLy2LT`X-@C(bpNP!^3qrqqq{0>$IQa?3>Lxe8$zu+Z6 zkO%N23lIUX&WQ98MSuqk12KS4?7t5zkt4rBlmG%2004lYU<8Y(1=Oeu_(44V`@xQ} zY*}@kB=#ct@Bdo?u*8jNwZchq}I3lWj|x#*nNmY?u&crvE~so_oh^iTqTtn`^@qwoK>hlz#5 zm*_~6xd(+lx0mozm5?q&5ckJ|2h*DsWC9u>T4o7KC8=vL5O!pJ{;+q}Q4m41-I?4< zL#_3VXaEQS#1$^Uns`?)gRr0|_5^L(_zD@0~wWm5+xG9`@E4YU{K1t zy#hwSyx?pNY?A($-z0?yhyxq6E5(%~$}mpMUOujy|K0=u!zX%EFy&^a|LZn7_N|^D z|N3A9D!d^e@njhS6Ct<%Mk)XQUy;Zi)UopojIvgic-Eiq>lt7l0%_rVN7)1j#NpKI q7o>jw(MA9m^CEvmZ@>BdBbrPE16hn}bbw+&k1eOa+x{XXFbFiXsWMXl literal 1503 zcmV<51t9tW0003AFaQ7nL7HG1yaj+xKmb4l3TcKIX{MTCh8k&~|G)yA00IG@bN~SW za1sm~Mn*N8B6oW*99?jP02~4UWsm`<)-bKWIOqoEk>l_HDgXikfCmjq36bEV>{oVU z;20r-NV34QZaY)i0S5j72Nk0ANg!jYZ>Gw2>xf?`+!}fEWX_TY|)%2nGx+ zNv_ZcU@9`@fFa(ng_XmbWE)Pt4_-|KgjB(lkN;o@0Kfp>Ms9+M&9ljhNNh0&r}Fr* z5VU+?$P<77fJm8#$gb#i=Q-B>zWd(304^V7rQH*szo@SQK}QgnzEUYhllQ+J-(lGQ zegG(ajE*j;Ugn$Gy-Stf1F2z6Yf*bjm2%bb_G|I}Y(SLveg*Z|K!CKoRF9c7ICbTXFI0GX{Ic@L&>Huz5Enac~ zQJw7p0*hl#v*7Lppu`GG#F#x^{|umTRON01rA9i)ZK)T5kWePp-JIzIn;H3Rq6h^D zj3(jnBPZa106;)B81t-j1k(N>KY|$x^~)xV0Ra6v2!E~Df>H|#Y81r_pn@T*FuPklG~_%5;4Oe=6X@c5NcKIx@?m~waYWzcrl1J_7et79-8L;NuD<&xoJs%(dI1sxi zFT#p%dhj9T#)utEGeClUe#Zv48ZuUG3Ck*wUaGoE;CLXRnn{u-cl-MRKx*d)yH4Uu zEYg4drq&6}I-adwm%zq2P8Sdt3P2V$3+eQW(uDHc2?O{5!A@H3+Z!DE1ct@kbV*mrkAWG#62yW3E`Cu^uvb7Bp zp3(u1h}`iq&m^V&q2{RJeE~`pe22YZwITONdSi2Yb}KPsdo|z)V;p5d5d_JniT#1N zRjwSgB20(={m=~g0(N6{tHM9P#Pk6-KmY&%K>%(hmu`AHY4FTEdD|^rN|F`@+OfDVJ2=E{Z3IUWWGPDw5g?{e9n04Q6 z)~5e;Jf4fx`v3Scir0Vt?tFM_Q5g-wA%fi>YfO6pBj*6onD7%%3g!O!M};9N$fHRn z9{BBEPw*qv^30Ie|G~*Um`6b64~Nac0!s3e4m-dNG14lML| z@68WViYy4#LJF7m({LDPR9}UOM6Z_!M2A>7Rp0%fIj~lG2B6l-3Xc-PA^<6^ zD8t7g3SenKVF#b!6ydt)ej7C!pPL%2fCCPrCv)=>cfeYnV;)3#YoGr#LQA{nJf*jA zMyt{lbbK?v;KPA5@V!|C2mu`*8O@UUCIA@oB6md9-w){Pk$`}0GP^fGVnB#_ZGS(& FAn=Inl9T`d diff --git a/samples/h264SampleFrames/frame-0617.h264 b/samples/h264SampleFrames/frame-0617.h264 index 99be1c1764a73d642f26ba6272147267b759e9bb..2f30bb9b41bedccbbd98c77901500b8762cf67be 100644 GIT binary patch literal 1184 zcmV;R1Yi3A0003AFaQ7nL7D&>yakisVG=tCmdcD8Cba1`{zN15Kxvs{Bgd-4FmH004jwfG8+V?co7VT7UNd z1Po_9*Qn!|NWZ9}JOKazfHH-J_^!ST%h3eXbX))cfKk{KO=rXtTL#E8|Gj_=00a&! zKh}HzPLlzoImE&LM*!LA1``a)f-t`F5&#oBFa!h!2#~rJojtq<)p!a9340GE3b_0L z4i51GkXr*>% z-~bp0(Bx60T2;r41lIm2IAA%Te}bSI0J&u=By`k=?u(EB2nB!ufbb5_6A!1YTttCE zPN#q!02~hk^dwX!eV+CKa1J|gW%fQs%Y93_ffs%0O101*R#c&%A_=AxsZ$SVLM|N7hj0ss~O3a|k2WbhlF zuX6x0fCn{zPM59#pa6=fVD126R4P?mAb2_>S$1|#{lF0ls4xL!)#(rn1KVvM-q-*U z02^#6uplITsPCdDh=#{xIXaM}ch?p>5?>|%o(uxKuvq{*3R`&?wb^xz;sYQPjWxxe^4h)`OWLv3@25k$wKK>wo}& zrT1_YcEk7I^7u^-2C54{hCjq6VgW&zrG%DD!k_OT;_wg$YZcR`nIdE`{DNjdnZSnu z0?8i_n!E-F7m{W{MfQ_)ei#x6xI7|?3?XU%WO^~RrMdHD19dn6;06HkjbtISm$U(> zRuK;*30003&06B@E0jt0pi~s-uK>!s(XaH*P3(5SyfQbS?3J`4w3JP!nVc#&> zM!J6h4rukuZ)%6PE>!<~@He!SEJPglx53^5GzkJAltOod2~7ROLeDd6L6jN-f+DJh z*#6W6ND~LZLVepO|HlWa)8o8X;H5csS~vIKgTsx#5shexcY)n{QGuZE_0!)S|5A2u z@PZIYQpfJdTmos~UkVHgKxhC##xMMW07J-x&O87JJjhEcyT;%Md66l{zSS5r9%?)Q zFdy&U3-rYkIu7&T=j*WlzkKknyiiK9Ic7EGkuc;83ypyrPcRP1b|{F5k6-)%{4YH3 zNHfpzB2qTljsM6Ar-c4Nz)v-&WXz4U0bjI_Q&(T!`~U{rL7E=$JNi5-&Qp!&0@~w{ y&w1GhM`R9#4=0Gg5YEL4YM?Q+Ay#&Co~>)gU;7G_ic?{~UJNuaCmt2gz#!10&*Vt} literal 929 zcmV;S177?90003AFaQ7nL7IRXyakisNeBcpkGFy?kNOS*I@}kKAQS)z$_Fi|I9r}U z^q>7NgAqZX;P6%pf`bSE4W?#@razH*1P*X1Jl9q(LkT|b`+x|v3QcBpivn(1meLxYQhW#|F&G1!{iqVVL3M!FLq|=}TlHX@XyX1_U|b=+I$; z@pHbGfkf%#5C;XB-~!*rfPvs`0-*Ubz#urXM+r7I^%41E=c8tS3yMYoB4yIYaE(c& zQB!UR00ajoInZy;lK&H0003&0B$Cr2Co2kFaQ7n zK>#_4r~#|M8;k$|0YLy2LTUhN@C(WP0D%GklL`r75HG9{DvhwNiU=p)_*Qz+ZEBBZ zPm-VM@EfK`p+X>WZ*POKA^=5!AVd&|MV?@(ew5>}s;k<;he9JDBlbaE?*8x*AWR}cY-HgNMqq=`k?lI(*OEqXK-Kb zqM%7?M^mzXz)d_S7MOd%EV#vE`o0003AFaQ7nL7E^MyagvHLE|7NmzMitOaFvGL<;Z#a6Bgi1kTgOkUCy0 zkl#1}5tK|e$8rfNdc6Px0Yg1!$577blH~ff@F8}qwvq>fn@6}>;qDA8tg^)%3#Dn9 z$MypC0}w_OARSv&v(4}r0{3-*5GjF0g7-vFaj{79x;^66+xjtl&1T{00INp1weEGa(%op7||dbxd49E009Ceu>=5N zwu1ligFz}^GHKu3&;kcY2rrbKm;>K|@P+{Kzjy=#3kFG+h7n2a>+gJcNFop^JlHc5Wu8FAc0~Kdkt3Kc` zrSBJ}KmfR4D9)2yu;BND33M@ZffWLR**z$XZXnPKpd$ppgfrj(fCE3mVow7!tpL9; zVW%KuSAYxxkfQ-3DXOpDnrr|6{uhMc1#2Y)=mCAJzyKrw92UEz#)k;_;qp2D`QQ-X zNkNKojZQbdq4tVV?6<_M#{Wc03rYYfM-T^R04SRb z?qdX5cs5Q~3yMd6q2_(!@^CJw-g17*n5!S1MCV90Xq@7pqFU)A)%{6d+ju z(NRe$Q9ZmcCl~l9@lXT+f}j8@`$D0-uV+DZcyI;+h$tl2n%g=4pFKI3H~rQaH9b$tCm$@ zm@RP|tVA%|dq4mn1ONgIQUEr-59}F80dy>b$f;Egdjk*t{38GX0H8P|$TQ&)cc!XW zX@d>`hhP8z0YLz6CWr>F0C+F}00BV&IfZ&pA4C!(+-slj9{ktuuxm=pj{fiTm?8;wTbDj)#%-~hl69RKD95EF!$ zfq0so|MkiL0C=--@J$PYfhz`vE3w2#*RSuI_#gD47PGcD;D8SQ>_sb>38{gJhnD$8e5Bvb^-Dr)W0Z0@L>r-JG)?I_@H4aJR Z_u#~64PV)jrhnI1C-5eo6VKu}1y&s;D#`!= literal 1161 zcmV;41a|uX0003AFaQ7nL7Jc%yaksO5`Y7M0Dur6>)fB+HB|1kh&tdKBB1G=~J*8<{% zd3@kd34;b8z<_Uv1ONmCU>*KCL`#bzU;XYz01jJ%Q3CY^s4XPg-~m%`00IGk0+s^T zLZu4{D0t}PM|p|PGWfR#A7_XbC%^y*11KoqWofGa2bhZB+6RfRW*}>bqAX8H-N$nH zQyzQ(0RVs+K#`6-E_(1fe$XLwtHS_L00aTZqQD9f07HU`jDU&#;12+xDA&q{i5xZ# zaSWxAWN2H!27v4FMgj?AN;v6}vZkN_V4(rdu7^wT1@^=o@c;mT5CCx7yEH)c&XKfg z01dz(@Bo2<$yuyjXtZ!hyF0*QggOUM+S4=Dg`(P}JRTUJOXDqEoZT^TQLEtijIG*V z0(UJDMlwcU&LAPJaF=_2C-@u*b^!6VSX@L2)j z{Kdv>Rus=b0T+fa5&*7k!J$%hHYUzig-3V`@)7%I8AFZW00;$x(V!e$T|**2+G7={ zcz_si01y&eLI$En(WN9ZFem=d00aSj02lzE9DhdU>P9b*Pwqkh!jJ%(hs0Ob9crX9}0YLyciK+psz#EJJ00BV&6+&u&YVZkKz(|2u!=M1v znAajt{>lJ0ulo1<_(npMkID;Sq=;#J1eg>6Pk}Jg#v6|N0b&3TZU77b@yGnYlNrKH zK%7-B|Mlpc#@RUq`_z02nj8nw@2`k5s__5*G8>c_|8`m>4p||Q2hZk@UJ5j z6qmI&FW)!+z@zfpc(=ep8o({~3!H=mZ+Y=BsB}`$pn&1^wCnc|;&Tm6*SsXeibd!z zpQlD(1P@e&Ed(g$0W|QBu|Xh;9&XGR?%{>Gs=o&t>od=wzthc1kNUOYER8$2{{DZL zSAKOUK9u}^ujzOGw b@}M`z`v$M=*%D*_ePM?JY2iHnBY;(4spkB9 diff --git a/samples/h264SampleFrames/frame-0619.h264 b/samples/h264SampleFrames/frame-0619.h264 index 9f359bffc2326c2458ee1ec82087002812383673..e280b31a11cfd9dd7b9bde6e2fd767c8a0cf32c9 100644 GIT binary patch literal 1400 zcmV-;1&8_o0003AFaQ7nL7G4syaj>3{+uW~fC~g*1ArC^Cs?2d!3-#cBh}~vV6O_m zJb!dYg=5-eO(>A&$NyVFIFEqv06+jR0K=mCU_S$yNtg+|bzkZr01yV6fL4g=oC>Yo zHxBI5nZMuy(1%wEL82^@X!UylNaqlu8ZDiqK}OqC!z3862JI-$V}m0NbkAT^02JHu zfEdzf#ZdU0)pAMg%-O{NU;qdKfB=A?00<9&Su=qEa=;2e=bPsC z1K@P1kANMC!$(e^`|Gx0`f`=aeck^rii(+*GLDwi1px2?ZY8-Vqwao)DM;V|AOefp z2}#fU+#ueJ8b_3>Z+YT4ZiSG9a3C1B0?8=PD*nx$6#v{{0Vof)wlj}|QWI$!0097} zr~u-7Cox~`#9)D!+k)45#Lbld_o-+QdYvWebeQnIZ)<(6gaW_-iGUa|>*+RQo7o{o z{25^dl3rUwj};MR|L#Nw0ehq-lLDV;rLX_AfB--g3>~~)LPM0)VGzTA?f?!n0FoDt z;gNBYvYGV7|L*}HjTtQA@-M|Nm+u&O00aT@FC%K*^AAn$EOAIE^ ziVJjBnHPF@7+cGj*uca8zqjYM!w=Pe=JF=_h+&8Trs`qx5zo!w00;)0@Bt>w6*?oV zuaG2s>IPF%0*bB{XE)>E$u)|AA`%Q1@%vIo&K@F57CatXF%ggdv0VTFKsB2H2@8A% z(jIf~b?vdgQ>jW!s( zX#i^Q8?X?dP!wKla-kYumVHpGw@716G z|3I2}{eYPV7@(v8JRVOjzijXS{s0zF)4LzXD!?+?S0lod*MRB|w-1OzU;gQ8Qmd%{ z_i(UdJ{lNZo-8JPiC_Wsd2kN=Ml~cIu7mo@BzTU3ov=6W;1)mLm@z+R0Ks^o$*Q8g z`~eZ3PczR^$N#;?4D@Qvv=zgKAbpq|*}R0|Pyj|`WM)Q0WMo)>_#y$MU@L?Xqc0DC zfiV7GBdUS{K|rb2!2S<)s}#UdhJ8#EsR=j#(l~c`Zny{fyAqUzZanF8=MZ^>d?nd5FT)%Y}RJO3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxLL%|4%;s65indZO*!Tf+Q43K;cKsx|A0Pv0_#Te@&^JGH+06YeZs{N!Zcs>up zZHv4T9VH?iiy!_B5r4)E;+M`*>n(zaX{d7fri={4jNy|!8_K-0|A61m3FxfecYVOc z?G20c-|mpsDK?g{UR+SaF1J8z1W27LK7@by1H7JFCjS3?05XuyI+HC)!k_nYKmZ^N z1XL!2Z#vhW{FvqIICvpQcu{gg{VFjHq;$UQy{E?$C_Y4F86us5}W6b6Z zg-^A8|NQOaU;rQl0hm$1yFNdI9;5Izz5c@iQD7v+7k~qR9RS72NE0I{}{ zg0F*?D(jv1ToyUs!l(xq@B+dB5{Z;UXIwSWMC!72iysDT_j8ee7b zVkih%@Z{7^x4g;Q1ai?-YzsjeL;0WAOl z0cMo|0dbx#xEK@&K@v=h5cKX7krwa!fB+Bz0Rz|WCN|hV3@){a`{C7 zv8gc{|GY2&U^9jQqv2iry84vuvlajobN~PWK>%(hum-OHcrX9}0YLyciL3#uz#EJJ z00BV&6+&wOYVaGd5TH;N62KwzWchYJmUteijX~-Od}m zZjdS&=Bt!*;0T6!K1Z_W3;*wt?z))_;j;2vv82|noV}}}A7!esWfB`}B`%rnp zrQlceSJyg#0ofDDfyfh<-v0m{pAnoIdzK|{y63b2p}Y?pl<^NP?gCYGE2^s5-066z6fEt*eOFZlJHDaJsMSh zaeO8+z(M{nl^}`2=P(Tb5CM)5p$dK6HdRKm_kaLU1B!xeq^DC6^VHRNGTFh>jHqw{ z5r{|3$N&TY4RA0VKuFWVg2Dv1ba=oRk-+A`s;hx5H3;B%0AS}59I8UKyDJ5P2`nH| z27~oA0uNFoy-1M;X+uATjQ|V406-B@3IJe&&S%SL|M+O20cy4bfYENzr!yCFFbs{& zJwSW%Fae?as|PG#0Rm|ou0!ttAhZd*p{I_LYb8`G+W-uZqqAik-?{(*{n!8?VB7du z6+3v1fB=Ao=>RwZ;Vt7tsE*8pI2BDt-0^+DV5kjFQc!-D`mQ45& z7#^l?NlITl0099W0L6eSgepI0Lj5dc2kUMe009E1m;mL(Pk-|Ppn+1e(1^7{J?`KH z7!}PaGk%II&LrOe06-W;>N@`6Xdp}W;D-ghcpVEzt#@L4DSARMh~kVxg?S{nGQenF zWEeZY2@WW9PQ=TRs4NB4ME`zJ0(n>kLq|#El8N#C$Og;Q!dIBaY4Jf}ikN^AZ5< zPZ$U~5J!&0E4YJV)HooXD9dgs|KRul0RbQwC64%D&lL-O5JYL^uk$4Zf!TYP_#OaJ z)q#PzCC7@5L?HYCHgQ^T(8YQ26F8H)umc}}0x6G7G`3Qk?Eq>3K+Y8fP@?NCj{;v_ z8H^ORs6$>vnr#yQfE5N;hU7;%GhZ#A-QdUo0ssed2LfVTSz=o~9RrWB01yKXwUP!I ztdYQCl}v0CCi?4{rg?cW4+-M7M1UUcz0YLz6CYT1V0C+F}00BV&IfUiNnLnsLpOSRS;Sr7yO89;cMcnLrVB*JJ**MgSR<@v7s z7p~CbvoBFFu8c%9P~-yw?iT$4RIoum?-#qq4HKOI;+TPt9gxCJ$Z0Qn3{2hNpKtZg zi53D7M`mOWYedmH)H=T)7m5aAZ`YI+F^&v^y1#eA(Ilhq{_rLqUt}4$Y&m04iFkzT zKq@K5S{%zI@ghQV!o~;)1|@XuN53=4JWMip3%m~rM1m$&-SOa3_jUjN?}dkGF4;0T z3_v_tmB2cux8L&kkrp*$xB_qioETgd{|TX#gd7L}S?|2DT2tTpkXv`#9sN`X-pOj! ae~>T*e{51FY6ORh#;2Jm!dIS>y literal 1126 zcmV-s1eyB)0003AFaQ7nL7Lziyakbe2!;3%#sr4|08{|l(C|JoFCYil00;*F;+@V( zh+lV`_x?~ObQ_-mOacrBl2A@o#4{7q#bi)9Z~(Ii!bQrYxZNt}fP+!05~UH=rj?&;dpMC0t5l#C3Qm+na0^j6CP}CEAHMV>A)Zbb_cYF?E_dD zT>sz%k62`hlAuUB$Dg^8OTYjS6C7Ru7-75SiO*VrXh(i>umJ!u3mAB@B-e3U;QRu> z03Z|=v!+0}wuk4JRMFrgU?F96L_W$sh@J=lF~Fer$Z$SPP=w?b>i`6c862Q&M}Pn) zLI1Y~a}WdoFaTk45<-S*Z1g5;9Lc}|6Tu+B6LNL~n7-H!Vc9=g0(pO6K!aeoClvre zh7h?`P&7c;X*wT|%Dn&s0+s+?P-XQE05E_JhJc-*5U5M20!M;-AFYf6KkCfnHA9O_ z^WXJLZF$##0F(j%3#1fy1k|A!ZV|jHd?R20AOc_p1dtj+>b17-|NdVB&?A8$!Bik` zfB?Y)d`_6G#F@6wE1to321x{rs*AKqHas_l#a1`~2q6Fff~V<_01y%a!pJxefB--+ z6>&;ud^_+{3QGVz7UgLI0RXt~p=~7Kp1FPfhytNN06>E<&!s(Yk+F-8?X={QWOy23aF;xf=@nx)6%WCK{or~ z5kMA;t1Lx2n|A`_+b)4SayT{zE!}G__HYoT=n+fK3@_d#;kV$Ish_oL2y`jHaKM=5TpR{ s@4b;)bKg1vZQIy<`yc^Tn*QPaFnIoofiQ?uzK_5E)BFj?g>&!?9Bh5mn*aa+ diff --git a/samples/h264SampleFrames/frame-0621.h264 b/samples/h264SampleFrames/frame-0621.h264 index b8a0d7b30dc7ea663527989a041345187bdb7a16..330abed0542a766e5d259c170ecce933893ab7f5 100644 GIT binary patch literal 1712 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 diff --git a/samples/h264SampleFrames/frame-0622.h264 b/samples/h264SampleFrames/frame-0622.h264 index 107ffc3fd90ac3e8a45ac57c3e0d4aed0c33d393..dea62c092d8ffb9834597da2b89c73fae2e39e21 100644 GIT binary patch literal 1087 zcmZQzU|{4l01}R~7D(-3oqUkP^6Zb<#y-rg77Pju9E=SHOYG*(mVYzDox4hH6nc|^Cye3YuWsc?X?_0{%kPk=fEI5g(*oMKXz+7M_~*1({^Vfpyt ztb?8#r*eJL-(PVcfk8ncP-@|VcM{JT9|&-K`&gH5(UEmNyiJlXn_v>5#n=%-J7y`{089a;@@v~)HSTr;+G}?QUIrWI5g5ejASl{@d;BO_C5zCtwCDw|)Uz=8y+ zqb(a4CLW%+@U^`8hB;>@F$ghl(Er6?>UBR1=$LT>A|_l<1z3VY4y#{_2AR zvl$cH?1*_^6PG-lF?&z+hkGsVhaZ?d`u{-ku8K#a#`k~w|3kqKI~(-_|JWEh0?ey7 zuwOiI{IFmf^SuN7N9|sxNG|)Y<1{HQs_<6*aia&lYI;I-<@^79Fp;>Zzz}h*=ht_$ zM7`tpKc;vJu9v=j;IfDP^p8q~%13z^(r>s4G{&{*-|u*p(H~#-;@%#`izUZ;-|sP< z*%rmonE%6;x!E8$L1EkH%ZKXi=bwN6`RAX1P{t2C`^6F-A0K)qrf{*o=UUKIuO(gn zo_SS{h!FRd_aAuMzC4??|3TpzucJ$${Ki$Elny5`Z~gze zp*mXGqx!A)j|r26)C2{&99AA(#U?HI@`B#kuIL4!zAFkCeP$(Hz0>}TDPH}%>EnP? z#rwa8>^=D1iTD2oxr%UP7lE9{e*B|cyh>}RfB>`QGLeXMYulYFGLLGGt?$=-_-LU5 z=cX+x7w-Pxj!9GsW?&cE+57iEW_zPn>_L$PrfCUMCwX7}&s`$o_~2iKJGyt73>yHD CG~yWm literal 1092 zcmZQzU|{4l01}R~6{PmCPJZCY!P2%gn;~^^R%>l`(|LxZuRCKGa4<|guymcp;bX;T zf8MN-=;CE(Z`u$eBFVsZa<-H2-N5M$3Kq?$p4A<^G$Wu>{(FO9hRCf?%srehnWIAs zWHlH#ba|#Uusc?)y|mV);{P26#tw!}i7b_dGMq-DFLrjw^Bm`BoFJoNlIGt0XxXNJ zo77(wpJ3o%5!X0+!OrQ+xeZ?Gt9}UhDNf;B=^)H->r$1+xvB?@Qy5s7jCVFJHV|-1 zoNfQlfPqE&0E5#61{Tc&3{B}7wi^!lBz)T=`}ITOBKHmXYajUQzsTcAX<$uAV4S(!8U48F(@t|09NQK$f1{Mas zmt6|13shzQzh_+`Az<1qo9R=rsLZCqUE`E%Z$d@S{-)NL9|mR#Vn1>Zy6T@hq-K%*XJBYpu#{U#&5Kd@oGSAJ&IS&JU>Bjn;N_tT1{15U%wywu z#B{p(i74BvGpR{8Pvti-Gqxz@TJc+C2?%`K$*WX8!GVuu{s+dC!UsBvEFT1#j+|$3 zu=v!}xnEh;M>pg}ms9zNn4%55l4kR4T34T2eI`0Xfk7a^MyEu_L(-kmm$!h2bxwuKwqAJUB(~gFyJ7FCXTgfByOBpMUlCP(~ep{~L9ifB?~0<_7-1%gn#G zy4>IwRO0_<>+#`LLg|ZnGo|;RP0VTE6wuObRUxFEF=<{~;3E0oSEq3teZ}@e#W#1Q z$5I91>CgH~nxgd|IXNwIVR3OR5M8uyl|%FE8-2{ra)Oqzrfhw?fMMs_Cr7oX%r9Wp zwvH_hezZi=Py2tU(ZR1tEY%w_f-3w`9aeA8e*B}{sumWr&%G8>l9$hxG@9G3aq|E5 zpS8k8rO_uL^W_h&FrMl@18v6de`{?W8eg5B*~7Bqz{yq0U-L6=dvKer|M|EW*{?uP IHz-R00Ci8}dH?_b diff --git a/samples/h264SampleFrames/frame-0623.h264 b/samples/h264SampleFrames/frame-0623.h264 index 6e9c74ba3632b47633b9cf4b163c875bacf599ec..3f643dd5abab2efd99ab316896962da09cf40c66 100644 GIT binary patch literal 1249 zcmZ9LX;f4N9L4|d&B8FU3o^if&)7$jtrS6=g*al!rY424qlh35fdq{3-b~1W7-8Ik zQH~&{Fo<9*N(YG<1k*G@R1gyw5~D0(SY#38Rr;mV{cz9yaL@gHx&VM^yZmGP(@OK} zv}3p?pCRT4f*#uqFdO%!&3Y%S1_nG}rK9V`Lu=NSoh5XP_g3F3POVD`ZK>51&iI#s zT1S9W#v+~}1qU<5KHfFg&&#h_28^!#C}^IJR^PmZJUYrrQ17{aIk#xt(1TQyY%vCy zxfh*j;MMx!uA*_-YBlwqK>G0Ha)?t{YcMdFNJ<|VaeMRBx+@5>eS-JggI5>kd8ho( z<=J2M9w@GBZz z-u88nC1ZC_t%|l6DoS&JO3|8WkNC^4peg-jq-q}aSO|~Ro&G5)Pm)PbHqCw3d|VP_ z+Q)MM2MEsG8G^0(gJSRDNKQZtSc>Hm|L9bXCV#ex4gNs;k;ZF66?pcq1n>|g@E9j} zG{b4-w$eB8Y;b`PyZgdxAM_a5#rc8ZT=R&2$00ViQ{EH1Z5~i~M*p6~F#k(*nZoRx z5a=#TuQ?WtIbFu0+2JI)*0J7KnGd#3)J4DY!l#yQc3HO^?KH|$Aev4g2gL8G8XAtr zREqF<7kd_~BELM6aHH<(a0Neqcwb?iYsNbQg)$USssjTvf0BqRGU`7!@2XxTUye9b z7%F-@;%y@PZihJ6>M-K>HB?Dzngns=S1#KF_ZM>}{9J~~CP2W2W|AP^A8NA{?EM(P zV8=3R{gbK0ZW3?z49Ddh-Sjzp@kRClzq?#2Qc9#eS?MjX+G+B8e-FEgVRC27XDL<< zAXgFfU(oq&FQ%RHXl5hM5T*aOwS+5K_v;y(4-qnJDU@K(7$(*T+~Q`iV_tk zqPlZ^hvb*Suj+W9mc+j|f@HfZ^m@p6`zhF1P>WnrS}=kTtAzz}9`WC-ZOK=2-gu_+ z1aI3Wf<)M_!FW?N72mN)S5HYJNTbOT`#U!*+TqLfr*%uheGWS17jS#&t16i>N0POi z8=Uirn5zjkIj;h@+hQGL+g%Ac>- z##|o7zRwXRplJ; z9Jn9_b6e~Rn5sJp;|zspR%A>0Sr|Mssf{O}wYrdg-n0@UixAaNM(F=mvDN>DyrU7; GtiJ(E*ej9% literal 1104 zcmZQzU|{4l01}R~9i;ZKPCn9D5fH?{!6Bh$Xm#YY5ckK2w)1Kjn;IAEy=>oF_Mj`Q zsV#vq++a$3i>1t>1HAhcIP_MDeGp*aV7&i&14DzLci*~$AO5j));tK{Z01Ng(2zbs zf#F~T%kREoXQvO@&%NCkn3xhH%pbgUo}Zon^#C7t1A_nugJwe1ztuU8&%kxS@dGO(qeom;;o$lQ^6F_HI`@Fv^!ceIyyKbYcCqsG%H(Qx8?g8_p8dnv<`ZgXKL zrt9A>CKzTmH^!!?Ok8am{lA8Z#cDw!lhdhf4nDU}Jg}O_7N~ZTP56Ovqs2#mVN<~k zUDZXe_!$@!xC#WEUaaDtpA%nU%*|l){|<``yXwItBjKYZ{2nb9zYq2(25Y=Xe&QFn z_QA&Y4GaoOe9M@gnO*&~$Z4X*Co5hV2{Ac`h`oL4H$b5OGq)^y3N$y8Znz= zTa0Ma7T)KJuX*dgvjK+bgeVnuVL_Lj|8v%N{jX^-SiqnluuLJts-%wX{~@PMc0kkF ze=ssgu+O=;vMW%#Ir#TPhT{SZ79P#dosKu$+rv76DX#&POd0ajF0idx@xt-n^q4o+azqE5LCSsxS}KCvEj)aFP@Y7k=H;yowi zG8U8qVc=Ex6S#4KWMsQr+BXBA@aKVZC z{|9WDU)OKn`{_oAmI{Z-5hWLY`~OhD{=DUTn1+Tb(}vWt4<^iueb-ee?C+CXl>GGG z!jmg_RZnL{YqHkgyHIjF>+;s?`~SSreiPuu`CWi=?7nOBYU-_~l`lH%&oj2q S6GbzUgB{rhh*b|bjsXDe_vOI= diff --git a/samples/h264SampleFrames/frame-0624.h264 b/samples/h264SampleFrames/frame-0624.h264 index 4abd5b4aa985c2e09aeda32fe96179c745819a1b..a7328ee06f0d291fbeb1829d4b7b7e5873519088 100644 GIT binary patch literal 1543 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 G08lUx=*v&Vc%tyhtMz-~pR| z%K7jB1OdQM+zf58K$^X_m$?S;tN;|i06-#dKmb4tENH?461Q8ygi)rBDoyP=@!`Hv zOW=kZor07z@Jw7|mr{&~Bckph4-~m&R z1Au#_9?!vHhQ#unh)f=)?4R}DcmM(cbORCrT5_WHY$497+~H4$fB-;xBnK*O_x@@E z4wak8gd*R6XaNirizDXs6i1Zu_y7R_0~OgS^03Bv_-HsnY-Jltm3Wy2t;jf^8 z4i0e``kEj1dtiJXfD9b6UYjF?79eP+f4|I-0LthPaWM|$5M*fEm;Am~xM!D! zzylSEI08fcdnTcQFm3h#80kwvL}w1zVsuIDB;Y;Xz@ABK;Q!13IzSJ=jz6VR2^m~L zPiNy-RUZfb_&@?^Km-tA^@<57J>kF*>;M1(K>%(hzy_}XcrX9}0YLyciLe2yz!;H# z@Hv5y!+-+xzpM2Bz5!4J8|p0`ZU3`B;4}e|R_c~o@Auz8+^_7akr_Vpz6bC$0jv!I zW1~0#W-Bw$vaWJ^wI&0i5Z&HD1T9Py0+|TEa4xgO7GM4M!WXY9_{uh;;$DAFkWo2R$Hp^Fz>P{O068}zMvhx^g60003&02M-P0BZ0c ziS`GOEeISuEdW+b7@mMF(=xvMF4JOCnU3eH!O*DuCDQG{2luzk)jP8b(}X*53o zsO9`38Q?=1U_dqxcmOoQSz!+9jFMLED`*68ux552i~tZI0vw>rw4*aGvo}yu-~nt1 z!kZQ|OVVz55U)5=8!lBgi+Gu}ELcDc;D9Lr2NJAwFqi5-jj!wi7zrvjL@_Ot^U);6 z-ewv9IDJk60aZg%=IJ6>Hc&_41rDH|Z4v;$7U$Jr0tbKqAPy;f00IC7lMq$uN|5|b zVpy;Q0yE4EanGirH^KM{009M{yW#U&7$2Rv0wFSl4e*P%6ArHN004kMK%wqAu%pKu zk%afa36^Eb4G~}f31NTj!IVHi5C#BaU^$j)d@cqI!Rv4Ww}}A&0_fTT)v(AF!=_ZE zJ3y7xw44@BFkBdp2lYY-*#U=tN}EUmOE2sQ7+feb8Q90PDiQ z#ef3P>aXv-7*7zul4vLk4<*}Y^x%5n03ZtQ01RO(0CL=gBTft7`v7nonWvn7p=^`>_EL*rKFCA4P|d040e~Wd4cAm$>sQFXkk~jb01l<4t0YLz6Cg29I0C+F} z00BV&If=LdtH2nMfABehkikF(N2|yDS^+RJd08v<;(ftj0-wz)hyQA5HGk)uNB-q6 zf&2{sYXd--=)zzFCw#5f;gd0;9dEHnhfD)BF8xIvJ2dw4z0K0dP5QFdXPt0<{jT>@ z_urrYKmN}HNFD{uapzG|u6zKq(i(Gw5$|jrpI>`--@ux9XD@-o3&^ZiI57Za8d<0Q zRAvAKHAhgIX5-Kh-v$qrm;hWsH-+Iv^Z-dmZ@Q<3cpSjkC@==>CH+t#tB~LJ*#J=_ zO*4c?@Nz88uha*lWSvkL{0h)QEbuQi0U@ZM@dfH|P@*QL8vp!s(ZUAcVAc^w$ z9ze8=*nz{s&;n~F2L$vxDT=M zq6Oz&bFe4lXJmRs00y`McyrAN_01RLNhytrnQGJMHGp|vkj_?6|v*FQ@Nnik^ zUm=U$ajW3bEAp@zK*`in1Ut~tpT?x5NfHnL|NsC0|Np>(cwaw={v!^5KcCO%^ZES# Ke?Onkz!r@6F4tQC diff --git a/samples/h264SampleFrames/frame-0626.h264 b/samples/h264SampleFrames/frame-0626.h264 index aa86a477ef0509b5c72710ba14e23643d909e912..c67634334cc81dcfc33f159b4df3374cbaa18712 100644 GIT binary patch literal 6729 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 QFZ25S!S4wC8w6PY0?;4YzyJUM literal 1560 zcmV+z2Iu(z0003AFaQ7nL7Si&yaiW5f~A-C1&e_QQ~(?RPyiqW5E=SCLiAEv>oDZd zAP6;{0G*OzTp%!qbDjVGAj0)31}6YD(PoLiYm6blJLX#f@R^})a{lxJFbt@0ii_?= zRHFL6W&wv5heIfA;!g9HtgQe5fLs6^0Gb95L@-ai=)?fL0@a6pOEt* z595C%V2C+!qY|>}@B%P-6Dr`zvcXIqu-dTvLShJvQn3n0b_Ze%t}_yEEy%vl0>$yj zR!jGg4a6|PCDq@ClrvtV-#{>n2R{^fM7$s$fC3QszEHV1j`7U@26ClO>jmZ?00?C) z&qB((R0k{u9|fZO`SSRipxMIX2LJ_=l#La0(lLJlq!_u2#d?ic6#z5}t`M>l`)2p3 z=23!t_5A$-y3y|*Mc&X+n|*AI)4Rn8nFvhS!xV;S11OJ~dN$g#gm3Fg3PMWP|Nobu zAYj8*?T$Q2mB#mO2oK?aPqDyl@J3$VQySIsAQKb0z%Viy`Ihb;0#U%sPL?Ycc3J=b zy{srQ5nH>V`|K@=lH(8}4|m_d1rXkBXmg4E&;$yzALVo`##G^;-KWhyb)Wx(Edwq9 zDA@}+do#JO_w{vm!0lsUQLb*U2QP-B17KhV;7|ucAShVd2cb2}=o0x4`v))rp_d@5 zO)Fo#0099Isu(#nE4Q5~jV2`mjcxz|05BL2#cT+)Bq4MFAOIi;1%!f~G!CG{6#?rB z06TdmMw2FF(|!OkNHK!KG^*|RK*YL5>A{=;1OO(W>Pr9sKt-SqjUKP46)}|H0s@K6 z(n|+Oq!ES?!3t{k_{;#nCB`5F#t3nUiuRrj3IP3y!;&DDO{`8-K%%1wtXxQ~0RRIH z>~)ne1fzPt&{aiV3;@J!8Udz4hZqu? zl5AiMf{aDOIB=^@c?0x-03ZyYE|SR_)JjkA!vOgaFa`_8qs9OaL4m4bldJ+gWtHdx z0IiaMU~boj?HbKEAY|8R`G4F53O*X1QBfBd7a`*81P;F-vJ|3tmplx|04z-L!UBHA zk(QzHIBN_d$~`3(&%x^(82}w{@Q{Kw6kpx|2m%a(OKWC%V2!EQKDRIi3^GMYoN$@D zUI4&0$m5<7t_jw)Dpjul8-O8!)0r6^CY+E9d>@2DF_{QNW^JH-zv<{%3kOebu*X^N zssuK;%SM+a_%RX;~I0X zN}%8gpx{4Jy@aQu>ezMsH}0Khr(h=n_k{okMw(K4I~j%#pV ze}GZ3-IsLwS^xV3c`GbYQHg%mnAq%N!Utl=&-Ibx(a~X<|NU!TVUG|xjJxgozyJ^v z3?RT$Zyv4Z(2h&M(0vtK5Dfs@4hC1RB|j!NYqJJ@ex<>I49kXM4&G5jf$CxBC026) zMTPX@CFDyBeh4yJg+s!KgZuGRs;Y$K(_r1UV$k>#JAgJro_!z>1aJYcD z$OD;ytE-1YgxyrUGY42>6vMftWy1k=KN4j^b87=o(k)-6R$$UoS^7ZVKY!eOq2YlrbU zSd?JEns{$7XYF<9xK2%0meFYGo5jAP=&<4j`*wB@kN6NXp@AXFgfO+do(kSVVL9l+wJ$q@1Ng4&!5lhdA&c+>+^a50Dx)O{Uffoa2x1I zterbpoa`0qZ?qK%rGmV{{D&zmp9Q|~9kO_zpYRzLD(Ud)sGrVfqL-B!Lgwn*4lYWr zrdDyy((1BQ1SyP#A!tZJuidVzJ)B@Xd)lxg67Ul8@v77yX@>bce{*spX?{J17YDWZ z(vtdz9ELw-LYx6AW`60E0Ap)jgp}Hr?FopXc0rwMsO_o0_5I-YAPj=aMt0F{Qzmpn zcTox@h`4q*^iklvT2EG$+E}}7l8YUcAS(Sk$y7;_uq!|KUu)Jk5A5|3A%2Qa(v+bu zl(%>%g$S34@vY-|qu-Cr;-UFmkvy#btrXV180!15iV?4_jAcn1v*|iZ2&AK>kH4XC3X(aF(lO9Vh`Q@v2X2Ku z-;UV>fMnxzEvTVqrzo>rIgBb#sa?lh zgSU+Z2rwhMA;|#4(-hy(0Q5V{CKB}hUSG3nSN3WH_J$ef5W+TfBm#nt&=0%|FAo9> zosI}h{}-9*tE^ZqE>cP;^07lnwZ*R&&3H@pkGm9YGWVfQ5L7tUqEn4$)vJSMj(Wp%eNKyR?bW9*qWZIwuMq~(@hgPx+^_SM zlHrrwf$$hU1f{N$K#r*<WwmQG>uEY zs`U`#-5XT3F)5CgWgCgkPs-wZGp?pZwO{|uq(*L6jnAaxU$)ill4GEUaf^-}n7Jau z*OzBcV|!$=c?+B|$1nqKtXxrRCNkI!dB&-WpVl8_rkBr|>NRN2JWIo&+XmK7EI`Y5 zh*V&G)fWj(K)Ba>aWiwm^EuUPH5Ylmf+hbFbpc$Q3miXWuY_UGz&XZe>Zw5!FTB&+ z;eNwPRkOm8!6!EhO3d^j&_|iR%}+~m^3GknM-#}3=_Qmt5=u0BYCh7AIY8r>)8o$P zK6ld=C8?NqLHTd><^HQ&_N|4nZJMHs!GW+q;d1rYF57%qSvVbf6)==Pq>hlEQ@u}wx9KuE+77o&RA_rsGx zJue{JhQC_3R?os&Q8!cGOF-hbWutR4`nq$Z7n~VYlO2nI8iEht;*SDqaGaH?e}XD` zfn~g1XM8_=-$n+;9e@Ev0O=Rln~V!zY;56fmvy$g(1P7V|FoRGwv$V39`|ecMoZG& ze^>B-O6Xg=L0NroQ06ylEigA~x4ca65FrRtlwxhdQa@$dKrrp$i6lbrhCxapJq})W^Mk{t# zeC4}VE?F!yPc^thPlWl6XD?J-v`Qj>lncR=^3|O9kH0yyG8AO4(Zwjun=x)mcE{Uj zPZg9yYPXN_bs;rlC-3fBgI?gR2ludJ=C4l-01;diXEqgBtNwHtr%6(9XHfCfz*-?7gyn%EfBEmqX z+cM|bXx*S&HDjmN!7g9&Ggt5wY6eMYXLgHOKM*z*1W6TX%V$NSWuG+Up{l(x>yKl_ z>J0C%e>r56YaBz6RLX<=Qy-d+RxYcy7=%Nk@AznO#*I& z{5PZ^K7QlpBa9f;qa&rSp4St8&IjG1l?-tKBu|VBCllg>m90n7u6gy~m@Y&&fvG3D zeWR>=zd8}(l`fj?;@4uXBw9z!EGi>7fcn~By#PIfO%>vQsB;L6Anl-FzP5+?4kM<( zrT6M}iQRpQwrYX5Kg&yP#3`E-1|kb-T|i>p30+N-qEad!fl#+D)(M2`=$+)aam{jF zdPaz@VA=PH&kX04`0PT!w~<<*NA8OvV7+iLU$hOx3ZBL{auf!HvnH4f|CN&u%rv;i6rthTpoMhq37}Os+8wq`Pki<&`^P$X3dpK^;;?T zNld?e7Uj%oG)(PysmU5}-BxwcjqsOUOc+h1>GX;exi07NO;M~yb^j3axGOR%1&b@u zB%BcQT)$iEX-38!O@6oAL2u`kyMCdaR`VFz>m4yqp~;|OTtym1WA-+afQ zU(&2+=|iwY^V_PsQ~NC*#FA6DmuaD9##%G!V3}F$yO|S~SklwL>SI1z2IV0riciyY zJ+=yRLDqA}X%KgXJbfMm8hMuVjjeL@=qc<^orkN}ZF2JTI`~mD+yiay?b?xc;J_`a zoR1?lD(?n6HlU_AAI2S?lJ1o8+8*i;TOZ8L{KMZ4HWht&|MwkURdUoT!mU()VjeLI z1^YGoo_kw*lVrm<3s6Ty+5y;{+^S3k(l$5zQH?t4)Z&0%8bPcS6at_P2HYTtV7L>e s0uo-$#9lV?TIZ;0XpN*`eaXvDT4e?Q;090t(U_rT;3W&n)c^5- z03e`E z(B1?hKmg#t8J7(MU^P7$icdQXp9*FvLxW?m0ss}0 zOa}18+wZ(BK>`nSsyBEvf>ilIY2<0+?*iK!wpyoTxC;<*prD0KApT`zzhG# zS;7YCt#=+r004myAp^Q(Tng)Da47>I0uWc2DMU(>`$wE6P0t1qP8R5Gl>>An_h*u1 zzW^8^iwpdO7AX-k<5)YGJcI&=mEZ)shQmQHrVIkquKGVXlW*dPcfD?2800BV&ZYJ;s zuK;*30003&06B@g0jt0hqrmP50|YD>0IH1Ef)`MJkThrwa{!u9d%c0g4MNBRsnWpe z>1#3S2iST_;KlW1Y=A(NLjH|819=LExuyDK|L_xuthn9WG#mc_oOo9+fy5311hFbO zEdVkTc_5DaXaScBIao!D+r{{^X6n4B1{?@+bcMsq1(rgnrAOa+0mz32hZb*v;$jEp z06rih_5RK1v}+R8V?*z4+Q9_>el7q20YLy2LT>46^9*g{Qw*rkO71$H*QJg zT~T2u0vH*`SqD*K(D}`P0DyR-Vr|{D_i$)y;C#>k2nc`)SD~v9UKr0jb15A)q{1ng zS!~;mrZN?xC;kQ>n3(~SjHdE|6%Xu4!TaG;CH4e>0DuYD5HRtabnt%X65G^A>JnBvt00#yEXMfy>9Kb|m_LQ`r-}mffntNq|1ayKeJ z_do^#O3X0;n!&+K|75bTzyP2OC`>ZR`ukiQwUL2hREO{pI7^+20b#DWa`4w(u3)bo zoH>J{3HB&b3Ij$!05`zz^c)Zn?j6gBAzA)lAe%ZV0n`E53|Piukv0tAvfSR5N!wALf^8g9z49`@8*C}nG6?_Kj z0)yFvF^1J#QNj;2FfK*WfB--@WV*XJ=M>@4Fdw^c9y7zXWT>+VJHbrC`~ZOk<=m;b zu1vABFZ>^XH#f%)XzKM5VGKvEFA|)jtZ~apU=#v?aqaJG5>)X+I(PrP6#yy(Rvtpg zyZkbG+%PnNHa2WDSxNf! z6iNeX1MmPd0m@n!6eD^>kp5!JfCC^ds$4#b>XPE$sV#5xs_ zJ{blVf(Z*5K5*INlOOPY66ax93k`L^O)~=x5k9@Z2_yoEto$kB8spu0XN{)QJPH8j zg~lISbRLaD7a{pDzy#^63ms*w=)PynVI7uOvI2fxyQVG}j&O?^Vihge}n`^1Un_jNo;&~C%l7&Fc}#r(;AZa z1!D*it2#e@8d-6Gr}M#FEI!~NI?qT>WtVRx>39GF0Hg$PBZ~}^_0Rim*>-`1um}Kl1?U0dP9Z*&7ZOOy~dr5HpAO;$Q%Si*$b_&NF-J3$S6p z5bOW|0YLz6CXfcN0C+F}00BV&IfA~ zHvZrH*enIhC2CPfe=H9<(sIRb>f%&NPyhdVFmNq-H+Sc0oBr3s3Goz?5opkVngilV zQ9J+k;fI&m0L}*mBt$l24%K%5f&3@R!r{I=@Gi}|AuGRoyf~{~VfbnAG=acR;7ef< z8b>b0e*bx~BMieV2CZ(7049ElI{i#JnxTsUHz1RXkCG)<$|P_`W-B34 z$TCo%M;}};LOUh^iU*S*R|;N8kZ34!e+EXltZ7n=@d%Nn_m?>$1_aZ>e-IJ@ZBFmL z|LXv?(KE=r*FoVs1RCtkdd0{8y@M&!k+1#!-T)l`-D&H(rbBw7OE>(t9mLcI#PT@a z(5M3-L5OyCx)E=cK1AOY0VGer{@=hBO38D2R)4SZ6AJ^Kc9<$ Q0003&02M-M0BZ0C<4K)GH~;_u literal 1115 zcmV-h1f=@_0003AFaQ7nL7U(jyaiW5Vx;^dndAfu7#Jlm?E^y&4gtJi-*}KO3cvvZ z3@$S+lt?%~w$Ezlj^GR^G)=7fr>^fOSafyx09DK`$INze-2iD-fQQ*yyaWIU1GiIP z1py!L#i%3~L2_R>6arwv889Fjh=v%L<9Z-Z@-200aWZP@aM`3wfxw(*R^} z00IC&9pKdYHl8p*L18Iv=0+KcgQ#&db;ld@00qYs7eYplVFkxo9j$JJQ$7O8h?6o4FoKfovu zGuBd*N-7d8J%58J5by(A$&Q86JvF>%YsMG@i8^HHUa1~DAz(ac0(pNxLB)cRPylQt zdl@C`r{FFWJ6q#XB_5r#E>NGt7a*RJ*tWJ7F>4Xe{a@~8P8$?t=QSK4iUEr$hk&jF z8aV2Ao&1foOXFk}eC21a}a00(6Oh!9>S4g;eV)8InW z4i4)onW=)+zkCD`s(}tTAd@d1Fw!_3PBI=#3V-*w44~L)!k;KAE}Fcf=lSW}dkMGyexfq*%X`F+7sVBxZs9{`-NG=Z?#0}I!0{_;>ifCf+X zU;lVK0N0YDltJ+57JrkRS*6>@s0}`*}K^y-PC3TyC|J~JTWhtJgIN~cwnAi zWCJ)H6gLqJT4wkWz#Ah*C&6@B;G^_J%tPJd6R&XNivvg;1pWrRgozd8b$;IXr7@jp zd^0qc02UoZIaP=e8^$;Zxdj#-VeP{Swb7RHF%)rX(QL2TU=6yrAj)s|cv*R3SWy4^ zjlS`!oFXRi3QkrdVxfR2c^Q8#5l?%zQi&Kb33N0iV8w6{i^WLMGw=ZI5LFaSG~$8F z*7$9|@$sq_5e1T7`BOjq_%J4jh5jHc5dGcff2;!5O)rzyd-!0Dq$Ib_hyT5YJkv;b zXmA+6*%$rqQ#|lgo7Hq9(*WA}e7>!s(Z-8p>2IFDB)+Yb} diff --git a/samples/h264SampleFrames/frame-0629.h264 b/samples/h264SampleFrames/frame-0629.h264 index ba1499689170bf577e16fefa0dec72f812366499..2a253becd262aca860ef0d81124dd5f055158cde 100644 GIT binary patch literal 1580 zcmV+{2GjWf0003AFaQ7nL7HG1yagWxVQxML0GsRrjARY~m~iiY8B+Kpk2g>Y1I-|s z`|<0GsVm_Q6S-^}()&i0$I~AGATX3Qyg2Yr%|(oing(0%nuel0FPo26jKDZs00c-e zG$3uf)XGSFIqtn-rT_zg5PGf(n6DKZwSd~d06=m}U;v|HbG#OQU=RbkBO>LdY#DF$ zMgYJNIssAr9VAFl^aIWiDoWOcOMsH$TmBFD!=Qzdp^Lt@yy|`#P&B?&?f!4?^EY8m z00>7og%Htf?IH>`+MXF8#eg?yMspk)7;B~&00IDD03av;0t4U{OyEEqumX@d=J~yV z_#G-E-~_QaXzA0x@2=U0>B@4J`d<|lGc0EraB%{I0DE1!PmS5$kW-Ps06+y3bUg;Y z?`a0(29f11o8Ec-1D8bS0RTeW3nZgFtNAu~Q~z@S7XfzGrf`@mm+ege0Dx260HSv% zEnn@#V1bj{Lf0VjX3T&4!9Sl*^MIVU#l}G32?g*cXANMmcd(c~<17M276m&f4w%^P zfj~6ER~?9`barpP8LV9y;D?UBZ0YfM!eY>qji8Y(hxk)FC=Kq61++_wq4Fgk&>;HM zG!|RoPGFM+1_5Y;j_V+VU^FSB*s6*k$~jT5DCje-mV zXlWSS5)?Or;3Ebmcy{63EB^$)9~M!73eY007jOoJ~i_;2JhY&fJ*mB z?MDS37tZ)mzySnOkc25pQV@kHKmYy!4g>`fK*0t?+47)?LpE~wphkk=pc;k);Xt#k z6Mz8ll?uY5{gX+*+8|(@y2HsiOKPwEqChYnWdOsec>rM=y zuSyRR>mrFIg}46Dl=#{m0z8tC|L+J@xWbw>y{J(}TT6rh2!KJzY>?s8wBj07|9Aib z0Pg^RRZ;=%92)^`Dv7Q@=#IGSpKB1geD9P0&`&V zLgtUAHXc94a7X9ijS^S|O$Z10OYr&)hYcVEfM3N??lv?(d=O^h7c>78zyS~fA%I{| zB1oIj3c&=zDS;3d00azD#H$!hl+~OiICz8-lpH?E#N-v7t5YwAQ2wy+gI6&T+<2jM zK;h=W2%CKez6t;cX8^nh_hDN)RfBsQDgYGSOg=(6`MdxD0MniTB-z5JBz2YVp!w7c zrlbTFTrAFS$Hhtmd@0}&gB(PhQ4xD@{Qdm`L4sZpqG*?_T!jJ{ApT+_AODK*00IH1 z*Z@g|z5{6wIsdx$*x#wt=PSg(5*+{lK$Znu;3^rhx8pA~2fzWdF)k?vJ$!+S{b+`q zh0bRw9vz4ZV3rsFUZK#J{KvNAuz%*BYwt+tXdnbR0003&0B$Cj2Co2kFaQ7nK>#_4 zrU9$K5h}pa2SGtD00|AqVmR;h6sNsgH_Jx^FCFi|1s4Y5DpK}kc>oz-8iO2v>y!p? zIAfp&UHxvtio&FU%POtNKeo7*^kIyG1i;|5xC?x*@H%e~fs_sd$Tyo15jXH}*y-}u z@kijX>lR*>pWj#rW=xFdQUCw?Ye0X(SOzXq?)_0Ed)otnYU{~T9LH8sWgqY)XN$+z z8P7s9*MTtcI#w)DSUgDCLy`V=Qb>#61my~{LEZfJH*jcU#}O9+kLZjO)D=ojL<>j} zo_Iu27lJ~c**q`!(9wrL0K5&98NyvqgD>^y3T~Gvz)UaH0VJINv?xptMMy*3=v$|F zO{xI(0Y$s#zlO##aTCadw3Gk*ADNpP_g~#z+%P5{KZz1UL8LS+I|=Cht$swt4iFGA zTn`Fv?9qVTyX;1kFW_S^>-4e=?xFY@qFy7F5o9Fp1AL$X;LEPJ2mE`jy8q_S|I(~! e>)*fR9PqecO+TN{z_kDX0YLy2LTP|%@CM@tk-%yI literal 1185 zcmV;S1YY|90003AFaQ7nL7D&>yaiW5LnZN3kvgOWjk;=51++gbhDt54(cxUzH*gF; zjS2t)1OU%)5-XGmsoXm3I+(`J0TfC|43JW4n z0Ky>n8#_OyzHxF{01q(%u}6W22PdTi1(&v<9j2zUS>00;trFm+$9N|U&Nb!|njUP+_!A+XOre zE9}U@fC3#9D8zWE?&zbHasnS?IOnFz6QAbthPY$^0sw&kxrjwuB2;99*6-di=!XCS z0}iX)03=3pBB!s+L{3Gp?zT(d00;nvDp5E+`f)C6MD)yO?gE7Fv1Ob;_Xgzxzs0XT z=k&Lp2myvea3BUmxFODlI}Lz+-~b^3kkuU@n_vBf!DoZ_wr!32m0i?70096ns}924 zL;h~#0hpT}>3{$rA^-vcU;*LTV)IA%0uBm*6P=5w`!HN8s}#?m0$@N;`gI$nOktXV!a&UJP1hflQ21X!6LbIo0YLz6CV&R70C+F}00BV&If2hUO7oNj}3ENi5s-M+7<~?f?!IhbW9$Y}4$>05bQ+;9(E{+@Ldo!yG^fJFY&Z z#KZ=4&LIEllwM=XlOhAb!DRh%_#D57z{&>!@to-Zqcz+c_m&s!bysZE-vPb}eF5mQ z`qiHQ>;g=zsK0qEzyAX*-*fx(U;&PdZtVJ^ir@ReKv=8VrWHQr1r1*8n) zJUJmJ6O!+2#VA+zWwz)V!XW`;IU@iU7!8ydfn-)B$?Eh48B^{k%rAWfQ+@wvP@I9% zF#lns{r803NCDs+TfOu6KH(OQoTiAlEKVQeA_5hh&>o|@>x^FO0&Vl0-|v(sOWqs}ur>_OI-Vx|hww8-yhjTISYVMC z0j@v+U=GvEQjTw~SljuSk<3(W#OM}O)50Fb;R+Bs-> z2jt|LC4dC9_wvWYNRLt9`e1wkE)nPgIuKdEsDR*JYCNdC7kFYE*A7EkHSt_IDth33 z`3?W_YYun-W;WiEZ9V`1fLeeDI5Q1|2bpf!o^=Y~AOHdp+yG)F76RXESMecVXb28Y z;Dd}87sX>F>(}M*Lk-TsN*VkU6%R(0Uz}eFi+~6^Xq6y`=P+y!vVaHyju4a9`?zeX zO=s@_0H6mI1lvhYrX%O6s_0Zcw%0Fd4p{5BN$XrKXVwgZ6ie$l5b7jiHRjmz9G_ka*u1l~~7$4NDksuk^k21rravW{=v004gM01z;3{45HcyhgwPKtptZ z902f^@uE~mW_4^sWT3D+EH3)^9sr`N0)nzjj+7OegYW>^ z#c6^<6yvlDVn)iq7`y;wEy;wH%0qpi8h{{Hh=%?1j5IPD`tgKe$!ZP}?vX`;U+@J% z72$b0jS)9qH_ryZ0LF6#2G0IN7a*9t5q*FGg<9SO6|6sj>C-E)OrQ&Q@GS{7d>{D0 z0O^1o07r`Hm4ipv6kY86YU*3y{wja{`5*vIApi_8;Izt}EDeAV{wF~O8Qa1Npz^Q) z-T;Rn0003&0B$Cr2Co2kFaQ7nK>#_4r~#|MI?n?L90dh94>nu~%5Yq-0K-v8g9>lH z2WkdzI0(QQ*${kyfFr3BvkRC#jh>f-+-un$yl!YlR zZ+qZQ!5XywBvc;(c1(8kiF~$1vfZeBM)Ub lQUHAi(6RP=!?SJBUjk|2T>gFnssI21K>!s(Y5;2R2IHcRnYaJ| literal 1020 zcmV`~WNi1PC%u9Xvp)Uvt>e#5YAJEfcb;YF}U?1%bdJ3>(D6=w)02B4L7xdJr^f8}^1Gfou^WEeewn z7U;YHMQ{NDTx}KdSck^*zZe1l0R)EznIZx3wAw`^2B&WW7=b`TD@qEhyki_&8AE6w zKM(*23xF^`JCJ+cRwUf?aKon?05@ZB=`Dr-e(-<-6bKG^h6hOrk+&M_Ap2tT00Tn$ zI6%Y~2k(k*0^N(O3IIysDOVszoDE2(@FcDDn+QOH zVb~@ttxgF@9e2*@{r=z?g!&X@w6Ae300w|9z$xHaLlPo%5)&UFB5*5soz1xrlzyLr6 z@?jbS?zuqtvl`+xut8UakO$Yg##4G|x`dH&`e zP>=)SypVtt9cnUFQi(BZq5RiAOLre00aYy2C;Gg$gwXk{_r7+6vnKfB^)8;no7E8`~f#W z0003&0B$CT2Co2kFaQ7nK>#_4q5-SGI?n?L90dfp6A`Knhyxu=Ll-FV;0HNMLV}uG z_&ZQDfxt!phmeoR6d9=>55Jw1K0uQBg+Lgv09pqoz#)6ShJy0Hrxi-4_ZF{7AE~f0 zfxu_{DdcGnbiw*U%c#qp=_*Bd9gL`>#q>kaMqU+|cucF1<2ygi{s3r&BSSN7iLiPb z#Wx}2wW$C632X>SL`}w5|6nGb6U*RX17xvL0|Jl-TSi0wuABf}fFMdp)S_J33TY&!`ceWj#VEzQt!nyqX1yle40YLy2LTG?$@CM`2U!jTs diff --git a/samples/h264SampleFrames/frame-0631.h264 b/samples/h264SampleFrames/frame-0631.h264 index 1e0e109a85a84d2dd5f30532ad2f4f1032f15d78..005f51b04917ccd484b4eb5aee6c342aa1c5430a 100644 GIT binary patch literal 1628 zcmV-i2BY}^0003AFaQ7nL7Jc%yaj|H#SY*Akle;jDJgLXX)56`g;U@phIx$d{T;Y$ zsAnmB5JaJ(0ce4S_*o2G&f7Ei{dh!|02l%7Rx?Z@o3a2`%OZaE0z6PtLABJiw2nRF z0098O0>n~1mb70G23^(a@c;uU0fhLq0>z46jEEop&}yQ8E2X#7C^6sx9g9rn3`-f1 zF;(|(BqDk};sk&&)HnjX5!YzGxro>wh++W5V`_}41Q+Ods9~^D9hhgDQs_;F8t}=Jrw}3EO=D4@|~}MJY(dXTSk{30><6iBB#741YBg9qbmZ z4(XrX!2y^AS}zzz3>180mTvLn7^5^8<$nW9smGde)#pHaZXd zFZ-tXW5fV3u9izOy~f?h}d@BkQOxH*@_X`wwvH#9H|JrNKDGclMTho}HM z|9A`pYyc!q;0_H7GLbpyBysxotnZ!w;$Q=O0oD8m0RX~ye;F(S75y*(5Jmt21|-ga z0D_|g-KWDyEF z?}%gCuYedBX;(KZ7EM_qnQ_hz4Dv(kEPv;}F%-%%{}Lm>01yv3-~vsYDs)F#Uc3MR zfNM4Y5@BzE+C$HO=<9p{Exb$uL!bZ%62PmR1w%GA{C#_P-l)2iqyrlzj97h|bTfbi zE4hr5_fH}rHps!x>f+wla(As+sAg6^G1=gI1Xu0V%yCqI`(4pqxy!$Kvl`#Zu2oe~ z!wh0>xxf4WZHSD55*T%@vY**M?eDRp8e1}_Kl#849;yQmVpF%-<0@Dju?|9Wka0)= zG!bPR4jRTSyJI}x+IsWLAFwJU%|nQO_o9Gfq;47czxAFiiz*FJ~rU+qx1+q}a zz2!Z3A3w`L5bOW|0YLz6Ca4Cl0C+F}00BV&If<$PtH3bm3m|X<2pxhUObA-$1APKX zPNxiA=tqJ6@B`eM@s{)runH1Os!5WTk1jTE+7F;Ffzlcg06_N(!0%WWi(gnEu`_(r zeg8H<0E57$&?+ME-DFD`5&HrO9LK=F^>AO&{>Y8IB1`|$_!dC%i9DiyqfEBF|E_ov zFQt#Wr9pnc^Ux(!U;lHk7f2fBVuBa*fv^)#3hH475)=XKjGLnZh!Lw==26N3n?kX=YS@BkJ?$dde3DTKD*+o}Ke a#e^XE6Hf}jeZT+!0YLy2LTZ3&@CM_YYrDPx literal 1426 zcmV;D1#S8O0003AFaQ7nL7G4syaj+xKmb4j2RQT2JmZfz^Ugf)-~qq_I0u*qBoPr; z$4G{M`L0eYF&+$9KmZ&71ONaF0Vete8E-4Zzzs{F$+SA4P)e|jq$BNBuM803Z>F%5 z?-aX2K>1GqU;wA2CG-v@1_6hQfGPj@4RFJF?A*3ddw1Xz013>11On<_*)U&g9{;>x zB917W22xk?e3d<;fDJ=CTOcWMdN^MLFT62YNxV}9^;8@!#{&)?pauX8-O>Z1Rbe@( zzkmS%1_K5*RT@soL@j}f(k~7{%Y0@*BGJY^HBVod>Fu`L^chLp*r1wWrvBf+OaOo( zPQ?J7(dwA8@8IA7<6sepSUe-^;l`$x_3hCR00?b$Y)o- zfCdyNg<)k@wVc}1|NIyLX4`zGyRx$!bLpXm7(hKeKFnF=5f^xBGiTc z00;nMphg=%+4RV|NDi!E$YC0?3K7JwyZ`|K5JH3wW8qny8i?v2f{-TZ0bn5@k|l@= zzb97bz5qY~KsX(m3T;vSBIZitVGsFUoix?p0M0HX*>6w%zyLx5p{Y7QHop4{g3owBAyu`(uiCPz+K2p2vo>L? zy7L*wJvLaK|2daG|9Aih0fkt07UCcB_!tbt*!KKm(GCCt1)W#809c&m!(@yA0RZp- z5EB3o56gH04hn!1or|dZFkC9D6wiiHW&R-qCkViYmku%NL6!}8`^KOW%||s0zz|~) zuQnbMNTfy?Y<*U6Fd&H53xE#(j}R}&d>g;`KL9{#=Lfq^;!BfFe#V>=n0ZssDSSZa z==& z6<2gS_?Z9zfOorqQ0G;V1YFZ#Xf#3&K3=mw-tZ#0YTkx`Sd}r@fuBGa>fB5TmU$&U z(9xfjBcPi+^Z#IO9czaz2$LcIzjy-{ zu#U>6>(fPlfdPOf=l}o#K>%(hkOr>+crX9}0YLyciKGFmz%b|wAaDZ+9fBcD5;r`+ z6KEEvQ-*cb0T-+fen8uimSNSvk6Z?cB}$rPDDD48h;N{am%yS2AS!|58W<4?ntRN= z3gyHmoOcp<+xj2?cq)K|&o9me`XCeP3jinM@AwT=K(AIs3m!}0R|Cc@_9uiVS)ryk zYrxTTk@s|{EBgn8id3G*xB~%nK-Vz}7{8tifSPz$QwT7Spa;yEYU%Ec%-p)+{^-5KUnB38m1G%x|T3tQzg%hEO5H`VE_vR+jevP zf8bxYP!mD`3J?EZz$8>=gZlw0_XK!w4jSIydu!kS|J~qCJS&&PgyJY`9u)9#Qp|;k zd$XGX*T6dV$P9cFeu9fEZ0Lu;)u&vhwU>DmDp~(S;)oIO;^KplL^Fka?eCyHb*42C zy;W1*VG>DTCW9lSv49T$1YdF$;x@~ep8_Z?|K!GjQ0i1yWCazih@Dt}fCQ0bO)tk% gm`h4k@>~DEz)d_WpMd&+0003&02M-M0BZ0C<2=W3i2wiq diff --git a/samples/h264SampleFrames/frame-0632.h264 b/samples/h264SampleFrames/frame-0632.h264 index 38c94ad423d34285a9a85bbabb1c60baf9441fa6..0f8046ffce099cbb3ed93ee354f61c8649752cf1 100644 GIT binary patch literal 1118 zcmV-k1flx?0003AFaQ7nL7KoCyagXHQK!c7LU_>dYQ%;Be0Yq>#^`xSPCo$$R|P!* zUjs=>5b~uqkLCCy2*H?06#~J8-~fOCAOZk_5c)Q3f3jfG@eHE*_%PXt5FBkh^jGp$ z{^)=L5C_yWNKW<90X~|4_W%S8XA*1FaE>P0DlCtHC;$Qg$`%#ky7o0OL=;ikzyJsZ z9f8Ewd_gs|b>@Hfm;k^4K;pwtqu>HGmklA%Cj=ca;c+11xXg_U%`HFxAQ_+l7yy6^ z5i|xwgVpbQ0Dt}gL4}`-V+cHZ0096ylL`Q##1SNykSDwx0c2JH7Ri7C5DEvrEN!7V zi3h*{MkMZ5BV{YIF8~0*K8GTmn&RycG!;|(!Eg-#T&|^(HfjU-MeqOu0iXaNJOi`E zL+NW<5in3w#=s8X0l@G-LKnMgdIK~VD?+Gk8Wk0#!1&gd_$8<6;IO z|3Y{GCPp$k9Ki+m8YI|Y3m94O@un_lCFsLvR*aDkuVRpE!5${$w@DF9(J z5s*d+E`~TFpTJ?u4Fyt@Awpmevl}7K3u8-+FaQ=A`-1=!CGV$0Vj^P&{on))IKfU) zL(ddz8cSXuf*+VAaDYMJ=F;FIN?uG#Ezb`%07I|<00BV&ZYHn>uK;*30003&06B@Q z0jt0#1^f(Pcml{B1dt*Wzy~_>CQ$}(05b>!Awa+60K4><91u`K-RysLEdN`A#u~8M zVq8XO)dBtWH;T{-v_H$>X9J)aK;Xz?kDAA20~G-NT;Yn}sG7h6fE9sA2(H%wnOPo2 znO}p>0C6s`z+;|&z>VmU4NQk8ybaNayqVJ$~c)-pgR?p4GRXpxv_vJiko&MZeBz~DdQz;{%t>{O~-f; z@#}`b{bxwJdU%O-Q6fTsWn?s4xiilH+7FFE5-sYF0G+mM#*BXEAZ5T|u8$$|^S}_5 zM-?6z!=pxr2d8-wCD(wPn1LLs!1t1yZkObgNyeanKv?Dj6r5m&=*pns&fb-?l)M8O zrbPu$+3;&P01bp6)&>sv5)xPyJnbK25dksJVO~2uFX9R`LB#}i5a{FpSk<(&)T2I^ z!NdlI3~xBU0WP(mWdbnQw@d&9p#uoA9j)0Rq^RnO|F&inih{P#Gy4}Mht*R!IW&xP k&d=)sfa?S8?|yFrY2)!8Bk&4D0003&02M-O0BZ0C<0s(C5&!@I literal 938 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 diff --git a/samples/h264SampleFrames/frame-0634.h264 b/samples/h264SampleFrames/frame-0634.h264 index 3eff63ac6e09b5936c7f658224e4bcf3632af90d..4c9dacddf15aa15d421f8562fff8747b892a9c52 100644 GIT binary patch literal 1498 zcmV<01tt0b0003AFaQ7nL7M;?yaj@hh!iV;1AzxmA)l8e`9u@`)qaMw0AM}eT<$TK z&2f=2g1j;WLG~kO-3|tDf=)$Jz5a8W8|?saueVRLp8uVovz=Zg5}Zr>>xKrl;<6I> zKHqfw55Mqe8A3G^8i>sF{`-GGD)q|1K`W%bdSAj?5(FWgx7=!b@Bm@uB zyatVS1KVR7GD;(af;IjawvPYx@5eVp2p8y5uRpxN01!U_0SBM}5VZgS0Hn?k0AL@; z8AZkf0~P$wXs85!rjFN%tpmNNGE_5M@7d?kP_ zmYMQTn)mR5YC?bjfLkta16Cpb`$P<(fo1t@u0bM&bYJmkKX4EN8bCb54xw_r6KM1Q zaex6R2it3%!(hKj*qQ(V0Ovphjr@pWul(FY7*_FlKFLB$h^qha6N~f{1<)pm1K9rn zSONjS^i>Oh0Ey&a070;gU20UMxyG%Y004lf04OF~Um*t>DCvgmM0x=S0NJEIOO}GD z!f?zOr+^@1+7BQETbNgy0Kn49ZU*=U04TYW44(Q@Zr2MyX*wYNFH64mU;u$80$2b# zW&(#l@%^9x5CZ@K0DvhJuAny8dBtD9zkwJ81X2Yv|C(7 z!Tzq(nKpm`Lu2m)TU->trs}D}SYQB%Zb1?6f3U_q>;$Rb^7x=eg5aPUh6Cd({HQ+w z9uu+1Dzz@9-|w_QU_>`KYOQ;})&I0C3L6>VQI452+n;}UjKBau1+Gv5o)jw*Vpp0B z;BwNTZjp3xG_Sw+Xi6+1sk~7on5X{$A|0d%Q{>T&7uK)lb9-sm_z(VHj8&v30p2PqMTuOm&E`TIMgZ-dDe*n-d zP@H8PBW2MK%K!w3#8g9>N)akrL-ddl5ex(X9ssY?a0DfAz?k#}AxD4$0}wb9Uq&?x z5|_~8VnWgi^v@c5R2rNfCvBt14x^-fRadz1|N)GAPNw?KB+72;q7!tekSC$1#_4umP*UOqcu%ARqvy2Z3QO03#R4^t1pqyZt6^uyqeiL=GCCNvA|u zG4Z;S7^ZUnfm9CwQ3JrZZ*s#z&WTI_9s~YC_}}0i1vZc_cI6n3|L@cOyuHdm8aQ!T&OjG$&{6!U%HO*|{) z7!&}WyvQ_)V%>Dub_IX=!GSB`|Kwu8|NlQRr~Y}B?~$kejd|iilnWz)sHs|(F9FSC z={$f`Qb5Jg3A}+Ix=XR>4;qlFsc1I7wJ4z@un_d(crf3A3z$!kl8^qoqUn^2O2LN# zOZ!v2xd9UY|7e7n6DHDW|M#EfY-`=!SN;qMr-gAIBfvcH0003&02M-P0BZ0C$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIxr{s|A^?akBraluGO@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAj1@BwS4o4E>(9PXMhX< zR-ip~HppG$Lq_-h@TfW9c!@}kj4a%pX%ZPYU_i|VgpbP6Vqh|VL16!-{6;tw#z1>d zMv(HN1H`}pUQCgN_k*CPNC8>ll+8v<(K*eE1OmN|EGRY(T zpfG+{D1{>Nrj4@29K5xus)VsKPZNNu?R6)C zh`nP_+?cdR|NRfh065^_BBmvM86W`$kG78f-xNGCAPq<}{HSZ~_>dB>J0V4V(WTZ0c%>3lKX?FG$O+Ok>ZXA%iOSz?!a}7u zIW|}p$coiI09gP4fDm9@;7Z#XIo#kkC1}G!3IGBC-i%@Z9RSh@yWdPiPDQYd*2#PT z0RRxiN~Z!y(~5IiC#GW-{A>HX+i#Ekz}%o#__gP}{+9E>05HjJL;%>A6gkkxVXzOn z00bZ^8k3{*Ywxa$z5Wm0*|s<8Rd-PQ00aQSs5=Xh5BYoy24ZZRW&i+ycmN0qfC59Z z#gBi0AmFG0IoP_7vjxJcu}t~^CIkf!r%}7qAqhCq)3`7M#u=y_Bn-~f-EsL<4~6sr zH$VUY0YLz6Ca4Cl0C+F}00BV&If<$PtH4Z`{0kr;0Hz0lVJ-k8e!iA~2De+%Gj@Y; z9gv9uM3vxbLiBU@S@Ei?QvZQe4**dEz_@9pgT+)97zKfJgTmnsSSBC}cgeyP|J}#+ zftAZ-*y)pXe4cmJ#m5SksnA>ec0_diFIKMXs&*Y~fs$IWE2mfj@W^_I3Zy1W1yq_WkjA@&9-j6Hf}_JV$_e-~a#tK>!s(YJh6+ F2IB)HSr`BS diff --git a/samples/h264SampleFrames/frame-0635.h264 b/samples/h264SampleFrames/frame-0635.h264 index 42cdaaa130b02df4eb6050edce992cae21394c14..87117c4a63dfa2082954145c20e8125c69a62d67 100644 GIT binary patch literal 1363 zcmV-Z1+4l20003AFaQ7nL7N~NyagvHKn!>v%{|+2X>nW;z6OIv+;#a-H*5$D37`O9 z6U?AEloCooa3WxFErSJdTx_B@;JPhAcEE9$ko-Lm-zcKPd&Ghvptyj)?=S{vfB^-AR$BsEY7)Tk0Kvo}VKjwp za#{-n5@_@c&3ySzMy!=T?0LWW@ScycAIz0*R5VDdgpz=0lhBufmYU@tTN zF!Zjb|j9unR( zN{H;pPF6XXqb}srhI{}CMNoJmg+fa45fC~one0L!Elt^f?Y{5;1O#XU z8UU^mxc!|A^|8M{V{qUA2o+Ss0COTQe_%i$RJ8OWB}miX+5ka;NNGu(N+{1bllTAu z0AUxX>-$Ow679e42yk21fzYHn*M;Z8m!e@Dt|-JfN0L)Phw~u8+4x9tL!x#jSe3wU z8va=?e=q`BP!G=?Rnq>kvZz3kh6|unNfPqFKL7@|xBb&pAOHvu zVs-!u2OfA6jbbE0K@J=>_W}cxv~V$lBRH&SW8ftbA3r|;06-uH4#H_zbgpGOwfXR< z2j)Zo4DNx042*w%j#P0Co}oe>qK`a6AN~)301yrX4_kf`E4>naO`Vye}tFq9*Ic`QX?97|vjz+26=w%(h$Of+fcrX9}0YLyciLwE!z?A}c9tDLU36*-E@$dk!mU}y8 zd~cf7{Tf6^|MclU^%oh50GfK^$@l8~9Jg&6PvY=WEybG%hyS^Z0Fws81^*E+tO=|M zAaJ2UC;+ofXVr3Z_sldVY@n|w+tV_CcYzggJFTzg67Y)K<1SAVumDop0}QcwB1QNG zjAUOCD&-3G#=vDu_s9FcFVpWY^^KDnsDHw+0D|sDrmIQg-}_z!XD1n^ivRw<5+E#s zct*0n_#dKT4o%bM-MY{BL*5<)N=(6kSiLyk)>fkA|3ZoZP#*Q+i+n)|6Ch1OP#i$u zP6y^tlZ7FU3T^rXWzEwbLO*yz(%>d|`clG>kN>X#K%2rwBHC%WsFAK?c1Ql?+4COq z0~2TkLORyqfWZ`-9m@D){Uam6%o`NH*MxA9iS+<1X;ZCfYp1tqXAv|oK5zhJYcwTa z{HPz5SrfT`-s?=MH3trS{J7iAnMfzsxuH->hvE1;DQr8I5QqJ*1iiqTct@!_p@Zyv Vr~Tjv+5i9nK>!s(Y=CO;2IJTYMo|C& literal 1000 zcmV92q9pJ8nA@^iXeXn?f@1sl<_c`4Kqo(;2@-kaZQ~%sRN!eBejRY z02#pm$N(TtvCv2&{fF?GXbJ=YCqlJD6IsPrT$>)*jOYB|`kVp)?7)?f{UmDwYMcB3 zk!lQ+;Lrg87X1q_(IdbB5Dgsk004k-#YPw-F=7nH*G5YK5Cn3>8X)p2u#ND30)PM@ z2oj^D!O%8w zzyttb0R+I~uG>0f29H4P_yEP>Aiy@HYy_`ykQBqNY^((G{=k8S!h)a(VGJ~SekkFP zf?s?$Am9KnSAZudF6u>qHSiJ%!*f7KXA*!&u-3;);!(f#ZPA$qEicc1)hV&o?*u`B z4TcaBYM(QO!3VEj2*3uwh3FK>fjmwLTWN{FO#+Of%u;>{Kmb4xO`Rwe8rs31A>c0o zcg#xW0?>b}p&2Gm2fUbHndnrb!6rlS0t_%mZlbEMy-=|md^rH902Q)P8VB7{2Bqo% zDmq{RV^>0n%J;f-s{jE2U>0r*8TNnxASeYYM`UI_i##=I)9eS2D8PJEmw{n=v;TW= z7yxw+F2cB;$pz<-leiS4={!_DV~pA70q_Vo#_4tO2XQl>&Gk1%)66&3$kG(f}4OJhH}$>3vH2G>A{X)2OumqT!a118MhW#C!Gl zDQB(5i2W}E5j!tG3A_Id0ZMil2XPY$z?#642MQDtfD1I%Syv*TzG0y=P%C*v-k1IT z!+cHF*YgCf5u1D>_LVb0(ttsUbD<*i0uf!a6`xx2Z}7kX1-|yYmxs!5=z<)a1Aql7 zh$qiU1SBpA{g#Jhz9fE*;zdd%>9s2NgW9m@$ZPNYcrT&@fCbSPFt_fIAgz*x@=666 zAM+V91k(P*;O0+*eG*_Xlt59v^b4=(&LSV0VF+*}L|C#)Tvl)O;3!RDwq>m~H~x~G z&Kn^A#p`EuIAYua829q{BCkCez(@K`tZ@M2!Z>zK&H%D4yI8%mzyF+;)OilH^a5*> z1A0&c{Y|^Ly+OrN#!&x1AnluF>)c``0z?yn@OUM7J2T@E|9ilic>YN`A%neVxBI?` WvyKh`ji3Mk0YLy2LTdnO@CM^Ep0Nl3 diff --git a/samples/h264SampleFrames/frame-0636.h264 b/samples/h264SampleFrames/frame-0636.h264 index 97692871b3a0429a6f87326ff2d1edf649844af3..a51276a2c32218fc99cb9efd9b9ee684ae0cfb43 100644 GIT binary patch literal 1437 zcmV;O1!DRD0003AFaQ7nL7PAtyajJTV%B(HH}SQY!w?q00RRDjL!8&);Ckc3>yB^k z1^@tnKniH-XaS#pS=s`C0Z=G3tPv~;TDj2dbqQbo&;bAeh<*fT#=wqnyinBB!cv%r zF0XLFzyLrI6$A!=ucuUx1c0Ca;_?Aam%;#$A{YoDh*V|Z1cC-lhB=+u*Uae*9{>Z$ z*&}LBx!?dG2X;Vk6lrTbWNr_}7!gCem9i+%mclwG4CXj23SL!PF`woD#_g@Z00kfp zB+;kERY%hJs9IQ%h*LcP{uk2siqAcK00KC+q$fM>z#hP;#+LPw1x9#y00RLz8EYDx z%oZa5|F?uKO2ER#Ej=>wW?$6;NI+r+60=2`xIO>@f}F$Nkataoq9hRg?*Im%3Byp< zK_r#Ln5THYKmdRMKoBOfvC^O@#v%Y7jGO@m0aQ%+a^WHyi9-H>4pCF;S_B@aNqU_o zd4PaozySmRP%v*AtWd7d+4JhiPZfb)nW-n>OG}hPwKG~hjK{N(04NL?&7;Epv4kIG zCm=I`4jzr+ZJT_6LvOqQ266xhI+fJsOhzy4BH#d+6dufFxDYiJDkJ}RLO9_FapH+Q zd4h$206`Qm{KNooQH;WNk~R`?kNxj$wr1G+s__7h0fGlq5LV-3b6K9@vO(YgnVTD_ zR@HU%b!+_4!{&VwiY#ye+F$@63nzeJ0D%4w_Po2@fb#AH0t4t`;6$Ij0hItl>U5L7 zoC=q83?@DJ0uT^N#DlD!R9viMm1cL40AQRz5=0ff9#{-^E+zs{QWQHjP=>Z(>(CKW zImR9)zyLrqT>v-%AuVG>ppTXq)n&jO3&V5*#eO4ZDY^!NaUi@n0s;cKc@@5L2!n=6 zPrz0xdJhm3F%Xg(JrG~kou5pTG(ZLcBV-cyc*Km8I6)T$a|GIGE6LaXPJOR{2o{a5 zlfo)pXF1>dzyXcy3RTm$u{{QCSWFmtBtSwcm4*!E01f}%3$l;3ypJBQD66~zyk|X6T1Iz{b!3}%7`~J zct6}JxL^S6S{8=iLy2w2?+gJBzyJUNK>%(h&<3vncTgmO;K2+8pSSxN>Y0Wmc(W1! z#WMU*1)@Mm&I2-Un`;!E@mrLtJTCol7P>~pLF@k%HX?=rh>)8B^JzV44e3j^sy!utY<9E1oS7Jv=e#yz=;f79o*2z&yy zR$eE6o66dOkP6_-M%7OX5L9#=9zqdGpa1>@lfwI&hlQYoRv*%tAi9BlfI@Z68HD@2 zfoVI36*K>5f-;5d)XEU$vkMog1_rm^wOK#^|0**xU?cC;&p_5C>h`_Bvf{(nCLN&H8@5Hc_HwjP{g{&dzI rIQa5ki|%*v5x+m5&*$JuKcCO%^ZESz0T{pl00BV&6+&$QYVZc*;$&Z# literal 1307 zcmV+$1?2hw0003AFaQ7nL7LziyakDU0RSKcAh3K;!GUZz@BsiIz}9xT>#)hnI>*2O z;6MR@$s)|j#0v2NLVhn800;q40CPzIYe4fN(nO#Y#*5+Z00IHWG+4p8nZR4ZSrShG z0ffLcX9LX4gTJ{3EzZ~ga6qTXV@jWr4a}tpKg<9?IF`XJl-6n?PG-|dqyzv00Jmg@ z0G04eKMUaX_wN8`01OOTgZGK)UzGc#5ra3F1GqxX4FF+y7dTb!T0z8yKv02#lAIqD zGoA!FB?zs#u_-ZgV1|WI`0CX|}g@md;hTkltYvn)fPGAC{ z&9HVRwm0tp06<(7gMyS+%bHZ2)^=bt)_4Pj57jM4E{qAt00aO80svS@IEa9!B`SLj zt>pk%@*^Wi#nn20-~ogA@XzC^1a%0bc|1Au9HeKthNDs8H38 zP~jl<1tbx|5QiLFU*WhoWaVuFBn3FcRhzE{#{fTact+eUksg!EApu546JXepON0Od z0Kq?wwzdG8U+V-i762YF07pq+28^Bxrz*Ow9)KZ+C`;?4SkMH()2;nMBvhBghY(&E z5)Vcb_y7U{;XrLjcA->bFsP;muOJY?TtQ_5-X=1jfufEGZMBBEdtg<;>te5|4rLj& zxFPrT{-X@waD;{ac8lE+c!Ma1Iit#+23d5pXuseL0*i(0^H`~X1+oVX%bE}e2j-># zg($v|ay^EK7y=-#FjB~qBleCsRGXgwV1z7xXmHWcEG5pgc`;=i(D!&SKX`J0c$s$e5`d0*EG$dma7x1l z0(%Jz_y7U`ssS)dqc;gCvhYH~?m&JJ7l0ib6jTM^qdr25wa=oc24Ulf9neI9+yAuq z$fKHG+8A&%rAxdt#mx#W&Hwm*05Lp2qRNTN-w}3j@hgyC@kai1BO4c*ELf`;975D&l@Qj*Hz;1n#oRfw|jiJb3@CMCPb@FIo) z3ax-}MaLAc`On@aKnvZ+N2Z;9;bH&aE7v?jSK$7heb0q6)k` zmZ3%1;mHwg%NVOe>!7SRceLzM7B#Y0v;-kcD#_4t^upSlwSf!9jfSXTY)a&+5jD4 zNGKBbw~OB%{Un^a4j=@8`cW{xz@i5s0tbbl19S7P)Q*4C=d=xv5@bMa`#eVS42X0Y zXxgRW;s{hGB0&g`tb&L1?ST`W#2eT69t6kQ9q7A_z&0m!9LYcY zd4i&e@fOT1UqEgKzrU*~|L&Ai`w~3U>IEE^FvC$Ne9?j;fHrEdF^3w|;L4P?4SnIb zK^OOdz!0hX2m?BLHExt}zkxLHz9Zj=7-QYf@0?`g3;Z$b!=-(EjjhXn5gUOx{(b!s(Yk+F-2IGPuK~(?% diff --git a/samples/h264SampleFrames/frame-0637.h264 b/samples/h264SampleFrames/frame-0637.h264 index bac9de85544a4759b74a0d8c5f907e252a91ca00..11e66057a66f8a15b138b418446cf2f6cfdd640e 100644 GIT binary patch literal 1014 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 T@CBm)00BV&6+&(RYVZc*D%I8i literal 1065 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 literal 1516 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 Z06B@a0jt0pi~s-uK>!s(ZGdX<2IC9Xb=v>{ diff --git a/samples/h264SampleFrames/frame-0641.h264 b/samples/h264SampleFrames/frame-0641.h264 index c61ccb72d0034266737497d795f1bac6692387fb..22a0cf1bb10cb7e232995fba0f6a1f3a046f3365 100644 GIT binary patch literal 1787 zcmV_|NH=X z8~_9boUi~84Fll7)JGTnUYou$CMTB_fCgi2=_b>N1mOgOEi$&#ArNb03E#gVYJgw? zDo%CiE~8VArw9O`IIL-Og+EBwfB+B)fCn%}A~kO_*YORX+yDXqQTTf83R%c%nq(v{ z|J-I5FLMAGL~2mfKli8*GpBHJOnNfZI5AVgL$uKhO=TS%ay8r7T0cDWj%zq7C5f(--gK z)s`Fzi4$%8n#MoO5{lMqw*UYZfE;LpB(GOT()g%aSdfU#kQsC(O?h*+{cgZKEcHsX z`^*9C1x6CT`jirtE*<~?APNDHir0m!GlvPk|Lx%it7r^3de!5kl|D~Y0%%|{K?W@G z$FBok004jp98^$kK8s$w@&e(CFMt4L04D^c%!A6Ukzt>5d0+q_2mk^B!L_A@RD@mO zB?eH1zz7fnEU2p0rG+>af zJIf+Hz?=s(WTHG38c4C-o)LcYupU^TG2{~l3DzhrDF~MaW6wbN3)@2z{pJI7*4Il{ zpa<7b0_eB^;0OWoXxxKhxOjibouB|AWq|dg6}5l;FUPPbO&Bxd8Ol0*mfA^MR_?wH#M*y+gVQ3W0Y#sY}J!#W}msz%T~XausbJitZSj4RJw&HMfl004j+ zAOS)Kh~ZK|>E^o3gl1G3j(7nFK$uEJLLZR?d7PhGH~P_%$Qv=i*=|z#aC0;2;=J52HnZVu8j0 z0tEm7AWeIK27}1^{ZIf10c4l}7%*s>CWVfJ(jWp&0ALmlri02ivUj2yT8$CjVHANmJq`&>Z@C6lE6cv(ObfB!& zzyJsb0fw!=2^HRnKPJ%}_kae@D@+m)ryZbM5;j4A1A(Xl1w%wbzWKHr8V!F~0~de{ zrMWPYxkzuk0Z>JFUQVM#P1lX^KVSf1Qn!Hx=P%%Tl*?h*CQuJ|@FgiVed7QFrT~5d zJWouh8a%+W!?7wPeZ2lRyZ6EG@K=deNRe;A06qdB8S6>>WPaXJ69&%d9eatI&|+#A zOn*MX9KE?*M!g6BwFrLh@Bjb*w!}toEKpXwnOc5j|8KDKm9LrGpZwqj2djWETT-2o zZ_Tk_J#!AlTU7C70on}Hgux;$Jf7Fa%l+g1b{*jt@c{(6$S{NVUe3VFWlBo@egA>N z+`6&}%)B4&6x=WXc1jM0-$My*$L|aQ4!{5a0YLz6Cin)g07bBB2ZId2nOutUj$pCh zD%7Rtha4n~ND0tl2O&bVKmg(_>nNFsNh8RA!8ZUEyqMk|n+$K90)hPWLxiB!GV|f8 z_wNw^9_1$Rm{;AfAEii|j2r##un`h})qm&K4s*79T!a6Qukn|B!+kHoZ5OChQ~#E!s(Z-8p>2IIYo3RM6A literal 1424 zcmV;B1#kKQ0003AFaQ7nL7RXYyaj+xKmb4l3TcKIX{MTCh8k&~|G)yA00IG@bN~SW za1sm~Mn*N8B6oW*99?jP02~4UWsm`<)-bKWIOqoEk>l_HDgXikfCmjq36bEV>{oVU z;20r-NV34QZaY)i0S5j72Nk0ANg!jYZ>Gw2>xf?`+!}fEWX_TY|)%2nGx+ zNv_ZcU@9`@fFa(ng_XmbWE)Pt4_-|KgjB(lkN;o@0Kfp>Ms9+M&9ljhNNh0&r}Fr* z5VU+?$QytFfLNJEiv9;~cZ)si_vfR43qw@gxly_M`kVy?971C8l8iy6{p-5=-T(eP z04^V~42~}HJmY-NYAq%I15~isb|lB1uMECl4MqmQ#1BBA4u(KbEHzNM5x!keLp5La zqsj!aUzoJg@kagN00<9(TpS##*I&}KQ#GY{g{<%aK>>QDs7{2mrjP(203aLzVPIiV zfzGPcdI)dkU?O;k#OallSy5NO0KeV_mc3IR%y*%^;w z&kb6%`v57!)(TgUKTI~K0e}Z!!t5`K?0{aG2)GX(QGocTF9O2#Xa4r!J^=?DnG2Bc zX9x0G_X3oCFN%k(AkCg|00ID|C;$im04Rd`qhR>tk^6dIo;q2Ea5=T(vSSd}o8$lo z0v}}s@KIgwT>=6gTs+6=0xSu>npv;lF6p$iC0096Nd;vkS4=ZkvkM9Xk8)qbyC3r@ofnfkmG|J@+2y)RI z-&G9*t0&O6!$<}?qWi?tI+9oS2a?n%U*M#QzW4oMl92PX7Fcd>e8pjNd$s-G5XTU9 zOd$|lntAvdg<9dsLL{hv@7(~;5GQ3fUb-XvEJT1N=l}o#K>%(h;0CV%MX+iIg9^YM zX1KNI1%!gkt5WdUVTdN+6QINnLWEEazyriyuuR1yvE&}uBC}U%<5R+6jsGwTf%b~y zgq-x`Png`EA^4a}-I{8r3-_h_qmIPfLCG*782KRDE43uOz5M+4-=FV;1_c6Wh(}%^C?I{U zfdkMz|Er$wm+^cQ!Gaf*OT<8!-*1XpLG}(XSX&JJR2{0bX%5%)f*OB@#t3jH9u?2P esQ>^0K>#_4xB;uc8;k$|0YLy2LT&(R@CM_b4|h=j diff --git a/samples/h264SampleFrames/frame-0642.h264 b/samples/h264SampleFrames/frame-0642.h264 index d57a7c20cf35a4205b2d3def4265122784248948..2f87cd2be0dc6019d342b4133a97a143632b25bb 100644 GIT binary patch delta 1165 zcmV;81akYo2b~Fj000012`~Tv0YRDo8oULQ;CU$I0}t}fKg;lL5rZ&H3W0#bZ~#C6 z5CZ@~NPRmtKiM#8fQnIm{1|M+oB*L}WvaiDxA#N<5r6}01yOVu)h}5v6+ehqK>P;01yg01BtDFc!F?SM_zBt0AK(haUs5= z-~u(54I$1Z5B4xNdI5yPGH985|B$c&GqQj{Kwyarp<&D0z&@+MP&iY#dnQ@O-~f9= zfB=Bt1~~!=o$wRh4gj(dzyjE~451@Gwl>g|#Dm}fBMCW5#A(V>Gw=Wm0dzSOY{r*p zfuNe-#+^TZg}@R3x?LShtk%zLO__OPXIgsI0*yvB2*@P zz2*S82N*DRbkbnJtW6h2^CZ3uK|m>B$Q1z!6#4*Rz%-gS?YsfdBlmlehsXf{k;pI% z3QoSN2rNs$0T4I>MQY3Ub`%>1L1+OV|K8w$&6se1dSKe>(ArzZ05<>*YXSUT_yWKJ z3gL^m0fkVhO>mLm@Qr2J;Y0TTh+cyL7ENA}0MI|S(f#iL0RRF3HrP|3@R|Oj&WPSb zG&>>5)Wsvcnk;rCSx^7@crXg`!DImJDR10j+ili2hzx-b0>DpHH+ESaSCOYB?bRtS7b=t(&(kcnD)A zg)NGC<(NwtLcxdc>`LJPgTc+Ez(kb1n3NcB1Umo#0YLz6CV-PS0wRA?fD7LWqAAJ{ z|KCtVDV_ojlpZ^rHLeT*Vh3F#4WI7M|4<*jz{kR@v=usm-@Xq8pm-2j05z>~LUQ;z z7zu1}E+10=0`H@s(DXk14#is>_5XIf9$u`q4nM!ah#drwW^TE@|Nemy+Ht-(=k$0| zYFoE_0@I^1G#jtuz?y$StV#s<>L0!WY2jYVBqT5dZJ>(0_l^T;5tVPN!PF^5ad9JE zyKZO@ryLoOQx7+wC9x|_Vu;}@{rY%MNMktQq%Fg7CFU1lv4{XT0>e@i$IN8Q{fAk& z8(X#rHf@RjU<3d4&-w9OoA%HDmQn#-xT!s*J-}e9!XgM|R z3@Cjg{Vo6Q2V4LI6a-2@21E1bDm0K{|8M{qfB--wBxC%46^f1W6KJ%WJ`V_ikT~Fx zOWT|gErFa!zfqom1O^i*#jqyrsa;{I|9kV5p(?a|Bp+y8sXX zD<&bpe~(80_l2ksFk1C^(umO%>vr&t;vp6-VTWXY`Vl7A!Gl%?%O`0hR&4PaIuC3pk}7D(|YM_!^o zEL`+EXw%_wNWdgivUuYvK?u>}p%bh{eVVtYM`G=7=Difq-Akto9+WiWUpO+l?6%rz?l#?$v{NM za9;Qcr-XYbkdWaUBpFff5IYGOQ|jkG~#{o80Z1O7Mie#^BFVfhXhva2sLbp|JDF6`k&9vJSXhX^Z_*R zuS5_M@FX|BE>^i{YTMxVd*Y!N-~Ll7$M>;}0Mt5ggSt!Z`a(LO03ZthH6g$NKm-P) z7PPPMy{0kG7SONPMTv|smuIPp373OE1&0YLyciMj!+z#EJJ P00BV&6+&)+YVZc*AS9IN diff --git a/samples/h264SampleFrames/frame-0643.h264 b/samples/h264SampleFrames/frame-0643.h264 index 6bfc2428e33f0d76b60014c268ea47a91f50934d..a0a22e3afc2fa0b33a662690b5f3315429dd8695 100644 GIT binary patch literal 1490 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 literal 1403 zcmV->1%&zl0003AFaQ7nL7U(jyaj>3hx|Th05%u~Wzisc5n@XllD7CqKmh4-*Z@Kf zfqG05dozgnhqDxL?*bVTf`9;>X1lNe$Q{Z7P#W+z04sn9P#PJ;z`G@sGCoQ$00amC z0Ru1VDzJeo&I)ciB3E9zH_Q zuJjS#a2UOyxRsXEx`9m8Z6=r(mkMx3Sm+HvBSu!Vj)s5v@Go&TFT8(#egF(rGs$vo z>lE|;???ay0)R$Trh$2#Z|^=eNB{Bo9TDah2s&UgV2qSRrT}3(6_Dmqh?X^e0Ad7P z{n?47SCM_TxP|~SFHmNhJ_OV)c-R8~ZHU9$W(k}&`7fG`3ARYG0r;q1PYo&V4V7z{Ac5d;u+ zIZta&{oBR>r~nk*_W%%4yur};o4)`1{&;)=fgV|*8IhCZ-{{Z=w~GG51I2)o72p8i z4uHhVxLpV!-x-g90?o9XI&di>ZL!~V!D5~KF9F2#0I>ixg6kxX0s=BzQUW%g7{-LG z00aV_pmbFbWeY`?*?bs^0vKQt1p~(le9Qz4@)p3HCf9yQj|>0=0YaVyikGFP@^@t~ z*!P1t2LWf%=!qL47W}r%gl{ka5DFY3uSj037ouWxQy%~TfD8`fN*z0K-Q4xDr{~3M z0_3!y#$eZlMQRq&j3ibpj2{63jt~#jop@IZKl31oN96$8Fprf0T!${aU;_&Qwg70R zYc$jnq^TFE0$Kn90nc;*8yVW`frEoN@(YMN*{mhz%0KP^0DyuDGCp%cxT+@u@h~55 z1{;*{5T1MBfm`RQ{_%hSfRF%+3$>LQ-Sjcm!tLRQ^P}WVuWtwz6!wb48ZWNIFJF@$Sx{Wk6oYv^V(Yw z>U-_d)sYM=6JLN&ayq~`K+Ap(kN`Ly01QwWt#&mkNhSXVzR({(3>(Yg&^!VVJYqzT zg7|uIv{EhGLH2i<1LdkQ#ayskHVJedixmBD!DpY!@Hb~swt;gq;m4CE23vR&m8KU# z>jV>kPLSjLc7X8)CDUSNFK{8{Wu-!NB?716o5CUj5<8004jhOv;-*^Z=@&5miQ`KSMcWbNY2J=Ycf8 zmH8l)7b6A|m>Jx7!s( JZ-8p>2IFRKU>yJe diff --git a/samples/h264SampleFrames/frame-0645.h264 b/samples/h264SampleFrames/frame-0645.h264 index e926899b562d5c1bff38a282e0da4bbeaf0dbd5b..3d53f5e7e362879b21cb0b23a616b4d6734b674d 100644 GIT binary patch delta 1257 zcmV#sr&9@FfyeWS$M-m9lF8~Ap0Rb=t2k99hX!Fm;v_#uYpV5JOy+yD?F9S5={lj0S_ah3uF zOku3!6{b-v?gPz`0pJD{DQFV1FX{7ZJ-z?{Kneg9Vy~#j*A@8+t3BY$^#Y|CP(T35 z#53k%0Lr=)IEmrc#zzGQZ!Mz$F}MtL3R!A;Y!|@q-T({=DKm?QfCX>>5D0WbfD9OE%=wK$hw#xr0cy4ZKs0aEYR^IrLjYxdc%BcTiC}b5 zbztR$00I2BDvS00D8-3kFfHQEpoRA|nBE zZp}(w@4Ns30a^fKKo0Rsh4A=u#k81Gw&3sp2pdJf0S%0v|MmkwfT>uWYE$Gjce{WP zFgZ^#H@=EFA{A$V01yfpevZA=prK^(|8O9n@|S>_bUfFVVuyE-h#?9=#~^`7D5rtL zYs`ax0=w{#QGr)BDrlvEZwY?n|KF4VORE6rctqP#9WZRF7&Ou2X&D$$yf*{D006-3y08|0U8RKjM!pe#O00RJl%sf=>|KE}T0wjh27;uxS7!WiJ zg9Cse*Z=?lK>%(hn3IkIAb%c#zDtqUGris$9Do$}T6KKj@`zeC>TwK#f2{C$M9gas z8}E1kS+tkm5QRPQU?1|Hu^2Uf-ktu3c-nPL$nkd;AUq(TXlGmF-w!= zUyFWr zfSMu|_`sltwu}V3!hhSZu>Qa#(%UteVvB$7vkcAr1mwv%-wI9__wXB7 zMCK@4bcz2z=~N?tRhI$(?EsPL1OMk)V#L~)oMZFwbODk$8c*y4cd#~)Nv&+p1cXCjULayGH?I@0YLyciKYRo Tz#EJJ00BV&6+&r%YVZc*W(FxB delta 1082 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 literal 1509 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 G@CM_n!XtVB literal 1141 zcmV-*1d96r0003AFaQ7nL7HG1yakiQfp}0-01gNkCTCWeLIHj{C9}@>0fK>}F6oE0 zw&03(f@WX=S1??H!k5lvtN`1q0D|hH&EOya5Cgy0U;zMqE;+jg!}t;<^MODn3?Y*O z0lpw00Ku39`;K#CLeOj9OVPjpq_BU%`iFkj-|B!IH~;|vfC7>QtLcy^aImvN^Lxxr zQyqe^D7yMUle_=`fD(ro2&XMmz_Rfa5#7qN5%nQ01yLo6CemS00II3UQ;j$JOSV+98;u1PMR`c@Yh-r~-cw&QH6JpH9$q5Mx+y)MvNjLZt%lZNiEEI}>0%%HK2->Rc z{e^dLwa<~PiyxI=+gKl5+4bJAVwfEGvEvW1OeSZF(S>(z<{;=v|0>Y zVB`wxJ0y=;>i_%T5FynA2oe@mvI1t>Mh8>Cih1N1PXD+DaBehH#Z3)_liU|jf9?PP zKosC0h0#4#R03ad` z#scOx)$*cZaX9ii4IYLCf?O6C#6(cNQ7p^=W8sVq0PSsoL*k50gj+2Z1}GcPN351# z+;0E?KpYl}0mQ^oE_>T6;%(hm5PaJs)4vrGQg zVIe57Kn!2&TLi&%qv%ou-0I_>NMdo@_Nh&phVHL^96%0)0K~%es4^#jq7VE03>tG$ z$m{IJDZoK|?1G|wo}{d1o*SMN>KS^;3%Sx>05KIIy3ff`5gmlTnE;&-QHJ0N>6%W@ z01GR6?ek)luB8=b%-`CoQYXO6`5#rY)Eeg#xv6vVs*@F4`m ziC2L!_nal?qy50Nns)ks`daX4pqIyI2!A!314yyHJCIv2_+?os{O~8x)J=|h8qQz9 z0WmQ}PdVJvTIV+s1;B{F0}{n8J3MRtxG6A3JPdSKxD06+F-o@30v=zwKmY&ebkOP9 z>Q*oB>i}7#vsrQV|6&&FuEs(hz{Uk&P7w<20f9sg2g#C*aaS)?;6lXQiGk-tyf_5Q z%mYw<%r*^x`E=H%_PW0sK?B)pQ2pVI%kPf>P%r=h0YLyciKYRoz#EJJ00BV&6+&r% HYVZc*-DvL1 diff --git a/samples/h264SampleFrames/frame-0649.h264 b/samples/h264SampleFrames/frame-0649.h264 index 52851190e8dfcf5d32521a82d2fadeeeda77be10..e7fdba67a7e7536ba614ae99b688b627d10f7701 100644 GIT binary patch literal 1712 zcmV;h22c3_0003AFaQ7nL7Lziyaj^93oz&aA$K(FB2tefmHiA5-^9QR8megidi1`c zEUk<-06cKTw%sfLzrZ@W+S-42(+mVX*K~gT3bJ$3AAWE!Q8%Bjzu!{LBs%d8ykdvE$01yFiW%f-)RNP1Y8@&hw z5WQ_`g=9vMh>ri#_*xQ##fHFy5#RvB>|qvJI>8=IKX?rqrU7lS%^f6>@C;-EDM&E{ z%0h!oEe}H(6=@PcO%$DyH$1=q5I+C`2cQ5DwEzJCq|XolU><$LsJOs@VP$XxDc}U& zBbX{Dk8y>N)Nla3U;skF8HDi2&wc59R8-8doqRQQF9QH@2xY9~p6>VmL<>?B00aWn zw}ERt|9eCY!vf3tmsElU3g~XZ2f!c%G=O=A9YW>yCehda;{XES7j|_xQze+ zfP>ut4mYwPs{ig0fdQ6}!R(YIxQeg;0X0J+K%ywH1XcrH#DvqElhN@CZK%!w@Es#$hbg0xoHZ z#^Yz8#j)+S2Z1MmdcerOk1L^oXagu_A)`H9x*-3q0RdfL3{BHtRJa@n63xH=_!5c^ zAO}PgB7Wb!&xC~Kul4o30K^BPQ4qp@PzZlKdM#!133;qm_%12x@O%{D0m_G`U!;{@ zCS+aEp(zGGj{%zsx+iyl7)k^Qu!EUXoe-=5-CzP}`!AFgf)J2^Cs$Tc00;)U0f0qR4q-afBkY9UyZ``zdVmPW1D7|6(x$?b_8I9d7Pe6(^&3oRmzV$u1@eG!M#(lG9?gr$%8$c#00IFZ4t?gFFGL|S zT)p}H0O>)BrgBd;C$J;;h6dXai|W&ZDYEH)1R9a-wgyQZp@zTz-Fm2+Xa1RBt%0s@ z@A0|=UA0B``*&;pUonCqoDoOx4Tufn`-)PJ6@LK>nY<3vi^ia=Ij`_w0S>IsLd*An z458D-^%(+_dJEsc7=p$2f_R@WkNWHj%8mgaR72i~^@L}~2*>6&ue@RSpb7wEa+Q(@ zC-8^En25*6{rCU@0ahje4K%V~7f2vO|8?fr-?+Zkt>nN7hu{Dv4_rt}WpNnRzmbrN%44BK^{H^|KvQtQ0of=z8+{HXw;zKH0S&?+Y8F^=-~g^b z#Az^zFu^FH?M)0`b+Q@@pojjrQFK56WMGG2h)f4!lPmX4|Ec^C7Xfcz03ZaR$ir+5 z18^IA-kCN=h-j#g0003&0B$C@2Co8fe+YrY5(WT>QUG`mtAr^<2ZX>1^&3#!Z{ud) z`rrfWHbRQ%U}gkxxDhzh@N}RQ87Aa{O1qzaAV`67mH25KOWqi8%cam>UlR}`5^>^y zCT{BesLM4%=6Cpy=>Lb}G(Nlxz! z#B=~PvVd6s0XV)D0W}>_Bk*6M3{9FPhJNqyfkXF^RVS<70`fa*8SpEAgPXu0nwmUu zE&c!=a;KF+wXX_qndJ)L^~bEYTwb5 zyiyPpR3!_j0L?bbTL1+B`|JWmtd3&poF+g;rWHv_?E^!t@MHs1F}UD?l;f}3{C_zT z{+m`%8O;39ED7R$p|VBkN|`NxgYYMw5zoLB3;+NDK>#_4t^upS8;k$|0YLy2LTi9( G@CM`a!UaeG literal 1592 zcmV-82FLjT0003AFaQ7nL7IRXyaj@YA%zIw1J#eQBbAJRArD|O{K|mNmkB7R{n_xu zc-B9sPAc%8iIMd$;w&masKI~$fpuq!BNKl=Y~hV!ioT>*2(sV35nOa}Dd#16VHgNC zUtbHVs#T}|`D=C@LE!VN4)?%HVa6SF*1{a!`$88U$13hd3QDuTV9mk7;<@f)|9a#= zXozGiz{yf+I29S~^n%EbzmR*o$5KkYZD#nn%BY zA^;q8;7MEzL!yZl{2Txngck#AhjhozE=wQ+#xOM>1{@rnlMEJ5SG>SPqOHdjm+di| z#DKf9lF$~18aGeEPt}|Q!~h3U)<6S->!@=@UY@ZORquiLz{Mog6rp`p2MTG=4qr6U zftZk|21aZR^?T2M_%FxE;a#XBywGE#K_%t1@~}%)TeO;BuCP;rGPgiV0U9#aw9k$H z_z%)HUe`Z;_y9AQPc6&0q*KrPxF7-yb z0P8?bEQx>jfdCPz4-#FR(!f)jlLAAxme9gCv{8}4U&_2m&NBf~!MF-(dEK}YTYm5W z1ObUa06+u)kZC+!bWl_+HwZm=5zt8?Jopt9X&?Q700;{h1ql_Ac?b-0h1J5rfCs<; zKnxo|QYJNaOM%01HYkg@L+0UoJc>-8{iF>*p&?Z@`d3I_#(Vm7JSeu_yZ|(&29Y|9 z6^;4)cp>oA)TxUomhfvDAP1d*0f2L`Dl(lx7yRgmO6oQ-I~V`Nvib*Mlo0|jNIo;* zoqz<}>kCx{XiG?k;0!K>vHg~^q?tfwja6RVLMVj_5a9|PycYl0tMCyG3fysPm0RB!Ks#x00IF> zBzt+5j|9MVe{|(o_qS z0eS!e0m~u)4UFw|punKce1f75c5Ys9tNz>o0Du4(K}JW;Xjc`4;C?0p?ZCrgngSKi zd=M*q^-ta~01y%Y89_kfqyEsRVi4C_BLF7IL=8gAfCE_v3@I?FFrjFr$nuMfwnQ`+ zK`;MHl9$2(QHFN`Sr`u4**gDC|Ec^C9|CN^06-Z*O2gz10hk2V0Xk&a8X=;hKmY&% zK>%(hpa!o3aeoMb!x9Dnh*AJNQUzRclwc+CfD`hKsw)ePnYX&Q0Q$|4qPiFnfgCJ= ziNZnB1t7^kBoRZr z9nXx3?t1Z6elRE}cNJ3ld-&+@QG>v(-VUumDic#jzMlU84>?oX;M&%OH)+4~`vd`8 z2ER_6)DB-(a*R0Oh*5+Y5CgyfAOj|N8PCiJ2_#_4r~#|M8;k$|0YLy2LTUhN@CM^RAG&n_ diff --git a/samples/h264SampleFrames/frame-0650.h264 b/samples/h264SampleFrames/frame-0650.h264 index b33cce86a867300cde641def8c7c28007dff69c8..aed401452d4512f24a7dde1d51174ef07cc92f19 100644 GIT binary patch literal 1077 zcmV-51j_pW0003AFaQ7nL7M;?yahKwV%OC4ol8nz;oL|g72uC-_P_@K0RV6mHv?O6 zP$aKyt?og*EC2;C01yb9&;Sqv3mPzhgss-_VVG&7i<2S7-Z(qTDSQyabFfl|Z~{cd z#}ZLGQ9Nw@3aQMxXD;1Ki|SwjpLd25kShyc4GamCh?BHNuM zWac>Tl^#e5$bp?uLW(_Q2Y>IPqC_Z-4DEm!Aw_1&DZg|82W-Fw2o-Azq6TjhU;rQy zu7EfKMl+A(j%?8l(4s5TUMC1;(Ssn=djwdPES2;t1v(q6kpXkYgtgXkpd3(1Hd{=#gS9 z4}odUn)@|fIM^A004oY00<=_ z@Bjo104#gJh19k6JrZUDq5^z4Y6JlQ931EUO%MAmu@HU_KnxtWy*5W296-@7|9_bv z0hQ1o;$j`!gEX8&XQ<;Af(ta_Kl~p603Z+q5|;F6BX7ucDu}m^E3fk<1%cUNchm5A z1raz9J4y8`1WLj90ivAYj{~ptpk7a$ungz`0sId|Ch?w4D#^U0AjI10ww)>CZT~SYxV#b=}SRGXAan6bV=+a z;62{Jo=I!q|I7e7Ko7upI<6(tE^hEbS@gQgs3)VZ=#g~Hw*?dSE2f{ZjGhXJdO#VH&O)xfV z;J?Vzh`=`X^D4GXKa5g?b+zF^<%0Ms`^W$Q0YLz6Ccp--0&^3Am{3>%aqM@j5T#!R zW$6S@wf3_4u`rAPmambGf6WsM@gQgv6oH}v1+a}kLbf0ToI|d=WM!-T09$wI9emH_ znA{JH1n7`75cmu99IW>86i@meh!EZcXuwXsJhW^Yc;J`!b<%%PM5^%^?n?%ULH`5& vZU#pc-#okE!+|*PzJEUeS}*_r0YLyciLe2yz#EJJ00BV&6+&zPYVZc*B5=R{ literal 848 zcmV-W1F!r50003AFaQ7nL7Jc%yaiW5Vx&QT2!;3%#drX200IC2<{Q2&r*yJ?|DY=X z2p9vLpv#n_6ED*@P*UIlYzV@i7As21Zg>#yI8qrZT{eqwnY64};4^{&kN`n-iiUz- zsNOcP2w)_*-4MjKQ_n<_%=0kI`NQaN5DLs5r#DFwv9f|c04O?wd30C<0As(^ga{r0 z0Dw8ccmNJ4sFIJ$RfpnxBE^6p5uRXUj(s&hd+X?!jQ48iMg0>_Ae zfCK2-0@kp=6~m@hs08xiiWe84cmaNR9hm?CKusq9yTN}6PlNy5IT3~v|XfB=CY00%zdrfCA9wvhTbYZxFze zXebMg<=bcU;C$c!Ko#Bq7_wFX<+ut)oEN|L0l-dXo@0W=r(=HLUegCqM}S%xBo zvOoKRlv@GxLLIt>X-Ak00T2{!x`O9mSg?%#1Go`~96$j5fIlSzYKJah0N#KY1_4I2 zZb#YJp?m$n0s#XsA@<6nfK+S&1$0Na2vi^goI|{~A|ra>O2lJ{H$h`5#sYLm8VGg+K-PoRp58)?zkd=8 z1PY2HMghg~<)dLu93{7RODJ_@zy2c#d+8WJ!2SpOb_}xRqo09?0&(G-{(b#_4ssXFO8;k$|0YLy2LTZ3&@CM^#|6v^f diff --git a/samples/h264SampleFrames/frame-0651.h264 b/samples/h264SampleFrames/frame-0651.h264 index 861455fb0a0d5c346be5d22e49a7391ffcc0aa87..29bf269422f82d00d022ab0c74108582ed5e5965 100644 GIT binary patch literal 6829 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 LiSGZ40n&c~-1cw2 literal 1716 zcmV;l221$>0003AFaQ7nL7KoCyaiW5gC&>n*hgYQFaU@x#8Wmz_#kQpodREBJV%2W z4!E}q0097C4hQS&aJN9<^`-0o+AuKfjK^47wo`L(0>BIoNX8SfMF0psHPYZk8`~m2356~{KVtwO0IJsD78X4KCIkw3CW|COxOe1b`Gtrm^9>pB zgJqd5Hnu=`d}rmx-V6qru`^M#UdjstIkGDCS>X^Or`0%9wi0s^6*nP%Yr2}c7lI#|3S z&dWv?u%OIoySsnvDVjCHbGY|?`~Yzc=7c%T{nP~ltcST@7a3FkxX^CXShvX`?vn*TqmmEQxEjRi-!t=Eq>vR@5G2EfD*K%fqWKv1!!1)(>({weYw_O4(B zLoUHqnpWSu0099I>KHjSD>t1fjbg0Tuu{Gkd+NKI><9<2JRz*4qzeJiqwByLkTwJB952uZqd*Ap%ko*xjOKs< zh7zk3%0usRA)}RqR-&(n{ti*_01yBI%sk;U);V4b*D=pmzCZ^Ae7If<5xwj5Y!To_ z(gfDZWq1K_2s)_W3Crj{RBpQnghzf-X{xOsVZ|gz5OlGya=h7FGhI!{%0@Zj7 z;frKa{8No}=~N%XLBM{cdI?iE*0YLnkpbXq1R}6#hV$R{`+rh^U>y8JDct|v`T-ph zDZrHHw}tok2@HpFF6g>n|Jy@(DlLjCGyAm0!t$30EsG;R)<>NVB9M>&^55pN>cSvv$WT7_f6h@<=G8C7$C@DHnpnftGM-rxUZY$Y++RCVcm z3}HbyTtHl80cOD6)x)8}YO02R1@r;ERd0qrjfB=ArmjDn1 ziEUb*nf>Bu0eiTp^wTdmNFW2}7D&emB4M!~RhkN_o8`M2K*dB(d9~=GFYO#z7#gq$ z;cKz)P|Fj}g`{^@--m}2*{<%2VGzrrqUKK9?7;l)yk;4=BmM{ft?%#6qh>);8>SQ`aOBCS*bZw0!7Vhn@B%lpCZ z_z130DZcjU4NwmZ1!X;MYX6Zi&tgRdAmS!q03Zehb{+&j<)e@assN+2(DKDx)<=sF z7J-_fB*miK>#_4tO2XQ8;k$|0YLy2 KLTdnO@CM`fvHZ#a diff --git a/samples/h264SampleFrames/frame-0652.h264 b/samples/h264SampleFrames/frame-0652.h264 index 1a6362bad9c857457e6c2f9e0fd1b013247a08f6..d5301b05ec9b855191dec766150c5fd76369dca6 100644 GIT binary patch literal 2716 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 Wq5-SG8;k$|0YLy2LTG?$@CM@)`Bc~d literal 997 zcmV7lU-`^cC(tvB2eH=Rn2JndF zXodpo#3&I)HTnRc&pY5r3CtJ`6hDsvZtlNXCaQD0#s1&` z%m4)%DcyjKYKWf)bdD z37bI399IA2>QLYY-~g3ap=U%PjrFPj;{X6bJOBh7fB-?H0P<(+_QoW|2}nEJ3}}fG zlDr9AMaD=vQIJ@G02hILUC#W7Xs?cqi~G(6oG=-Hk$@siq#1uha6<_|0W|NrIzr~yai6lPSYFZ?J~_%WPmrLe&QufNAmoj0f4~a3L&WC2*HMB?eW|Id=Mg&-oq!txyq2>*H!>P0;(7f;e-G0@K6{a z_euWm20ooGo5UK3j*%${HG7kU8Teq8fR)BoIGu?|kfY(-#w-B8{Dqt#ZkpF|G5{h9NrIL{nLo67!lc~rVHCk`hS^XxL{D^kCQI-Ef*8=B$U#z( z6HZm5xr4|+IC)(FOSo(_6AEC!ElThZIpYjCxSL;%NR>4bF8EaAP$cL|SnM|_J18v1 zga85tM2$WN9RoAbm#pA0YS1u{eLa4NmdwLoBX9>UBn`$q024%JXhhC+As>J{cL@`8 z4Qh|qvH^%;xB>A)JCmNK^NF_?TQdeeU4_K|sXO$)~2HQE^f_|9BG4 zix`w$AW?Vv7B_$xLO>uZUnms;G8A;8_51>Hf4iYjQ{Xr+Pb5KR;saTO{=jUy-mqM+ z{@8W53!-%YAVcMy!wXhZ_pm~{TKnM4thSl?X2~O30iYM&e51esAQ^xUKTS3O0s{~L z3UB3*ffxeaTbBQ^FbFFUO&fnCef$TBYUPTPcl+;QpF^xfX^;1i0R1Z<>hOv^|EvTx z7J!-|1ISw Tz#EJJ00BV&6+&x(YVZc*+FP=_ diff --git a/samples/h264SampleFrames/frame-0653.h264 b/samples/h264SampleFrames/frame-0653.h264 index a908afc317a0146a8590963e9b26cda36e728d47..153812fa2b4353c91851ac0a178bc33822e4c4ab 100644 GIT binary patch literal 1199 zcmV;g1W@|`0003AFaQ7nL7G4syagX9Y3v#pjzaTH+@yO3hj{Q10;l1rJ0G9}hU5Ta zjRAc~y-#Q~MgZYO9WFYH7J+9x00aZY9}{lvq8-tpuYq%r00;<~A6R;p*<2dV?1@$_A zfE;Y*D~P=1qx&@g0DvG`M1X13oGJhg3$CF~z)`e>VCaHk8oW)Q|3U2#U=d7*)FE{p&I0lOvD$;UXS4uOFE+ko+o9kV4xm`UCWW*6WD z3@>fvO~rDhjGKSp`~j)HICDo=sEZ%SIO6drsYLSLT1fz)6a$ZMdsvdEiW$?t{otqp zP%5zU7DeCTkqdCZ(g4`mu+e2F>(`V3B>)j`0EO_dRgo{-a0~%SAGI3B5(zR)$OHc3 z@(lv?;iyq64JZ%50L%v|Xkbu{=@LWvi!J~RfVzor`YVb{ihiogLz!`r*3{8;eqX&A z8wk0Mg=P=h;J}sMG#(322`! z%eymA7@3-9fUpNVHZc1epjtJE-iP8~zyl&{1Hvvjr7{Nm!wg1Qqe%;*yOIWO7>+3m z;#o6nbN~Lp05Cb7VJb?kFT#)4;C>io6|H;!fA8i%P;0ll_uoBzO!NF8GB_}tny3tgo-2ii+yWb{UP-!OWANhbffP4jEn8UT4?vGvGYLsf&RrA&*RIneM}Um7Shp*C}!3q#wBO z$An*NX`ih48hS5ZyKXD;`rJG~2M}yV&mmv`{$LJ>$Kx9m>c+a-AP509fJtA^fSg~O zyj0v1CmMCE(a0p;z%)CVFhko?i{RQXVvzs*-)0kG5s*GcGlKytSu+aI$h@5%kdpdr z03t7vn`w96vM@ry^WY0>t>hx+OnK-*e}nKZ0&s|Lc(DQk(Z6=VSZ;LUeLvLz0RR{Q zDGdMva1BfI+3DBI7H0qL)0XGI`(N+?00BV&ZYGchuK;*30003&06B@I0jt0pi~s-u NK>!s(X#i^Q2IF$z5rY5# literal 1043 zcmV+u1nm0&0003AFaQ7nL7M;?yaiW5VO^L1AqiEAop!7Q@|eh8JWZf#vcJv zOGyIFhDvXCApkr83cCqNcterT7y{e_q@)2*Gm;_`004*g`#=F5#{?Jv2XW`TzzDxX zm(B$Mm@r}t2nKk800k)4}bs= z00IY`NkPTyhfG(C8mI0U6aWQeJO>p30zF#(U@HFb4+4XTZLy|H77lG3UCiKz;2sK{ zI3PpV{SauhtwO*C6hPKhVQoQ8QoZ+(0Du&IRi43Wmv*U00k{+V0)YcPWi2$Kp#uZg z_%{L`09$!6@VZB)xQy(0!vJw7Oq~nWBgaH+2aNzu?^-E;IGk816#xdrVc5wku9tw6 zD0a8TqDnhAX5CQ-$XtSYOK0pCg<*?Wk3VmA$-_g8oaXlkCji8h!@ySojY+M){|pIu zLCiQw;7^OJ_*SQAgZf_uz_>O7Bsd8HSfQT=0CYSB92}qfs0d{dN(2os` z@2nx)1Y`4x0;~gg;>ER;ymj{2%~TG=(t;|h{{G-6L;-jrXJG%(ABzAA-+H)bKgImG z4>2lZ03|_-P8*!^*k*wdkc7#mfB*U~wf}M9ZwB94W6FQk@D%oo71wl}f8fuF2ms)U zViFcdKmYu|9T3W~jgEC7lg;q}AOdR$2N?JS;{4x=k<%KlH1A{=iZGGuJ%Z{L^QRH{ zwJ5tQQNWVfBN{bdFRZ2#EMP=b4@6;(IA2MxaGrr4`$i2Bvv|M)Ah#tmWKSIWXp9JY zf4TsEUQHPQVpo3G=bOyUn|+2pzNBD|A!s(YyfKT2IGI6vLXNg diff --git a/samples/h264SampleFrames/frame-0654.h264 b/samples/h264SampleFrames/frame-0654.h264 index dd56e355ec40121d1e960ef13ad02646fe0f1f85..ca51c39c2e1273874344c257f379ff87f607ff4b 100644 GIT binary patch literal 1254 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 diff --git a/samples/h264SampleFrames/frame-0656.h264 b/samples/h264SampleFrames/frame-0656.h264 index 4735547140e3028429266ea06ba54b608867a139..6139c03b5f0fc7eb4ba2302bf7946fd7f0cbe219 100644 GIT binary patch literal 1643 zcmV-x29)^#0003AFaQ7nL7Jc%yaj|H#SY*Ak&MPpaH(NPdr`vS9K(f>&oRI6qqhx} z4COC^2$VEHEf6r@qUhu1b=k?`Gw_YB0AL2SIn7X-PRM}8Ic2`{0ELS@@O^nMZ6ky{ zU;rQ(AZVIra?+FH0L!YqUl0IpKx5n)AhA-o9*l?@gLM=6T`Rtw|G|#{2<%#CFk)!z zfr_uYc_9?j?+`2l4MTt{!3}nc>zEBe_=X@1MmDI*kU@TjiiR5nA=!p`&zAUUCeC00 zAZ!5x;*(*-X59pg$HowTLqJ6KsC{r_FYdv>9#m+ZZR~Q7^H25x|8dfJ=+m;9ct>(T5$CNLPFgBW<>4}ih&00ICYab9gci(bU)BLR9JcmM|A z1mKjpupp}06&d#zlK=q#U;q#f4V^G5q$2MLC^CdD06@SMWkuJoEGfXW5&QrUFDy9J zP(VWFm@Rqx^R$NeGf1}K55hu#0=D*mFcvxD!d2%00EjWfF|3g;i$WYHN7sNL+6(<4 zsruRVb|kU@2nZ=WM@&TcUCI7sExq=nSy{Fxf__x$}Wh(Rfku?)dwAZMFjvj%bfS{zqiRwZy$IWX`86z4s2MmQ`B8!YjXqmzUbPhv?;wdxg*Zz+;e%t^M z7KFq9Oo>W-|m3^#B4t_klo0zyd_>0N~KG zDHEQOM<1_h&iUW|CICkOb$)U2*!Kq46VmT>csD8vmp_~8`G9b}RQN?pPBG7Gj zCwkSIhGk>p9iH$&iv7B|jw+A;Ys{G0@lDuNAt($yVs5#=`~Pi-jDivvb*-|W*+1>? zv7;JWGN(WJzzQC!0}odCJlB!LX^8`) z`btLr|NeMzGB^;L_w~et&G$$T_WPHP_k#j)e=o>3osP^=kD@t5 zs6)4Z{y_o(NLYV~Bt)J&;61=;Ou;)3pZZ2nG#4fd8)bX@$cT_Koi;1FzlReDh608F p00BV&ZYHP(uK;*30003&06B@O0jt0pi~s-uK>!s(YJh6+2IHpx)Dr*z literal 1481 zcmV;)1vdHs0003AFaQ7nL7QM2yaiW5LnOgCOaKr75DGEZTy@7Cao1dR&)@;T0SXI@ z1vDueS=UgifBCLXD={7nSV#aI00aO43jrqj1{rTF#J~+ppvkm4pioM%jHDy&Rj&*X z;cup}lkXI}LO}UX0AK*8q$TtYB?bY9i-0Nr_ziHwcVp+t{F*VW$4y zz)S#uAx^~rozd!;vhU#F0OMd0h*&%$>*2ucFN zAd)4B3cn{-=e__y06;h$nhI@E{UYW{<6#f^UY#`6-~i4*#rw?wgiPZ{QVD1S0YECf zmYAu?ta=aq=GX-C6d)KHf_Tap2l=%c2x_`1!SESCS2(YNz#Q4(F-v#D*}OKvVz7>SG%Kh00IEOEKIyd!%%Pd6J8RSumErj22k(5r3BKvHYq(Q z|Myq`fs@{7+Ben~!~glDUnUs7L`VQ200;nr87Q0yBTgyJXs7@<00;qqg0pd9vQ0`+xw11w&GFer@CDUJ)f^jzi$#|H1eI16Mdb+IJFMnrrqn;GDzC zo`Fl^2S-PU9y8+_h4lJG=|XvJq=WDP!<@Hg9{^C}ZQ3T=#t{lCX^!Q;P_F<)5Fyp4 z-GjyBY86*>JNTIZ0DyP9fKcbvkpx`hU}!W#4nE&2JN@8AaG9uvfJl__*nyuw7^>X( z6D;xyeW9aNC|}^Di@rnNu-lOPq!wImY#oXgH?m(e0vN&!s8R{DPe1oyZWU{XEeNwA z|G#(!e1S7E8?Q|f{un|7ZQ%eb7^wgUG-y}F>6X9($0~y|ec|;K{QFGcWK~@bgcAQ@ zASw$WLjo*ARFzinSO62ClwB#X18bQVF2+D>G(<=PC;*X}>CAt7!B0JIAMt&S3!_ZJ zjiTkCaz9F z%qBu$0QnD)qSZ-+9@bm%CHFbR(!TYGIl_a4K^Ss2X?OyKIS2p+Y#sIEjs0h9Hf{so z)2;^qjnp1Tti#{jNJMA-qzC&g%g27;z?@&Qs>Bc4d!|%(h j*aoivcrX9}0YLyciM9c&z#EJJ00BV&6+&%*YVZc*3w)DT diff --git a/samples/h264SampleFrames/frame-0657.h264 b/samples/h264SampleFrames/frame-0657.h264 index 9f75ce4da3919523ee722badd27d0910396a2520..5201c07a53e88f38891116e349569a5859a10727 100644 GIT binary patch literal 1227 zcmV;+1T^~q0003AFaQ7nL7KoCyajg<64D?*93XIcE%ReQvuJAYLJji#8H8Yr5dxrK zGr$1=06-J~!xBY1Iu-Q55N0WuN*{rOcO+0K^11A-61S*$AQ6BYa6quMjEJHGJ+}Y; z00;~r1)fU;HRWARW)tuNfB+yI!QtMmw}A@2VznMz004k+yd~Su$tuSL(0l*9zyW{& zf+d2|p)dfgXG7?8i@}#iKp7T*AlPn>75@L^BmfhUm;nJ`fhrfHK?}_A530}{1`T@; zWz4wn01yMaK|liopFop#cZ%l-j|Wx>(x4ZK>Ck4Vl$PE^!S5B6YO(O}IuF8h5)uH1 z(%mo#l+k#Z)LUWY92*Dd*Lg;!FXXozns^`FGQj8(SUBH^n6qpN5a1zq0vqD!G6De^ z3W@+@55wC3H5g(K&+gdKL7w= z51^#gvz~3jhl6Z?cozU_0dmUNP(^eExkc~*0sM@waVI0C)>SnY#N4fq$7@#yyTH>nKsnr^F_ksve$CN;^ z<%m*FT%*ODc-^1` z0R#gMXy6edEVxbFqs7jkjMsnsbO3|^Q8oa;JPWFU5JJy^t5pa91Pwp{K=%-^022oL zI1&oTiGq$mzyLtJ00a#G4S)imtlivuy{9mmy-KLb9QB1H=4Aq&Ny%u(8wtHvtg@ z075Xh5)EVgND)5WFwZD1?q*d6fT1wqkR#rgUPI0^!?Khg(HKC zxFb<~56Ya8m~R~K{2m+vfcQ}^NSz#KfOMmE4TRI~h7g+5O&_;`5*4>WFG@AO@M9X+ zeET#Dv^P=Ixfh0&!TP+wa-*CPWFP{Nt3S z6;4KQ3}QGnXRC>gK!_q{ST%AP4-gDuNPpU+F}vmS`G4UIr31^(MJc(CQ@=0g0DS@9 zUv4Smbr%W_3Iy8bml=-L$O7RK*6szif=4|eie@#?LnV-)2ZzsZm~oI4WWhThI};nJ z%N_${WG@^nwZk8fU`|I91AvGuRkWG%=lS5^$a*;gv1;&3E2K1h|6cfKK8BdjiGdR- ze_s*RG9hQk09an@y2&F8`vA|Cr+1Z=*512)h&u`Dq!5Z{MuK;*30003&06B@Q0jt0pi~s-uK>!s(YXEBS2IFW51f~E0 literal 850 zcmV-Y1Fif30003AFaQ7nL7RXYyakisNeP4uel#n%0!7Pm4?qwACnyxR!UQ_!kbNiS z+MpI@4~--M5PSf@;ptGS+f#8JQ&`#nzyJsW2Mjt-Q`6d_(R|5o4N3q41H!2&10ofV zHQEp$_yYiCjdKpX&?Fq8*)Km-3~he^fQSbE5{bONk4g!D?*I%Ihc8biL<@oUNW^PF z=Ri6D2r5z7PIx4-Qa|4f@!GF{0(pOr!XStx02T}YF@r%EBNJ3ng$>Ub11JC}Z&Owh z4U2NXkd^?9Vwyca7*Gs?OE>8XW=+xn0st9iPynDZN5n={fLzTGfCaz+f#2jn2nG>j zYdvY$91`Kt;|PZxVd*80vN&Ip!JP38$Ra)O_87;#o)OM5PFd%yp~)_~UIPq_4<@+L z1uf0i6q9r2L^8Sv%uCXSCqQ5TLX+SHLCSjaA!FK#T;iL{1JWz>P)V^-fAN8C>Px z_u;@O4})A`8Yn|N1GyWZ*iX~EF)Ny6|2zw!S%kT=9Ud`_-4Elw{ulyaK)HpxLH$4Y zks(BGQX{`NfiR0_8WS;Nov>6i#TANsT6^Oz0W`mya+JcUvj7pD!K)L*$3h|3AeJ-G z{}2pfO08JF&T3!yLn%P29fYnVp{x1&z3Lzupeu9w`Qvp7M2-mnNCRbqu(KqQ3iaUq zfmB;-zym<9=g#lqh*sPSB3ET~hG^P+K4@vgOnMlZhWzD0;3Xl%iAo+?;E(7qCnJf0 zz(f`<+RVB0|2Ptyx#h=#KmBh4*(YH!}DrLKry&pyUvY zf<543oVS1gAO-*w8AHNMruSU|46<23(Sby804@EY-~b>T27*WQ6$;dx@DPm*D(0PO6CtF& zApijt&+r5Q0s=Or0Pld$dpQMVVT!sy03b1nfjz=o>yK^G61pM$7BoOMgzykmU5^Wa?b4>vPW`uwN4|`q^ z=si+_{PQ{tKL7wg6d-F~@&W|9ux%Q#nl}IdVh_)vp}RNCQ6e9)>tx7z9S>ifW|6bi z;o6_Wkg6kb1gWav_+mH}06>9Y*;z?3Q9Zx>7!!?%0wR53@BmDVWOO-#3+^;Y zu)q>gKqFJ7gw9C6t&*Z&SQrq@(Pd8s)@X##hl4QWob?`6-jHFx|7ZXL0ALC#(=ybq zN!Xx!w~>&F%44BKO4N|Uh7)aM*T47v{cHTmP;0ljZ{H7FQZvu+KpBV!8=*7QA>~0{ z4E+JhaDiO3b(WFqU~tcQJU4U}g9ZV@9r<_J=weqI%1zxW+wnC%W4`|tU# z%gYyq*W>>V0VpBC)x>B%()(6v?~scKhbZ3BQzb(hSZTk|6Q>XnjFPZv<~#3<+a>UGv4!L_SR=p?Q(R0c9T8%OCYUuy_GMceYUw z|KIB{H$dQgSykSBKKtlXr*F^OEjAf_D2lHC{^76zyMfSW>hO*df277o{rCVDXx`bP z^gq(WOql;Hq!R!g*{%7&2|ZFhs?rheqS!o8M8cW>{aSBg(R|G{{b9q*s_)Qa?)VT9 zU?2Y2PKqke+27}f0&tIr{(b|-0003&0B$C@2Co2kFaQ7nK>#_4t^upS8;k$|0YLy2 KLTi9(@CM_mY&Gxz literal 1054 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 XiLe2yz#EJJ00BV&6+&zPYVZc*!Ca-q literal 1427 zcmV;E1#J2N0003AFaQ7nL7TuDyaj>$z9iTnL9kpfC;$im0szJpJ|>%uE###qd=OtS zr~+Ty)S#%=|GxkLKzIxr-U$!k?akBrfx$>e@GwycH5Cj>*jnv0il7j zyu`~Mtr+&r-CTRJUgfHufBu*`KZ8frhAj1@BwS4o4E>(9PXMhX< zR-ip~HppG$Lq_-h@TfW9c!@}kj4a%pX%ZPYU_i|VgpbP6Vqh|VL16!-{6;tw#z1>d zBSbu?fb5I_4cKSF3L&TK+u#7`L3lQ{e@%SiH!p zhrd9-JQIZ@RPOVEkJ=51S#>+863te^X@ar}U{%&5ujqQq9!rqE@`^EF0N`PZ1ZiJB%7{lO+xy@c$wx0OY-*t_T+_thD!X2Z;9@UW z)HfzA5x@UK@&FDvI0&hUUq(m(LAdLH0AS}m#&9QQ&B5 zX1rkueIkF<2d-Y-R`37>000ObCmPkstblIz>KJp605CwPN+(E~Bu4N6!KXn%ika60 z+LH z6{>gwu>eAWb0uw#9PV%%l0RU>LJ9x^0Nji~1E3l~7T>!}L{3Gpjn>uh00aQR43tg; zk*5;ov`+hdA8pl`-5_UTjJNA^ZHwl1OUS!xexn-m;;e zZ@{nzcef|i{^=Iyw}GGmHP2{bSM~P}9HasuO;vng|IkFMqHG`j^9Jo_?~i|o7Q-UL zIr^Hr?vcFvOS>}?8Ck=Oe?XWC7BE%M=_fFcxDTyb4j|$$0(Yi|b(mIud<_Yfd!bOK zBmYmq_CMYK!HoE1RLn(V|IdN#I(K{g7oo(4W3GSi@1m6uYN)pVfSg|tIF2Yt@P;P9 z1ONg8M}R!KPzT!Bkb)li*XX4obyyF;$>sOsdZ5KWyg+JL5ddbm41Cv?oBcd1m--kq zg$RWZ5rK`?Dgl%twEzlEw2su?r~9tU$Q!mxf7}2z9ErHvwi<`400mTXRFTg9VCddW z#J%Z!@U8^cg8(QHU<;&ak;Y8O+!VK{5qB6Lb0$9q9g7k?aDfY}WsC*}uf%TX!}4YS zC@p-9EJ{{V6^=6~26<>Bfd=JP4F5u?5rNAPzV_P<`OnHOr~EnL7zG9Z00BV&ZYJ;s huK;*30003&06B@g0jt0pi~s-uK>!s(ZvblW2IE1#h1UQ8 diff --git a/samples/h264SampleFrames/frame-0660.h264 b/samples/h264SampleFrames/frame-0660.h264 index 27f9aca290a1659a47b17cd2a3ed5d3b7d1839b6..daf124f271ecdacb9ab1392940240459d998acca 100644 GIT binary patch literal 1309 zcmV+&1>*Vu0003AFaQ7nL7N~Nyak6Kt{6+v@(SmL;z1a%01Vr2l-&3L0s){D7oeA3 z8Vs%7dnL*eL(l*`zyLrxC!hcz8VLy>Kvrr+ybKY7*CcewPd-pcpVbohA%^E*r40TF zi-ng;r%o*bV=Ms$OkpZP2dsN|E+7QJ3~+@Wr`^M)QfmKj00jUz#M@DBrX$Cxs`mz8 zs5*M88~{W@KmWa&0Lq#WEP;`yMMckx{_%hqk-+A`i!Fg2H3;B%0AS(~Fq%TPxh(~U z@@PP$H^x*0{zA|>yW%KPgIYp@XNOJY?wS-c2ax>49|M5<0-1ok&-=gwU;q#W0097i zE9qT8ZLac)zkhfNBLIMlK&E}-D?cdkei|qMTCITKG+VT3%|;xI10!=!P#*k@0BC;d z!OIu`K$=GCko&+8dIa83)5l3MlB*T)07!5S41{>s53zE>$b#009E1n1BvuB0KyD1PYa&ghZ(td;35L7!}Pc=F*BQ&Me*l06-XJ`Z{*ff(5@% z`+^)6Lb5s(k6P};_)heMBbCJ%hY0dWcreg@&|vKRBsj6rI+QL(;IJ2YM34V40$ErN zhK`!)Bdlz^FiArN{8ULI^1x1D0N3{bI0y!t%B*Ct9yIe100;WF!_gEhORg{p&|CDDKj{}`nXA*3J z6BT?P;GhUYICua{HUL-%4hldDDgf{()?i?&#V=`vg?GSpI_|yiv5Wa;U9aGEUTD9u z8~-@<f!{20nOZ}fBvm#q7dTnC1K_| zBd0+{1`?8h)^PMLU?&&q#0V5%gbr?y?775!=uN}zZP_;h!N|UJ%(h$Of+fcrX9}0YLyciLwE! Tz#EJJ00BV&6+&!)YVZc*=9wzt literal 1066 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 D-3*{9 literal 1466 zcmV;r1x5M*0003AFaQ7nL7D&>yakDU0RSKcAh3K;!GTOT@Bsi2FdFY$7N@USNQbY0 z0l+{2U>!u=nV5i|kQpuV@qhq;HvjtmQr;ts%-<^XjBJV~$t2H+?mSwT4@ z;RvJxhXjmGa40l)JOmWegQ9bS&a@T@mH*)L?83K=cX#=wt-~ zK$Sx1M)`F?4AprGbUU2Rf@&=pnwDfQ8~C6Q)*GWkp{A0}gPc2!ge?Mp_9U9!;oR3~&Zc zP;#5_0n`B8uw1>CFc{*1RgE6Nl+6i76%1A?b3a2+Z!)l;i~V4RLqG$@00IC6N#Fq?5fjwr5*rcd0t^trq+3wo z-~~WQ_a6Y(GE3q^h%XEY2crr6009AT;2%=osC7s}AD6&j@&JMYJd;cU2$cvVC4Sw& zgKn%AOE$pi0I%|w)`QtXK5KAc@9+Ia3{aBG527PXhlJiBXBa|XCTv(s>i04uUw{|` zkCp6E?Ns0a?Euh#(V&0|1@7m7LX^oS3quGeK)?`#mT=}3GF>-?5GhiF-~$2_(7)JG zgE5n?wt-ab!LtDL0do{N2#9(enR$D_07I+;1CA}mal=U|G8pjJhmn8)fp9O#I5y#G zUhe||(2!FAJY>_lj6i=xz8@v9J z8yI8*G;7#-hR^)F?2Z8TTsX(+hF=0E-@9OYP8?l5y#wG4KuPmM%E?hMnXh5^0~$>< z1_&CRri^T|FgdKB#WTQA8o9ylQ@P}tX+Qqt8G>^Pr>n0^;A0#o3y2GhfGlno)9Dw* z3FWqu2D|`a&TF%epeS*-Efa0y35qIdj^)45uK^@b01yFWeE~tY-CETl4~WPBy-F2H zT@k3@v48>b2Z=0LLw1PX`dAAEW>2A_M?e_r-b@LV`2{}E^HezgfTat*L*B8AnEIp^ zSZ;0|ipW^s$=m`M#~qN4f^74|{=nQiR}NYcWkdgd@C;hQGcp^mO%?taLJnZS9SZOO z^0(WYnBAaNpJuELEqooZ@vUyr-&a2jorWh`!O?^6*Hl!`TP0`e_?1WmJmt|3Alkmj(`CjzySbCNH7L41|@c< z0R_LHGhY)ML@S_+@3rr{Ui~g+%-{X+NruN@U6gL20|9d>+OSGvpM#h9+)0H9&^QQo z=I;`|&2}MVw0H^-pH;4aw@g;%M00R*~2LspY{Uw95^a%wF zd*}HTkW7~Tl~gd`PA}y6feVGPQwT`=B5Wf)bmz4%2Hm&{9@7YiTmd{e>dz4XO7=#R ze8GftXo4-fo40il0U@v>z?7O8%+MAEzVLql$-n>r0YLz6CV&R70C+F}00BV&Ifh2sp5hCrL#(IZe&iNGjK@DGDi%^G zj>r9y<(wGMfF|$;CJrVXUIh#IkR$A9tN<+n;;D^U3SX9`06~ijX4zVUjX=~S00<=j z3<5%UXV(tx2%r~T8uS1G0gwQ|ITV%HGE@`6Dq8MhKnE9$cmN1Nu>ZgSK!d-y09c^F zKqhSHPGnLgmDJ>>YeSTKoB06F00jo8nPXxo(-v{}f*65KCE`XDBq`E`fCu~l1VAVr z>}A*%5QmCe|G}0hGNb$3Hq6rx0-InM4+d00@XcoeP)Gm-5kLSzkD~wpK~w?wcqsTV01zVp0RjHQAOqp6 zU+4^ik^@G~NM6JV)k>lelo~%(h*aoiv fcrX9}0YLyciM9c&z#EJJ00BV&6+&%*YVZc*KK7en literal 1058 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 literal 1625 zcmV-f2B!G{0003AFaQ7nL7HG1yae0{0HDJ#08J5%b2d|}GSGt}NQMHOKHvB}1_Hzc zOdg1Yw6KXdVO@DaCPW}&kf5Pl=i7c#fM!=Y@&E3>xU8CZkpI1a)-P>IdzeP|f`#@4 zgcO3{Qy4%1XaEQSU;q#V05H&PM81O+lWW-!IdB93VE0l0R|&NeJ_%q|8em)?VCtq& zb8rB{0VR#!wV{|408-+=f)gFfB-;Ohn6S+Dgn%+ul~G%0E0~c0)PO4 zv;YBc4a0sc+zbo~F|Z+I$pABT5R6}k`zl}nAh4hSpa39gfB>)uL6ivZH=qI-JJM0> zhW#|MaL(_T!NikU5Pe<&(fCI1rTcv=i9gDs2 zApnF4HW~VV#pV=2Jo-Vf#1ipu=tP`Zp=SHY0k}a85EJIyiit}el=B+`hXGP$G$j{O z8rGy~d{}`IOdO$*1Tjk+_n&_7UOq>mUFafxz`~70RUQ^00YcW01zbr3`s6D&cE?6sB-ua0k9AO#R&_K z3TsOSk7`y`)c;H1g*clYfnIxi!KXHWR8z$pt>Nw=VOvsy4M7N{_;H)`!xpyc04fOv z04zS;JSz!4%n*PAWC4HxfKaQ@m>(k)6RkIrS~vhO01yWViLfyA_$9#5`n-By1Z*lC z0-z8>06`c)2LJ&8Rd4`zfH`oyt^XYttG#wLRH}i7G%MgP0HD8wFSv&^14r)Bymk zZfIUf7!DtBkwa|B1ONg9B+0-4ARGX9Fp>Vy3LPMtI%akti9ZVI?*ITmAOJzc9CJ?e z=D;$XF>fIFfC*rA0%>9egiQlAg2#XXfC7IM4g=v1InnW&HWLf7_%aq13WR|<10y~L zD6!YrHkPsjH-nU*=mUp&y*lpy|Ktc@{Na5P7)QrX?)uu;j3!MgoDGHG0N?;11^~qd z-!T*U!5W87cK`q200;nzV02LCKrx2;pP}MQRpNi{w}~lfXb@gaI0p zuL|L3K{E(b{!k4g4B1cx$ZG4x05RY;zzr19W}1Rjl_KQ;OTYj?Iix@Vv7N5CFmPwO zK~V>LHH5_BNBzJ62mk>N3}k%fWpGqZ0ueADZUYUrf;{=*5kS~EA6T9n`+WuEbZDa>{lE+ij@$ET zQoA*Yw}Jku&;angmRnQ5{_YC%(hmE_ diff --git a/samples/h264SampleFrames/frame-0665.h264 b/samples/h264SampleFrames/frame-0665.h264 index 826bb35684f2e09555091c0c3a11b6e8f43a54d7..e5b4b7371e1ea4416b527aa5adcd64837214836f 100644 GIT binary patch literal 1290 zcmV+l1@-y>0003AFaQ7nL7TuDyad_;Fem~5EC_`#0dCSvTsuzl!@z(5fEqw$AOshw zxDVdYBnq1@`7;s1|M(9+i3!}}z4HC@zppDbzh}4jEOz$HKwM}TRKJJ_;z1arb4h^!4gdlIAPNuAW5fr+72IS} z?7@s000N8v1O*~50099|XlP9VO?4}H3>kvkEGE4+2va&Q{barfVY%2TLpT5+n5Zm~ zEWZ$~n~gAFRK!tgK}q%@t@s~)PzC^FhAjeC`5iuOXSd)02mwF`83f-^kE$wx3adC7 zZs1j`GKc^jFyH_0GY|$<(4pi`j*uA}6&L;E05Kr|Q{Ym|;7?6L_#OZZ3Mn&+s5fZ| zxI7lip>nV`FcAjuAOgWfa0wr#A8Heo^H(*a!yzIN0-$Vva`7VUOC!!?39 z3sSL-f@J`G-=U~c>)`*!00IDXzyhEQ@t!uoEG(#`000Oa!^KYD{rMmOB1m8XhYCEQ zaT6fOY&baZ4=exx0YLz6Ch!KY0C+F}00BV&If=XhtH2wK0003&02M-S0BZ0C<8;gx A-~a#s literal 1104 zcmV-W1h4x50003AFaQ7nL7IRXyad|<04xGPC>Rvr1MOy(@BjbUCF0B|G+T#JOx7|t#YM+0D!3Y zFlGT%WFRWz?>PUtfjUCdJ)V&L|Armaj(^qoJ@}k)r{Z_txB!lo+V(I5l!gFr{2sX0 zBIg@Yk5!BuQ9eOAhhmE(-XRo`_pLGyqGn96vWOothy-0%=m#5|`?omJzW zG9$Hy!@y?*10Vo_D#t@XuULNxmH>hPlc8FniLBzRE>j-!V9)rb`fvyXvjST8X#*G& zRNvqPi%?{VlAyp*e;+cUM}Pnz9y#a$0RZF6jW9-L#2Jn5OqKvZ5QK;{K!?|9JK>N( z9|1rB5CjQH(qQP0cV_lEM=l84AlP+xga9Fd!7o3+(Gdrwq25pdgC0##XwLuu zOp*Tf4VVG|FaUyJao1^mG6P4Tc0d3yct{`(sT%<++-L;w>zgbCcn|?#qreYsT(JMT zsPu_~W;8VhmkfYbo+Mt0JSJNwRh$2Vjx_Xsuk=~nxDYSMo%1TICxeKWLPyY$rig61 znC#?roBx0_A?QQrHNU+|wOCnLX^-adeGvce? z^-^%^7lc883x+%-)jnqnf)5`)5W)Du^a@-^o<{_&w7vzPM*=~EC_vA!0}MZp($$&6 zr@n_hg8VXE@e@H+p8B3MhaFI$03c`p0ta2DKmf2Z84w=;0D!>Cp3O!Dyr0L!;1Y>) zv_S!Z@y|k8Nx=;=`})8LZ~zbxyfg%$umBQ+8ydU}5hENLRTTh`Q99ojR)E#u03Zh; zAOKTKSOBH)=rsv>F<=e>5J!t)0^`)Rzi=1;RWJ+@DdPK2GaNLP|J({u^Z_oiLZR|1m2k{{wx7f~1I4**xQG{L*c$V_p7V(F71wAQYl{PK-i7OXyiHPac1t z1HdKK7Uv+3>AWxsxBFW7JH#5hlpYP?!2lHq0JKAutN+G$>{vw3kOJZO+SR&8|NruU z6N{D8SNQ+_FKLLy0TfB(S1pWq%?0003&0B$Cr2Co2kFaQ7nK>#_4 Wr~#|M8;k$|0YLy2LTUhN@CM@!yWIl- diff --git a/samples/h264SampleFrames/frame-0666.h264 b/samples/h264SampleFrames/frame-0666.h264 index 0184ad63ccfd2463213a709bf85f68e6b298f1e3..b7b8374a95f4e9be637b992d24bdebc9471bfa51 100644 GIT binary patch literal 1765 zcmV~4@uWAlR#ZUmrEAfbytFtY!GP%HwVdKnFz^MFbKb%)G= z9cYJZ-g-B*rSKyHfFnf&3M6@flZEGEC@a3o5AoG~><<73JV*V|bKJNEg*=W!%9uS( zKw60!uON5d-Uvk4Yg9yBdgNJT|DG3#=qPIXlAI?N00;mA0YC=@nlxzHvu4d2G;Gj<$wTyXdea!qBy_m^xg51F+8}e05cnJNj987CkP}NX_dB_2!mS~PW|}{ zR09ABQgg3CbsC&~I6wsf#bZmPDf&jd004kY06Bs&5vzHgzld!9-~bQ;kHgn!QqDtE z(;*>u{^KyYdzb*iBT|N;|GhwgojZe)W6_qO!HS*|9j1t4Ybfa@va%Qh0J77vVm>Em zydR2F+xdRNA%dKO27UnoJwd&G2C7BEF=PLO-~eqK56VXG<3d{<91KE z;{E)4f(HVkMeAdBxsUVU5sK^&&g1|B(f}yaf(c))=hFD7T3C>X&IVlzro6dZegiZC z;bteQRe6BDfPxEMAEgALOZYqh06+`_AsMX+US|#!fB)OU3s%q=aP}+5Nh%_a$O()F zC~=ECXoG;)001BY1rg@c=(X%mATAf7_kaLy08R-@TL+b2BBMUy^1uK<7ytwW18YnQ zsR+BmOblTQfDkYRSy6SX%L;NW1b=`83)IvbL<|UKp#T8_uK*7&lo|v81Og!-8)={q zNeihQ#{>)i+=hz&w!f7QOrC@OTC>7SFQgmA&ry;a>^H0US_D z0-7iQEmpuN%M&srzyEr$a>4)rfM5XHM>93|wg4F+zyLrH0Q<*LDfh%0fCD3~pjfTZ z(XwST0i0H>VFcgEU<|L%6QQ&*EDwrr072G30zx$iv{{Q8I2BCc1HcFu0lAboKutH4 ztLaYw03Z$+A+QFtKQHrfVn}8fs(!Et$N&Na_3Mxah(=v}0)YSnmw||d6xo>}IIkI# z{;&fdfC8zHOgzR?`|kh%Kw&{z1SXmyFkm9F^@Rh5fI#J_lQ9A;R3=6J_^L`olB~!@ zDFs&~g}5}xdSXyqPaO7a(tp0r_UbcfKjrg?gikRB6YgYeC&*TIK=2qp#8Ou^m0xC^ z_#Xa%H$y{S00IC2|M=L`|IX?HC@e}D=2`1^`am_qHsg}dG$#X+DguLoyR3F*kH25g z0p3s{u6z_~vIU$vfK@&KPzV7Rkh2enXn8hCn8LD! zixCuQJJS4n0)&ynJ~Iu+{c7*p)u+So00aO4ABBhc!usJ87d00j!*2t`1v7(*;n9jD zT?14Eval=)s;y z9shyAfbtl75+`8i;D7*uzyJs+eSiRgzy}$7`TzlKumHn_9z?i-mJf*lQ)mVP!88zb zCsDzU&}{G{0)iX`6STYOo=g8&QcP5+>=5793@uJF5}@+Q79c@54j5ZJ!&UzQ2=gEY z?ganwg4z_2RzaT( zNB~^_sQ{3q)K`Y&D4HS6h>2ivUj2yT8y2BL8lsO9(x3j|cmj;93JS?B`cPJC@Bjn@ zfI+cad=e|Y5`Il0JMaM6#c6^<6yvlDVoJa;1A(Xl1!#zO-#Ei#LBFd2V($*t>8g<%lICpGT3$rlmp%T2}(_0c)$SZfFFR56VoaN zk1#CoajgQ;fB4FD?6Wv;~P-1^JnErdf z(2icp??ii4|Mji05s);oL0a-+R-d>1{rDO=TF)|*zy9C_2djV}OOlRPS zrs04EvO&<>=wU6m?fw9VU;qFCK>%(h_y(^4crX9}0YLyciM|1=z#EJJ00BV&6+&-- HYVZc**Dd2SwlnVjydKm}eK$d_NAi4k` z_IqCQ(SJZj1p>s3ATl9&6@;_WlaKv||6ZAQ03NWiF@5-{|98#J0n7j8vDv^9E7B@5 zww;y3(8!0Ja}r9p6o2=3JSz!=fy4Xew1oN6^&L-v8Y_kaWox(z;2nem|lLT5lP@`OyT zT-a5;EARpgR+&i)JH`ni!cfbSC)f2w)5nsE|Bq-t&7tBQ{(th`s>fMO{{rCVD z@+4#E&U@dc_9QX622eX#Y$}rG>hN;-YA`ki0B!{UbTR^gAk{)>M>~B($(aAO9^h#a z`HN966mQ-D0D$-v!GX%Jb^R+vGTPUOTFn3o92v5Dg(wS(X#fHM0s+7l76um>9O|i8 zpoact0w;)!PMKL>3yke} z3Km-$bzTQZQVc+)5Fo~{e}+&vDss00(xV+@Hq?v2$S4zQZq9Up&5ZoEQ3L{nMiX%O zk(2O103aY5jCs~N2Jr&|8G!%+0?)$6*K z_4XI~I(vc0KKH9IciwncFXV_sVGy8DH*OW(cRbbruQN+Pn0Dp|h>+)7DOiKGQ`b1) z0@`2qCV%emI~FV%4_k-0|L`Ap01JH3fn&H||KR6^d?sJS2k=86L+h4J7y<$MbP)er zuLPtP6x1n-7eNF=R$+F?AA(Q-5CjuvNd-o>uxZG63&2|d%qP*r_L1y+edNOY&&NtU z5@*ax;t7#|SAsH3mM;Jx!vuEfDyaL_3lX=#Ishs7kP?Of2V{K#fw$dS%^?qn$N*pJ6`s5!QQ)wE zd?|(3C|E<5NZ!>A1G6X4*Tc#Ij;Op$36}LGG(6P`7tj=uSKjxmHl!@+1(q9|TbQgY zZ)E-dz!1g|c0v&a*{7fT0l0Op9JC@#hyMN07`23EWA*96Kfq9KnQ{~j30hh9Sv&vN ztSL4tR5}JX_Pjlec^5w{k!BE1<{9Q6KLFP;2mcWD7*&Oi6!Zr#;KoDzlK&YDA^~pG z9{%8Ee{PmvpZmTbLz4`{*Dz&(+xg*G0yKaC00BV&ZYHP(uK;*30003&06B@O0jt0p Ri~s-uK>!s(YJh6+2IJ4oT^j%Z diff --git a/samples/h264SampleFrames/frame-0667.h264 b/samples/h264SampleFrames/frame-0667.h264 index 96add177c12abb4d64afaa59fb86380d7135948a..b7ab57ec6857021dc770aa3c4bc2cda13235b50a 100644 GIT binary patch literal 1145 zcmV-<1cv(n0003AFaQ7nL7D&>ya`Yy0s&zx(EtLOFyc;Xch+I-jRyWg#J~igN>+M{ z;DSH`Kx#oMkgyQ!arivWKmY&!1eg*5Ag=%|ESr!J?*AeiQ%7N(;F*9yl2>~u0Pr9E zlVaNLs>4Zci}&EeW+XsqwKCCPiCh1o00=-IP|+bf*MtQ6Y5&{+5HXxdq^RSVSih{I zd;ov|Kp8?p`&UlJW$1!xIab>XYc?R0_bun!p(7Zh!_d0C^%p_pnruxH34+WmPqNS z4&4X900;(v0D$lezLgKBrCfx;F;3n9bO2C1577c8LSxzH0JsMjFmiO#V8EzN7e^Bm zz6?P?DPYJI0SYtd0fK;OG;`Z{1K>yQ_agt00s$isP#6@QeN_=$kAMOoa0H6chwf}B zI1B>d0zdz~!T}pF;Pk<^6rr@Yi~wZ-4r>AYUbq5)0t(@axB-Pwsa0^1;P8!Q+1W$) z0Gav>0BJRPL<2zf+c)>T00@8$wh-7jCVi~)nm34shh!J8RFr?=qQ_!O<$wR(z`!fZ z1ds!1Z{%j%W!5+Mhzx-b0>DpHc6Mkdkio0Suoc^ZfZh2zF}NMF#kCPY*17?1kXR^^M4Tq`1OV%lpH}5E@~gI{sr_-TV^#b_k;ZKj(Ip#JLL<8kLm`sUhG9b^rhYK>%(hfCjGscrX9}0YLyciJ$?iz#EJJ00BV& L6+&nLYVZc*=XvE9 literal 906 zcmV;519kiW0003AFaQ7nL7KoCya`Yy0s&zR5Vj@23yiZKZOu!VDOYC+@&E8p8lY_u z^;zmKi5P$aKqXL|kVpY+Hot?!9mmANFebo|2?Yct?7$wyD}N>t|G3OsM+(gdBLvI< zfh$$s;P3!_M3WwgtMoH|+jRf`DmMKjr2p6+q>{AY2-BoMP1Dje0P}$$5DD-O0~aj~ zZ;uSmuor><_g9R(JAlI5b-*#)){qhMF%N+xAqafO(37J0JJie>LV%xq-a!B$08Zd? z+Xy&YoJsT_m%)gj&~SJw1;Igt00!1(gqy!aUjYG51uJ>#I4(m7KJNe#csX_M3?y|U z`z`lsrxb(8f)Avj6}= zd;kO@002TP04SM`E@K*EhOy{8`UX#8LD z^8f{d33oL74E|WF^|}c8uSNhU`CqA@{{LVK&dM-4pe!{0BhMqQvW&L@w?#>bh+Iqr z9bMt(<1!;WzgGl&U{@CE^Z z;c6kcO#&F1sk6+N01ttKEnVyr6+X~liw4JF0ss!_rvd&Dg}(d3)Cd$Qdc0{wY?^iZ zct>#*i59T4vV8~?YvF@d16>KSAf>sOz|Mq5@r8f|N_kBb;8vR1b>bWV0RZEQ3iJT3^HOadCt%% zojig7;L|(+Sqyj|4TjJw50bnA0mYIyNzu2d56YK48Z`J^QZNY>ES5WjYE3GNo$!JH z0R%$AMn{N3IIw;C;4mg=3@{C=tq9SaKneiiz}&v>?jXJnOT8{y_&alF1VGr+HOu^DkBrcjh|EzB{rxOU^2-W}q0YLz6Ca?yt g0C+F}00BV&If<+RtH2wK0003&02M-O0BZ0C<7nf1Q2+n{ diff --git a/samples/h264SampleFrames/frame-0668.h264 b/samples/h264SampleFrames/frame-0668.h264 index 6419068816e15639ff44f8dfab214e3f2d03d341..cfc26da5945d0a99498d883c31c1c38f880f5475 100644 GIT binary patch literal 1332 zcmV-41{2sb=Q^YX|`T}zoN#z?zc|ULe|M(JN0RxQ$aws9h)}J(Q z&;bd)Oz(SIUbq!82yFO~QdE*qVZ|f{iwrssIYMn2Bf}7YYfu6Oh|L`ddQtK(h!Go_ zKkaD-?Y4vI%)qcI7uI|YZikE`JzbBUU=VA7K!*!FbdRza+3%he&*$^`_(;F_Ll7&!#vAQC$%j|Jlr)4Uiw9zDS0GHujN4TW$4Q-0tC0E0k@ zgJ=2LVW{Nv1;ASW-~^Na1OZL}Vk!}62#F4{j}q+Y1Q>z!Xx5MUqU4s?8!#vW3?T%{ z+YsnU#h?2wJ28(kC0G6X#Vz5Nmnh0~(_MSuEmdNXodOZ{>)qdco$l2)17+rHCgCjC;&2#HnveUd&*{?hjP4*}Z!k!b-VIK2zx3=Hl$4YX zcuzl{&*$MMfdJxymM{Pi5g?!n6*51ds8XQkfQ%?XmbA$Zoe3#L=l}?;e}FImaY9u( zlsk2ah3v#QcG>_A3?V{)gtzvHZP7Iy;Abc`o|A3^3SRLcO8^cA0*mQ2%06E3FqcCY zKt7;QStq3u4a6D-z(fgw2xq_n00w`A#GQrdRsnuszeZ4e0Kh2B`QQ-XNkOUdjZQbdq4tV zV?6<_M#{Wc089V^0m%RZs=#Uyg*RXU-|qkn04SRb?qdX6csO0IM3uo>LVy5)Tiq%w z00aua0XxAcF!%rg0Z;=2ZNbt9e=kxkyz=eu006+i*p!!2F5qk~!bvm~{K&&2psoNY z1a+d|iJtxBYP0(N<@uP3M{yg7B@I^x!J)vY0)z_&%F0QK$?gB(!LW!|=fj`R=kxja zLy%NA6%R%J3H(r?1OS4d03!QBp}j9>L3MX<1_OvFB-fhSIsW9BL2zLY0#qvUhIj}{ zc4UA3zyJsUfE*~aLP>PJIA~oIN+8w2_`)cpHAk3|2B5O&L#QzXMH%s!iek9WIcVzPPywva9=n6X9F;ZTB*736$U_tV^H6<= z_kI8bKZG&y@roKF+HW%)U;{UR03a@4F~D+wT+BEhKN?|9}Gy7CWJ(M?RCpHYh@F1|Q#qU;rQx1q7J}{30&=&05VcVZadV q0003&0B$CT2Co2kFaQ7nK>#_4q5-SG8;k$|0YLy2LTG?$@CM_e7Ccq} literal 1165 zcmV;81akWT0003AFaQ7nL7Lziya_A{0f8a~gt#X5=m4(z-2hp_^g3p+gBS~f%0pLk z2yHL#|NrjRC54bfz;vB0W%Lc@02D#b{j{({CLMw69X%Jz9|Pcwbg&A5Z^u9*RVF}% zeLp+{woWo=(Hh5z7Emv}IT~tTal)Rl1Aov8YTYN3jpRN5XYYUi|L`QoM;ZXyC?U_> zcrf3f0s8G$a=B@G;8eyTv!Y6pr7QpVVa8y9(Q${o^OPo$k~|-n2B-rD+NNcCLF8W$ zAVAry*cWxY4chV0U%Hq~_lgKLssjWV_sM;6gob^1TVe+M0KlLue2%z%V{VD3bTo9)H~_0m5|DUPP~{5%8!C_n z8&!*V2mk^A75>`*1pw-ubt3~nwgLpca3}=9gfd`2GsFS_0s=G+`yAp0#gQNW_aguY zHNhx>n*!7pl3kDhrMLhA0KfrD0c@dCh6I#8baExU!YRgI7T`hFc!7d^004k8hX@8% znyv78h^`Hwc$W5J2DpkM#Pp5acQ1ue?|=Xh2myeRj=C;>@H!xB5Ia@eFa>}BKpcuJ z0E6HFAYy|P8UQ5z@CSfU6l=p=G=Kxxp$!D+ z2C#MoC~W$G12#lVZ_$xo0emMHc1)mW#qai8wAgGj(DkM90#QVWvDg6lxxs{yDKGwz zeJdX^NGIZ=i3t&t=iVNUxv~Z&{nrvDZ=S~5wcb4v(deBX`-nyOM&~&#HP+U_VHZ4vpZdP<_cIdbA;K>?=-~n= z0Sh>RVM_$oQ>WAa$%b9yxm@))n10y~GfB=9ys0Jum zn3xb2zqX4(gG@LSjXMbS!Rp_>0RkORFo7XuTOcNF%(hxCXBP fcrX9}0YLyciLL>wz#EJJ00BV&6+&x(YVZc*xAg3z diff --git a/samples/h264SampleFrames/frame-0669.h264 b/samples/h264SampleFrames/frame-0669.h264 index 77095639955ccb6de7a4b6d8ad9b48b3b3c2f670..884c4bee8aaa8a3cb54fe17d7f9deb1874806fa4 100644 GIT binary patch literal 1327 zcmV+~1~(&|w7_ zLF0Pi|L^C7{3>t%rwR_>0>Kyn;01z-)+hn+Lkb~C^?Cr9E5fi3AKek*SoWC{N+db4 z|JKk>Z-DRsKmZU000RX~nxF~5M>&Imq6gN#q5uH_38)8fuPxx~ozrmc%_*Dy04)R^ zNE(yH-7xX$_5hHrAi|zK-l$oJ-($g(1T+9oR*h;F2#nC%e7>;R4i$0098DT>b^D zL;v>(474yTzbTc-Bv7slZX5ytLr4dhVc%S@MA|z4++YAo0e4#GaM&}lHxZBk2nZIW z065;rhAaQLLl9Q&c|O@9ONgxh@HH>>ostTD-z{f{Dczapfk;-q`|qiwY*P<~zTYws zA^2>jFTW6P0?J;Q#%FPrs4^z^ctN^pHGCi&AcU%Wga8eJg~ch12GIzXOdS9=h7lB> zn;=F2u5B(oMC(G%aK8V8Jxq_#Fc>ec_yeIm%o*6(k^*=3b~KeFk_Itfo)z$^{NC34 zTL=XJ0TF-(1`5v=c6-g19Dl)<5Lqmf-U<{_-N*m9gaUwW?Fy*S(k>Ud|Mrjo2n2w@ zuIn-w3RYAGBaQ#K061s>k{_<=(1<|DzAc_V{oo0PcvQEdWy#G%P4|pE00IJivIU}3 z_e2zF`-4Cc;WpaJH04F*9E1)4fucqj@S7+x zumBH$0ti-+aSa;pRw%QstN>YjBnD&`1wcp;8W<}bY5+)1IZC=~QFBp$v`7HJ7Ht4v zo|iS_e}8aGz<$jKe2}b3iC%r6&IcuI7Wo&)lS=ddc7jo1RZZfFEY5%M1SZmB={xhZ zAP9lTSVJY;`a_F--T(lAUx9!I81Nizt?OM6<d503a3s5IaJCmeEHB3Pj3&xFr$3 zylfrf5mSGI{8EyVRR`sO10xYx4rM6GQqmu!Kq4X-2mm|*UntlgmBRvIe+~aNn+Txg z|Ck`)9sNM^&7njCt$zRl3Bc|Mt`of%Ud|6Y^D{8rPWG$$c(ecl28I^gNni;o>7a-I zgYX%_?b00BV& lZYGchuK;*30003&06B@I0jt0pi~s-uK>!s(X#i^Q2IDHiMW+A& literal 1222 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 F2IF^2yp#X{ diff --git a/samples/h264SampleFrames/frame-0671.h264 b/samples/h264SampleFrames/frame-0671.h264 index 7c0fd4a06e9e09efecaf01cbe0deeeea880f6730..7e97869d0275a469824d700f4405274f3657828b 100644 GIT binary patch literal 1867 zcmV-R2ekMA0003AFaQ7nL7IRXya?s|3<3bKI7mPu7Jwj_$U%KizySLA*$auUezs%> zJ-oprhPnbhtO;L03?S&HXvt>I;Ed~O$jzH}&|&5A2@`eJTI5-Sg3%ASOt(>ufMaB--A{K7y&^kE*edc5J!od3H{sv zB#l$As`YB{!_N!n^ZES#e?JHt|M)=&=l~=z;Kwm?p_L>@UKE;LHLb08fWW9BvH+>ZRV>hTp^suAoqFQ38u$qS0RWLy zAmGD0F-d5y%ai@13@DnW?tdEd2|m;S0s(-u%K$WAgiF9KBm&O=ykM2gWd`9w@WMdj zFZ%txn{0f8g&20J99@m=p5O!?jR;kg|Da1HB&@&ic(W9ufM`6qS1j)Yu zOr$7_OPh#ll8g_40t6hB1~93TsJJMBT9h210Kf`&aE%Gi0zwRb2d)E_kq8HgVxQmf zumC^^2)b`dn1yO;K zpy%WO9-+nvZB%($qkYu+fdq9!2&;~<(;9K5Z1yZ;dKLZXe4|bidrU#q<{AC0Re(`P8(x!blKrHX+RJ_2S(5s zbOh_77sF+pHoO336LF$jEp%534C5680YC)+I3$ny(WXWgF}V-_aJ(lu%}6QY_PZP~ z2_OSwVj$E9mA^jV45|R2EQ~RtY`PdM+xvhR0Op4Mf*R8Rqvj6)1U=@VPYXaW2LA{E zpp?9s;dq7PQ9LhRR}TOHKmpD3PY;X-;(!4-05i(~bG&F5d}@=R{AqvyfGnN?fC7OWA?=xGy8-3g2m}IXV&G7x zy#bW~L+W+nKAZ}jIs`sFzyM+kzaoKKGs{UPzgxVSileKQ)p}3W?|TDvJ9`t*Ud4pLhoVFTBB@wl&QJi~{ouey zfEL|AI3yslBxUcTkJqsKTK|G*0aybXD*%4LnkOb!o>cH1Gew0D>7@K~6bUjv-xvhnW!;*H~|+ zZefBInt1ZVsWSAT+x@<_q;Eg~U^(4ktV*so9~$l90E$2$tsOB(G>B(nu)q^2AS;@I zF#dIMh5{$vK;gz6sz+C2`(L~TLL$fPzU8uclQs#qwAa7){_%h?tM&oU>lFi#yg&c% z4#b8o&C>G`edYjl0DJ;8?Um4I+G1}GYcZse$N1dvm%$-DL9lwGND3CiJPI3l00IHv zLZnh06MI5WJ2;fxKKoy~0Bi98!b&rA3%P^`QsST(Cw_5%z%Ud5f&ym^=-^h~7V1o6 z|N8Bi{X2@3-v{%h*ZXl0q!5t9t!;08sT%7<&?(zRwv_z~zW4 zk!$9PKmnnWVX)z>Vz+L-8`a=h$Pe}fM46~@58m`p40MgdKR5of#j#~X6BWE4$_>Js zh5#PP3~T;V*KquQfFalb00BV&ZYH1xuK;*30003&06B@M0jt0pi~s-uK>!s(Y5;2R F2ID1UJ_G;& literal 1556 zcmV+v2J86%0003AFaQ7nL7PAtya?s|3<3bKI7mPu6o3+wmKegNOSAwMt*F@xgwlKK zD#wd?feJt0IskwA%MLyC0DWhojM0+J&fr2i>hQN4ALi`_9>gPETdD5-)t_vghN$cD1_|NsC0@FS@Jupmq^4FZQ1kMO_In2AsW z8Ndeu72XgVMuaMj*f(X8LDk^Qc{qh%|0jiV{IbPG1VX?pg6)0k&QJag_yJ@9q4lfg zGXP4&&k4ie1tes@)q1sm1|E1{KcCO%^ZEEdCx8MQGdr_8vpc(g`~Z6ZG8_UH5O)L& zocz~ltDsE81gIzg4gdrYur!V(iX;G85Eq}thXQ4x!9A{Ok>0Tz+XDbswP_1RaIXv+ z@Bjn=4*=i^`6Hm42gD44@bCf0%pNL?BFxI9I3+b6U;rQ>gaBX{n=f=liRg?$<|iqK zquJ^oY%gvA0RaIxatd6g*cwJlZt@|F-oj3`jOyRt1(dj_0f+cE@hZh%_k;`!RfTA1 zGkVv{a%K@|15rshctaX=r4H;j{sH&`7*5;I^cbZ~ofO2I&;aEQIO5!jNRnNWegF)H z04N$~#t$rPZA;=0#~Uw@FAE$i1p_|JK(?V}0w^36)ZB@Hd@vRO1HMi00ZKZ+GNo7l zjfu3#0D2nMPP?Kz|NT}3g$iJ?e8f_XC+~SM=ahg008lSADpHvj@!(;?P&e7-K{B&y z4w&i~1LI;MIJ$%-%{S)SORK&Fs<6m9l4IWQ2QP-B17KhV;7|ucASf&~K$<^&zM+JK00taGNfQNYY>d1TK0KRHyd4|?k(8Xa`~ZCb zH!Bvr>ZUd!8I>>FQ7lDvaCf41Y=>wY? z`D~&H1qh5L;qfCU;D7)?Ks6ZitaJ?v;zf=KU{8p{qJwrJJYNtl{{#B-fFa(DB`5g; zc-n|Rer71n5)teXCnT4qC;$zDHAv@54F$ozDG{Agcnl!xAPJI7#OzD&2Y?M- z*A@8a01H)T;`V>Yi8Hu{OAn?WH^=`g|EB;87k%f+`}2SENQLCO$d+%gDrx=XrZFG1 z9PqAxKcCO%^YDih5a0l?j6K0cfnn{h%ub#2BQYu*%EI!O(B>lsof2znwoe9NV*{f) z>g}UH5w`#UAR-`;5Lqp0aD|*;4#l8 z#wSB0%>_67A9QYj06`c41O;Mb3lDr436^aO0l}55hE@g`03ryW%~A;rWVnT?7^UzC zIUoWAwS&mA3sP+5lxPpsAc}}kuPo)1VIcoV00ay~Wwg`)Ymr>IrpyLHfgW)CDB4bH z|K;#8g@oa80dbH8jY9f;BJ`m=w$efP0K=HKVh?~QdABVSY2yfm7wL}Wzfh!s5-0!& z0JG={4ZiZ$sR(}Y82}5^;Z&5-8jlGK01p_0#FQ){yCkn=fW`{y^fXR;pawdlaUx}Y zK`;A5MyOD~!ATc#_4v;nKY8;k$|0YLy2LTvzQ G@CM`Bsgle9 diff --git a/samples/h264SampleFrames/frame-0672.h264 b/samples/h264SampleFrames/frame-0672.h264 index f6a0ea9057252dc046c46dc5792ccec875c6eb24..913a2f9004c6bd1328311bf75c0d33b4cf2a295d 100644 GIT binary patch literal 962 zcmV;z13mlz0003AFaQ7nL7Jc%ya>=R5F!+SGCx+o`#_QC5BLAT2QAi3bE+Ip0Cfop zQW&T_23E4n!bd^-|1H1B=@GPseg!;7bO&W2qA|tcXLAg}m^2CA=RTkHNHd|J6GLSo zjJm*1%e!1}i2mT&wPLx6Y~1Z=m7dW`FC1yb^H%_sZ8LH8;11^XI)uHlZiZ5sIk zHa?}r>mli)VOSGO?5Ii|7%(Xclo*M%F9ehs9sq2yfrY;f8dA>x`Sq_Ro*ZGlIo{jw z16}Q>JZ}P8WhRU&FS`Eu;a<)tDQQfvfC7DH0~m3unE*p|71Hnp6u9l_(A588K_U?H zd;S3-=!0ATHgN(S>mT(+^tV#9r-ghn@InrAekRP*0O3vm2mk^AU<@e_r)J0dCJitV zN-x=f03Z|r&kU9TBoGV@=)(nVS3E|aHb^i4VS26gxc~?N1Of^tgED}K#;g=gouB{+ z0uFfeX0TFhWkS4*@7^#N00;&YMyO~zhB?4^1Oh$0UzyG#8ne~mhC`J)|J2kOCVYhs zy3=rWxC%PKr9t3>@2)US#<+PG3sR7II0@U-+<)|jFxmk4PySd-9~cl947w&10l|v_ zP~T{TOADtOsu4c_?M4d`W&j<8uJMz;5kKw%-Idvg*l*?zG0UnZNdM1h0}m19RqG5@ z-r&LW!mz&}=+!!TfYKav8IHkBp(0)7?Da=Gi58YKY#$hK7tWWRBMW~ zK)_93f}k1zxm_$EY}5yEgOC6S27my7@D9Hf52dwiguy{oLjXJgI35S)fdZi>USJD= zaf3(aO(qPA#PMuzGEBtZDEB!3AQ`{`!KvmL*orj8Tz%k%AX7@suF~u0f(rG;YuW0Spc?g8;k2OAZ;2^|R6f z`u4xzngA4l6xsm5BpFc$!!?{7;2;1XjsOA-XutpvRRDdLycB8%00IPH03bWrYyf;U zbNqld6p$V^YC`q^PNr25grLXJA$2u=R5F!$Q8+TW)_rMD8bz}ejJOFb2ZHW57jgEX*c!gY$j;{>w8Ikk2>@G~Lj0`N$%!BHy90*cikQ1j3_!v9doXkR~JA z8R~;T6Tu?nG&oht|3BsTs-gTkTh2v||Ck%QzJMRH)52b(8ruhgsg|NDkB=_{L+=WC zm^y4Pf3}!q{I<6|1nfUl^B=sLiG<)yQ6OL#Fewjg2S!rYP{#o2;eY@@AOR|s6;!K# z{ryjR=d^rrLr!AHzaaVM@H6l419_4rj3H9y{l0itvx*5~Ouc{zwL=;;Vx-85=C`HUjTsO4=9#8jx0K@=UFoY=bVm1-vE75Zh z1HlO91quxrk>L2LoCxb7TXb`X01yl=QFITGy)~>7iR!<22q!sQ3#mX60OI0$IMRIZ z0h|B?0jV6|v6u)Ul*2Y?fB-?f00b!j079Gq2sfKCa~MgC9_P?^$HN4P9>M*$gEY&K zpl?1}IUN6hbEq3y!@-Z&+cSqWWYE!{3sR7IzH4p*!T^_5z&;TEurYc*Ob{0g?+va2 z!Hs})4Ya`}ov6m88lV5Q7%WBr2MJx-D#4Qf^MJQydNHdF{iw|CGAy0-?*K5f5v5h? zj8*U8!_NxCCH)P-41quZcrXE-bnqVtg(_zZFE9pB0mFKlbuw%Tqm4U10|-&)nm~t# zNs;H#J1JlQAOU~@!I2jve`!+qz%CFEVIWo@CNsb=3&;#H~%;j+g zV3?uyg9KPMI{+X6?1~@_;pn%&cv^u1g|AnP=#7$2uWtzMGLd4|7!Bp0003&0B$DO2Co2kFaQ7nK>#_4wgIca8;k$|0YLy2LT!L*@CM^X CWSn6D diff --git a/samples/h264SampleFrames/frame-0673.h264 b/samples/h264SampleFrames/frame-0673.h264 index 1cf5c9ab085fff995005aa1b80f0d689ea695451..2dcd015f9859b013dfff254676582508ba50dac3 100644 GIT binary patch literal 1283 zcmV+e1^oH|0003AFaQ7nL7KoCya=!}2^0|E0FjvqxzETaEj{x?+H4I83EBn4fC7ie z?5ty#Fk)C@Yq^|KoJ)QBUt$R_9SInpAdC8x+Ba^b&o%;$L0weezZvFK0kByY13(R+ z0<0a~TnF~0B~?fNw+0^*9zg&A$QpnLPt>{KI5+#FDcVgn<@veYZG&5+jIIFyBxD?i zM%ok0nJ`87JFz41%iWM{URpC5B_&Jy_y7O@|Nns%6kr$_q0A-^C=m5?>37S)+VEm6 zd-An@bJxGXrqa>rr8rWeLyb3?1e*v@{+^x{`F{=6AP_Lf0DLifV5S}|M;Cegg8@PD zA2#wFfhh)l`~SHF&Hw=mKmedUC4k%j2unZ#Ky04-NF`WMzhhf9-Qxh<@wxo|e?Onk z=iws%;Sdo5f}8*xIAj1oNN4zb9VR`qvTy(YGx z-Z%lk7?geo&b`AGmiL$xGuo@lIh%3R-a@oQ|A1gBjBJ1%Skk7R23;E1NaF47H!)Y( z5&!}Lqp)D11G}?TXzu9&{s2tmD9uSv;NmEBRKPz6KXAeKJ44fpim4+GIGdt|4-`!{3b_W$kw)+DOG^Y{G$ z;$cwd^ZES#e?Onk!cP*#1uS3yAR0vXHFY9Eem(~UZGqhP#!Btuz zGJnCCDJL~Ym3O2VZ~xi=0Du?*inPqNE0TUF9_?=$m+?~druaXG4Ys_R^Z(!P&X-^2 zN`qa!%l`VGTT(L*!2o6;9Cn1yP=}QTdNuS1DZ&ME(bil?tbitPU@O{zkY{?l%OQb2 zcoAC&#P9_}D?<8zvgy6a-FN^30^$l#V*~~w9GLdu7Kb2V;{X_T`+#viVxTn{Ah-Xl zBq`snJ25YV{}=!|z#o9^5yJch1kx0M009L!bEQB2{3ZYb0YGqBuxFwo?@d&$(+vp+ t07I|<00BV&ZYHn>uK;*30003&06B@Q0jt0pi~s-uK>!s(YXEBS2IIQ{G4B8X literal 1099 zcmV-R1ho4A0003AFaQ7nL7RXYya=!}2^0|E0FjvligT$1LRa519!W4XB!18`C;$%* zky%iOE?~s8#MdbtQYFN#>3xVMTy#ASv=@H0H#@FE1z(9=Sa5Ti_w(jVfDuQ|P640- zq!=w+2k^C5C%?eM;$z5I02u;M0GRzn$>2B>|JUftPs{3^G|>O>-^WOdP1x`T0Bna2 zINhi(%Jz&WU;B1Z?Jd|7f1g%ec`qV=`}_a@|NsBMii$7{3{dIl3H4AgpGm*}Lc8!f zGH=~ibMu?M{vgdYn^=i%o*4!sVL@MvEz9_xBp_ih0dU3ZDTj+u#m`rmAOr`-CT-*p zfiOTb@(w{UU;s&;u9*Pg}Cvpv)&13jnC)v`TYKWKM6cY7lj2J z01yx`OlEaxlq47HqFX#`fEYL$HtwF*+kz?D3K_ou3b}>IEGejR-GB|Mum~=y6}$uh z0swaU>;NDHQsz0s>)JH{k6< zziV&xKn_j-06-uBq=9PsWC|Q8DA2s#^AnuMVcZm5eRz|+004jzhZqQ_Emy#@@e~q3 zoi*&t0YxM62lI*9^eT@c-+%xh3<5|rLv9J2whA3G8@N&7fKUJg09^!tAlLv12mN_W zz$E_g2Y{e)PLT;ZXuvJFC6Z5}_yOQm=z_yYV?r+7fr5sh0npdbez|x6Rss(I5MWXkV%1VC7&sQj@H2pd!T;-BiJF2_{K8wF8NdY^CdHYJ zQW6pswhNtsmmo$MmW>Hf^%48iCGgC=3M@cDZBzQl0ph_d9}kO$KplD;hgCRgda_>; zz(MFn1ls@ooOA&PE>PigL!ewh4Fl37du)~ezb=0_x3gaSl&j~DoZ!P{{Q(CS3PnHx zG7^`@O?vJ41mK{qch5w$`X^VfaR|Q{T*4BwT|(F_BIl5w^?$jsE-M@&@efx7Vt^2{ zh!zyMNo_iPKm2@`gTVucY0+T~>C>@2uiPu6OW>49d?pNm7=XynfG_|M2Xz3&3o{b} z0@wD@Xfa`ffnBFz9<$W<-S7wy>Vbp_3o6+GGjAh+>UbGMnE1CL6}$p=l!s(ZUAcV2IJGt$=Uz_ diff --git a/samples/h264SampleFrames/frame-0674.h264 b/samples/h264SampleFrames/frame-0674.h264 index 58f43041be656661fe47ca53b0876b88c2a9794c..9906504e57c2ada98a06208da8e9d1135c4aeedf 100644 GIT binary patch literal 1704 zcmV;Z23Pq20003AFaQ7nL7LziyaXRA^QS&XW9TVg%6P*Z^iW z-x6*jL5V;R09!i_REwp)Fahkq0#g9r?$MbyM1_n(ZVmD{PKdxj)k?P3MB2^F8CQds z%5yY@7=L$IehLqwLr?nbI;4de2S3koaIqIzG(Htddq9|8*&-wc1|Sn!!SLk;`R7}o zZ%aie0@?I{;IX1zZtnutx@JURX7BI`(UW2>L!nte|NsC0{scn)V6Gs7y0$L9Bv*TA z9Csoh8FA7yL#-GPs#+$XGxnNta)TQwT3Yt^)MPQOrtpWp=fp3A6d#Nup0q(A4YnI=IE(}p+;C)>*cfB!+x3g`3r{QiGG zpU=Vz5G=!>0EOJsu!%}MmRIyJLw^$hENZEv`Rmg9h_bdY*Z}dv7Ta{M{{H~#>uYKK z-%KzN_g&HZ@G8mANPYRh!9?DEzW;qoH;?xKKm$Gn=8N7A9;-rs`;Y*`nKfk))9j{A z9tc;Y4!Y35im9cXT0%~4002M*!I#-J6;p8^_-^zdFokPtTq`0JM1*(#m%`ALCM-4t zAddhBA7coz$<_$+Y5Txv)i4Wfj%ev5kAPz!5lTUbCQ=j{VQ6|7$cspl0;r_yk-6po z0D<@b2t5D*g{S}s1txfa0|4{x9Yw|j0}CsFAx!`#@f^WXJbR2RhNFN5>i_~42+Svj zMtko|;-aQyjO*d6sdyLzfI}^3B=>i}`XE}6pa38it-K3a@B7*yZWtC{)Vib)C|5&v z2tEM-A*2J$FzOdCu{Mss_ZR>d0K2PmkUk9Toy2GW1Oy)F0CByM4Ojngj0g<0eh*}! zCB#*K_!%%U2|35Yz;%+NVEku-@y}v8yS?$?h3IdMK%@&j^!Ei&UBt)~ML>q%f}mPa zXVuBu9|V!Aqa0EBe54SJ=ywBe0NTho!+f=YW|K~L2*%Wy0ofVk5kqruL8$SmDZ zcIM%f1!_<_-GL~8brCRZkgFE!{;Om58dlG?_34iOBc6Qze?Onk=kxjaK|?TVC?Nnv zU^VPWO*y$e9{ds9c6O6MvjntWJKkoQW-jL#@0ZYg;cy@fIFO+*0097+jzAeSI_CB8 z2tNtK5GIkvVJy`GE@_Fz<7c47vF)}8fo}k{fsuV3S3>~M22jjHMtZq)LH}F=0=mE$ zo2I_0a5xYpn}7fCB@`S$4u~j3{l9yk2?@(z>+5&{hz~@fA%y&(5dL`dTFd4V^H{C$ zTvOHH_$j~xl@Ct8Nh-Wd$h)CJQVf3{12z?OPVWFPln4`H2QsHRAy@&rzy#6uUnnmG zAt3-z4TJHXWEY8Wlh2qH$#btmc`L|?o$?GlYrs3r9}T7NG*abCQ%%{|Mpc#=MF4`5@h)ZU;-5@ zYSPo53;;!TotDY?(iwbEBSCOb3PS<#r+a~b9SK;Z6;d4KH^ z05AocKo}>cO!nX3-V*R1rnDXMLa`_(b->OAC2AJw7RMAz3-A4*ap74_;)^WAKl{QR zqzF^w-|EJge2Ux<1W>{We9%xxi?zPBzuo`I9d7Pe6(^&3oRmzV$u1@eG!M#(lG9?gr$ z%8$c#00IFZ4t?gFFGL|ST)p}H0O>)BrgBd;C$J;;h6dXai|W&ZDYEH)1R9a-wgyQZ zp@zTz-Fm2+Xa1RBt%0s@@A0|=UA0B``*&;pUonCqoDoOx4Tufndx}zz6@LMNb2ow7 zk$BV-hc*5T03p?x=vjX70hBs;zM~*gZ$W$b1|X4rpq?j;A^y99@}q!9)fD%tJz*K~ z!ZG=ctM3?oC<1^O+@)lK3H%}O<{~li|9$`fKvju=15GrT2GU6q|J`}EH|{U3Yj~Ie zFuVW+z=gzwW>**dqf`$71jxomLzp1G<3yVi()aQ*5m`)hD4w-09f%5U7yx@D7;W@0 ymfSx9_yQe(0003&0B$C@2Co2kFaQ7nK>#_4t^upS8;k$|0YLy2LTi9(@CM`cl>1u% literal 1606 zcmV-M2D$kF0003AFaQ7nL7Si&yah4Rgf0 z@3*C*lmY(f0gGBC)AvsWPf67oMOUAIJ~DWVnCR@E|NsC0{{kU@Fi#LcURxCY%d)oQ z!N1&HIM1jio7SH zWPMBciwck`Fkk>6U0LFY#NW@`IAd6%uc;NnEVu7OR~;NmdC6XwMgk32*TU+mm1+O} zTHS{bcs%OEz3>w-;tsl7VGdsXp$m^=m3JcrC0XCFX5qlGT=y~my>cKlL^2j&WT`Zq z3XJypL1ahY%EY{f+6aJq_&>I_8y|h302_mQPY$HYBQirBvED<4N0z_;?ZK2X-jc!r z=8A86?4_WC+$e@Us5vrE{rmtyj!gXAKb+_J()@Uck>I4GAjG4Q%}2k0A^;q8;Q~tF zYb6pZ|KQKS0f<3xHnw+-B5`t=01Fs^*r(_PoE)B$3>J6&<^m--#yG6MX^j3P1>LzV z0dQfXbXrB_9QOd>00GpskO1Ji>KxTqqjD5UZ-Mw?tdmev1?_YkDW<$ReA7k-Vn%Fa z&4Axm<=^Zb&4O^GY6yDg0fp@Z#H}`+)(U2$X*9ukalwMFw?Ik(2^q7~DEe3X;8&Ak zzgT|%egF*S6Uk!j=@j$+???ay0)RzSu7P*0Z|^oWp={8^d4z%vmWNPAI zqA*Y(cLzYV7JW!m=s=`usK*pPFO-52oesPWyaP)h<_+@J1-z+)aEgB9z<>(K&nOW@ z?E%vjZ!0n|jnqGwpQU-e4I=`STe?eG5Z^Ut5p=kxje{(nCR zJQ2(g-~*^RMARjy_w`HQ*d$T{K!8M0P=F`^-v|pJc)=NfI?xk~B47RBKm=-o#Fu9@ zuoULxz>w|bv@nhB6l8E$@~;wejKEZIZUUNKcWwlh-@E_;0Af%85CH%r8c!Ep6cr0i z!Vg{qbP`BUJ_SV@NB>{|0s_VXLPca=LIWJ3b#Sm?0q_720|w9(iH%*7;BedxiX!e1 z`M6%sB9kZoX#-FwNL5XKmC_gSp8lN=3N5#<01YXDq)wv+V}5@g2z)g)Dq_kdyc))c z0q0-xiUjHggV|2iTPx{ZuZ#sBdvzJbVP1}Hu=;GKX3+wBWg1?WpigZKjrp>2Pq ztf?i?9aR8wiogK?06+u*iVeQvC-b6J4xH@=fdnXX%OF@ogwMWU$uMES0mCzh=^j?? z1-gFqm+p8NOw^C9|I%es|J*SE!8MXgazI9t!m^IwYG)Jx1OkvqM`^&^Gj|dFFM{y^ zLkt2ypm^gxW h4RB78W4|Ovh5!Np;lzoxElW-0?n&OS?+l;{0?+@VBy5CR^4&5L zJ%9j!Kv0UkL3*%SiHXrnd;kIfFgwjGblpbxZ`Q`2n+IAEXrYY3qy@!l714|&Ru8~H zV*~^BC1MrC%lyb8Q~h8xjYNE?0%SRT;{Y(QA7BQF=Ce&fDoT-hfF?A8rN{l<*Lqf8c>j=c<12zybp_ zNE~o~+7#?UJ1c}>1l<4t0YLz6Cg=vQ0C+F}00BV&If=RftH2wK0003&02M-RfNJmt E<1H7}vH$=8 diff --git a/samples/h264SampleFrames/frame-0675.h264 b/samples/h264SampleFrames/frame-0675.h264 index dc60800d71b22d37d443bc5f605bb73564d59465..40777efb8248ebf2c62568e5c9695633f3e77d4e 100644 GIT binary patch literal 1281 zcmV+c1^)T~0003AFaQ7nL7M;?ya&>30LE#VM!NtZ(OKh$ZJczs zGV&tXteg;vHRt!g%jJsrizW<&E94uH9ftrBKucdBLf{+mj3u1#ZDP-8z#kx)QlhG( z|CNXkCxAK145Uu{Pl^tJ@pA{`;3b#;{6I%p8H>eFC;Z&kI&%aDXOd_URqYnu8vFnM z|NsC00wI36@i0!#{;)5=4}x#?=%dW!up=qyo_Hyyn$!97!nu4%M4H5fKY_C1nMYxG zh=qEo8w}pi0%Xm^Q)dM4GMdh>%M`+YPYUPr`TYKWKcCO%=ivaBA3>U;Qd@Zwfv^UkzPYzrOAU*X(HBMA5j7g^cu(nVLm5C9Mp08oB|ULZaQ zFX1DXW(*+E01p@d2nj@900IJ_@Zg#Pn)+7oFlP&Nu!_|fBTVSO^^*7@hUZ|V4B!YN z9S4#vljj@oF4{6ea) zcryJ!t435106K9E`HX-WQv!z)Iz0Hm;Hf??o#Ox)(STE+QtMz(U4r-?01OH-6U(SK zYx7WeEtf*&LjFaNSc4V^21Ad4jS<-oDLawq9$Hj*P${nS1_GKpr`g za?t*mHF+nY33z9G;xcId*w48azz9t5jyL_VDcWbKPHy@Z05||O0aSsYC;_l4W&CZ= z=_nF6<@@93Vft*KmC3od1Q~=B=3S+zX=L>Mg&CRb2Rwd%KcCO%^ZES#ei7sfRh4&! z24MXAdr{zwOOpTw_y^bU6ciFmAEty}zx=>JPn`&1cxa#jYPJJ_;cn5VGZ=C(42{h_ zKx^_a0icD|gO)G=fpm@4CHH_Jvl{)qo%q@>kXHN3n*Z}iisp%SO>5GYw17=0s)6IsTwT@hEFj70D&L?2oPd+ z015{Oya~o&Dj+ArhQ5G+0)d1RiWJ~g4EMxL9{>ggHVGwmQUx9?Afx}m`H=tvJD_00 zBOl+Rl^jE7s8ENfqt6hB|AXKF1OtG>*58DR??j)IXpVT|y8kjzSRIxZeS8l9QB{FK zStZ9x3e7?I0Bqv4!66E9+6A#AWnc_m05X>3!b;^KzR(Ro7%N0WzWK%)84i7T!Z75u z2MFRMQDN`+0-%cUyq!jfo39(^gJ1w-If8>{e<72QOkN1SzyQLnZvqO|AHekKmDnaw z1-tkbgqpq&{9pidzz%>T#dONSqwESU_I@>WE%1L8KmPon0GdMp7-7L_l{#1(QXBye rzyJUNK>%(hzy_}XcrX9}0YLyciLe2yz#EJJ00BV&6+&zPYVZc*T*)vF literal 1032 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 A?EnA( literal 1740 zcmV;-1~d5p0003AFaQ7nL7U(jya;9d4Z#pR2k?kehX9Pw`y!$O+5Pwe(;8(x16a$i z?|?i8)YEql(SM*cPYnIP|KGo0?L@~=;S5%rMo0dGfGPrLsg?lcw(LW5pLk`^$b~;Z z{eGbd)LDETfD09sDd)SN{_FxoOa0l|5O)3E4gn1-)RZ zuigpiL>rnDJpaCUUq7GE=kxje{(nE8jc^zM;0BO@qyRqwC2)6~I*Yoo=m>BC`YHfn zr;p5#+Ta8b19M6NK>vtuR?NPlA3O|K^MU}oZlp*sE}K;dz6LmdgHZ^cW?)f-EaxW; z9$*o|m|zE059lgTfR2fLVc3)gV*$u#!#!mH8~_)+TZDnV87i~DfCo-g0F$+EzUBHh2~x4h)%9gn(p{v zfEZy?V5xe{5xkUn@b1WOY*NB|Hi315Ld0(Y9r5B>lo!njieI$T83QxKECz2%L- zHB^8Y9w}4NuzaJy)ExdqlrJOFI{WSq#xYh;>13s)weM(a1?C?B26`gKy%`toPzNla zBnH9gz4ztuH$k(7#smNY$;v`SeDutJz$j2L^A}9ke!!>zXcdSU!c|T4d(tdf%(%2f z{RI0*;iEol;3OXva0Eg3y)|^Y`xb0s{gB zCbotMlXuAvuS4}10Ua=*m)Y!;?%NuT6?{YiF_fnOU?LerN7=?wXe9~)wL4hsBHqq_ z|7!{infG!j|FBUF8sU&q4|m_d1rXk3G!?A=;c&Wz6bMYdbO;YiIxj0l+X1)pQNIE-8EfAOIi`0>VMWLWd5g+{!Gu&Xez5LN#rj6Z!r%e-T|Go5hu2U>v&X_y?=@B&l*Q+OR zb-(T61;RUV0i5z-U<82ZW&H+7kV+^Pk_s|q{JwFF!pV-n1EQAW$Ta-T@BnyiZ;d@X zBYx5YZ}Kfc{GVJECte-4Wubou`Qd#2e?Onk=kxje{(dyy|7b9vLx2Jx$|IPQO-qG& zRejLF3;^*xsgmZPv7sa)nIHWCV89qKQA@>8Aq`l_tV#&f7zd#sW;mV=fN)X}&xf|l zdr9KQ#$W&-3;=JAECXI7odVj|p}0Qas3MO%q^WiWa8P8}1RXZfIcTl^c-q=#A43n< zS`bKOd`SzRm5o(LZWw11Oi(cDt~&p_{2F=|LcsCl@VIGj#{B^7$-{4-CzAXai3Xy= z;sT*Va0|n7fbacy7u84YW6r;j0QnRV;#``Kv)~Nihq@`N2zk$vmBIWQ4gvg?>@iHp zFLMjfN&v=tSE{l_`{0=9l68GO5}Y2m@lUp zWR+|*wSo+mp;%f=6n}l=RaEx>070vi7H97~nIxC#wTVnB8jW6;z{V64g~SEMKpbi> z|D^O3Htei`KY%c$C6&d%C|P!@k!9l(6y?Sfmfhue2}1w{RBZzSE;y}k&U{S(68%S4 zrk%avVgL^qgG(Gp!lxe>mI8ybCi!AUkQl0q?>>@r;;Z0{~6X0003&0B$Du i2Co2kFaQ7nK>#_4z5%Pi8;k$|0YLy2LT`X-@CM^AR1};5 diff --git a/samples/h264SampleFrames/frame-0677.h264 b/samples/h264SampleFrames/frame-0677.h264 index b37ceb73bfdc49088273241025b70ed0a263363d..fc5d148c9021ea00e921b5dbfd7905b134b384e4 100644 GIT binary patch literal 2914 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 HYVZc*6{+G= diff --git a/samples/h264SampleFrames/frame-0678.h264 b/samples/h264SampleFrames/frame-0678.h264 index cbaff93f60d83ee357c489d2c028ac832ef19bd2..5fcb20a4bd7f33a381002fca27ce0238f50f277f 100644 GIT binary patch literal 1403 zcmV->1%&zl0003AFaQ7nL7G4sya+Hf1WYr43nkrXjUc>7|CNXmA}msXb%l#a6#wav zME=8K5Hu8kCXaYGBxAXMZQa~V=|NBsQ(*^(n08mAM zY4)BMkL3#wH&6=$+v-~QBe$49NlD4w{r7jv9&Vr(2fN3BfE8l^h1K@^AD{z)l)wWF zWHWxt=XGJ>m;hJ?MGn%2QCHOc<}d(vhQcCf?Ley=85LNMSO5qPfC6UtHN(e)3|O+y ztTNio%hwQHeA|wu@)e>d|A4{JLgWEejH*$f>mxf64C~h)Auq5b00aU>P=kXFY{fOA zyDm@g0>dMSzjJX7QqkIg06;JnnP3Ks?1^{<#GqT>_aNa$9jZqcYrAK^;@)Sm^HC@84~pa?&9Hu*848 z;F3JuKr9b5f@|-`t^&v$gQM^+J7(RjI&b|j`}6O1l*Mi&nVG)+{SD^7OA{x5{ouQ& z5-}D0z*gZblth+Kybw!T`9vgx&vw>ALt@0}UIoia(xLxO_;5XC1QnX34=0VCaH_DJt_Pu}kfPubrA!R@g;4$G(#e-xF;7Is6RJ2V&HQ)b(@DKsfum&9gI_QP) z*=J3l@>H>Q5k+L6wvGZv>)X_18e@#`lA_Ec?*%gt-~s~$^qe-=V(GKO zY}1F}11Ot~64`5_xJYXlrNZ!>=QSXvi`rlm08j&mk?-6z$il{UA^-0IPyp%(yb@Ch zlTS{KV}=1F0BmeT8i4Y*=iVp)6MzFeum(HEfp^AfJm3ZZDWSh$mbAbq`E$Sn-uHNg z;?X=Wo>xJKzyJsUh!VGX;{$oDSd>fi|J(ouAiMG@7qdLI5Nq|mWXN$99ImUMgZi0lXlR(FD0Dkj@Q0nq-bC8M0$Ay1k^hIbT za@s=Tt^fnfz}g~xU`zoCfH+(;HG>Kl-!J5%!vt&7JOaQ1j}e9qP+u|Ru9lUD;V7UH zsnWt{BwyCaK_9FJ1T(Z*Q^8eQAvAx%m~u{fk1Fp-FyH^Q0096n1r>>#a#bMgP(9cO z!wI&sYv23-enh(eG6I8Lz29H^KDMN6KLi1ofN{DLJwhH-73kN{9H$5s%STyh9<~6P z!GMoy20@+b^DPDh+29nm8HwNuhE|32|7FvAle+K#1O>zxpvDLcM0qjo!YvL!zs3MC z?Mr}hK5C#f86dC!tRyJEdtaT`!T*c^9bgZ@c8TGB0)mMO7V|Lw6)j6|gYqRm{`?~V z0RVs~B*-)25qG9)S8am_fFalb00BV&ZYGchuK;*30003&06B@I0jt0pi~s-uK>!s( JX#i^Q2IED@ds_ei literal 1208 zcmV;p1V{S-0003AFaQ7nL7E^Mya+Hf1WYS{1;TmXh}j_CSM@J}J{^HrNEd{Q6#!wl z!6C=apk3#y6C2J9s0%<1;qL**g;`3x{()E?1meomSHIS{4)t@~@AZICy3Nj=S{Du3 zXg>e{|NsC0|NrnHm+*i@RKc)`02_33J@eb~>CC|t+eJikv0=kxje{(nE8&*$^`{QM;GAYL96GE3k9 zfPsg`Cs>(6L4Gw;aAO*vW1XGr&=vjD%2_Q_G z;er675%_@(B6fXBqsY4800aR5Kxl^C6FF=YI%GF+qr6}g0096OQ{({#zyLru>&j*U zCxAQ!1B!HrQPV~NZQ(SQe*^;X2ZOIf78*wy5q9hhRImUTaluY3hb!z4YntbX00;n3 zy0;&JOB#N`hyYds4}cT|1$xU;szqYQgBbW3z+qte8rEWFprk`gi)+Ia8u*&_rZ!AW zNLJV|bOq2k2S?y>`w*lfy}JWMtvc!?mQa^{WF#^yO{HUDg~UmbAu6B!nPI%f9@PEBa4HKD#CCSn8Y9+- zls8*T_8@9TI7C1L1ImB?{h{rsb0pvxJo^SvHSlu?HU4_y@>)xOx>4X}cw71_pZj{s z>Gp(&eFIywNP(%n1|E1<=kxje{(nE8&*$^`{QM+e&=7H8q)<=*8wpEc6LnpefRq#! z&iUw=pTy|>?jaR%g{*Q`d#EeShCN~z{a@ypk)g51ULcfkMkoOdIDw%{gw|81)Bn%E zasB^zAaM;kEFrl-3r5{VCl!H^>m85!^l00aVEKq*4Z#L$4X{j^vN8erg3 zEJYB$;J!ESfIx;+3?N8hR>%pOaU2IxaAiEw3@88I12_{86!BA08wjSjE}-xL0syB0 z1TKnTx%S2PgHWsk&;7t4;5knV5RjfLsCGml#oi2KjRd2ikC8VWL;`10M`vN(O6f3Lg|+Y$DlcurWa1dOKvYzT#_4 Wq5-SG8;k$|0YLy2LTG?$@CM^Qfeq6D diff --git a/samples/h264SampleFrames/frame-0679.h264 b/samples/h264SampleFrames/frame-0679.h264 index 2d2c225f052d6fce44602d94069869708ed5dfda..e734497833f25d7ee10711d82c04f74f1623f5bf 100644 GIT binary patch literal 1345 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 WqyekI8;k$|0YLy2LTLbM@CM^#^#v9H diff --git a/samples/h264SampleFrames/frame-0680.h264 b/samples/h264SampleFrames/frame-0680.h264 index 1898caccbec97e0a98572f247a01c7c10ab0a395..23b242a01e26cee467e4d8a57b2be5a3753799e8 100644 GIT binary patch literal 1447 zcmV;Y1z7q30003AFaQ7nL7IRXya*zEPXcNK@F@epBNP(g21n$!-QOK4f+Lfj_>aE8 zDAbGt3>xNqQc696&=HQn0KZPPJ^z1#JX;B2s;_~=T~NEwEMpVjf{+0rXd4EX;BNz^ z3IjAY*NzxkZ6As`|3{=m36RFjW+4a|e9U|cST)HPG5R3qn%*D(o;5rcW~mcNssp&$ z7cvO%>t6?v?{f6QJ-2}%qD=|=bm2bWH)*P9ji>+a_6Qw_#O22W@C5}$ z{z)Q5MVuR(`tWcd0;CnC1_uxTa!@yJ1Oz@onwy|eFt5b~Bd!4J9EQ~)Z2&D`3LwiD z28adSS$p6laQ{dP;zFnQt(iaR;U5Td1gxWD;Q0B%@sKF-(D=sz41vuDSP{R0<`2Z& zq&oxE#;6Ab4Vjsjv$o!amkHy*@whyQ5cmz${~wNr!~s+va*r_+hOvq004lk05PBjc(ua! zcsbtMOekwOSO5YB)iD4CI}v^U13-b&(KzHIsA8{o03cv;9%tVAu*8T}o&W$qC}#S) z|I&hmzi<133J)oH36@9AxMnJOc?pDa5OK&LXO>&Rhw~u7q<$I-FecvROq8$<;U`E> z{o)`3eOL!m$4#{pw84?o5H!)_J~Awscy<`@B!g?fso{7fAW^_QfCF1f05}c;&t+ad zW<9{~W=z5W0RrFv5H`f{01X1?1_8si?4SH)G0^zO0b%4Cp`%>jb}|Pl#MYe)%TNUc zhL~6t7x5u~A$A~uE%phXk-!87Ak6{fa|q~Ap4TlegaQy^GRhDTW^VnyHZg{E4he!} z$8mvVrtN$)KknayV##ZPMeQ;0DLgq;ALcK={B~hb06K$bsIynM)CFsMJeBwT(C{5* z{{g?MQA%2?fA#*roB9KOJnFpvj^A&<|M~y(!u}EBf}CQ!Zd$-$GGYGS7Z=2o zd;k|;reU_fu2CV2QS@w45K{ODjMM-S#Sg&lHkaM=4IbS2hnSEKzruqIjDLQPRB;W9 zP@xY|N1iD!{|CST2nPX&sox0|-jP2h(H-{yLKrDYu%eKy>i^H*J%{$c%#;=fWrg2g z1HcqzU{F>`Z_9LY#JiY)M&I0~de{rMWPYxk+!d15gAC(Gc&yafXIN ze_k+*IW0lLIr1p5_k00RMR;CLqeM;Djq|~f02t0-pxNKZWaJYV0za?-Fsoa@g0+Y6 zJvwD}36ueD{so~XuY>;>039#`pa}6@GO%d-0*k$$ja^H8AH`4qf*ue6CWHVm!-CT) zaJcdP1jIbl0S>?b00BV&ZYH1xuK;*30003&06B@M0jt0pi~s-uK>!s(Y5;2R2IEho Ba>xJx literal 1052 zcmV+%1mpVv0003AFaQ7nL7HG1ya*zEPXcLw1Mn%p@Cd~OxB)KtO`t*oW2Zkpi+~4> zNiYl~y*~Th5sttE=l4!ef8XG5!b~NFs=kLC>V^J+V;JAO4j^QD2BCl8at9nJ z4AAfC$|91Viay)9-ia8^jAS90gkZzwV<1{*Sli|=L>%*92mj~VkDCycqG>fiJZ#IE zD2@E@g33JhFKqwYf7EyOKLDal3FjwD6YMsfMu_r%{_TJ8H}v5|V_%)B4FC1h!f-%e z!T@%}f!I(=z@Px&0fz@2(~+9^6hhHGfBnz^2mpWvHMM}4b9|c8RL~W>`~WNi1PC%u z9Xvp)Uvt>e#5YAJEfcb;YF}U?1%bdJ3H< zu!LSRp_TOnNwC3%JqQ>%|Gz^K0G5c5rUl6f3v^xpBDes6&Nub)V28$YzZd}k0D?mU zOOXKRT5ltg17o*?7=b`TOG*l>yki_$8N+yfAOH{-0APN1K=-_?MY-tVhenLR4cOc& zNl|~_ydVLL1P46B1H^?0+l}>*eX)6f0ik^yAYu!H_!u!KW5DD!kSHEvN*sIW9&XY?2t27m`lfft^N00ICo0tu812l~+Q zTAUJ)6R!E)Kfl}rOefHzC8c|dcmOm3ZUIjM${3Loppc&;kbWO10f10>?|I0t1J9(t2WF^mwHG^Z`yDuyZ`1zBu~}WBy`rnrO-_#r_FE06;KZpDY^)Ze-V> zN)Lc5`H5UXax#T@Dy$l@PyndufC9o7LYR$v-7PA>06;JU&B0^7&;SGmfKx0hBk}NLfc@Lgun`X^NCEL) zNI(h?Sik>p3;-R$23%)V*&zLM7I(0v3#OpRC1HnfOMq$sfkIKDr4|MH6Ump}0g6Bd z3{NeW(k(-`X8}u)06WM40s+MXSh)aXSeKXoco4-3V^&a-ju7(AC0#Ur3m|X?Brc$U zKn`}wCw!{GMv%P$l^GQG*x5HG*PN+#r~&-LGq- zpWS~63pH>Qe$~AKRCqgF5A#>w{yPs}+yGXAkhPX-dVOFkN$m4ld;YM12Soh<+NotJ zc~Z~+-|h+jcpLhlcIE}5&a3zM?R$O)|Ih!P74QUq0003&0B$Cj2Co2kFaQ7nK>#_4 WrU9$K8;k$|0YLy2LTP|%@CM_9p}n*K diff --git a/samples/h264SampleFrames/frame-0681.h264 b/samples/h264SampleFrames/frame-0681.h264 index 1c8d9258442c8701cc05dade3ad2b0c2f2e92afe..1df06eb6eb2253c193f19b8f5667434494af7f50 100644 GIT binary patch literal 1614 zcmV-U2C?}70003AFaQ7nL7Jc%yaaRv04*@c1AY8|_-+dViB)A#F>T%He*?fNB|;*w zh3=pZhjWPwegfmSIYa$8B&kIhAN$=ZmD#)08|vKOhztx?)4#JoKmu@wgx@pQiJqVk z+jIBbW*DBkx7P#Kn!98FKFuF&vl$QmfJd}!oN3qnJTDKz3{dU>2@T9-;*ysThLWxm z2vt4;NN1SN|Iyoq%7${6!30VgAQp%iZ-tP>%zIv!_=X@1MmDI*kU@TjiiR5n zA=!p`r8#egl5FDu0RvzN9~7AmAvEA5W?m>u+O}f2#nG z&IA1ZumDy-1sWj26t33}m&HQT#Dqq01zaxD_sWj=3XmEeRMg*nfV#jz1g?)#l2Wz& z9)JKK1_2O^wuP@5o;Y9sZwM_~z+uDKuN@?~id~2Vh65B3TF)GN;eJ;D03Zeh5$4h8 zwd>BHE*PTsfB@V8oD!!p4=TPzM!m)5fB=9X00;*L)>ai(5qE@`7{UhtK)@AcMc1t? zDZsQ5`~VQIEID&r6>y9IEe~f)cDKjvCIy$|(@nd;OlZy!{V_hL|4s^Sc=&Zd#Wc#= zL9zjzz-L?GVKNDauRWmCMm7AJ<>Mk@Q04#U6c7S8u6FCc_5$j6OqK8Nf1qd+;rTNn zgPi}}K-eoUI7PyQsB}622{TfKDCVFL7ZNw%Crq0YoDx02O}VA%y#ifItI< zw6}Nq_ksok2n6U1;46ee9|;No3cK6@$A>tmi~w2=fB@hCAP@jJ7EnWqWxrSSloA#H z?EnWsK_#pa)$F7O60~{%9+`~{ic*n^&wv8@61&zD5}sTD80j@s9qSma4(XrX!2y^A zS}zzz3>180Ywq#8o!&d8kb$dUH|}qs315&)g2Uuy4IjUH#!geF%xzZcgNe?ZQ#T7;3*-&UGlDf*c_JO zm(Y~Bc#VJnfTrmH8~|8jnA0pN)q@F^cn$(E;Q;ZEyfLr-Vw<37ClU`206-85KxsCS z6oWA{2DZ?iIC=(#0)mqcC#eX-A2qEyWQ=IQ;gGCPlHq|P?*f30fCP!$ z0l}eWQYSqmjz3<)#qw|Nqh_HRJu= z0B`;O55o@stm-Nlz>;@Kr3PTpngrf#3kt4NGhzfrDpe^ z50~(vu(VO&0LEky3OetIW7@BP7#L|+H!BuRSt6Nn&JGOnL+dPm=f5!&$}#^EBftO< z4LRTfO`IxpM_FF_004k%HUJV9_zk2y_uh`TzyjOL0FYb&34>QS3WjWL_EuKv*%&$fTwC9Fr@Yx|49dmE7oG>eMSk60km9NT>vu(Z z=Pv!`%xixtxm8s|3^9qi=Kt^gwjweHq%iGkVQJZy{og}IG_@7G|Iz?Z^>7$_5}iKJ z8B&1cLztZ86siH*8D<*}8o^6$*?w>RcpLiGKVVcznuiem??nK|NZd2?f9pJ37F0no zTfzR}Oc28W4`mD{|1s;>em~1V5bOW|0YLz6Ca4Cl0C+F}00BV&If<$PtH2wK0003& M02M-NfNJmtbgvb`_hcm*V= zL`DF~{;+W98O3!i_zQ<6o@oEq0W_B-MHmhL^%7O~+V%~FP0nJ210EYk_GkzIP7vXv zYrGxl@Jwc)3UlqhfAyF#_O$N%;9F&`rr-Lnvq#yMGm!u21barw#*V+~;aGepfC2yk z0OOy1=iYhupMB@v{s0^R1UNo07}&fZyS}k}|MOg&R$@FDu%G}q00;m876MK53^LwV ziGUiHL6c~8K%kXj8AwOkt6mr(!rx6{C*CP`gn{y&0KfrHNK5D(N(=)J7XVZL@EYNU z@!7d-qW15=C;$_g00;%ty|Q4w);<4tz(pKUI1Hq(;`u6jM*tdzcD6uL;`DI7248q$ zw3B$I3+kviTaE@CJwOZq8M~whM5@AbQGWme01O5UY^pS!l89Ra7o=VsgO>Qrf<>c@ zd}^M*G1J>^x9BpHx3NJq!%h9afS3UQLY;~MJEPSxW#7TT0mi^15U_Yh*TaoXE$iE& zAOH|9R8Z6cZv+kD_LyK9Q9&tf9gxnie*g?9PYS}yt!p{8r~mjc0L`}fP00jwujQ0; z`PU#?gM^BCxhq4};`(E|ugv4B8bzrK`~VOD$3ToWf3xY4bdVib!H~i=WE3NbUw8ll z0w9G59LK`5IyDj0KLsF7(gMIjK_p8M6@E^w&wK!Y0Dy2iG!)vS`bEr@#=;-+y*g>D zzyX|ri}#uV2${x?q!Q2u0)SO}EiqG(So9zJ&9DjNC_peZ1o4zG5A$j?5Y=>3gWxiN zu5n)lfH||mVwUg!U;_vf8J@tYOb>?4?`4(%Rs{mfWd)3$uXjf100aSmSebZ_hM?c@ zSHds=tUaBt+TTC8m?(?#X|&(#5yoN*(H_tJwBW7YJ{?e3rdHCh-4rlwQ5QS{Kqb3w3YYYGw z$b}A3^;Y0;i5qS*A?Ul`@9)I`0!9NGS(xI>Z2rCY+ykw;vxo;60D$D2RGPZ*`@&NU zfCGSFG6#M2C?=KBp*iVS|GHoT22XjTWZza}5C7(oe3)YS5g-7703ZSgWTJ2+jX0+@ zqM!ia03Zee3eEFme{4O^@BjY;a)Ddo*PieDTa7aqx8q;k=F572?f?Q16%9$z`L*}h zTo!x60Sc|I4Sv;?R@6V@ZJDzTUDue-Iq9;*@A=HR|NFoIKnyCwu(uHZm%zYgCdaqq z9*A%N5G?AwzyieQE*m6Z00;+w0DzbPcz#>J5O7ogoa|jk*@EF!Sf+e3i!bpAAvi_^ zJh*X>QVg(b$KEvn#Lk;Z-@E|^F$(ix;UtPgVV1|$X9EHVjbOL{@96OY{D;B2|AX)p z2Ci^@wBLEAnos|>G~k@W%ASEs;s-*|xPZ9NjA|Ft=@-Qb<+czHzy=)Uk(_)1L(R8n zn@<=-Da(XsE&Iyw5{3W*04$H7C_4MATBITI82}5^;Z&5-8jlMI0%1%p$wJ4M5=Qn| z3}CLWLqzAk0L5f(d@+8c61>Cy`_6W?8{htfj{m%208@<<^ zu~|7ul0X0Z01J*r{zyJPod^W~Y3Hy1eFKS2fPc!3kWvZU+h!2U|J;=*hcFv%vbR4@dA0003&0B$Cr2Co2kFaQ7nK>#_4r~#|M8;k$|0YLy2LTUhN@CM`gs*|q( diff --git a/samples/h264SampleFrames/frame-0682.h264 b/samples/h264SampleFrames/frame-0682.h264 index e4cba07975a5dc436c276a122c0171440865ae33..7163b9148be0092599a7931dc5e3dc4460fa0545 100644 GIT binary patch literal 1144 zcmV-;1c&{C*{IN3#a?@;^L3Shl5rmFazVnW==Ol%0hAY2s*ea z=nD86N>GQDDYSnt!I(x2!4N720|~$Z002M)0R$oR=-B^c!IlCkMf>n!vl1XQ+Ii}) z}Z2pG;J*QntfO|(>59soc9APk{lU8|>KQxrio{g(g$ zAQUeiCiCJ+t)p)@|GdBh009Gw4fP)Y6Rfyt25~Tdv4Gj=1`{pGq9yPCA|L<|3PwZ# z0sue=5=788bobyszJQ=`r*QI6v#bCe+6n+5CG-e2TLPzyIIIYo%_MdKN|NH(XFde+ zICTB}``qEcCu6)#iNT{MGzq~(Q@?%YHRmr=x|Kr?!VrPSo5BDkCjTDlWD=dU>id+> z-SahKmyTFDh8MOgn)NcU>$g!bN|-?u3K_wHY5KxVPFa>5|P9Yw~R!i{sghK z%A`?BVQv2P9_p6_vV=xQq#7no00hAm!6S0i06Fr$xBuNTHT!5G!?}PJ`fE#cXa7#J zs{#4k?0Dox*kwn*fkIq_ha#SH_9%JN&JInvm3A;papZf(9SR$VFu_(4%_Q;fI^bA6E=@gFx^F z35a4aj23kbcwJwBVCRBC^(DztodL#y8XW*b2EniZaBy2lfN8=MA|f$KQM>-|0Re)I z8s(T2M5D^8+MvT0*8ltYf>#U%3L0%LLd8aai>5G!mg71m;b~-DPY)}7U%a}v4r-{ zzQ}*~y??ge&u{m^tYr^=e}H_T0003&0B$C*2Co2kFaQ7nK>#_4tO2XQ8;k$|0YLy2 KLTdnO@CM^|{^n)? literal 906 zcmV;519kiW0003AFaQ7nL7Jc%yaaOtpeX}TEfx^K2G)En{JsEMXe_0DN9PD!cgB8t zH68|1f1m`7{7wOp;JooN(u6eW_{WjGAvoL&a00=bz2n7ZuO1rK^ZMDzg z902eD2mt{>0x9f{q!vlUDAua*)ZhRhOfr&?6Be?4w&;-`zzhJ*9zze3cp3%iHqHdf zfsC*42n0YDjHwYC;6t6N9C!dQds(y$)-ktMFl#$_ugh~H|}>* zsA1SbB%{sXP{vU+Z+`zX|I{CE?ZSZQPqq}L-vNdYiFQ&H;3X2U=dcn)uBNa65D3dNfB=9911LHVPEr{?8nJJ$ z%+Uw{TmT3i$>cx?1`%UxJ!#k+664Y12!|bE=_QY{IA4>%{6lgGk9+-wDeqT=bBt4# zdFv>0ORkrI!y^O9t~5bQb9IFz-1(6Vu7WcX^r?x^7yuBZ3{)?nlq+%2s1k%6&QSlTz z&j3JiWQ`JRUAaKL8&`63Zvk<5283B7=TJx3%S#7~p76qPCIEBMT$zyYLPIG}l%FT~ zDu93mqM?9oFPkJ%o*4l-cRkO3fv#D(G#e5Bo55kFpBtIPfA@?;qxL}qTPiVeT%ub4 z?|vlV5s~62M8dERz{nvqzz{2~G%SAYYD41fp;4F3;*&Q*z2*fB_M-A`W$;`< z3<)e8f>Dqm5}d@TI~&6VgGIC!TmFOuYMz>P=tBaN?3xUbpB{MJdbRif0RS_?004j> z@colZ-g^{6@L@4rxH*W1;O|M*2r=6!O;N_Qb~1v5AJ03aAY z<>A*m5+ZFKyHX#322h)XjeOQqWHb`UHE_Hq9jufRc;2q?02Bald2~@AA?Xwho!qa$ zDgXyiW?+)oT-v;RC9MYl62Jj*!B8y#s$buDpa2j6Z~zbjB+vl_eDD<}5bC|a0{{gQ zZ5Io3jR68?M1TPwdtMOyCsD)vL7oE;egFV~I6&7wTiY72n?(l5sF}@8EzJ-hs zLAkMK<>w0k%61C@g=?`46q_>f4$b|#p%}p<{sx92awSMXq|}rTemAo>PN(l)9)1Xo zhyo&bEHI`336YGBhcH2X#)&o<0!k*uR#MtS}S12F*ObS8R)Jg6(tub??j5G$6Bvcf%N0W*UENNNT_z3S^Mh6MTGSHQ76 z0-=?meLLB7-r(*$009AU1}HIt0}&ofdvJ?GkT3Co3_E?mIG-_48jO%z|JD)|@7Eoe zm%;yx03Bctz;=k?egcAN3Ri5y{8Y7Tz7NQh|M(&Bi~s}zfS{8g&xA$anW!s(Yk+F-2IKex75D%E literal 1060 zcmV+<1l#)n0003AFaQ7nL7KoCyaaLl{1KP%P&*O@Awft0ApwH%BkW~IgFkpj^*{ib z5Xx2&SeLDePk=BS1d}^GlYL(VAYAy;+n7p0VGTo+2tb59Aprv@AboRq0%QOm$qg_F z32noQMQa+{CUGZIL;*1gHFy+d3JKkFRF3_M`^+9Hj3Ug+q&OutoB#lT5Te4jp!}VK zWs3oz*a0VbiOON<_Iiig3){>91OyO(3<7gy?ufxX5r{Zr5V9=-e3xZBL-zmxfWVwN z1uj!;4I?GDd4N;^7S|~{D;+zH_;NQfn6@S1z0BR{G4+vvUm7(2s|K5NH zC~?OY zHclStuYu{4U3Ki@1SQ8((eA%sNBul2pMoO(aX7G2C@264kd(d=H&xs42|+`|h5hq&frMcOnn0(_D*g9>+|dXC6Km{f&)-kM zSSngU64ONyL5F|#_4tO2XQ8;k$|0YLy2LTdnO@CM^lzr~XP diff --git a/samples/h264SampleFrames/frame-0684.h264 b/samples/h264SampleFrames/frame-0684.h264 index d8d24b98bf2e941bf8d2990b94a79643d3db212d..c03e177516e8a06c7aaf522232ed4a72ab1f31a5 100644 GIT binary patch literal 1530 zcmVkLbk3+(j5QxtN4C^5D9nJKQEf& zB4Y%2WC(-oM$ft&4B-Tviluw}=QKCk0O4P5pJzS)J3(hUyh77XQ%hu`T=0}ru;S!C-3c{Kgt zJl8-zt}&yaqBuw+U*U^r@Bd!>b96v~euXOY`^*3V1MmP4dH?|nPyi4LOyK|q0epef zTwp*kvbX{S-T)@?9D&g&JcA2!QQ!jgfB_2xW)sCCJolyXQByL;Mp;(h_1dbq1FQjV zB+rs=eedA{)WrY+0JdD-1*}8=_XrtiU|D`r>X1m0Twm}%0RSPS1I#e*u2*7ho`3Ez z03`tXZ*!0~3+$bwXaEEQo}dB7{zNf;tx-Ao9FP6~lw40B&=LRv6aW)4`dA1+axMc4SI_VL{RsdYZbaeyU)Wgd zUE%+_eDJIhm*^%7piL47vEfbtuml5v=&Bb00Tal;0E1x~y40yjbB$X(009AT08mUe zzCup2P2&z%i2MOc90TT{`7T=uqX~mBV(f%mogA!X z-{0ONFaQt%YKj0e!i8W=M(aU}B^~LvNV+(pSKs@zE<7Ts{843`r~d#XJ4g_x$-mYO zF!>ccAPAvEl#k2>gvh&F>Ra#t1Or_Fz#^&#vYl!X_9Aay002NeKm=of%bB!kQ=v)w z5C9=@Dh0f{K!FYq_Jj2U!_^vulA=&)A^Bhc#9}KU#I(6AT0!_o2#kgT01W_F>NWxr zxG+z!i~*ID_(7-vXwr2HCO`ggP$O!WhyU}LulMiYmjkOzfoR&yNy2Bpf53*I0AzqT z@bA@yR`o>x597j_Umf=SgC~0|I#JJm?hj2Hwg=n53B0@c|Nh;OAulW6Sl6HL{K9vM zA`_fC`Un#L_n9&PRKTN_PYV3}5WN9NP(lC*8GtYX%j5V5hzwrE^Q2*=Gs&1qWN-iw z8aDS2Bl8lu9ffA0>SECjV5nFfef)sS;b7eGAh=3dW`zj?bFUcuP&fd^Wh!ti&qCM= zAP5AF)g88SK*P%DIkd-s2m@NxbWGW!<3@p~6x(sprtA({|No!{Drh`3Uxg6FAohqw z@=HJj00IHzP1?XoL`DM-#xD>B3SM%r7)54%X$AuZ82ma=QI^Sr52>g8)*>QkhGG;u z?gR%XXy9W8MsZlu&c>>hQ@{Wa2mymInpPbvkxs3Cd@2FiH&YLgg+Did03a$WXcZZ- z^yr?l&OngVT^Y~pAg{9rw0=G+BnJ3W1VJ!B@`ChDBX*6GrofPOKVRk|G5`6z004li z6958DG?)g`2tEJ0^K5V2Uu#zJFalwC011QF5)qkPNI5~64*&$n#z#Y#Aimo~oB0_C ztfo2?M6F4NM%aLs;eZ8-s)ZjkIa_WQJHq)$ literal 1410 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 literal 1051 zcmV+$1mybw0003AFaQ7nL7M;?yakbeASvKO2!yZ(ZS}wXXbK1b1Oq_9`CcT3LZ}33 z4K=?9VWsGQ;J_fDaU}%hEJHCpJXA*mrvL|xBOsBmsV+N7p701cV+bwLHhZLDg4X?5 zd=LSg5Db6<0(Zq>psh=V*}7;71_7cawnr11M;S;>jhh>a+qQ|ia0CGE;MS7;By&RR zpZoxk>jYSsE(C+DIeeLwJOBX!5Tft^(+%G?PI}Y}LOB7_zybhb8Yn?BEcfd>;fwGJ z004kcYR{Jf;`$#R-O@*(kzj?D(M_@qf-k%f07C&m?~vqtn5hZ4E7AZ7Rxx>sgn0k} zPJ{lzqyT^h01PfdNKnmPo`lU~nJ@q$ct|h=)UAN#FSY}ic0>z6pzxl5KLn-yfddPK z1qA>Q!Wd{uek}2jf?xbMAm9LCuK-R^UDS&JYv3XihQ@&%iX{NCVXcnU#G`NOn}_j5 zrTgFYT5j(E1fU=Rbb^inbbgAp96BX@BftR20fSx?^_3~>*Z=&);3k1aQD!MW1fT#Q z2qw;w3XN@E(}?sK0JG*LaSx#XSAsG~o^N?DzccaDj|GjX+vTVQ zKme^N)(72E2BqqN3XYfnSjEtycD?SMD!>3h5Cxluj{86W5EKHHBd#+Z#hx0qY4!uh zlwdw7%fPU`S^vGb3;;TY7h!x)WCFF!McfKe^qwjnvBm5`zsEq_L3K-SypEHn4dbPUhykf1kGm9Uug z+IUt3()_hFgTkBvu@B-rdYC3lELevQQ_S7}JOSF>nHhl_{%$GZUy2EMD!xfTJP`l) z`BVT1(AC5Mx{-Kw-Z0+&00W(#LcLL)Y~7p4%*boHcu&BZgpJ4$0^68ef$*Z;=73eE zq|MA!W^U3U+`2S7=ahT+!TZ_p3dw_?yjQ^ir zQTZaJL5H3dfN3BA00BV&ZYID6uK;*30003&06B@U V0jt0pi~s-uK>!s(YyfKT2IGvw-H!kO diff --git a/samples/h264SampleFrames/frame-0686.h264 b/samples/h264SampleFrames/frame-0686.h264 index 35932fd9c1b94181b9286f8bd296dfd42d3f60ef..462a0c50afc8578016cb1e4344dccf588542649d 100644 GIT binary patch literal 1494 zcmV;{1u6Of0003AFaQ7nL7PAtyahjDOsHH*;auOw)?*AnQvd`20RS)t6o=EZWBro` zmgzt2#X{1=gho$C*U-98OC7iBfEo)Zt7YC`FJK^oS4Zhd zNmBj>S^xlm7zRSSS`w^gaN%G5ydb%40fvMqme0{@y&fnDj0Pwm#vU|7!2AFK01!B+ zpz3`Vy@}*S!t`GN0Nena5~nr<6<;EwKIHiT0RTV%5DpE!Fe?rjP(2Km&llu6AI#ec*tgg327mfH5YS#43w;+bhj*k4)B& zV=?UJ015*JGidO?tYHV)NuU|P0)kPzEt7AM2x#|!0B0Zphf=zn$cV-Lgd6}90)yF% zw*m&DrcVFf5RN!P9C)Hn9$=wh01!zGKQRCt6k{-*q>Y4}U;lgCZJD+{s=PoWfM9{u z1Qod0+}?+{6g&VEHpc2zwOxH3TK_aK`JY6i3OEAO00975JOcm)2k?isCEn}@mvA5u zA43-cMIGo2r~@BUuRH0$srNv~$G-qV0tr}Km_Wy2|&AOirAppp;W;}SAV;RIY2 z%oAv!uP0ymIrhB(5G@-Vctp#r=Rf;+05QFRO15_PC!oE{2>~$lNPvV@D-0RR02lwf z4gx#?w(0@FAq9~mFMS+-y?|w{f5gBD;2r*fz<}~NdlDyL=={I{K;Qrb6h3qS1P%Z= zXMjKe4`i4CVZu)$TtLVllmdyM7z+eZLC~E?1_@pQAP6QGKu`gHV$pcCLD%cRMgas^ zfb0U$k-a1;PxEH-SKY}>G>IkpV1e=s4`xkO;f{X8oK zj|>3-gCGkK2ap4<8V!*&e*gde{$ciq*M|grh=fLA7$m9~;F_4*FaWU6+!z3%FMT>2 z5fd0M@0~UNV|XTx95~;A!_L&}f<8VJ*b!6GeU zx7)v*cPDpz0bO7!HO@grf8M^pHD07GaaoRz9{04(4EK&qqq8N>Y-{qg^V zSr2;jAV533TM|`1ec-fXS+42dcmD-adP>I^<^kC3v8MO#=J!eyWRk`y$%c6*PYS@B ziyjt$`$izHNudYb*MITWM#)FMR;iNO&jNCve0At%p zkA%q;3yCAXIi8qIWy|}|3-}X@;x4#>lUwl-jy2)H8!7-I110DkLWsze|J98Vr70`T w*Xp!u=nV5i|kQpuV@qhq;Hvj-k2r{fieZZ#S} zAOH{#yDSs|OkkKX1h6%I`@jtV06+)~V!@n7^|8z*@dsc^^8h-69wgWRgK!iOte~8d zaS=!b4ha~V%jJy&)JeyFs7~l+y zq~$h%0rUXetXjO%0I1B@fT3lvr&Zu|g`mU=Ndio2_xNQ4f~PBR9V#)_Lv2XB41$3+ zw(RFf9N5pxWe`9pL}51%i5Wix00II5sK=dSpeC34!3>3f2aEs&00@)70zx7usmvrc zBhUmGA%jS^p~JumfRpYW!K`GL#D@@G7!nUg6ZilE0^z_urN2<>kc2-kfWhPe1O#~| zm;@0j5J*b>yMYGXSS*%pq1VE{%3oR!WeEAL!H2)U^%yZiODsN!jWQk+c!8W@2z;rr zVK1xP$jyELU=BW4u}8I2fCsb#LIXyE04Nu`o&gF|B$zD>Ae{pMLJnEOm{iGh-V{Kk zN)Lbx2vb7;VMYwbPP*C!Q?~}p1JDJ`P~;*Z=yql0?*IV~unZ13w;9I`B&5h=!(JXn z00ITTzaZe-g{gbI3eS0Owsfq~`+%0pB`wkWtAE zORwGlegF()gMJWTW^Pbc6fKL-xWVWk1PxT6Tff{%vRS0GX->L~`2+2jBw*F>b^k08ry?+9uP+5eh14j>W%Fq=6JL01yFJz!)2SZ#=WnxV#c>?^MD|RIP8QX3A4`=`$KT)Y&mFEl@s^(0L82$Ga>r)(I4Q! zGr&Xv1j1!8VE{kuQZE(=JAHTvz#xkd1e(Ck6$1;$iOKLr08|!`4F`o^{JUs&2HXU| z7)nt2p)Ts_)*3_0)OL@bmDZ`A(0Ro~754ErFy|&A~ z3Yy%)Bk%YQ0a>;Tk-$M_Jju5CC){rD{7fnzj|v{&T*%B%LI;2i-`JJM-L3cnRFu)-=%I=l!fUHoVH}X_0U8>48}7;?L8lRi2A57^TNIa<>Ceyds9W{h7S#mNX`CG2fz)Xg@7C01$5L59QXh42lh5| zq>3NuzV8oj9{{UB0003&0B$D82Co2kFaQ7nK>#_4vH`2W8;k$|0YLy2LTrF)@CM^0 Cn`^iL diff --git a/samples/h264SampleFrames/frame-0687.h264 b/samples/h264SampleFrames/frame-0687.h264 index 92e04d69e13f85db9dafba958adc0d468d17bb94..dcf8c2f3a381a66db7a0a39435ed500aa0c541d1 100644 GIT binary patch literal 1080 zcmV-81jqXT0003AFaQ7nL7QM2yajJzE?!r_!X%;Lrq&61Se{;?p-x|eFpL?3AXE$n z8-M};0DuSr2t(-6vHr<}ECe!p+ zK;lFFN5BMWE*e9eP9N}a421x~VVX2X4bKq}00;#k5dZ*y5CQ~{G!7j-_z$n(C>$x= zJd-NpzyLr7?F9f367mEZt$?0i#DO1UMPLDFE-IMTxl8iYpa>YSwrrKEIP?qj009J` z0f0zP4Eo{Sp%en^qh5djATj_L2O^TY21L?x`qqD1>-0}1YCnem}uRg1OgZwV+H|tgq9pLAM0nO z*R}r>03iS=v;lzdWkeqhR&aDwKmZ_$00Imsi~s=zPzOxtKy$Ph00v&*hBD%%0?z3zF;KWg>I<`raAt20u6^sz8Bk-W9Z%a`?}{Gb@Pw+{+J+U zOWrE8kNBtGeDJIZrSSnUMG__w2n8X8upBTpuKqx{_L~8);(#6t@A(ao05kvu09^n& zSqOfN4+&TQ{KnSB^TN4*I91sN1praPq;Y|MGtDH3hw*$&+RXt5S#r$3QMDfQ3=@C*9(kKF_g;7b$tDw}cvu|H4tQ4rX?#RTyT}p%E_JP>Qh=ObJAd9A zd~u4;>>bu3P`z$2NX{^pO~`%E{{R}q+miFX_-L;PR5U~V2IL5+U9Jf*Pg@ z3HZ5s^CrRSetWC_Ul1f9A2$(z2c{aS0jW15$$fy;nNgVrG^PKYzk0YxiT>+J2@*{- yH^2Nm@SFmz0003&0B$DO2Co2kFaQ7nK>#_4wgIca8;k$|0YLy2LT!L*@CM`PQNB0; literal 1032 zcmV+j1o!&@0003AFaQ7nL7PAtyakp7lMaB6w^GGC0Du611C$PX=>mw7@`TneFM|<5 zpy2RU3xb0T01c+v5=DN9z5)WA3QqOZY+Qwsb^ZV%&~j^76iDhvdRzb84!8gaCtRErZPG)b)oA37X|<$E}jEm5~;8M{`_DK zzy}N3Y0TM>DvmVlKoNu>^GzUA!=#CG=$(YH01yCx0O070l0CGl2Z_Vue7-OXgag<} z6^ILr@C*Y1!qh`xq685;LwA`j03QMdQoZOZD1Ds49u2O*1ON)jif|jl(ZBuSY6J`x zyEnq zFv*C)=Sx7Mbn*xTg3Is$Z{xuDa5jNhe3{?~4m5$nPK~=nAx7Ed;jhBtk$_04Wbxo5 zQfX9H(c%~Y1OYzS$h(l5G8k3Y0Kl1`Fu*ppzs5}G;G_;*36Bcr^YA8@@Dcz?0U!kN zA_5^S0LQ}gC@0b1C*Ey3sZDDAi@*bN`{lOumAV;)||!u_z(WY z`vFK2m-|puNmxVhWImxQ5Y6lYjHWpycE(W_-@kxl4wZWQdaN!^{=a*xe{WZ=KYstg zfdL&PymfAx3_tguJSPHad_YeU5rl#PM+QY095n)J&;0?Y3Tdz!j3@!%-~XzB0iXaN z0^k{MPzd{>p9w?%_>Jgw-#jaq^MzhPK|mCEsT5#ejq=DMCH%hnf7vd<23a!B-%Je*nO^TcsI^{p)}FTH9^C{q6xzF{?ZdvqE}MYyZIW!nhMl;vz-e2nleG9t2Od zy_Dc2@j&by>+thCAN3P#O+TEz;{=uvjOHTKWE^_myflLW4pAte76W(_=!5~(3G?6J z_(D|6g`#}C2{R!5IRx}P@A?oWL|_4FhN}n(NxK?J{s3HMP}Q7i_TN|ED2Si=Tf+2C zVGJoptKJ@XP61Yc0003&0B$DG2Co2kFaQ7nK>#_4v;nKY8;k$|0YLy2LTvzQ@CM^G CwZP>7 diff --git a/samples/h264SampleFrames/frame-0688.h264 b/samples/h264SampleFrames/frame-0688.h264 index 4ee0cf798799bcdacc5e2e9d87afe69a750d7b22..cd200ae2163bbab4179129d63798411ae2e31286 100644 GIT binary patch literal 1313 zcmV++1>X7q0003AFaQ7nL7RXYyakbe6cpe9;lm&T0z*H;;OQ~#os)n8GLsr- zQWCk_&;f&tX$zp&C0Hmsj2%T~Aute0s=rHu ze}FImaY9r&oH=!gh3v#Pc+vm}3?Yy&_)~px?z$qQz|L@MHD=re6usj0NC4nKD8ChC zv*Ygu6KHbi2h$1*Wi+BOxPvkZ*@T_I6wKe?0Dxfsmxo;ZNQty|?MQwA8AjeDYo@ZB zVZe?ti-qAh?PQ>lF7=my0H6bd%c6+^4@jV7=H-3?PyjlEGX$2x=2he24QMz3mH-Qm z3V~<^QvUnJ004jkfB=9ICV&bf=YXj&hgGfs7yu}fXt-OPXb2NDBmfC}+VF?rI*uRW z4Dc9(@Bjn>!UnnjBp^$x29T>6qHq8L03#32BB8rC%uz?bZT7{`xt%Xx9c@SM@a<0D z{J%3Hk<`NC2}4wXe;AGhKoB5V0MSuFF!u$mV5)>`wVg4#wwciKlN`L+MMgRf< z0B~8bXTl=yOw_L11BV1~5CB0inNR=_6L67N7T{Vj6acA!B8LUr`dEP=B!H4E&;?{> z7I)xd1=GPxb(I%nU;t>LNZU}icETn}~`ulPD=Ycj5 z8aOEi@Xr8uA~zyP4S(tY7RjYLIi1fr(M3mpn$=ZRNB_MB0D%)Z*u{@chC)9Ao+G*i zfCL@~E^$BrLE;9k9mNnUv6xzq&Hr&S3<_y%3C<+sNoqCr3^qlr$fW)IUIvkA3!9l- zx##=sX6*g>ytv+a8|(jshE`X19sZr92L%AQ9~OY^_s)c;xH{*d!9;@yTz}@yIKt1^b$iVS zsJZQ7Aq#uhwmR!=$c^6hDJY2{WY{qC!muW!@(NHT0&VV$WmmrVcBdeL1Hkg7APw{& z3YCJ7lpl*202%?brHGbT`4|7M{e%(h;0CV%crX9}0YLyc XiMRo)z#EJJ00BV&6+&(RYVZc*e||hP literal 1201 zcmV;i1Wx+^0003AFaQ7nL7QM2yakbe2ZQk-QWO#dd+Y$<2=M!-C*S{k0GJQ~Py84) z;&=P7T%O`0Vgc2gd%GHs}v*zkP=0j098d9i!W$yx-gJ` zS-@c^3qyNf6Cr_gT*wAw{KLX(uo3`CDABOcI1=%D>Sb(O@AZ@)Ip={k5*j!u0l$WR z;11+N`zAqG{*V9)Y@44H!Z~O=LYl|_#aPu;|Nm4l1R_F|hAet)(4T{zBf12D5G=sv zLz(~t9tEnGJb_+wKugz`>PnbkQySO_&Ne|RJ^$-rhRpRj6rR6pz>+K@##1ZO?tQG^ zpT9@WJ!#W|2@b9*U$#q6SG+MW3xUZ%SFb*JRs_=gM|Kbj0Q4d9$ar{h7`tV>eR)s` za^3TA)Bg4eYPhovo44sWq-HBG3=1<>$W9di1k!D!lWiye|9}IrF~wgHM>N)uM862a zwJ5-)DMJDcYXJCLQiWgd0Z9{I;l)Oy?}HCZ-T<~o7)c+X?B8P|@1L;9OW*qJTOEIG zOpV?@p`18*;aC$=c!3fBcz@D(C(evByS>Nf7*?ksfky*es4hSuv_JqL26KQJf9Lp? zzyR0{rgV_;a$mLou$(uWc8k6bPksRifB*miK>%(h*aoivcrX9}0YLyciM9c&z#EJJ P00BV&6+&%*YVZc*#+>(F diff --git a/samples/h264SampleFrames/frame-0689.h264 b/samples/h264SampleFrames/frame-0689.h264 index d28fb9629cf09017f045e89e0af5bea644d61b9c..9eb8254a205a01dde1ee57e1bbed094f42cc4958 100644 GIT binary patch literal 1403 zcmV->1%&zl0003AFaQ7nL7Si&yaj>3{v19|04&T1^#!g-;WOlqSEk4Q9xNr000IcW z03rSW0vgP`08$MA06^X7abN%;$dCXCL7uOFau1tdcZ3Yy_y8(l6c8M@+<7T~uzU^j4_A8@a-l z7D-dT5Z9mxC3#Z4OG_i*fS)7ws!dTA$QM!X0f8MQfRf>B;n|E~HKKong&8)ULVS{h z@nHA>)EovosEp1c`%(r{f9;$i@rBaUFipdzV4OOCkB9I81OUgvg#J7B=mt;oRhgHQg5H4DWQG)%XA;HzA1Px70$K)gJHpd{84na8M0H0q~`Nnjjzt zh{!fM6~v_P@3eyi<>m=ZZg0B3_L2Z#Jl_KirQ@kD@9z^}0NUjMBS#&PA-0+s!QPY} zCDuifO56W-g~fzbFNk?1A^*S$3bz-|qkbKppT9 z3aSAsr&H*{^WOdd06--`8H@xbR?(%)jZfNu1bk8eEQ(bCvzxu}e20gMFTLo07Vu>U z%K!!@LqsV#MD!&f{-gxSh!_Bn3iUQXl!_P-x|Y7Dr+hFd@Blz)3^yw>S4(8^fmEs{ z004k+00 zH?SB02nRMIxC9g6&p;3nfC7zvHQ~;hL1glO!w8j}a0#MW(3&?*%e*keG}FcnFv}FZ zk`Qm~A5qW=lDPB zf97Jynmot;KtQ4Q>{<;ZQ++7R$AS2u0|7&4GHmWkDoAjMFab@}!{j5Mo4^1N4LRTf zO`IxnM^{%MNcq$ZrlbWGTrAFS$i+&7u~0Ta;6x-CE#vm2kDNS2mMnNY>3{PP7?1yo z=l}u%sMr8VOJF`w^PhXKHq6&mYl$eqW(&M918?I?@0VxxJ7{ z&jJxTgYy`T4CFAIsAOxm+OunfQKT0dcl6{%C?NV?ID^j|p|IXgZ8|Wd7h%cJ%64TfI=Vu00BV&ZYJmkuK;*30003&06B@e0jt0pi~s-uK>!s( JZh&g=2IDrYZ*Twr literal 1544 zcmV+j2KV^@0003AFaQ7nL7RXYyakDUfnfz8xD>_(00F=NKnnl>fDi$OgK4Go7_6IK z$bre=6#y`6sQ@p8+K8V7kSdJuI6%SGOrS$B0Kx$!jo-DS1RMZj;=h73F(KX3{^S5a zCR2a_Kv##BC;%z}%%iXVynq0MO#lLb0D-gs0dNgNej)A#1_c<{5VB-|8M=r@FT?${ zU;rSk6aW+e1Pw3%7y#%pffrl=5WufVLKh7BZFJ$C*O`C}3Kp^;>bww8hq>5s5n!OLzm4oU}hv{%#7F!vH9lx z1Jhv?ay0}ioD45$E+pyHa0y8aYN5(&YI1#j)EXl|3=imU& zVLX>E-jPo~?%@CcfKUj?mC!Ert^ML-2hH&CASC32JjfF#i zR00TK2qOpp-~b>Bt^f}32QC+tzvH6ycdo{&l~6Fog?t6T6c_M?_YmfQX#LtZk01yR z|3PLJ00ID3W8eTF&H(E600ux%!@xODG;A~WdvX^r2*J)Y3up-h3Jl`_1FQc#&>6rD z%?rsR0mJSRC~cV_fB-;bnK%Fh1Aq?Z5k)Hz; zSm_2$rL2I>;N>Vg0Ofve>Bs-S-yk6abA|LsVJ}`iyXqH^Av$RkXRy2g5C8-KKp249 z?jk=nB~anskaz$B0AiRK6giMO=to8ab=CmtHaJ%+y6t!XSjZbBS=7z~T@seQ+k(wX zP;zXLHFM`o@B+jE3I)yuEwQ7W&I58rj5Hvi03Z#>#vlRE4Iqns^u7zk0Sqt+0)gX< z`LGZ($ZG<0o1N(bJQxC!Bu%M$8gD0ZQuTj$X8_c; zs|Bc+o)pKx03ZVcJkrL_)NgkFY-#ziRt1!3p^V{g3X0S$q8Lc558xm%!U6h|u?pg4 z`eYF({ID8EqCQXoavZ+#fEZX0paVrTS*Bo(El9OM63_q;4u+8c2F};rpuxeM>&u8a z*}0jr&--uy1O^aUvGbZ0#bG!fiGcTTFxaPngzw)E6~20(?-&3G3IGVepmD&4-W3`?>0i$`-`0D>x)R6b!6P65l^xT*Ev0KoltoA-|90003&0B$DW2Co2kFaQ7nK>#_4xB;uc8;k$|0YLy2LT&(R@CM_EFNTEx diff --git a/samples/h264SampleFrames/frame-0690.h264 b/samples/h264SampleFrames/frame-0690.h264 index ce3ecd61d9a5c8e6487137f0d3922ee5e67aa908..2dfaf950d9d0318094e8bf39f736072859975471 100644 GIT binary patch literal 1289 zcmV+k1@`&?0003AFaQ7nL7TuDyakbe5D~DCTDbOi(uqURWd@le71r&+pR2#I6+#U;M z(7jL_83-Q3+q^tSxAM8YloQR=_9*4f>5)==+es8DE|!L+D~y9TeSIIbi?-2hurIr``ZSxDCvq zqC#pqrC&>ZXaEEND?b6l4cd@W;o)bC6gKT1LEz5)bocwZa1@Z?-SVy{?tlOg0rp@3 zU_eZkHpYZ+2~+?zUO*%rEao)}3v9?mDTP-h&2VFC>+}=?=oo<1GvELh9YC;U8pRgo zDk*qlKiEVdK27OsSvTGQ0D!LmG2jPyr9!uSIo{q*DOsEx009GPm;foUbKm~JXb=`w z(K^H@tzG~7UI4)4JjC7lsO5-Np8xWkmYJWl+JUj~Vfi zWX~)G%m5qSPyxVT7I!-F^Dq|NW)J`f7XSc(wyS^uU>7;y|G4-u^aOCA?kh0q!u&A< z4L@3&BiT6F;PIe-F(3-G@qx!jkmIo$ z?jYFp4hScTGTVxO_&)#uKu87&iyiR6t|}G!AcW3zy8kjzSRI$SYv5=B$5uuLm^c#?;>!}*=;R!IfB=9Pb*zvu-C&La)T(1( znLr{D006-3y08|0U8RKjM!pe#O00RJl%sf=>|KF4V1W614FyTj3E+A+a z1OglmM}+hF_!AZaKnbS9N%4RmB4{^OB0HggkOGL{q!KkPWO$8iv7`eS0LC+5d!!Ua zB}f57PrScl~Jp*Mh!* z+^gGP@AlFmaY+zOqN;i#KQG2C_9Q9bggaK?0uuLtvHwC_L_-S~>tGkYH}aoo zZt6ej06e2q>Mi{oT?~c;JSzff@c|(>TnG2w1y@NIa({*Y_A;V~w_2S0{_leP%865d zcfcPgpeB)H|M@TN=?Lfm2ys^oum*su(j0AH`-o@&daz}NXdt%UF-t&^`aPr$n;yyT zNcG5k57d7FbpQYXK>%(h@CL5{crX9}0YLyciM#=;z#EJJ00BV&6+&+SYVZc*K=m)i literal 1040 zcmV+r1n>I*0003AFaQ7nL7Si&yakU41tX#{003Yd!GM`)+=Y36ASvKO6~H9_Nc;Q+ z2mk~C!NW4PK@5aY8<8L7`(T5^00II45K93PHDmMY7=ipBH~UZ)^Sz$36DH(ad%dKrvQK} zuqBUnkTHQZP5uB-b%yik&;bA#{R=SBBftO<4;1tO0Dy7D#+V~9VhqODCQASi1R-J# z5Fm=IBYZQS0YCr{1PMv9VEB%AXBKoZfM%eDOc2>1*mZY=03m>Yr=Q?xh=bD5?b~1Oc}rU@3cz0G=IlWnd?l_5=(r z6d#zn3VaM9hJ>f$j~56d_rr2700Rej0&;@xpjZP)0EkW-ngTl%OaUUpTHPy&M&H%G zjNs3X=fCQd*z0$ML4XT}5E5#iGo^tCuU`nj2Ec{r6u5yrPKjG-dfJi5u?~AKI zYVZIM1CihWQ;T2#mGI~{33;$!4grwu7QzL`scU}VFagxyIQVCa?LN$K(pUd*DM!!* z*+_pYAGMw^1^{LP1ZT1?S-`PlntTK31aPL31GR%V(+L%XZeRc)0`veN2LPknIW7EF z@X`M80DvGXg9$oe41KRa#I%$K8R1<1egwz~04AHj0-7Tu8jwm_d4P}th~T6NUYz)E z!G7#|o={^$j3+^>v>_5e3jwbS@$sen0-E(0d?VleLCJ?}wgxD1bbX4RA`jn&I9%dhnnho_5#DB@R z57dGL2T=*mlAaZTFu$QZXrWqHKmgg;A?vS0U|@Nx97INXVS428{=}JtM)Xb(Z{3n1 zB0=}z1iJoT>%aM{0DzC;zEzm#*bJs=mQA(jh(|BS4$neDjt58P&;SSo1$iJW|Ip#l z3CFbGP!g%f|Nd+MtGNC^vW=^Ydqy{)dEr#_4x&f=e8;k$|0YLy2 KLT-R+@CM_3j=O>Y diff --git a/samples/h264SampleFrames/frame-0691.h264 b/samples/h264SampleFrames/frame-0691.h264 index d278150b6e4ba8a505255fbad3fb19d159a05000..a02a261325efe84184e85eb11f3b54c9bd9ce78f 100644 GIT binary patch literal 1816 zcmV+z2j}1B%9%NK^EUcmM$am;iGGVk1`bJ%13{{lEYq1s{j5(50M)sis0g@BPMM za`!L+ghr(eL;re#13GsHB*&vILxUAOBs)zI#MV*LOJ!s*1_5QKWW;<<(Re=;r?>L` zghK^61PuHF1bTyd{0&r#gks142fzT@HY9(ddhh{&DM=LWN@(eQDaP!dbH)4k_XG|F zM2ptO?Q$Uc~AG!Fn%v01dzi!6|cKK~?f9Gwx3;00aSm06;i4w7{y6i@XG& z#t=9G0sv)~6TQ`4|R9=AM8x`4|B3 zLhu9?ZUN)89VFgai2xXt#t#5N=o5KEPaP!2N~~9a01yKRF^~*oYE#x?FX13crTV}` zKmZUOtxSMv$%QX~P#^%L;6fva>c#W(|HAM3z!%ti401$KugbRc{A_((2KDB#*0AUiqLnG~HsXagg&Ombi z@L~8_f-#iJg95n;DR;IIpL*sw=7=}31~e%;_~|8zNWVW502|;Aui!Wc1{A~i(O@}l zU;rSD00In2&;Srp0D8~A)c^p17TW*=1`QKL*s0JjC;>#!1_5B&Xg(XR;J}5{)%7Ji z!3!Xth9m$kX!3w0DK!;gxe8{eb0Q*G99O?$IEK$qp$}0;a zDcKg#b&O!;%qo>_Q8i2sf;8bUNQ+I1-){bK+@0O=&+`FLmpMg2ANBSJ3lcRye=vWn z;e7I=4b0vT_X%zo09eSsQho@NRNvkH0|9`R0>}x#EQ{g19s)LuamIB(5{-GUtUPE0 zz!l*S%SHCToTYQ#^WKC;SqUDZ_r2$5k3a2Yh#%SOTADK-_-M%loo?Wn^u<3SY%#0EuJMxr-X z17j0C5HYPF<@`4gC5acxNCE+~C;apPSRD9?6;z>(><+Wd1cF(zMn408suVbZFh3sM z&x14^GWPqd6ZTl2j_!V)ch;54%frtIz?&?CCqPh6#Za5U!2qy8e}(JI{>OI;z$wL` zKj9v<{#Y6vL|>bQ^Txo}0003&0B$Du2Co2kFaQ7nK>#_4z5%Pi8;k$|0YLy2LT`X- G@CM_?s2_j; literal 1459 zcmV;k1x)$?0003AFaQ7nL7TuDyaj+xKmb4l3TcKIX{MTCh8k&~|G)yA00IG@bN~SW za1sm~Mn*N8B6oW*99?jP02~4UWsm`<)-bKWIOqoEk>l_HDgXikfCmjq36bEV>{oVU z;20r-NV34QZaY)i0S5j72Nk0ANg!jYZ>Gw2>xf?`+!}fEWX_TY|)%2nGx+ zNv_ZcU@9`@fFa(ng_XmbWE)Pt4_-|KgjB(lkN;o@0Kfp>Ms9+M&9ljhNNh0&r}Fr* z5VU+y$P2&#AQC2F@+-I z|L*`4Y=ss3BDv=D&tgLxu*wHjjE5tHey;-*z8Z`Tfq)x>ZUd!8I>>FQ7lDvaCf41Y=>wY?`D~&H z1qh5L;qfCU;D7)?Ks6ZitaJp@{vbbs84LBxCl~?&`g9QgTdxG978KMeiWflyLsnsS z$RC1G01yNdXGsM{wy{LjZqJQ8QjO5zETe^-JsOqMSI zAj1T9>ME%F)e8}~z&ZdbI$!}~7ea~J_q0F+06;yYuX!12eJW?2gf9j+tU2;(#$iV>$Rh*V-VkOkN_MA zZIlKt9-Il7)mdXpQfwjxbhq z`WoJ00K%&C#LGH@jk|`0Y7{S^DI%m^|FAmTh20>s$N9bU6`1k8n(zcMgdJ3*L2`NL z{=nQS*A7~dB}4yy@C^9^W@I;Bo+JDSW7Gm7z)JyS1ke^m@J4Mvz!5Yu#~EAzYNTyH z1HqWg0ooA!vgQ7CdjGmI5wRbZJ_0}sBH`hbUJdal;hAa3c*kNTX_)F$m|3gW_r(=5 z5*WZ{bowTl-kufDz?lIc1o1&A0O!RsL~GwcuH-g@)OpZjA$H&ed)Nm*{OB}!ga;;C z08kuv?je_mHF-qpaEh}-c)k%wh>m|56~rAd-{YxhJ9YP){=GQG(RN)2m(+qnVn`1@ zFWEZ&_t=Uv8H%8{pY6O8Zh_OB8IphRfban5Qh*o=*6tMWoC$^eLc}pa1Ox_zm!Nkz zE(na4h%ZVMF*tPZf0;j*6U>1inrI5&@HgR9C~*Q{ zM?vjX#ln^j7yt0uO}%==S}U`-9{=enNBQp$JR<^Y#mF!)0cs*SROdlN0+1vDC=2$# z?00b50I0YI{3rga@o{oj?!Q0hje)KJ00BV&ZYJ;suK;*30003&06B@g0jt0pi~s-u NK>!s(ZvblW2IHHefv*4n diff --git a/samples/h264SampleFrames/frame-0692.h264 b/samples/h264SampleFrames/frame-0692.h264 index 2042a267d78980b167ef49eb42aa3f0407697a29..a50267718a2894466a3655252441685d2765bb05 100644 GIT binary patch literal 1280 zcmV+b1^@a00003AFaQ7nL7D&>yakisVG=t53tRyG^zePjd7H=iehtDfW(k2%Fc@wC z2mk^AAP6ZBqh`nZCJitVN-y7mgv?pM3KXV#EAbnDbU*}w|AT;JPzWYllSE+L@*)5M0Hh)y02l%QK#~T5!>6}^eOG{>aHnwgP_xg# z06+%q4gdlJfE45iDs&0&2LM?gPf7p|$$$WW0jM|$d|1;$QxXrr0GN}xSk1XznfL$( z0JkYHI})689)P?zClMxJdALMzZMWq5FVLRY8CaCa%bUU>@0K{`Y_YfB^s-Y$?!qNc&Om zG*1wn4n!3fs!Bif(PObC@?ZJDz$?oIkOOJ&lvrm5D2pBM9!HOhHx#bwbZmFjc4hlla#bmgmigRQkc-u<=Gp8DY!Zz|?X_2C$yhtsAv1|K0)^;Y?zl zAfpOf9J^J6aZ&1=m2(08rC*);3K-H2S0Rx zwMtMpyFdQGNdaVWxC0mRj7C^!pAZ%fy8|2800;t10PE}nUnE)$-VEDKy-LU5)5$7H zRaFO?5a9J8`S8TA{%`0A1mng)M0^l)6->Un82sJ_#+{@GgliwH1hZoPbPFVmYvk~* zegwoMz$O5qC@2FN&qT-4pPeE}^nl*NjxVYdFz??63sYzU0096kZ2(^FygkkV4u#Fb z6L&_@FsOAg%qV9H%mPq_@n|E2)cySD4~!f;S3XibC7Eqz{sv*LRYm|x4I)c=sDV*G zfGjeHYSKu(BwwwtkaA=|03ZYgQXO4;f8m`0x$EN+@;L{dH|LFkF&rb1AO_=9MX6%% z|K6avH2XC&tM;P055-zIh$o4b9sRNm2ovCszrCb>`Mejty^zT3tOYh4wYXV2f1ClL z7U|{(07D)`us9Klbg-}u2yqnaEf6Dum#_4paHAE8;k$|0YLy2LTCVL@CM_q&kM@{ literal 1025 zcmV+c1pfN~0003AFaQ7nL7U(jyakisNeP4kZVel0(QEhv1Iy=6HUNMER|A&XLBibP z4y63P3`GWmgTYuX3Jf3sJ!WW0JE|ve2nuj1Th~@DLdiPs`+x|v9GdqA6h4vumjCww z*8l+p0TPe_ko@_&oiFkKxBv`53nDfB%SA@{33J*_9|wd$$Q*D;rR~j#mcY&=U#QO@ z0D#BT$dD@Sscm7YNC5~rXAEgmWz%>`0<}MQ7$Y1!m@4X^ohfXHOEF9E0Kmr*8k~k0FBd%NXcSJ~ zAb>bD&j1$wJP(G$XcdRaUI78ck~m4Rx2TWH7(W>__*_yj2^B1!JOpY@DvH}^AOH|V zJb1Y22uBtVzSjW2nV>MhGPblMCUF2L1BU=aPYUPYO@N>SIfg(3WU;@-L%JX$dNMyl zl}f<1OkfyopWk34fU-D80Al`8h|3Iud_b^u_6)6n0DvUG3VZ}^Nn{$hLw$VT)CQk^ zr6myXFh@Fp^v(E;Ha&)5ZK#qXU0$zvS- zJS(4pF$pjUfGCOz80V5<{gw4;6rbqgs{n_t_JT0h@|o+bpuaE?HL z8;wyGwTrL+dV-|W=t^f-?yLvZXyPEQDp+;vvoL`^3bk_zkmo;Z%;4Jt6@R$yGlBdE z1)znLKLfx9+!#z!4hRjV5>+vP4WR@@DVBKzgm6Xz1}82FKeQqHfB_l^y<#MeyX_eL zt5S*1<$s{+yAjAe;1xZIoU%V*H~;O;U7-^o9f8uUpMO;UI6uO0spU)zF5L2V=kj*s vow@iMAOHXXK>%(h_y(^4crX9}0YLyciM|1=z#EJJ00BV&6+&--YVZc**>9|F diff --git a/samples/h264SampleFrames/frame-0693.h264 b/samples/h264SampleFrames/frame-0693.h264 index ab4a4991390208b1933f242176e7874f66de0c31..fc9d4557d00b20ab243d18011b334e8b3bba7a29 100644 GIT binary patch literal 1292 zcmV+n1@rm<0003AFaQ7nL7E^Myakbe@Q4V3K~4Y;95MhPBs2Uz4wD|)**E|bB$(4W zkd@9)Kn4mklw?P_ST?Kt)_6tpCyoGc1|dIyiO123%X`cU8TD1<-OJ#i2w+h_K7002M?04Oqo3>i)C`UmpKq~k^f5x@Yu_J@p_%lm+k01yK_AOHvg1c&UJUvbcy z9|H>GMlzXVs5mF`bl++K0RbQ`I=}+Q`b^vb!FUEO|8fTo5C?LR)xaJAc{D0;VdwyX z)&h#{Cu#ua;Cvu}Ja60q0K&ntMvif`n=wh49Rr8|04aa~fY=}feJ551P60e)G@AMX z4B<6krj7ApFDbAS-UI`R*uVflM1p`QRLK5>lQ0>+w_p=b;+h_ndFog^56yIKZt%<7d0~IG(={DdnrSCEmAOKt-6lX}TP;h&} zgt{2I0E%HjY@(D#HxOtW0T3nxA)f#Q00{pJiCYZPv;zFWew?A2_yYi>AfQOPYOC+2 zn*R?A!f*n$lA?3~z183V695GUuIVwM(mptR4u8IQ2q+RzVw|I_ypUs5iDSPqEC8O+ z0roG@8q{p7{^4K%hyVfs-T((xfYc)jZvX?o+yEE=bNCNj5sNPd%k{|8Ke%2IzyLt4 z?vxe)0tH|Io#2!hd;kD|r~v`A;OPV3m!}rod35)H0AOHjN=xV&a55NSB$^6-(S}7q zTmV2H){BA$TIk4WEpEN#`(h~_L~bCIHHZiCkQfyJK!IcfMP($VWcKjDoL}Id#Xt}O z3V;Br?FxqSy`06>-Jlo>Ah45OZEWZJl3joQh5-YCDie7lJOm{@GCls_00aO)4iH)) zB)eLiG%kuIFlgZXVH8ptqs&PIP+4>#)EI&yjDRd?Qx!&kD78Jx56}Pz1u(!?OSJbq z1H!Rw-~iFc4jdp6%STrVfDLAV_1qj7ztu*O1lHa%H&ox6`j{|xnjqXA97n|;9mO2RN`NJ4UqSx> z1{^GRBTA0_Cx~cJgy0N6zX-qpKp+kaG7R)cUHO`o+hD_hLyrpQ^YA8@@Dc!7z)S&z zP*Z>f`m#`e1;=&(ljvwoSGNU-%>UU0Bn+Sj2V(?{LLeT8*+2?xI72n10n!Tp*sXKT zPHzFaRBjj!t_r&Zxv&lyu^0b8{$I0+#29=D^pO)Vbap%ae}DzV!Old1(a0ZtwGGhT z2tNvQvUNN+>%sTR=BxAqq%cdnL7NKkO@H+8u6_i<_z7S#vZ2UO@U#P^03ZF#h6?|K0#EAtfpLMj-e4-p#Sdx*xx)cvrxhr^pZiUCE=2nUVTH1NHUd ziXi+LSS_sS=zbmIUlLG|lfwvMz7^{%BM@AJf`utT3k&(!Z2%`Q2L@c7-UJf(Cr7&8 zHfK2O|Na3CwC~@JX~@MEDhTLP-}V&{C`gO|K5bes9U0Gl&=WNx1?W1&__O`0MTb8^ z-Fwqml4dbKU}3}10003&0B$CT2Co2kFaQ7nK>#_4q5-SG8;k$|0YLy2LTG?$@CM@y C+#gv0 literal 1133 zcmV-z1d{sz0003AFaQ7nL7D&>yakiQfp}0-00;;eCNny;$q)|y5ctLr~b^vX806}$AH-LZuKo0#~fCK^bxaRC151>ew&IJINFosMB z26+Mi3>kn|xMwspF9yBzy&M1vO9uQMpm*(U{-^=VfB+B(0CK>!eNqJu6c%V+b9sr% zBJh_57gwGn?*ITG1;dO4QXbfrh zC@3qP^N}$giP7un2>%G&!V+aBw4tc5Ej3-ivf$w z9DzvFsz~+G>i7f*bwI)dg_Uf8nYWR^bvz8GpClMhfX)QtMGz`#BcT-b<7e3g&&}J3@dH=Ws90C&Hp$Qq{+6SaUEM4HnIM7Nw81WO7EBG#Z-~b2+gQ>u| zjkSEJn50fTj)OO&0>j)E7sNzRy-_600Au4Y08jvBEKs5GMkc~7)`dlA8_!3qmS5a& z002NFJr)Crh@@QiwpYo2yg(RG01yaM2Lq=^;BWjSD!DG zLVx~$@F{-IClF!qCA5%}sp#w@{diyj#K83?fz`?%eYD=74ZICM3VL!S=Z)LJ`1x~J z|9}=l2D!8uu%wD>|EGm>@Fo|)O97U2Iw)XL0ip!~T$VsuNg4)`;c-U9?!il<0fVE5 zue;xv+5hl-(%5#6(HZxQTiKoX`Qco@nPLTs3VkOYfB>tM3vZ!1SsVfvfA{<}I6%`} z(=!g4VNd_s08WUpp5`F$e=Y3W9E+j*`lp3_395X7041(X8H=hfybl0ArFoQ53V1BZ zcad_({r{PKNkT$T3?YR1lq&>g4saTP!b(tMMBh6NhyX<}1A$pDcYy>ifjSoJd9yZm z^mt&D;{C4c%`}Ec`A|YBkAK)yK%pWq0J)r{3@o^Ue*l@NgeAzowt>g{RF)2Y$Lagf z%(hfCjGscrX9}0YLyciJ$?iz#EJJ00BV&6+&nLYVZc*%D3GZ diff --git a/samples/h264SampleFrames/frame-0694.h264 b/samples/h264SampleFrames/frame-0694.h264 index bd9c19450a8693f68d253ebb886a04609e9ae785..b7d2d2c14b6e7eb9426aaeded2c5104f2fb937d6 100644 GIT binary patch delta 1134 zcmV-!1d;p13F`@e000012`~Tv0YRET8oUKJL1Nd`^ydHiaH04Bu#5oU3k@Mmhy;Te z-ZUPsKobtp)&-30h{5>AdzL>C=EwhALZSw#-~fOCzyuW*(E%74%0Q^`lJkC~00IM- zKm<_SQ$wnEP1CzH0L|~f0R$%MNMh5>YEnZ#5M>aDEb~%-K;)NQFAboCfNoHX<}4^E z(?<3RfDTRTfGLE36hdbntCGCVXYv>XVN01vOKzrEQ~$#(7ytqQAOIj700IG^Fqy!B zazGX0+Fx172!rIr905p}(bK1Qp1W*zmEG3*UlkQIEM?t4u2chn57OL|bDaJmO3nZZ zi<_aSG5`C2NHrKG+)Aji#+}eKG9Ww%3`+w@B)=-|OPCP<+`tQg_SU6g@LERNng9U+ zN4Nr-x)o~wZX*N;oZ1qrjUrT+|A2+m=`T~H$A)uzTkUK>U;q&?1_&znMOfzcK;VxI zagRr7D+)0Av)}&YfCc~xoQoj9A*70*|Mrjo2mphB1#Z`oz&c9s7ZY#&zyi$xLH5oU z5fdjQnaW-M@Ddo{YW^1MvqP`%jBo%10CMC%u5P^^QTv8K1Spzi1Qc4Sh`RrRVX-gqLuzQ1lNm8l*|M_45$jEyXoy_DbgZhvr*nt2% z1@@Z&)!Z;9JWnt)VH6y?co7ibcX0wpE6H$eKi~jDP*n<@zgZ@o7Ce96%xm3k>t*85 z00B$eZRNg&+d&s~u)3`MdxD0FssfNwWk-U&d9a52H-_Z2SPP= zJK=|b17>1e>>;bp5UuP{4X(4k(y4J z66VrjsK4wjVmk6Ehj_1rriobb;EP>5il36NueA~AqhHitlk zl$)`bf3F1(P(%;OygcyCJpcd!K>%(hkdq<=j}xQ;tH2wK0003&02M-M0BZ0C;{@FF Am;e9( delta 1095 zcmV-N1i1U_3B(D1000012`~Tv0YRD|8oUKpL1LuF{vYu8_y8ud6A1DrTu9P?`NZE;01=n~KyAqIEQxJJ zA_KbC00IDTtN;uJ0_CoS*gw76U(4)Bj0GG7*vJ4T0&;}VO<=JZzQ>w=HPzp|V*rN@ zY$ELrC2wy5P;T&k01QM2fLp`RV?vW^-~!k{9qI#(1QhsnE1Vr^KE+PB*!J75!e}BFJWnw6*`(K!I{_P+D5C8^5 zCW31^*IazK(EsV-;R@!CCh*AzY|9A11H@z+XD4%iISO9@$OO~Vg-a~vo>|=Ma71)%lkfq>T$M6X)}Ntzi*BPKB5Qk>(@_JN1QXEVC#Z$8Ha34Kpf!4EgHHr&{n z@Bm26L}fU-f)LiDgCGtNk08MasU(Kl{?=eX#IraTK4tR(Z})K6I>k5uqiO6H5!t}p zEgKYn`U(=J7D>PRpfDJEJeKl^_1i|>|Ii@71Pm0(MiU3#n!H@Q{l)|UEB90bnpZGX zbkj%Q_qUCJ0RYM%z}q%6V!fg8GTRJAfRi8iJMaLo9R^yk+7-ocoO}QeWUL100ytW! zKKEQGo0zpUtxUlZ8FM|<4Lkt2y zpm^a=n*x=0|&$w(HxkOWqrS!KHVyqG^kg`>6S|*Z>j0mURMc z!tE6bH;;e<0D)Rj0%U4^6RIQ<{Fq{i;S9zF5M&j7n?c)L2k=0I6ad>gR1L-Z5Rk2Z zH-!U8ggsyY^aNdbfMJXFedPTVh@H?h%t=APLM13_vaw&?lqe;o*DQmL@;Oq zYU3OM5sU<;Z2`0hSzxTeFAoAv`hp|wo5Rlx!_WW#0YLz6CWw!s(Xn<<)2IGEz)=mHb diff --git a/samples/h264SampleFrames/frame-0695.h264 b/samples/h264SampleFrames/frame-0695.h264 index 22b979ac4009ca836bd5caff0a0eb12f3ef108ae..d5d8183acaf48e03c53be6083bca23fa04960e53 100644 GIT binary patch literal 1171 zcmV;E1Z?{N0003AFaQ7nL7HG1yahKwV^`FaOT>aPUH}=l{I8z?06-)K4Zz0S6$vZZ zX?v7$3cvwO00aUedH@0dp<_l65S6;#3?hv*adK~QmyQndieCgU-0T#gn(!ukej+DK zCy$@$U?Kh~=;t1H5K+JhfX)UWRXWZWB9htrfB>KlbI%~9mI+ys825(vQ2*IbzywAk zKJowpC4qs>9t&{zk-=N;Fbv25L%8=~jl0S`fUlrX_}l(`g$_P`8~qPt}n-?{(?Y`_Ev6>AEDCT|m903Z>r zfH(q1GmqqsY|#zai60dd`(RBZ~KwunYU|ez>>AKS+*Q7xRjv$U-Ss9ovI6oI_`*;}(JoG~z$}9{>O#5CjsI z^k^e*$aN}+x0b)mlokhN?)`W?0*IUl9i;k|f+b-50MSlx$AQ=SP%kIWSO#N(y3gCj=Vzvc3^!#un;02r)Mz!D$p z*)M2-cKw>XzC~JcCil43o`Z4S{1CnS9pWyr^W1bipqT9EBfCv|W zPvE>ruiGr5@IbdBB^_O4oA>s||NT?Nz?xqYWUhpT02ueyzsm*YMn-qzpAg!>n(Oz> z_&gg?YsvruF~W`_73C;EEDreY`rh`B1RXyDKNAh{?=jdXTB?F2OlfQ5-aQ+tXFM+t zzyJUNK>%(hm#pDa*l}NQ z8~gXtAu_9CYG3WZ;~Sk5R9E+WtRhgvS@3MAY1Oya0+`U7oy*Tf|NsC0|NsC0 z|NsC0|NsC0{{`jzc~>A`&D((8>)23%6d-1P0~=zN36Zz^D$oE30C*jXd3w+O>Lepp l5+M=zFyIXa0003&06B@K0jt0pi~s-uK>!s(X@F|*2IH(s`!fIl literal 1033 zcmV+k1ory?0003AFaQ7nL7G4syaiW5V$N(UfW1*mzsy7X-0)qi1#^{D6vYvJ%YiD2nL zAAl4(!g+950{~;c)r1Hh004kF!|(tI02E9?SLG_h@imcZzz_(}I5Eb)n%}+;z@PvS zY7M>!n%KBPx8y<-EGSokE?7-7UEu&R0Ylt(aaWGHB?<3<6Sd{a8Y0L50$888I068` z3~UE7%`b(((U?7M09f#lKsK(}7PW=|t{pO^Kqd7hA%9>%K;SM3ML-b7D3Pe}g9OGu z?}E2n02p?FPJEjFAOjr&gRr2`BD0$S1p)xhi?s#?ztz4opwEiue^!xd{2~|t1Onrn z4mwZar2_69J`sQ$1}8y^oE?dSwc1|-&?A8$!IU5=-~ogersZkOv2$Jap2gHRv8GFj zFjrFXoIJe>00IQS03c1dTmUc#21Pso5D+@1FHr#wrx9rw3C}V#ga`?Zb}@vSH=aL# zPy!SH4!kT3SO6^!t15lq!f1wsl0`sRc`n^Qrvujj0syY?0Ogdx2Q9!-G~&Jgunz)r zH1n7eElT_M0e}?@0t}DoZDtsX7RdkZ3UO=)(Fk`c7quQ>7y>9L-E~FIz_DQ&`~$cV zha5lv{D40-LuyA200F%KFbo2XYUGczu|nhffCvN((1+V7k99pOA%FfQ0M?!t&*$Jx zfS?0Nu%`eIMrey*8-!!u^#BCI+1+ycp^!SY$wAFLIFA z1x1RFt_1lQ_6h*x7y_sGKMa75Q3QRr*US6>G^4;Luzn<0?Uqq^AWBT!;$*%{mM8I^ zE(Fr}lU2}=pagpPKks2KjEK(sbK(x*F!_ACP;qNKFaRG0@x(&Br3eLs*N*GJ^qoN9 z={x~|$GKs@{_@CNKw$F{rU>_kyn16)&UjuQfB*miK>%(hkOr>>@Dl)K2nB&~NCAhX zJPm(_`Y40IHc7PuewqQb-QD&g)$kj?{(%XRRk1Zc=L3vxbWKrT-SV)BLlI}evZ1F| z-&_h~LT-043w=PqnA!pnwHrfE74Q86uvP>vPU^&%aiK>LEA1QJ|NH=0?q0YLyciKGFmz#EJJ00BV&6+&qMYVZc* DpJ~2w diff --git a/samples/h264SampleFrames/frame-0696.h264 b/samples/h264SampleFrames/frame-0696.h264 index 9e6071baeba74c7e22de12e6eacbcf6bb06af208..aa23e5bc3b2120f68a606cfc86a72fb3361c30fa 100644 GIT binary patch literal 1829 zcmZ{kdpy(s9>+i5ZDyNct}P=&omTzI=!6xsVOfzQzfwxs+)_!aI7e>#ZX`rPe^yv!+Lc}mQ3&W zy+6kka)Mnb*vO%xHO{0M?w7V)9o=EA^?~~UxFTr{u=ByCpoJpD4a(g(G1QKM$8%Y224LVnqfwac#XoiOCO7h{xYwiVT==w+ zPI@muK+sn=P+>rKM=HbL8mEZ+Kbs3V0wOoCb82a|K4<5mGLD?&X7$WqU{#C>{l)ui z;UKzv@9ZhLy8Gp$R6u|LwTZW!EIE)b&9aoLsNQy1UU$2X&xrs8`?>-r<3q^<*3)if z7hyc){Mrl*G!0)a1Y;fq={#41(flOPPg>+?zPwm2fKO9 z6tA6{wld64-y=WQ?z#ucHs;$yi@KT~SicdlV_7cS;OyGSPj;k9I9nz}K!`2cKy4i*B8psM8#W@wpBZF!tUTYT)~_XMV5-?E9kKWSt(#56c!P7ri@qe_sY3k`;dE z0Pq7DdRe=PU~wxy1#<(NnrxFiv|M(19fCob(mzYKY4hjvf1>8vAaI!*wK zlmPF2cr|V-CF_KjVt!q`i<`U7_?`3`&PI40X*YKL{-}B$dIA!^=LXWBnY13~^U%Pp zIjk_dS$-RR(tqj5F+%bJt zS9G=ituEx-Mu98jYA*ZJo%NH~FN$&n`+-IocpfZ{tneCC9?Jw6@Ip$3n!*c)JT^ar z+6IY41G#FlO3>gMbF;g9l0L<>xCqy6kOF_@StnsY!y{9(rE4!Ti+5+8IPX3i{;{cX zQX8janXh4Yx5KsYp`ZTa%h6?wgp^M5w8a{lnqQD`=)ZX@DMKaRhf~$m`y)<9$%_(# z1frNodzj29(VfUOQx~%0oW-q-pVo|FL%q461J7L8i5f-OWIVcjK3UQmn3QJ4q#Gny z-fb(Mm+u(rMyRvi>ze!a`sA$E0W%x>G|#T@a)bpX^n@sEBb*rMOmx2k8drzi8IJJw zTKLm*E!HB*_w_)#L<<~2%A)^@>iCyv^BYK;6>9J3s^&9*pHjxL$ zU`X)l<%T=O@1}=cJ`yzai7p3H(~dc8E--{ksDikudR+agG+*)mTp7_3_?Tws= zR6h(U6=8ddzaA=4J9^cK#=gJ?-SOlaPP!T0X2vUm&o+tMx~Z3Tb!z?;xBb@MvZ1LJ z{XNzXV(m_<&trp#z~f2f-NNwh#-RmtiR?As7IB&nG0-=(;M1;gKJd|kVotz60e?I} zEa5YZaO0QvHhWEE%~*&tNcBn1xCrNrO#1T|7@il)ABIHO;K7|~(=uQ7K-O=mzuGoS zjJ7ea%an}oJht(BY9p_T%~i>*t(-epumS|tqeo*}^+uMW^DHpr|H>T%{Y``}Q!3X2 ze%hL_27k+R*Jk8R+!h@ctS?eh(u;;63Q&Uf=?GP9epDq9l4hl!^imZcMtp)19MuY; zJ%F07Gf9W~SeHztua4978bCo%jPGO!%b+4GJa{1|5m0qg)tqxbmhMsyd5Kf}kCFcV zj~gaf?eD6|t5rX{`%ak0AP~C<#^jaRq3wNA!VG);@kWgZbV!s_0J91bUC!Vd83Gkk zdSz?rj|MpF+X4#7@W9@o0bi}cvvw))RVtheRA8J}5Pk@Ic;?-2z$IDhp-i+=z;6q6GF3OaUYz!@3((|-Wp C7fm4m literal 1482 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 F2ICByFg5@H literal 1123 zcmV-p1f2T-0003AFaQ7nL7Jc%yakiQfp}0-00;;eE-^Z^N)Qb7(Jh}L@B;+{M%~le z`*1-!AyY@-0asym78JBOZomz{AP6q1X7CUI2m#;gumFHQmmJ-L;rs~_`M{tP1`x@C z0M8&m0D+hU`;K#CV(@F{OOb#DC4+tr)H(LH|5O0wxBvkFfC82Uu7yYxJWyGodClV! zltiKK3NF69N&Wx;KoLWX1XGo(;9Yo%2_R0I_GSR05%`1pMC|$%N0D!U01yNL0iqjl zOy#gp>5$#Rj`4t?00;oOA0P-e00IHNUQ;j$JOSV+98+XMPMR_b?g^xm_$!Y+9UKlOjPvNSe0MdBWg5F&sO(})%lxJ_k3 zeINXMmxICw5YwW<8`Gv@dtbO$Mwh`TkoZg)0x^T;rt|9A{h6ji5+nuzE{MY(kcfB+B$ zI1C|lQw2}9Exa0qfF6JD0S5ufcvy^t@ohu0F%~}XV;pED9t?bm$`!m9Kkxtq1VPl` zT*lhIP)t%K9!Ei=g95|c78lG!Qo&Iq%m8C?j12(oWuZgDj7@}_t``8s19|B6lFR## z002NF7YhNz#8EDL+bd$X{vZq}00;vqgF(}y@HasT3dsMo0096$zzhJu5N}4M=)|qf zkM2YR96$i!A`hJl9s_#t6~GC)0003&0B$Cz2CoHzd{2q-JPC#T1ppjy698!x6yOkH zp=W3SY5LR}ko_UDAYPkctBX1)wZYiY0ceN=U5;Qg?Fr9=!iRH4^{p%3vK1i>puzqC zR)7G2_MQL}RRib(UV>=4`@iU1CM0|etZ%)2By7BP{n|Lf<4bcC>wpp$EKhg|EJ zwoy_eOy;s60~0gMSR!s(YJh6+2IJtN*_HqR diff --git a/samples/h264SampleFrames/frame-0699.h264 b/samples/h264SampleFrames/frame-0699.h264 index b76eff7c34e22da19ad46bc638232e2b3651fb45..19467b69949f77ba673837685ed5331df2e4057e 100644 GIT binary patch literal 1687 zcmV;I259*J0003AFaQ7nL7Lziyaj^93oz&aAu5R*%uChpWPg!^8k$T1vC5{0=l@IU zBFfmqU<1bpTW!+6`}~5pUv4A)b%YWgwfAFof!>pwMECx1V4`ndUw^(Ko5%ZrAOMen zd9wF|f)eo0|8f8@Q!cE+8YXFKGK4Ey2DD&BWYW$j!cJ@e06+!7lbKOfHxK`B27r28S5I3QLW&KO4K>~$w{TLwl1OSGR4=}^1T)xEGI{(~Y09*p@tspF@fHHMl@`CU}5)cId*gqNOK~P%+ zo_xTrOdO`&cmXZ02EkQRSpTgCMZ=J$c;pTI_q>4H^8%hoyepixH4pz~JIVj*aj4eF z$j$iu954GZNx&#=?J*z6WCbDwT26vH-~Y0zM<{V57NaM~O8^=bEn3psUJL?VY0S1y z!DzK#Y2!d5v2R;AS4{q~3q2!`hkRgZNZU;9LW3;|})1_|ktJ-7Gw zguDmotp|LNtV#*pa5I5PT7|krvBeU?`~PSzEGsGeQ6-p%|9C^RfeL(^{aDivkz0ZQ ziWosJnhFUKcDL5I`@jGY4RiqjMN|)AI@BZVgx z3wd;b0vn(02kHic)gQ?v1o5SZ<$wZ2#8g35zT~NX59%NjA{ZC|Xac`cun?8Q0%O6* z8-$GwMab1t51=R?%i(~*h$!|jUuXauYeDn7^-I^(^4mdKX71eu@^(Kse+K4eZ;m6JX?Q>L)E+zH7pWg5Je8vcda77=`HXtyOj>nuY zNDfqvihq6f!FEo?<88L7FkuU_b;20Hh9iaWl1(*yKMjwDoiXlEwlVn}* z`cXpy0sxn}s!7TH_`|!#L#nR!iw&9n55lNf z^Z?5S`ib~pIpJ6naiIX90~4$7eB*!z8GrylZ~#<$#GnU|00aU6IVAvJrUXqK4nqMC z|NT%V)%O|`xB2sJKsUa4S7J_~5VhgLD&v6y{QcMyFkvYgn}6*i;BX1AS8Rge){A~4 zzx8bplr7GehE4&3AKviu!tf@l$PfT~ZbzB{93iU(UhTrK-}a-sep`q*f@Iek#TA$E z3-$+R0N26m+(T%CDgjmoPKCYl6CCQaW;-YVd4Fc>EMmX^{ImpPF&QRKuK)V)zT0o! h3;`;@0003&06B@S0jt0pi~s-uK>!s(Yk+F-2IEI+^L79L literal 1577 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 literal 1043 zcmV+u1nm0&0003AFaQ7nL7LziyakV8NX1@X!XcgnG5o4L02(lBJTRW9>1Oic_I?-u z5D)-@76_252v4Y@2k?C00cIl}CR2M%(yn+2DIy$8r%$Rt=ZlE#V!{At1Op%df>q9f zL$BO_36=nY0Fz-lp^2>GtS(a?c+}$EwBJqv0C!+Z2zHP$fi+G307$ilN%Uv{fDC?x zh-i`E00;(-Cjb^%yM_qNS%Xov$&$bX0UWUgh!FbhBYY3w6aWDLK$M*-4~XV=Z)Zao z25Jc9!53s34zBQk1TZ)$=eQaoAoQ#|$^bE2$*43VzyK2@Ki0v(5CMP$J^_xqOzDss zJp-};0gJ*xfNeR$l03Z+ z;2l6C1u&2utQf|aNUS7t0096OpaB3l1s>ViZ=#omkN1EC0RdbVNz({p?SITl$v_iy z0003&0B$C@2CoCz_!FK2a1JIJfD>w7NdM##N4ZFE{m#Hn0mNB0E+CKbdawnwPnTPs z_W`ju%lP7d$>ALQ38)0%96(F~oN!VAT5{&C{NMp*PnT}HQ~k|}kqt?sD!cb-?zYEz zi{bbXSR+jZPLwWS1_z0MIO!J-ixXY`L36%uO3{D1uZ{ovzr2wmfef-V%QzSI>4CuB zC0k~_{`-P~H5pfPxrh6}`?d6c;B+a!DcV_8D>3lc0N;{i?^D9CCZiw|0Cflifp>xu zmj;a@YrtR)FmeD2;ky+7@E|N5fTetbxGa8_;gx}x$0wBw;1T7M;r{H)J zBuw8LqyM}706#Ah%;jSr_pt=@nhWpvhwt-1F;_DzW%XaT-!3-1@jNR6Yw`peffkW| zYziLxaF74b|A_1Z0T0yq{qjeO1w7vJm6#?f-Vz#r!s(Yk+F-2IHZ+yEy;= diff --git a/samples/h264SampleFrames/frame-0701.h264 b/samples/h264SampleFrames/frame-0701.h264 index 504889fff68f58ada12e80304366a0195ec450e5..85e0127c0c945e3ba99032f924922a5ae892f9da 100644 GIT binary patch literal 6895 zcmeI0cTf{++r~E}frJ(!#Q+Kh(Ll=4@whhVnQ#{1wlmVf{h|7 zg0ujl0>S}QK!F5NKxsjNAPL#e^7@{0X5ROkInMdxoB7T?&+PuO^X&7RYp?6xXBPkf z2vP+2a&$LtmVE^wNX)>?5D0z%fC4;U53Vwru7t1GJ-Q93Urw%ZQM?r(*xE|~4o^P) zduzZU;OECi7y+P~G<5rqvTD0SM?el>2-&%^LDhE?K0D>?p`;wrMHPT|o3X2Ys9^MM z%wsLf3#nA$<7=a|YhZH1igdVEpQ?bc;!>1(wZx2J!vlPow&H8PVz>+*EPfcFo$-Rb zXY=OvjcXmPN2FEM>~A;zHsCOC(WU`bl3fIDL?ziR(NS0MFgRqtU`meb*coC8h0m)* zpFe&6@^dke{$!{Kas)t1rdk$O5Z`VsYnOQ}iu*19Xb&rt3UB#H>k&Sx6kn!_Mot($ zkr*A8eU6CVOLA=4Ck=k^e;}`99>Cs%GaK{{J!T^~b@~z0OozKeoT aZHI|L{OZ! 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 D*3w^| diff --git a/samples/h264SampleFrames/frame-0702.h264 b/samples/h264SampleFrames/frame-0702.h264 index 14608e089562f3a0453fe9c601ca68d7888eb6fc..d25c3724bac6c13b7450438bf6b0efb5e86d0728 100644 GIT binary patch literal 3080 zcmb_e>pRm81OCk%hO{|VBC}FYPN7IC=W^(Pl1MpKUQtYmEo{H7gLHO9=}DnSEF~kd zAvPq+sd6mzTcJH@wqZ6q{obDE%li+!U+(+5uj{_Q-1nCo004xh-EZ)CXtw%|+Df|~ zATx(}he5ld7Nso`7%zQykye1pJe_Bas)rhNrqsQ}BP@Q9P58NmTj!-%a54G0u$6Hs zoQzdsIEm&dmNUwr?XYCqWB*ndwg{Tc(@>9N>MT0ssXaoi_DS$tLcESu33|qd4KkV& z-#WiWC=2u=!+U2$WIfA`)gauAzr5{UhN{(7FtL?2l&~Tyfxw9zMP4ywJrRzH>~?gf zu!@{Sv$UPDRHQGjEWd{GwQ^6BiXk`S!3w43dE)Sg7k#=3Eo;Ika6s)1yQ*hs7m{Sd zcoPB9#CkVGR#UX?TRvwJEY}dv1(6VM($bg}D)>*bw%XU6Gm}(%{UfCS=2}I394lvb zkl2G=R353{bBrOz^{FV+@019^D1(2!lz|8))`PGf!PgM_WvhFW#dKNq@I?Z9@U zr~pXd>UMf7ThxAa$OIbQ0s!u2Y7XZs5oVNT8RpQvw9LZdw%7+iFRPqa^xKV*qk3;q zO}-PKP_hBsUj3z~j_c>7CG8NC%?8{xdulXQ&#?4?Ks+pR5agEPI$t#BWykol1V`Aq z^%68(V5o>hy}=7%fGgZB zIgy&zJH=NW%LR5cisb3^Gu7!zme#~Ruf^*84gb*%X_jf;$=sj=WY!CzWDh?aHghSp>6)jbP_-P16 z3Z5RuRdBYR(w*5K0>KZhdWsa^*D3(3#`-03N=T~Yhr34F$5O+)p6~l=a~Plt_}2o_ zM}~yw=lZQr7!q!*VhC@&8Q7+By2)D1}plTpnm1NFlWH1Y{YMb^$1%a>F_r-d;a!wWGuC| z`xC?sIa7oP=hMf>(jmT7ZZ!{9K(5GTU>X;mS=$)*H+e9bNP1B|%xc~=id=Fh#v>^R z_iJfU?@CH`W*nNDS0e&ljQ(L8V&FzA0z&@}YUR@ymkSLues$*EG*SOj8f8Ivw#WB< z;e_hCfOD5N4P8ZVhsroXiv>9)hGAdP^RKa3sZ6paLP1qRnSmJ=bGBdVAVjOn}vwnkz-4_5rx#6>sKYcwEjUNE)tkVZeh&WV*2)3hZ@>~%=AjVsIi zIYpEN41GRsCBHxSl16gL*eR?|pP8Jw8RJw;=XFkz%^!1#>x^Z|Mn|50N{JsTUp}|e zu=owj{7$74@9j}G)E`y=v+fubi|T_&V_wIMfG9izf)}$+KT_{jQCRr1pylL}HRH*C z70P?DkU1aUBb&yW5?3Bw?LRxM6CT8uLzzx-8Onk@p;^fAr|cxe7;mVz;kkfzODt5r z;2_M(Iy`gz{a+f()vZT1`Q~E$O`q|~8k)Kt^Utrgl%PGMRC58g@7VBEtMfaIruB__ z0H9cW9@Rku?f`dGojY$RI?LH*vpMzb$&%9XYkR7k!9 z2xK;ZInec+E0?$Dd_YZNUw+P?omOwoMj)CX5FU2112B#NLUlj_pjJ^LTpUCHCL=w< zG_vm3#bP4vdTd>z_mC%3{;$%{GLnUYqc14MRU{cZXfKpF!x`J9xrAG64zgi{UPuW3 z9$?HLR~)W&cs%wQ-pzOVabFP)%VB1d@}C;*t~a5F_l2P^sJDzPmAerelmBl^hM2z5aRisNA=$EiF z>0T`z**j+nj`Hx(kfcN9dHrpdd1+FpE~vug3bcS^Wxw(Kqevh;*gd8b9v6-la9niA z^!Udho_gZwfxEBnh5x+IM8o|J!4^-3l&PaMo^o43asXh&NF}$GL@){0uhhh}UQom| z=Z)=!CyWy%ngor`cKA-an*?kgbRCHOdEshBv@BG$FFo~cA)Gk$aJ6JvF98qB)R$y4 z5W*gMgYnqv9p!j%fdn(fgpiE|?b>Y{mVf3KNV+ye4=VaKO={kn09vYk7TLIPL|U&9 z*pzicZ!aF?@<&zGErC7~qAFY_rtUtC>aV_!a-;)FP$EzN8Uos*VY)yqosO0yAk|II z79pXEN>RUEI0?pc3xyJl+gF$FDOc-wE0%bkc`|JVQh3BKR4jMuxd-(YE{;0CmbS81 zvKiBrzarpCn3F}Qta#a}4-Y#eoY7%SSj)aB&Wrr0W|vR$o_v5tA}%%LaG^@PbYSM= z$lc-{zatl|4ePtcbf#228P(F;bhq| z{)`*TT@gI^2hVnI|0rY9xR%fi)Q!@)ibY=rWWgU4pd-VZzv(N|K4KeEMIVic{GR+~ zHs-45jZ!WuARivOf)OoK5;C!BmOgFFT!;C2#ff16WpKzFSmo*|hLl!6Thye?HEN&`RxvBc4u_S)n`0@s zj(>h1khmdBoetc@_OkO4b{hKn6qIbRv`-qz4gjcCRnZ%P$PEDzZ8soJ>ha-J1qwWy z5^L@`q7-afn{tJ%mV~2ev4Puxz}g;7=l$0YFegkqFlUom0Ig8AzSjU}htJ9PRU*?5 z1J(IwG9dCVor`V*Q%l|Gk65rq&_q^kQJO_WJu9lZ6nHE1z_p~`FC&n4FJcwSHuVLq zy1OF7pjypim#z&z$4HUgL2(7PKB7dB(NtgeV_VqRUVt3=_F9jwfu1qL#zwIDPlUli zI6@`DLhsKm?JSi31Rgc4?W1%0RH8m21f{C`z7m#WbW}MSJRphcZPD>?r&6}rz8ZCl zYu{Ty)Yn!V^DQcJIR_YMo=%@1sPQx^x0HwiSGVl1^|_cE6v08AD^%GPFAE6Uc+8jS zsn@jn!f|^X!JB%TKsQ2Z6w>=K3UB^tvg~z6Y0u;vD;e zTel_@;Lx*8x-Kg{1HI|{qX?IR;=HjdZ5gHReZMSjkpY$J>-${Is};`=j@_=?E4|<7 z*{zY$-1QNb?=+nA)5V#0U8{^{KN9Z7Sg|cDPJ8DBayh{MI2@B(Tko!N*I?Juc9!t0 v#$w2WF5SVFTw3ymo5LTXQl`L8haJVl8YsE_{_3K&0G literal 1178 zcmV;L1ZDdG0003AFaQ7nL7N~NyajI*6dx!a8=xu-sd(ruc*+Jg70L*zfg{xXK)$^L z3t{sQF9=Uv@sPPll|J)9^ z00<}ulzII0C16y@LDQ2$V;NqX!sk#AY=sy2^77#!4lXR#EJTh z@&E`7CQ*wZRm)Pk!*j|{fenmB2GoET0hNSQF+9n@11JC*yO=yp#4(dzxBf5y1Q4j7^vgwP?0nwvbyZ~*uaGL_#!F+=R;C~$0Z01yCnMK}%d z=(oRkT7d$EuTzaEjgn5cPY^d52$3rcJ1NkCHoh1&U^UR2A_>}=j11^RPZ(GLRHu~D zP6g+!r(PpK03cWlP*=~7fR@&>0iX&%2tmm>a|)R2o5Zf!cLCAM1EMg=-H>j z;*o$zsbulsBT{KpR@*@U0D>W7#z#nkNU(kOxC{xJ0}KOeYeF(-KLr4A;!p(L0003& z0B$D82Co2&AJ4#>0Wb#>cmd_}>krwkU%*fRgRy8>P{#lP`9>G1??iw90lGX>P^nJ} zf9lOge$gg>x~W(LT|*ph`(U;JfIb*$(F6BB6h*d8i^HT29R#|0X)$_+Uz-vd>L+X44QxJDt(5o@AAITQHaml z4rYh{;ozUCA|xc4krM_S3C|Q!0z3kuoMoZpT@F|P6ZX?n6yK?!0eOW~t+U_w`#&=L sLM&IO!jgku|I5Yjcm<{a00BV&If=3XtH2wK0003&02M-PfNJmt84;~CLV#_|T%WF3;TtRj7ZaSODR*0Ye0|!A1kOfvUsYZjWjO;`+uUveD zzQB+G5D67R4h%K36xNFDxj(=Q42~lG&BQfJM`{280Ki&hfEq8dCEynlfp34@gM}D& zsT^Id?VkUOd7j7Bczggs=+K2(SNa4pR!YnNa)1K>DcQm_Cp-xVG5w^^6sG_I0FVL4 z4TCSgeYSziNQ45z5&rjrNb_|7usqTUufHC+54mQ^!3}jHS1kZobFli6B<7p|1-k=$ zvt;0hFmypa#R|b;Nq_@<1FQHP2m}$s*oi>X?Rx+70Rw#K#gza%fX9Uqiw4LUz>)BB zsc4#lYrp>o;2;B|U<^6}b zB}JG?-U?B=aFEt9ONHS%&T2tT7qq}A0H6mC zBj31bk%f%xL;v0apaIkocqFD1CZ3%d#|#2U0NB`wH38*s&%96oCjbU{U<`MS0`H8{ zdB6++Q$v2iEop#J^5=jDz3%Y~#iDp$Jg$QefB+By5G8K&#s>3Pu_%}4|F{4QL3iX* zFJ^gaAlK`B$&lhIIbBzzey>$O{x9z#k@=5^KP6lrjDrP0D8NbqGGa0!LMs>`jh%=H zT}yrE2QIpjmy$XS$%0fs0@0k72gG8} z`UCw6COD!sCHGQ7C|Ljt|Ak0*zQB?j(CIlLis(NFGxP|6W*lDvJwZD_LdXsG&-s7E z;swD&{OKZ&fd}V|&DE*js^P-|DZy+c)`d}ytCT3vS7ye~H9>A0*fFgkv&T%kB4)2or<`^Nd0T>%J`&k=a z{YQG+O`qrq^-wx+v!n!m2LK+G#s|^Cn$ROrVoRMx|JVo%F{-ME{&-)&EieE80YLyc XiKGFmz#EJJ00BV&6+&qMYVZc*%F|m% literal 1156 zcmV-~1bh1c0003AFaQ7nL7PAtyaiW5LnJ|e1p~1lQWby#5C{`!A7be|8T-Otr~m}W zhF4(~iF(+@_yYmJNi((CGAsBY0>T4I9Kk6EgfEPsLJmX1P!TkW2iG@%CO`rFkh1`Q zmfSd`RVxKZJNPyhq~-2{MfumBJZ^75I0N&Vmt0YJi= zA`*DffLm})B%eWn_yfVyq6-cojR?DT1`1XH3^?GX)@6Nx{gX}ihyVxxP`bAtflC^G z!H57_0uO)`1O=TCsbG~{dqwzXD_YjNWj*Jm4HQ3g{R1tH?OaJx$=48-h z6omIZ93V#kA*K*4C2*R`boxK}KZ-BG1BhwSVGZgNu|2QcE2B%`lt_Fg41pMc$j^W< z01yXt0L2S46G8&l_R(lDaf5+fXJotA2djJn1UjH$0z%5RKup_+;5v%}D3eGipZ|Ca z;7mM2#Z5$XAfDX2|9}7x1vm&HbW;V-wlBOIglf)QN=Br78R z&;SGg{{SEYfb*I&FGeM9Y=3ef2yp-dgor+LEO-s;z*zt$=l}o#K>%(h&<3vnvmejr z;7u?70)P)D2t#O9fCr;ErGV6DJ^!VZqVz}xDOA6JpaCYK6fA%%)P{Br4`9d}*+AQs>9|A`Gj5V$Ryfu>NZ73-Fl^oZ4O7|e)V?wLJQQ=PkQH;)q6Hwk#c@Ifs@Bt`rslb3r_lnemFj5>j9Lh&~ zu!F{le~wXyVBF{+lh>ee=v2ItuXUMm02R{!1Aw&#G7tCW95#_4 Wv;nKY8;k$|0YLy2LTvzQ@CM`J7T!nz diff --git a/samples/h264SampleFrames/frame-0704.h264 b/samples/h264SampleFrames/frame-0704.h264 index a95e32eb3fcb8480f6c2bea6e4ce801d08d24ddb..1d0255d68eb7de501439c108e29d9ab35e0e3220 100644 GIT binary patch literal 1229 zcmV;;1Ty;o0003AFaQ7nL7HG1yahKwV%OC4=Y{ie>d}}73t#|=1}20Jx0;zr4~IS1 ztTey?Z~_li!BZ9Dqjs{r+a`DZl{;=MbVAEuEx6 zM%z=vBp9#;?I_M;gCh-e!vFw43;+ZL002OI0?C{R1C{_%2Rz?5upa}ZM0^02Ck-7s zcm4I-F#S1BQr}DBqNZhx<<4;C04H zj*I+R9GnCJ3veWojPj&%bnvJC;{XeQ_p4(#OcUGp6F>kU5cfa@6PY!N|L!9K22WiJ zT!V?5G5_yU&>;0XOVsHx;e79f8~_kSDF{N8r6CAXlmGwV0N_ATBn%K_O`j?Vlrv{9 ziUepb3IV8KJ`@Wt6PH*eHMO4V|J)=2fLW9S4yEXwNnd!I z00x&R11xd)5*=-z$_mt=@h!3_l2+gQv@Uo}4#6HtNPqAGLaoLW(XH)5iZbe45E%j< zL!^feou@y`f8GE9fJ@+DDrp3+l}}>p&pY@40RWW%Mld;2c8w}rYJS83BcWIUMJj+< zz0dZ8_#7UnzDxQ1TfvN%%K!#UgG_RF6VRUz)PXia0ss;LUZ&6!kwJjKh1AvcJvS#; zyiYd}xu5u+00@8)3P2Q=kMqe3=;5-6GXjY z*Ney>qIocG6}SV zv77<11;U(ZznC-yYizID#5oRBet*JS4B%fs{8oPFtN3h^P(d8`>o+7xF9rXImK1Ir zDiM0{_w5n`-ryvhn#t8VH^1rOSQAU<5r`c^LePZEMl_y&05YJ%bZFIwPr(8Wa&aE` zJRQJsPJ@Cv)HJ9v2+BZ7F4eyRjzi3RQ!|so`F`bif#Gihkv0x2jNu=Y9QyTozx7@X zoR0WNM%TXlDB2BF2Os?J2*5bzo`o#`pM3DV3938}3}`qQn^*wHSMdM%|28jDv*^`GSZr^$AMTfj rvC6i{$dCW+79&HzBX9r!0YLyciKYRoz#EJJ00BV&6+&r%YVZc*TL%{$ literal 1141 zcmV-*1d96r0003AFaQ7nL7QM2yaj>$*EetsKaC0i0t5iha1tw&38~yV>^hjn&H)rk zNDPotYMUh;=5PPB0KgUg0|)jofd8@eH;eyp48qO<_Y2!Ql!0fGr~dSE9Doky!p;Gq z+#T75sw<8sS~+J18PSg!V;Iz*`F;WnMgk6nU;xA*xEotPrV%{3EPw~FQ~>3;1BH%H zN(M_W_3tndD61giD}AOj|HBopH;Q1ss)L2NH2XnpJb} zy4NEB855{8&l>`37QAc&0BwrH+vLEAwV-0KhFl_%)}=cJ5CS40h306 z06|sTsQ>^$-~a?1ZU89{T|dqKw~-*QhkybA0Dve12UYsysXK@VT?=J$hp-gjDWLKN zAnB07>H>iLKHv-m1{*}}utUJYzRZjm03p#rj7N%&?ut2AAR+cMj(TjdIsR`bYlc7o zAP5i(n1ofbB}Pa+ZvEpPh;RT9FzUU)0z_vrDti3HMC4lz>uUG_0stU}N~Z!y(}{Ch zE2hSN;3!V(7Td%Ba5pFwz9m`jKc&3zKnyY)kpMCy!47mW&}swU009UJhNS5H+W+h> z3%nn_vuw?nYVP6q00;qvSaug8AM*DXjKtYC%m4uZ@Bk1K01pn!7n(o75O72Qoa|gj z*@D4USf-u;CIkfzr-4TAP=qA|M@|pM0s$2O!a&UJP1YZkP(UxB3Az9P0YLz6CfEkA z0NS6==ip6%o&(6RmjEmPQ4v(3h!Q>?fD22RT4FVL8sfSavzYem8R?SE3|GHg9KK`| zX$fOE0>W=Yie3I;Knjy*dh-yFgFzi%71iUZ!@1XQHgMRuy2&k4YqUpR#jI}#L(R*W=-_yCLWV4dMC8s3Jm z5H;Av4tP8nz&Pi?(7v?-3=zq}oWM&y*Zu_>L7@euu?|E+xqjtpAb3;lA$~1va!Nl> zIDO8&2Yux2;ZbIUgk%xxzYaMARRB=iUEtmiL0xiLr~a+;!muWn*!0v$k>NltPTkg? zu!S6|z18AB_1+4PNMP*v9&7(kgdbh`|Nr~K%!2Ac1O|6ie9Oc>dDblABJ>Vq0f|_l zyTM?<0&p)%03WLU6g!dszztj$68w=J3;j1VzRe+zL$CwVjR%2^KCl4e)$o7+{XA?d zQn6%eWbAL?`FoS=wJ}|1a1HT0YLyciM9c&z#EJJ00BV&6+&%* HYVZc*@NxP0 diff --git a/samples/h264SampleFrames/frame-0705.h264 b/samples/h264SampleFrames/frame-0705.h264 index 0d727f675506e8318bc0faa0917bfc44dfe7eaf5..f88d7ed4319d039de6d79f292f201e87c3ec974d 100644 GIT binary patch literal 1479 zcmV;&1vvTu0003AFaQ7nL7IRXyagW;6vOD3RJ;I|DS$ojPtzNDhoO1&9cBR<_@6*# z*?03;Gen2KQdPn|07pU#H}w!43(Xk`v`z`Y51Tl2Uoy00=r_i&qdiHJfkq3~f9d`Jp!bsq94%db6TB~IV?Y)T6S&HL zCYbOBnAeaNv{AtP5a+}L$e$#99tX%5@QywP4WL_5;I_oU#5<+IzY~BOkk7nmatb)S z(gNcEqxz96gt8SN01O6V#0Sn02f|kkt9~HY&CGT-0sau>3>EIB!DVT6<`0D2J`M}a zA0fOm_-rZg(Le&#YzG12{i9A=F63Yt8=86m*W_RW!5gawEMNfwX&bIX?*JgQ3A~}F zj*@F7R4dy643ML~WIv43OhgF&t5daIPem0}Q{+h7Rw-!-^dfu`=Xp1IC?lf4txXvalTu9W~HJ zrVW)s1eP>kg+!4r9Sq7rw}2Og_J%MIzyn)c0N@}PZz{2p&@k<$VgLaGKmZUR#OweR z4jj-O<0+IV#{pyDV4Bx~+5nA-uf#)8Fnz^p#dzGcfWl#x|vo6)gEK}+BsGf)6S6h8yF+Fy6fG<$RA9%MiO z&gd90$jA5SJ%aBDD%W2|KRul0RZ4I^|#?7yU{1)+9RIe2tx%aHWX47y+FY7f8zXBDOi2vd&GEr}Z|0Ala~l(!}lS1Aql zfNB7NS|T0)?l92MYwN}lhb5>uM?OUs9`ArE2(Jst)M$yi@xFL600SA!6dODF44i^v z07v!!1{G^~5LU4M2d7M~!7_j?-@vpa)$o7g00X7~bO9bKrdACfU{QCo@vEtCgZQcc z@JrGF1kxA)!ww5fq0+!G;pAQz0-)Fk*TiNlflIUC2yy@b0YLz6CZGnd06>TH`S=rH zCjjyh3Sbg{qy7GvSfxN7G}9lB02Y0$*Huy$nTVg_hnO%#>x#>{Nv!_1) zxgzwy6dEuFrd*2u?9>1R0IUW01YW?|;2X?PG}5MRzE29knqM&>oLKfCAQl89P64oC z`E+mo_k;gprDKjV3@7}D_x*ngt24+*yL;f0qf`^HBlG&}H+(67b5tYX0Gds-tJ=N+ z&H?cBgI3x=18e%%_fhw14f6ZsZGZP*e2k%0WXmUi_tr~l%sTY{e(eFhsHz_!s(Y5;2R2IFw`~WNi1PC%u9Xvp)Uvt>e#5YAJEfcb;YF}U?1%bdJ3mUtdV`n9 z24E4A>w=Kp41l-NY#{;(hhUhpwKydpb>BOu_xpfm6X;Qr(!IpA02%6 z2+$vO$_P#BfCWcP02V!TDj%`p{imZw9#V-HoN3s6so;C!-fBY#58-M~sz&4}s3lT0Lm6(k? zg`O-am$W5A&<=xJ7-B{zUlntqA~gh8Y?!LKg#XwOtYA8YnHh{{G?Q2W6b6%s)_Y7Me4} zL`^;LYgH(S-tvhIgLo_<$D)%^kAMf8C9ABT=l|xwKqjt0aEC3BjM#jx0&CqT_jHeX z4lcf`cHjSKKV<|g7@m)~iG%n2_Jx&ykJcLZ{4r)Kb}uK_xPriE0hs^*0YLyciMRo) Tz#EJJ00BV&6+&(RYVZc*M;E@r diff --git a/samples/h264SampleFrames/frame-0706.h264 b/samples/h264SampleFrames/frame-0706.h264 index 1f35a667103bec1baa608317a4188f231b328f19..e8a27e1e45bcd3329ac19ee640e09e9f1ce3f079 100644 GIT binary patch literal 1556 zcmV+v2J86%0003AFaQ7nL7Jc%yagvHNN5iF5N~rQALNcwCJV3<&^JI|n}lt(hEXPo(OhLUX700IR-AW8~^y)4*luw++z z{EYxk%0MmPRolG-fIO+CQ}u{r{a6Hka3AOOfC|V1i8N|2imDwiiiM?#2#nwb_+2Hn z;-&#o2a76dZ@$1@z=k}wtcW5r{2l-Rz)nV6MyE3ch`;~s;SW}@D4~l_OuU(w`XEUN z3_!wGV56S{@Bj=H=N|Qe9X1|_h(q_h02+X98iuk7B(_AwJH_RI0Du4h2mu7vRys@t z7{o*a@sof-fK`(|T)0Sv;!wAs1C`*89J#Jq54npeIROD4z+nKL0h|SJkKrLe0Ij{i z1`-N&VORia27mx?01ylS4hNPP@|khmjKzQm>$c0Fl~U z9vSd{01<%U10OC=tRQ*_V5;9$mnIKy?gU2^06AGN1%L zr(So{fm7~*kB@iXZ{FSvI3)!kL$hTFYi16;0FIH$FaT3v03aEzfE)mjma(ExM~e(< zvcTY88-!j9aNr0C3gP5d`N$#;7$rXeSf%JZKv2X&NNDsye`58?C+_iz8zyjqE(+xdv`|-*pZuKrUVsP|jgCAbW!7__{k#Ae-oT|>J9`t* zUgd;9RL7=ht7ZifzSspe?R~&wg4D#qsW&KGQsg63MPPHEE7QoLUlYC?E)84*VOdo z{3vWK6nFqJvJo6q-#JZMJ^;alky~=1FQYH~n3jez$XR8M^WT_?Wf=d7H-G>j8gsw| zn=nM=jf+wla(As+sAg6^G1=gI1Xu0V%yCqI`(4pqxy!$K zvl`#Zu2oe~!wh0>xxf4WZHSE6ki)HQl>W*8Z+(pz(%F?c|IPqV^-vgl5}m%!8B#z7 zAgD#H4aooohFONghOvuo*?w>RcpLiGKVVcznuiem??nK|NZd2?f9pJ37F0noTfzR} zOc28W3uK{gA=m%_0YLz6Ca4Cl07_@``S=qcC;&j1R0JHdTb!Z-jt(VWQ`5)=g$|KI|GOCMqsN0n$F4jZw4 zaEF40aFglm!2dZ1{@DF(420~3?_T^F{omkyfB*miK>#_4ssXFO8;k$|0YLy2LTZ3& G@CM^b!KzaL literal 1354 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 literal 830 zcmV-E1Ht?N0003AFaQ7nL7TuDyak6LICOv*Pk|)Epb)a$gU}QJC2&$(#tCblZ3ll% zwLmP)9~*!I4L||`L5WhX>yaC6bNEL9JOBa!Ku|!6dn2g@l5q+(s=PHg00P!$OtUxuI0jH$FvQA(bNcf%LIxKA z0tbJPfdU+{_6b^c14A6UykQVhS_@H3BG^#hLO?+LL6pKNB$AdK!bx|8D@ZVgi*KqB zQMT0Z7$UG1RgjTIZ_n5lmwUmQ4=+^+gxi}E|No#E00;pbz=gpc4(b%sXAh<4-U8$B1clrs_i$tQ>ssfA$oOHnu>r(T@||h0W>Yaw zQh6u*0XIMZ00BV&ZYJ;suK-jh^ZESz35EZ_Oaa`%2mpFetSM?R$G`nx125%0*YC+x z|MBr^z)S(;aWDy*di5`%?wlwv=>hZufoh-hL`LTD^7@mQKtq7~ahNglQGoGbxufIx zoR_dr>2c^UEYW}V@Q3a+XzuV6yb8u#77Yp|^*k$|fiS<;0$>l~f`B{omTNSyZbqjU z+%i4jpInR?n84qC;iBeYBaVAtJS&&>Ka@~I!o_0?tfVfqM;S;47PPIv3lsz!K2RnY zXp$d0jcJM6ct_{pOh70ABzJ%qyz))&kO41Q;%9#+fXd=- zB9w^SN#bx7A=$EmYGiBM2b#zm?xj)Y|9t*|`3MZshAUHkX#<~!nf~byym((X>vzctkQDzc$B>UElGBpCmHY4yA01lvw!38j>RP@-^ zIA9V$2FAoes1GZCed2%tH~=%t0Asvp7kp-ut^i;Ho*VWEYfJ)9mOKDG?k^C$YA1#9 z1#laGU_Sr=KmiGOea7=rJ}q+ZPO)IqP-`I8~URC2ub)Zbm$=~MsZ z`I!ukraoa%wQzhg3>5&QK_N0?G7?fNANVjKbuE2QM4J!4U8_)27MQ|Xk9Wh5Vh-YHHK;gz2 zsz+C0J+Htiln@oo6A$M{7+@rS{X93pLU0HoG;Yi8TPK+>OTYjS4=@mbE6xSYP=23( z(0nNeelP|Ve!w~XVxV$2hyVRzLlL^ZED_U?u?a5esliW(1>$6YdKp zKE*S)G)0&gk;@JbW`dT}MLGa~j4JbgGL8VT{~2q6hqJnztRdho`nGrEz~7@~IX3<7 zrH6PQL1l>hW8EMVv}(+XYy180)lveC@17TdG`~SCwh#+ZJqLs4(t)Yd2`23?hwuH* z3+tglWws$91I$X84w%(2Vn&#%+F_*6K6qXW-~a#tK>#_4t^upV{DD9Kc3Ci!4g3D5_B000012`~Tv0YRJK8oUKpL1Lsqe+2`vAW{{80w4f@et=4sL7fU?L37gyj55CiEW z$psDfjxoCEmccWLI+`E}h)Jt~B90fC-e?#4jep<{4?2i{XB%281}$y?0Sb5x>y3`6 zWT8NGCIFkf$ZkX6>huYvlb5gn5D3Hoz+P;v{&;?9PB_dES6UBY4XZ?c-~d3uxMB!Z z?64*Kx_7WD04=6nO9Jb%#l690d{cpi=p*B`2*2R;2B#FEBG%KC{^p~9;4lEfiYTU{ zhg?lp^S~j04M>~!L)4{z;^@x@jBp}Sn*V?RK==Rz0^(#E6gQdx0DvecB_>4t!krih zcHqE&K*mu;mg9tyO}p;{Qbb?_ZG4Fn!_luk{9=fHwF51OXTimH1dDDC7U(0F5Dmm|%+_rw>3AbN~PWK>%(h z_y(^4UI+8}_!D3z0P-j;!YgzIQ8}L`e%#T27!^qAz$6;Y2fHN&cZ(gJ@epOH5r$d{{8l$`bLY3C*H5X-$z-IHNW?_wyKa6W%I)D zCYS4$!U1S$=sXXbN(0#GgdW?ZeKh{O@V>ef7F&8D1I$X84w%(29>~)bTTCJ|?eoG4 Y@LvD`0YLyciN2HW1I7k#fNJmt