OSDN Git Service

LinGui: fix a problem with running mingw cross compiled ghb under wine
[handbrake-jp/handbrake-jp-git.git] / libhb / reader.c
index c865ea8..88617f9 100644 (file)
@@ -343,7 +343,7 @@ static void ReaderFunc( void * _r )
                     // force a new scr offset computation
                     r->scr_changes = r->demux.scr_changes - 1;
                     r->saw_video = 1;
-                    hb_log( "reader: first SCR %lld", r->demux.last_scr );
+                    hb_log( "reader: first SCR %"PRId64, r->demux.last_scr );
                 }
                 else
                 {
@@ -408,6 +408,8 @@ static void ReaderFunc( void * _r )
                             // packet of a stream we've never seen before. We
                             // have no idea what the timing should be so toss
                             // this buffer & wait for a stream we've already seen.
+                            // add stream to list of streams we have seen
+                            id_to_st( r, buf );
                             hb_buffer_close( &buf );
                             continue;
                         }
@@ -501,8 +503,8 @@ static hb_fifo_t ** GetFifoForId( hb_job_t * job, int id )
     hb_title_t    * title = job->title;
     hb_audio_t    * audio;
     hb_subtitle_t * subtitle;
-    int             i, n;
-    static hb_fifo_t * fifos[8];
+    int             i, n, count;
+    static hb_fifo_t * fifos[100];
 
     memset(fifos, 0, sizeof(fifos));
 
@@ -523,23 +525,28 @@ static hb_fifo_t ** GetFifoForId( hb_job_t * job, int id )
         }
     }
 
-    for( i=0; i < hb_list_count( title->list_subtitle ); i++ ) {
+    n = 0;
+    count = hb_list_count( title->list_subtitle );
+    count = count > 99 ? 99 : count;
+    for( i=0; i < count; i++ ) {
         subtitle =  hb_list_item( title->list_subtitle, i );
         if (id == subtitle->id) {
             subtitle->hits++;
-            if( !job->indepth_scan || subtitle->force )
+            if( !job->indepth_scan || job->select_subtitle_config.force )
             {
                 /*
                  * Pass the subtitles to be processed if we are not scanning, or if
                  * we are scanning and looking for forced subs, then pass them up
                  * to decode whether the sub is a forced one.
                  */
-                fifos[0] = subtitle->fifo_in;
-                return fifos;
+                fifos[n++] = subtitle->fifo_in;
             }
-            break;
         }
     }
+    if ( n != 0 )
+    {
+        return fifos;
+    }
     
     if( !job->indepth_scan )
     {