annotate libmpdemux/stheader.h @ 27319:09cf111f68b8

Revert to previous dependency checking behavior. Take included header files into account when generating dependency files. This has problems when header files are removed or renamed, but does not silently miscompile files.
author diego
date Sat, 26 Jul 2008 18:36:48 +0000
parents 65ad20416dd7
children e7c989f7a7c9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26029
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 25962
diff changeset
1 #ifndef MPLAYER_STHEADER_H
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 25962
diff changeset
2 #define MPLAYER_STHEADER_H
4933
429994672d8c 're-include' possibility
nick
parents: 4875
diff changeset
3
26143
268ecf0e1ba4 Add missing header #includes to fix 'make checkheaders'.
diego
parents: 26082
diff changeset
4 #include "demuxer.h"
12341
0db4a3a5b01d removed loader/ dependancy, imported some files from g2, also used patches from Dominik Mierzejewski
alex
parents: 8965
diff changeset
5 #include "aviheader.h"
0db4a3a5b01d removed loader/ dependancy, imported some files from g2, also used patches from Dominik Mierzejewski
alex
parents: 8965
diff changeset
6 #include "ms_hdr.h"
7471
5e56ce70b551 wine headers cleanup
arpi
parents: 7467
diff changeset
7
5e56ce70b551 wine headers cleanup
arpi
parents: 7467
diff changeset
8 // Stream headers:
4196
b75f3bb25261 image field added. 10*10l....
arpi
parents: 3642
diff changeset
9
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
10 typedef struct {
19540
70a5e89ea4cd Get rid of demux_aid_vid_mismatch mess.
reimar
parents: 18917
diff changeset
11 int aid;
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
12 demux_stream_t *ds;
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
13 struct codecs_st *codec;
303
828ec81e0d64 codecs.conf support
arpi_esp
parents: 296
diff changeset
14 unsigned int format;
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25652
diff changeset
15 int initialized;
17643
cea08919336b dwStart support for mplayer.
corey
parents: 14819
diff changeset
16 float stream_delay; // number of seconds stream should be delayed (according to dwStart or similar)
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
17 // output format:
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
18 int sample_format;
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
19 int samplerate;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
20 int samplesize;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
21 int channels;
746
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 587
diff changeset
22 int o_bps; // == samplerate*samplesize*channels (uncompr. bytes/sec)
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 587
diff changeset
23 int i_bps; // == bitrate (compressed bytes/sec)
296
c3d7a28a0d1a audio init moved to dec_audio.c
arpi_esp
parents: 291
diff changeset
24 // in buffers:
7604
32efb806436e aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents: 7471
diff changeset
25 int audio_in_minsize; // max. compressed packet size (== min. in buffer size)
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
26 char* a_in_buffer;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
27 int a_in_buffer_len;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
28 int a_in_buffer_size;
7604
32efb806436e aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents: 7471
diff changeset
29 // decoder buffers:
32efb806436e aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents: 7471
diff changeset
30 int audio_out_minsize; // max. uncompressed packet size (==min. out buffsize)
296
c3d7a28a0d1a audio init moved to dec_audio.c
arpi_esp
parents: 291
diff changeset
31 char* a_buffer;
c3d7a28a0d1a audio init moved to dec_audio.c
arpi_esp
parents: 291
diff changeset
32 int a_buffer_len;
c3d7a28a0d1a audio init moved to dec_audio.c
arpi_esp
parents: 291
diff changeset
33 int a_buffer_size;
7604
32efb806436e aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents: 7471
diff changeset
34 // output buffers:
32efb806436e aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents: 7471
diff changeset
35 char* a_out_buffer;
32efb806436e aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents: 7471
diff changeset
36 int a_out_buffer_len;
32efb806436e aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents: 7471
diff changeset
37 int a_out_buffer_size;
32efb806436e aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents: 7471
diff changeset
38 // void* audio_out; // the audio_out handle, used for this audio stream
24891
fefb019faa90 Clean up some fields in stheader.h structs
uau
parents: 24299
diff changeset
39 struct af_stream_s *afilter; // the audio filter stream
14819
601e2c8a2922 Remove file-global mpadec, add ad_driver member to sh_audio_t instead.
hzoli
parents: 12341
diff changeset
40 struct ad_functions_s* ad_driver;
8152
4b02f73cb4b9 dlopen() support for ad and vd
alex
parents: 8057
diff changeset
41 #ifdef DYNAMIC_PLUGINS
4b02f73cb4b9 dlopen() support for ad and vd
alex
parents: 8057
diff changeset
42 void *dec_handle;
4b02f73cb4b9 dlopen() support for ad and vd
alex
parents: 8057
diff changeset
43 #endif
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
44 // win32-compatible codec parameters:
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
45 AVIStreamHeader audio;
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
46 WAVEFORMATEX* wf;
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
47 // codec-specific:
3642
2cef9d562af0 void* context added - it should keep the codec-specific stuff (struct ptr or HANDLE)
arpi
parents: 2567
diff changeset
48 void* context; // codec-specific stuff (usually HANDLE or struct pointer)
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
49 unsigned char* codecdata; // extra header data passed from demuxer to codec
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents: 5084
diff changeset
50 int codecdata_len;
18242
caac2ca98168 4 - Implement a better way to calculate current audio pts and use it for
rtognimp
parents: 17643
diff changeset
51 double pts; // last known pts value in output from decoder
caac2ca98168 4 - Implement a better way to calculate current audio pts and use it for
rtognimp
parents: 17643
diff changeset
52 int pts_bytes; // bytes output by decoder after last known pts
26082
026b1ac69d47 Add language info to sh_sub_t and sh_audio_t.
eugeni
parents: 26029
diff changeset
53 char* lang; // track language
26269
65ad20416dd7 Support 'default' attribute for audio and subtitle tracks.
eugeni
parents: 26143
diff changeset
54 int default_track;
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
55 } sh_audio_t;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
56
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
57 typedef struct {
19540
70a5e89ea4cd Get rid of demux_aid_vid_mismatch mess.
reimar
parents: 18917
diff changeset
58 int vid;
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
59 demux_stream_t *ds;
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
60 struct codecs_st *codec;
303
828ec81e0d64 codecs.conf support
arpi_esp
parents: 296
diff changeset
61 unsigned int format;
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25652
diff changeset
62 int initialized;
8057
10698ce4b2a4 fixed comment - noticed by Alex
arpi
parents: 8056
diff changeset
63 float timer; // absolute time in video stream, since last start/seek
17643
cea08919336b dwStart support for mplayer.
corey
parents: 14819
diff changeset
64 float stream_delay; // number of seconds stream should be delayed (according to dwStart or similar)
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
65 // frame counters:
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
66 float num_frames; // number of frames played
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
67 int num_frames_decoded; // number of frames decoded
8965
14fa6a121a47 fixed the well-known DVD/DVB audio delay bug :)
arpi
parents: 8158
diff changeset
68 // timing (mostly for mpeg):
18309
87161f96fa66 Change common pts variables from floats to doubles. Individual demuxers
uau
parents: 18242
diff changeset
69 double pts; // predicted/interpolated PTS of the current frame
87161f96fa66 Change common pts variables from floats to doubles. Individual demuxers
uau
parents: 18242
diff changeset
70 double i_pts; // PTS for the _next_ I/P frame
21077
7f3cccd16b26 Reorganize code to move more things out of main().
uau
parents: 20876
diff changeset
71 float next_frame_time;
7f3cccd16b26 Reorganize code to move more things out of main().
uau
parents: 20876
diff changeset
72 double last_pts;
18917
d9a75b26da6c Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents: 18708
diff changeset
73 double buffered_pts[20];
d9a75b26da6c Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents: 18708
diff changeset
74 int num_buffered_pts;
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
75 // output format: (set by demuxer)
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
76 float fps; // frames per second (set only if constant fps)
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
77 float frametime; // 1/fps
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
78 float aspect; // aspect ratio stored in the file (for prescaling)
24299
725638f690bb added .stream_aspect to st_video_t: if non-zero and if not specified otherwise
nicodvb
parents: 23689
diff changeset
79 float stream_aspect; // aspect ratio stored in the media headers (e.g. in DVD IFO files)
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
80 int i_bps; // == bitrate (compressed bytes/sec)
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
81 int disp_w,disp_h; // display size (filled by fileformat parser)
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
82 // output driver/filters: (set by libmpcodecs core)
303
828ec81e0d64 codecs.conf support
arpi_esp
parents: 296
diff changeset
83 unsigned int outfmtidx;
24891
fefb019faa90 Clean up some fields in stheader.h structs
uau
parents: 24299
diff changeset
84 struct vf_instance_s *vfilter; // the video filter chain, used for this video stream
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25652
diff changeset
85 int vf_initialized;
8152
4b02f73cb4b9 dlopen() support for ad and vd
alex
parents: 8057
diff changeset
86 #ifdef DYNAMIC_PLUGINS
4b02f73cb4b9 dlopen() support for ad and vd
alex
parents: 8057
diff changeset
87 void *dec_handle;
4b02f73cb4b9 dlopen() support for ad and vd
alex
parents: 8057
diff changeset
88 #endif
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
89 // win32-compatible codec parameters:
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
90 AVIStreamHeader video;
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
91 BITMAPINFOHEADER* bih;
8158
bffdd162d034 export imagedescription for qt video codecs
arpi
parents: 8152
diff changeset
92 void* ImageDesc; // for quicktime codecs
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
93 // codec-specific:
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
94 void* context; // codec-specific stuff (usually HANDLE or struct pointer)
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
95 } sh_video_t;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
96
20876
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
97 typedef struct {
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
98 int sid;
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
99 char type; // t = text, v = VobSub, a = SSA/ASS
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
100 int has_palette; // If we have a valid palette
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
101 unsigned int palette[16]; // for VobSubs
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
102 int width, height; // for VobSubs
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
103 int custom_colors;
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
104 unsigned int colors[4];
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
105 int forced_subs_only;
25652
6e25dda14b62 Add extradata to sh_sub_t.
eugeni
parents: 25535
diff changeset
106 unsigned char* extradata; // extra header data passed from demuxer
6e25dda14b62 Add extradata to sh_sub_t.
eugeni
parents: 25535
diff changeset
107 int extradata_len;
20876
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
108 #ifdef USE_ASS
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
109 ass_track_t* ass_track; // for SSA/ASS streams (type == 'a')
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
110 #endif
26082
026b1ac69d47 Add language info to sh_sub_t and sh_audio_t.
eugeni
parents: 26029
diff changeset
111 char* lang; // track language
26269
65ad20416dd7 Support 'default' attribute for audio and subtitle tracks.
eugeni
parents: 26143
diff changeset
112 int default_track;
20876
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
113 } sh_sub_t;
0587328d9392 Move sh_sub_t to stheader.h, where all the other sh structs are defined
reimar
parents: 20873
diff changeset
114
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
115 // demuxer.c:
19540
70a5e89ea4cd Get rid of demux_aid_vid_mismatch mess.
reimar
parents: 18917
diff changeset
116 #define new_sh_audio(d, i) new_sh_audio_aid(d, i, i)
70a5e89ea4cd Get rid of demux_aid_vid_mismatch mess.
reimar
parents: 18917
diff changeset
117 sh_audio_t* new_sh_audio_aid(demuxer_t *demuxer,int id,int aid);
70a5e89ea4cd Get rid of demux_aid_vid_mismatch mess.
reimar
parents: 18917
diff changeset
118 #define new_sh_video(d, i) new_sh_video_vid(d, i, i)
70a5e89ea4cd Get rid of demux_aid_vid_mismatch mess.
reimar
parents: 18917
diff changeset
119 sh_video_t* new_sh_video_vid(demuxer_t *demuxer,int id,int vid);
20873
8f0c616d7425 Add forgotten new_sh_sub
reimar
parents: 19540
diff changeset
120 #define new_sh_sub(d, i) new_sh_sub_sid(d, i, i)
8f0c616d7425 Add forgotten new_sh_sub
reimar
parents: 19540
diff changeset
121 sh_sub_t *new_sh_sub_sid(demuxer_t *demuxer, int id, int sid);
18708
9e2b300db17b Change free_sh_audio() to take demuxer and stream id as parameters
uau
parents: 18309
diff changeset
122 void free_sh_audio(demuxer_t *demuxer, int id);
5084
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 4973
diff changeset
123 void free_sh_video(sh_video_t *sh);
426
26e513f392b2 new stream selection code
arpi_esp
parents: 399
diff changeset
124
7467
3a22c16fea46 - cosmetics, reorder
arpi
parents: 7232
diff changeset
125 // video.c:
2567
ea6158be8103 video frame reading cleanup
arpi
parents: 2341
diff changeset
126 int video_read_properties(sh_video_t *sh_video);
ea6158be8103 video frame reading cleanup
arpi
parents: 2341
diff changeset
127 int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char** start,int force_fps);
4933
429994672d8c 're-include' possibility
nick
parents: 4875
diff changeset
128
26029
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 25962
diff changeset
129 #endif /* MPLAYER_STHEADER_H */