Skip to content

Commit

Permalink
avformat/librist: rework librist_read
Browse files Browse the repository at this point in the history
Queue tracking makes no difference so remove it, return EAGAIN of no data is
available and rist data block needs to be freed even for zero sized packets.

Signed-off-by: Marton Balint <[email protected]>
  • Loading branch information
cus committed Mar 13, 2021
1 parent 4098f80 commit 4b1e387
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions libavformat/librist.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
typedef struct RISTContext {
const AVClass *class;

int queue_count;
int profile;
int buffer_size;
int log_level;
Expand Down Expand Up @@ -184,16 +183,19 @@ static int librist_read(URLContext *h, uint8_t *buf, int size)
const struct rist_data_block *data_block;
int ret;

ret = rist_receiver_data_read(s->ctx, &data_block, s->queue_count <= 0 ? POLLING_TIME : 0);
ret = rist_receiver_data_read(s->ctx, &data_block, POLLING_TIME);
if (ret < 0)
return risterr2ret(ret);

if (ret == 0 || data_block->payload_len <= 0)
return 0;
if (ret == 0)
return AVERROR(EAGAIN);

s->queue_count = ret - 1;
size = data_block->payload_len;
if (data_block->payload_len > 9968) {
rist_receiver_data_block_free((struct rist_data_block**)&data_block);
return AVERROR_EXTERNAL;
}

size = data_block->payload_len;
memcpy(buf, data_block->payload, size);
rist_receiver_data_block_free((struct rist_data_block**)&data_block);

Expand Down

0 comments on commit 4b1e387

Please sign in to comment.