Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

mpeg3protos.h

Go to the documentation of this file.
00001 /**********************************************************************
00002 ** Copyright (C) 2000 Trolltech AS.  All rights reserved.
00003 **
00004 ** This file is part of Qtopia Environment.
00005 **
00006 ** This file may be distributed and/or modified under the terms of the
00007 ** GNU General Public License version 2 as published by the Free Software
00008 ** Foundation and appearing in the file LICENSE.GPL included in the
00009 ** packaging of this file.
00010 **
00011 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00012 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00013 **
00014 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
00015 **
00016 ** Contact info@trolltech.com if any conditions of this licensing are
00017 ** not clear to you.
00018 **
00019 **********************************************************************/
00020 #ifndef MPEG3PROTOS_H
00021 #define MPEG3PROTOS_H
00022 
00023 #if defined(__cplusplus)
00024 extern "C" {
00025 #endif
00026 
00027 /* CSS */
00028 
00029 mpeg3_css_t* mpeg3_new_css();
00030 
00031 /* DEMUX */
00032 
00033 mpeg3_demuxer_t* mpeg3_new_demuxer(mpeg3_t *file, int do_audio, int do_video, int stream_id);
00034 int mpeg3_delete_demuxer(mpeg3_demuxer_t *demuxer);
00035 int mpeg3demux_read_data(mpeg3_demuxer_t *demuxer, unsigned char *output, long size);
00036 unsigned int mpeg3demux_read_int32(mpeg3_demuxer_t *demuxer);
00037 unsigned int mpeg3demux_read_int24(mpeg3_demuxer_t *demuxer);
00038 unsigned int mpeg3demux_read_int16(mpeg3_demuxer_t *demuxer);
00039 double mpeg3demux_length(mpeg3_demuxer_t *demuxer);
00040 mpeg3_demuxer_t* mpeg3_get_demuxer(mpeg3_t *file);
00041 long mpeg3demux_tell(mpeg3_demuxer_t *demuxer);
00042 double mpeg3demux_tell_percentage(mpeg3_demuxer_t *demuxer);
00043 double mpeg3demux_get_time(mpeg3_demuxer_t *demuxer);
00044 int mpeg3demux_eof(mpeg3_demuxer_t *demuxer);
00045 int mpeg3demux_bof(mpeg3_demuxer_t *demuxer);
00046 int mpeg3demux_copy_titles(mpeg3_demuxer_t *dst, mpeg3_demuxer_t *src);
00047 int mpeg3demux_create_title(mpeg3_demuxer_t *demuxer, int timecode_search, FILE *toc);
00048 long mpeg3demuxer_total_bytes(mpeg3_demuxer_t *demuxer);
00049 int mpeg3demux_seek_byte(mpeg3_demuxer_t *demuxer, long byte);
00050 int mpeg3demux_seek_time(mpeg3_demuxer_t *demuxer, double new_time);
00051 int mpeg3demux_seek_percentage(mpeg3_demuxer_t *demuxer, double percentage);
00052 int mpeg3demux_print_streams(mpeg3_demuxer_t *demuxer, FILE *toc);
00053 int mpeg3demux_print_timecodes(mpeg3_title_t *title, FILE *output);
00054 int mpeg3demux_read_titles(mpeg3_demuxer_t *demuxer);
00055 int mpeg3demux_open_title(mpeg3_demuxer_t *demuxer, int title_number);
00056 
00057 /* TITLE */
00058 
00059 mpeg3_title_t* mpeg3_new_title(mpeg3_t *file, char *path);
00060 int mpeg3_delete_title(mpeg3_title_t *title);
00061 int mpeg3_copy_title(mpeg3_title_t *dst, mpeg3_title_t *src);
00062 
00063 
00064 /* ATRACK */
00065 
00066 mpeg3_atrack_t* mpeg3_new_atrack(mpeg3_t *file, int stream_id, int is_ac3, mpeg3_demuxer_t *demuxer);
00067 int mpeg3_delete_atrack(mpeg3_t *file, mpeg3_atrack_t *atrack);
00068 
00069 /* VTRACK */
00070 
00071 mpeg3_vtrack_t* mpeg3_new_vtrack(mpeg3_t *file, int stream_id, mpeg3_demuxer_t *demuxer);
00072 int mpeg3_delete_vtrack(mpeg3_t *file, mpeg3_vtrack_t *vtrack);
00073 
00074 /* AUDIO */
00075 mpeg3audio_t* mpeg3audio_new(mpeg3_t *file, mpeg3_atrack_t *track, int is_ac3);
00076 int mpeg3audio_delete(mpeg3audio_t *audio);
00077 int mpeg3audio_seek_sample(mpeg3audio_t *audio, long sample);
00078 int mpeg3audio_seek_percentage(mpeg3audio_t *audio, double percentage);
00079 int mpeg3audio_decode_audio(mpeg3audio_t *audio,
00080                 mpeg3_real_t *output_f,
00081                 short *output_i, int sampleSpacing,
00082                 int channel,
00083                 long start_position,
00084                 long len);
00085 int mpeg3audio_read_raw(mpeg3audio_t *audio, unsigned char *output, long *size, long max_size);
00086 int mpeg3audio_read_ac3_header(mpeg3audio_t *audio);
00087 int mpeg3audio_read_pcm_header(mpeg3audio_t *audio);
00088 int mpeg3audio_synth_mono(mpeg3audio_t *audio, mpeg3_real_t *bandPtr, mpeg3_real_t *samples, int *pnt);
00089 int mpeg3audio_synth_stereo(mpeg3audio_t *audio, mpeg3_real_t *bandPtr, int channel, mpeg3_real_t *out, int *pnt);
00090 int mpeg3audio_replace_buffer(mpeg3audio_t *audio, long new_allocation);
00091 int mpeg3audio_ac3_exponent_unpack(mpeg3audio_t *audio,
00092                 mpeg3_ac3bsi_t *bsi,
00093                 mpeg3_ac3audblk_t *audblk);
00094 int mpeg3audio_ac3_bit_allocate(mpeg3audio_t *audio,
00095                 unsigned int fscod,
00096                 mpeg3_ac3bsi_t *bsi,
00097                 mpeg3_ac3audblk_t *audblk);
00098 int mpeg3audio_ac3_coeff_unpack(mpeg3audio_t *audio,
00099         mpeg3_ac3bsi_t *bsi,
00100         mpeg3_ac3audblk_t *audblk,
00101         mpeg3ac3_stream_samples_t samples);
00102 int mpeg3audio_ac3_imdct(mpeg3audio_t *audio,
00103                 mpeg3_ac3bsi_t *bsi,
00104                 mpeg3_ac3audblk_t *audblk,
00105                 mpeg3ac3_stream_samples_t samples);
00106 int mpeg3audio_replace_buffer(mpeg3audio_t *audio, long new_allocation);
00107 int mpeg3audio_dct36(mpeg3_real_t *inbuf, mpeg3_real_t *o1, mpeg3_real_t *o2, mpeg3_real_t *wintab, mpeg3_real_t *tsbuf);
00108 int mpeg3audio_dct12(mpeg3_real_t *in,mpeg3_real_t *rawout1,mpeg3_real_t *rawout2,register mpeg3_real_t *wi,register mpeg3_real_t *ts);
00109 int mpeg3audio_read_header(mpeg3audio_t *audio);
00110 int mpeg3audio_do_ac3(mpeg3audio_t *audio);
00111 int mpeg3audio_dolayer2(mpeg3audio_t *audio);
00112 int mpeg3audio_dolayer3(mpeg3audio_t *audio);
00113 int mpeg3audio_do_pcm(mpeg3audio_t *audio);
00114 int mpeg3audio_dct64(mpeg3_real_t *a, mpeg3_real_t *b, mpeg3_real_t *c);
00115 int mpeg3audio_reset_synths(mpeg3audio_t *audio);
00116 int mpeg3audio_prev_header(mpeg3audio_t *audio);
00117 int mpeg3audio_read_layer3_frame(mpeg3audio_t *audio);
00118 int mpeg3audio_new_decode_tables(mpeg3audio_t *audio);
00119 int mpeg3audio_imdct_init(mpeg3audio_t *audio);
00120 
00121 
00122 /* VIDEO */
00123 mpeg3video_t* mpeg3video_new(mpeg3_t *file, mpeg3_vtrack_t *track);
00124 int mpeg3video_delete(mpeg3video_t *video);
00125 int mpeg3video_read_frame(mpeg3video_t *video, 
00126                 long frame_number, 
00127                 unsigned char **output_rows,
00128                 int in_x, 
00129                 int in_y, 
00130                 int in_w, 
00131                 int in_h, 
00132                 int out_w, 
00133                 int out_h, 
00134                 int color_model);
00135 int mpeg3video_set_cpus(mpeg3video_t *video, int cpus);
00136 int mpeg3video_set_mmx(mpeg3video_t *video, int use_mmx);
00137 int mpeg3video_seek(mpeg3video_t *video);
00138 int mpeg3video_seek_frame(mpeg3video_t *video, long frame);
00139 int mpeg3video_seek_percentage(mpeg3video_t *video, double percentage);
00140 int mpeg3video_previous_frame(mpeg3video_t *video);
00141 int mpeg3video_drop_frames(mpeg3video_t *video, long frames);
00142 int mpeg3video_read_yuvframe(mpeg3video_t *video,
00143                                         long frame_number,
00144                                         char *y_output,
00145                                         char *u_output,
00146                                         char *v_output,
00147                                         int in_x,
00148                                         int in_y,
00149                                         int in_w,
00150                                         int in_h);
00151 int mpeg3video_read_raw(mpeg3video_t *video, unsigned char *output, long *size, long max_size);
00152 int mpeg3video_display_second_field(mpeg3video_t *video);
00153 int mpeg3video_init_output();
00154 int mpeg3video_get_header(mpeg3video_t *video, int dont_repeat);
00155 int mpeg3video_getpicture(mpeg3video_t *video, int framenum);
00156 int mpeg3video_match_refframes(mpeg3video_t *video);
00157 int mpeg3video_next_code(mpeg3_bits_t* stream, unsigned int code);
00158 int mpeg3video_prev_code(mpeg3_bits_t* stream, unsigned int code);
00159 int mpeg3video_getgophdr(mpeg3video_t *video);
00160 int mpeg3video_present_frame(mpeg3video_t *video);
00161 int mpeg3video_read_frame_backend(mpeg3video_t *video, int skip_bframes);
00162 int mpeg3video_getslicehdr(mpeg3_slice_t *slice, mpeg3video_t *video);
00163 int mpeg3video_get_macroblock_address(mpeg3_slice_t *slice);
00164 int mpeg3video_macroblock_modes(mpeg3_slice_t *slice,
00165                 mpeg3video_t *video,
00166                 int *pmb_type,
00167                 int *pstwtype,
00168                 int *pstwclass,
00169                 int *pmotion_type,
00170                 int *pmv_count,
00171                 int *pmv_format,
00172                 int *pdmv,
00173                 int *pmvscale,
00174                 int *pdct_type);
00175 int mpeg3video_motion_vectors(mpeg3_slice_t *slice,
00176                 mpeg3video_t *video,
00177                 int PMV[2][2][2],
00178                 int dmvector[2],
00179                 int mv_field_sel[2][2],
00180                 int s,
00181                 int mv_count,
00182                 int mv_format,
00183                 int h_r_size,
00184                 int v_r_size,
00185                 int dmv,
00186                 int mvscale);
00187 void mpeg3video_motion_vector(mpeg3_slice_t *slice,
00188                 mpeg3video_t *video,
00189                 int *PMV,
00190                 int *dmvector,
00191                 int h_r_size,
00192                 int v_r_size,
00193                 int dmv,
00194                 int mvscale,
00195                 int full_pel_vector);
00196 int mpeg3video_get_cbp(mpeg3_slice_t *slice);
00197 int mpeg3video_clearblock(mpeg3_slice_t *slice, int comp, int size);
00198 int mpeg3video_getmpg2intrablock(mpeg3_slice_t *slice,
00199                 mpeg3video_t *video,
00200                 int comp,
00201                 int dc_dct_pred[]);
00202 int mpeg3video_getintrablock(mpeg3_slice_t *slice,
00203                 mpeg3video_t *video,
00204                 int comp,
00205                 int dc_dct_pred[]);
00206 int mpeg3video_getmpg2interblock(mpeg3_slice_t *slice,
00207                 mpeg3video_t *video,
00208                 int comp);
00209 int mpeg3video_getinterblock(mpeg3_slice_t *slice,
00210                 mpeg3video_t *video,
00211                 int comp);
00212 int mpeg3video_reconstruct(mpeg3video_t *video,
00213         int bx,
00214         int by,
00215         int mb_type,
00216         int motion_type,
00217         int PMV[2][2][2],
00218         int mv_field_sel[2][2],
00219         int dmvector[2],
00220         int stwtype);
00221 void mpeg3video_calc_dmv(mpeg3video_t *video,
00222                 int DMV[][2],
00223                 int *dmvector,
00224                 int mvx,
00225                 int mvy);
00226 
00227 
00228 /* FILESYSTEM */
00229 
00230 mpeg3_fs_t* mpeg3_new_fs(char *path);
00231 int mpeg3_delete_fs(mpeg3_fs_t *fs);
00232 int mpeg3io_open_file(mpeg3_fs_t *fs);
00233 int mpeg3io_close_file(mpeg3_fs_t *fs);
00234 int mpeg3io_read_data(unsigned char *buffer, long bytes, mpeg3_fs_t *fs);
00235 
00236 /* BITSTREAM */
00237 mpeg3_bits_t* mpeg3bits_new_stream(mpeg3_t *file, mpeg3_demuxer_t *demuxer);
00238 unsigned int mpeg3bits_getbits(mpeg3_bits_t* stream, int n);
00239 int mpeg3bits_read_buffer(mpeg3_bits_t* stream, unsigned char *buffer, int bytes);
00240 int mpeg3bits_use_ptr(mpeg3_bits_t* stream, unsigned char *buffer);
00241 int mpeg3bits_use_demuxer(mpeg3_bits_t* stream);
00242 int mpeg3bits_refill(mpeg3_bits_t* stream);
00243 int mpeg3bits_getbitoffset(mpeg3_bits_t *stream);
00244 void mpeg3bits_start_reverse(mpeg3_bits_t* stream);
00245 void mpeg3bits_start_forward(mpeg3_bits_t* stream);
00246 int mpeg3bits_delete_stream(mpeg3_bits_t* stream);
00247 int mpeg3bits_byte_align(mpeg3_bits_t *stream);
00248 int mpeg3bits_seek_start(mpeg3_bits_t* stream);
00249 int mpeg3bits_seek_time(mpeg3_bits_t* stream, double time_position);
00250 int mpeg3bits_seek_byte(mpeg3_bits_t* stream, long position);
00251 int mpeg3bits_seek_percentage(mpeg3_bits_t* stream, double percentage);
00252 unsigned int mpeg3bits_next_startcode(mpeg3_bits_t* stream);
00253 int mpeg3bits_seek_end(mpeg3_bits_t* stream);
00254 
00255 /* MISC */
00256 int mpeg3_read_toc(mpeg3_t *file);
00257 int mpeg3_generate_toc(FILE *output, char *path, int timecode_search, int print_streams);
00258 int mpeg3_mmx_test();
00259 int mpeg3io_seek(mpeg3_fs_t *fs, long byte);
00260 int mpeg3io_seek_relative(mpeg3_fs_t *fs, long bytes);
00261 int mpeg3io_device(char *path, char *device);
00262 int mpeg3_decrypt_packet(mpeg3_css_t *css, unsigned char *sector);
00263 int mpeg3_delete_css(mpeg3_css_t *css);
00264 int mpeg3_get_keys(mpeg3_css_t *css, char *path);
00265 int mpeg3_copy_fs(mpeg3_fs_t *dst, mpeg3_fs_t *src);
00266 int mpeg3_min(int x, int y);
00267 int mpeg3_max(int x, int y);
00268 int mpeg3_new_slice_buffer(mpeg3_slice_buffer_t *slice_buffer);
00269 int mpeg3_expand_slice_buffer(mpeg3_slice_buffer_t *slice_buffer);
00270 int mpeg3_delete_slice_decoder(mpeg3_slice_t *slice);
00271 int mpeg3_new_slice_decoder(mpeg3video_t *video, mpeg3_slice_t *slice);
00272 int mpeg3_delete_slice_buffer(mpeg3_slice_buffer_t *slice_buffer);
00273 
00274 #if defined(__cplusplus)
00275 }
00276 #endif
00277 
00278 #endif

Generated on Sat Nov 5 16:15:37 2005 for OPIE by  doxygen 1.4.2