|
|
|
@ -106,7 +106,7 @@ static void test_shared_media_ring(void) { |
|
|
|
CHECK(stream_encoder_create(&encoder, &descriptor, key) == STREAM_OK); |
|
|
|
CHECK(stream_encoder_create(&encoder, &descriptor, key) == STREAM_OK); |
|
|
|
CHECK(stream_buffer_create(&buffer, &descriptor, stream_encoder_public_key(encoder), 32 * 1300) == STREAM_OK); |
|
|
|
CHECK(stream_buffer_create(&buffer, &descriptor, stream_encoder_public_key(encoder), 32 * 1300) == STREAM_OK); |
|
|
|
CHECK(stream_media_store_create(&store, buffer, &descriptor) == STREAM_OK); |
|
|
|
CHECK(stream_media_store_create(&store, buffer, &descriptor) == STREAM_OK); |
|
|
|
CHECK(stream_media_cursor_create(&fast, store) == STREAM_OK && stream_media_cursor_create(&slow, store) == STREAM_OK); |
|
|
|
CHECK(stream_media_cursor_create(&fast, store, 3) == STREAM_OK && stream_media_cursor_create(&slow, store, 3) == STREAM_OK); |
|
|
|
append_media(encoder, buffer, store, 0, 0, STREAM_MEDIA_KEY, 1); |
|
|
|
append_media(encoder, buffer, store, 0, 0, STREAM_MEDIA_KEY, 1); |
|
|
|
struct stream_media_status status; |
|
|
|
struct stream_media_status status; |
|
|
|
CHECK(stream_media_cursor_status(fast, &status) == STREAM_OK && status.initialized && status.ready_us == 0); |
|
|
|
CHECK(stream_media_cursor_status(fast, &status) == STREAM_OK && status.initialized && status.ready_us == 0); |
|
|
|
@ -114,38 +114,38 @@ static void test_shared_media_ring(void) { |
|
|
|
append_media(encoder, buffer, store, 1, 40000, 0, 0); |
|
|
|
append_media(encoder, buffer, store, 1, 40000, 0, 0); |
|
|
|
append_media(encoder, buffer, store, 2, 80000, 0, 0); |
|
|
|
append_media(encoder, buffer, store, 2, 80000, 0, 0); |
|
|
|
struct stream_media_packet packet; |
|
|
|
struct stream_media_packet packet; |
|
|
|
CHECK(stream_media_cursor_read(fast, -1, 0, &packet) == STREAM_OK && packet.kind == STREAM_MEDIA_READ_VIDEO); |
|
|
|
CHECK(stream_media_cursor_read(fast, -1, 0, 0, &packet) == STREAM_OK && packet.kind == STREAM_MEDIA_READ_VIDEO); |
|
|
|
CHECK(packet.video.pts_us == 0 && !memcmp(packet.video.data, video_bytes, sizeof(video_bytes))); |
|
|
|
CHECK(packet.video.pts_us == 0 && !memcmp(packet.video.data, video_bytes, sizeof(video_bytes))); |
|
|
|
unsigned videos = 1, audio = 0; |
|
|
|
unsigned videos = 1, audio = 0; |
|
|
|
for (unsigned step = 0; step < 20; step++) { |
|
|
|
for (unsigned step = 0; step < 20; step++) { |
|
|
|
int result = stream_media_cursor_read(fast, 80000, 0, &packet); |
|
|
|
int result = stream_media_cursor_read(fast, 80000, 0, 0, &packet); |
|
|
|
if (result == STREAM_WAIT) break; |
|
|
|
if (result == STREAM_WAIT) break; |
|
|
|
CHECK(result == STREAM_OK); |
|
|
|
CHECK(result == STREAM_OK); |
|
|
|
if (packet.kind == STREAM_MEDIA_READ_VIDEO) videos++; |
|
|
|
if (packet.kind == STREAM_MEDIA_READ_VIDEO) videos++; |
|
|
|
else { CHECK(packet.kind == STREAM_MEDIA_READ_AUDIO && packet.audio.pts_us <= 80000); audio++; } |
|
|
|
else { CHECK(packet.kind == STREAM_MEDIA_READ_AUDIO && packet.audio.pts_us <= 80000); audio++; } |
|
|
|
} |
|
|
|
} |
|
|
|
CHECK(videos == 3 && audio == 5); |
|
|
|
CHECK(videos == 3 && audio == 5); |
|
|
|
CHECK(stream_media_cursor_read(slow, -1, 0, &packet) == STREAM_OK && packet.kind == STREAM_MEDIA_READ_VIDEO); |
|
|
|
CHECK(stream_media_cursor_read(slow, -1, 0, 0, &packet) == STREAM_OK && packet.kind == STREAM_MEDIA_READ_VIDEO); |
|
|
|
CHECK(packet.video.pts_us == 0 && !memcmp(packet.video.data, video_bytes, sizeof(video_bytes))); |
|
|
|
CHECK(packet.video.pts_us == 0 && !memcmp(packet.video.data, video_bytes, sizeof(video_bytes))); |
|
|
|
append_media(encoder, buffer, store, 3, 120000, STREAM_MEDIA_KEY, 0); |
|
|
|
append_media(encoder, buffer, store, 3, 120000, STREAM_MEDIA_KEY, 0); |
|
|
|
CHECK(stream_media_cursor_status(slow, &status) == STREAM_OK && status.start_us == 0 && status.ready_us == 120000); |
|
|
|
CHECK(stream_media_cursor_status(slow, &status) == STREAM_OK && status.start_us == 0 && status.ready_us == 120000); |
|
|
|
stream_media_store_gap(store, 4, 4); |
|
|
|
stream_media_store_gap(store, 4, 4); |
|
|
|
append_media(encoder, buffer, store, 5, 200000, STREAM_MEDIA_KEY, 0); |
|
|
|
append_media(encoder, buffer, store, 5, 200000, STREAM_MEDIA_KEY, 0); |
|
|
|
CHECK(stream_media_cursor_read(slow, 0, 0, &packet) == STREAM_EXPIRED); |
|
|
|
CHECK(stream_media_cursor_read(slow, 0, 0, 0, &packet) == STREAM_EXPIRED); |
|
|
|
int gap = 0; |
|
|
|
int gap = 0; |
|
|
|
for (unsigned step = 0; step < 20; step++) { |
|
|
|
for (unsigned step = 0; step < 20; step++) { |
|
|
|
int result = stream_media_cursor_read(fast, 180000, 0, &packet); |
|
|
|
int result = stream_media_cursor_read(fast, 180000, 0, 0, &packet); |
|
|
|
if (result == STREAM_GAP) { gap = 1; break; } |
|
|
|
if (result == STREAM_GAP) { gap = 1; break; } |
|
|
|
CHECK(result == STREAM_OK || result == STREAM_WAIT); |
|
|
|
CHECK(result == STREAM_OK || result == STREAM_WAIT); |
|
|
|
} |
|
|
|
} |
|
|
|
CHECK(gap); |
|
|
|
CHECK(gap); |
|
|
|
stream_media_cursor_reset(fast); |
|
|
|
stream_media_cursor_reset(fast); |
|
|
|
CHECK(stream_media_cursor_read(fast, -1, 0, &packet) == STREAM_OK && packet.kind == STREAM_MEDIA_READ_VIDEO); |
|
|
|
CHECK(stream_media_cursor_read(fast, -1, 0, 0, &packet) == STREAM_OK && packet.kind == STREAM_MEDIA_READ_VIDEO); |
|
|
|
CHECK(packet.video.pts_us == 200000); |
|
|
|
CHECK(packet.video.pts_us == 200000); |
|
|
|
stream_media_store_finish(store); |
|
|
|
stream_media_store_finish(store); |
|
|
|
int ended = 0; |
|
|
|
int ended = 0; |
|
|
|
for (unsigned step = 0; step < 20; step++) { |
|
|
|
for (unsigned step = 0; step < 20; step++) { |
|
|
|
int result = stream_media_cursor_read(fast, 1000000, 0, &packet); |
|
|
|
int result = stream_media_cursor_read(fast, 1000000, 0, 0, &packet); |
|
|
|
CHECK(result == STREAM_OK || result == STREAM_WAIT); |
|
|
|
CHECK(result == STREAM_OK || result == STREAM_WAIT); |
|
|
|
if (result == STREAM_OK && packet.kind == STREAM_MEDIA_READ_END) { ended = 1; break; } |
|
|
|
if (result == STREAM_OK && packet.kind == STREAM_MEDIA_READ_END) { ended = 1; break; } |
|
|
|
} |
|
|
|
} |
|
|
|
|