mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
mpegtsenc: fix handling of large audio packets
(sorry i have no sample, just a user report) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
057161d39b
commit
e31c5ebe11
@ -24,6 +24,7 @@
|
||||
#include "libavutil/dict.h"
|
||||
#include "libavutil/mathematics.h"
|
||||
#include "libavutil/opt.h"
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavcodec/mpegvideo.h"
|
||||
#include "avformat.h"
|
||||
#include "internal.h"
|
||||
@ -1022,20 +1023,21 @@ static int mpegts_write_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
}
|
||||
}
|
||||
|
||||
if (st->codec->codec_type != AVMEDIA_TYPE_AUDIO) {
|
||||
// for video and subtitle, write a single pes packet
|
||||
mpegts_write_pes(s, st, buf, size, pts, dts, pkt->flags & AV_PKT_FLAG_KEY);
|
||||
av_free(data);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (ts_st->payload_index + size > DEFAULT_PES_PAYLOAD_SIZE) {
|
||||
if (ts_st->payload_index && ts_st->payload_index + size > DEFAULT_PES_PAYLOAD_SIZE) {
|
||||
mpegts_write_pes(s, st, ts_st->payload, ts_st->payload_index,
|
||||
ts_st->payload_pts, ts_st->payload_dts,
|
||||
ts_st->payload_flags & AV_PKT_FLAG_KEY);
|
||||
ts_st->payload_index = 0;
|
||||
}
|
||||
|
||||
if (st->codec->codec_type != AVMEDIA_TYPE_AUDIO || size > DEFAULT_PES_PAYLOAD_SIZE) {
|
||||
av_assert0(!ts_st->payload_index);
|
||||
// for video and subtitle, write a single pes packet
|
||||
mpegts_write_pes(s, st, buf, size, pts, dts, pkt->flags & AV_PKT_FLAG_KEY);
|
||||
av_free(data);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!ts_st->payload_index) {
|
||||
ts_st->payload_pts = pts;
|
||||
ts_st->payload_dts = dts;
|
||||
|
Loading…
Reference in New Issue
Block a user