Commit 789565a5 authored by mstorsjo's avatar mstorsjo

Add a libavformat internal function ff_write_chained


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@23207 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 6f27ee0c
......@@ -154,4 +154,18 @@ int ff_url_join(char *str, int size, const char *proto,
void ff_sdp_write_media(char *buff, int size, AVCodecContext *c,
const char *dest_addr, int port, int ttl);
/**
* Write a packet to another muxer than the one the user originally
* intended. Useful when chaining muxers, where one muxer internally
* writes a received packet to another muxer.
*
* @param dst the muxer 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 src the muxer the packet originally was intended for
* @return the value av_write_frame returned
*/
int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt,
AVFormatContext *src);
#endif /* AVFORMAT_INTERNAL_H */
......@@ -3591,3 +3591,22 @@ int ff_url_join(char *str, int size, const char *proto,
}
return strlen(str);
}
int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt,
AVFormatContext *src)
{
AVPacket local_pkt;
local_pkt = *pkt;
local_pkt.stream_index = dst_stream;
if (pkt->pts != AV_NOPTS_VALUE)
local_pkt.pts = av_rescale_q(pkt->pts,
src->streams[pkt->stream_index]->time_base,
dst->streams[dst_stream]->time_base);
if (pkt->dts != AV_NOPTS_VALUE)
local_pkt.dts = av_rescale_q(pkt->dts,
src->streams[pkt->stream_index]->time_base,
dst->streams[dst_stream]->time_base);
return av_write_frame(dst, &local_pkt);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment