mirror of
https://github.com/mpv-player/mpv
synced 2025-02-16 12:17:12 +00:00
demux: simplify packet resizing
Actually we don't need to resize packets; we just need to make them shorter.
This commit is contained in:
parent
ee2e91dce1
commit
7e7ff4b0ea
@ -167,21 +167,11 @@ struct demux_packet *new_demux_packet_from(void *data, size_t len)
|
|||||||
return dp;
|
return dp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void resize_demux_packet(struct demux_packet *dp, size_t len)
|
void demux_packet_shorten(struct demux_packet *dp, size_t len)
|
||||||
{
|
{
|
||||||
if (len > 1000000000) {
|
assert(len <= dp->len);
|
||||||
fprintf(stderr, "Attempt to realloc demux packet over 1 GB!\n");
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
assert(dp->allocation);
|
|
||||||
dp->buffer = realloc(dp->buffer, len + FF_INPUT_BUFFER_PADDING_SIZE);
|
|
||||||
if (!dp->buffer) {
|
|
||||||
fprintf(stderr, "Memory allocation failure!\n");
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
memset(dp->buffer + len, 0, FF_INPUT_BUFFER_PADDING_SIZE);
|
|
||||||
dp->len = len;
|
dp->len = len;
|
||||||
dp->allocation = dp->buffer;
|
memset(dp->buffer + dp->len, 0, FF_INPUT_BUFFER_PADDING_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void free_demux_packet(struct demux_packet *dp)
|
void free_demux_packet(struct demux_packet *dp)
|
||||||
|
@ -223,7 +223,7 @@ struct demux_packet *new_demux_packet(size_t len);
|
|||||||
// data must already have suitable padding
|
// data must already have suitable padding
|
||||||
struct demux_packet *new_demux_packet_fromdata(void *data, size_t len);
|
struct demux_packet *new_demux_packet_fromdata(void *data, size_t len);
|
||||||
struct demux_packet *new_demux_packet_from(void *data, size_t len);
|
struct demux_packet *new_demux_packet_from(void *data, size_t len);
|
||||||
void resize_demux_packet(struct demux_packet *dp, size_t len);
|
void demux_packet_shorten(struct demux_packet *dp, size_t len);
|
||||||
void free_demux_packet(struct demux_packet *dp);
|
void free_demux_packet(struct demux_packet *dp);
|
||||||
struct demux_packet *demux_copy_packet(struct demux_packet *dp);
|
struct demux_packet *demux_copy_packet(struct demux_packet *dp);
|
||||||
|
|
||||||
|
@ -231,7 +231,7 @@ static int raw_fill_buffer(demuxer_t *demuxer)
|
|||||||
dp->pts = (dp->pos / p->frame_size) / p->frame_rate;
|
dp->pts = (dp->pos / p->frame_size) / p->frame_rate;
|
||||||
|
|
||||||
int len = stream_read(demuxer->stream, dp->buffer, dp->len);
|
int len = stream_read(demuxer->stream, dp->buffer, dp->len);
|
||||||
resize_demux_packet(dp, len);
|
demux_packet_shorten(dp, len);
|
||||||
demuxer_add_packet(demuxer, demuxer->streams[0], dp);
|
demuxer_add_packet(demuxer, demuxer->streams[0], dp);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user