You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi I am very new to the mpv API interfaces which I want to embed into my application. I am now developing a simple program trying to perform sort of digital zooming commands like "video-zoom" and "video-pan-x" at run time. Based on the mpv-example/simple and input.conf/rst, I have wrote the following program running on Ubuntu 16.04:
static inline void check_error(int status)
{
if (status < 0) {
printf("mpv API error: %s\n", mpv_error_string(status));
exit(1);
}
}
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;
}
check_error(mpv_set_option_string(ctx, "input-default-bindings", "yes"));
mpv_set_option_string(ctx, "input-vo-keyboard", "yes");
check_error(mpv_initialize(ctx));
const char *cmd[] = {"loadfile", argv[1], NULL};
check_error(mpv_command(ctx, cmd));
int cnt = 0;
double zv;
double pv;
const char *cmd1[] = {"add", "video-zoom", "0.002", NULL};
const char *cmd2[] = {"add", "video-pan-x", "0.0005", NULL};
const char *cmd3[] = {"add", "video-pan-y", "0.0005", NULL};
// Play and do video-zoom at each frame
while (1) {
mpv_event *event = mpv_wait_event(ctx, 0.01);
if (cnt<500) cnt++; //proceed 500 steps
zv=cnt/500.0; //zoom 1/500 per step
pv=cnt/2000.0; //pan 1/2000 per step
//----------do zooming and panning through setting and adding--------------//
// check_error(mpv_set_property(ctx,"video-zoom",MPV_FORMAT_DOUBLE,&zv)); //this works as expected
// check_error(mpv_set_property(ctx,"video-pan-x",MPV_FORMAT_DOUBLE,&pv)); //this works as expected
// check_error(mpv_set_property(ctx,"video-pan-y",MPV_FORMAT_DOUBLE,&pv)); //this works as expected
// check_error(mpv_set_property_string(ctx,"video-zoom","1")); //this works as expected
if (cnt<500){
// check_error(mpv_set_option_string(ctx, "add video-zoom 0.002", NULL)); //mpv API error: option not found
// check_error(mpv_set_option_string(ctx, "add video-pan-x 0.0005", NULL)); //mpv API error: option not found
// check_error(mpv_set_option_string(ctx, "add video-pan-y 0.0005", NULL)); //mpv API error: option not found
// check_error(mpv_command(ctx, cmd1)); //this works as expected
// check_error(mpv_command(ctx, cmd2)); //this works as expected
// check_error(mpv_command(ctx, cmd3)); //this works as expected
}
printf("%d event: %s\n", cnt, mpv_event_name(event->event_id));
if (event->event_id == MPV_EVENT_SHUTDOWN)
break;
}
mpv_terminate_destroy(ctx);
return 0;
}
as you can see, I have made most of APIs working except "mpv_set_option_string" reports error, so what's the correct syntax for it? Also could someone double check the others in terms of syntax and efficiency?
I tried this program to stream a web cam successful, however the zooming and panning are not working very smoothly, the view is kind of shaking randomly. I have not tried hardware acceleration yet. Any one can help optimize or provide suggestion?
Thanks!
The text was updated successfully, but these errors were encountered:
Hi I am very new to the mpv API interfaces which I want to embed into my application. I am now developing a simple program trying to perform sort of digital zooming commands like "video-zoom" and "video-pan-x" at run time. Based on the mpv-example/simple and input.conf/rst, I have wrote the following program running on Ubuntu 16.04:
// Build with: gcc -o simple simple.c
pkg-config --libs --cflags mpv
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <mpv/client.h>
static inline void check_error(int status)
{
if (status < 0) {
printf("mpv API error: %s\n", mpv_error_string(status));
exit(1);
}
}
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;
}
check_error(mpv_set_option_string(ctx, "input-default-bindings", "yes"));
mpv_set_option_string(ctx, "input-vo-keyboard", "yes");
check_error(mpv_initialize(ctx));
const char *cmd[] = {"loadfile", argv[1], NULL};
check_error(mpv_command(ctx, cmd));
}
Thanks!
The text was updated successfully, but these errors were encountered: