annotate libmpdemux/stheader.h @ 4564:5e1221d4655e

completely reworked FILM demuxer to support both audio and video...neither of which work yet (CVID video and uncompressed audio)...but the demuxer is working well now
author melanson
date Thu, 07 Feb 2002 05:55:29 +0000
parents b75f3bb25261
children d282da672340
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
1 // Stream headers:
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
2
2338
4f3e8c8ea32f includes cleanup
arpi
parents: 2310
diff changeset
3 #include "wine/mmreg.h"
4f3e8c8ea32f includes cleanup
arpi
parents: 2310
diff changeset
4 #include "wine/avifmt.h"
4f3e8c8ea32f includes cleanup
arpi
parents: 2310
diff changeset
5 #include "wine/vfw.h"
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
6
4196
b75f3bb25261 image field added. 10*10l....
arpi
parents: 3642
diff changeset
7 #include "../mp_image.h"
b75f3bb25261 image field added. 10*10l....
arpi
parents: 3642
diff changeset
8
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
9 typedef struct {
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
10 demux_stream_t *ds;
303
828ec81e0d64 codecs.conf support
arpi_esp
parents: 296
diff changeset
11 unsigned int format;
2310
9e059416eea6 libdemuxer...
arpi
parents: 2031
diff changeset
12 struct codecs_st *codec;
1656
cd77b8e28f82 new field: inited
arpi
parents: 1546
diff changeset
13 int inited;
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
14 // output format:
1369
7a2f1881b776 a_frame, v_frame killed, using sh_audio/video->timer. has_audio not more used after initialization.
arpi
parents: 1289
diff changeset
15 float timer; // value of old a_frame
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
16 int samplerate;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
17 int samplesize;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
18 int channels;
746
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 587
diff changeset
19 int o_bps; // == samplerate*samplesize*channels (uncompr. bytes/sec)
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 587
diff changeset
20 int i_bps; // == bitrate (compressed bytes/sec)
296
c3d7a28a0d1a audio init moved to dec_audio.c
arpi_esp
parents: 291
diff changeset
21 // in buffers:
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
22 char* a_in_buffer;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
23 int a_in_buffer_len;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
24 int a_in_buffer_size;
296
c3d7a28a0d1a audio init moved to dec_audio.c
arpi_esp
parents: 291
diff changeset
25 // out buffers:
c3d7a28a0d1a audio init moved to dec_audio.c
arpi_esp
parents: 291
diff changeset
26 char* a_buffer;
c3d7a28a0d1a audio init moved to dec_audio.c
arpi_esp
parents: 291
diff changeset
27 int a_buffer_len;
c3d7a28a0d1a audio init moved to dec_audio.c
arpi_esp
parents: 291
diff changeset
28 int a_buffer_size;
758
5a92a5601666 better audio out buffering & sample_format added
arpi_esp
parents: 746
diff changeset
29 int sample_format;
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
30 // win32 codec stuff:
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
31 AVIStreamHeader audio;
432
5251b0c57e39 sh_audio->wf and sh_video->bih changed to dynamic (thanx to Jens Hoffmann)
arpi_esp
parents: 426
diff changeset
32 WAVEFORMATEX *wf;
5251b0c57e39 sh_audio->wf and sh_video->bih changed to dynamic (thanx to Jens Hoffmann)
arpi_esp
parents: 426
diff changeset
33 // char wf_ext[64]; // in format
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
34 WAVEFORMATEX o_wf; // out format
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
35 HACMSTREAM srcstream; // handle
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
36 int audio_in_minsize;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
37 int audio_out_minsize;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
38 // other codecs:
3642
2cef9d562af0 void* context added - it should keep the codec-specific stuff (struct ptr or HANDLE)
arpi
parents: 2567
diff changeset
39 void* context; // codec-specific stuff (usually HANDLE or struct pointer)
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 432
diff changeset
40 // ac3_frame_t *ac3_frame;
3642
2cef9d562af0 void* context added - it should keep the codec-specific stuff (struct ptr or HANDLE)
arpi
parents: 2567
diff changeset
41 void* ac3_frame; // TODO: use *context
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
42 int pcm_bswap;
1828
60afe3421c04 OggVorbis support, ALPHA state!
atmos4
parents: 1656
diff changeset
43 #ifdef HAVE_OGGVORBIS
3642
2cef9d562af0 void* context added - it should keep the codec-specific stuff (struct ptr or HANDLE)
arpi
parents: 2567
diff changeset
44 struct ov_struct_st *ov; // should be assigned on init TODO: use *context
1828
60afe3421c04 OggVorbis support, ALPHA state!
atmos4
parents: 1656
diff changeset
45 #endif
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
46 } sh_audio_t;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
47
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
48 typedef struct {
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
49 demux_stream_t *ds;
303
828ec81e0d64 codecs.conf support
arpi_esp
parents: 296
diff changeset
50 unsigned int format;
2310
9e059416eea6 libdemuxer...
arpi
parents: 2031
diff changeset
51 struct codecs_st *codec;
1656
cd77b8e28f82 new field: inited
arpi
parents: 1546
diff changeset
52 int inited;
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
53 // output format:
1369
7a2f1881b776 a_frame, v_frame killed, using sh_audio/video->timer. has_audio not more used after initialization.
arpi
parents: 1289
diff changeset
54 float timer; // value of old v_frame
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
55 float fps;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
56 float frametime; // 1/fps
1400
2bf9c561b01d stage2 step 1
arpi
parents: 1369
diff changeset
57 int i_bps; // == bitrate (compressed bytes/sec)
399
33115689181a some more fields in sh_video_t
arpi_esp
parents: 303
diff changeset
58 int disp_w,disp_h; // display size (filled by fileformat parser)
33115689181a some more fields in sh_video_t
arpi_esp
parents: 303
diff changeset
59 // int coded_w,coded_h; // coded size (filled by video codec)
2031
624df8ea0e0e New aspect prescale code, parses aspect value from mpeg sequence header or commandline.
atmos4
parents: 1828
diff changeset
60 float aspect;
303
828ec81e0d64 codecs.conf support
arpi_esp
parents: 296
diff changeset
61 unsigned int outfmtidx;
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
62 // unsigned int bitrate;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
63 // buffers:
1400
2bf9c561b01d stage2 step 1
arpi
parents: 1369
diff changeset
64 float num_frames; // number of frames played
1546
d4cd08b06665 display number of decoded frames (for progr. mpeg2)
arpi
parents: 1400
diff changeset
65 int num_frames_decoded; // number of frames decoded
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
66 char *our_out_buffer;
4196
b75f3bb25261 image field added. 10*10l....
arpi
parents: 3642
diff changeset
67 mp_image_t *image;
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
68 // win32 codec stuff:
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
69 AVIStreamHeader video;
432
5251b0c57e39 sh_audio->wf and sh_video->bih changed to dynamic (thanx to Jens Hoffmann)
arpi_esp
parents: 426
diff changeset
70 BITMAPINFOHEADER *bih; // in format
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
71 BITMAPINFOHEADER o_bih; // out format
3642
2cef9d562af0 void* context added - it should keep the codec-specific stuff (struct ptr or HANDLE)
arpi
parents: 2567
diff changeset
72 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
73 HIC hic; // handle
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
74 } sh_video_t;
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents:
diff changeset
75
1289
3f490fad9bdf some code clanup (first step to libdemuxer)
arpi
parents: 758
diff changeset
76 sh_audio_t* new_sh_audio(demuxer_t *demuxer,int id);
3f490fad9bdf some code clanup (first step to libdemuxer)
arpi
parents: 758
diff changeset
77 sh_video_t* new_sh_video(demuxer_t *demuxer,int id);
426
26e513f392b2 new stream selection code
arpi_esp
parents: 399
diff changeset
78
2567
ea6158be8103 video frame reading cleanup
arpi
parents: 2341
diff changeset
79 int video_read_properties(sh_video_t *sh_video);
ea6158be8103 video frame reading cleanup
arpi
parents: 2341
diff changeset
80 int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char** start,int force_fps);