OSDN Git Service

MacGui: Bump x264 to r1109
[handbrake-jp/handbrake-jp-git.git] / libhb / internal.h
index 3ae1dad..fa3fe86 100644 (file)
@@ -111,12 +111,29 @@ static inline hb_buffer_t * hb_video_buffer_init( int width, int height )
                            ( ( height+1 ) >> 1 ) * 2 );
 }
 
+// this routine 'moves' data from src to dst by interchanging 'data',
+// 'size' & 'alloc' between them and copying the rest of the fields
+// from src to dst.
+static inline void hb_buffer_swap_copy( hb_buffer_t *src, hb_buffer_t *dst )
+{
+    uint8_t *data  = dst->data;
+    int      size  = dst->size;
+    int      alloc = dst->alloc;
+
+    *dst = *src;
+
+    src->data  = data;
+    src->size  = size;
+    src->alloc = alloc;
+}
+
 /***********************************************************************
  * Threads: update.c, scan.c, work.c, reader.c, muxcommon.c
  **********************************************************************/
 hb_thread_t * hb_update_init( int * build, char * version );
 hb_thread_t * hb_scan_init( hb_handle_t *, const char * path,
-                            int title_index, hb_list_t * list_title );
+                            int title_index, hb_list_t * list_title,
+                            int preview_count, int store_previews );
 hb_thread_t * hb_work_init( hb_list_t * jobs, int cpu_count,
                             volatile int * die, int * error, hb_job_t ** job );
 hb_thread_t  * hb_reader_init( hb_job_t * );
@@ -130,14 +147,24 @@ hb_work_object_t * hb_codec_encoder( int );
  **********************************************************************/
 typedef struct {
     int64_t last_scr;       /* unadjusted SCR from most recent pack */
+    int64_t last_pts;       /* last pts we saw */
     int     scr_changes;    /* number of SCR discontinuities */
-    int     flaky_clock;    /* try to compensate for PCR drops */
     int     dts_drops;      /* number of drops because DTS too far from SCR */
 } hb_psdemux_t;
 
+typedef int (*hb_muxer_t)(hb_buffer_t *, hb_list_t *, hb_psdemux_t*);
+
 int hb_demux_ps( hb_buffer_t * ps_buf, hb_list_t * es_list, hb_psdemux_t * );
+int hb_demux_ss( hb_buffer_t * ps_buf, hb_list_t * es_list, hb_psdemux_t * );
 int hb_demux_null( hb_buffer_t * ps_buf, hb_list_t * es_list, hb_psdemux_t * );
 
+extern const hb_muxer_t hb_demux[];
+
+/***********************************************************************
+ * decmetadata.c
+ **********************************************************************/
+extern void decmetadata( hb_title_t *title );
+
 /***********************************************************************
  * dvd.c
  **********************************************************************/
@@ -206,7 +233,11 @@ union hb_esconfig_u
     struct
     {
        /* ac3flags stores the flags from the AC3 source, as found in scan.c */
-       int  ac3flags;
+       int     ac3flags;
+        // next two items are used by the bsinfo routine to accumulate small
+        // frames until we have enough to validate the crc.
+        int     len;        // space currently used in 'buf'
+        uint8_t buf[HB_CONFIG_MAX_SIZE-sizeof(int)];
     } a52;
 
     struct