OSDN Git Service

Implement transport and program stream support. With these changes it's now possible...
[handbrake-jp/handbrake-jp-git.git] / libhb / internal.h
index 7a6caad..60fb80c 100644 (file)
@@ -12,7 +12,7 @@ void hb_log( char * log, ... );
 int  hb_list_bytes( hb_list_t * );
 void hb_list_seebytes( hb_list_t * l, uint8_t * dst, int size );
 void hb_list_getbytes( hb_list_t * l, uint8_t * dst, int size,
-                       uint64_t * pts, int * pos );
+                       uint64_t * pts, uint64_t * pos );
 void hb_list_empty( hb_list_t ** );
 
 hb_title_t * hb_title_init( char * dvd, int index );
@@ -37,7 +37,20 @@ struct hb_buffer_s
     int           id;
     int64_t       start;
     int64_t       stop;
-    int           key;
+    int           new_chap;
+
+#define HB_FRAME_IDR    0x01
+#define HB_FRAME_I      0x02
+#define HB_FRAME_AUDIO  0x04
+#define HB_FRAME_P      0x10
+#define HB_FRAME_B      0x20
+#define HB_FRAME_BREF   0x40
+#define HB_FRAME_KEY    0x0F
+#define HB_FRAME_REF    0xF0
+    uint8_t       frametype;
+
+    /* Holds the output PTS from x264, for use by b-frame offsets in muxmp4.c */
+    int64_t     renderOffset;
 
     int           x;
     int           y;
@@ -57,6 +70,7 @@ void          hb_buffer_close( hb_buffer_t ** );
 hb_fifo_t   * hb_fifo_init();
 int           hb_fifo_size( hb_fifo_t * );
 int           hb_fifo_is_full( hb_fifo_t * );
+float         hb_fifo_percent_full( hb_fifo_t * f );
 hb_buffer_t * hb_fifo_get( hb_fifo_t * );
 hb_buffer_t * hb_fifo_see( hb_fifo_t * );
 hb_buffer_t * hb_fifo_see2( hb_fifo_t * );
@@ -86,7 +100,7 @@ int              hb_libmpeg2_decode( hb_libmpeg2_t *,
                                       hb_buffer_t * es_buf,
                                       hb_list_t * raw_list );
 void             hb_libmpeg2_info( hb_libmpeg2_t * m, int * width,
-                                    int * height, int * rate );
+                                    int * height, int * rate, int * aspect_ratio );
 void             hb_libmpeg2_close( hb_libmpeg2_t ** );
 
 /***********************************************************************
@@ -98,6 +112,7 @@ int hb_demux_ps( hb_buffer_t * ps_buf, hb_list_t * es_list );
  * dvd.c
  **********************************************************************/
 typedef struct hb_dvd_s hb_dvd_t;
+typedef struct hb_stream_s hb_stream_t;
 
 hb_dvd_t *   hb_dvd_init( char * path );
 int          hb_dvd_title_count( hb_dvd_t * );
@@ -107,27 +122,38 @@ void         hb_dvd_stop( hb_dvd_t * );
 int          hb_dvd_seek( hb_dvd_t *, float );
 int          hb_dvd_read( hb_dvd_t *, hb_buffer_t * );
 int          hb_dvd_chapter( hb_dvd_t * );
+int          hb_dvd_is_break( hb_dvd_t * d );
 void         hb_dvd_close( hb_dvd_t ** );
 
+int         hb_stream_is_stream_type( char * path);
+hb_stream_t * hb_stream_open( char * path );
+void            hb_stream_close( hb_stream_t ** );
+hb_title_t * hb_stream_title_scan( hb_stream_t *);
+int          hb_stream_read( hb_stream_t *, hb_buffer_t *);
+int          hb_stream_seek( hb_stream_t *, float );
+void            hb_stream_update_audio( hb_stream_t *, hb_audio_t *);
+void            hb_stream_set_selected_audio_pid_index(hb_stream_t *, int);
+
 /***********************************************************************
  * Work objects
  **********************************************************************/
 #define HB_CONFIG_MAX_SIZE 8192
 union hb_esconfig_u
 {
+
     struct
     {
         uint8_t bytes[HB_CONFIG_MAX_SIZE];
         int     length;
     } mpeg4;
 
-    struct
-    {
-        uint8_t sps[HB_CONFIG_MAX_SIZE];
-        int     sps_length;
-        uint8_t pps[HB_CONFIG_MAX_SIZE];
-        int     pps_length;
-    } h264;
+       struct
+       {
+           uint8_t  sps[HB_CONFIG_MAX_SIZE];
+           int       sps_length;
+           uint8_t  pps[HB_CONFIG_MAX_SIZE];
+           int       pps_length;
+       } h264;
 
     struct
     {
@@ -138,7 +164,21 @@ union hb_esconfig_u
     struct
     {
         uint8_t headers[3][HB_CONFIG_MAX_SIZE];
+        char *language;
     } vorbis;
+    
+    struct
+    {
+       /* ac3flags stores the flags from the AC3 source, as found in scan.c */
+       int  ac3flags;
+    } a52;
+
+    struct
+    {
+       /* dcaflags stores the flags from the DCA source, as found in scan.c */
+       int  dcaflags;
+    } dca;
+
 };
 
 enum
@@ -151,6 +191,7 @@ enum
     WORK_ENCXVID,
     WORK_ENCX264,
     WORK_DECA52,
+    WORK_DECDCA,
     WORK_DECAVCODEC,
     WORK_DECLPCM,
     WORK_ENCFAAC,