mirror of
https://github.com/mpv-player/mpv
synced 2024-12-22 14:52:43 +00:00
Add a client API example
This commit is contained in:
parent
3dd12104d9
commit
a6da2a6608
10
DOCS/client_api_examples/shared.h
Normal file
10
DOCS/client_api_examples/shared.h
Normal file
@ -0,0 +1,10 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static inline void check_error(int status)
|
||||
{
|
||||
if (status < 0) {
|
||||
printf("mpv API error: %s\n", mpv_error_string(status));
|
||||
exit(1);
|
||||
}
|
||||
}
|
43
DOCS/client_api_examples/simple.c
Normal file
43
DOCS/client_api_examples/simple.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "libmpv/client.h"
|
||||
#include "shared.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc != 2) {
|
||||
printf("pass a single media file as argument\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
mpv_handle *ctx = mpv_create();
|
||||
if (!ctx) {
|
||||
printf("failed creating context\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Enable default key bindings, so the user can actually interact with
|
||||
// the player (and e.g. close the window).
|
||||
check_error(mpv_set_option_string(ctx, "input-default-bindings", "yes"));
|
||||
check_error(mpv_set_option_string(ctx, "osc", "yes"));
|
||||
|
||||
// Done setting up options.
|
||||
check_error(mpv_initialize(ctx));
|
||||
|
||||
// Play this file.
|
||||
const char *cmd[] = {"loadfile", argv[1], NULL};
|
||||
check_error(mpv_command(ctx, cmd));
|
||||
|
||||
// Let it play, and wait until the user quits.
|
||||
while (1) {
|
||||
mpv_event *event = mpv_wait_event(ctx, 10000);
|
||||
printf("event: %s\n", mpv_event_name(event->event_id));
|
||||
if (event->event_id == MPV_EVENT_SHUTDOWN)
|
||||
break;
|
||||
}
|
||||
|
||||
mpv_destroy(ctx);
|
||||
return 0;
|
||||
}
|
5
wscript
5
wscript
@ -14,6 +14,11 @@ build_options = [
|
||||
'desc': 'enable shared library',
|
||||
'default': 'disable',
|
||||
'func': check_true
|
||||
}, {
|
||||
'name': '--client-api-examples',
|
||||
'desc': 'build client API examples',
|
||||
'deps': ['shared'],
|
||||
'func': check_true
|
||||
}, {
|
||||
'name': '--static-build',
|
||||
'desc': 'static build',
|
||||
|
@ -452,6 +452,17 @@ def build(ctx):
|
||||
for f in headers:
|
||||
ctx.install_as(ctx.env.INCDIR + '/libmpv/' + f, 'libmpv/' + f)
|
||||
|
||||
if ctx.dependency_satisfied('client-api-examples'):
|
||||
# This assumes all examples are single-file (as examples should be)
|
||||
for f in ["simple"]:
|
||||
ctx(
|
||||
target = f,
|
||||
source = "DOCS/client_api_examples/" + f + ".c",
|
||||
includes = [ctx.bldnode.abspath(), ctx.srcnode.abspath()],
|
||||
use = "mpv",
|
||||
features = "c cprogram",
|
||||
)
|
||||
|
||||
if ctx.env.DEST_OS == 'win32':
|
||||
wrapctx = ctx(
|
||||
target = "mpv",
|
||||
|
Loading…
Reference in New Issue
Block a user