Mercurial > mplayer.hg
view libmpdemux/stheader.h @ 15978:c8dc500e078e
memcpy and memmove both copy memory, but when using memcpy the source and destination must not overlap, but here, they did overlap.
Committed with the kind blessing of Richard, patch by uau
author | gpoirier |
---|---|
date | Fri, 15 Jul 2005 22:09:30 +0000 |
parents | 601e2c8a2922 |
children | cea08919336b |
line wrap: on
line source
#ifndef __ST_HEADER_H #define __ST_HEADER_H 1 #include "aviheader.h" #include "ms_hdr.h" // Stream headers: typedef struct { demux_stream_t *ds; struct codecs_st *codec; unsigned int format; int inited; float delay; // relative (to sh_video->timer) time in audio stream // 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; // max. compressed packet size (== min. in buffer size) char* a_in_buffer; int a_in_buffer_len; int a_in_buffer_size; // decoder buffers: int audio_out_minsize; // max. uncompressed packet size (==min. out buffsize) char* a_buffer; int a_buffer_len; int a_buffer_size; // output buffers: char* a_out_buffer; int a_out_buffer_len; int a_out_buffer_size; // void* audio_out; // the audio_out handle, used for this audio stream void* afilter; // the audio filter stream struct ad_functions_s* ad_driver; #ifdef DYNAMIC_PLUGINS void *dec_handle; #endif // win32-compatible codec parameters: AVIStreamHeader audio; WAVEFORMATEX* wf; // codec-specific: void* context; // codec-specific stuff (usually HANDLE or struct pointer) unsigned char* codecdata; // extra header data passed from demuxer to codec int codecdata_len; } sh_audio_t; typedef struct { demux_stream_t *ds; struct codecs_st *codec; unsigned int format; int inited; float timer; // absolute time in video stream, since last start/seek // frame counters: float num_frames; // number of frames played int num_frames_decoded; // number of frames decoded // timing (mostly for mpeg): float pts; // predicted/interpolated PTS of the current frame float i_pts; // PTS for the _next_ I/P frame // 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; #ifdef DYNAMIC_PLUGINS void *dec_handle; #endif // win32-compatible codec parameters: AVIStreamHeader video; BITMAPINFOHEADER* bih; void* ImageDesc; // for quicktime codecs // codec-specific: void* context; // codec-specific stuff (usually HANDLE or struct pointer) } sh_video_t; // 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); #endif