00001 #ifndef MPEG3PRIVATE_H
00002 #define MPEG3PRIVATE_H
00003
00004 #include <pthread.h>
00005
00006 #include <stdint.h>
00007
00008 #include <stdio.h>
00009
00010
00011
00012
00013
00014
00015 #define MPEG3_MAJOR 1
00016 #define MPEG3_MINOR 7
00017 #define MPEG3_RELEASE 0
00018
00019 #define RENDERFARM_FS_PREFIX "vfs://"
00020
00021
00022 #define MPEG3_FLOAT32 float
00023
00024 #define MPEG3_TOC_PREFIX 0x544f4320
00025
00026 #define MPEG3_TOC_VERSION 0x000000fa
00027 #define MPEG3_ID3_PREFIX 0x494433
00028 #define MPEG3_IFO_PREFIX 0x44564456
00029 #define MPEG3_IO_SIZE 0x100000
00030
00031 #define MPEG3_RIFF_CODE 0x52494646
00032 #define MPEG3_PROC_CPUINFO "/proc/cpuinfo"
00033 #define MPEG3_RAW_SIZE 0x100000
00034 #define MPEG3_BD_PACKET_SIZE 192
00035 #define MPEG3_TS_PACKET_SIZE 188
00036 #define MPEG3_DVD_PACKET_SIZE 0x800
00037 #define MPEG3_SYNC_BYTE 0x47
00038 #define MPEG3_PACK_START_CODE 0x000001ba
00039 #define MPEG3_SEQUENCE_START_CODE 0x000001b3
00040 #define MPEG3_SEQUENCE_END_CODE 0x000001b7
00041 #define MPEG3_SYSTEM_START_CODE 0x000001bb
00042 #define MPEG3_STRLEN 1024
00043 #define MPEG3_PIDMAX 256
00044 #define MPEG3_PROGRAM_ASSOCIATION_TABLE 0x00
00045 #define MPEG3_CONDITIONAL_ACCESS_TABLE 0x01
00046 #define MPEG3_PACKET_START_CODE_PREFIX 0x000001
00047 #define MPEG3_PRIVATE_STREAM_2 0xbf
00048 #define MPEG3_PADDING_STREAM 0xbe
00049 #define MPEG3_GOP_START_CODE 0x000001b8
00050 #define MPEG3_PICTURE_START_CODE 0x00000100
00051 #define MPEG3_EXT_START_CODE 0x000001b5
00052 #define MPEG3_USER_START_CODE 0x000001b2
00053 #define MPEG3_SLICE_MIN_START 0x00000101
00054 #define MPEG3_SLICE_MAX_START 0x000001af
00055 #define MPEG3_AC3_START_CODE 0x0b77
00056 #define MPEG3_PCM_START_CODE 0x7f7f807f
00057 #define MPEG3_MAX_CPUS 256
00058 #define MPEG3_MAX_STREAMS 0x10000
00059 #define MPEG3_MAX_PACKSIZE 262144
00060
00061
00062 #define MPEG3_MAX_SUBTITLES 5
00063
00064 #define MPEG3_CONTIGUOUS_THRESHOLD 10
00065
00066 #define MPEG3_PROGRAM_THRESHOLD 5
00067
00068 #define MPEG3_SEEK_THRESHOLD 16
00069
00070 #define MPEG3_AUDIO_CHUNKSIZE 0x10000
00071
00072 #define MPEG3_AUDIO_STREAM_SIZE 0x1000
00073
00074 #define MPEG3_VIDEO_STREAM_SIZE 0x1000
00075 #define MPEG3_LITTLE_ENDIAN ((*(uint32_t*)"x\0\0\0") & 0x000000ff)
00076
00077 #define MPEG3_AUDIO_HISTORY 0x100000
00078
00079 #define MPEG3_PTS_RANGE 0x100000
00080
00081
00082 #define AUDIO_UNKNOWN 0
00083 #define AUDIO_MPEG 1
00084 #define AUDIO_AC3 2
00085 #define AUDIO_PCM 3
00086 #define AUDIO_AAC 4
00087 #define AUDIO_JESUS 5
00088
00089
00090
00091 #define FILE_TYPE_PROGRAM 0x00000000
00092 #define FILE_TYPE_TRANSPORT 0x00000001
00093 #define FILE_TYPE_AUDIO 0x00000002
00094 #define FILE_TYPE_VIDEO 0x00000003
00095
00096 #define STREAM_AUDIO 0x00000004
00097 #define STREAM_VIDEO 0x00000005
00098 #define STREAM_SUBTITLE 0x00000006
00099
00100 #define OFFSETS_AUDIO 0x00000007
00101 #define OFFSETS_VIDEO 0x00000008
00102
00103 #define ATRACK_COUNT 0x9
00104 #define VTRACK_COUNT 0xa
00105 #define STRACK_COUNT 0xb
00106
00107 #define TITLE_PATH 0xc
00108 #define IFO_PALETTE 0xd
00109 #define FILE_INFO 0xe
00110
00111
00112 #define CUSTOM_ID(pid, stream_id) (((pid << 8) | stream_id) & 0xffff)
00113 #define CUSTOM_ID_PID(id) (id >> 8)
00114 #define CUSTOM_ID_STREAMID(id) (id & 0xff)
00115
00116 #ifndef MAX
00117 #define MAX(a, b) ((a) > (b) ? (a) : (b))
00118 #endif
00119
00120 #ifndef MIN
00121 #define MIN(a, b) ((a) < (b) ? (a) : (b))
00122 #endif
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133 struct mpeg3_block
00134 {
00135 unsigned char b[5];
00136 };
00137
00138 struct mpeg3_playkey
00139 {
00140 int offset;
00141 unsigned char key[5];
00142 };
00143
00144 typedef struct
00145 {
00146 int encrypted;
00147 char device_path[MPEG3_STRLEN];
00148 unsigned char disk_key[MPEG3_DVD_PACKET_SIZE];
00149 unsigned char title_key[5];
00150 char challenge[10];
00151 struct mpeg3_block key1;
00152 struct mpeg3_block key2;
00153 struct mpeg3_block keycheck;
00154 int varient;
00155 int fd;
00156 char path[MPEG3_STRLEN];
00157 } mpeg3_css_t;
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187 typedef struct
00188 {
00189 FILE *fd;
00190 mpeg3_css_t *css;
00191 char path[MPEG3_STRLEN];
00192 unsigned char *buffer;
00193 int64_t buffer_offset;
00194 int64_t buffer_size;
00195 int64_t buffer_position;
00196
00197
00198 int64_t current_byte;
00199 int64_t total_bytes;
00200 } mpeg3_fs_t;
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220 typedef struct
00221 {
00222
00223 int64_t title_start;
00224
00225 int64_t title_end;
00226
00227 int64_t program_start;
00228
00229 int64_t program_end;
00230
00231 int program;
00232 } mpeg3_cell_t;
00233
00234 typedef struct
00235 {
00236 void *file;
00237 mpeg3_fs_t *fs;
00238
00239 int64_t total_bytes;
00240
00241 int64_t start_byte;
00242
00243 int64_t end_byte;
00244
00245 mpeg3_cell_t *cell_table;
00246 int cell_table_size;
00247 int cell_table_allocation;
00248 } mpeg3_title_t;
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266 typedef struct
00267 {
00268
00269 unsigned char *data;
00270
00271 int size;
00272
00273 int id;
00274 int done;
00275
00276 int64_t offset;
00277
00278
00279 unsigned char *image_y;
00280 unsigned char *image_u;
00281 unsigned char *image_v;
00282 unsigned char *image_a;
00283 int x1;
00284 int x2;
00285 int y1;
00286 int y2;
00287 int w;
00288 int h;
00289
00290 int force;
00291
00292 int start_time;
00293
00294 int stop_time;
00295
00296 int palette[4];
00297 int alpha[4];
00298
00299 int active;
00300 } mpeg3_subtitle_t;
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320 typedef struct
00321 {
00322
00323 void* file;
00324
00325 unsigned char *raw_data;
00326
00327 int raw_offset;
00328
00329 int raw_size;
00330
00331
00332
00333
00334 unsigned char *data_buffer;
00335
00336 int data_allocated;
00337
00338 int data_size;
00339
00340 int data_position;
00341
00342
00343 int data_start;
00344
00345
00346
00347
00348
00349 unsigned char *audio_buffer;
00350 int audio_allocated;
00351 int audio_size;
00352 int audio_start;
00353 unsigned char *video_buffer;
00354 int video_allocated;
00355 int video_size;
00356 int video_start;
00357
00358
00359
00360 mpeg3_subtitle_t **subtitles;
00361 int total_subtitles;
00362
00363
00364
00365
00366
00367
00368 int do_audio;
00369 int do_video;
00370 int read_all;
00371
00372
00373 int reverse;
00374
00375 int error_flag;
00376
00377 unsigned char next_char;
00378
00379 int64_t last_packet_start;
00380 int64_t last_packet_end;
00381 int64_t last_packet_decryption;
00382
00383
00384 mpeg3_title_t *titles[MPEG3_MAX_STREAMS];
00385 int total_titles;
00386
00387 int current_title;
00388
00389
00390
00391 int astream_table[MPEG3_MAX_STREAMS];
00392 int vstream_table[MPEG3_MAX_STREAMS];
00393
00394
00395 int total_programs;
00396 int current_program;
00397
00398
00399 int title_cell;
00400
00401
00402 int64_t program_byte;
00403
00404 int64_t total_bytes;
00405
00406 int64_t stream_end;
00407
00408 int transport_error_indicator;
00409 int payload_unit_start_indicator;
00410
00411 int pid;
00412
00413 unsigned int stream_id;
00414
00415 unsigned int custom_id;
00416 int transport_scrambling_control;
00417 int adaptation_field_control;
00418 int continuity_counter;
00419 int is_padding;
00420 int pid_table[MPEG3_PIDMAX];
00421 int continuity_counters[MPEG3_PIDMAX];
00422 int total_pids;
00423 int adaptation_fields;
00424 double time;
00425 int audio_pid;
00426 int video_pid;
00427 int got_audio;
00428 int got_video;
00429
00430 int got_subtitle;
00431
00432
00433 int astream;
00434
00435 int vstream;
00436
00437
00438 int aformat;
00439 int program_association_tables;
00440 int table_id;
00441 int section_length;
00442 int transport_stream_id;
00443 int pes_packets;
00444 double pes_audio_time;
00445 double pes_video_time;
00446
00447 int dump;
00448 } mpeg3_demuxer_t;
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476 typedef struct
00477 {
00478 uint32_t bfr;
00479 int bit_number;
00480 int bfr_size;
00481 void *file;
00482 mpeg3_demuxer_t *demuxer;
00483
00484 unsigned char *input_ptr;
00485 } mpeg3_bits_t;
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504 #define AC3_N 512
00505
00506 #define MAXFRAMESIZE 4096
00507 #define MAXFRAMESAMPLES 65536
00508 #define HDRCMPMASK 0xfffffd00
00509 #define SBLIMIT 32
00510 #define SSLIMIT 18
00511 #define SCALE_BLOCK 12
00512 #define MPEG3AUDIO_PADDING 1024
00513
00514
00515 #define MPG_MD_STEREO 0
00516 #define MPG_MD_JOINT_STEREO 1
00517 #define MPG_MD_DUAL_CHANNEL 2
00518 #define MPG_MD_MONO 3
00519
00520
00521 #define MAX_AC3_FRAMESIZE 1920 * 2 + 512
00522
00523 extern int mpeg3_ac3_samplerates[3];
00524
00525
00526 #define MPEG3_EXP_REUSE (0)
00527 #define MPEG3_EXP_D15 (1)
00528 #define MPEG3_EXP_D25 (2)
00529 #define MPEG3_EXP_D45 (3)
00530
00531
00532 #define DELTA_BIT_REUSE (0)
00533 #define DELTA_BIT_NEW (1)
00534 #define DELTA_BIT_NONE (2)
00535 #define DELTA_BIT_RESERVED (3)
00536
00537
00538
00539
00540
00541
00542
00543 typedef struct
00544 {
00545 mpeg3_bits_t *stream;
00546
00547
00548
00549 unsigned char *bsbuf, *bsbufold;
00550 unsigned char bsspace[2][MAXFRAMESIZE + 512];
00551 int bsnum;
00552 long framesize;
00553 long prev_framesize;
00554 int channels;
00555 int samplerate;
00556 int single;
00557 int sampling_frequency_code;
00558 int error_protection;
00559 int mode;
00560 int mode_ext;
00561 int lsf;
00562 long ssize;
00563 int mpeg35;
00564 int padding;
00565 int layer;
00566 int extension;
00567 int copyright;
00568 int original;
00569 int emphasis;
00570 int bitrate;
00571
00572 int bo;
00573
00574 int first_frame;
00575
00576 float synth_stereo_buffs[2][2][0x110];
00577 float synth_mono_buff[64];
00578 float mp3_block[2][2][SBLIMIT * SSLIMIT];
00579 int mp3_blc[2];
00580
00581
00582
00583
00584 int bitrate_index;
00585 struct al_table *alloc;
00586 int jsbound;
00587 int II_sblimit;
00588 unsigned int layer2_scfsi_buf[64];
00589 } mpeg3_layer_t;
00590
00591
00592
00593
00594
00595
00596
00597 typedef struct
00598 {
00599 mpeg3_bits_t *stream;
00600 int samplerate;
00601 int bitrate;
00602 int flags;
00603 int channels;
00604 void *state;
00605 void *output;
00606 int framesize;
00607 } mpeg3_ac3_t;
00608
00609
00610
00611
00612
00613
00614 #define PCM_HEADERSIZE 20
00615 typedef struct
00616 {
00617 int samplerate;
00618 int bits;
00619 int channels;
00620 int framesize;
00621 } mpeg3_pcm_t;
00622
00623
00624
00625
00626
00627
00628
00629 typedef struct
00630 {
00631 float real;
00632 float imag;
00633 } mpeg3_complex_t;
00634
00635 struct al_table
00636 {
00637 short bits;
00638 short d;
00639 };
00640
00641
00642 typedef struct
00643 {
00644 void* file;
00645 void* track;
00646
00647 mpeg3_ac3_t *ac3_decoder;
00648 mpeg3_layer_t *layer_decoder;
00649 mpeg3_pcm_t *pcm_decoder;
00650
00651
00652 long outscale;
00653
00654 int framenum;
00655
00656
00657 int framesize;
00658
00659 float **output;
00660
00661 int output_size;
00662
00663 int output_allocated;
00664
00665 int output_position;
00666
00667
00668 int sample_seek;
00669
00670 int64_t byte_seek;
00671
00672 int seek_correction;
00673
00674 unsigned char packet_buffer[MAXFRAMESIZE];
00675
00676 int packet_position;
00677 } mpeg3audio_t;
00678
00679
00680
00681
00682
00683 typedef struct
00684 {
00685
00686 float **index_data;
00687
00688 int index_allocated;
00689
00690 int index_channels;
00691
00692 int index_size;
00693
00694 int index_zoom;
00695 } mpeg3_index_t;
00696
00697
00698
00699 typedef struct
00700 {
00701 int channels;
00702 int sample_rate;
00703 mpeg3_demuxer_t *demuxer;
00704 mpeg3audio_t *audio;
00705 int current_position;
00706 int64_t total_samples;
00707 int format;
00708 unsigned int pid;
00709
00710 int got_header;
00711
00712
00713
00714
00715
00716
00717 int64_t *sample_offsets;
00718 int total_sample_offsets;
00719 int sample_offsets_allocated;
00720
00721 int private_offsets;
00722
00723 int64_t audio_eof;
00724
00725
00726
00727
00728
00729 int64_t prev_offset;
00730
00731 } mpeg3_atrack_t;
00732
00733
00734
00735
00736
00737
00738
00739
00740
00741
00742
00743
00744
00745
00746
00747
00748
00749
00750
00751
00752
00753
00754 extern unsigned char mpeg3_zig_zag_scan_nommx[64];
00755
00756
00757 extern unsigned char mpeg3_alternate_scan_nommx[64];
00758
00759
00760 extern unsigned char mpeg3_default_intra_quantizer_matrix[64];
00761
00762
00763 extern double mpeg3_frame_rate_table[16];
00764
00765
00766 extern unsigned char mpeg3_non_linear_mquant_table[32];
00767
00768 #define CHROMA420 1
00769 #define CHROMA422 2
00770 #define CHROMA444 3
00771
00772 #define TOP_FIELD 1
00773 #define BOTTOM_FIELD 2
00774 #define FRAME_PICTURE 3
00775
00776 #define SEQ_ID 1
00777 #define DISP_ID 2
00778 #define QUANT_ID 3
00779 #define SEQSCAL_ID 5
00780 #define PANSCAN_ID 7
00781 #define CODING_ID 8
00782 #define SPATSCAL_ID 9
00783 #define TEMPSCAL_ID 10
00784
00785 #define SC_NONE 0
00786 #define SC_DP 1
00787 #define SC_SPAT 2
00788 #define SC_SNR 3
00789 #define SC_TEMP 4
00790
00791 #define I_TYPE 1
00792 #define P_TYPE 2
00793 #define B_TYPE 3
00794 #define D_TYPE 4
00795
00796 #define MB_INTRA 1
00797 #define MB_PATTERN 2
00798 #define MB_BACKWARD 4
00799 #define MB_FORWARD 8
00800 #define MB_QUANT 16
00801 #define MB_WEIGHT 32
00802 #define MB_CLASS4 64
00803
00804 #define MC_FIELD 1
00805 #define MC_FRAME 2
00806 #define MC_16X8 2
00807 #define MC_DMV 3
00808
00809 #define MV_FIELD 0
00810 #define MV_FRAME 1
00811
00812
00813
00814
00815
00816
00817
00818
00819
00820
00821
00822
00823 typedef struct
00824 {
00825 unsigned char *data;
00826 int buffer_size;
00827 int buffer_allocation;
00828 int current_position;
00829 uint32_t bits;
00830 int bits_size;
00831 pthread_mutex_t completion_lock;
00832 int done;
00833 } mpeg3_slice_buffer_t;
00834
00835
00836 typedef struct
00837 {
00838 void *video;
00839 mpeg3_slice_buffer_t *slice_buffer;
00840
00841 int thread_number;
00842 int current_buffer;
00843 int buffer_step;
00844 int last_buffer;
00845 int fault;
00846 int done;
00847 int quant_scale;
00848 int pri_brk;
00849 short block[12][64];
00850 int sparse[12];
00851 pthread_t tid;
00852 pthread_mutex_t input_lock, output_lock, completion_lock;
00853 } mpeg3_slice_t;
00854
00855 typedef struct
00856 {
00857 int hour;
00858 int minute;
00859 int second;
00860 int frame;
00861 } mpeg3_timecode_t;
00862
00863
00864
00865 typedef struct
00866 {
00867 unsigned char *y, *u, *v;
00868 int y_size;
00869 int u_size;
00870 int v_size;
00871 int64_t frame_number;
00872 } mpeg3_cacheframe_t;
00873
00874 typedef struct
00875 {
00876 mpeg3_cacheframe_t *frames;
00877 int total;
00878 int allocation;
00879 } mpeg3_cache_t;
00880
00881
00882 typedef struct
00883 {
00884 void* file;
00885 void* track;
00886
00887
00888 mpeg3_bits_t *vstream;
00889 int decoder_initted;
00890 unsigned char **output_rows;
00891 int in_x, in_y, in_w, in_h, out_w, out_h;
00892 int row_span;
00893 int *x_table, *y_table;
00894 int color_model;
00895 int want_yvu;
00896 char *y_output, *u_output, *v_output;
00897
00898 mpeg3_slice_t slice_decoders[MPEG3_MAX_CPUS];
00899 int total_slice_decoders;
00900 mpeg3_slice_buffer_t slice_buffers[MPEG3_MAX_CPUS];
00901 int total_slice_buffers;
00902 int slice_buffers_initialized;
00903 pthread_mutex_t slice_lock;
00904 pthread_mutex_t test_lock;
00905
00906 int blockreadsize;
00907 int maxframe;
00908 int64_t byte_seek;
00909 int frame_seek;
00910 int framenum;
00911 int last_number;
00912 int found_seqhdr;
00913 int bitrate;
00914 mpeg3_timecode_t gop_timecode;
00915 int has_gops;
00916
00917
00918 int frames_per_gop;
00919 int first_gop_frames;
00920 int first_frame;
00921 int last_frame;
00922
00923
00924
00925
00926 unsigned char *yuv_buffer[5];
00927 unsigned char *oldrefframe[3], *refframe[3], *auxframe[3];
00928 unsigned char *llframe0[3], *llframe1[3];
00929 unsigned char *mpeg3_zigzag_scan_table;
00930 unsigned char *mpeg3_alternate_scan_table;
00931
00932 unsigned char *output_src[3];
00933
00934 unsigned char *newframe[3];
00935 int horizontal_size, vertical_size, mb_width, mb_height;
00936 int coded_picture_width, coded_picture_height;
00937 int chroma_format, chrom_width, chrom_height, blk_cnt;
00938 int pict_type;
00939 int field_sequence;
00940 int forw_r_size, back_r_size, full_forw, full_back;
00941 int prog_seq, prog_frame;
00942 int h_forw_r_size, v_forw_r_size, h_back_r_size, v_back_r_size;
00943 int dc_prec, pict_struct, topfirst, frame_pred_dct, conceal_mv;
00944 int intravlc;
00945 int repeatfirst;
00946
00947 int repeat_count;
00948
00949 int current_repeat;
00950 int secondfield;
00951 int skip_bframes;
00952 int stwc_table_index, llw, llh, hm, hn, vm, vn;
00953 int lltempref, llx0, lly0, llprog_frame, llfieldsel;
00954 int matrix_coefficients;
00955 int framerate_code;
00956 double frame_rate;
00957 int *cr_to_r, *cr_to_g, *cb_to_g, *cb_to_b;
00958 int *cr_to_r_ptr, *cr_to_g_ptr, *cb_to_g_ptr, *cb_to_b_ptr;
00959 int intra_quantizer_matrix[64], non_intra_quantizer_matrix[64];
00960 int chroma_intra_quantizer_matrix[64], chroma_non_intra_quantizer_matrix[64];
00961 int mpeg2;
00962 int qscale_type, altscan;
00963 int pict_scal;
00964 int scalable_mode;
00965
00966
00967 unsigned char *subtitle_frame[3];
00968 } mpeg3video_t;
00969
00970
00971
00972
00973
00974
00975
00976
00977
00978
00979
00980
00981
00982
00983
00984 typedef struct
00985 {
00986 int width;
00987 int height;
00988 double frame_rate;
00989 float aspect_ratio;
00990 mpeg3_demuxer_t *demuxer;
00991
00992 mpeg3video_t *video;
00993
00994 mpeg3_subtitle_t **subtitles;
00995 int total_subtitles;
00996 int current_position;
00997 int total_frames;
00998 unsigned int pid;
00999
01000
01001
01002
01003
01004 int64_t *frame_offsets;
01005 int total_frame_offsets;
01006 int frame_offsets_allocated;
01007 int64_t *keyframe_numbers;
01008 int total_keyframe_numbers;
01009 int keyframe_numbers_allocated;
01010
01011 int64_t prev_offset;
01012
01013
01014 int64_t prev_frame_offset;
01015
01016 int64_t video_eof;
01017
01018
01019 mpeg3_cache_t *frame_cache;
01020
01021
01022
01023
01024 int private_offsets;
01025 } mpeg3_vtrack_t;
01026
01027
01028
01029
01030
01031
01032
01033
01034
01035
01036
01037
01038 typedef struct
01039 {
01040
01041 int id;
01042
01043 int64_t *offsets;
01044 int total_offsets;
01045 int allocated_offsets;
01046
01047
01048 mpeg3_subtitle_t **subtitles;
01049 int total_subtitles;
01050 int allocated_subtitles;
01051 } mpeg3_strack_t;
01052
01053
01054
01055
01056
01057
01058
01059
01060
01061 typedef struct
01062 {
01063
01064 mpeg3_fs_t *fs;
01065
01066 mpeg3_demuxer_t *demuxer;
01067
01068
01069 int total_astreams;
01070 mpeg3_atrack_t *atrack[MPEG3_MAX_STREAMS];
01071 int total_vstreams;
01072 mpeg3_vtrack_t *vtrack[MPEG3_MAX_STREAMS];
01073 int total_sstreams;
01074 mpeg3_strack_t *strack[MPEG3_MAX_STREAMS];
01075
01076
01077 int64_t **frame_offsets;
01078 int64_t **sample_offsets;
01079 int64_t **keyframe_numbers;
01080 int64_t *video_eof;
01081 int64_t *audio_eof;
01082 int *total_frame_offsets;
01083 int *total_sample_offsets;
01084 int64_t *total_samples;
01085 int *total_keyframe_numbers;
01086
01087 int *channel_counts;
01088
01089 mpeg3_index_t **indexes;
01090 int total_indexes;
01091
01092
01093
01094
01095 int64_t index_bytes;
01096
01097
01098 int is_transport_stream;
01099 int is_program_stream;
01100 int is_ifo_file;
01101 int is_audio_stream;
01102 int is_video_stream;
01103
01104 int is_bd;
01105
01106 int packet_size;
01107
01108 int last_type_read;
01109 int last_stream_read;
01110
01111
01112 int subtitle_track;
01113
01114
01115 int program;
01116 int cpus;
01117
01118
01119 int seekable;
01120
01121
01122 FILE *toc_fd;
01123
01124
01125
01126
01127
01128
01129 int64_t byte_pts;
01130
01131
01132
01133
01134
01135 int have_palette;
01136 unsigned char palette[16 * 4];
01137
01138
01139
01140 int64_t source_date;
01141 } mpeg3_t;
01142
01143
01144
01145
01146 #endif