avformat/mux: Avoid overhead of packet list in case of single streams
Reviewed-by: Paul B Mahol <onemda@gmail.com> Reviewed-by: James Almer <jamrial@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
c03e53aea7
commit
52d13d54e1
@ -759,6 +759,13 @@ int ff_add_attached_pic(AVFormatContext *s, AVStream *st, AVIOContext *pb,
|
|||||||
int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *pkt,
|
int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *pkt,
|
||||||
int flush, int has_packet);
|
int flush, int has_packet);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interleave packets directly in the order in which they arrive
|
||||||
|
* without any sort of buffering.
|
||||||
|
*/
|
||||||
|
int ff_interleave_packet_passthrough(AVFormatContext *s, AVPacket *pkt,
|
||||||
|
int flush, int has_packet);
|
||||||
|
|
||||||
void ff_free_stream(AVFormatContext *s, AVStream *st);
|
void ff_free_stream(AVFormatContext *s, AVStream *st);
|
||||||
|
|
||||||
unsigned int ff_codec_get_tag(const AVCodecTag *tags, enum AVCodecID id);
|
unsigned int ff_codec_get_tag(const AVCodecTag *tags, enum AVCodecID id);
|
||||||
|
@ -336,7 +336,9 @@ static int init_muxer(AVFormatContext *s, AVDictionary **options)
|
|||||||
}
|
}
|
||||||
si->interleave_packet = of->interleave_packet;
|
si->interleave_packet = of->interleave_packet;
|
||||||
if (!si->interleave_packet)
|
if (!si->interleave_packet)
|
||||||
si->interleave_packet = ff_interleave_packet_per_dts;
|
si->interleave_packet = si->nb_interleaved_streams > 1 ?
|
||||||
|
ff_interleave_packet_per_dts :
|
||||||
|
ff_interleave_packet_passthrough;
|
||||||
|
|
||||||
if (!s->priv_data && of->priv_data_size > 0) {
|
if (!s->priv_data && of->priv_data_size > 0) {
|
||||||
s->priv_data = av_mallocz(of->priv_data_size);
|
s->priv_data = av_mallocz(of->priv_data_size);
|
||||||
@ -1028,6 +1030,12 @@ int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *pkt,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ff_interleave_packet_passthrough(AVFormatContext *s, AVPacket *pkt,
|
||||||
|
int flush, int has_packet)
|
||||||
|
{
|
||||||
|
return has_packet;
|
||||||
|
}
|
||||||
|
|
||||||
int ff_get_muxer_ts_offset(AVFormatContext *s, int stream_index, int64_t *offset)
|
int ff_get_muxer_ts_offset(AVFormatContext *s, int stream_index, int64_t *offset)
|
||||||
{
|
{
|
||||||
AVStream *st;
|
AVStream *st;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user