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 */ | ||||