diff options
author | Jaakko Keränen <jaakko.keranen@iki.fi> | 2020-10-06 13:27:31 +0300 |
---|---|---|
committer | Jaakko Keränen <jaakko.keranen@iki.fi> | 2020-10-06 13:27:31 +0300 |
commit | 403d8fc06fda157b134f96328f98b9305509b5a3 (patch) | |
tree | a7ac4dc92dfcaa9fafddb65377a1d8a8cf61cccd /src/audio | |
parent | 3ed9a627712bf6223e521e1f63a113404fea824a (diff) |
Updating media content
Making it possible for media to be partially updated, for streaming. Also fixed a problem with multiple concurrent audio players started on a single media item.
Diffstat (limited to 'src/audio')
-rw-r--r-- | src/audio/player.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/audio/player.c b/src/audio/player.c index f1d6a2c8..177613bb 100644 --- a/src/audio/player.c +++ b/src/audio/player.c | |||
@@ -477,10 +477,16 @@ void updateSourceData_Player(iPlayer *d, const iBlock *data, enum iPlayerUpdate | |||
477 | set_Block(&input->data, data); | 477 | set_Block(&input->data, data); |
478 | input->isComplete = iFalse; | 478 | input->isComplete = iFalse; |
479 | break; | 479 | break; |
480 | case append_PlayerUpdate: | 480 | case append_PlayerUpdate: { |
481 | append_Block(&input->data, data); | 481 | const size_t oldSize = size_Block(&input->data); |
482 | const size_t newSize = size_Block(data); | ||
483 | iAssert(newSize >= oldSize); | ||
484 | /* The old parts cannot have changed. */ | ||
485 | iAssert(memcmp(constData_Block(&input->data), constData_Block(data), oldSize) == 0); | ||
486 | appendData_Block(&input->data, constBegin_Block(data) + oldSize, newSize - oldSize); | ||
482 | input->isComplete = iFalse; | 487 | input->isComplete = iFalse; |
483 | break; | 488 | break; |
489 | } | ||
484 | case complete_PlayerUpdate: | 490 | case complete_PlayerUpdate: |
485 | input->isComplete = iTrue; | 491 | input->isComplete = iTrue; |
486 | break; | 492 | break; |