OSDN Git Service

Change CC608 decoder to be its own thread
[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_real( 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 #define hb_init(v,u) \
21 hb_init_real( v, u ); \
22 hb_register( &hb_sync ); \
23 hb_register( &hb_decmpeg2 ); \
24 hb_register( &hb_decvobsub ); \
25 hb_register( &hb_encvobsub ); \
26 hb_register( &hb_deccc608 ); \
27 hb_register( &hb_render ); \
28 hb_register( &hb_encavcodec ); \
29 hb_register( &hb_encxvid ); \
30 hb_register( &hb_encx264 ); \
31 hb_register( &hb_enctheora ); \
32 hb_register( &hb_deca52 ); \
33 hb_register( &hb_decdca ); \
34 hb_register( &hb_decavcodec ); \
35 hb_register( &hb_decavcodecv ); \
36 hb_register( &hb_decavcodecvi ); \
37 hb_register( &hb_decavcodecai ); \
38 hb_register( &hb_declpcm ); \
39 hb_register( &hb_encfaac ); \
40 hb_register( &hb_enclame ); \
41 hb_register( &hb_encvorbis ); \
42
43 #define hb_init_express(v,u) \
44 hb_init_real( v, u ); \
45 hb_register( &hb_sync ); \
46 hb_register( &hb_decmpeg2 ); \
47 hb_register( &hb_decvobsub ); \
48 hb_register( &hb_encvobsub ); \
49 hb_register( &hb_deccc608 ); \
50 hb_register( &hb_render ); \
51 hb_register( &hb_encavcodec ); \
52 hb_register( &hb_encx264 ); \
53 hb_register( &hb_deca52 ); \
54 hb_register( &hb_decdca ); \
55 hb_register( &hb_decavcodec ); \
56 hb_register( &hb_decavcodecv ); \
57 hb_register( &hb_decavcodecvi ); \
58 hb_register( &hb_decavcodecai ); \
59 hb_register( &hb_declpcm ); \
60 hb_register( &hb_encfaac ); \
61
62 /* hb_get_version() */
63 char        * hb_get_version( hb_handle_t * );
64 int           hb_get_build( hb_handle_t * );
65
66 /* hb_check_update()
67    Checks for an update on the website. If there is, returns the build
68    number and points 'version' to a version description. Returns a
69    negative value otherwise. */
70 int           hb_check_update( hb_handle_t * h, char ** version );
71
72 /* hb_set_cpu_count()
73    Force libhb to act as if you had X CPU(s).
74    Default is to use the detected count (see also hb_get_cpu_count() in
75    ports.h) */
76 void          hb_set_cpu_count( hb_handle_t *, int );
77
78 char *        hb_dvd_name( char * path );
79 void          hb_dvd_set_dvdnav( int enable );
80
81 /* hb_scan()
82    Scan the specified path. Can be a DVD device, a VIDEO_TS folder or
83    a VOB file. If title_index is 0, scan all titles. */
84 void          hb_scan( hb_handle_t *, const char * path,
85                        int title_index, int preview_count,
86                        int store_previews );
87
88 /* hb_get_titles()
89    Returns the list of valid titles detected by the latest scan. */
90 hb_list_t   * hb_get_titles( hb_handle_t * );
91
92 /* hb_detect_comb()
93    Analyze a frame for interlacing artifacts, returns true if they're found.
94    Taken from Thomas Oestreich's 32detect filter in the Transcode project.  */
95 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 );
96
97 void          hb_get_preview( hb_handle_t *, hb_title_t *, int,
98                               uint8_t * );
99 void          hb_set_size( hb_job_t *, double ratio, int pixels );
100 void          hb_set_anamorphic_size( hb_job_t *,
101                 int *output_width, int *output_height,
102                 int *output_par_width, int *output_par_height);
103
104 /* Handling jobs */
105 int           hb_count( hb_handle_t * );
106 hb_job_t *    hb_job( hb_handle_t *, int );
107 void          hb_add( hb_handle_t *, hb_job_t * );
108 void          hb_rem( hb_handle_t *, hb_job_t * );
109
110 void          hb_start( hb_handle_t * );
111 void          hb_pause( hb_handle_t * );
112 void          hb_resume( hb_handle_t * );
113 void          hb_stop( hb_handle_t * );
114
115 /* hb_get_state()
116    Should be regularly called by the UI (like 5 or 10 times a second).
117    Look at test/test.c to see how to use it. */
118 void hb_get_state( hb_handle_t *, hb_state_t * );
119 void hb_get_state2( hb_handle_t *, hb_state_t * );
120 /* hb_get_scancount() is called by the MacGui in UpdateUI to
121    check for a new scan during HB_STATE_WORKING phase  */
122 int hb_get_scancount( hb_handle_t * );
123
124 /* hb_close()
125    Aborts all current jobs if any, frees memory. */
126 void          hb_close( hb_handle_t ** );
127
128 #ifdef __cplusplus
129 }
130 #endif
131
132 #endif