improve ffmpeg format selection popup menu, more ffmpeg audio fixes
[goodguy/history.git] / cinelerra-5.0 / quicktime / qtasf.h
1 #ifndef QTASF_H
2 #define QTASF_H
3
4 #include "quicktime.h"
5 #include <stdint.h>
6
7 /* We have lifted sections of ASF decoding from ffmpeg */
8 /* to add direct copy support and seeking to it */
9
10 #define MAX_ASFSTREAMS 256
11
12 typedef struct 
13 {
14     uint32_t v1;
15     uint16_t v2;
16     uint16_t v3;
17     uint8_t v4[8];
18 } quicktime_guid_t;
19
20 typedef struct
21 {
22         int number;
23         int count;
24 } quicktime_asfpacket_t;
25
26 typedef struct
27 {
28         int is_audio;
29         int is_video;
30         int is_ext_audio;
31         int total_size;
32         int type_specific_size;
33         int start_time;
34         int duration;
35         int id;
36         int need_parsing;
37         int bits_per_sample;
38         int extradata_size;
39         unsigned char *extradata;
40         unsigned char fourcc[5];
41
42 /* Audio */
43         int ds_span;
44         int ds_packet_size;
45         int ds_chunk_size;
46         int ds_data_size;
47         int ds_silence_data;
48         int frame_size;
49 /* WAV header */
50         int codec_tag;
51         int channels;
52         int samplerate;
53         int bitrate;
54         int block_align;
55         int signed_;
56         int littleendian;
57
58 /* Video */
59         int width;
60         int height;
61 } quicktime_asfstream_t;
62
63 typedef struct
64 {
65         quicktime_guid_t quid;
66         int64_t file_size;
67         int64_t create_time;
68         int64_t total_packets;
69         int64_t send_time;
70         int64_t play_time;
71         int preroll;
72         int ignore;
73         int flags;
74         int min_packet;
75         int max_packet;
76         int max_bitrate;
77         int packet_size;
78 } quicktime_asfheader_t;
79
80
81 typedef struct
82 {
83         quicktime_asfheader_t header;
84         quicktime_asfstream_t *streams[MAX_ASFSTREAMS];
85         int total_streams;
86         quicktime_asfpacket_t *index;
87         int index_size;
88         int index_allocated;
89 } quicktime_asf_t;
90
91
92
93 int quicktime_read_guid(quicktime_t *file,quicktime_guid_t *guid);
94 quicktime_asfstream_t *new_asfstream(void);
95 void delete_asfstream(quicktime_asfstream_t *stream);
96 void quicktime_delete_asf(quicktime_asf_t *asf);
97 int quicktime_read_asf(quicktime_t *file);
98 void quicktime_dump_asf(quicktime_asf_t *asf);
99
100 #endif