changeset 8618:a879b231b7e3

This patch adds a call to subcp_recode1(), so this subtitles too are processed through iconv(). Kresimir Kukulj madmax@iskon.hr
author arpi
date Sat, 28 Dec 2002 15:19:41 +0000
parents 6ffbe7608013
children 544bb92b62e5
files libmpdemux/demux_ogg.c subreader.c subreader.h
diffstat 3 files changed, 35 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- 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){
--- 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);