libmpeg3.h
资源名称:NETVIDEO.rar [点击查看]
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:6k
源码类别:
流媒体/Mpeg4/MP4
开发平台:
Visual C++
- #ifndef LIBMPEG3_H
- #define LIBMPEG3_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "mpeg3private.h"
- /* Supported color models for mpeg3_read_frame */
- #define MPEG3_RGB565 2
- #define MPEG3_BGR888 0
- #define MPEG3_BGRA8888 1
- #define MPEG3_RGB888 3
- #define MPEG3_RGBA8888 4
- #define MPEG3_RGBA16161616 5
- /* Color models for the 601 to RGB conversion */
- /* 601 not implemented for scalar code */
- #define MPEG3_601_RGB565 11
- #define MPEG3_601_BGR888 7
- #define MPEG3_601_BGRA8888 8
- #define MPEG3_601_RGB888 9
- #define MPEG3_601_RGBA8888 10
- /* Supported color models for mpeg3_read_yuvframe */
- #define MPEG3_YUV420P 12
- #define MPEG3_YUV422P 13
- /* Check for file compatibility. Return 1 if compatible. */
- int mpeg3_check_sig(const char *path);
- /* Open the MPEG3 stream. */
- mpeg3_t* mpeg3_open(const char *path);
- /* Open the MPEG3 stream and copy the tables from an already open stream. */
- /* Eliminates the initial timecode search. */
- mpeg3_t* mpeg3_open_copy(const char *path, mpeg3_t *old_file);
- int mpeg3_close(mpeg3_t *file);
- /* Performance */
- /* Query the MPEG3 stream about audio. */
- int mpeg3_has_audio(mpeg3_t *file);
- int mpeg3_total_astreams(mpeg3_t *file); /* Number of multiplexed audio streams */
- int mpeg3_audio_channels(mpeg3_t *file, int stream);
- int mpeg3_sample_rate(mpeg3_t *file, int stream);
- char* mpeg3_audio_format(mpeg3_t *file, int stream);
- int mpeg3_audio_samples_per_frame(mpeg3_t *file, int stream);
- uint32_t mpeg3_audio_get_number_of_frames(mpeg3_t *file, int stream);
- /* Total length obtained from the timecode. */
- /* For DVD files, this is unreliable. */
- /* Read a PCM buffer of audio from 1 channel and advance the position. */
- /* Return a 1 if error. */
- /* Stream defines the number of the multiplexed stream to read. */
- /* If both output arguments are null the audio is not rendered. */
- #if 0
- int mpeg3_read_audio(mpeg3_t *file,
- float *output_f, /* Pointer to pre-allocated buffer of floats */
- short *output_i, /* Pointer to pre-allocated buffer of int16's */
- int channel, /* Channel to decode */
- long samples, /* Number of samples to decode */
- int stream); /* Stream containing the channel */
- /* Reread the last PCM buffer from a different channel and advance the position */
- int mpeg3_reread_audio(mpeg3_t *file,
- float *output_f, /* Pointer to pre-allocated buffer of floats */
- short *output_i, /* Pointer to pre-allocated buffer of int16's */
- int channel, /* Channel to decode */
- long samples, /* Number of samples to decode */
- int stream); /* Stream containing the channel */
- /* Read the next compressed audio chunk. Store the size in size and return a */
- /* 1 if error. */
- /* Stream defines the number of the multiplexed stream to read. */
- int mpeg3_read_audio_chunk(mpeg3_t *file,
- unsigned char *output,
- long *size,
- long max_size,
- int stream);
- #endif
- int mpeg3_read_audio_frame(mpeg3_t *file,
- unsigned char **output,
- uint32_t *size,
- uint32_t *max_size,
- int stream);
- int mpeg3_get_audio_format(mpeg3_t *file, int stream);
- /* Query the stream about video. */
- int mpeg3_has_video(mpeg3_t *file);
- int mpeg3_total_vstreams(mpeg3_t *file); /* Number of multiplexed video streams */
- int mpeg3_video_width(mpeg3_t *file, int stream);
- int mpeg3_video_height(mpeg3_t *file, int stream);
- float mpeg3_aspect_ratio(mpeg3_t *file, int stream); /* aspect ratio. 0 if none */
- float mpeg3_frame_rate(mpeg3_t *file, int stream); /* Frames/sec */
- /* Total length. */
- /* For DVD files, this is 1 indicating only percentage seeking is available. */
- long mpeg3_video_frames(mpeg3_t *file, int stream);
- int mpeg3_set_frame(mpeg3_t *file, long frame, int stream); /* Seek to a frame */
- int mpeg3_skip_frames();
- long mpeg3_get_frame(mpeg3_t *file, int stream); /* Tell current position */
- /* Seek all the tracks based on a percentage of the total bytes in the */
- /* file or the total */
- /* time in a toc if one exists. Percentage is a 0 to 1 double. */
- /* This eliminates the need for tocs and 64 bit longs but doesn't */
- /* give frame accuracy. */
- int mpeg3_seek_percentage(mpeg3_t *file, double percentage);
- int mpeg3_seek_audio_percentage(mpeg3_t *file, int stream, double percentage);
- int mpeg3_seek_video_percentage(mpeg3_t *file, int stream, double percentage);
- double mpeg3_tell_percentage(mpeg3_t *file);
- int mpeg3_previous_frame(mpeg3_t *file, int stream);
- int mpeg3_end_of_audio(mpeg3_t *file, int stream);
- int mpeg3_end_of_video(mpeg3_t *file, int stream);
- /* Give the seconds time in the last packet read */
- /* Read a frame. The dimensions of the input area and output frame must be supplied. */
- /* The frame is taken from the input area and scaled to fit the output frame in 1 step. */
- /* Stream defines the number of the multiplexed stream to read. */
- /* The last row of **output_rows must contain 4 extra bytes for scratch work. */
- /* Read the next compressed frame including headers. */
- /* Store the size in size and return a 1 if error. */
- /* Stream defines the number of the multiplexed stream to read. */
- int mpeg3_read_video_chunk(mpeg3_t *file,
- unsigned char *output,
- long *size,
- long max_size,
- int stream);
- int mpeg3_read_video_chunk_resize(mpeg3_t *file,
- unsigned char **output,
- long *size,
- int stream);
- void mpeg3_read_video_chunk_cleanup(mpeg3_t *file, int stream);
- /* Master control */
- int mpeg3_total_programs();
- int mpeg3_set_program(int program);
- #ifdef __cplusplus
- }
- #endif
- #endif