mirror of https://github.com/mpv-player/mpv
dvd sub parser move dto mplayer.c
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@555 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
5cfb67c65e
commit
357832494c
10
demux_mpg.c
10
demux_mpg.c
|
@ -3,9 +3,9 @@
|
||||||
//#define MAX_PS_PACKETSIZE 2048
|
//#define MAX_PS_PACKETSIZE 2048
|
||||||
#define MAX_PS_PACKETSIZE (224*1024)
|
#define MAX_PS_PACKETSIZE (224*1024)
|
||||||
|
|
||||||
static void parse_dvdsub(unsigned char *buf,int len){
|
//static void parse_dvdsub(unsigned char *buf,int len){
|
||||||
printf("\rDVDsub packet: %d \n",len);
|
// printf("\rDVDsub packet: %d \n",len);
|
||||||
}
|
//}
|
||||||
|
|
||||||
static int mpeg_pts_error=0;
|
static int mpeg_pts_error=0;
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ static int demux_mpg_read_packet(demuxer_t *demux,int id){
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
ds_read_packet(ds,demux->stream,len,pts/90000.0f,0);
|
ds_read_packet(ds,demux->stream,len,pts/90000.0f,0);
|
||||||
if(ds==demux->sub) parse_dvdsub(ds->last->buffer,ds->last->len);
|
// if(ds==demux->sub) parse_dvdsub(ds->last->buffer,ds->last->len);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if(verbose>=2) printf("DEMUX_MPG: Skipping %d data bytes from packet %04X\n",len,id);
|
if(verbose>=2) printf("DEMUX_MPG: Skipping %d data bytes from packet %04X\n",len,id);
|
||||||
|
@ -289,14 +289,12 @@ do{
|
||||||
} // else
|
} // else
|
||||||
if(demux->synced==2){
|
if(demux->synced==2){
|
||||||
ret=demux_mpg_read_packet(demux,head);
|
ret=demux_mpg_read_packet(demux,head);
|
||||||
/*
|
|
||||||
if(!ret)
|
if(!ret)
|
||||||
if(--max_packs==0){
|
if(--max_packs==0){
|
||||||
demux->stream->eof=1;
|
demux->stream->eof=1;
|
||||||
printf("demux: file doesn't contain the selected audio or video stream\n");
|
printf("demux: file doesn't contain the selected audio or video stream\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
} else {
|
} else {
|
||||||
if(head>=0x100 && head<0x1B0){
|
if(head>=0x100 && head<0x1B0){
|
||||||
if(head==0x100)
|
if(head==0x100)
|
||||||
|
|
16
demuxer.c
16
demuxer.c
|
@ -289,3 +289,19 @@ int ds_get_packet(demux_stream_t *ds,char **start){
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ds_get_packet_sub(demux_stream_t *ds,char **start){
|
||||||
|
while(1){
|
||||||
|
int len;
|
||||||
|
if(ds->buffer_pos>=ds->buffer_size){
|
||||||
|
*start = NULL;
|
||||||
|
if(!ds->packs) return -1; // no sub
|
||||||
|
if(!ds_fill_buffer(ds)) return -1; // EOF
|
||||||
|
}
|
||||||
|
len=ds->buffer_size-ds->buffer_pos;
|
||||||
|
*start = &ds->buffer[ds->buffer_pos];
|
||||||
|
ds->buffer_pos+=len;
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
11
mplayer.c
11
mplayer.c
|
@ -289,6 +289,7 @@ sh_video_t* new_sh_video(int id){
|
||||||
demuxer_t *demuxer=NULL;
|
demuxer_t *demuxer=NULL;
|
||||||
demux_stream_t *d_audio=NULL;
|
demux_stream_t *d_audio=NULL;
|
||||||
demux_stream_t *d_video=NULL;
|
demux_stream_t *d_video=NULL;
|
||||||
|
demux_stream_t *d_dvdsub=NULL;
|
||||||
|
|
||||||
sh_audio_t *sh_audio=NULL;//&sh_audio_i;
|
sh_audio_t *sh_audio=NULL;//&sh_audio_i;
|
||||||
sh_video_t *sh_video=NULL;//&sh_video_i;
|
sh_video_t *sh_video=NULL;//&sh_video_i;
|
||||||
|
@ -708,6 +709,7 @@ if(file_format==DEMUXER_TYPE_UNKNOWN){
|
||||||
//====== File format recognized, set up these for compatibility: =========
|
//====== File format recognized, set up these for compatibility: =========
|
||||||
d_audio=demuxer->audio;
|
d_audio=demuxer->audio;
|
||||||
d_video=demuxer->video;
|
d_video=demuxer->video;
|
||||||
|
d_dvdsub=demuxer->sub;
|
||||||
//d_audio->sh=sh_audio;
|
//d_audio->sh=sh_audio;
|
||||||
//d_video->sh=sh_video;
|
//d_video->sh=sh_video;
|
||||||
//sh_audio=d_audio->sh;sh_audio->ds=d_audio;
|
//sh_audio=d_audio->sh;sh_audio->ds=d_audio;
|
||||||
|
@ -2039,6 +2041,15 @@ switch(file_format){
|
||||||
find_sub(sub_uses_time?(100*(v_pts+sub_delay)):((v_pts+sub_delay)*sub_fps)); // FIXME! frame counter...
|
find_sub(sub_uses_time?(100*(v_pts+sub_delay)):((v_pts+sub_delay)*sub_fps)); // FIXME! frame counter...
|
||||||
current_module=NULL;
|
current_module=NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DVD sub:
|
||||||
|
{ unsigned char* buf=NULL;
|
||||||
|
int len=ds_get_packet_sub(d_dvdsub,&buf);
|
||||||
|
if(len>0){
|
||||||
|
printf("\rDVD sub: %d \n",len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // while(!eof)
|
} // while(!eof)
|
||||||
|
|
Loading…
Reference in New Issue