OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / libhb / hb.h
1 #ifndef HB_HB_H
2 #define HB_HB_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #include "project.h"
9 #include "common.h"
10
11 /* hb_init()
12    Initializes a libhb session (launches his own thread, detects CPUs,
13    etc) */
14 #define HB_DEBUG_NONE 0
15 #define HB_DEBUG_ALL  1
16 void          hb_register( hb_work_object_t * );
17 hb_handle_t * hb_init( int verbose, int update_check );
18 hb_handle_t * hb_init_dl ( int verbose, int update_check ); // hb_init for use with dylib
19
20 /* hb_get_version() */
21 char        * hb_get_version( hb_handle_t * );
22 int           hb_get_build( hb_handle_t * );
23
24 /* hb_check_update()
25    Checks for an update on the website. If there is, returns the build
26    number and points 'version' to a version description. Returns a
27    negative value otherwise. */
28 int           hb_check_update( hb_handle_t * h, char ** version );
29
30 /* hb_set_cpu_count()
31    Force libhb to act as if you had X CPU(s).
32    Default is to use the detected count (see also hb_get_cpu_count() in
33    ports.h) */
34 void          hb_set_cpu_count( hb_handle_t *, int );
35
36 char *        hb_dvd_name( char * path );
37 void          hb_dvd_set_dvdnav( int enable );
38
39 /* hb_scan()
40    Scan the specified path. Can be a DVD device, a VIDEO_TS folder or
41    a VOB file. If title_index is 0, scan all titles. */
42 void          hb_scan( hb_handle_t *, const char * path,
43                        int title_index, int preview_count,
44                        int store_previews );
45 void          hb_scan_stop( hb_handle_t * );
46
47 /* hb_get_titles()
48    Returns the list of valid titles detected by the latest scan. */
49 hb_list_t   * hb_get_titles( hb_handle_t * );
50
51 /* hb_detect_comb()
52    Analyze a frame for interlacing artifacts, returns true if they're found.
53    Taken from Thomas Oestreich's 32detect filter in the Transcode project.  */
54 int hb_detect_comb( hb_buffer_t * buf, int width, int height, int color_equal, int color_diff, int threshold, int prog_equal, int prog_diff, int prog_threshold );
55
56 void          hb_get_preview( hb_handle_t *, hb_title_t *, int,
57                               uint8_t * );
58 void          hb_set_size( hb_job_t *, double ratio, int pixels );
59 void          hb_set_anamorphic_size( hb_job_t *,
60                 int *output_width, int *output_height,
61                 int *output_par_width, int *output_par_height);
62
63 /* Handling jobs */
64 int           hb_count( hb_handle_t * );
65 hb_job_t *    hb_job( hb_handle_t *, int );
66 void          hb_add( hb_handle_t *, hb_job_t * );
67 void          hb_rem( hb_handle_t *, hb_job_t * );
68
69 void          hb_start( hb_handle_t * );
70 void          hb_pause( hb_handle_t * );
71 void          hb_resume( hb_handle_t * );
72 void          hb_stop( hb_handle_t * );
73
74 /* Persistent data between jobs. */
75 typedef struct hb_interjob_s
76 {
77     int last_job;          /* job->sequence_id & 0xFFFFFF */
78     int frame_count;       /* number of frames counted by sync */
79     uint64_t total_time;   /* real length in 90khz (i.e. / 90000 */
80     int render_dropped;    /* frames droped by telecine */
81     int vrate;             /* initial assigned vrate */
82     int vrate_base;        /* initial assigned vrate_base */
83
84     hb_subtitle_t *select_subtitle; /* foreign language scan subtitle */
85 } hb_interjob_t;
86
87 hb_interjob_t * hb_interjob_get( hb_handle_t * ); 
88
89 /* hb_get_state()
90    Should be regularly called by the UI (like 5 or 10 times a second).
91    Look at test/test.c to see how to use it. */
92 void hb_get_state( hb_handle_t *, hb_state_t * );
93 void hb_get_state2( hb_handle_t *, hb_state_t * );
94 /* hb_get_scancount() is called by the MacGui in UpdateUI to
95    check for a new scan during HB_STATE_WORKING phase  */
96 int hb_get_scancount( hb_handle_t * );
97
98 /* hb_close()
99    Aborts all current jobs if any, frees memory. */
100 void          hb_close( hb_handle_t ** );
101
102 #ifdef __cplusplus
103 }
104 #endif
105
106 #endif