# HG changeset patch # User arpi # Date 1041088781 0 # Node ID a879b231b7e3b13e7187b8666bade7a328b05cf5 # Parent 6ffbe760801305ac5bf74c53451defef0a8b0e27 This patch adds a call to subcp_recode1(), so this subtitles too are processed through iconv(). Kresimir Kukulj madmax@iskon.hr diff -r 6ffbe7608013 -r a879b231b7e3 libmpdemux/demux_ogg.c --- a/libmpdemux/demux_ogg.c Sat Dec 28 15:03:23 2002 +0000 +++ b/libmpdemux/demux_ogg.c Sat Dec 28 15:19:41 2002 +0000 @@ -231,6 +231,9 @@ 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 @@ 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 @@ if(!ogg_d) return; +#ifdef USE_ICONV + subcp_close(); +#endif + if(ogg_d->subs) free(ogg_d->subs); if(ogg_d->syncpoints) diff -r 6ffbe7608013 -r a879b231b7e3 subreader.c --- a/subreader.c Sat Dec 28 15:03:23 2002 +0000 +++ b/subreader.c Sat Dec 28 15:19:41 2002 +0000 @@ -964,6 +964,29 @@ 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){ diff -r 6ffbe7608013 -r a879b231b7e3 subreader.h --- a/subreader.h Sat Dec 28 15:03:23 2002 +0000 +++ b/subreader.h Sat Dec 28 15:19:41 2002 +0000 @@ -38,6 +38,7 @@ } 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);