There is no reason for it to be public, it's only meant to be used internally.tags/n0.11
@@ -1374,23 +1374,15 @@ int av_write_frame(AVFormatContext *s, AVPacket *pkt); | |||||
*/ | */ | ||||
int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt); | int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt); | ||||
#if FF_API_INTERLEAVE_PACKET | |||||
/** | /** | ||||
* Interleave a packet per dts in an output media file. | |||||
* | |||||
* Packets with pkt->destruct == av_destruct_packet will be freed inside this | |||||
* function, so they cannot be used after it. Note that calling av_free_packet() | |||||
* on them is still safe. | |||||
* | |||||
* @param s media file handle | |||||
* @param out the interleaved packet will be output here | |||||
* @param pkt the input packet | |||||
* @param flush 1 if no further packets are available as input and all | |||||
* remaining packets should be output | |||||
* @return 1 if a packet was output, 0 if no packet could be output, | |||||
* < 0 if an error occurred | |||||
* @deprecated this function was never meant to be called by the user | |||||
* programs. | |||||
*/ | */ | ||||
attribute_deprecated | |||||
int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, | int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, | ||||
AVPacket *pkt, int flush); | AVPacket *pkt, int flush); | ||||
#endif | |||||
/** | /** | ||||
* Write the stream trailer to an output media file and free the | * Write the stream trailer to an output media file and free the | ||||
@@ -936,7 +936,7 @@ static int gxf_interleave_packet(AVFormatContext *s, AVPacket *out, AVPacket *pk | |||||
if (pkt && s->streams[pkt->stream_index]->codec->codec_type == AVMEDIA_TYPE_VIDEO) | if (pkt && s->streams[pkt->stream_index]->codec->codec_type == AVMEDIA_TYPE_VIDEO) | ||||
pkt->duration = 2; // enforce 2 fields | pkt->duration = 2; // enforce 2 fields | ||||
return ff_audio_rechunk_interleave(s, out, pkt, flush, | return ff_audio_rechunk_interleave(s, out, pkt, flush, | ||||
av_interleave_packet_per_dts, gxf_compare_field_nb); | |||||
ff_interleave_packet_per_dts, gxf_compare_field_nb); | |||||
} | } | ||||
AVOutputFormat ff_gxf_muxer = { | AVOutputFormat ff_gxf_muxer = { | ||||
@@ -327,4 +327,22 @@ int ff_framehash_write_header(AVFormatContext *s); | |||||
*/ | */ | ||||
int ff_read_packet(AVFormatContext *s, AVPacket *pkt); | int ff_read_packet(AVFormatContext *s, AVPacket *pkt); | ||||
/** | |||||
* Interleave a packet per dts in an output media file. | |||||
* | |||||
* Packets with pkt->destruct == av_destruct_packet will be freed inside this | |||||
* function, so they cannot be used after it. Note that calling av_free_packet() | |||||
* on them is still safe. | |||||
* | |||||
* @param s media file handle | |||||
* @param out the interleaved packet will be output here | |||||
* @param pkt the input packet | |||||
* @param flush 1 if no further packets are available as input and all | |||||
* remaining packets should be output | |||||
* @return 1 if a packet was output, 0 if no packet could be output, | |||||
* < 0 if an error occurred | |||||
*/ | |||||
int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, | |||||
AVPacket *pkt, int flush); | |||||
#endif /* AVFORMAT_INTERNAL_H */ | #endif /* AVFORMAT_INTERNAL_H */ |
@@ -3068,7 +3068,9 @@ static int ff_interleave_compare_dts(AVFormatContext *s, AVPacket *next, AVPacke | |||||
return comp > 0; | return comp > 0; | ||||
} | } | ||||
int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, AVPacket *pkt, int flush){ | |||||
int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, | |||||
AVPacket *pkt, int flush) | |||||
{ | |||||
AVPacketList *pktl; | AVPacketList *pktl; | ||||
int stream_count=0; | int stream_count=0; | ||||
int i; | int i; | ||||
@@ -3098,6 +3100,14 @@ int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, AVPacket *pk | |||||
} | } | ||||
} | } | ||||
#if FF_API_INTERLEAVE_PACKET | |||||
int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, | |||||
AVPacket *pkt, int flush) | |||||
{ | |||||
return ff_interleave_packet_per_dts(s, out, pkt, flush); | |||||
} | |||||
#endif | |||||
/** | /** | ||||
* Interleave an AVPacket correctly so it can be muxed. | * Interleave an AVPacket correctly so it can be muxed. | ||||
* @param out the interleaved packet will be output here | * @param out the interleaved packet will be output here | ||||
@@ -3114,7 +3124,7 @@ static int interleave_packet(AVFormatContext *s, AVPacket *out, AVPacket *in, in | |||||
av_free_packet(in); | av_free_packet(in); | ||||
return ret; | return ret; | ||||
} else | } else | ||||
return av_interleave_packet_per_dts(s, out, in, flush); | |||||
return ff_interleave_packet_per_dts(s, out, in, flush); | |||||
} | } | ||||
int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt){ | int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt){ | ||||
@@ -56,5 +56,8 @@ | |||||
#ifndef FF_API_READ_PACKET | #ifndef FF_API_READ_PACKET | ||||
#define FF_API_READ_PACKET (LIBAVFORMAT_VERSION_MAJOR < 55) | #define FF_API_READ_PACKET (LIBAVFORMAT_VERSION_MAJOR < 55) | ||||
#endif | #endif | ||||
#ifndef FF_API_INTERLEAVE_PACKET | |||||
#define FF_API_INTERLEAVE_PACKET (LIBAVFORMAT_VERSION_MAJOR < 55) | |||||
#endif | |||||
#endif /* AVFORMAT_VERSION_H */ | #endif /* AVFORMAT_VERSION_H */ |