X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=libhb%2Fcommon.h;h=b7c4686721b5522f2e56f1a5953e1d8dc5839bd2;hb=c593146bf3fab6290c71cbbb974e0a756e43f5e0;hp=018055894624e02de071a0e9af6051ea9b9c5820;hpb=27f82628e116613e7e333a52d75b7aebca7e7fb8;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/libhb/common.h b/libhb/common.h index 01805589..b7c46867 100644 --- a/libhb/common.h +++ b/libhb/common.h @@ -18,6 +18,20 @@ #include #include +#if defined( SYS_MINGW ) +# define fseek fseeko64 +# define ftell ftello64 +# undef fseeko +# define fseeko fseeko64 +# undef ftello +# define ftello ftello64 +# define flockfile(...) +# define funlockfile(...) +# define getc_unlocked getc +# undef off_t +# define off_t off64_t +#endif + #ifndef MIN #define MIN( a, b ) ( (a) > (b) ? (b) : (a) ) #endif @@ -27,7 +41,7 @@ #define EVEN( a ) ( (a) + ( (a) & 1 ) ) #define MULTIPLE_16( a ) ( 16 * ( ( (a) + 8 ) / 16 ) ) -#define MULTIPLE_MOD( a, b ) ( b * ( ( (a) + (b / 2) ) / b ) ) +#define MULTIPLE_MOD( a, b ) ((b==1)?a:( b * ( ( (a) + (b / 2) - 1) / b ) )) #define HB_DVD_READ_BUFFER_SIZE 2048 @@ -41,6 +55,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_metadata_s hb_metadata_t; typedef struct hb_state_s hb_state_t; typedef union hb_esconfig_u hb_esconfig_t; typedef struct hb_work_private_s hb_work_private_t; @@ -146,10 +161,18 @@ struct hb_job_s int height; int keep_ratio; int grayscale; - int pixel_ratio; - int pixel_aspect_width; - int pixel_aspect_height; - int modulus; + + struct + { + int mode; + int modulus; + int itu_par; + int par_width; + int par_height; + int dar_width; + int dar_height; + } anamorphic; + int maxWidth; int maxHeight; @@ -187,6 +210,7 @@ struct hb_job_s int crf; char *x264opts; int areBframes; + int color_matrix; /* List of audio settings. */ hb_list_t * list_audio; @@ -221,6 +245,16 @@ struct hb_job_s int subtitle_force; char * native_language; + int frame_to_stop; // declare eof when we hit this frame + int64_t pts_to_stop; // declare eof when we pass this pts in + // the time-linearized input stream + int start_at_preview; // if non-zero, encoding will start + // at the position of preview n + int seek_points; // out of N previews + uint32_t frames_to_skip; // decode but discard this many frames + // initially (for frame accurate positioning + // to non-I frames). + #ifdef __LIBHB__ /* Internal data */ hb_handle_t * h; @@ -329,6 +363,7 @@ struct hb_audio_config_s int bitrate; /* Output bitrate (kbps) */ int mixdown; /* The mixdown format to be used for this audio track (see HB_AMIXDOWN_*) */ double dynamic_range_compression; /* Amount of DRC that gets applied to this track */ + char * name; /* Output track name */ } out; /* Input */ @@ -337,6 +372,8 @@ struct hb_audio_config_s int track; /* Input track number */ PRIVATE uint32_t codec; /* Input audio codec */ PRIVATE uint32_t codec_param; /* per-codec config info */ + PRIVATE uint32_t version; /* Bitsream version */ + PRIVATE uint32_t mode; /* Bitstream mode, codec dependent encoding */ PRIVATE int samplerate; /* Input sample rate (Hz) */ PRIVATE int bitrate; /* Input bitrate (kbps) */ PRIVATE int channel_layout; @@ -358,6 +395,7 @@ struct hb_audio_config_s PRIVATE char description[1024]; PRIVATE char simple[1024]; PRIVATE char iso639_2[4]; + PRIVATE uint8_t type; /* normal, visually impared, directors */ } lang; }; @@ -406,6 +444,7 @@ struct hb_subtitle_s int id; char lang[1024]; char iso639_2[4]; + uint8_t type; /* Closed Caption, Childrens, Directors etc */ int hits; /* How many hits/occurrences of this subtitle */ int forced_hits; /* How many forced hits in this subtitle */ @@ -417,6 +456,20 @@ struct hb_subtitle_s #endif }; +struct hb_metadata_s +{ + char name[255]; + char artist[255]; + char composer[255]; + char release_date[255]; + char comment[1024]; + char album[255]; + char genre[255]; + enum arttype {UNKNOWN, BMP, GIF87A, GIF89A, JPG, PNG, TIFFL, TIFFB} coverart_type; + uint32_t coverart_size; + uint8_t *coverart; +}; + struct hb_title_s { char dvd[1024]; @@ -447,12 +500,11 @@ struct hb_title_s int rate; int rate_base; int crop[4]; - enum { HB_MPEG2_DEMUXER = 0, HB_NULL_DEMUXER } demuxer; + enum { HB_MPEG2_PS_DEMUXER = 0, HB_MPEG2_TS_DEMUXER, HB_NULL_DEMUXER } demuxer; int detected_interlacing; int video_id; /* demuxer stream id for video */ int video_codec; /* worker object id of video codec */ int video_codec_param; /* codec specific config */ - const char *video_codec_name; int video_bitrate; const char *container_name; @@ -460,12 +512,18 @@ struct hb_title_s uint32_t palette[16]; + hb_metadata_t *metadata; + hb_list_t * list_chapter; hb_list_t * list_audio; hb_list_t * list_subtitle; /* Job template for this title */ hb_job_t * job; + + uint32_t flags; + // set if video stream doesn't have IDR frames +#define HBTF_NO_IDR (1 << 0) }; @@ -529,6 +587,8 @@ typedef struct hb_work_info_s int rate; int rate_base; int flags; + int version; + int mode; union { struct { // info only valid for video decoders int width;