* not decoded, for example to get the codec parameters in MPEG
* streams.
*/
- struct AVPacketList *packet_buffer;
- struct AVPacketList *packet_buffer_end;
+ struct PacketList *packet_buffer;
+ struct PacketList *packet_buffer_end;
/* av_seek_frame() support */
int64_t data_offset; /**< offset of the first packet */
* be identified, as parsing cannot be done without knowing the
* codec.
*/
- struct AVPacketList *raw_packet_buffer;
- struct AVPacketList *raw_packet_buffer_end;
+ struct PacketList *raw_packet_buffer;
+ struct PacketList *raw_packet_buffer_end;
/**
* Packets split by the parser get queued here.
*/
- struct AVPacketList *parse_queue;
- struct AVPacketList *parse_queue_end;
+ struct PacketList *parse_queue;
+ struct PacketList *parse_queue_end;
+ /**
+ * The generic code uses this as a temporary packet
+ * to parse packets; it may also be used for other means
+ * for short periods that are guaranteed not to overlap
+ * with calls to av_read_frame() (or ff_read_packet())
+ * or with each other.
+ * It may be used by demuxers as a replacement for
+ * stack packets (unless they call one of the aforementioned
+ * functions with their own AVFormatContext).
+ * Every user has to ensure that this packet is blank
+ * after using it.
+ */
+ AVPacket *parse_pkt;
+
+ /**
+ * Used to hold temporary packets.
+ */
+ AVPacket *pkt;
/**
* Remaining size available for raw_packet_buffer, in bytes.
*/
* supported) */
struct {
AVBSFContext *bsf;
- AVPacket *pkt;
int inited;
} extract_extradata;
/**
* last packet in packet_buffer for this stream when muxing.
*/
- struct AVPacketList *last_in_packet_buffer;
+ struct PacketList *last_in_packet_buffer;
};
#ifdef __GNUC__
} while(0)
#endif
-struct tm *ff_brktimegm(time_t secs, struct tm *tm);
-
/**
* Automatically create sub-directories
*
*/
uint64_t ff_get_formatted_ntp_time(uint64_t ntp_time_us);
+/**
+ * Parse the NTP time in micro seconds (since NTP epoch).
+ *
+ * @param ntp_ts NTP time stamp formatted as per the RFC-5905.
+ * @return the time in micro seconds (since NTP epoch)
+ */
+uint64_t ff_parse_ntp_time(uint64_t ntp_ts);
+
/**
* Append the media-specific SDP fragment for the media stream c
* to the buffer buff.
*
* @return AVChapter or NULL on error
*/
-AVChapter *avpriv_new_chapter(AVFormatContext *s, int id, AVRational time_base,
+AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_base,
int64_t start, int64_t end, const char *title);
/**
*/
int ff_read_packet(AVFormatContext *s, AVPacket *pkt);
+/**
+ * Add an attached pic to an AVStream.
+ *
+ * @param st if set, the stream to add the attached pic to;
+ * if unset, a new stream will be added to s.
+ * @param pb AVIOContext to read data from if buf is unset.
+ * @param buf if set, it contains the data and size information to be used
+ * for the attached pic; if unset, data is read from pb.
+ * @param size the size of the data to read if buf is unset.
+ *
+ * @return 0 on success, < 0 on error. On error, this function removes
+ * the stream it has added (if any).
+ */
+int ff_add_attached_pic(AVFormatContext *s, AVStream *st, AVIOContext *pb,
+ AVBufferRef **buf, int size);
+
/**
* Interleave an AVPacket per dts so it can be muxed.
*
/**
* Find the next packet in the interleaving queue for the given stream.
- * The pkt parameter is filled in with the queued packet, including
- * references to the data (which the caller is not allowed to keep or
- * modify).
*
- * @return 0 if a packet was found, a negative value if no packet was found
+ * @return a pointer to a packet if one was found, NULL otherwise.
*/
-int ff_interleaved_peek(AVFormatContext *s, int stream,
- AVPacket *pkt, int add_offset);
+const AVPacket *ff_interleaved_peek(AVFormatContext *s, int stream);
+int ff_get_muxer_ts_offset(AVFormatContext *s, int stream_index, int64_t *offset);
int ff_lock_avformat(void);
int ff_unlock_avformat(void);