Mercurial > mplayer.hg
annotate libmpdemux/stheader.h @ 27020:543772b34ac2
sync w/r21537 and misc fixes
patch by C¸«±dric Viou
author | gpoirier |
---|---|
date | Wed, 11 Jun 2008 20:33:42 +0000 |
parents | 65ad20416dd7 |
children | e7c989f7a7c9 |
rev | line source |
---|---|
26029 | 1 #ifndef MPLAYER_STHEADER_H |
2 #define MPLAYER_STHEADER_H | |
4933 | 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 | 7 |
8 // Stream headers: | |
4196 | 9 |
291 | 10 typedef struct { |
19540 | 11 int aid; |
291 | 12 demux_stream_t *ds; |
7467 | 13 struct codecs_st *codec; |
303 | 14 unsigned int format; |
25962 | 15 int initialized; |
17643 | 16 float stream_delay; // number of seconds stream should be delayed (according to dwStart or similar) |
291 | 17 // output format: |
7467 | 18 int sample_format; |
291 | 19 int samplerate; |
20 int samplesize; | |
21 int channels; | |
746 | 22 int o_bps; // == samplerate*samplesize*channels (uncompr. bytes/sec) |
23 int i_bps; // == bitrate (compressed bytes/sec) | |
296 | 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 | 26 char* a_in_buffer; |
27 int a_in_buffer_len; | |
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 | 31 char* a_buffer; |
32 int a_buffer_len; | |
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 | 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 | 41 #ifdef DYNAMIC_PLUGINS |
42 void *dec_handle; | |
43 #endif | |
7467 | 44 // win32-compatible codec parameters: |
291 | 45 AVIStreamHeader audio; |
7467 | 46 WAVEFORMATEX* wf; |
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 | 49 unsigned char* codecdata; // extra header data passed from demuxer to codec |
5301 | 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 | 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 | 55 } sh_audio_t; |
56 | |
57 typedef struct { | |
19540 | 58 int vid; |
291 | 59 demux_stream_t *ds; |
7467 | 60 struct codecs_st *codec; |
303 | 61 unsigned int format; |
25962 | 62 int initialized; |
8057 | 63 float timer; // absolute time in video stream, since last start/seek |
17643 | 64 float stream_delay; // number of seconds stream should be delayed (according to dwStart or similar) |
7467 | 65 // frame counters: |
66 float num_frames; // number of frames played | |
67 int num_frames_decoded; // number of frames decoded | |
8965 | 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 | 71 float next_frame_time; |
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 | 75 // output format: (set by demuxer) |
76 float fps; // frames per second (set only if constant fps) | |
77 float frametime; // 1/fps | |
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 | 80 int i_bps; // == bitrate (compressed bytes/sec) |
81 int disp_w,disp_h; // display size (filled by fileformat parser) | |
82 // output driver/filters: (set by libmpcodecs core) | |
303 | 83 unsigned int outfmtidx; |
24891 | 84 struct vf_instance_s *vfilter; // the video filter chain, used for this video stream |
25962 | 85 int vf_initialized; |
8152 | 86 #ifdef DYNAMIC_PLUGINS |
87 void *dec_handle; | |
88 #endif | |
7467 | 89 // win32-compatible codec parameters: |
291 | 90 AVIStreamHeader video; |
7467 | 91 BITMAPINFOHEADER* bih; |
8158 | 92 void* ImageDesc; // for quicktime codecs |
7467 | 93 // codec-specific: |
94 void* context; // codec-specific stuff (usually HANDLE or struct pointer) | |
291 | 95 } sh_video_t; |
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 | 106 unsigned char* extradata; // extra header data passed from demuxer |
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 | 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 | 115 // demuxer.c: |
19540 | 116 #define new_sh_audio(d, i) new_sh_audio_aid(d, i, i) |
117 sh_audio_t* new_sh_audio_aid(demuxer_t *demuxer,int id,int aid); | |
118 #define new_sh_video(d, i) new_sh_video_vid(d, i, i) | |
119 sh_video_t* new_sh_video_vid(demuxer_t *demuxer,int id,int vid); | |
20873 | 120 #define new_sh_sub(d, i) new_sh_sub_sid(d, i, i) |
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 | 123 void free_sh_video(sh_video_t *sh); |
426 | 124 |
7467 | 125 // video.c: |
2567 | 126 int video_read_properties(sh_video_t *sh_video); |
127 int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char** start,int force_fps); | |
4933 | 128 |
26029 | 129 #endif /* MPLAYER_STHEADER_H */ |