Add a libavformat internal function ff_write_chained
Originally committed as revision 23207 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
6531b5c9f4
commit
9a76125069
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user