Commit 4bc328a2 authored by Anton Khirnov's avatar Anton Khirnov Committed by Ronald S. Bultje

asf: split ASFContext into muxer and demuxer parts.

Signed-off-by: 's avatarRonald S. Bultje <rsbultje@gmail.com>
parent 2cfa2d92
...@@ -79,64 +79,6 @@ typedef struct { ...@@ -79,64 +79,6 @@ typedef struct {
uint16_t packet_count; uint16_t packet_count;
} ASFIndex; } 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_header;
extern const ff_asf_guid ff_asf_file_header; extern const ff_asf_guid ff_asf_file_header;
extern const ff_asf_guid ff_asf_stream_header; extern const ff_asf_guid ff_asf_stream_header;
......
...@@ -32,6 +32,47 @@ ...@@ -32,6 +32,47 @@
void ff_mms_set_stream_selection(URLContext *h, AVFormatContext *format); 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 #undef NDEBUG
#include <assert.h> #include <assert.h>
......
...@@ -188,6 +188,31 @@ ...@@ -188,6 +188,31 @@
2*PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS \ 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[] = { static const AVCodecTag codec_asf_bmp_tags[] = {
{ CODEC_ID_MPEG4, MKTAG('M', 'P', '4', 'S') }, { CODEC_ID_MPEG4, MKTAG('M', 'P', '4', 'S') },
{ CODEC_ID_MPEG4, MKTAG('M', '4', 'S', '2') }, { CODEC_ID_MPEG4, MKTAG('M', '4', 'S', '2') },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment