From 5dcbd34c794e9cbd61e6047fe7c748a9ea5348c4 Mon Sep 17 00:00:00 2001 From: sirknightj Date: Wed, 5 Feb 2025 08:59:20 -0800 Subject: [PATCH] Fix null termination in codec for the rest of the samples & run the rest of the samples in the CI --- .github/workflows/windows.yml | 21 ++++++++++++++------ CMake/Dependencies/libkvspic-CMakeLists.txt | 2 +- samples/KvsAudioOnlyStreamingSample.c | 4 ++-- samples/KvsAudioVideoStreamingSample.c | 8 ++++---- samples/KvsVideoOnlyOfflineStreamingSample.c | 4 ++-- 5 files changed, 24 insertions(+), 15 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 729ef0dd4..37a643a0c 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -41,8 +41,17 @@ jobs: $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' & "D:\a\amazon-kinesis-video-streams-producer-c\amazon-kinesis-video-streams-producer-c\build\tst\producer_test.exe" --gtest_filter="-ProducerFunctionalityTest.pressure_on_buffer_duration_fail_new_connection_at_token_rotation" - VideoOnlyRealtimeStreamingSample: + sample-checks: + name: ${{ matrix.sample-executable }} runs-on: windows-2022 + strategy: + matrix: + sample-executable: + - kvsAudioOnlyStreamingSample.exe + - kvsAudioVideoStreamingSample.exe + - kvsVideoOnlyOfflineStreamingSample.exe + - kvsVideoOnlyRealtimeStreamingSample.exe + fail-fast: false env: AWS_KVS_LOG_LEVEL: 2 KVS_DEBUG_DUMP_DATA_FILE_DIR: D:\debug_output @@ -67,7 +76,7 @@ jobs: role-session-name: ${{ secrets.AWS_ROLE_SESSION_NAME }} aws-region: ${{ secrets.AWS_REGION }} role-duration-seconds: 10800 - - name: Run tests + - name: Run ${{ matrix.sample }} working-directory: ./build run: | # Equivalent to set -x @@ -82,8 +91,8 @@ jobs: dir # Stream for 20s (default) - $exePath = Join-Path $PWD "kvsVideoOnlyRealtimeStreamingSample.exe" - & $exePath demo-stream + $exePath = Join-Path $PWD ${{ matrix.sample-executable }} + & $exePath demo-stream-producer-c-windows-ci-${{ matrix.sample-executable }} - name: Verify MKV dump working-directory: ./build @@ -97,6 +106,6 @@ jobs: # Run mkvinfo on each MKV file foreach ($file in $mkvFiles) { - Write-Output "Verifying $($file.FullName) with mkvinfo:" - mkvinfo.exe "$($file.FullName)" + Write-Output "Verifying $($file.FullName) with mkvinfo (verbose and hexdump):" + mkvinfo.exe -v -X "$($file.FullName)" } diff --git a/CMake/Dependencies/libkvspic-CMakeLists.txt b/CMake/Dependencies/libkvspic-CMakeLists.txt index 303f0e2c3..847a4286e 100644 --- a/CMake/Dependencies/libkvspic-CMakeLists.txt +++ b/CMake/Dependencies/libkvspic-CMakeLists.txt @@ -7,7 +7,7 @@ include(ExternalProject) # clone repo only ExternalProject_Add(libkvspic-download GIT_REPOSITORY https://github.com/awslabs/amazon-kinesis-video-streams-pic.git - GIT_TAG file-debug-logs + GIT_TAG v1.2.0 SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/kvspic-src" BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/kvspic-build" CMAKE_ARGS diff --git a/samples/KvsAudioOnlyStreamingSample.c b/samples/KvsAudioOnlyStreamingSample.c index e99de022c..996a90474 100644 --- a/samples/KvsAudioOnlyStreamingSample.c +++ b/samples/KvsAudioOnlyStreamingSample.c @@ -107,7 +107,7 @@ INT32 main(INT32 argc, CHAR* argv[]) MEMSET(&data, 0x00, SIZEOF(SampleCustomData)); - STRNCPY(audioCodec, AUDIO_CODEC_NAME_AAC, STRLEN(AUDIO_CODEC_NAME_AAC)); // aac audio by default + STRCPY(audioCodec, AUDIO_CODEC_NAME_AAC); // aac audio by default #ifdef IOT_CORE_ENABLE_CREDENTIALS PCHAR pIotCoreCredentialEndpoint, pIotCoreCert, pIotCorePrivateKey, pIotCoreRoleAlias, pIotCoreThingName; @@ -132,7 +132,7 @@ INT32 main(INT32 argc, CHAR* argv[]) if (argc >= 5) { if (!STRCMP(argv[2], AUDIO_CODEC_NAME_ALAW)) { - STRNCPY(audioCodec, AUDIO_CODEC_NAME_ALAW, STRLEN(AUDIO_CODEC_NAME_ALAW)); + STRCPY(audioCodec, AUDIO_CODEC_NAME_ALAW); } } diff --git a/samples/KvsAudioVideoStreamingSample.c b/samples/KvsAudioVideoStreamingSample.c index 84f299a5a..7933c7440 100644 --- a/samples/KvsAudioVideoStreamingSample.c +++ b/samples/KvsAudioVideoStreamingSample.c @@ -191,8 +191,8 @@ INT32 main(INT32 argc, CHAR* argv[]) MEMSET(&data, 0x00, SIZEOF(SampleCustomData)); - STRNCPY(audioCodec, AUDIO_CODEC_NAME_AAC, STRLEN(AUDIO_CODEC_NAME_AAC)); // aac audio by default - STRNCPY(videoCodec, VIDEO_CODEC_NAME_H264, STRLEN(VIDEO_CODEC_NAME_H264)); // h264 video by default + STRCPY(audioCodec, AUDIO_CODEC_NAME_AAC); // aac audio by default + STRCPY(videoCodec, VIDEO_CODEC_NAME_H264); // h264 video by default #ifdef IOT_CORE_ENABLE_CREDENTIALS PCHAR pIotCoreCredentialEndpoint, pIotCoreCert, pIotCorePrivateKey, pIotCoreRoleAlias, pIotCoreThingName; @@ -223,10 +223,10 @@ INT32 main(INT32 argc, CHAR* argv[]) } if (argc >= 6) { if (!STRCMP(argv[4], AUDIO_CODEC_NAME_ALAW)) { - STRNCPY(audioCodec, AUDIO_CODEC_NAME_ALAW, STRLEN(AUDIO_CODEC_NAME_ALAW)); + STRCPY(audioCodec, AUDIO_CODEC_NAME_ALAW); } if (!STRCMP(argv[5], VIDEO_CODEC_NAME_H265)) { - STRNCPY(videoCodec, VIDEO_CODEC_NAME_H265, STRLEN(VIDEO_CODEC_NAME_H265)); + STRCPY(videoCodec, VIDEO_CODEC_NAME_H265); videoCodecID = VIDEO_CODEC_ID_H265; } } diff --git a/samples/KvsVideoOnlyOfflineStreamingSample.c b/samples/KvsVideoOnlyOfflineStreamingSample.c index b67463819..95b7bc670 100644 --- a/samples/KvsVideoOnlyOfflineStreamingSample.c +++ b/samples/KvsVideoOnlyOfflineStreamingSample.c @@ -63,7 +63,7 @@ INT32 main(INT32 argc, CHAR* argv[]) BOOL firstFrame = TRUE; UINT64 startTime; CHAR videoCodec[VIDEO_CODEC_NAME_MAX_LENGTH]; - STRNCPY(videoCodec, VIDEO_CODEC_NAME_H264, STRLEN(VIDEO_CODEC_NAME_H264)); // h264 video by default + STRCPY(videoCodec, VIDEO_CODEC_NAME_H264); // h264 video by default VIDEO_CODEC_ID videoCodecID = VIDEO_CODEC_ID_H264; #ifdef IOT_CORE_ENABLE_CREDENTIALS @@ -109,7 +109,7 @@ INT32 main(INT32 argc, CHAR* argv[]) if (argc >= 3) { if (!STRCMP(argv[2], VIDEO_CODEC_NAME_H265)) { - STRNCPY(videoCodec, VIDEO_CODEC_NAME_H265, STRLEN(VIDEO_CODEC_NAME_H265)); + STRCPY(videoCodec, VIDEO_CODEC_NAME_H265); videoCodecID = VIDEO_CODEC_ID_H265; } }