Mercurial > mplayer.hg
comparison libmpdemux/demuxer.c @ 6951:0504c8beccba
messages moved again
author | jaf |
---|---|
date | Thu, 08 Aug 2002 13:55:15 +0000 |
parents | 9d0090eae586 |
children | 3639db1fb8d3 |
comparison
equal
deleted
inserted
replaced
6950:d0adb23dec87 | 6951:0504c8beccba |
---|---|
90 return NULL; | 90 return NULL; |
91 } | 91 } |
92 if(demuxer->a_streams[id]){ | 92 if(demuxer->a_streams[id]){ |
93 mp_msg(MSGT_DEMUXER,MSGL_WARN,MSGTR_AudioStreamRedefined,id); | 93 mp_msg(MSGT_DEMUXER,MSGL_WARN,MSGTR_AudioStreamRedefined,id); |
94 } else { | 94 } else { |
95 mp_msg(MSGT_DEMUXER,MSGL_V,"==> Found audio stream: %d\n",id); | 95 mp_msg(MSGT_DEMUXER,MSGL_V,MSGTR_FoundAudioStream,id); |
96 demuxer->a_streams[id]=malloc(sizeof(sh_audio_t)); | 96 demuxer->a_streams[id]=malloc(sizeof(sh_audio_t)); |
97 memset(demuxer->a_streams[id],0,sizeof(sh_audio_t)); | 97 memset(demuxer->a_streams[id],0,sizeof(sh_audio_t)); |
98 } | 98 } |
99 return demuxer->a_streams[id]; | 99 return demuxer->a_streams[id]; |
100 } | 100 } |
124 return NULL; | 124 return NULL; |
125 } | 125 } |
126 if(demuxer->v_streams[id]){ | 126 if(demuxer->v_streams[id]){ |
127 mp_msg(MSGT_DEMUXER,MSGL_WARN,MSGTR_VideoStreamRedefined,id); | 127 mp_msg(MSGT_DEMUXER,MSGL_WARN,MSGTR_VideoStreamRedefined,id); |
128 } else { | 128 } else { |
129 mp_msg(MSGT_DEMUXER,MSGL_V,"==> Found video stream: %d\n",id); | 129 mp_msg(MSGT_DEMUXER,MSGL_V,MSGTR_FoundVideoStream,id); |
130 demuxer->v_streams[id]=malloc(sizeof(sh_video_t)); | 130 demuxer->v_streams[id]=malloc(sizeof(sh_video_t)); |
131 memset(demuxer->v_streams[id],0,sizeof(sh_video_t)); | 131 memset(demuxer->v_streams[id],0,sizeof(sh_video_t)); |
132 } | 132 } |
133 return demuxer->v_streams[id]; | 133 return demuxer->v_streams[id]; |
134 } | 134 } |
569 #ifdef USE_TV | 569 #ifdef USE_TV |
570 //=============== Try to open as TV-input: ================= | 570 //=============== Try to open as TV-input: ================= |
571 if((tv_param_on == 1) && | 571 if((tv_param_on == 1) && |
572 (file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_TV)){ | 572 (file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_TV)){ |
573 demuxer=new_demuxer(stream,DEMUXER_TYPE_TV,audio_id,video_id,dvdsub_id); | 573 demuxer=new_demuxer(stream,DEMUXER_TYPE_TV,audio_id,video_id,dvdsub_id); |
574 mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected TV! ;-)\n"); | 574 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedTV); |
575 file_format=DEMUXER_TYPE_TV; | 575 file_format=DEMUXER_TYPE_TV; |
576 } | 576 } |
577 #endif | 577 #endif |
578 | 578 |
579 //=============== Try to open as multi file: ================= | 579 //=============== Try to open as multi file: ================= |
605 } | 605 } |
606 //=============== Try to open as Y4M file: ================= | 606 //=============== Try to open as Y4M file: ================= |
607 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_Y4M){ | 607 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_Y4M){ |
608 demuxer=new_demuxer(stream,DEMUXER_TYPE_Y4M,audio_id,video_id,dvdsub_id); | 608 demuxer=new_demuxer(stream,DEMUXER_TYPE_Y4M,audio_id,video_id,dvdsub_id); |
609 if(y4m_check_file(demuxer)){ | 609 if(y4m_check_file(demuxer)){ |
610 mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected YUV4MPEG2 file format!\n"); | 610 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedYUV4MPEG2file); |
611 file_format=DEMUXER_TYPE_Y4M; | 611 file_format=DEMUXER_TYPE_Y4M; |
612 } else { | 612 } else { |
613 free_demuxer(demuxer); | 613 free_demuxer(demuxer); |
614 demuxer = NULL; | 614 demuxer = NULL; |
615 } | 615 } |
627 } | 627 } |
628 //=============== Try to open as NUV file: ================= | 628 //=============== Try to open as NUV file: ================= |
629 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_NUV){ | 629 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_NUV){ |
630 demuxer=new_demuxer(stream,DEMUXER_TYPE_NUV,audio_id,video_id,dvdsub_id); | 630 demuxer=new_demuxer(stream,DEMUXER_TYPE_NUV,audio_id,video_id,dvdsub_id); |
631 if(nuv_check_file(demuxer)){ | 631 if(nuv_check_file(demuxer)){ |
632 mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected NuppelVideo file format!\n"); | 632 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedNuppelVideofile); |
633 file_format=DEMUXER_TYPE_NUV; | 633 file_format=DEMUXER_TYPE_NUV; |
634 } else { | 634 } else { |
635 free_demuxer(demuxer); | 635 free_demuxer(demuxer); |
636 demuxer = NULL; | 636 demuxer = NULL; |
637 } | 637 } |
649 } | 649 } |
650 //=============== Try to open as VIVO file: ================= | 650 //=============== Try to open as VIVO file: ================= |
651 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_VIVO){ | 651 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_VIVO){ |
652 demuxer=new_demuxer(stream,DEMUXER_TYPE_VIVO,audio_id,video_id,dvdsub_id); | 652 demuxer=new_demuxer(stream,DEMUXER_TYPE_VIVO,audio_id,video_id,dvdsub_id); |
653 if(vivo_check_file(demuxer)){ | 653 if(vivo_check_file(demuxer)){ |
654 mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected VIVO file format!\n"); | 654 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedVIVOfile); |
655 file_format=DEMUXER_TYPE_VIVO; | 655 file_format=DEMUXER_TYPE_VIVO; |
656 } else { | 656 } else { |
657 free_demuxer(demuxer); | 657 free_demuxer(demuxer); |
658 demuxer = NULL; | 658 demuxer = NULL; |
659 } | 659 } |
714 } | 714 } |
715 //=============== Try to open as BMP file: ================= | 715 //=============== Try to open as BMP file: ================= |
716 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_BMP){ | 716 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_BMP){ |
717 demuxer=new_demuxer(stream,DEMUXER_TYPE_BMP,audio_id,video_id,dvdsub_id); | 717 demuxer=new_demuxer(stream,DEMUXER_TYPE_BMP,audio_id,video_id,dvdsub_id); |
718 if(bmp_check_file(demuxer)){ | 718 if(bmp_check_file(demuxer)){ |
719 mp_msg(MSGT_DEMUXER,MSGL_INFO,"BMP file\n"); | 719 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedBMPfile); |
720 file_format=DEMUXER_TYPE_BMP; | 720 file_format=DEMUXER_TYPE_BMP; |
721 } else { | 721 } else { |
722 free_demuxer(demuxer); | 722 free_demuxer(demuxer); |
723 demuxer = NULL; | 723 demuxer = NULL; |
724 } | 724 } |
725 } | 725 } |
726 //=============== Try to open as Ogg file: ================= | 726 //=============== Try to open as Ogg file: ================= |
727 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_OGG){ | 727 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_OGG){ |
728 demuxer=new_demuxer(stream,DEMUXER_TYPE_OGG,audio_id,video_id,dvdsub_id); | 728 demuxer=new_demuxer(stream,DEMUXER_TYPE_OGG,audio_id,video_id,dvdsub_id); |
729 if(demux_ogg_open(demuxer)){ | 729 if(demux_ogg_open(demuxer)){ |
730 mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected OGG format\n"); | 730 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedOGGfile); |
731 file_format=DEMUXER_TYPE_OGG; | 731 file_format=DEMUXER_TYPE_OGG; |
732 } else { | 732 } else { |
733 free_demuxer(demuxer); | 733 free_demuxer(demuxer); |
734 demuxer = NULL; | 734 demuxer = NULL; |
735 } | 735 } |
781 file_format=DEMUXER_TYPE_MPEG_ES; // <-- hack is here :) | 781 file_format=DEMUXER_TYPE_MPEG_ES; // <-- hack is here :) |
782 } else { | 782 } else { |
783 if(demuxer->synced==2) | 783 if(demuxer->synced==2) |
784 mp_msg(MSGT_DEMUXER,MSGL_ERR,"MPEG: " MSGTR_MissingVideoStreamBug); | 784 mp_msg(MSGT_DEMUXER,MSGL_ERR,"MPEG: " MSGTR_MissingVideoStreamBug); |
785 else | 785 else |
786 mp_msg(MSGT_DEMUXER,MSGL_V,"Not MPEG System Stream format... (maybe Transport Stream?)\n"); | 786 mp_msg(MSGT_DEMUXER,MSGL_V,MSGTR_NotSystemStream); |
787 free_demuxer(demuxer); | 787 free_demuxer(demuxer); |
788 demuxer = NULL; | 788 demuxer = NULL; |
789 } | 789 } |
790 } | 790 } |
791 break; | 791 break; |
808 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_RAWDV) | 808 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_RAWDV) |
809 { | 809 { |
810 demuxer=new_demuxer(stream,DEMUXER_TYPE_RAWDV,audio_id,video_id,dvdsub_id); | 810 demuxer=new_demuxer(stream,DEMUXER_TYPE_RAWDV,audio_id,video_id,dvdsub_id); |
811 if(check_file_rawdv(demuxer)) | 811 if(check_file_rawdv(demuxer)) |
812 { | 812 { |
813 mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected RAWDV file format!\n"); | 813 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedRAWDVfile); |
814 file_format=DEMUXER_TYPE_RAWDV; | 814 file_format=DEMUXER_TYPE_RAWDV; |
815 } | 815 } |
816 else | 816 else |
817 free_demuxer(demuxer); | 817 free_demuxer(demuxer); |
818 } | 818 } |
819 #endif | 819 #endif |
820 //=============== Try to open as audio file: ================= | 820 //=============== Try to open as audio file: ================= |
821 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_AUDIO){ | 821 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_AUDIO){ |
822 demuxer=new_demuxer(stream,DEMUXER_TYPE_AUDIO,audio_id,video_id,dvdsub_id); | 822 demuxer=new_demuxer(stream,DEMUXER_TYPE_AUDIO,audio_id,video_id,dvdsub_id); |
823 if(demux_audio_open(demuxer)){ | 823 if(demux_audio_open(demuxer)){ |
824 mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected audio file\n"); | 824 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedAudiofile); |
825 file_format=DEMUXER_TYPE_AUDIO; | 825 file_format=DEMUXER_TYPE_AUDIO; |
826 } else { | 826 } else { |
827 free_demuxer(demuxer); | 827 free_demuxer(demuxer); |
828 demuxer = NULL; | 828 demuxer = NULL; |
829 } | 829 } |
895 stream_t* s; | 895 stream_t* s; |
896 demuxer_t *od; | 896 demuxer_t *od; |
897 s = new_ds_stream(demuxer->audio); | 897 s = new_ds_stream(demuxer->audio); |
898 od = new_demuxer(s,DEMUXER_TYPE_OGG,-1,-2,-2); | 898 od = new_demuxer(s,DEMUXER_TYPE_OGG,-1,-2,-2); |
899 if(!demux_ogg_open(od)) { | 899 if(!demux_ogg_open(od)) { |
900 mp_msg( MSGT_DEMUXER,MSGL_ERR,"Unable to open the ogg demuxer\n"); | 900 mp_msg( MSGT_DEMUXER,MSGL_ERR,MSGTR_ErrorOpeningOGGDemuxer); |
901 free_stream(s); | 901 free_stream(s); |
902 demuxer->audio->id = -2; | 902 demuxer->audio->id = -2; |
903 } else | 903 } else |
904 demuxer = new_demuxers_demuxer(demuxer,od,demuxer); | 904 demuxer = new_demuxers_demuxer(demuxer,od,demuxer); |
905 } | 905 } |
946 sh_video->bih->biBitCount); | 946 sh_video->bih->biBitCount); |
947 // sh_video->i_bps=10*asf_packetsize; // FIXME! | 947 // sh_video->i_bps=10*asf_packetsize; // FIXME! |
948 } | 948 } |
949 } | 949 } |
950 if(d_audio->id!=-2){ | 950 if(d_audio->id!=-2){ |
951 mp_msg(MSGT_DEMUXER,MSGL_V,"ASF: Searching for audio stream (id:%d)\n",d_audio->id); | 951 mp_msg(MSGT_DEMUXER,MSGL_V,MSGTR_ASFSearchingForAudioStream,d_audio->id); |
952 if(!ds_fill_buffer(d_audio)){ | 952 if(!ds_fill_buffer(d_audio)){ |
953 mp_msg(MSGT_DEMUXER,MSGL_INFO,"ASF: " MSGTR_MissingAudioStream); | 953 mp_msg(MSGT_DEMUXER,MSGL_INFO,"ASF: " MSGTR_MissingAudioStream); |
954 sh_audio=NULL; | 954 sh_audio=NULL; |
955 } else { | 955 } else { |
956 sh_audio=d_audio->sh;sh_audio->ds=d_audio; | 956 sh_audio=d_audio->sh;sh_audio->ds=d_audio; |
1017 int afmt = 0,sfmt = 0; | 1017 int afmt = 0,sfmt = 0; |
1018 | 1018 |
1019 if(audio_stream) { | 1019 if(audio_stream) { |
1020 as = open_stream(audio_stream,0,&afmt); | 1020 as = open_stream(audio_stream,0,&afmt); |
1021 if(!as) { | 1021 if(!as) { |
1022 mp_msg(MSGT_DEMUXER,MSGL_ERR,"Can't open audio stream: %s\n",audio_stream); | 1022 mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_CannotOpenAudioStream,audio_stream); |
1023 return NULL; | 1023 return NULL; |
1024 } | 1024 } |
1025 } | 1025 } |
1026 if(sub_stream) { | 1026 if(sub_stream) { |
1027 ss = open_stream(sub_stream,0,&sfmt); | 1027 ss = open_stream(sub_stream,0,&sfmt); |
1028 if(!ss) { | 1028 if(!ss) { |
1029 mp_msg(MSGT_DEMUXER,MSGL_ERR,"Can't open subtitles stream: %s\n",sub_stream); | 1029 mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_CannotOpenSubtitlesStream,sub_stream); |
1030 return NULL; | 1030 return NULL; |
1031 } | 1031 } |
1032 } | 1032 } |
1033 | 1033 |
1034 vd = demux_open_stream(vs,demuxer_type ? demuxer_type : file_format,audio_stream ? -2 : audio_id,video_id, sub_stream ? -2 : dvdsub_id); | 1034 vd = demux_open_stream(vs,demuxer_type ? demuxer_type : file_format,audio_stream ? -2 : audio_id,video_id, sub_stream ? -2 : dvdsub_id); |
1035 if(!vd) | 1035 if(!vd) |
1036 return NULL; | 1036 return NULL; |
1037 if(as) { | 1037 if(as) { |
1038 ad = demux_open_stream(as,audio_demuxer_type ? audio_demuxer_type : afmt,audio_id,-2,-2); | 1038 ad = demux_open_stream(as,audio_demuxer_type ? audio_demuxer_type : afmt,audio_id,-2,-2); |
1039 if(!ad) | 1039 if(!ad) |
1040 mp_msg(MSGT_DEMUXER,MSGL_WARN,"Failed to open audio demuxer: %s\n",audio_stream); | 1040 mp_msg(MSGT_DEMUXER,MSGL_WARN,MSGTR_OpeningAudioDemuxerFailed,audio_stream); |
1041 else if(ad->audio->sh && ((sh_audio_t*)ad->audio->sh)->format == 0x55) // MP3 | 1041 else if(ad->audio->sh && ((sh_audio_t*)ad->audio->sh)->format == 0x55) // MP3 |
1042 m_config_set_flag(mconfig,"hr-mp3-seek",1); // Enable high res seeking | 1042 m_config_set_flag(mconfig,"hr-mp3-seek",1); // Enable high res seeking |
1043 } | 1043 } |
1044 if(ss) { | 1044 if(ss) { |
1045 sd = demux_open_stream(ss,sub_demuxer_type ? sub_demuxer_type : sfmt,-2,-2,dvdsub_id); | 1045 sd = demux_open_stream(ss,sub_demuxer_type ? sub_demuxer_type : sfmt,-2,-2,dvdsub_id); |
1046 if(!sd) | 1046 if(!sd) |
1047 mp_msg(MSGT_DEMUXER,MSGL_WARN,"Failed to open subtitles demuxer: %s\n",sub_stream); | 1047 mp_msg(MSGT_DEMUXER,MSGL_WARN,MSGTR_OpeningSubtitlesDemuxerFailed,sub_stream); |
1048 } | 1048 } |
1049 | 1049 |
1050 if(ad && sd) | 1050 if(ad && sd) |
1051 return new_demuxers_demuxer(vd,ad,sd); | 1051 return new_demuxers_demuxer(vd,ad,sd); |
1052 else if(ad) | 1052 else if(ad) |
1087 if(!demuxer->seekable){ | 1087 if(!demuxer->seekable){ |
1088 if(demuxer->file_format==DEMUXER_TYPE_AVI) | 1088 if(demuxer->file_format==DEMUXER_TYPE_AVI) |
1089 mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_CantSeekRawAVI); | 1089 mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_CantSeekRawAVI); |
1090 #ifdef USE_TV | 1090 #ifdef USE_TV |
1091 else if (demuxer->file_format==DEMUXER_TYPE_TV) | 1091 else if (demuxer->file_format==DEMUXER_TYPE_TV) |
1092 mp_msg(MSGT_SEEK,MSGL_WARN,"TV input isn't seekable! (probably seeking will be for changing channels ;)\n"); | 1092 mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_TVInputNotSeekable); |
1093 #endif | 1093 #endif |
1094 else | 1094 else |
1095 mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_CantSeekFile); | 1095 mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_CantSeekFile); |
1096 return 0; | 1096 return 0; |
1097 } | 1097 } |
1170 | 1170 |
1171 for(n = 0; info && info[2*n] != NULL; n++) | 1171 for(n = 0; info && info[2*n] != NULL; n++) |
1172 { | 1172 { |
1173 if(!strcasecmp(opt,info[2*n])) | 1173 if(!strcasecmp(opt,info[2*n])) |
1174 { | 1174 { |
1175 mp_msg(MSGT_DEMUX, MSGL_WARN, "Demuxer info %s already present\n!",opt); | 1175 mp_msg(MSGT_DEMUX, MSGL_WARN,MSGTR_DemuxerInfoAlreadyPresent,opt); |
1176 return 0; | 1176 return 0; |
1177 } | 1177 } |
1178 } | 1178 } |
1179 | 1179 |
1180 info = demuxer->info = (char**)realloc(info,(2*(n+2))*sizeof(char*)); | 1180 info = demuxer->info = (char**)realloc(info,(2*(n+2))*sizeof(char*)); |
1191 int n; | 1191 int n; |
1192 | 1192 |
1193 if(!info) | 1193 if(!info) |
1194 return 0; | 1194 return 0; |
1195 | 1195 |
1196 mp_msg(MSGT_DEMUX, MSGL_INFO, "Clip info: \n"); | 1196 mp_msg(MSGT_DEMUX, MSGL_INFO,MSGTR_ClipInfo); |
1197 for(n = 0; info[2*n] != NULL ; n++) | 1197 for(n = 0; info[2*n] != NULL ; n++) |
1198 mp_msg(MSGT_DEMUX, MSGL_INFO, " %s: %s\n",info[2*n],info[2*n+1]); | 1198 mp_msg(MSGT_DEMUX, MSGL_INFO, " %s: %s\n",info[2*n],info[2*n+1]); |
1199 | 1199 |
1200 return 0; | 1200 return 0; |
1201 } | 1201 } |