Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>tags/n0.8
| @@ -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 @@ | |||||
| 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 @@ | |||||
| 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') }, | ||||