28
28
#include <libavformat/avformat.h>
29
29
30
30
/* Taken from libavformat/utils.c */
31
+ #if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT (54 ,0 ,0 )
31
32
static void flush_packet_queue (AVFormatContext * s )
32
33
{
33
34
AVPacketList * pktl ;
@@ -53,6 +54,27 @@ static void flush_packet_queue(AVFormatContext *s)
53
54
s -> raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE ;
54
55
#endif
55
56
}
57
+ #else
58
+ static void free_packet_buffer (AVPacketList * * pkt_buf , AVPacketList * * pkt_buf_end )
59
+ {
60
+ while (* pkt_buf ) {
61
+ AVPacketList * pktl = * pkt_buf ;
62
+ * pkt_buf = pktl -> next ;
63
+ av_free_packet (& pktl -> pkt );
64
+ av_freep (& pktl );
65
+ }
66
+ * pkt_buf_end = NULL ;
67
+ }
68
+ /* XXX: suppress the packet queue */
69
+ static void flush_packet_queue (AVFormatContext * s )
70
+ {
71
+ free_packet_buffer (& s -> parse_queue , & s -> parse_queue_end );
72
+ free_packet_buffer (& s -> packet_buffer , & s -> packet_buffer_end );
73
+ free_packet_buffer (& s -> raw_packet_buffer , & s -> raw_packet_buffer_end );
74
+
75
+ s -> raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE ;
76
+ }
77
+ #endif
56
78
57
79
/* Taken from libavformat/utils.c */
58
80
void av_read_frame_flush (AVFormatContext * s )
@@ -62,7 +84,9 @@ void av_read_frame_flush(AVFormatContext *s)
62
84
63
85
flush_packet_queue (s );
64
86
87
+ #if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT (54 ,0 ,0 )
65
88
s -> cur_st = NULL ;
89
+ #endif
66
90
67
91
/* for each stream, reset read state */
68
92
for (i = 0 ; i < s -> nb_streams ; i ++ ) {
@@ -71,14 +95,25 @@ void av_read_frame_flush(AVFormatContext *s)
71
95
if (st -> parser ) {
72
96
av_parser_close (st -> parser );
73
97
st -> parser = NULL ;
98
+ #if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT (54 ,0 ,0 )
74
99
av_free_packet (& st -> cur_pkt );
100
+ #endif
75
101
}
76
102
st -> last_IP_pts = AV_NOPTS_VALUE ;
103
+ #if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT (54 ,0 ,0 )
77
104
st -> cur_dts = AV_NOPTS_VALUE ; /* we set the current DTS to an unspecified origin */
78
105
st -> reference_dts = AV_NOPTS_VALUE ;
79
106
/* fail safe */
80
107
st -> cur_ptr = NULL ;
81
108
st -> cur_len = 0 ;
109
+ #else
110
+ #define RELATIVE_TS_BASE (INT64_MAX - (1LL<<48))
111
+ if (st -> first_dts == AV_NOPTS_VALUE ) st -> cur_dts = RELATIVE_TS_BASE ;
112
+ else st -> cur_dts = AV_NOPTS_VALUE ; /* we set the current DTS to an unspecified origin */
113
+ st -> reference_dts = AV_NOPTS_VALUE ;
114
+
115
+ st -> probe_packets = MAX_PROBE_PACKETS ;
116
+ #endif
82
117
83
118
for (j = 0 ; j < MAX_REORDER_DELAY + 1 ; j ++ )
84
119
st -> pts_buffer [j ]= AV_NOPTS_VALUE ;
0 commit comments