VLC  3.0.15
resource.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * resource.h
3  *****************************************************************************
4  * Copyright (C) 2008 Laurent Aimar
5  * $Id: 8f83eb31836c8ae0ed1a082226794c9dd51e34e8 $
6  *
7  * Authors: Laurent Aimar < fenrir _AT_ videolan _DOT_ org >
8  *
9  * This program is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22  *****************************************************************************/
23 
24 #ifndef LIBVLC_INPUT_RESOURCE_H
25 #define LIBVLC_INPUT_RESOURCE_H 1
26 
27 #include <vlc_common.h>
28 
29 /**
30  * This function set the associated input.
31  */
33 
34 /**
35  * This function handles sout request.
36  */
38 
39 /**
40  * This function handles vout request.
41  */
43  const video_format_t *, unsigned dpb_size, bool b_recycle );
44 
45 /**
46  * This function returns one of the current vout if any.
47  *
48  * You must call vlc_object_release on the value returned (if non NULL).
49  */
51 
52 /**
53  * This function returns all current vouts if any.
54  *
55  * You must call vlc_object_release on all values returned (if non NULL).
56  */
58 
59 /**
60  * This function releases all resources (object).
61  */
63 
64 /**
65  * This function holds the input_resource_t itself
66  */
68 
69 #endif
vlc_uri_resolve
char * vlc_uri_resolve(const char *base, const char *ref)
Resolves an URI reference.
Definition: url.c:767
HoldVout
static vout_thread_t * HoldVout(input_resource_t *p_resource)
Definition: resource.c:289
input_resource_Terminate
void input_resource_Terminate(input_resource_t *)
This function releases all resources (object).
Definition: resource.c:514
vlc_spu.h
vlc_http_resource::referrer
char * referrer
Definition: resource.h:57
input_resource_Hold
input_resource_t * input_resource_Hold(input_resource_t *p_resource)
This function holds the input_resource_t itself.
Definition: resource.c:445
vlc_http_res_init
int vlc_http_res_init(struct vlc_http_resource *restrict res, const struct vlc_http_resource_cbs *cbs, struct vlc_http_mgr *mgr, const char *uri, const char *ua, const char *ref)
Definition: resource.c:179
vlc_http_msg_get_basic_realm
char * vlc_http_msg_get_basic_realm(const struct vlc_http_msg *m)
Definition: message.c:940
input_item_GetName
char * input_item_GetName(input_item_t *p_item)
Definition: item.c:301
vlc_uri_fixup
char * vlc_uri_fixup(const char *str)
Fixes up a URI string.
Definition: url.c:863
vlc_http_mgr_request
struct vlc_http_msg * vlc_http_mgr_request(struct vlc_http_mgr *mgr, bool https, const char *host, unsigned port, const struct vlc_http_msg *m)
Sends an HTTP request.
Definition: connmgr.c:254
input_Control
int input_Control(input_thread_t *p_input, int i_query,...)
Control function for inputs.
Definition: control.c:52
input_resource_t::pp_vout
vout_thread_t ** pp_vout
Definition: resource.c:90
vlc_http_res_open
struct vlc_http_msg * vlc_http_res_open(struct vlc_http_resource *res, void *opaque)
Definition: resource.c:83
vlc_http_res_get_type
char * vlc_http_res_get_type(struct vlc_http_resource *res)
Gets MIME type.
Definition: resource.c:311
vlc_common.h
vlc_http_res_get_redirect
char * vlc_http_res_get_redirect(struct vlc_http_resource *restrict res)
Definition: resource.c:247
vout_FlushSubpictureChannel
void vout_FlushSubpictureChannel(vout_thread_t *vout, int channel)
Definition: video_output.c:389
vlc_http_resource::port
unsigned port
Definition: resource.h:51
vlc_vout.h
vlc_http_resource_cbs::response_validate
int(* response_validate)(const struct vlc_http_resource *, const struct vlc_http_msg *, void *)
Definition: resource.h:38
input_resource_t::p_vout_free
vout_thread_t * p_vout_free
Definition: resource.c:79
input_item_t
Describes an input and is used to spawn input_thread_t objects.
Definition: vlc_input_item.h:58
input_resource_SetInput
void input_resource_SetInput(input_resource_t *, input_thread_t *)
This function set the associated input.
Definition: resource.c:451
vlc_http_resource_cbs::request_format
int(* request_format)(const struct vlc_http_resource *, struct vlc_http_msg *, void *)
Definition: resource.h:36
vlc_http_msg_add_creds_basic
int vlc_http_msg_add_creds_basic(struct vlc_http_msg *m, bool proxy, const char *username, const char *password)
Adds Basic credentials.
Definition: message.c:958
HoldVouts
static void HoldVouts(input_resource_t *p_resource, vout_thread_t ***ppp_vout, size_t *pi_vout)
Definition: resource.c:303
vlc_http_msg_destroy
void vlc_http_msg_destroy(struct vlc_http_msg *m)
Destroys an HTTP message.
Definition: message.c:191
input_resource_ResetAout
void input_resource_ResetAout(input_resource_t *p_resource)
Prevents the existing audio output (if any) from being recycled.
Definition: resource.c:400
vlc_http_resource::host
char * host
Definition: resource.h:50
vout_Flush
void vout_Flush(vout_thread_t *vout, mtime_t date)
This function will ensure that all ready/displayed pictures have at most the provided date.
Definition: video_output.c:328
vlc_http_resource::response
struct vlc_http_msg * response
Definition: resource.h:45
resource.h
vlc_http_mgr
Definition: connmgr.c:95
input_resource_GetAout
audio_output_t * input_resource_GetAout(input_resource_t *p_resource)
This function creates or recycles an audio output.
Definition: resource.c:334
vout_DisplayTitle
void vout_DisplayTitle(vout_thread_t *vout, const char *title)
This function will ask the display of the input title.
Definition: video_output.c:353
video_format_t
video format description
Definition: vlc_es.h:325
vlc_UrlClean
void vlc_UrlClean(vlc_url_t *restrict url)
Definition: url.c:594
vlc_http_res_destroy
void vlc_http_res_destroy(struct vlc_http_resource *res)
Destroys an HTTP resource.
Definition: resource.c:161
input_resource_t::refs
atomic_uint refs
Definition: resource.c:67
vlc_UrlParse
int vlc_UrlParse(vlc_url_t *url, const char *str)
Parses an URI or IRI.
Definition: url.c:554
msg_Dbg
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:86
vout_configuration_t::vout
vout_thread_t * vout
Definition: vlc_vout.h:51
vlc_url_t::psz_password
char * psz_password
Definition: vlc_url.h:149
vlc_ascii_strcasecmp
static int vlc_ascii_strcasecmp(const char *psz1, const char *psz2)
Compare two ASCII strings ignoring case.
Definition: vlc_strings.h:57
vlc_http_resource::path
char * path
Definition: resource.h:53
DisplayVoutTitle
static void DisplayVoutTitle(input_resource_t *p_resource, vout_thread_t *p_vout)
Definition: resource.c:151
vlc_url_t::psz_option
char * psz_option
Definition: vlc_url.h:153
vlc_http_resource::agent
char * agent
Definition: resource.h:56
vlc_http_res_set_login
int vlc_http_res_set_login(struct vlc_http_resource *res, const char *username, const char *password)
Definition: resource.c:330
input_GetItem
input_item_t * input_GetItem(input_thread_t *p_input)
Get the item from an input thread FIXME it does not increase ref count of the item.
Definition: input.c:272
resource.h
input_resource_HoldVouts
void input_resource_HoldVouts(input_resource_t *, vout_thread_t ***, size_t *)
This function returns all current vouts if any.
Definition: resource.c:480
input_resource_SetInput
void input_resource_SetInput(input_resource_t *p_resource, input_thread_t *p_input)
This function set the associated input.
Definition: resource.c:451
vlc_http_msg_add_header
int vlc_http_msg_add_header(struct vlc_http_msg *m, const char *name, const char *fmt,...)
Definition: message.c:142
vlc_http_resource::authority
char * authority
Definition: resource.h:52
vlc_gettext
char * vlc_gettext(const char *msgid)
In-tree plugins share their gettext domain with LibVLC.
Definition: textdomain.c:89
asprintf
int asprintf(char **, const char *,...)
input_resource_HasVout
bool input_resource_HasVout(input_resource_t *p_resource)
This function return true if there is at least one vout in the resources.
Definition: resource.c:490
vlc_http_resource::manager
struct vlc_http_mgr * manager
Definition: resource.h:46
input_resource_t::p_input
input_thread_t * p_input
Definition: resource.c:76
input_resource_t::lock_hold
vlc_mutex_t lock_hold
Definition: resource.c:85
vout_configuration_t
Vout configuration.
Definition: vlc_vout.h:50
vlc_http_msg_get_cookies
void vlc_http_msg_get_cookies(const struct vlc_http_msg *m, vlc_http_cookie_jar_t *jar, const char *host, const char *path)
Definition: message.c:887
vlc_url_t::psz_host
char * psz_host
Definition: vlc_url.h:150
vlc_object_hold
#define vlc_object_hold(a)
Definition: vlc_objects.h:60
audio_output
Audio output object.
Definition: vlc_aout.h:114
vlc_url_t::psz_protocol
char * psz_protocol
Definition: vlc_url.h:147
message.h
DestroySout
static void DestroySout(input_resource_t *p_resource)
Definition: resource.c:77
vlc_http_req_create
struct vlc_http_msg * vlc_http_req_create(const char *method, const char *scheme, const char *authority, const char *path)
Creates an HTTP request.
Definition: message.c:211
vlc_http_msg_get_final
struct vlc_http_msg * vlc_http_msg_get_final(struct vlc_http_msg *m)
Gets final response headers.
Definition: message.c:282
INPUT_SET_INITIAL_VIEWPOINT
Definition: vlc_input.h:471
vlc_atomic.h
vlc_url_t::psz_username
char * psz_username
Definition: vlc_url.h:148
input_resource_Release
void input_resource_Release(input_resource_t *p_resource)
It releases an input resource.
Definition: resource.c:430
vlc_assert_locked
void vlc_assert_locked(vlc_mutex_t *p_mutex)
Definition: thread.c:117
vlc_strings.h
input_resource_TerminateVout
void input_resource_TerminateVout(input_resource_t *p_resource)
Forcefully destroys the video output (e.g.
Definition: resource.c:486
vlc_http_msg::status
short status
Definition: message.c:59
vlc_http_resource::cbs
const struct vlc_http_resource_cbs * cbs
Definition: resource.h:44
input_resource_t::p_sout
sout_instance_t * p_sout
Definition: resource.c:78
TAB_APPEND
#define TAB_APPEND(count, tab, p)
Definition: vlc_arrays.h:64
input_resource_RequestVout
vout_thread_t * input_resource_RequestVout(input_resource_t *p_resource, vout_thread_t *p_vout, const video_format_t *p_fmt, unsigned dpb_size, bool b_recycle)
This function handles vout request.
Definition: resource.c:464
input_item_GetNowPlayingFb
char * input_item_GetNowPlayingFb(input_item_t *p_item)
Definition: item.c:428
vlc_http_resource::username
char * username
Definition: resource.h:54
vlc_http_resource
Definition: resource.h:42
psz_name
const char * psz_name
Definition: vlc_codecs.h:315
vlc_http_authority
static char * vlc_http_authority(const char *host, unsigned port)
Definition: resource.c:167
input_resource_RequestSout
sout_instance_t * input_resource_RequestSout(input_resource_t *, sout_instance_t *, const char *psz_sout)
This function handles sout request.
Definition: resource.c:501
RequestVout
static vout_thread_t * RequestVout(input_resource_t *p_resource, vout_thread_t *p_vout, const video_format_t *p_fmt, unsigned dpb_size, bool b_recycle)
Definition: resource.c:194
vlc_mutex_init
void vlc_mutex_init(vlc_mutex_t *p_mutex)
Initializes a fast mutex.
Definition: thread.c:85
vlc_http_resource::secure
bool secure
Definition: resource.h:47
input_resource_Terminate
void input_resource_Terminate(input_resource_t *p_resource)
This function releases all resources (object).
Definition: resource.c:514
input_resource_t::p_aout
audio_output_t * p_aout
Definition: resource.c:94
video_format_t::pose
vlc_viewpoint_t pose
Definition: vlc_es.h:359
vlc_sout.h
vlc_url.h
aout_New
#define aout_New(a)
Definition: aout_internal.h:124
likely
#define likely(p)
Definition: vlc_common.h:113
vlc_url_t
Definition: vlc_url.h:145
vlc_http_res_get_status
int vlc_http_res_get_status(struct vlc_http_resource *res)
Definition: resource.c:130
vlc_object_t
The main vlc_object_t structure.
Definition: vlc_objects.h:39
input_resource_RequestVout
vout_thread_t * input_resource_RequestVout(input_resource_t *, vout_thread_t *, const video_format_t *, unsigned dpb_size, bool b_recycle)
This function handles vout request.
Definition: resource.c:464
vlc_http_mgr_get_jar
struct vlc_http_cookie_jar_t * vlc_http_mgr_get_jar(struct vlc_http_mgr *mgr)
Definition: connmgr.c:261
sout_DeleteInstance
void sout_DeleteInstance(sout_instance_t *p_sout)
Definition: stream_output.c:134
VLC_UNUSED
#define VLC_UNUSED(x)
Definition: vlc_common.h:912
sout_NewInstance
#define sout_NewInstance(a, b)
Definition: stream_output.h:42
vlc_mutex_t
pthread_mutex_t vlc_mutex_t
Mutex.
Definition: vlc_threads.h:267
input_interface.h
DestroyVout
static void DestroyVout(input_resource_t *p_resource)
Definition: resource.c:141
connmgr.h
RequestSout
static sout_instance_t * RequestSout(input_resource_t *p_resource, sout_instance_t *p_sout, const char *psz_sout)
Definition: resource.c:86
strdup
char * strdup(const char *)
input_resource_t::p_parent
vlc_object_t * p_parent
Definition: resource.c:69
vlc_http_msg_add_agent
int vlc_http_msg_add_agent(struct vlc_http_msg *m, const char *str)
Sets the agent field.
Definition: message.c:736
vlc_url_t::i_port
unsigned i_port
Definition: vlc_url.h:151
input_resource_RequestSout
sout_instance_t * input_resource_RequestSout(input_resource_t *p_resource, sout_instance_t *p_sout, const char *psz_sout)
This function handles sout request.
Definition: resource.c:501
input_item_GetArtist
static char * input_item_GetArtist(input_item_t *p_input)
Definition: vlc_input_item.h:286
vlc_http_resource::negotiate
bool negotiate
Definition: resource.h:48
vlc_http_msg::path
char * path
Definition: message.c:63
input_resource_HoldAout
audio_output_t * input_resource_HoldAout(input_resource_t *p_resource)
Definition: resource.c:387
input_resource_t::i_vout
int i_vout
Definition: resource.c:91
input_resource_New
input_resource_t * input_resource_New(vlc_object_t *p_parent)
It creates an empty input resource handler.
Definition: resource.c:417
TAB_REMOVE
#define TAB_REMOVE(count, tab, p)
Definition: vlc_arrays.h:91
vlc_mutex_destroy
void vlc_mutex_destroy(vlc_mutex_t *p_mutex)
Deinitializes a mutex.
Definition: thread.c:110
sout_instance_t::psz_sout
char * psz_sout
Definition: vlc_sout.h:52
vlc_http_res_get_basic_realm
char * vlc_http_res_get_basic_realm(struct vlc_http_resource *res)
Definition: resource.c:364
vlc_mutex_unlock
void vlc_mutex_unlock(vlc_mutex_t *p_mutex)
Releases a mutex.
Definition: thread.c:138
vlc_http_res_req
static struct vlc_http_msg * vlc_http_res_req(const struct vlc_http_resource *res, void *opaque)
Definition: resource.c:39
unlikely
#define unlikely(p)
Definition: vlc_common.h:114
vlc_http_res_deinit
static void vlc_http_res_deinit(struct vlc_http_resource *res)
Definition: resource.c:147
input_resource_HoldVouts
void input_resource_HoldVouts(input_resource_t *p_resource, vout_thread_t ***ppp_vout, size_t *pi_vout)
This function returns all current vouts if any.
Definition: resource.c:480
input_resource_PutAout
void input_resource_PutAout(input_resource_t *p_resource, audio_output_t *p_aout)
This function retains or destroys an audio output.
Definition: resource.c:366
vout_Request
#define vout_Request(a, b)
Definition: vlc_vout.h:103
vlc_http_res_read
struct block_t * vlc_http_res_read(struct vlc_http_resource *res)
Reads data.
Definition: resource.c:321
aout_Destroy
void aout_Destroy(audio_output_t *)
Deinitializes an audio output module and destroys an audio output object.
Definition: output.c:358
vlc_http_msg_get_header
const char * vlc_http_msg_get_header(const struct vlc_http_msg *m, const char *name)
Looks up an header field.
Definition: message.c:154
input_resource_HoldVout
vout_thread_t * input_resource_HoldVout(input_resource_t *p_resource)
This function returns one of the current vout if any.
Definition: resource.c:475
vlc_http_msg_get_status
int vlc_http_msg_get_status(const struct vlc_http_msg *m)
Gets response status code.
Definition: message.c:166
vlc_aout.h
input_resource_t::b_aout_busy
bool b_aout_busy
Definition: resource.c:93
vout_thread_t
Video output thread descriptor.
Definition: vlc_vout.h:70
vlc_http_msg_read
block_t * vlc_http_msg_read(struct vlc_http_msg *m)
Receives HTTP data.
Definition: message.c:289
input_thread_t
Main structure representing an input thread.
Definition: vlc_input.h:221
VLC_OBJECT
#define VLC_OBJECT(x)
Type-safe vlc_object_t cast.
Definition: vlc_common.h:464
vlc_http_resource::failure
bool failure
Definition: resource.h:49
input_resource_TerminateSout
void input_resource_TerminateSout(input_resource_t *p_resource)
This function deletes the current sout in the resources.
Definition: resource.c:509
vlc_alloc
static void * vlc_alloc(size_t count, size_t size)
Definition: vlc_common.h:948
input_resource_t
Definition: resource.c:44
vlc_http_resource_cbs
Definition: resource.h:34
vlc_http_resource::password
char * password
Definition: resource.h:55
vlc_http_msg
Definition: message.c:40
sout_instance_t
Stream output instance (FIXME: should be private to src/ to avoid invalid unsynchronized access)
Definition: vlc_sout.h:48
vlc_http_msg::authority
char * authority
Definition: message.c:62
vlc_url_t::psz_path
char * psz_path
Definition: vlc_url.h:152
vlc_mutex_lock
void vlc_mutex_lock(vlc_mutex_t *p_mutex)
Acquires a mutex.
Definition: thread.c:123
block_t
Definition: vlc_block.h:111
input_item_GetTitle
static char * input_item_GetTitle(input_item_t *p_input)
Definition: vlc_input_item.h:285
input_resource_t::lock
vlc_mutex_t lock
Definition: resource.c:73
vlc_http_msg_add_cookies
int vlc_http_msg_add_cookies(struct vlc_http_msg *m, vlc_http_cookie_jar_t *jar)
Definition: message.c:899
input_resource_HoldVout
vout_thread_t * input_resource_HoldVout(input_resource_t *)
This function returns one of the current vout if any.
Definition: resource.c:475
vout_CloseAndRelease
static void vout_CloseAndRelease(vout_thread_t *p_vout)
This function will close a vout created by vout_Create and then release it.
Definition: vlc_vout.h:121
input_resource_Hold
input_resource_t * input_resource_Hold(input_resource_t *)
This function holds the input_resource_t itself.
Definition: resource.c:445