OSDN Git Service
(root)
/
handbrake-jp
/
handbrake-jp-git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
WinGui:
[handbrake-jp/handbrake-jp-git.git]
/
libhb
/
decsrtsub.c
diff --git
a/libhb/decsrtsub.c
b/libhb/decsrtsub.c
index
7f1602b
..
daf210d
100644
(file)
--- a/
libhb/decsrtsub.c
+++ b/
libhb/decsrtsub.c
@@
-42,6
+42,7
@@
struct hb_work_private_s
char utf8_buf[2048];
int utf8_pos;
int utf8_end;
char utf8_buf[2048];
int utf8_pos;
int utf8_end;
+ int utf8_bom_skipped;
unsigned long current_time;
unsigned long number_of_entries;
unsigned long last_entry_number;
unsigned long current_time;
unsigned long number_of_entries;
unsigned long last_entry_number;
@@
-117,6
+118,16
@@
static int utf8_fill( hb_work_private_t * pv )
pv->utf8_end = q - pv->utf8_buf;
pv->pos = p - pv->buf;
pv->utf8_end = q - pv->utf8_buf;
pv->pos = p - pv->buf;
+ if ( !pv->utf8_bom_skipped )
+ {
+ uint8_t *buf = (uint8_t*)pv->utf8_buf;
+ if (buf[0] == 0xef && buf[1] == 0xbb && buf[2] == 0xbf)
+ {
+ pv->utf8_pos = 3;
+ }
+ pv->utf8_bom_skipped = 1;
+ }
+
if( ( retval == -1 ) && ( errno == EINVAL ) )
{
/* Incomplete multibyte sequence, read more data */
if( ( retval == -1 ) && ( errno == EINVAL ) )
{
/* Incomplete multibyte sequence, read more data */
@@
-461,8
+472,6
@@
static int decsrtInit( hb_work_object_t * w, hb_job_t * job )
buffer = hb_buffer_init( 0 );
hb_fifo_push( w->fifo_in, buffer);
buffer = hb_buffer_init( 0 );
hb_fifo_push( w->fifo_in, buffer);
- pv->file = fopen( w->subtitle->config.src_filename, "r" );
-
pv->current_state = k_state_potential_new_entry;
pv->number_of_entries = 0;
pv->last_entry_number = 0;
pv->current_state = k_state_potential_new_entry;
pv->number_of_entries = 0;
pv->last_entry_number = 0;