This patch adds a call to subcp_recode1(), so this subtitles too are

processed through iconv().
Kresimir Kukulj                      madmax@iskon.hr


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8619 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
arpi 2002-12-28 15:19:41 +00:00
parent 64c7077884
commit e29bcd7e02
3 changed files with 35 additions and 0 deletions

View File

@ -231,6 +231,9 @@ void demux_ogg_add_sub (char* packet) {
mp_msg(MSGT_DEMUX,MSGL_DBG2,"ogg sub lines: %d first: '%s'\n",
ogg_sub.lines, ogg_sub.text[0]);
#ifdef USE_ICONV
subcp_recode1(&ogg_sub);
#endif
vo_sub = &ogg_sub;
vo_osd_changed(OSDTYPE_SUBTITLE);
}
@ -465,6 +468,10 @@ int demux_ogg_open(demuxer_t* demuxer) {
sh_audio_t* sh_a;
sh_video_t* sh_v;
#ifdef USE_ICONV
subcp_open();
#endif
s = demuxer->stream;
ogg_d = (ogg_demuxer_t*)calloc(1,sizeof(ogg_demuxer_t));
@ -1006,6 +1013,10 @@ void demux_close_ogg(demuxer_t* demuxer) {
if(!ogg_d)
return;
#ifdef USE_ICONV
subcp_close();
#endif
if(ogg_d->subs)
free(ogg_d->subs);
if(ogg_d->syncpoints)

View File

@ -964,6 +964,29 @@ subtitle* subcp_recode (subtitle *sub)
return sub;
}
// for demux_ogg.c:
subtitle* subcp_recode1 (subtitle *sub)
{
int l=sub->lines;
size_t ileft, oleft;
char *op, *ip;
while (l){
ip = icbuffer;
op = sub->text[--l];
strcpy(ip, op);
ileft = strlen(ip);
oleft = ICBUFFSIZE - 1;
if (iconv(icdsc, &ip, &ileft,
&op, &oleft) == (size_t)(-1)) {
mp_msg(MSGT_SUBREADER,MSGL_WARN,"SUB: error recoding line.\n");
return sub;
}
*op='\0' ;
}
return sub;
}
#endif
static void adjust_subs_time(subtitle* sub, float subtime, float fps, int block){

View File

@ -38,6 +38,7 @@ typedef struct {
} subtitle;
subtitle* sub_read_file (char *filename, float pts);
subtitle* subcp_recode1 (subtitle *sub);
char * sub_filename(char *path, char * fname);
void list_sub_file(subtitle* subs);
void dump_srt(subtitle* subs, float fps);