Mercurial > mplayer.hg
changeset 23431:af3ae78477b3
Revert r23443, it breaks compilation without libass.
author | eugeni |
---|---|
date | Sat, 02 Jun 2007 13:00:38 +0000 |
parents | 251338cf2f58 |
children | c223d8fd4312 |
files | subreader.c |
diffstat | 1 files changed, 30 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/subreader.c Sat Jun 02 12:27:33 2007 +0000 +++ b/subreader.c Sat Jun 02 13:00:38 2007 +0000 @@ -19,7 +19,6 @@ #include "mp_msg.h" #include "subreader.h" #include "stream/stream.h" -#include "libass/ass.h" #ifdef HAVE_ENCA #include <enca.h> @@ -1337,8 +1336,6 @@ sub_data* sub_read_file (char *filename, float fps) { stream_t* fd; - unsigned char* subfile_buf; - size_t subfile_size; int n_max, n_first, i, j, sub_first, sub_orig; subtitle *first, *second, *sub, *return_sub; sub_data *subt_data; @@ -1363,15 +1360,8 @@ struct subreader *srp; if(filename==NULL) return NULL; //qnx segfault - i = 0; - subfile_buf = read_file_recode(filename, sub_cp, &subfile_size); - if (!subfile_buf) return 0; - fd = new_memory_stream(subfile_buf, subfile_size); - if (!fd) { - free(subfile_buf); - return 0; - } + fd=open_stream (filename, NULL, &i); if (!fd) return NULL; sub_format=sub_autodetect (fd, &uses_time); mpsub_multiplier = (uses_time ? 100.0 : 1.0); @@ -1382,14 +1372,30 @@ stream_reset(fd); stream_seek(fd,0); +#ifdef USE_ICONV sub_utf8_prev=sub_utf8; - sub_utf8 = 1; + { + int l,k; + k = -1; + if ((l=strlen(filename))>4){ + char *exts[] = {".utf", ".utf8", ".utf-8" }; + for (k=3;--k>=0;) + if (l >= strlen(exts[k]) && !strcasecmp(filename+(l - strlen(exts[k])), exts[k])){ + sub_utf8 = 1; + break; + } + } + if (k<0) subcp_open(fd); + } +#endif sub_num=0;n_max=32; first=malloc(n_max*sizeof(subtitle)); if(!first){ - sub_utf8 = sub_utf8_prev; - free(subfile_buf); +#ifdef USE_ICONV + subcp_close(); + sub_utf8=sub_utf8_prev; +#endif return NULL; } @@ -1410,13 +1416,18 @@ memset(sub, '\0', sizeof(subtitle)); sub=srp->read(fd,sub); if(!sub) break; // EOF +#ifdef USE_ICONV + if ((sub!=ERR) && (sub_utf8 & 2)) sub=subcp_recode(sub); +#endif #ifdef USE_FRIBIDI if (sub!=ERR) sub=sub_fribidi(sub,sub_utf8); #endif if ( sub == ERR ) { +#ifdef USE_ICONV + subcp_close(); +#endif if ( first ) free(first); - free(subfile_buf); return NULL; } // Apply any post processing that needs recoding first @@ -1465,7 +1476,10 @@ } free_stream(fd); - free(subfile_buf); + +#ifdef USE_ICONV + subcp_close(); +#endif // printf ("SUB: Subtitle format %s time.\n", uses_time?"uses":"doesn't use"); mp_msg(MSGT_SUBREADER,MSGL_INFO,"SUB: Read %i subtitles", sub_num);