Signed-off-by: Michael Niedermayer <michaelni@gmx.at>tags/n2.4
@@ -549,7 +549,7 @@ static int hds_write_packet(AVFormatContext *s, AVPacket *pkt) | |||||
os->last_ts = pkt->dts; | os->last_ts = pkt->dts; | ||||
os->packets_written++; | os->packets_written++; | ||||
return ff_write_chained(os->ctx, pkt->stream_index - os->first_stream, pkt, s); | |||||
return ff_write_chained(os->ctx, pkt->stream_index - os->first_stream, pkt, s, 0); | |||||
} | } | ||||
static int hds_write_trailer(AVFormatContext *s) | static int hds_write_trailer(AVFormatContext *s) | ||||
@@ -302,7 +302,7 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt) | |||||
return ret; | return ret; | ||||
} | } | ||||
ret = ff_write_chained(oc, pkt->stream_index, pkt, s); | |||||
ret = ff_write_chained(oc, pkt->stream_index, pkt, s, 0); | |||||
return ret; | return ret; | ||||
} | } | ||||
@@ -134,10 +134,11 @@ void ff_sdp_write_media(char *buff, int size, AVStream *st, int idx, | |||||
* @param dst_stream the stream index within dst to write the packet to | * @param dst_stream the stream index within dst to write the packet to | ||||
* @param pkt the packet to be written | * @param pkt the packet to be written | ||||
* @param src the muxer the packet originally was intended for | * @param src the muxer the packet originally was intended for | ||||
* @param interleave 0->use av_write_frame, 1->av_write_interleaved_frame | |||||
* @return the value av_write_frame returned | * @return the value av_write_frame returned | ||||
*/ | */ | ||||
int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt, | int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt, | ||||
AVFormatContext *src); | |||||
AVFormatContext *src, int interleave); | |||||
/** | /** | ||||
* Get the length in bytes which is needed to store val as v. | * Get the length in bytes which is needed to store val as v. | ||||
@@ -422,7 +422,7 @@ int ff_mov_add_hinted_packet(AVFormatContext *s, AVPacket *pkt, | |||||
sample_queue_push(&trk->sample_queue, pkt->data, pkt->size, sample); | sample_queue_push(&trk->sample_queue, pkt->data, pkt->size, sample); | ||||
/* Feed the packet to the RTP muxer */ | /* Feed the packet to the RTP muxer */ | ||||
ff_write_chained(rtp_ctx, 0, pkt, s); | |||||
ff_write_chained(rtp_ctx, 0, pkt, s, 0); | |||||
/* Fetch the output from the RTP muxer, open a new output buffer | /* Fetch the output from the RTP muxer, open a new output buffer | ||||
* for next time. */ | * for next time. */ | ||||
@@ -960,7 +960,7 @@ int av_get_output_timestamp(struct AVFormatContext *s, int stream, | |||||
} | } | ||||
int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt, | int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt, | ||||
AVFormatContext *src) | |||||
AVFormatContext *src, int interleave) | |||||
{ | { | ||||
AVPacket local_pkt; | AVPacket local_pkt; | ||||
int ret; | int ret; | ||||
@@ -980,7 +980,8 @@ int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt, | |||||
src->streams[pkt->stream_index]->time_base, | src->streams[pkt->stream_index]->time_base, | ||||
dst->streams[dst_stream]->time_base); | dst->streams[dst_stream]->time_base); | ||||
ret = av_write_frame(dst, &local_pkt); | |||||
if (interleave) ret = av_interleaved_write_frame(dst, &local_pkt); | |||||
else ret = av_write_frame(dst, &local_pkt); | |||||
pkt->buf = local_pkt.buf; | pkt->buf = local_pkt.buf; | ||||
pkt->destruct = local_pkt.destruct; | pkt->destruct = local_pkt.destruct; | ||||
return ret; | return ret; | ||||
@@ -212,7 +212,7 @@ static int rtsp_write_packet(AVFormatContext *s, AVPacket *pkt) | |||||
rtsp_st = rt->rtsp_streams[pkt->stream_index]; | rtsp_st = rt->rtsp_streams[pkt->stream_index]; | ||||
rtpctx = rtsp_st->transport_priv; | rtpctx = rtsp_st->transport_priv; | ||||
ret = ff_write_chained(rtpctx, 0, pkt, s); | |||||
ret = ff_write_chained(rtpctx, 0, pkt, s, 0); | |||||
/* ff_write_chained does all the RTP packetization. If using TCP as | /* ff_write_chained does all the RTP packetization. If using TCP as | ||||
* transport, rtpctx->pb is only a dyn_packet_buf that queues up the | * transport, rtpctx->pb is only a dyn_packet_buf that queues up the | ||||
* packets, so we need to send them out on the TCP connection separately. | * packets, so we need to send them out on the TCP connection separately. | ||||
@@ -256,7 +256,7 @@ static int sap_write_packet(AVFormatContext *s, AVPacket *pkt) | |||||
sap->last_time = now; | sap->last_time = now; | ||||
} | } | ||||
rtpctx = s->streams[pkt->stream_index]->priv_data; | rtpctx = s->streams[pkt->stream_index]->priv_data; | ||||
return ff_write_chained(rtpctx, 0, pkt, s); | |||||
return ff_write_chained(rtpctx, 0, pkt, s, 0); | |||||
} | } | ||||
AVOutputFormat ff_sap_muxer = { | AVOutputFormat ff_sap_muxer = { | ||||
@@ -766,7 +766,7 @@ static int seg_write_packet(AVFormatContext *s, AVPacket *pkt) | |||||
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &st->time_base), | av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &st->time_base), | ||||
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &st->time_base)); | av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &st->time_base)); | ||||
ret = ff_write_chained(seg->avf, pkt->stream_index, pkt, s); | |||||
ret = ff_write_chained(seg->avf, pkt->stream_index, pkt, s, 0); | |||||
fail: | fail: | ||||
if (pkt->stream_index == seg->reference_stream_index) { | if (pkt->stream_index == seg->reference_stream_index) { | ||||
@@ -593,7 +593,7 @@ static int ism_write_packet(AVFormatContext *s, AVPacket *pkt) | |||||
} | } | ||||
os->packets_written++; | os->packets_written++; | ||||
return ff_write_chained(os->ctx, 0, pkt, s); | |||||
return ff_write_chained(os->ctx, 0, pkt, s, 0); | |||||
} | } | ||||
static int ism_write_trailer(AVFormatContext *s) | static int ism_write_trailer(AVFormatContext *s) | ||||