mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
asf: split ASFContext into muxer and demuxer parts.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 4bc328a2bd
)
This commit is contained in:
parent
7ade06cc2e
commit
83120e3bd7
@ -79,64 +79,6 @@ typedef struct {
|
||||
uint16_t packet_count;
|
||||
} ASFIndex;
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint32_t seqno;
|
||||
int is_streamed;
|
||||
int asfid2avid[128]; ///< conversion table from asf ID 2 AVStream ID
|
||||
ASFStream streams[128]; ///< it's max number and it's not that big
|
||||
uint32_t stream_bitrates[128]; ///< max number of streams, bitrate for each (for streaming)
|
||||
char stream_languages[128][6]; ///< max number of streams, language for each (RFC1766, e.g. en-US)
|
||||
/* non streamed additonnal info */
|
||||
uint64_t nb_packets; ///< how many packets are there in the file, invalid if broadcasting
|
||||
int64_t duration; ///< in 100ns units
|
||||
/* packet filling */
|
||||
unsigned char multi_payloads_present;
|
||||
int packet_size_left;
|
||||
int packet_timestamp_start;
|
||||
int packet_timestamp_end;
|
||||
unsigned int packet_nb_payloads;
|
||||
int packet_nb_frames;
|
||||
uint8_t packet_buf[PACKET_SIZE];
|
||||
ByteIOContext pb;
|
||||
/* only for reading */
|
||||
uint64_t data_offset; ///< beginning of the first data packet
|
||||
uint64_t data_object_offset; ///< data object offset (excl. GUID & size)
|
||||
uint64_t data_object_size; ///< size of the data object
|
||||
int index_read;
|
||||
|
||||
ASFMainHeader hdr;
|
||||
|
||||
int packet_flags;
|
||||
int packet_property;
|
||||
int packet_timestamp;
|
||||
int packet_segsizetype;
|
||||
int packet_segments;
|
||||
int packet_seq;
|
||||
int packet_replic_size;
|
||||
int packet_key_frame;
|
||||
int packet_padsize;
|
||||
unsigned int packet_frag_offset;
|
||||
unsigned int packet_frag_size;
|
||||
int64_t packet_frag_timestamp;
|
||||
int packet_multi_size;
|
||||
int packet_obj_size;
|
||||
int packet_time_delta;
|
||||
int packet_time_start;
|
||||
int64_t packet_pos;
|
||||
|
||||
int stream_index;
|
||||
|
||||
|
||||
int64_t last_indexed_pts;
|
||||
ASFIndex* index_ptr;
|
||||
uint32_t nb_index_count;
|
||||
uint32_t nb_index_memory_alloc;
|
||||
uint16_t maximum_packet;
|
||||
|
||||
ASFStream* asf_st; ///< currently decoded stream
|
||||
} ASFContext;
|
||||
|
||||
extern const ff_asf_guid ff_asf_header;
|
||||
extern const ff_asf_guid ff_asf_file_header;
|
||||
extern const ff_asf_guid ff_asf_stream_header;
|
||||
|
@ -32,6 +32,47 @@
|
||||
|
||||
void ff_mms_set_stream_selection(URLContext *h, AVFormatContext *format);
|
||||
|
||||
typedef struct {
|
||||
int asfid2avid[128]; ///< conversion table from asf ID 2 AVStream ID
|
||||
ASFStream streams[128]; ///< it's max number and it's not that big
|
||||
uint32_t stream_bitrates[128]; ///< max number of streams, bitrate for each (for streaming)
|
||||
char stream_languages[128][6]; ///< max number of streams, language for each (RFC1766, e.g. en-US)
|
||||
/* non streamed additonnal info */
|
||||
uint64_t nb_packets; ///< how many packets are there in the file, invalid if broadcasting
|
||||
/* packet filling */
|
||||
int packet_size_left;
|
||||
int packet_nb_frames;
|
||||
/* only for reading */
|
||||
uint64_t data_offset; ///< beginning of the first data packet
|
||||
uint64_t data_object_offset; ///< data object offset (excl. GUID & size)
|
||||
uint64_t data_object_size; ///< size of the data object
|
||||
int index_read;
|
||||
|
||||
ASFMainHeader hdr;
|
||||
|
||||
int packet_flags;
|
||||
int packet_property;
|
||||
int packet_timestamp;
|
||||
int packet_segsizetype;
|
||||
int packet_segments;
|
||||
int packet_seq;
|
||||
int packet_replic_size;
|
||||
int packet_key_frame;
|
||||
int packet_padsize;
|
||||
unsigned int packet_frag_offset;
|
||||
unsigned int packet_frag_size;
|
||||
int64_t packet_frag_timestamp;
|
||||
int packet_multi_size;
|
||||
int packet_obj_size;
|
||||
int packet_time_delta;
|
||||
int packet_time_start;
|
||||
int64_t packet_pos;
|
||||
|
||||
int stream_index;
|
||||
|
||||
ASFStream* asf_st; ///< currently decoded stream
|
||||
} ASFContext;
|
||||
|
||||
#undef NDEBUG
|
||||
#include <assert.h>
|
||||
|
||||
|
@ -188,6 +188,31 @@
|
||||
2*PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS \
|
||||
)
|
||||
|
||||
typedef struct {
|
||||
uint32_t seqno;
|
||||
int is_streamed;
|
||||
ASFStream streams[128]; ///< it's max number and it's not that big
|
||||
/* non streamed additonnal info */
|
||||
uint64_t nb_packets; ///< how many packets are there in the file, invalid if broadcasting
|
||||
int64_t duration; ///< in 100ns units
|
||||
/* packet filling */
|
||||
unsigned char multi_payloads_present;
|
||||
int packet_size_left;
|
||||
int packet_timestamp_start;
|
||||
int packet_timestamp_end;
|
||||
unsigned int packet_nb_payloads;
|
||||
uint8_t packet_buf[PACKET_SIZE];
|
||||
ByteIOContext pb;
|
||||
/* only for reading */
|
||||
uint64_t data_offset; ///< beginning of the first data packet
|
||||
|
||||
int64_t last_indexed_pts;
|
||||
ASFIndex* index_ptr;
|
||||
uint32_t nb_index_count;
|
||||
uint32_t nb_index_memory_alloc;
|
||||
uint16_t maximum_packet;
|
||||
} ASFContext;
|
||||
|
||||
static const AVCodecTag codec_asf_bmp_tags[] = {
|
||||
{ CODEC_ID_MPEG4, MKTAG('M', 'P', '4', 'S') },
|
||||
{ CODEC_ID_MPEG4, MKTAG('M', '4', 'S', '2') },
|
||||
|
Loading…
Reference in New Issue
Block a user