X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=libhb%2Fcommon.h;h=b6c5e5714ccb366be63606b64296fdb7c4779263;hb=033e32de9c380f54c7d1362a3979da205ebc3a29;hp=dfa1dcabdf1925f1722afb9262e2847f8295d5a6;hpb=64db42bb1203f530ea328a80d105054ea40c1e84;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/libhb/common.h b/libhb/common.h index dfa1dcab..b6c5e571 100644 --- a/libhb/common.h +++ b/libhb/common.h @@ -18,6 +18,12 @@ #include #include +#if defined( __GNUC__ ) && !(defined( _WIN32 ) || defined( __MINGW32__ )) +# define HB_WPRINTF(s,v) __attribute__((format(printf,s,v))) +#else +# define HB_WPRINTF(s,v) +#endif + #if defined( SYS_MINGW ) # define fseek fseeko64 # define ftell ftello64 @@ -55,6 +61,7 @@ typedef struct hb_chapter_s hb_chapter_t; typedef struct hb_audio_s hb_audio_t; typedef struct hb_audio_config_s hb_audio_config_t; typedef struct hb_subtitle_s hb_subtitle_t; +typedef struct hb_subtitle_config_s hb_subtitle_config_t; typedef struct hb_metadata_s hb_metadata_t; typedef struct hb_state_s hb_state_t; typedef union hb_esconfig_u hb_esconfig_t; @@ -94,6 +101,11 @@ void hb_audio_config_init(hb_audio_config_t * audiocfg); int hb_audio_add(const hb_job_t * job, const hb_audio_config_t * audiocfg); hb_audio_config_t * hb_list_audio_config_item(hb_list_t * list, int i); +int hb_subtitle_add(const hb_job_t * job, const hb_subtitle_config_t * subtitlecfg, int track); +int hb_srt_add(const hb_job_t * job, const hb_subtitle_config_t * subtitlecfg, + const char *lang); + + struct hb_rate_s { char * string; @@ -108,6 +120,16 @@ struct hb_mixdown_s int amixdown; }; +struct hb_subtitle_config_s +{ + enum subdest { RENDERSUB, PASSTHRUSUB } dest; + int force; + int default_track; + char src_filename[128]; + char src_codeset[40]; + int64_t offset; +}; + #define HB_VIDEO_RATE_BASE 27000000 extern hb_rate_t hb_video_rates[]; @@ -171,6 +193,7 @@ struct hb_job_s int par_height; int dar_width; int dar_height; + int keep_display_aspect; } anamorphic; int maxWidth; @@ -186,14 +209,12 @@ struct hb_job_s cfr: 0 (vfr), 1 (cfr), 2 (pfr) [see render.c] pass: 0, 1 or 2 (or -1 for scan) h264_level: vestigial boolean to decide if we're encoding for iPod - crf: boolean for whether to use constant rate factor with x264 x264opts: string of extra x264 options areBframes: boolean to note if b-frames are included in x264opts */ #define HB_VCODEC_MASK 0x0000FF #define HB_VCODEC_FFMPEG 0x000001 -#define HB_VCODEC_XVID 0x000002 -#define HB_VCODEC_X264 0x000004 -#define HB_VCODEC_THEORA 0x000008 +#define HB_VCODEC_X264 0x000002 +#define HB_VCODEC_THEORA 0x000004 int vcodec; float vquality; @@ -205,7 +226,6 @@ struct hb_job_s int pass; int h264_13; int h264_level; - int crf; char *x264opts; int areBframes; int color_matrix; @@ -236,10 +256,8 @@ struct hb_job_s int mp4_optimize; int ipod_atom; - int indepth_scan; - hb_subtitle_t ** select_subtitle; - int subtitle_force; - char * native_language; + int indepth_scan; + hb_subtitle_config_t select_subtitle_config; int angle; // dvd angle to encode int frame_to_stop; // declare eof when we hit this frame @@ -259,6 +277,9 @@ struct hb_job_s volatile int * die; volatile int done; + uint64_t st_pause_date; + uint64_t st_paused; + hb_fifo_t * fifo_mpeg2; /* MPEG-2 video ES */ hb_fifo_t * fifo_raw; /* Raw pictures */ hb_fifo_t * fifo_sync; /* Raw pictures, framerate corrected */ @@ -287,6 +308,7 @@ struct hb_job_s #define HB_ACODEC_LPCM 0x002000 #define HB_ACODEC_DCA 0x004000 #define HB_ACODEC_FFMPEG 0x008000 +#define HB_ACODEC_CA_AAC 0x010000 /* Audio Mixdown */ /* define some masks, used to extract the various information from the HB_AMIXDOWN_XXXX values */ @@ -440,11 +462,13 @@ struct hb_chapter_s struct hb_subtitle_s { - int track; int id; + int track; + + hb_subtitle_config_t config; + enum subtype { PICTURESUB, TEXTSUB } format; - enum subsource { VOBSUB, SRTSUB, CCSUB } source; - enum subdest { RENDERSUB, PASSTHRUSUB } dest; + enum subsource { VOBSUB, SRTSUB, CC608SUB, CC708SUB } source; char lang[1024]; char iso639_2[4]; uint8_t type; /* Closed Caption, Childrens, Directors etc */ @@ -458,6 +482,7 @@ struct hb_subtitle_s hb_fifo_t * fifo_raw; /* Decoded SPU */ hb_fifo_t * fifo_sync;/* Synced */ hb_fifo_t * fifo_out; /* Correct Timestamps, ready to be muxed */ + hb_mux_data_t * mux_data; #endif }; @@ -638,6 +663,9 @@ struct hb_work_object_s /* Pointer hb_audio_t so we have access to the info in the audio worker threads. */ hb_audio_t * audio; + /* Pointer hb_subtitle_t so we have access to the info in the subtitle worker threads. */ + hb_subtitle_t * subtitle; + hb_work_private_t * private_data; hb_thread_t * thread; @@ -653,11 +681,12 @@ struct hb_work_object_s extern hb_work_object_t hb_sync; extern hb_work_object_t hb_decmpeg2; -extern hb_work_object_t hb_decsub; -extern hb_work_object_t hb_encsub; +extern hb_work_object_t hb_decvobsub; +extern hb_work_object_t hb_encvobsub; +extern hb_work_object_t hb_deccc608; +extern hb_work_object_t hb_decsrtsub; extern hb_work_object_t hb_render; extern hb_work_object_t hb_encavcodec; -extern hb_work_object_t hb_encxvid; extern hb_work_object_t hb_encx264; extern hb_work_object_t hb_enctheora; extern hb_work_object_t hb_deca52; @@ -670,6 +699,7 @@ extern hb_work_object_t hb_declpcm; extern hb_work_object_t hb_encfaac; extern hb_work_object_t hb_enclame; extern hb_work_object_t hb_encvorbis; +extern hb_work_object_t hb_encca_aac; #define FILTER_OK 0 #define FILTER_DELAY 1