VLC  3.0.21
vlc_fingerprinter.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * vlc_fingerprinter.h: Fingerprinter abstraction layer
3  *****************************************************************************
4  * Copyright (C) 2012 VLC authors and VideoLAN
5  *
6  * This program is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation; either version 2.1 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
19  *****************************************************************************/
20 
21 #ifndef VLC_FINGERPRINTER_H
22 # define VLC_FINGERPRINTER_H
23 
24 #include <vlc_common.h>
25 #include <vlc_meta.h>
26 #include <vlc_input_item.h>
27 #include <vlc_arrays.h>
28 
29 # ifdef __cplusplus
30 extern "C" {
31 # endif
32 
34 
36 {
38  unsigned int i_duration; /* track length hint in seconds, 0 if unknown */
39  struct
40  {
43  } results ;
44 };
46 
48 {
50  ( fingerprint_request_t * ) calloc( 1, sizeof( fingerprint_request_t ) );
51  if ( !p_r ) return NULL;
52  p_r->results.psz_fingerprint = NULL;
53  p_r->i_duration = 0;
55  p_r->p_item = p_item;
56  vlc_array_init( & p_r->results.metas_array ); /* shouldn't be needed */
57  return p_r;
58 }
59 
61 {
62  input_item_Release( p_f->p_item );
63  free( p_f->results.psz_fingerprint );
64  for( size_t i = 0; i < vlc_array_count( & p_f->results.metas_array ); i++ )
66  free( p_f );
67 }
68 
70 {
72 
73  /* Specific interfaces */
75 
77 
79  fingerprint_request_t * ( *pf_getresults ) ( struct fingerprinter_thread_t *f );
80  void ( *pf_apply ) ( fingerprint_request_t *, size_t i_resultid );
81 };
83 
86 
87 # ifdef __cplusplus
88 }
89 # endif
90 
91 #endif
fingerprinter_Create
fingerprinter_thread_t * fingerprinter_Create(vlc_object_t *p_this)
Definition: fingerprinter.c:30
VLC_API
#define VLC_API
Definition: fourcc_gen.c:30
VLC_COMMON_MEMBERS
#define VLC_COMMON_MEMBERS
Backward compatibility macro.
Definition: vlc_common.h:457
fingerprint_request_t::results
struct fingerprint_request_t::@176 results
fingerprint_request_t::metas_array
vlc_array_t metas_array
Definition: vlc_fingerprinter.h:42
vlc_input_item.h
vlc_common.h
fingerprinter_thread_t
Definition: vlc_fingerprinter.h:69
fingerprint_request_t::i_duration
unsigned int i_duration
Definition: vlc_fingerprinter.h:38
input_item_t
Describes an input and is used to spawn input_thread_t objects.
Definition: vlc_input_item.h:58
fingerprint_request_New
static fingerprint_request_t * fingerprint_request_New(input_item_t *p_item)
Definition: vlc_fingerprinter.h:47
fingerprinter_thread_t::p_sys
fingerprinter_sys_t * p_sys
Definition: vlc_fingerprinter.h:74
vlc_meta_t
Definition: meta.c:41
fingerprinter_sys_t
struct fingerprinter_sys_t fingerprinter_sys_t
Definition: vlc_fingerprinter.h:33
vlc_array_t
Definition: vlc_arrays.h:238
module_t
Internal module descriptor.
Definition: modules.h:79
vlc_array_count
static size_t vlc_array_count(vlc_array_t *p_array)
Definition: vlc_arrays.h:257
fingerprint_request_Delete
static void fingerprint_request_Delete(fingerprint_request_t *p_f)
Definition: vlc_fingerprinter.h:60
fingerprint_request_t::psz_fingerprint
char * psz_fingerprint
Definition: vlc_fingerprinter.h:41
vlc_meta_Delete
void vlc_meta_Delete(vlc_meta_t *m)
Definition: meta.c:110
fingerprint_request_t::p_item
input_item_t * p_item
Definition: vlc_fingerprinter.h:37
input_item_Release
void input_item_Release(input_item_t *p_item)
Releases an input item, i.e.
Definition: item.c:477
fingerprinter_thread_t::p_module
module_t * p_module
Definition: vlc_fingerprinter.h:76
fingerprinter_Destroy
void fingerprinter_Destroy(fingerprinter_thread_t *p_fingerprint)
Definition: fingerprinter.c:54
vlc_object_t
The main vlc_object_t structure.
Definition: vlc_objects.h:39
vlc_array_init
static void vlc_array_init(vlc_array_t *p_array)
Definition: vlc_arrays.h:244
vlc_array_item_at_index
#define vlc_array_item_at_index(ar, idx)
Definition: vlc_arrays.h:263
fingerprinter_thread_t::pf_apply
void(* pf_apply)(fingerprint_request_t *, size_t i_resultid)
Definition: vlc_fingerprinter.h:80
vlc_arrays.h
fingerprinter_thread_t::pf_enqueue
int(* pf_enqueue)(struct fingerprinter_thread_t *f, fingerprint_request_t *r)
Definition: vlc_fingerprinter.h:78
input_item_Hold
input_item_t * input_item_Hold(input_item_t *p_item)
Holds an input item, i.e.
Definition: item.c:469
vlc_meta.h
fingerprint_request_t
Definition: vlc_fingerprinter.h:35