diff --git a/libmpdemux/stheader.h b/libmpdemux/stheader.h index 1dff88c450..4222630238 100644 --- a/libmpdemux/stheader.h +++ b/libmpdemux/stheader.h @@ -11,71 +11,70 @@ typedef struct { demux_stream_t *ds; - unsigned int format; struct codecs_st *codec; + unsigned int format; int inited; - // output format: float timer; // value of old a_frame + // output format: + int sample_format; int samplerate; int samplesize; int channels; int o_bps; // == samplerate*samplesize*channels (uncompr. bytes/sec) int i_bps; // == bitrate (compressed bytes/sec) // in buffers: + int audio_in_minsize; char* a_in_buffer; int a_in_buffer_len; int a_in_buffer_size; // out buffers: + int audio_out_minsize; char* a_buffer; int a_buffer_len; int a_buffer_size; - int sample_format; - // win32 codec stuff: + // win32-compatible codec parameters: AVIStreamHeader audio; - WAVEFORMATEX *wf; - int audio_in_minsize; - int audio_out_minsize; - // other codecs: + WAVEFORMATEX* wf; + // codec-specific: void* context; // codec-specific stuff (usually HANDLE or struct pointer) - unsigned char *codecdata; + unsigned char* codecdata; // extra header data passed from demuxer to codec int codecdata_len; } sh_audio_t; typedef struct { demux_stream_t *ds; - unsigned int format; struct codecs_st *codec; + unsigned int format; int inited; - // output format: - float timer; // value of old v_frame - float fps; - float frametime; // 1/fps - int i_bps; // == bitrate (compressed bytes/sec) - int disp_w,disp_h; // display size (filled by fileformat parser) -// int coded_w,coded_h; // coded size (filled by video codec) - float aspect; - unsigned int outfmtidx; -// unsigned int bitrate; - // buffers: + float timer; // value of old v_frame + // frame counters: float num_frames; // number of frames played - int num_frames_decoded; // number of frames decoded - mp_image_t *image; - // win32 codec stuff: - AVIStreamHeader video; - BITMAPINFOHEADER *bih; // in format - void* context; // codec-specific stuff (usually HANDLE or struct pointer) - void* video_out; - void* vfilter; + int num_frames_decoded; // number of frames decoded + // output format: (set by demuxer) + float fps; // frames per second (set only if constant fps) + float frametime; // 1/fps + float aspect; // aspect ratio stored in the file (for prescaling) + int i_bps; // == bitrate (compressed bytes/sec) + int disp_w,disp_h; // display size (filled by fileformat parser) + // output driver/filters: (set by libmpcodecs core) + unsigned int outfmtidx; + void* video_out; // the video_out handle, used for this video stream + void* vfilter; // the video filter chain, used for this video stream int vf_inited; + // win32-compatible codec parameters: + AVIStreamHeader video; + BITMAPINFOHEADER* bih; + // codec-specific: + void* context; // codec-specific stuff (usually HANDLE or struct pointer) } sh_video_t; -sh_audio_t* get_sh_audio(demuxer_t *demuxer,int id); -sh_video_t* get_sh_video(demuxer_t *demuxer,int id); +// demuxer.c: sh_audio_t* new_sh_audio(demuxer_t *demuxer,int id); sh_video_t* new_sh_video(demuxer_t *demuxer,int id); void free_sh_audio(sh_audio_t *sh); void free_sh_video(sh_video_t *sh); +// video.c: int video_read_properties(sh_video_t *sh_video); int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char** start,int force_fps);