Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Jean-Baptiste Kempf
libndi
Commits
82351ba8
Commit
82351ba8
authored
Jun 30, 2020
by
Sebastian Dröge
Browse files
Add user_data pointer to the callbacks
Fixes
#3
parent
fb63394c
Changes
4
Hide whitespace changes
Inline
Side-by-side
libndi.c
View file @
82351ba8
...
...
@@ -78,6 +78,7 @@ struct ndi_ctx
int
pending_requests
;
ndi_data_callback
callback
;
void
*
user_data
;
/* options */
char
*
ip
;
...
...
@@ -226,7 +227,7 @@ static int process_video_message(ndi_ctx *ndi_ctx, uint8_t *data, int header_len
ndi_data
.
width
=
width
;
ndi_data
.
height
=
height
;
ndi_ctx
->
callback
(
&
ndi_data
);
ndi_ctx
->
callback
(
&
ndi_data
,
ndi_ctx
->
user_data
);
return
0
;
}
...
...
@@ -301,7 +302,7 @@ static int process_audio_message(ndi_ctx *ndi_ctx, uint8_t *data, int header_len
}
}
ndi_ctx
->
callback
(
&
ndi_data
);
ndi_ctx
->
callback
(
&
ndi_data
,
ndi_ctx
->
user_data
);
end:
for
(
uint32_t
i
=
0
;
i
<
num_channels
;
i
++
)
...
...
@@ -560,9 +561,10 @@ static void system_Init(void) {
static
void
system_Init
(
void
)
{
return
;
}
#endif
void
libndi_receive_data
(
ndi_ctx
*
ndi_ctx
,
ndi_data_callback
callback
)
void
libndi_receive_data
(
ndi_ctx
*
ndi_ctx
,
ndi_data_callback
callback
,
void
*
user_data
)
{
ndi_ctx
->
callback
=
callback
;
ndi_ctx
->
user_data
=
user_data
;
/* connect to socket */
int
ret
;
...
...
libndi.h
View file @
82351ba8
...
...
@@ -83,9 +83,9 @@ static inline void libndi_discovery_item_destroy(ndi_discovery_item_t *item) {
free
(
item
);
}
typedef
void
(
*
libndi_discovery_cb
)(
ndi_discovery_item_t
*
item
);
typedef
void
(
*
libndi_discovery_cb
)(
ndi_discovery_item_t
*
item
,
void
*
user_data
);
ndi_discovery_ctx_t
*
libndi_discovery_init
(
libndi_discovery_cb
callback
);
ndi_discovery_ctx_t
*
libndi_discovery_init
(
libndi_discovery_cb
callback
,
void
*
user_data
);
int
libndi_discovery_start
(
ndi_discovery_ctx_t
*
ctx
);
int
libndi_discovery_stop
(
ndi_discovery_ctx_t
*
ctx
);
void
libndi_discovery_destroy
(
ndi_discovery_ctx_t
*
ctx
);
...
...
@@ -101,8 +101,8 @@ typedef struct
int
libndi_setup
(
ndi_ctx
*
ndi_ctx
,
ndi_opts
*
ndi_opts
);
typedef
void
(
*
ndi_data_callback
)(
ndi_data
*
ndi_data
);
void
libndi_receive_data
(
ndi_ctx
*
ndi_ctx
,
ndi_data_callback
callback
);
typedef
void
(
*
ndi_data_callback
)(
ndi_data
*
ndi_data
,
void
*
user_data
);
void
libndi_receive_data
(
ndi_ctx
*
ndi_ctx
,
ndi_data_callback
callback
,
void
*
user_data
);
void
libndi_close
(
ndi_ctx
*
ndi_ctx
);
...
...
libndi_discovery_microdns.c
View file @
82351ba8
...
...
@@ -35,9 +35,10 @@ struct ndi_discovery_ctx {
pthread_t
thread
;
pthread_mutex_t
mutex
;
bool
stopped
;
void
*
user_data
;
};
ndi_discovery_ctx_t
*
libndi_discovery_init
(
libndi_discovery_cb
callback
)
ndi_discovery_ctx_t
*
libndi_discovery_init
(
libndi_discovery_cb
callback
,
void
*
user_data
)
{
ndi_discovery_ctx_t
*
ctx
=
calloc
(
1
,
sizeof
(
ndi_discovery_ctx_t
));
if
(
!
ctx
)
...
...
@@ -57,6 +58,7 @@ ndi_discovery_ctx_t *libndi_discovery_init(libndi_discovery_cb callback)
}
ctx
->
cb
=
callback
;
ctx
->
user_data
=
user_data
;
ctx
->
stopped
=
true
;
return
ctx
;
...
...
@@ -102,7 +104,7 @@ static void cb_mdns(void *p_cookie, int status, const struct rr_entry *entries)
}
}
ctx
->
cb
(
item
);
ctx
->
cb
(
item
,
ctx
->
user_data
);
}
void
*
discovery_thread_func
(
void
*
data
)
{
...
...
ndi.c
View file @
82351ba8
...
...
@@ -46,7 +46,7 @@ AVCodecContext *avctx;
AVPacket
*
pkt
;
AVFrame
*
frame
;
void
ndi_data_callback_func
(
ndi_data
*
ndi_data
)
void
ndi_data_callback_func
(
ndi_data
*
ndi_data
,
void
*
user_data
)
{
int
ret
=
0
;
printf
(
"Got data. Type: %s
\n
"
,
ndi_data
->
data_type
==
NDI_DATA_VIDEO
?
"video"
:
"audio"
);
...
...
@@ -87,7 +87,7 @@ end:
av_packet_unref
(
pkt
);
}
void
ndi_mdns_callback_func
(
ndi_discovery_item_t
*
item
)
void
ndi_mdns_callback_func
(
ndi_discovery_item_t
*
item
,
void
*
user_data
)
{
printf
(
"Discovered Source: Name: %s IP: %s Port: %s
\n
"
,
item
->
name
,
item
->
ip
,
item
->
port
);
}
...
...
@@ -99,7 +99,7 @@ int main(int argc, char *argv[])
ndi_opts
ndi_opts
=
{
0
};
if
(
argc
==
2
)
{
if
(
!
strcmp
(
argv
[
1
],
"list"
))
{
ndi_discovery_ctx_t
*
ndi_discovery
=
libndi_discovery_init
(
ndi_mdns_callback_func
);
ndi_discovery_ctx_t
*
ndi_discovery
=
libndi_discovery_init
(
ndi_mdns_callback_func
,
NULL
);
libndi_discovery_start
(
ndi_discovery
);
sleep
(
5
);
libndi_discovery_stop
(
ndi_discovery
);
...
...
@@ -145,7 +145,7 @@ int main(int argc, char *argv[])
libndi_setup
(
ndi_ctx
,
&
ndi_opts
);
libndi_receive_data
(
ndi_ctx
,
ndi_data_callback_func
);
libndi_receive_data
(
ndi_ctx
,
ndi_data_callback_func
,
NULL
);
libndi_close
(
ndi_ctx
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment