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 79c9787..60fb80c 100644 (file)
@@ -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;
@@ -87,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 ** );
 
 /***********************************************************************
@@ -99,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 * );
@@ -108,14 +122,25 @@ 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];
@@ -139,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
@@ -152,6 +191,7 @@ enum
     WORK_ENCXVID,
     WORK_ENCX264,
     WORK_DECA52,
+    WORK_DECDCA,
     WORK_DECAVCODEC,
     WORK_DECLPCM,
     WORK_ENCFAAC,