VLC  4.0.0-dev
resource.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * resource.h
3  *****************************************************************************
4  * Copyright (C) 2008 Laurent Aimar
5  *
6  * Authors: Laurent Aimar < fenrir _AT_ videolan _DOT_ org >
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU Lesser General Public License as published by
10  * the Free Software Foundation; either version 2.1 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21  *****************************************************************************/
22 
23 #ifndef LIBVLC_INPUT_RESOURCE_H
24 #define LIBVLC_INPUT_RESOURCE_H 1
25 
26 #include <vlc_common.h>
27 #include <vlc_mouse.h>
28 #include "../video_output/vout_internal.h"
29 
30 /**
31  * This function set the associated input.
32  */
34 
35 /**
36  * This function handles sout request.
37  */
40 
42  const vout_configuration_t *,
43  enum vlc_vout_order *order,
44  bool *has_started);
45 void input_resource_PutVout(input_resource_t *, vout_thread_t *, bool *has_stopped);
46 
47 /**
48  * This function returns one of the current vout if any.
49  *
50  * You must call vout_Release() on the value returned (if non NULL).
51  */
53 
54 /**
55  * This function returns the dummy vout. It will be the parent of the future
56  * main vout and can be used to pre-configure it. */
58 
59 /**
60  * This function returns all current vouts if any.
61  *
62  * You must call vout_Release() on all values returned (if non NULL).
63  */
65 
67 
68 /**
69  * This function holds the input_resource_t itself
70  */
72 
74 
75 #endif
vout_Create
vout_thread_t * vout_Create(vlc_object_t *object)
Creates a video output.
Definition: video_output.c:1966
input_resource_StopFreeVout
void input_resource_StopFreeVout(input_resource_t *p_resource)
Definition: resource.c:562
vlc_mutex_init
void vlc_mutex_init(vlc_mutex_t *mtx)
Initializes a fast mutex.
Definition: threads.c:123
vlc_spu.h
vlc_http_resource::referrer
char * referrer
Definition: resource.h:58
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:325
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:168
count
size_t count
Definition: core.c:401
vlc_http_msg_get_basic_realm
char * vlc_http_msg_get_basic_realm(const struct vlc_http_msg *m)
Definition: message.c:987
input_ControlPush
int input_ControlPush(input_thread_t *p_input, int i_type, const input_control_param_t *p_param)
Definition: input.c:1532
input_item_GetName
char * input_item_GetName(input_item_t *p_item)
Definition: item.c:270
vout_configuration_t::fmt
const video_format_t * fmt
Definition: vout_internal.h:46
vout_resource::node
struct vlc_list node
Definition: resource.c:75
psz_name
const char * psz_name
Definition: text_style.c:53
vout_resource::vout
vout_thread_t * vout
Definition: resource.c:71
vlc_http_res_open
struct vlc_http_msg * vlc_http_res_open(struct vlc_http_resource *res, void *opaque)
Definition: resource.c:84
vlc_http_res_get_type
char * vlc_http_res_get_type(struct vlc_http_resource *res)
Gets MIME type.
Definition: resource.c:300
vlc_http_authority
char * vlc_http_authority(const char *host, unsigned port)
Formats an authority.
Definition: message.c:573
unlikely
#define unlikely(p)
Predicted false condition.
Definition: vlc_common.h:227
vlc_common.h
vlc_http_res_get_redirect
char * vlc_http_res_get_redirect(struct vlc_http_resource *restrict res)
Definition: resource.c:236
input_resource_HoldDummyVout
vout_thread_t * input_resource_HoldDummyVout(input_resource_t *)
This function returns the dummy vout.
Definition: resource.c:524
vout_Request
int vout_Request(const vout_configuration_t *cfg, vlc_video_context *vctx, input_thread_t *input)
Returns a suitable vout or release the given one.
Definition: video_output.c:2120
vlc_http_resource::port
unsigned port
Definition: resource.h:52
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:39
vout_resource::order
enum vlc_vout_order order
Definition: resource.c:72
input_item_t
Describes an input and is used to spawn input_thread_t objects.
Definition: vlc_input_item.h:77
input_resource_SetInput
void input_resource_SetInput(input_resource_t *, input_thread_t *)
This function set the associated input.
Definition: resource.c:331
vlc_http_resource_cbs::request_format
int(* request_format)(const struct vlc_http_resource *, struct vlc_http_msg *, void *)
Definition: resource.h:37
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:1005
RequestVoutRsc
static struct vout_resource * RequestVoutRsc(input_resource_t *p_resource)
Definition: resource.c:390
vlc_http_msg_destroy
void vlc_http_msg_destroy(struct vlc_http_msg *m)
Destroys an HTTP message.
Definition: message.c:193
input_resource_ResetAout
void input_resource_ResetAout(input_resource_t *p_resource)
Definition: resource.c:272
input_resource_HoldDummyVout
vout_thread_t * input_resource_HoldDummyVout(input_resource_t *p_resource)
This function returns the dummy vout.
Definition: resource.c:524
vlc_list_init
static void vlc_list_init(struct vlc_list *restrict head)
Initializes an empty list head.
Definition: vlc_list.h:57
vlc_http_resource::host
char * host
Definition: resource.h:51
input_resource_RequestVout
vout_thread_t * input_resource_RequestVout(input_resource_t *p_resource, vlc_video_context *vctx, const vout_configuration_t *cfg, enum vlc_vout_order *order, bool *has_started)
Definition: resource.c:431
vlc_atomic_rc_dec
static bool vlc_atomic_rc_dec(vlc_atomic_rc_t *rc)
Decrement the RC and return true if it reaches 0.
Definition: vlc_atomic.h:61
input_resource_RequestSout
sout_instance_t * input_resource_RequestSout(input_resource_t *, const char *)
This function handles sout request.
Definition: resource.c:574
vlc_http_resource::response
struct vlc_http_msg * response
Definition: resource.h:46
resource.h
vlc_http_mgr
Definition: connmgr.c:99
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:206
VLC_VOUT_ORDER_PRIMARY
@ VLC_VOUT_ORDER_PRIMARY
There is only one primary vout/spu_channel For vouts: this is the first vout, probably embedded in th...
Definition: vlc_vout.h:78
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:348
input_resource_t::p_vout_dummy
vout_thread_t * p_vout_dummy
Definition: resource.c:70
vlc_UrlClean
void vlc_UrlClean(vlc_url_t *restrict url)
Definition: url.c:598
vlc_http_res_destroy
void vlc_http_res_destroy(struct vlc_http_resource *res)
Destroys an HTTP resource.
Definition: resource.c:162
vout_Release
void vout_Release(vout_thread_t *vout)
Definition: video_output.c:1906
msg_Dbg
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:106
vout_configuration_t::vout
vout_thread_t * vout
Definition: vout_internal.h:44
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:60
input_resource_t::rc
vlc_atomic_rc_t rc
Definition: resource.c:58
input_resource_StopFreeVout
void input_resource_StopFreeVout(input_resource_t *)
Definition: resource.c:562
vlc_http_resource::path
char * path
Definition: resource.h:54
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:783
DisplayVoutTitle
static void DisplayVoutTitle(input_resource_t *p_resource, vout_thread_t *p_vout)
Definition: resource.c:161
vlc_url_t::psz_option
char * psz_option
Definition: vlc_url.h:153
vlc_list
Doubly-linked list node.
Definition: vlc_list.h:43
vlc_http_resource::agent
char * agent
Definition: resource.h:57
input_resource_ResetAout
void input_resource_ResetAout(input_resource_t *)
Definition: resource.c:272
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:319
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:529
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:331
vlc_gettext
const char * vlc_gettext(const char *msgid)
In-tree plugins share their gettext domain with LibVLC.
Definition: textdomain.c:79
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:144
vlc_http_resource::authority
char * authority
Definition: resource.h:53
asprintf
int asprintf(char **, const char *,...)
vlc_http_resource::manager
struct vlc_http_mgr * manager
Definition: resource.h:47
vlc_mutex_t
Mutex.
Definition: vlc_threads.h:225
input_resource_RequestSout
sout_instance_t * input_resource_RequestSout(input_resource_t *p_resource, const char *psz_sout)
This function handles sout request.
Definition: resource.c:574
VLC_VOUT_ORDER_SECONDARY
@ VLC_VOUT_ORDER_SECONDARY
There can be several secondary vouts or spu_channels For vouts: a secondary vout using its own window...
Definition: vlc_vout.h:86
input_resource_t::p_input
input_thread_t * p_input
Definition: resource.c:67
input_resource_t::lock_hold
vlc_mutex_t lock_hold
Definition: resource.c:77
vout_configuration_t
Vout configuration.
Definition: vout_internal.h:43
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:934
vlc_url_t::psz_host
char * psz_host
Definition: vlc_url.h:150
audio_output
Audio output object.
Definition: vlc_aout.h:141
vlc_assert_unreachable
#define vlc_assert_unreachable()
Impossible branch assertion.
Definition: vlc_common.h:253
vout_resource_Add
static void vout_resource_Add(struct vout_resource *vout_rsc, input_resource_t *resource)
Definition: resource.c:115
vout_Close
void vout_Close(vout_thread_t *vout)
Destroys a vout.
Definition: video_output.c:1885
input_resource_PutVoutLocked
static void input_resource_PutVoutLocked(input_resource_t *p_resource, vout_thread_t *vout, bool *has_stopped)
Definition: resource.c:345
vlc_url_t::psz_protocol
char * psz_protocol
Definition: vlc_url.h:147
vlc_UrlParse
int vlc_UrlParse(vlc_url_t *url, const char *str)
Parses an URI or IRI.
Definition: url.c:558
message.h
DestroySout
static void DestroySout(input_resource_t *p_resource)
Definition: resource.c:132
vlc_atomic_rc_inc
static void vlc_atomic_rc_inc(vlc_atomic_rc_t *rc)
Increment the RC.
Definition: vlc_atomic.h:52
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:213
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:284
vlc_atomic.h
vlc_list_remove
static void vlc_list_remove(struct vlc_list *restrict node)
Removes an element from a list.
Definition: vlc_list.h:135
input_resource_t::vout_rsc_free
struct vout_resource * vout_rsc_free
Definition: resource.c:71
vlc_url_t::psz_username
char * psz_username
Definition: vlc_url.h:148
vlc_list_append
static void vlc_list_append(struct vlc_list *restrict node, struct vlc_list *head)
Appends an element into a list.
Definition: vlc_list.h:110
input_resource_Release
void input_resource_Release(input_resource_t *p_resource)
It releases an input resource.
Definition: resource.c:311
vlc_strings.h
input_resource_RequestVout
vout_thread_t * input_resource_RequestVout(input_resource_t *, vlc_video_context *, const vout_configuration_t *, enum vlc_vout_order *order, bool *has_started)
Definition: resource.c:431
vlc_decoder.h
input_control_param_t
Definition: input_internal.h:416
input_resource_PutSout
void input_resource_PutSout(input_resource_t *, sout_instance_t *)
Definition: resource.c:610
vlc_http_msg::status
short status
Definition: message.c:62
vout_Hold
vout_thread_t * vout_Hold(vout_thread_t *vout)
Definition: video_output.c:2047
vlc_http_resource::cbs
const struct vlc_http_resource_cbs * cbs
Definition: resource.h:45
input_resource_t::p_sout
sout_instance_t * p_sout
Definition: resource.c:69
vlc_list_is_empty
static bool vlc_list_is_empty(const struct vlc_list *head)
Checks if a list is empty.
Definition: vlc_list.h:167
input_item_GetNowPlayingFb
char * input_item_GetNowPlayingFb(input_item_t *p_item)
Definition: item.c:401
vlc_http_resource::username
char * username
Definition: resource.h:55
vlc_http_resource
Definition: resource.h:43
vlc_http_resource::secure
bool secure
Definition: resource.h:48
event.h
input_resource_t::p_aout
audio_output_t * p_aout
Definition: resource.c:84
vout_ChangeSource
int vout_ChangeSource(vout_thread_t *vout, const video_format_t *original)
Set the new source format for a started vout.
Definition: video_output.c:2055
video_format_t::pose
vlc_viewpoint_t pose
Definition: vlc_es.h:382
vout_resource
Definition: resource.c:47
aout_Hold
audio_output_t * aout_Hold(audio_output_t *aout)
Definition: output.c:348
vlc_sout.h
vlc_video_context
Definition: decoder_helpers.c:228
vlc_url.h
aout_New
#define aout_New(a)
Definition: aout_internal.h:133
vlc_mouse.h
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:131
vlc_object_t
VLC object common members.
Definition: vlc_objects.h:43
vlc_http_mgr_get_jar
struct vlc_http_cookie_jar_t * vlc_http_mgr_get_jar(struct vlc_http_mgr *mgr)
Definition: connmgr.c:285
sout_DeleteInstance
void sout_DeleteInstance(sout_instance_t *p_sout)
Definition: stream_output.c:137
sout_NewInstance
#define sout_NewInstance(a, b)
Definition: stream_output.h:42
input_interface.h
DestroyVout
static void DestroyVout(input_resource_t *p_resource)
Definition: resource.c:145
connmgr.h
strdup
char * strdup(const char *)
input_resource_t::p_parent
vlc_object_t * p_parent
Definition: resource.c:60
vout_resource::started
bool started
Definition: resource.c:73
vlc_url_t::i_port
unsigned i_port
Definition: vlc_url.h:151
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:247
input_resource_PutVout
void input_resource_PutVout(input_resource_t *, vout_thread_t *, bool *has_stopped)
Definition: resource.c:381
vlc_mutex_lock
void vlc_mutex_lock(vlc_mutex_t *mtx)
Acquires a mutex.
Definition: threads.c:158
vout_Stop
void vout_Stop(vout_thread_t *vout)
Disables a vout.
Definition: video_output.c:1874
input_item_GetArtist
static char * input_item_GetArtist(input_item_t *p_input)
Definition: vlc_input_item.h:301
vout_resource_Create
static struct vout_resource * vout_resource_Create(vout_thread_t *vout)
Definition: resource.c:103
vlc_http_resource::negotiate
bool negotiate
Definition: resource.h:49
vlc_http_msg::path
char * path
Definition: message.c:66
vlc_uri_resolve
char * vlc_uri_resolve(const char *base, const char *ref)
Resolves an URI reference.
Definition: url.c:772
vlc_vout_order
vlc_vout_order
vout or spu_channel order
Definition: vlc_vout.h:70
input_resource_HoldAout
audio_output_t * input_resource_HoldAout(input_resource_t *p_resource)
Definition: resource.c:259
input_resource_New
input_resource_t * input_resource_New(vlc_object_t *p_parent)
It creates an empty input resource handler.
Definition: resource.c:289
INPUT_CONTROL_SET_INITIAL_VIEWPOINT
@ INPUT_CONTROL_SET_INITIAL_VIEWPOINT
Definition: input_internal.h:586
sout_instance_t::psz_sout
char * psz_sout
Definition: stream_output.h:58
vlc_http_res_get_basic_realm
char * vlc_http_res_get_basic_realm(struct vlc_http_resource *res)
Definition: resource.c:353
vlc_http_res_req
static struct vlc_http_msg * vlc_http_res_req(const struct vlc_http_resource *res, void *opaque)
Definition: resource.c:40
vlc_http_res_deinit
static void vlc_http_res_deinit(struct vlc_http_resource *res)
Definition: resource.c:148
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:529
vlc_list_foreach
#define vlc_list_foreach(pos, head, member)
List iteration macro.
Definition: vlc_list.h:261
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:238
vlc_http_res_read
struct block_t * vlc_http_res_read(struct vlc_http_resource *res)
Reads data.
Definition: resource.c:310
aout_Destroy
void aout_Destroy(audio_output_t *)
Deinitializes an audio output module and destroys an audio output object.
Definition: output.c:359
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:156
vout_resource_Remove
static vout_thread_t * vout_resource_Remove(struct vout_resource *vout_rsc)
Definition: resource.c:121
input_resource_PutVout
void input_resource_PutVout(input_resource_t *p_resource, vout_thread_t *vout, bool *stopped)
Definition: resource.c:381
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:510
vlc_http_msg_get_status
int vlc_http_msg_get_status(const struct vlc_http_msg *m)
Gets response status code.
Definition: message.c:168
likely
#define likely(p)
Predicted true condition.
Definition: vlc_common.h:218
resource_GetVoutRsc
static struct vout_resource * resource_GetVoutRsc(input_resource_t *resource, vout_thread_t *vout)
Definition: resource.c:91
input_resource_t::vout_rscs
struct vlc_list vout_rscs
Definition: resource.c:81
VLC_OBJECT
#define VLC_OBJECT(x)
Type-safe vlc_object_t cast.
Definition: vlc_objects.h:70
vlc_aout.h
input_resource_t::b_aout_busy
bool b_aout_busy
Definition: resource.c:83
vout_thread_t
Video output thread descriptor.
Definition: vlc_vout.h:55
vlc_http_msg_read
block_t * vlc_http_msg_read(struct vlc_http_msg *m)
Receives HTTP data.
Definition: message.c:291
input_thread_t
Main structure representing an input thread.
Definition: input_internal.h:48
vlc_http_resource::failure
bool failure
Definition: resource.h:50
input_resource_TerminateSout
void input_resource_TerminateSout(input_resource_t *p_resource)
This function deletes the current sout in the resources.
Definition: resource.c:624
input_control_param_t::viewpoint
vlc_viewpoint_t viewpoint
Definition: input_internal.h:419
vlc_alloc
static void * vlc_alloc(size_t count, size_t size)
Definition: vlc_common.h:1144
input_resource_t
Definition: resource.c:56
vlc_http_resource_cbs
Definition: resource.h:35
vlc_http_resource::password
char * password
Definition: resource.h:56
vlc_atomic_rc_init
static void vlc_atomic_rc_init(vlc_atomic_rc_t *rc)
Init the RC to 1.
Definition: vlc_atomic.h:46
vlc_http_msg
Definition: message.c:42
vlc_uri_fixup
char * vlc_uri_fixup(const char *str)
Fixes up a URI string.
Definition: url.c:876
sout_instance_t
Stream output instance.
Definition: stream_output.h:33
input_resource_PutSout
void input_resource_PutSout(input_resource_t *resource, sout_instance_t *sout)
Definition: resource.c:610
vlc_url_t::psz_path
char * psz_path
Definition: vlc_url.h:152
vlc_mutex_unlock
void vlc_mutex_unlock(vlc_mutex_t *mtx)
Releases a mutex.
Definition: threads.c:209
vlc_atomic_rc_t
Definition: vlc_atomic.h:41
block_t
Definition: vlc_block.h:117
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, bool idempotent, bool payload)
Sends an HTTP request.
Definition: connmgr.c:273
input_item_GetTitle
static char * input_item_GetTitle(input_item_t *p_input)
Definition: vlc_input_item.h:300
resource_GetFirstVoutRsc
#define resource_GetFirstVoutRsc(resource)
Definition: resource.c:87
vout_CreateDummy
vout_thread_t * vout_CreateDummy(vlc_object_t *object)
Definition: video_output.c:1955
input_resource_t::lock
vlc_mutex_t lock
Definition: resource.c:64
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:946
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:510
vout_StopDisplay
void vout_StopDisplay(vout_thread_t *vout)
Stop the display plugin, but keep its window plugin for later reuse.
Definition: video_output.c:1852
input_resource_Hold
input_resource_t * input_resource_Hold(input_resource_t *)
This function holds the input_resource_t itself.
Definition: resource.c:325