Skip to content

Commit c4bf729

Browse files
committed
sdk update
1 parent 839716b commit c4bf729

File tree

53 files changed

+1325
-1139
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1325
-1139
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,12 @@ $ sudo reboot
252252

253253

254254
## Release Notes
255+
### Release 1.2.0 (February 2018)
256+
* Bug fixes and performance enhancement
257+
* Streaming error recovery improvements
258+
* Minor API changes:
259+
* create stream APIs return shared pointers instead of unique pointers
260+
* Addition of StreamClosed callback to notify the caller application when the stream is finished draining the existing buffered frames before closing in the graceful termination case.
255261
### Release 1.1.3 (February 2018)
256262
* Added RTSP Demo Sample
257263
** AWS_ACCESS_KEY_ID=AKIASAMPLEKEYID AWS_SECRET_ACCESS_KEY=MYSECRETACCESSKEY ./kinesis_video_gstreamer_sample_rtsp_app rtspurl stream-name

kinesis-video-gst-demo/README.md

Lines changed: 0 additions & 55 deletions
This file was deleted.

kinesis-video-native-build/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,8 @@ set(PRODUCER_SOURCE_FILES
192192
${KINESIS_VIDEO_PRODUCER_SRC}/src/StreamCallbackProvider.h
193193
${KINESIS_VIDEO_PRODUCER_SRC}/src/CurlCallManager.h
194194
${KINESIS_VIDEO_PRODUCER_SRC}/src/DefaultCallbackProvider.cpp
195-
${KINESIS_VIDEO_PRODUCER_SRC}/src/OngoingPutFrameState.cpp
196-
${KINESIS_VIDEO_PRODUCER_SRC}/src/OngoingPutFrameState.h
195+
${KINESIS_VIDEO_PRODUCER_SRC}/src/OngoingStreamState.cpp
196+
${KINESIS_VIDEO_PRODUCER_SRC}/src/OngoingStreamState.h
197197
${KINESIS_VIDEO_PRODUCER_SRC}/src/DefaultCallbackProvider.h
198198
${KINESIS_VIDEO_PRODUCER_SRC}/src/DefaultDeviceInfoProvider.cpp
199199
${KINESIS_VIDEO_PRODUCER_SRC}/src/DefaultDeviceInfoProvider.h

kinesis-video-pic/src/client/include/com/amazonaws/kinesis/video/client/Include.h

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ extern "C" {
251251
/**
252252
* The max streaming token expiration duration after which the ingestion host will force terminate the connection.
253253
*/
254-
#define MAX_ENFORCED_TOKEN_EXPIRATION_DURATION (40 * HUNDREDS_OF_NANOS_IN_AN_HOUR)
254+
#define MAX_ENFORCED_TOKEN_EXPIRATION_DURATION (40 * HUNDREDS_OF_NANOS_IN_A_MINUTE)
255255

256256
/**
257257
* Grace period for the streaming token expiration - 3 seconds
@@ -416,6 +416,20 @@ typedef UPLOAD_HANDLE* PUPLOAD_HANDLE;
416416
#define IS_VALID_UPLOAD_HANDLE(h) ((h) != INVALID_UPLOAD_HANDLE_VALUE)
417417
#endif
418418

419+
/**
420+
* This is a sentinel indicating an invalid timestamp value
421+
*/
422+
#ifndef INVALID_TIMESTAMP_VALUE
423+
#define INVALID_TIMESTAMP_VALUE ((UINT64) 0xFFFFFFFFFFFFFFFFULL)
424+
#endif
425+
426+
/**
427+
* Checks for the handle validity
428+
*/
429+
#ifndef IS_VALID_TIMESTAMP
430+
#define IS_VALID_TIMESTAMP(h) ((h) != INVALID_TIMESTAMP_VALUE)
431+
#endif
432+
419433
////////////////////////////////////////////////////
420434
// Main structure declarations
421435
////////////////////////////////////////////////////
@@ -1243,27 +1257,31 @@ typedef STATUS (*StreamReadyFunc)(UINT64,
12431257
*
12441258
* @param 1 UINT64 - Custom handle passed by the caller.
12451259
* @param 2 STREAM_HANDLE - The stream to report for.
1260+
* @param 3 UINT64 - Client upload handle.
12461261
*
12471262
* @return Status of the callback
12481263
*/
12491264
typedef STATUS (*StreamClosedFunc)(UINT64,
1250-
STREAM_HANDLE);
1265+
STREAM_HANDLE,
1266+
UINT64);
12511267

12521268
/**
12531269
* Notifies that a given stream has data available.
12541270
*
12551271
* @param 1 UINT64 - Custom handle passed by the caller.
12561272
* @param 2 STREAM_HANDLE - The stream to report for.
12571273
* @param 3 PCHAR - Stream name.
1258-
* @param 4 UINT64 - The duration of content currently available in 100ns.
1259-
* @param 5 UINT64 - The size of content in bytes currently available.
1274+
* @param 4 UINT64 - Current client stream handle passed by the caller.
1275+
* @param 5 UINT64 - The duration of content currently available in 100ns.
1276+
* @param 6 UINT64 - The size of content in bytes currently available.
12601277
*
12611278
* @return Status of the callback
12621279
*/
12631280
typedef STATUS (*StreamDataAvailableFunc)(UINT64,
12641281
STREAM_HANDLE,
12651282
PCHAR,
12661283
UINT64,
1284+
UINT64,
12671285
UINT64);
12681286

12691287
///////////////////////////////////////////////////////////////
@@ -1745,11 +1763,12 @@ PUBLIC_API STATUS getKinesisVideoStreamData(STREAM_HANDLE, PUINT64, PBYTE, UINT3
17451763
* Streaming has been terminated unexpectedly
17461764
*
17471765
* @param 1 STREAM_HANDLE - the stream handle.
1748-
* @param 2 SERVICE_CALL_RESULT - Result returned.
1766+
* @param 2 UINT64 - Stream upload handle returned by the client.
1767+
* @param 3 SERVICE_CALL_RESULT - Result returned.
17491768
*
17501769
* @return Status of the function call.
17511770
*/
1752-
PUBLIC_API STATUS kinesisVideoStreamTerminated(STREAM_HANDLE, SERVICE_CALL_RESULT);
1771+
PUBLIC_API STATUS kinesisVideoStreamTerminated(STREAM_HANDLE, UINT64, SERVICE_CALL_RESULT);
17531772

17541773
/**
17551774
* Stream fragment ACK received.
@@ -1762,11 +1781,13 @@ PUBLIC_API STATUS kinesisVideoStreamTerminated(STREAM_HANDLE, SERVICE_CALL_RESUL
17621781
* 4) In case of an error we re-set the current to the fragment start frame timestamp.
17631782
*
17641783
* @param 1 STREAM_HANDLE - The stream handle to report ACKs for
1765-
* @param 2 PFragmentAck - Reported ack.
1784+
* @param 2 UPLOAD_HANDLE - Stream upload handle.
1785+
* @param 3 PFragmentAck - Reported ack.
17661786
*
17671787
* @return Status of the function call.
17681788
*/
17691789
PUBLIC_API STATUS kinesisVideoStreamFragmentAck(STREAM_HANDLE,
1790+
UPLOAD_HANDLE,
17701791
PFragmentAck);
17711792

17721793
/**
@@ -1777,12 +1798,14 @@ PUBLIC_API STATUS kinesisVideoStreamFragmentAck(STREAM_HANDLE,
17771798
* NOTE: See kinesisVideoStreamFragmentAck for more information about the successfully received ACK processing
17781799
*
17791800
* @param 1 STREAM_HANDLE - The stream handle to parse the ACKs for
1780-
* @param 2 PCHAR - Reported ack segment - can be non-NULL terminated.
1781-
* @param 3 UINT32 - Reported ack segment size in chars.
1801+
* @param 2 UPLOAD_HANDLE - Stream upload handle.
1802+
* @param 3 PCHAR - Reported ack segment - can be non-NULL terminated.
1803+
* @param 4 UINT32 - Reported ack segment size in chars.
17821804
*
17831805
* @return Status of the function call.
17841806
*/
17851807
PUBLIC_API STATUS kinesisVideoStreamParseFragmentAck(STREAM_HANDLE,
1808+
UPLOAD_HANDLE,
17861809
PCHAR,
17871810
UINT32);
17881811

kinesis-video-pic/src/client/src/AckParser.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,16 @@ STATUS resetAckParserState(PKinesisVideoStream pKinesisVideoStream) {
1818
pKinesisVideoStream->fragmentAckParser.curKeyName = FRAGMENT_ACK_KEY_NAME_UNKNOWN;
1919
pKinesisVideoStream->fragmentAckParser.fragmentAck.result = SERVICE_CALL_RESULT_OK;
2020
pKinesisVideoStream->fragmentAckParser.fragmentAck.version = FRAGMENT_ACK_CURRENT_VERSION;
21+
pKinesisVideoStream->fragmentAckParser.uploadHandle = INVALID_UPLOAD_HANDLE_VALUE;
22+
pKinesisVideoStream->fragmentAckParser.fragmentAck.timestamp = INVALID_TIMESTAMP_VALUE;
2123

2224
CleanUp:
2325

2426
LEAVES();
2527
return retStatus;
2628
}
2729

28-
STATUS parseFragmentAck(PKinesisVideoStream pKinesisVideoStream, PCHAR ackSegment, UINT32 ackSegmentSize) {
30+
STATUS parseFragmentAck(PKinesisVideoStream pKinesisVideoStream, UPLOAD_HANDLE uploadHandle, PCHAR ackSegment, UINT32 ackSegmentSize) {
2931
ENTERS();
3032
STATUS retStatus = STATUS_SUCCESS;
3133
UINT32 index = 0;
@@ -41,6 +43,11 @@ STATUS parseFragmentAck(PKinesisVideoStream pKinesisVideoStream, PCHAR ackSegmen
4143
CHK(ackSegmentSize <= MAX_ACK_FRAGMENT_LEN, STATUS_INVALID_ACK_SEGMENT_LEN);
4244
}
4345

46+
// Set the upload handle
47+
if (!IS_VALID_UPLOAD_HANDLE(pKinesisVideoStream->fragmentAckParser.uploadHandle)) {
48+
pKinesisVideoStream->fragmentAckParser.uploadHandle = uploadHandle;
49+
}
50+
4451
for (index = 0; index < ackSegmentSize; index++) {
4552
curChar = ackSegment[index];
4653

@@ -172,7 +179,7 @@ STATUS parseFragmentAck(PKinesisVideoStream pKinesisVideoStream, PCHAR ackSegmen
172179
// Process the parsed ACK
173180
CHK_STATUS(processParsedAck(pKinesisVideoStream));
174181
} else if (curChar == ACK_PARSER_QUOTE
175-
|| curChar == ACK_PARSER_OPEN_BRACKET
182+
|| curChar == ACK_PARSER_OPEN_BRACE
176183
|| curChar == ACK_PARSER_OPEN_BRACKET
177184
|| curChar == ACK_PARSER_CLOSE_BRACKET
178185
|| curChar == ACK_PARSER_DELIMITER) {
@@ -259,7 +266,7 @@ STATUS processParsedAck(PKinesisVideoStream pKinesisVideoStream) {
259266
CHK_STATUS(validateParsedAck(&pKinesisVideoStream->fragmentAckParser));
260267

261268
// Push the ACK
262-
CHK_STATUS(streamFragmentAckEvent(pKinesisVideoStream, &pKinesisVideoStream->fragmentAckParser.fragmentAck));
269+
CHK_STATUS(streamFragmentAckEvent(pKinesisVideoStream, pKinesisVideoStream->fragmentAckParser.uploadHandle, &pKinesisVideoStream->fragmentAckParser.fragmentAck));
263270

264271
// Reset the parser state
265272
CHK_STATUS(resetAckParserState(pKinesisVideoStream));

kinesis-video-pic/src/client/src/AckParser.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ typedef enum {
111111
typedef struct __FragmentAckParser FragmentAckParser;
112112
struct __FragmentAckParser {
113113
FRAGMENT_ACK_PARSER_STATE state;
114+
UPLOAD_HANDLE uploadHandle;
114115
FragmentAck fragmentAck;
115116
FRAGMENT_ACK_KEY_NAME curKeyName;
116117
UINT32 curPos;
@@ -136,12 +137,13 @@ STATUS resetAckParserState(PKinesisVideoStream);
136137
* Parses the consecutive ACK fragment, assembles the ACK and calls the ACK consumption on success.
137138
*
138139
* @param 1 PKinesisVideoStream - Kinesis Video stream to use
139-
* @param 2 PCHAR - current chunk to parse
140-
* @param 3 UINT32 - chunk size. If 0 is specified then the size will be till the NULL terminator.
140+
* @param 2 UPLOAD_HANDLE - Stream upload handle.
141+
* @param 3 PCHAR - current chunk to parse
142+
* @param 4 UINT32 - chunk size. If 0 is specified then the size will be till the NULL terminator.
141143
*
142144
* @return STATUS of the operation
143145
*/
144-
STATUS parseFragmentAck(PKinesisVideoStream, PCHAR, UINT32);
146+
STATUS parseFragmentAck(PKinesisVideoStream, UPLOAD_HANDLE, PCHAR, UINT32);
145147

146148
/**
147149
* Tries to match a string to an ACK type. Returns Unknown if can't extract the type.

kinesis-video-pic/src/client/src/Callbacks.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,11 @@ STATUS defaultStreamReady(UINT64 customData, STREAM_HANDLE streamHandle)
8181
/**
8282
* Default end of stream callback functionality - NOOP
8383
*/
84-
STATUS defaultEndOfStream(UINT64 customData, STREAM_HANDLE streamHandle)
84+
STATUS defaultEndOfStream(UINT64 customData, STREAM_HANDLE streamHandle, UINT64 streamUploadHandle)
8585
{
8686
UNUSED_PARAM(customData);
8787
UNUSED_PARAM(streamHandle);
88+
UNUSED_PARAM(streamUploadHandle);
8889
return STATUS_SUCCESS;
8990
}
9091

0 commit comments

Comments
 (0)